diff --git a/.editorconfig b/.editorconfig index 52065f8f..8f0de65c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,15 +1,18 @@ -# This file is for unifying the coding style for different editors and IDEs -# editorconfig.org - root = true [*] charset = utf-8 end_of_line = lf -insert_final_newline = true -indent_style = space indent_size = 4 +indent_style = space +insert_final_newline = true trim_trailing_whitespace = true -[{*.json,*.yml}] +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/.gitignore b/.gitignore index 96cbe166..7fe978f8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,19 @@ +/.phpunit.cache /node_modules +/public/build /public/hot /public/storage /storage/*.key /vendor -/.idea -/.vagrant +.env +.env.backup +.env.production +.phpunit.result.cache Homestead.json Homestead.yaml +auth.json npm-debug.log -.env -package-lock.json +yarn-error.log +/.fleet +/.idea +/.vscode diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 8d0b77fd..00000000 --- a/.travis.yml +++ /dev/null @@ -1,38 +0,0 @@ -language: php -dist: trusty -sudo: false - -branches: - except: - - l10n_2.3 - - l10n_2.4 - -before_install: - - cp .env.example .env - -install: - - travis_retry composer install --no-interaction --no-suggest - -jobs: - include: -# - stage: Security check -# script: -# - phpenv config-rm xdebug.ini || true -# - wget https://get.sensiolabs.org/security-checker.phar -# - php security-checker.phar security:check ./composer.lock -# php: 7.1 - - stage: Unit tests - script: - - phpenv config-rm xdebug.ini || true - - vendor/bin/phpunit - php: 7.1 - - stage: Unit tests - script: - - phpenv config-rm xdebug.ini || true - - vendor/bin/phpunit - php: 7.2 - - stage: Unit tests - script: - - phpenv config-rm xdebug.ini || true - - vendor/bin/phpunit - php: 7.3 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 5e438d6a..00000000 --- a/LICENSE +++ /dev/null @@ -1,12 +0,0 @@ -Copyright (c) 2015-2019 Alt Three Services Limited. -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 the Cachet 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 HOLDER 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/README.md b/README.md index 15be1b82..5cf79ff4 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,6 @@ Cachet, the open-source status page system. ## Cachet 3.x Announcement -We are shifting our attention and resources to Cachet 3.x and will no longer be supporting the 2.x version. - For more information on the Cachet rebuild and our plans for 3.x, you can read the announcement [here](https://github.com/CachetHQ/Cachet/discussions/4342). ## Features @@ -27,8 +25,7 @@ For more information on the Cachet rebuild and our plans for 3.x, you can read t ## Requirements -- PHP 7.1.3 – 7.3 -- HTTP server with PHP support (e.g.: Apache, Nginx, Caddy) +- PHP 8.1 or later - [Composer](https://getcomposer.org) - A supported database: MySQL, PostgreSQL or SQLite @@ -43,9 +40,9 @@ Here are some useful quick links: ### Demo -To test out the demo, you can log in to the [Cachet dashboard](https://demo.cachethq.io/dashboard) with the following credentials: +To test out the v3 demo, you can log in to the [Cachet dashboard](https://v3.cachethq.io/dashboard) with the following credentials: -- **Username:** `test` or `test@example.com` +- **Email:** `test@example.com` - **Password:** `test123` > **Note** diff --git a/VERSION b/VERSION deleted file mode 100644 index a724a9cd..00000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -2.4.0-dev diff --git a/app/Bus/Commands/Component/CreateComponentCommand.php b/app/Bus/Commands/Component/CreateComponentCommand.php deleted file mode 100644 index 4244f42c..00000000 --- a/app/Bus/Commands/Component/CreateComponentCommand.php +++ /dev/null @@ -1,128 +0,0 @@ - - */ -final class CreateComponentCommand -{ - /** - * The component name. - * - * @var string - */ - public $name; - - /** - * The component description. - * - * @var string - */ - public $description; - - /** - * The component status. - * - * @var int - */ - public $status; - - /** - * The component link. - * - * @var string - */ - public $link; - - /** - * The component order. - * - * @var int - */ - public $order; - - /** - * The component group. - * - * @var int - */ - public $group_id; - - /** - * Is the component enabled? - * - * @var bool - */ - public $enabled; - - /** - * JSON meta data for the component. - * - * @var array|null - */ - public $meta; - - /** - * Tags string. - * - * @var string - */ - public $tags; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required|string', - 'description' => 'nullable|string', - 'status' => 'required|int|min:0|max:4', - 'link' => 'nullable|url', - 'order' => 'nullable|int', - 'group_id' => 'nullable|int', - 'enabled' => 'nullable|bool', - 'meta' => 'nullable|array', - 'tags' => 'nullable|string', - ]; - - /** - * Create a new add component command instance. - * - * @param string $name - * @param string $description - * @param int $status - * @param string $link - * @param int $order - * @param int $group_id - * @param bool $enabled - * @param array|null $meta - * @param string|null $tags - * - * @return void - */ - public function __construct($name, $description, $status, $link, $order, $group_id, $enabled, $meta, $tags = null) - { - $this->name = $name; - $this->description = $description; - $this->status = (int) $status; - $this->link = $link; - $this->order = $order; - $this->group_id = $group_id; - $this->enabled = $enabled; - $this->meta = $meta; - $this->tags = $tags; - } -} diff --git a/app/Bus/Commands/Component/RemoveComponentCommand.php b/app/Bus/Commands/Component/RemoveComponentCommand.php deleted file mode 100644 index 7790b568..00000000 --- a/app/Bus/Commands/Component/RemoveComponentCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -component = $component; - } -} diff --git a/app/Bus/Commands/Component/UpdateComponentCommand.php b/app/Bus/Commands/Component/UpdateComponentCommand.php deleted file mode 100644 index 99093397..00000000 --- a/app/Bus/Commands/Component/UpdateComponentCommand.php +++ /dev/null @@ -1,144 +0,0 @@ - 'nullable|string', - 'description' => 'nullable|string', - 'status' => 'nullable|int|min:0|max:4', - 'link' => 'nullable|url', - 'order' => 'nullable|int', - 'group_id' => 'nullable|int', - 'enabled' => 'nullable|bool', - 'meta' => 'nullable|array', - 'silent' => 'nullable|bool', - ]; - - /** - * Create a new update component command instance. - * - * @param \CachetHQ\Cachet\Models\Component $component - * @param string|null $name - * @param string|null $description - * @param int|null $status - * @param string|null $link - * @param int|null $order - * @param int|null $group_id - * @param bool|null $enabled - * @param array|null $meta - * @param string|null $tags - * @param bool $silent - * - * @return void - */ - public function __construct(Component $component, $name = null, $description = null, $status = null, $link = null, $order = null, $group_id = null, $enabled = null, $meta = null, $tags = null, $silent = null) - { - $this->component = $component; - $this->name = $name; - $this->description = $description; - $this->status = $status; - $this->link = $link; - $this->order = $order; - $this->group_id = $group_id; - $this->enabled = $enabled; - $this->meta = $meta; - $this->tags = $tags; - $this->silent = $silent; - $this->tags = $tags; - } -} diff --git a/app/Bus/Commands/ComponentGroup/CreateComponentGroupCommand.php b/app/Bus/Commands/ComponentGroup/CreateComponentGroupCommand.php deleted file mode 100644 index 7bec1b5d..00000000 --- a/app/Bus/Commands/ComponentGroup/CreateComponentGroupCommand.php +++ /dev/null @@ -1,78 +0,0 @@ - - */ -final class CreateComponentGroupCommand -{ - /** - * The component group name. - * - * @var string - */ - public $name; - - /** - * The component group description. - * - * @var int - */ - public $order; - - /** - * Is the component group collapsed? - * - * @var int - */ - public $collapsed; - - /** - * Is the component visible to public? - * - * @var int - */ - public $visible; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required|string', - 'order' => 'required|int', - 'collapsed' => 'required|int|between:0,4', - 'visible' => 'required|bool', - ]; - - /** - * Create a add component group command instance. - * - * @param string $name - * @param int $order - * @param int $collapsed - * @param int $visible - * - * @return void - */ - public function __construct($name, $order, $collapsed, $visible) - { - $this->name = $name; - $this->order = (int) $order; - $this->collapsed = $collapsed; - $this->visible = (int) $visible; - } -} diff --git a/app/Bus/Commands/ComponentGroup/RemoveComponentGroupCommand.php b/app/Bus/Commands/ComponentGroup/RemoveComponentGroupCommand.php deleted file mode 100644 index afe52809..00000000 --- a/app/Bus/Commands/ComponentGroup/RemoveComponentGroupCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -group = $group; - } -} diff --git a/app/Bus/Commands/ComponentGroup/UpdateComponentGroupCommand.php b/app/Bus/Commands/ComponentGroup/UpdateComponentGroupCommand.php deleted file mode 100644 index 1067ef22..00000000 --- a/app/Bus/Commands/ComponentGroup/UpdateComponentGroupCommand.php +++ /dev/null @@ -1,89 +0,0 @@ - - */ -final class UpdateComponentGroupCommand -{ - /** - * The component group. - * - * @var \CachetHQ\Cachet\Models\ComponentGroup - */ - public $group; - - /** - * The component group name. - * - * @var string - */ - public $name; - - /** - * The component group description. - * - * @var int - */ - public $order; - - /** - * Is the component group collapsed? - * - * @var int - */ - public $collapsed; - - /** - * Is the component visible to public? - * - * @var int - */ - public $visible; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'nullable|string', - 'order' => 'nullable|int', - 'collapsed' => 'nullable|int|between:0,4', - 'visible' => 'nullable|bool', - ]; - - /** - * Create a add component group command instance. - * - * @param \CachetHQ\Cachet\Models\ComponentGroup $group - * @param string $name - * @param int $order - * @param int $collapsed - * @param int $visible - * - * @return void - */ - public function __construct(ComponentGroup $group, $name, $order, $collapsed, $visible) - { - $this->group = $group; - $this->name = $name; - $this->order = (int) $order; - $this->collapsed = $collapsed; - $this->visible = (int) $visible; - } -} diff --git a/app/Bus/Commands/Incident/CreateIncidentCommand.php b/app/Bus/Commands/Incident/CreateIncidentCommand.php deleted file mode 100644 index 4f94f2f8..00000000 --- a/app/Bus/Commands/Incident/CreateIncidentCommand.php +++ /dev/null @@ -1,158 +0,0 @@ - - * @author James Brooks - */ -final class CreateIncidentCommand -{ - /** - * The incident name. - * - * @var string - */ - public $name; - - /** - * The incident status. - * - * @var int - */ - public $status; - - /** - * The incident message. - * - * @var string - */ - public $message; - - /** - * The incident visibility. - * - * @var int - */ - public $visible; - - /** - * The incident component. - * - * @var int - */ - public $component_id; - - /** - * The component status. - * - * @var int - */ - public $component_status; - - /** - * Whether to notify about the incident or not. - * - * @var bool - */ - public $notify; - - /** - * Whether to stick the incident on top. - * - * @var bool - */ - public $stickied; - - /** - * The date at which the incident occurred at. - * - * @var string|null - */ - public $occurred_at; - - /** - * A given incident template. - * - * @var string|null - */ - public $template; - - /** - * Variables for the incident template. - * - * @var string[]|null - */ - public $template_vars; - - /** - * Meta key/value pairs. - * - * @var array - */ - public $meta = []; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required|string', - 'status' => 'required|int|min:0|max:4', - 'message' => 'nullable|string', - 'visible' => 'nullable|bool', - 'component_id' => 'nullable|required_with:component_status|int', - 'component_status' => 'nullable|required_with:component_id|int|min:0|max:4', - 'notify' => 'nullable|bool', - 'stickied' => 'required|bool', - 'occurred_at' => 'nullable|string', - 'template' => 'nullable|string', - 'meta' => 'nullable|array', - ]; - - /** - * Create a new create incident command instance. - * - * @param string $name - * @param int $status - * @param string $message - * @param int $visible - * @param int $component_id - * @param int $component_status - * @param bool $notify - * @param bool $stickied - * @param string|null $occurred_at - * @param string|null $template - * @param array $template_vars - * @param array $meta - * - * @return void - */ - public function __construct($name, $status, $message, $visible, $component_id, $component_status, $notify, $stickied, $occurred_at, $template, array $template_vars = [], array $meta = []) - { - $this->name = $name; - $this->status = $status; - $this->message = $message; - $this->visible = $visible; - $this->component_id = $component_id; - $this->component_status = $component_status; - $this->notify = $notify; - $this->stickied = $stickied; - $this->occurred_at = $occurred_at; - $this->template = $template; - $this->template_vars = $template_vars; - $this->meta = $meta; - } -} diff --git a/app/Bus/Commands/Incident/RemoveIncidentCommand.php b/app/Bus/Commands/Incident/RemoveIncidentCommand.php deleted file mode 100644 index 29374fdd..00000000 --- a/app/Bus/Commands/Incident/RemoveIncidentCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -incident = $incident; - } -} diff --git a/app/Bus/Commands/Incident/UpdateIncidentCommand.php b/app/Bus/Commands/Incident/UpdateIncidentCommand.php deleted file mode 100644 index 1328b37c..00000000 --- a/app/Bus/Commands/Incident/UpdateIncidentCommand.php +++ /dev/null @@ -1,170 +0,0 @@ - - * @author Joseph Cohem - * @author Graham Campbell - */ -final class UpdateIncidentCommand -{ - /** - * The incident to update. - * - * @var \CachetHQ\Cachet\Models\Incident - */ - public $incident; - - /** - * The incident name. - * - * @var string - */ - public $name; - - /** - * The incident status. - * - * @var int - */ - public $status; - - /** - * The incident message. - * - * @var string - */ - public $message; - - /** - * The incident visibility. - * - * @var int - */ - public $visible; - - /** - * The incident component. - * - * @var int - */ - public $component_id; - - /** - * The component status. - * - * @var int - */ - public $component_status; - - /** - * Whether to notify about the incident or not. - * - * @var bool - */ - public $notify; - - /** - * Whether to stick the incident on top. - * - * @var bool - */ - public $stickied; - - /** - * The timestamp that the incident occurred at. - * - * @var string|null - */ - public $occurred_at; - - /** - * A given incident template. - * - * @var string|null - */ - public $template; - - /** - * Variables for the incident template. - * - * @var string[]|null - */ - public $template_vars; - - /** - * Meta key/value pairs. - * - * @var array - */ - public $meta = []; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'nullable|string', - 'status' => 'nullable|int|min:0|max:4', - 'message' => 'nullable|string', - 'visible' => 'nullable|bool', - 'component_id' => 'nullable|int', - 'component_status' => 'nullable|int|min:0|max:4|required_with:component_id', - 'notify' => 'nullable|bool', - 'stickied' => 'nullable|bool', - 'occurred_at' => 'nullable|string', - 'template' => 'nullable|string', - 'meta' => 'nullable|array', - ]; - - /** - * Create a new update incident command instance. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * @param string $name - * @param int $status - * @param string $message - * @param int $visible - * @param int $component_id - * @param int $component_status - * @param bool $notify - * @param bool $stickied - * @param string|null $occurred_at - * @param string|null $template - * @param array $template_vars - * @param array $meta - * - * @return void - */ - public function __construct(Incident $incident, $name, $status, $message, $visible, $component_id, $component_status, $notify, $stickied, $occurred_at, $template, array $template_vars = [], array $meta = []) - { - $this->incident = $incident; - $this->name = $name; - $this->status = $status; - $this->message = $message; - $this->visible = $visible; - $this->component_id = $component_id; - $this->component_status = $component_status; - $this->notify = $notify; - $this->stickied = $stickied; - $this->occurred_at = $occurred_at; - $this->template = $template; - $this->template_vars = $template_vars; - $this->meta = $meta; - } -} diff --git a/app/Bus/Commands/IncidentUpdate/CreateIncidentUpdateCommand.php b/app/Bus/Commands/IncidentUpdate/CreateIncidentUpdateCommand.php deleted file mode 100644 index caa65a75..00000000 --- a/app/Bus/Commands/IncidentUpdate/CreateIncidentUpdateCommand.php +++ /dev/null @@ -1,97 +0,0 @@ - - */ -final class CreateIncidentUpdateCommand -{ - /** - * The incident. - * - * @var \CachetHQ\Cachet\Models\Incident - */ - public $incident; - - /** - * The incident status. - * - * @var int - */ - public $status; - - /** - * The incident message. - * - * @var string - */ - public $message; - /** - * The incident component. - * - * @var int - */ - public $component_id; - - /** - * The component status. - * - * @var int - */ - public $component_status; - /** - * The user. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'incident' => 'required', - 'status' => 'required|int|min:1|max:4', - 'message' => 'required|string', - 'component_id' => 'nullable|required_with:component_status|int', - 'component_status' => 'nullable|required_with:component_id|int|min:0|max:4', - 'user' => 'required', - ]; - - /** - * Create a new report incident update command instance. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * @param string $status - * @param string $message - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(Incident $incident, $status, $message, $component_id, $component_status, User $user) - { - $this->incident = $incident; - $this->status = $status; - $this->message = $message; - $this->component_id = $component_id; - $this->component_status = $component_status; - $this->user = $user; - } -} diff --git a/app/Bus/Commands/IncidentUpdate/RemoveIncidentUpdateCommand.php b/app/Bus/Commands/IncidentUpdate/RemoveIncidentUpdateCommand.php deleted file mode 100644 index 7440e352..00000000 --- a/app/Bus/Commands/IncidentUpdate/RemoveIncidentUpdateCommand.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -final class RemoveIncidentUpdateCommand -{ - /** - * The incident update to remove. - * - * @var \CachetHQ\Cachet\Models\IncidentUpdate - */ - public $incidentUpdate; - - /** - * Create a new remove incident update command instance. - * - * @param \CachetHQ\Cachet\Models\IncidentUpdate $incidentUpdate - * - * @return void - */ - public function __construct(IncidentUpdate $incidentUpdate) - { - $this->incidentUpdate = $incidentUpdate; - } -} diff --git a/app/Bus/Commands/IncidentUpdate/UpdateIncidentUpdateCommand.php b/app/Bus/Commands/IncidentUpdate/UpdateIncidentUpdateCommand.php deleted file mode 100644 index 12d363ad..00000000 --- a/app/Bus/Commands/IncidentUpdate/UpdateIncidentUpdateCommand.php +++ /dev/null @@ -1,79 +0,0 @@ - - */ -final class UpdateIncidentUpdateCommand -{ - /** - * The incident update. - * - * @var \CachetHQ\Cachet\Models\IncidentUpdate - */ - public $update; - - /** - * The incident status. - * - * @var int - */ - public $status; - - /** - * The incident message. - * - * @var string - */ - public $message; - - /** - * The user. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'status' => 'nullable|int|min:1|max:4', - 'message' => 'nullable|string', - ]; - - /** - * Create a new update incident update command instance. - * - * @param \CachetHQ\Cachet\Models\IncidentUpdate $update - * @param string $status - * @param string $message - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(IncidentUpdate $update, $status, $message, User $user) - { - $this->update = $update; - $this->status = $status; - $this->message = $message; - $this->user = $user; - } -} diff --git a/app/Bus/Commands/Invite/ClaimInviteCommand.php b/app/Bus/Commands/Invite/ClaimInviteCommand.php deleted file mode 100644 index d7f944b3..00000000 --- a/app/Bus/Commands/Invite/ClaimInviteCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -invite = $invite; - } -} diff --git a/app/Bus/Commands/Metric/CreateMetricCommand.php b/app/Bus/Commands/Metric/CreateMetricCommand.php deleted file mode 100644 index 01e31ed3..00000000 --- a/app/Bus/Commands/Metric/CreateMetricCommand.php +++ /dev/null @@ -1,149 +0,0 @@ - - * @author James Brooks - */ -final class CreateMetricCommand -{ - /** - * The metric name. - * - * @var string - */ - public $name; - - /** - * The metric suffix. - * - * @var string - */ - public $suffix; - - /** - * The metric description. - * - * @var string - */ - public $description; - - /** - * The metric default value. - * - * @var float - */ - public $default_value; - - /** - * The metric calculation type. - * - * @var int - */ - public $calc_type; - - /** - * The metric display chart. - * - * @var int - */ - public $display_chart; - - /** - * The metric decimal places. - * - * @var int - */ - public $places; - - /** - * The view to show the metric points in. - * - * @var int - */ - public $default_view; - - /** - * The threshold to buffer the metric points in. - * - * @var int - */ - public $threshold; - - /** - * The order of which to place the metric in. - * - * @var int - */ - public $order; - - /** - * The visibility of the metric. - * - * @var int - */ - public $visible; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required|string', - 'suffix' => 'required|string', - 'description' => 'nullable|string', - 'default_value' => 'required|int', - 'calc_type' => 'required|int', - 'display_chart' => 'nullable|int', - 'places' => 'nullable|int|between:0,4', - 'default_view' => 'required|int|between:0,3', - 'threshold' => 'required|int', - 'order' => 'nullable|int', - 'visible' => 'required|int|between:0,2', - ]; - - /** - * Create a new add metric command instance. - * - * @param string $name - * @param string $suffix - * @param string $description - * @param float $default_value - * @param int $calc_type - * @param int $display_chart - * @param int $places - * @param int $default_view - * @param int $threshold - * @param int $order - * @param int $visible - * - * @return void - */ - public function __construct($name, $suffix, $description, $default_value, $calc_type, $display_chart, $places, $default_view, $threshold, $order = 0, $visible = 1) - { - $this->name = $name; - $this->suffix = $suffix; - $this->description = $description; - $this->default_value = $default_value; - $this->calc_type = $calc_type; - $this->display_chart = $display_chart; - $this->places = $places; - $this->default_view = $default_view; - $this->threshold = $threshold; - $this->order = $order; - $this->visible = $visible; - } -} diff --git a/app/Bus/Commands/Metric/CreateMetricPointCommand.php b/app/Bus/Commands/Metric/CreateMetricPointCommand.php deleted file mode 100644 index 3555f194..00000000 --- a/app/Bus/Commands/Metric/CreateMetricPointCommand.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @author James Brooks - */ -final class CreateMetricPointCommand -{ - /** - * The metric to add. - * - * @var \CachetHQ\Cachet\Models\Metric - */ - public $metric; - - /** - * The metric point value. - * - * @var int - */ - public $value; - - /** - * The metric point created at. - * - * @var int - */ - public $created_at; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'value' => 'required|numeric', - 'created_at' => 'nullable|int', - ]; - - /** - * Create a new add metric point command instance. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $value - * @param int $created_at - * - * @return void - */ - public function __construct(Metric $metric, $value, $created_at) - { - $this->metric = $metric; - $this->value = $value; - $this->created_at = $created_at; - } -} diff --git a/app/Bus/Commands/Metric/RemoveMetricCommand.php b/app/Bus/Commands/Metric/RemoveMetricCommand.php deleted file mode 100644 index 5b6861c7..00000000 --- a/app/Bus/Commands/Metric/RemoveMetricCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -metric = $metric; - } -} diff --git a/app/Bus/Commands/Metric/RemoveMetricPointCommand.php b/app/Bus/Commands/Metric/RemoveMetricPointCommand.php deleted file mode 100644 index c3c43482..00000000 --- a/app/Bus/Commands/Metric/RemoveMetricPointCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -metricPoint = $metricPoint; - } -} diff --git a/app/Bus/Commands/Metric/UpdateMetricCommand.php b/app/Bus/Commands/Metric/UpdateMetricCommand.php deleted file mode 100644 index 535837f4..00000000 --- a/app/Bus/Commands/Metric/UpdateMetricCommand.php +++ /dev/null @@ -1,154 +0,0 @@ - 'nullable|string', - 'suffix' => 'nullable|string', - 'description' => 'nullable|string', - 'default_value' => 'nullable|numeric', - 'calc_type' => 'nullable|int|in:0,1', - 'display_chart' => 'nullable|int', - 'places' => 'nullable|numeric|between:0,4', - 'default_view' => 'nullable|numeric|between:0,4', - 'threshold' => 'nullable|int', - 'order' => 'nullable|int', - 'visible' => 'nullable|int|between:0,2', - ]; - - /** - * Create a new update metric command instance. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param string $name - * @param string $suffix - * @param string $description - * @param float $default_value - * @param int $calc_type - * @param int $display_chart - * @param int $places - * @param int $default_view - * @param int $threshold - * @param int|null $order - * @param int $visible - * - * @return void - */ - public function __construct(Metric $metric, $name, $suffix, $description, $default_value, $calc_type, $display_chart, $places, $default_view, $threshold, $order = null, $visible = null) - { - $this->metric = $metric; - $this->name = $name; - $this->suffix = $suffix; - $this->description = $description; - $this->default_value = $default_value; - $this->calc_type = $calc_type; - $this->display_chart = $display_chart; - $this->places = $places; - $this->default_view = $default_view; - $this->threshold = $threshold; - $this->order = $order; - $this->visible = $visible; - } -} diff --git a/app/Bus/Commands/Metric/UpdateMetricPointCommand.php b/app/Bus/Commands/Metric/UpdateMetricPointCommand.php deleted file mode 100644 index 0d976df9..00000000 --- a/app/Bus/Commands/Metric/UpdateMetricPointCommand.php +++ /dev/null @@ -1,79 +0,0 @@ - - */ -final class UpdateMetricPointCommand -{ - /** - * The metric point. - * - * @var \CachetHQ\Cachet\Models\MetricPoint - */ - public $point; - - /** - * The metric. - * - * @var \CachetHQ\Cachet\Models\Metric - */ - public $metric; - - /** - * The metric point value. - * - * @var float - */ - public $value; - - /** - * The metric point created at. - * - * @var string - */ - public $created_at; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'value' => 'nullable|numeric', - 'created_at' => 'nullable|string', - ]; - - /** - * Create a new update metric point command instance. - * - * @param \CachetHQ\Cachet\Models\MetricPoint $point - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param float $value - * @param string $created_at - * - * @return void - */ - public function __construct(MetricPoint $point, Metric $metric, $value, $created_at) - { - $this->point = $point; - $this->metric = $metric; - $this->value = $value; - $this->created_at = $created_at; - } -} diff --git a/app/Bus/Commands/Schedule/CreateScheduleCommand.php b/app/Bus/Commands/Schedule/CreateScheduleCommand.php deleted file mode 100644 index d40d68df..00000000 --- a/app/Bus/Commands/Schedule/CreateScheduleCommand.php +++ /dev/null @@ -1,108 +0,0 @@ - - */ -final class CreateScheduleCommand -{ - /** - * The schedule name. - * - * @var string - */ - public $name; - - /** - * The schedule message. - * - * @var string - */ - public $message; - - /** - * The schedule status. - * - * @var int - */ - public $status; - - /** - * The schedule date. - * - * @var string - */ - public $scheduled_at; - - /** - * The completed at date. - * - * @var string - */ - public $completed_at; - - /** - * The components affected by the schedule. - * - * @var array - */ - public $components; - - /** - * Whether to notify that the incident was reported. - * - * @var bool - */ - public $notify; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required|string', - 'message' => 'nullable|string', - 'status' => 'required|int|min:0|max:2', - 'scheduled_at' => 'required|string', - 'completed_at' => 'nullable|string', - 'components' => 'nullable|array', - 'notify' => 'nullable|bool', - ]; - - /** - * Create a new create schedule command instance. - * - * @param string $name - * @param string $message - * @param int $status - * @param string $scheduled_at - * @param string $completed_at - * @param array $components - * @param bool $notify - * - * @return void - */ - public function __construct($name, $message, $status, $scheduled_at, $completed_at, $components, $notify) - { - $this->name = $name; - $this->message = $message; - $this->status = $status; - $this->scheduled_at = $scheduled_at; - $this->completed_at = $completed_at; - $this->components = $components; - $this->notify = $notify; - } -} diff --git a/app/Bus/Commands/Schedule/DeleteScheduleCommand.php b/app/Bus/Commands/Schedule/DeleteScheduleCommand.php deleted file mode 100644 index 572dcf52..00000000 --- a/app/Bus/Commands/Schedule/DeleteScheduleCommand.php +++ /dev/null @@ -1,50 +0,0 @@ - - */ -final class DeleteScheduleCommand -{ - /** - * The schedule to delete. - * - * @var \CachetHQ\Cachet\Models\Schedule - */ - public $schedule; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'schedule' => 'required', - ]; - - /** - * Create a new delete schedule command instance. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return void - */ - public function __construct(Schedule $schedule) - { - $this->schedule = $schedule; - } -} diff --git a/app/Bus/Commands/Schedule/UpdateScheduleCommand.php b/app/Bus/Commands/Schedule/UpdateScheduleCommand.php deleted file mode 100644 index bfe100d4..00000000 --- a/app/Bus/Commands/Schedule/UpdateScheduleCommand.php +++ /dev/null @@ -1,110 +0,0 @@ - - */ -final class UpdateScheduleCommand -{ - /** - * The schedule to update. - * - * @param \CachetHQ\Cachet\Models\Schedule - */ - public $schedule; - - /** - * The schedule name. - * - * @var string - */ - public $name; - - /** - * The schedule message. - * - * @var string - */ - public $message; - - /** - * The schedule status. - * - * @var int - */ - public $status; - - /** - * The schedule date. - * - * @var string - */ - public $scheduled_at; - - /** - * The completed at date. - * - * @var string - */ - public $completed_at; - - /** - * The components affected by the schedule. - * - * @var array - */ - public $components; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'schedule' => 'required', - 'name' => 'nullable|string', - 'message' => 'nullable|string', - 'status' => 'nullable|int|min:0|max:2', - 'scheduled_at' => 'nullable|string', - 'completed_at' => 'nullable|string', - 'components' => 'nullable|array', - ]; - - /** - * Create a new update schedule command instance. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * @param string $name - * @param string $message - * @param int $status - * @param string $scheduled_at - * @param string $completed_at - * @param array $components - * - * @return void - */ - public function __construct(Schedule $schedule, $name, $message, $status, $scheduled_at, $completed_at, array $components = []) - { - $this->schedule = $schedule; - $this->name = $name; - $this->message = $message; - $this->status = $status; - $this->scheduled_at = $scheduled_at; - $this->completed_at = $completed_at; - $this->components = $components; - } -} diff --git a/app/Bus/Commands/Subscriber/SubscribeSubscriberCommand.php b/app/Bus/Commands/Subscriber/SubscribeSubscriberCommand.php deleted file mode 100644 index 52daa2f4..00000000 --- a/app/Bus/Commands/Subscriber/SubscribeSubscriberCommand.php +++ /dev/null @@ -1,66 +0,0 @@ - - */ -final class SubscribeSubscriberCommand -{ - /** - * The subscriber email. - * - * @var string - */ - public $email; - - /** - * The subscriber auto verification. - * - * @var bool - */ - public $verified; - - /** - * The list of subscriptions to set the subscriber up with. - * - * @var array|null - */ - public $subscriptions; - - /** - * The validation rules. - * - * @var array - */ - public $rules = [ - 'email' => 'required|email', - ]; - - /** - * Create a new subscribe subscriber command instance. - * - * @param string $email - * @param bool $verified - * @param array|null $subscriptions - * - * @return void - */ - public function __construct($email, $verified = false, $subscriptions = null) - { - $this->email = $email; - $this->verified = $verified; - $this->subscriptions = $subscriptions; - } -} diff --git a/app/Bus/Commands/Subscriber/UnsubscribeSubscriberCommand.php b/app/Bus/Commands/Subscriber/UnsubscribeSubscriberCommand.php deleted file mode 100644 index acf7e64d..00000000 --- a/app/Bus/Commands/Subscriber/UnsubscribeSubscriberCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -subscriber = $subscriber; - } -} diff --git a/app/Bus/Commands/Subscriber/UnsubscribeSubscriptionCommand.php b/app/Bus/Commands/Subscriber/UnsubscribeSubscriptionCommand.php deleted file mode 100644 index 67c297a1..00000000 --- a/app/Bus/Commands/Subscriber/UnsubscribeSubscriptionCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -subscription = $subscription; - } -} diff --git a/app/Bus/Commands/Subscriber/UpdateSubscriberSubscriptionCommand.php b/app/Bus/Commands/Subscriber/UpdateSubscriberSubscriptionCommand.php deleted file mode 100644 index a1b5a338..00000000 --- a/app/Bus/Commands/Subscriber/UpdateSubscriberSubscriptionCommand.php +++ /dev/null @@ -1,50 +0,0 @@ - - */ -final class UpdateSubscriberSubscriptionCommand -{ - /** - * The subscriber email. - * - * @var \CachetHQ\Cachet\Models\Subscriber - */ - public $subscriber; - - /** - * The subscriptions that we want to add. - * - * @var array|null - */ - public $subscriptions; - - /** - * Create a new subscribe subscriber command instance. - * - * @param \CachetHQ\Cachet\Models\Subscriber $subscriber - * @param null|array $subscriptions - * - * @return void - */ - public function __construct($subscriber, $subscriptions = null) - { - $this->subscriber = $subscriber; - $this->subscriptions = $subscriptions; - } -} diff --git a/app/Bus/Commands/Subscriber/VerifySubscriberCommand.php b/app/Bus/Commands/Subscriber/VerifySubscriberCommand.php deleted file mode 100644 index 34d7eb10..00000000 --- a/app/Bus/Commands/Subscriber/VerifySubscriberCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -subscriber = $subscriber; - } -} diff --git a/app/Bus/Commands/System/Config/UpdateConfigCommand.php b/app/Bus/Commands/System/Config/UpdateConfigCommand.php deleted file mode 100644 index 9fb21610..00000000 --- a/app/Bus/Commands/System/Config/UpdateConfigCommand.php +++ /dev/null @@ -1,39 +0,0 @@ - - */ -final class UpdateConfigCommand -{ - /** - * This is the config key/values array. - * - * @var array - */ - public $values; - - /** - * Create a new update config command instance. - * - * @param array $values - * - * @return void - */ - public function __construct($values) - { - $this->values = $values; - } -} diff --git a/app/Bus/Commands/User/CreateUserCommand.php b/app/Bus/Commands/User/CreateUserCommand.php deleted file mode 100644 index fad590d3..00000000 --- a/app/Bus/Commands/User/CreateUserCommand.php +++ /dev/null @@ -1,77 +0,0 @@ - - */ -final class CreateUserCommand -{ - /** - * The user username. - * - * @var string - */ - public $username; - - /** - * The user password. - * - * @var string - */ - public $password; - - /** - * The user email. - * - * @var string - */ - public $email; - - /** - * The user level. - * - * @var int - */ - public $level; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'username' => 'required|string', - 'password' => 'required|string', - 'level' => 'required|int', - ]; - - /** - * Create a new add team member command instance. - * - * @param string $username - * @param string $password - * @param string $email - * @param int $level - * - * @return void - */ - public function __construct($username, $password, $email, $level) - { - $this->username = $username; - $this->password = $password; - $this->email = $email; - $this->level = $level; - } -} diff --git a/app/Bus/Commands/User/GenerateApiTokenCommand.php b/app/Bus/Commands/User/GenerateApiTokenCommand.php deleted file mode 100644 index 168cecf5..00000000 --- a/app/Bus/Commands/User/GenerateApiTokenCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -user = $user; - } -} diff --git a/app/Bus/Commands/User/InviteUserCommand.php b/app/Bus/Commands/User/InviteUserCommand.php deleted file mode 100644 index 49f16d9a..00000000 --- a/app/Bus/Commands/User/InviteUserCommand.php +++ /dev/null @@ -1,48 +0,0 @@ - - */ -final class InviteUserCommand -{ - /** - * The invite emails. - * - * @var string[] - */ - public $emails; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'emails.*' => 'required|email', - ]; - - /** - * Create a new invite user command instance. - * - * @param string[] $emails - * - * @return void - */ - public function __construct(array $emails) - { - $this->emails = $emails; - } -} diff --git a/app/Bus/Commands/User/RemoveUserCommand.php b/app/Bus/Commands/User/RemoveUserCommand.php deleted file mode 100644 index 50bedcba..00000000 --- a/app/Bus/Commands/User/RemoveUserCommand.php +++ /dev/null @@ -1,36 +0,0 @@ -user = $user; - } -} diff --git a/app/Bus/Commands/User/SignupUserCommand.php b/app/Bus/Commands/User/SignupUserCommand.php deleted file mode 100644 index cfba31f5..00000000 --- a/app/Bus/Commands/User/SignupUserCommand.php +++ /dev/null @@ -1,73 +0,0 @@ - 'required|string', - 'password' => 'required|string', - 'email' => 'required|string|email', - 'level' => 'required|int', - ]; - - /** - * Create a new signup user command instance. - * - * @param string $username - * @param string $password - * @param string $email - * @param int $level - * - * @return void - */ - public function __construct($username, $password, $email, $level) - { - $this->username = $username; - $this->password = $password; - $this->email = $email; - $this->level = $level; - } -} diff --git a/app/Bus/Commands/User/WelcomeUserCommand.php b/app/Bus/Commands/User/WelcomeUserCommand.php deleted file mode 100644 index 65f805e5..00000000 --- a/app/Bus/Commands/User/WelcomeUserCommand.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -final class WelcomeUserCommand -{ - /** - * The user. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new welcome user command instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } -} diff --git a/app/Bus/Events/ActionInterface.php b/app/Bus/Events/ActionInterface.php deleted file mode 100644 index ae1bc1c8..00000000 --- a/app/Bus/Events/ActionInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @author James Brooks - */ -interface ActionInterface -{ - /** - * Get the event action. - * - * @return array - */ - public function getAction(); -} diff --git a/app/Bus/Events/Beacon/BeaconEventInterface.php b/app/Bus/Events/Beacon/BeaconEventInterface.php deleted file mode 100644 index 672fde7d..00000000 --- a/app/Bus/Events/Beacon/BeaconEventInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface BeaconEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/Beacon/BeaconFailedToSendEvent.php b/app/Bus/Events/Beacon/BeaconFailedToSendEvent.php deleted file mode 100644 index 932dab30..00000000 --- a/app/Bus/Events/Beacon/BeaconFailedToSendEvent.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -final class BeaconFailedToSendEvent implements BeaconEventInterface -{ - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Beacon failed to send.'; - } -} diff --git a/app/Bus/Events/Beacon/BeaconWasSentEvent.php b/app/Bus/Events/Beacon/BeaconWasSentEvent.php deleted file mode 100644 index 919f338f..00000000 --- a/app/Bus/Events/Beacon/BeaconWasSentEvent.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -final class BeaconWasSentEvent implements BeaconEventInterface -{ - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Beacon was sent.'; - } -} diff --git a/app/Bus/Events/Component/ComponentEventInterface.php b/app/Bus/Events/Component/ComponentEventInterface.php deleted file mode 100644 index 281a811f..00000000 --- a/app/Bus/Events/Component/ComponentEventInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @author James Brooks - */ -interface ComponentEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/Component/ComponentStatusWasChangedEvent.php b/app/Bus/Events/Component/ComponentStatusWasChangedEvent.php deleted file mode 100644 index 4c987409..00000000 --- a/app/Bus/Events/Component/ComponentStatusWasChangedEvent.php +++ /dev/null @@ -1,102 +0,0 @@ - - */ -final class ComponentStatusWasChangedEvent implements ActionInterface, ComponentEventInterface -{ - /** - * The user who changed the component. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The component that was changed. - * - * @var \CachetHQ\Cachet\Models\Component - */ - public $component; - - /** - * The original status of the component. - * - * @var int - */ - public $original_status; - - /** - * The new status of the component. - * - * @var int - */ - public $new_status; - - /** - * If silent, we won't notify. - * - * @var bool - */ - public $silent; - - /** - * Create a new component was updated event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\Component $component - * @param int $original_status - * @param int $new_status - * @param bool $silent - * - * @return void - */ - public function __construct(User $user, Component $component, $original_status, $new_status, $silent) - { - $this->user = $user; - $this->component = $component; - $this->original_status = $original_status; - $this->new_status = $new_status; - $this->silent = $silent; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Component status was changed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Component/ComponentWasCreatedEvent.php b/app/Bus/Events/Component/ComponentWasCreatedEvent.php deleted file mode 100644 index 29b00da5..00000000 --- a/app/Bus/Events/Component/ComponentWasCreatedEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class ComponentWasCreatedEvent implements ActionInterface, ComponentEventInterface -{ - /** - * The user who added the component. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The component that was added. - * - * @var \CachetHQ\Cachet\Models\Component - */ - public $component; - - /** - * Create a new component was added event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return void - */ - public function __construct(User $user, Component $component) - { - $this->user = $user; - $this->component = $component; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Component was added.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Component/ComponentWasRemovedEvent.php b/app/Bus/Events/Component/ComponentWasRemovedEvent.php deleted file mode 100644 index 02dc3e64..00000000 --- a/app/Bus/Events/Component/ComponentWasRemovedEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class ComponentWasRemovedEvent implements ActionInterface, ComponentEventInterface -{ - /** - * The user who removed the component. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The component that was removed. - * - * @var \CachetHQ\Cachet\Models\Component - */ - public $component; - - /** - * Create a new component was removed event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return void - */ - public function __construct(User $user, Component $component) - { - $this->user = $user; - $this->component = $component; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Component was removed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Component/ComponentWasUpdatedEvent.php b/app/Bus/Events/Component/ComponentWasUpdatedEvent.php deleted file mode 100644 index 3349e464..00000000 --- a/app/Bus/Events/Component/ComponentWasUpdatedEvent.php +++ /dev/null @@ -1,76 +0,0 @@ - - * @author Graham Campbell - */ -final class ComponentWasUpdatedEvent implements ActionInterface, ComponentEventInterface -{ - /** - * The user who updated the component. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The component that was updated. - * - * @var \CachetHQ\Cachet\Models\Component - */ - public $component; - - /** - * Create a new component was updated event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return void - */ - public function __construct(User $user, Component $component) - { - $this->user = $user; - $this->component = $component; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Component was updated.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/ComponentGroup/ComponentGroupEventInterface.php b/app/Bus/Events/ComponentGroup/ComponentGroupEventInterface.php deleted file mode 100644 index 6e40f0ee..00000000 --- a/app/Bus/Events/ComponentGroup/ComponentGroupEventInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @author James Brooks - */ -interface ComponentGroupEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/ComponentGroup/ComponentGroupWasCreatedEvent.php b/app/Bus/Events/ComponentGroup/ComponentGroupWasCreatedEvent.php deleted file mode 100644 index 97ad6057..00000000 --- a/app/Bus/Events/ComponentGroup/ComponentGroupWasCreatedEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class ComponentGroupWasCreatedEvent implements ActionInterface, ComponentGroupEventInterface -{ - /** - * The user who added the component group. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The component group that was added. - * - * @var \CachetHQ\Cachet\Models\ComponentGroup - */ - public $group; - - /** - * Create a new component group was added event instance. - * - * @param \CachetHQ\Cachet\Models\User $group - * @param \CachetHQ\Cachet\Models\ComponentGroup $group - * - * @return void - */ - public function __construct(User $user, ComponentGroup $group) - { - $this->user = $user; - $this->group = $group; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Component Group was added.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/ComponentGroup/ComponentGroupWasRemovedEvent.php b/app/Bus/Events/ComponentGroup/ComponentGroupWasRemovedEvent.php deleted file mode 100644 index 1bf33fb0..00000000 --- a/app/Bus/Events/ComponentGroup/ComponentGroupWasRemovedEvent.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->group = $group; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Component Group was removed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/ComponentGroup/ComponentGroupWasUpdatedEvent.php b/app/Bus/Events/ComponentGroup/ComponentGroupWasUpdatedEvent.php deleted file mode 100644 index 5942f00c..00000000 --- a/app/Bus/Events/ComponentGroup/ComponentGroupWasUpdatedEvent.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->group = $group; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Component Group was updated.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/EventInterface.php b/app/Bus/Events/EventInterface.php deleted file mode 100644 index 41a58b73..00000000 --- a/app/Bus/Events/EventInterface.php +++ /dev/null @@ -1,23 +0,0 @@ - - * @author James Brooks - */ -interface EventInterface -{ - // -} diff --git a/app/Bus/Events/Incident/IncidentEventInterface.php b/app/Bus/Events/Incident/IncidentEventInterface.php deleted file mode 100644 index 31418b55..00000000 --- a/app/Bus/Events/Incident/IncidentEventInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @author James Brooks - */ -interface IncidentEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/Incident/IncidentWasCreatedEvent.php b/app/Bus/Events/Incident/IncidentWasCreatedEvent.php deleted file mode 100644 index c43d672b..00000000 --- a/app/Bus/Events/Incident/IncidentWasCreatedEvent.php +++ /dev/null @@ -1,79 +0,0 @@ -user = $user; - $this->incident = $incident; - $this->notify = $notify; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Incident was reported.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Incident/IncidentWasRemovedEvent.php b/app/Bus/Events/Incident/IncidentWasRemovedEvent.php deleted file mode 100644 index 78a95f76..00000000 --- a/app/Bus/Events/Incident/IncidentWasRemovedEvent.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->incident = $incident; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Incident was removed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Incident/IncidentWasUpdatedEvent.php b/app/Bus/Events/Incident/IncidentWasUpdatedEvent.php deleted file mode 100644 index 7aa11322..00000000 --- a/app/Bus/Events/Incident/IncidentWasUpdatedEvent.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->incident = $incident; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Incident was updated.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/IncidentUpdate/IncidentUpdateEventInterface.php b/app/Bus/Events/IncidentUpdate/IncidentUpdateEventInterface.php deleted file mode 100644 index 9f1687af..00000000 --- a/app/Bus/Events/IncidentUpdate/IncidentUpdateEventInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface IncidentUpdateEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/IncidentUpdate/IncidentUpdateWasRemovedEvent.php b/app/Bus/Events/IncidentUpdate/IncidentUpdateWasRemovedEvent.php deleted file mode 100644 index 8618457f..00000000 --- a/app/Bus/Events/IncidentUpdate/IncidentUpdateWasRemovedEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class IncidentUpdateWasRemovedEvent implements ActionInterface, IncidentUpdateEventInterface -{ - /** - * The user who removed the incident update. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The incident update that has been removed. - * - * @var \CachetHQ\Cachet\Models\IncidentUpdate - */ - public $update; - - /** - * Create a new incident update was removed event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\IncidentUpdate $update - * - * @return void - */ - public function __construct(User $user, IncidentUpdate $update) - { - $this->user = $user; - $this->update = $update; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Incident Update was removed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/IncidentUpdate/IncidentUpdateWasReportedEvent.php b/app/Bus/Events/IncidentUpdate/IncidentUpdateWasReportedEvent.php deleted file mode 100644 index 52dadf88..00000000 --- a/app/Bus/Events/IncidentUpdate/IncidentUpdateWasReportedEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class IncidentUpdateWasReportedEvent implements ActionInterface, IncidentUpdateEventInterface -{ - /** - * The user who reported the incident update. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The incident update that has been reported. - * - * @var \CachetHQ\Cachet\Models\IncidentUpdate - */ - public $update; - - /** - * Create a new incident update was reported event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\IncidentUpdate $update - * - * @return void - */ - public function __construct(User $user, IncidentUpdate $update) - { - $this->user = $user; - $this->update = $update; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Incident Update was reported.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/IncidentUpdate/IncidentUpdateWasUpdatedEvent.php b/app/Bus/Events/IncidentUpdate/IncidentUpdateWasUpdatedEvent.php deleted file mode 100644 index 20e3782d..00000000 --- a/app/Bus/Events/IncidentUpdate/IncidentUpdateWasUpdatedEvent.php +++ /dev/null @@ -1,74 +0,0 @@ - - */ -final class IncidentUpdateWasUpdatedEvent implements ActionInterface, IncidentUpdateEventInterface -{ - /** - * The user who updated the incident update. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The incident update that has been updated. - * - * @var \CachetHQ\Cachet\Models\IncidentUpdate - */ - public $update; - - /** - * Create a new incident update was updated event instance. - * - * @param \CachetHQ\Cachet\Models\IncidentUpdate $update - * - * @return void - */ - public function __construct(User $user, IncidentUpdate $update) - { - $this->user = $user; - $this->update = $update; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Incident Update was updated.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Invite/InviteEventInterface.php b/app/Bus/Events/Invite/InviteEventInterface.php deleted file mode 100644 index 63c19970..00000000 --- a/app/Bus/Events/Invite/InviteEventInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @author James Brooks - */ -interface InviteEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/Invite/InviteWasClaimedEvent.php b/app/Bus/Events/Invite/InviteWasClaimedEvent.php deleted file mode 100644 index 02f950ee..00000000 --- a/app/Bus/Events/Invite/InviteWasClaimedEvent.php +++ /dev/null @@ -1,44 +0,0 @@ -invite = $invite; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Invite was claimed.'; - } -} diff --git a/app/Bus/Events/Metric/MetricEventInterface.php b/app/Bus/Events/Metric/MetricEventInterface.php deleted file mode 100644 index 631b4549..00000000 --- a/app/Bus/Events/Metric/MetricEventInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @author James Brooks - */ -interface MetricEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/Metric/MetricPointWasCreatedEvent.php b/app/Bus/Events/Metric/MetricPointWasCreatedEvent.php deleted file mode 100644 index 7137b8c1..00000000 --- a/app/Bus/Events/Metric/MetricPointWasCreatedEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class MetricPointWasCreatedEvent implements ActionInterface, MetricEventInterface -{ - /** - * The user who added the metric point. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The metric point that was added. - * - * @var \CachetHQ\Cachet\Models\MetricPoint - */ - public $metricPoint; - - /** - * Create a new metric point was added event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\MetricPoint $metricPoint - * - * @return void - */ - public function __construct(User $user, MetricPoint $metricPoint) - { - $this->user = $user; - $this->metricPoint = $metricPoint; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Metric Point was added.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Metric/MetricPointWasRemovedEvent.php b/app/Bus/Events/Metric/MetricPointWasRemovedEvent.php deleted file mode 100644 index 85718a41..00000000 --- a/app/Bus/Events/Metric/MetricPointWasRemovedEvent.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->metricPoint = $metricPoint; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Metric Point was removed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Metric/MetricPointWasUpdatedEvent.php b/app/Bus/Events/Metric/MetricPointWasUpdatedEvent.php deleted file mode 100644 index b61a595d..00000000 --- a/app/Bus/Events/Metric/MetricPointWasUpdatedEvent.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->metricPoint = $metricPoint; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Metric Point was updated.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Metric/MetricWasCreatedEvent.php b/app/Bus/Events/Metric/MetricWasCreatedEvent.php deleted file mode 100644 index f3e123b8..00000000 --- a/app/Bus/Events/Metric/MetricWasCreatedEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class MetricWasCreatedEvent implements ActionInterface, MetricEventInterface -{ - /** - * The user who added the metric. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The metric that was added. - * - * @var \CachetHQ\Cachet\Models\Metric - */ - public $metric; - - /** - * Create a new metric was added event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return void - */ - public function __construct(User $user, Metric $metric) - { - $this->user = $user; - $this->metric = $metric; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Metric was added.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Metric/MetricWasRemovedEvent.php b/app/Bus/Events/Metric/MetricWasRemovedEvent.php deleted file mode 100644 index 7193f307..00000000 --- a/app/Bus/Events/Metric/MetricWasRemovedEvent.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->metric = $metric; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Metric was removed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Metric/MetricWasUpdatedEvent.php b/app/Bus/Events/Metric/MetricWasUpdatedEvent.php deleted file mode 100644 index 48b1dc9c..00000000 --- a/app/Bus/Events/Metric/MetricWasUpdatedEvent.php +++ /dev/null @@ -1,70 +0,0 @@ -user = $user; - $this->metric = $metric; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Metric was updated.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Schedule/ScheduleEventInterface.php b/app/Bus/Events/Schedule/ScheduleEventInterface.php deleted file mode 100644 index cd23ed51..00000000 --- a/app/Bus/Events/Schedule/ScheduleEventInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface ScheduleEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/Schedule/ScheduleWasCreatedEvent.php b/app/Bus/Events/Schedule/ScheduleWasCreatedEvent.php deleted file mode 100644 index 2438658d..00000000 --- a/app/Bus/Events/Schedule/ScheduleWasCreatedEvent.php +++ /dev/null @@ -1,84 +0,0 @@ - - */ -final class ScheduleWasCreatedEvent implements ActionInterface, ScheduleEventInterface -{ - /** - * The user that created the schedule. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The schedule that has been created. - * - * @var \CachetHQ\Cachet\Models\Schedule - */ - public $schedule; - - /** - * Whether to notify that the incident was reported. - * - * @var bool - */ - public $notify; - - /** - * Create a new schedule was created event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * @param bool notify - * - * @return void - */ - public function __construct(User $user, Schedule $schedule, $notify = false) - { - $this->user = $user; - $this->schedule = $schedule; - $this->notify = $notify; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Schedule was created.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Schedule/ScheduleWasRemovedEvent.php b/app/Bus/Events/Schedule/ScheduleWasRemovedEvent.php deleted file mode 100644 index 525c77f7..00000000 --- a/app/Bus/Events/Schedule/ScheduleWasRemovedEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class ScheduleWasRemovedEvent implements ActionInterface, ScheduleEventInterface -{ - /** - * The user that removed the schedule. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The schedule that has been removed. - * - * @var \CachetHQ\Cachet\Models\Schedule - */ - public $schedule; - - /** - * Create a new schedule was removed event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return void - */ - public function __construct(User $user, Schedule $schedule) - { - $this->user = $user; - $this->schedule = $schedule; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Schedule was removed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Schedule/ScheduleWasUpdatedEvent.php b/app/Bus/Events/Schedule/ScheduleWasUpdatedEvent.php deleted file mode 100644 index 18fc46aa..00000000 --- a/app/Bus/Events/Schedule/ScheduleWasUpdatedEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class ScheduleWasUpdatedEvent implements ActionInterface, ScheduleEventInterface -{ - /** - * The user that created the schedule. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The schedule that has been updated. - * - * @var \CachetHQ\Cachet\Models\Schedule - */ - public $schedule; - - /** - * Create a new schedule was updated event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return void - */ - public function __construct(User $user, Schedule $schedule) - { - $this->user = $user; - $this->schedule = $schedule; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Schedule was updated.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/Subscriber/SubscriberEventInterface.php b/app/Bus/Events/Subscriber/SubscriberEventInterface.php deleted file mode 100644 index d8ec1411..00000000 --- a/app/Bus/Events/Subscriber/SubscriberEventInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @author James Brooks - */ -interface SubscriberEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/Subscriber/SubscriberHasSubscribedEvent.php b/app/Bus/Events/Subscriber/SubscriberHasSubscribedEvent.php deleted file mode 100644 index 2dc68624..00000000 --- a/app/Bus/Events/Subscriber/SubscriberHasSubscribedEvent.php +++ /dev/null @@ -1,46 +0,0 @@ -subscriber = $subscriber; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Subscriber has subscribed.'; - } -} diff --git a/app/Bus/Events/Subscriber/SubscriberHasUnsubscribedEvent.php b/app/Bus/Events/Subscriber/SubscriberHasUnsubscribedEvent.php deleted file mode 100644 index 4e67f5c8..00000000 --- a/app/Bus/Events/Subscriber/SubscriberHasUnsubscribedEvent.php +++ /dev/null @@ -1,46 +0,0 @@ -subscriber = $subscriber; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Subscriber has unsubscribed.'; - } -} diff --git a/app/Bus/Events/Subscriber/SubscriberHasUpdatedSubscriptionsEvent.php b/app/Bus/Events/Subscriber/SubscriberHasUpdatedSubscriptionsEvent.php deleted file mode 100644 index 8f6c71b8..00000000 --- a/app/Bus/Events/Subscriber/SubscriberHasUpdatedSubscriptionsEvent.php +++ /dev/null @@ -1,51 +0,0 @@ - - */ -final class SubscriberHasUpdatedSubscriptionsEvent implements SubscriberEventInterface -{ - /** - * The subscriber. - * - * @var \CachetHQ\Cachet\Models\Subscriber - */ - public $subscriber; - - /** - * Create a new subscriber has updated subscriptions event instance. - * - * @param \CachetHQ\Cachet\Models\Subscriber $subscriber - * - * @return void - */ - public function __construct(Subscriber $subscriber) - { - $this->subscriber = $subscriber; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Subscriber has updated subscription.'; - } -} diff --git a/app/Bus/Events/Subscriber/SubscriberHasVerifiedEvent.php b/app/Bus/Events/Subscriber/SubscriberHasVerifiedEvent.php deleted file mode 100644 index b621dda1..00000000 --- a/app/Bus/Events/Subscriber/SubscriberHasVerifiedEvent.php +++ /dev/null @@ -1,46 +0,0 @@ -subscriber = $subscriber; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'Subscriber has verified.'; - } -} diff --git a/app/Bus/Events/System/SystemCheckedForUpdatesEvent.php b/app/Bus/Events/System/SystemCheckedForUpdatesEvent.php deleted file mode 100644 index 98481777..00000000 --- a/app/Bus/Events/System/SystemCheckedForUpdatesEvent.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -final class SystemCheckedForUpdatesEvent implements SystemEventInterface -{ - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'System checked for updated.'; - } -} diff --git a/app/Bus/Events/System/SystemEventInterface.php b/app/Bus/Events/System/SystemEventInterface.php deleted file mode 100644 index d195fa58..00000000 --- a/app/Bus/Events/System/SystemEventInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface SystemEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/System/SystemWasInstalledEvent.php b/app/Bus/Events/System/SystemWasInstalledEvent.php deleted file mode 100644 index cfc47ea2..00000000 --- a/app/Bus/Events/System/SystemWasInstalledEvent.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -final class SystemWasInstalledEvent implements SystemEventInterface -{ - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'System was installed.'; - } -} diff --git a/app/Bus/Events/System/SystemWasResetEvent.php b/app/Bus/Events/System/SystemWasResetEvent.php deleted file mode 100644 index b96763f4..00000000 --- a/app/Bus/Events/System/SystemWasResetEvent.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -final class SystemWasResetEvent implements SystemEventInterface -{ - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'System was reset.'; - } -} diff --git a/app/Bus/Events/System/SystemWasUpdatedEvent.php b/app/Bus/Events/System/SystemWasUpdatedEvent.php deleted file mode 100644 index faf0cf07..00000000 --- a/app/Bus/Events/System/SystemWasUpdatedEvent.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -final class SystemWasUpdatedEvent implements SystemEventInterface -{ - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'System was updated.'; - } -} diff --git a/app/Bus/Events/User/UserAcceptedInviteEvent.php b/app/Bus/Events/User/UserAcceptedInviteEvent.php deleted file mode 100644 index 6148c3dc..00000000 --- a/app/Bus/Events/User/UserAcceptedInviteEvent.php +++ /dev/null @@ -1,75 +0,0 @@ - - */ -final class UserAcceptedInviteEvent implements ActionInterface, UserEventInterface -{ - /** - * The user that accepted the invite. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * The invite that the user accepted. - * - * @var \CachetHQ\Cachet\Models\Invite - */ - public $invite; - - /** - * Create a new user accepted invite event class. - * - * @param \CachetHQ\Cachet\Models\User $user - * @param \CachetHQ\Cachet\Models\Invite $invite - * - * @return void - */ - public function __construct(User $user, Invite $invite) - { - $this->user = $user; - $this->invite = $invite; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User accepted invite.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserDisabledTwoAuthEvent.php b/app/Bus/Events/User/UserDisabledTwoAuthEvent.php deleted file mode 100644 index a7646dba..00000000 --- a/app/Bus/Events/User/UserDisabledTwoAuthEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -final class UserDisabledTwoAuthEvent implements ActionInterface, UserEventInterface -{ - /** - * The user that disabled two auth. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new user disabled two auth event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User disabled two-factor authentication.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserEnabledTwoAuthEvent.php b/app/Bus/Events/User/UserEnabledTwoAuthEvent.php deleted file mode 100644 index 9a13d045..00000000 --- a/app/Bus/Events/User/UserEnabledTwoAuthEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -final class UserEnabledTwoAuthEvent implements ActionInterface, UserEventInterface -{ - /** - * The user that enabled two auth. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new user enabled two auth event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User enabled two-factor authentication.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserEventInterface.php b/app/Bus/Events/User/UserEventInterface.php deleted file mode 100644 index be886a83..00000000 --- a/app/Bus/Events/User/UserEventInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @author James Brooks - */ -interface UserEventInterface extends EventInterface -{ - // -} diff --git a/app/Bus/Events/User/UserFailedTwoAuthEvent.php b/app/Bus/Events/User/UserFailedTwoAuthEvent.php deleted file mode 100644 index 6fa1b015..00000000 --- a/app/Bus/Events/User/UserFailedTwoAuthEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -final class UserFailedTwoAuthEvent implements ActionInterface, UserEventInterface -{ - /** - * The user that failed two auth. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new user failed two auth event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User failed two-factor authentication.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserLoggedInEvent.php b/app/Bus/Events/User/UserLoggedInEvent.php deleted file mode 100644 index 06aafe44..00000000 --- a/app/Bus/Events/User/UserLoggedInEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -final class UserLoggedInEvent implements ActionInterface, UserEventInterface -{ - /** - * The user that logged in. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new user logged in event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User logged in.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserLoggedOutEvent.php b/app/Bus/Events/User/UserLoggedOutEvent.php deleted file mode 100644 index 98370606..00000000 --- a/app/Bus/Events/User/UserLoggedOutEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -final class UserLoggedOutEvent implements ActionInterface, UserEventInterface -{ - /** - * The user that logged out. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new user logged out event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User logged out.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserPassedTwoAuthEvent.php b/app/Bus/Events/User/UserPassedTwoAuthEvent.php deleted file mode 100644 index 640938e5..00000000 --- a/app/Bus/Events/User/UserPassedTwoAuthEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -final class UserPassedTwoAuthEvent implements ActionInterface, UserEventInterface -{ - /** - * The user that passed two auth. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new user passed two auth event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User passed two-factor authentication.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserRegeneratedApiTokenEvent.php b/app/Bus/Events/User/UserRegeneratedApiTokenEvent.php deleted file mode 100644 index 6dee9109..00000000 --- a/app/Bus/Events/User/UserRegeneratedApiTokenEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -final class UserRegeneratedApiTokenEvent implements ActionInterface, UserEventInterface -{ - /** - * The user that regenerated their api token. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new user regenerated api token event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User regenerated api token.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserWasCreatedEvent.php b/app/Bus/Events/User/UserWasCreatedEvent.php deleted file mode 100644 index a013352a..00000000 --- a/app/Bus/Events/User/UserWasCreatedEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -final class UserWasCreatedEvent implements ActionInterface, UserEventInterface -{ - /** - * The user that has been added. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new user was added event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User was created.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserWasInvitedEvent.php b/app/Bus/Events/User/UserWasInvitedEvent.php deleted file mode 100644 index c2a65db9..00000000 --- a/app/Bus/Events/User/UserWasInvitedEvent.php +++ /dev/null @@ -1,53 +0,0 @@ - - * @author Graham Campbell - * @author James Brooks - */ -final class UserWasInvitedEvent implements UserEventInterface -{ - /** - * The invite that has been created. - * - * @var \CachetHQ\Cachet\Models\Invite - */ - public $invite; - - /** - * Create a new user was invite event instance. - * - * @param \CachetHQ\Cachet\Models\Invite $invite - * - * @return void - */ - public function __construct(Invite $invite) - { - $this->invite = $invite; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User was invited.'; - } -} diff --git a/app/Bus/Events/User/UserWasRemovedEvent.php b/app/Bus/Events/User/UserWasRemovedEvent.php deleted file mode 100644 index d4421340..00000000 --- a/app/Bus/Events/User/UserWasRemovedEvent.php +++ /dev/null @@ -1,60 +0,0 @@ -user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User was removed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Events/User/UserWasWelcomedEvent.php b/app/Bus/Events/User/UserWasWelcomedEvent.php deleted file mode 100644 index 3f163cc5..00000000 --- a/app/Bus/Events/User/UserWasWelcomedEvent.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -final class UserWasWelcomedEvent implements ActionInterface, UserEventInterface -{ - /** - * The user. - * - * @var \CachetHQ\Cachet\Models\User - */ - public $user; - - /** - * Create a new user was welcomed event instance. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return void - */ - public function __construct(User $user) - { - $this->user = $user; - } - - /** - * Get the event description. - * - * @return string - */ - public function __toString() - { - return 'User was welcomed.'; - } - - /** - * Get the event action. - * - * @return array - */ - public function getAction() - { - return [ - 'user' => $this->user, - 'description' => (string) $this, - ]; - } -} diff --git a/app/Bus/Exceptions/Component/ComponentExceptionInterface.php b/app/Bus/Exceptions/Component/ComponentExceptionInterface.php deleted file mode 100644 index 211d81f7..00000000 --- a/app/Bus/Exceptions/Component/ComponentExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface ComponentExceptionInterface extends ExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/ComponentGroup/ComponentGroup.php b/app/Bus/Exceptions/ComponentGroup/ComponentGroup.php deleted file mode 100644 index 8ca6edd0..00000000 --- a/app/Bus/Exceptions/ComponentGroup/ComponentGroup.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface ComponentGroup extends ExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/ExceptionInterface.php b/app/Bus/Exceptions/ExceptionInterface.php deleted file mode 100644 index 5d60b6a7..00000000 --- a/app/Bus/Exceptions/ExceptionInterface.php +++ /dev/null @@ -1,23 +0,0 @@ - - * @author James Brooks - */ -interface ExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/Incident/IncidentExceptionInterface.php b/app/Bus/Exceptions/Incident/IncidentExceptionInterface.php deleted file mode 100644 index f6aa9be7..00000000 --- a/app/Bus/Exceptions/Incident/IncidentExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface IncidentExceptionInterface extends ExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/Incident/InvalidIncidentTimestampException.php b/app/Bus/Exceptions/Incident/InvalidIncidentTimestampException.php deleted file mode 100644 index 8d5d8708..00000000 --- a/app/Bus/Exceptions/Incident/InvalidIncidentTimestampException.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -class InvalidIncidentTimestampException extends Exception implements IncidentExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/IncidentUpdate/IncidentUpdateExceptionInterface.php b/app/Bus/Exceptions/IncidentUpdate/IncidentUpdateExceptionInterface.php deleted file mode 100644 index 3abb87db..00000000 --- a/app/Bus/Exceptions/IncidentUpdate/IncidentUpdateExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface IncidentUpdateExceptionInterface extends ExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/Metric/MetricExceptionInterface.php b/app/Bus/Exceptions/Metric/MetricExceptionInterface.php deleted file mode 100644 index 51dd0f44..00000000 --- a/app/Bus/Exceptions/Metric/MetricExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface MetricExceptionInterface extends ExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/MetricPoint/MetricPointExceptionInterface.php b/app/Bus/Exceptions/MetricPoint/MetricPointExceptionInterface.php deleted file mode 100644 index a0fe628c..00000000 --- a/app/Bus/Exceptions/MetricPoint/MetricPointExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface MetricPointExceptionInterface extends ExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/Schedule/ScheduleExceptionInterface.php b/app/Bus/Exceptions/Schedule/ScheduleExceptionInterface.php deleted file mode 100644 index 61059820..00000000 --- a/app/Bus/Exceptions/Schedule/ScheduleExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface ScheduleExceptionInterface extends ExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/Subscriber/SubscriberExceptionInterface.php b/app/Bus/Exceptions/Subscriber/SubscriberExceptionInterface.php deleted file mode 100644 index afee3735..00000000 --- a/app/Bus/Exceptions/Subscriber/SubscriberExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface SubscriberExceptionInterface extends ExceptionInterface -{ - // -} diff --git a/app/Bus/Exceptions/User/UserExceptionInterface.php b/app/Bus/Exceptions/User/UserExceptionInterface.php deleted file mode 100644 index e0b3d8ae..00000000 --- a/app/Bus/Exceptions/User/UserExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -interface UserExceptionInterface extends ExceptionInterface -{ - // -} diff --git a/app/Bus/Handlers/Commands/Component/CreateComponentCommandHandler.php b/app/Bus/Handlers/Commands/Component/CreateComponentCommandHandler.php deleted file mode 100644 index 867f49fb..00000000 --- a/app/Bus/Handlers/Commands/Component/CreateComponentCommandHandler.php +++ /dev/null @@ -1,94 +0,0 @@ - - */ -class CreateComponentCommandHandler -{ - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new remove component command handler instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - - /** - * Handle the add component command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Component\CreateComponentCommand $command - * - * @return \CachetHQ\Cachet\Models\Component - */ - public function handle(CreateComponentCommand $command) - { - $component = Component::create($this->filter($command)); - - // Sync the tags into the component. - if ($command->tags) { - collect(preg_split('/ ?, ?/', $command->tags))->filter()->map(function ($tag) { - return trim($tag); - })->pipe(function ($tags) use ($component) { - $component->attachTags($tags); - }); - } - - event(new ComponentWasCreatedEvent($this->auth->user(), $component)); - - return $component; - } - - /** - * Filter the command data. - * - * @param \CachetHQ\Cachet\Bus\Commands\Component\CreateComponentCommand $command - * - * @return array - */ - protected function filter(CreateComponentCommand $command) - { - $params = [ - 'name' => $command->name, - 'description' => $command->description, - 'link' => $command->link, - 'status' => $command->status, - 'enabled' => $command->enabled, - 'order' => $command->order, - 'group_id' => $command->group_id, - 'meta' => $command->meta, - ]; - - return array_filter($params, function ($val) { - return $val !== null; - }); - } -} diff --git a/app/Bus/Handlers/Commands/Component/RemoveComponentCommandHandler.php b/app/Bus/Handlers/Commands/Component/RemoveComponentCommandHandler.php deleted file mode 100644 index 78e0acd7..00000000 --- a/app/Bus/Handlers/Commands/Component/RemoveComponentCommandHandler.php +++ /dev/null @@ -1,54 +0,0 @@ -auth = $auth; - } - - /** - * Handle the remove component command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Component\RemoveComponentCommand $command - * - * @return void - */ - public function handle(RemoveComponentCommand $command) - { - $component = $command->component; - - event(new ComponentWasRemovedEvent($this->auth->user(), $component)); - - $component->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/Component/UpdateComponentCommandHandler.php b/app/Bus/Handlers/Commands/Component/UpdateComponentCommandHandler.php deleted file mode 100644 index f0ad1e44..00000000 --- a/app/Bus/Handlers/Commands/Component/UpdateComponentCommandHandler.php +++ /dev/null @@ -1,97 +0,0 @@ -auth = $auth; - } - - /** - * Handle the update component command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand $command - * - * @return \CachetHQ\Cachet\Models\Component - */ - public function handle(UpdateComponentCommand $command) - { - $component = $command->component; - $originalStatus = $component->status; - - if ($command->status && (int) $originalStatus !== (int) $command->status) { - event(new ComponentStatusWasChangedEvent($this->auth->user(), $component, $originalStatus, $command->status, $command->silent)); - } - - $component->update($this->filter($command)); - - // Sync the tags into the component. - if ($command->tags) { - collect(preg_split('/ ?, ?/', $command->tags))->filter()->map(function ($tag) { - return trim($tag); - })->pipe(function ($tags) use ($component) { - $component->syncTags($tags); - }); - } - - event(new ComponentWasUpdatedEvent($this->auth->user(), $component)); - - return $component; - } - - /** - * Filter the command data. - * - * @param \CachetHQ\Cachet\Bus\Commands\Component\UpdateComponentCommand $command - * - * @return array - */ - protected function filter(UpdateComponentCommand $command) - { - $params = [ - 'name' => $command->name, - 'description' => $command->description, - 'link' => $command->link, - 'status' => $command->status, - 'enabled' => $command->enabled, - 'order' => $command->order, - 'group_id' => $command->group_id, - 'meta' => $command->meta, - ]; - - return array_filter($params, function ($val) { - return $val !== null; - }); - } -} diff --git a/app/Bus/Handlers/Commands/ComponentGroup/CreateComponentGroupCommandHandler.php b/app/Bus/Handlers/Commands/ComponentGroup/CreateComponentGroupCommandHandler.php deleted file mode 100644 index 2169025b..00000000 --- a/app/Bus/Handlers/Commands/ComponentGroup/CreateComponentGroupCommandHandler.php +++ /dev/null @@ -1,60 +0,0 @@ -auth = $auth; - } - - /** - * Handle the create component group command. - * - * @param \CachetHQ\Cachet\Bus\Commands\ComponentGroup\CreateComponentGroupCommand $command - * - * @return \CachetHQ\Cachet\Models\ComponentGroup - */ - public function handle(CreateComponentGroupCommand $command) - { - $group = ComponentGroup::create([ - 'name' => $command->name, - 'order' => $command->order, - 'collapsed' => $command->collapsed, - 'visible' => $command->visible, - ]); - - event(new ComponentGroupWasCreatedEvent($this->auth->user(), $group)); - - return $group; - } -} diff --git a/app/Bus/Handlers/Commands/ComponentGroup/RemoveComponentGroupCommandHandler.php b/app/Bus/Handlers/Commands/ComponentGroup/RemoveComponentGroupCommandHandler.php deleted file mode 100644 index eef3b14e..00000000 --- a/app/Bus/Handlers/Commands/ComponentGroup/RemoveComponentGroupCommandHandler.php +++ /dev/null @@ -1,59 +0,0 @@ -auth = $auth; - } - - /** - * Handle the remove component group command. - * - * @param \CachetHQ\Cachet\Bus\Commands\ComponentGroup\RemoveComponentGroupCommand $command - * - * @return void - */ - public function handle(RemoveComponentGroupCommand $command) - { - $group = $command->group; - - event(new ComponentGroupWasRemovedEvent($this->auth->user(), $group)); - - // Remove the group id from all component. - $group->components->map(function ($component) { - $component->update(['group_id' => 0]); - }); - - $group->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/ComponentGroup/UpdateComponentGroupCommandHandler.php b/app/Bus/Handlers/Commands/ComponentGroup/UpdateComponentGroupCommandHandler.php deleted file mode 100644 index 394b73c9..00000000 --- a/app/Bus/Handlers/Commands/ComponentGroup/UpdateComponentGroupCommandHandler.php +++ /dev/null @@ -1,76 +0,0 @@ -auth = $auth; - } - - /** - * Handle the update component group command. - * - * @param \CachetHQ\Cachet\Bus\Commands\ComponentGroup\UpdateComponentGroupCommand $command - * - * @return \CachetHQ\Cachet\Models\ComponentGroup - */ - public function handle(UpdateComponentGroupCommand $command) - { - $group = $command->group; - $group->update($this->filter($command)); - - event(new ComponentGroupWasUpdatedEvent($this->auth->user(), $group)); - - return $group; - } - - /** - * Filter the command data. - * - * @param \CachetHQ\Cachet\Bus\Commands\ComponentGroup\UpdateComponentGroupCommand $command - * - * @return array - */ - protected function filter(UpdateComponentGroupCommand $command) - { - $params = [ - 'name' => $command->name, - 'order' => $command->order, - 'collapsed' => $command->collapsed, - 'visible' => $command->visible, - ]; - - return array_filter($params, function ($val) { - return $val !== null; - }); - } -} diff --git a/app/Bus/Handlers/Commands/Incident/CreateIncidentCommandHandler.php b/app/Bus/Handlers/Commands/Incident/CreateIncidentCommandHandler.php deleted file mode 100644 index e69d470e..00000000 --- a/app/Bus/Handlers/Commands/Incident/CreateIncidentCommandHandler.php +++ /dev/null @@ -1,197 +0,0 @@ - - */ -class CreateIncidentCommandHandler -{ - use StoresMeta; - - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * The date factory instance. - * - * @var \CachetHQ\Cachet\Services\Dates\DateFactory - */ - protected $dates; - - protected $twigConfig; - - /** - * Create a new create incident command handler instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * @param \CachetHQ\Cachet\Services\Dates\DateFactory $dates - * - * @return void - */ - public function __construct(Guard $auth, DateFactory $dates) - { - $this->auth = $auth; - $this->dates = $dates; - - $this->twigConfig = config('cachet.twig'); - } - - /** - * Handle the create incident command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Incident\CreateIncidentCommand $command - * - * @return \CachetHQ\Cachet\Models\Incident - */ - public function handle(CreateIncidentCommand $command) - { - $data = [ - 'user_id' => $this->auth->user()->id, - 'name' => $command->name, - 'status' => $command->status, - 'visible' => $command->visible, - 'stickied' => $command->stickied, - ]; - - if ($template = IncidentTemplate::where('slug', '=', $command->template)->first()) { - $data['message'] = $this->parseTemplate($template, $command); - } else { - $data['message'] = $command->message; - } - - // Link with the component. - if ($command->component_id) { - $data['component_id'] = $command->component_id; - } - - // The incident occurred at a different time. - if ($occurredAt = $command->occurred_at) { - if ($date = $this->dates->create('Y-m-d H:i', $occurredAt)) { - $data['occurred_at'] = $date; - } else { - throw new InvalidIncidentTimestampException("Unable to pass timestamp {$occurredAt}"); - } - } else { - $data['occurred_at'] = Carbon::now(); - } - - // Create the incident - $incident = Incident::create($data); - - // Store any meta? - if ($meta = $command->meta) { - $this->storeMeta($command->meta, 'incidents', $incident->id); - } - - // Update the component. - if ($component = Component::find($command->component_id)) { - execute(new UpdateComponentCommand( - Component::find($command->component_id), - null, - null, - $command->component_status, - null, - null, - null, - null, - null, - false - )); - } - - event(new IncidentWasCreatedEvent($this->auth->user(), $incident, (bool) $command->notify)); - - return $incident; - } - - protected function sandboxedTwigTemplateData(string $templateData) - { - if (!$templateData) { - return ''; - } - - $policy = new \Twig\Sandbox\SecurityPolicy( - $this->twigConfig['tags'], - $this->twigConfig['filters'], - $this->twigConfig['methods'], - $this->twigConfig['props'], - $this->twigConfig['functions'] - ); - - $sandbox = new \Twig\Extension\SandboxExtension($policy); - - $templateBasicLoader = new Twig_Loader_Array([ - 'firstStageLoader' => $templateData, - ]); - - $sandBoxBasicLoader = new Twig_Loader_Array([ - 'secondStageLoader' => '{% sandbox %}{% include "firstStageLoader" %} {% endsandbox %}', - ]); - - $hardenedLoader = new \Twig\Loader\ChainLoader([$templateBasicLoader, $sandBoxBasicLoader]); - $twig = new Twig_Environment($hardenedLoader); - $twig->addExtension($sandbox); - - return $twig; - } - - /** - * Compiles an incident template into an incident message. - * - * @param \CachetHQ\Cachet\Models\IncidentTemplate $template - * @param \CachetHQ\Cachet\Bus\Commands\Incident\CreateIncidentCommand $command - * - * @return string - */ - protected function parseTemplate(IncidentTemplate $template, CreateIncidentCommand $command) - { - $template = $this->sandboxedTwigTemplateData($template->template); - - $vars = array_merge($command->template_vars, [ - 'incident' => [ - 'name' => $command->name, - 'status' => $command->status, - 'message' => $command->message, - 'visible' => $command->visible, - 'notify' => $command->notify, - 'stickied' => $command->stickied, - 'occurred_at' => $command->occurred_at, - 'component' => Component::find($command->component_id) ?: null, - 'component_status' => $command->component_status, - ], - ]); - - return $template->render('secondStageLoader', $vars); - } -} diff --git a/app/Bus/Handlers/Commands/Incident/RemoveIncidentCommandHandler.php b/app/Bus/Handlers/Commands/Incident/RemoveIncidentCommandHandler.php deleted file mode 100644 index 5fa7fbf3..00000000 --- a/app/Bus/Handlers/Commands/Incident/RemoveIncidentCommandHandler.php +++ /dev/null @@ -1,54 +0,0 @@ -auth = $auth; - } - - /** - * Handle the remove incident command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Incident\RemoveIncidentCommand $command - * - * @return void - */ - public function handle(RemoveIncidentCommand $command) - { - $incident = $command->incident; - - event(new IncidentWasRemovedEvent($this->auth->user(), $incident)); - - $incident->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php b/app/Bus/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php deleted file mode 100644 index 1bece52a..00000000 --- a/app/Bus/Handlers/Commands/Incident/UpdateIncidentCommandHandler.php +++ /dev/null @@ -1,202 +0,0 @@ - - */ -class UpdateIncidentCommandHandler -{ - use StoresMeta; - - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * The date factory instance. - * - * @var \CachetHQ\Cachet\Services\Dates\DateFactory - */ - protected $dates; - - /** - * Twig configuration array. - */ - protected $twigConfig; - - /** - * Create a new update incident command handler instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * @param \CachetHQ\Cachet\Services\Dates\DateFactory $dates - * - * @return void - */ - public function __construct(Guard $auth, DateFactory $dates) - { - $this->auth = $auth; - $this->dates = $dates; - - $this->twigConfig = $twigConfig = config('cachet.twig'); - } - - /** - * Handle the update incident command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Incident\UpdateIncidentCommand $command - * - * @return \CachetHQ\Cachet\Models\Incident - */ - public function handle(UpdateIncidentCommand $command) - { - if ($template = IncidentTemplate::where('slug', '=', $command->template)->first()) { - $command->message = $this->parseTemplate($template, $command); - } - - $incident = $command->incident; - $incident->fill($this->filter($command)); - - // The incident occurred at a different time. - if ($occurredAt = $command->occurred_at) { - if ($date = $this->dates->create('Y-m-d H:i', $occurredAt)) { - $incident->fill(['occurred_at' => $date]); - } else { - throw new InvalidIncidentTimestampException("Unable to pass timestamp {$occurredAt}"); - } - } - - // Rather than making lots of updates, just fill and save. - $incident->save(); - - // Store any meta? - if ($meta = $command->meta) { - $this->storeMeta($command->meta, 'incidents', $incident->id); - } - - // Update the component. - if ($component = Component::find($command->component_id)) { - execute(new UpdateComponentCommand( - Component::find($command->component_id), - null, - null, - $command->component_status, - null, - null, - null, - null, - null, - false - )); - } - - event(new IncidentWasUpdatedEvent($this->auth->user(), $incident)); - - return $incident; - } - - /** - * Filter the command data. - * - * @param \CachetHQ\Cachet\Bus\Commands\Incident\UpdateIncidentCommand $command - * - * @return array - */ - protected function filter(UpdateIncidentCommand $command) - { - $params = [ - 'name' => $command->name, - 'status' => $command->status, - 'message' => $command->message, - 'visible' => $command->visible, - 'stickied' => $command->stickied, - 'component_id' => $command->component_id, - 'component_status' => $command->component_status, - 'notify' => $command->notify, - ]; - - return array_filter($params, function ($val) { - return $val !== null; - }); - } - - protected function sandboxedTwigTemplateData(string $templateData) - { - $policy = new \Twig\Sandbox\SecurityPolicy( - $this->twigConfig['tags'], - $this->twigConfig['filters'], - $this->twigConfig['methods'], - $this->twigConfig['props'], - $this->twigConfig['functions'] - ); - $sandbox = new \Twig\Extension\SandboxExtension($policy); - - $templateBasicLoader = new \Twig\Loader\ArrayLoader([ - 'firstStageLoader' => $templateData, - ]); - - $sandBoxBasicLoader = new \Twig\Loader\ArrayLoader([ - 'secondStageLoader' => '{% sandbox %}{% include "firstStageLoader" %} {% endsandbox %}', - ]); - - $hardenedLoader = new \Twig\Loader\ChainLoader([$templateBasicLoader, $sandBoxBasicLoader]); - $twig = new \Twig\Environment($hardenedLoader); - $twig->addExtension($sandbox); - - return $twig; - } - - /** - * Compiles an incident template into an incident message. - * - * @param \CachetHQ\Cachet\Models\IncidentTemplate $template - * @param \CachetHQ\Cachet\Bus\Commands\Incident\UpdateIncidentCommand $command - * - * @return string - */ - protected function parseTemplate(IncidentTemplate $template, UpdateIncidentCommand $command) - { - $template = $this->sandboxedTwigTemplateData($template->template); - - $vars = array_merge($command->template_vars, [ - 'incident' => [ - 'name' => $command->name, - 'status' => $command->status, - 'message' => $command->message, - 'visible' => $command->visible, - 'notify' => $command->notify, - 'stickied' => $command->stickied, - 'occurred_at' => $command->occurred_at, - 'component' => Component::find($command->component_id) ?: null, - 'component_status' => $command->component_status, - ], - ]); - - return $template->render('secondStageLoader', $vars); - } -} diff --git a/app/Bus/Handlers/Commands/IncidentUpdate/CreateIncidentUpdateCommandHandler.php b/app/Bus/Handlers/Commands/IncidentUpdate/CreateIncidentUpdateCommandHandler.php deleted file mode 100644 index 20dd2c84..00000000 --- a/app/Bus/Handlers/Commands/IncidentUpdate/CreateIncidentUpdateCommandHandler.php +++ /dev/null @@ -1,85 +0,0 @@ - - */ -class CreateIncidentUpdateCommandHandler -{ - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new report incident update command handler instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - - /** - * Handle the report incident command. - * - * @param \CachetHQ\Cachet\Bus\Commands\IncidentUpdate\CreateIncidentUpdateCommand $command - * - * @return \CachetHQ\Cachet\Models\IncidentUpdate - */ - public function handle(CreateIncidentUpdateCommand $command) - { - $data = [ - 'incident_id' => $command->incident->id, - 'status' => $command->status, - 'message' => $command->message, - 'user_id' => $command->user->id, - ]; - - // Create the incident update. - $update = IncidentUpdate::create($data); - - // Update the original incident with the new status. - execute(new UpdateIncidentCommand( - $command->incident, - null, - $command->status, - null, - null, - null, - null, - null, - null, - null, - null, - [] - )); - - event(new IncidentUpdateWasReportedEvent($this->auth->user(), $update)); - - return $update; - } -} diff --git a/app/Bus/Handlers/Commands/IncidentUpdate/RemoveIncidentUpdateCommandHandler.php b/app/Bus/Handlers/Commands/IncidentUpdate/RemoveIncidentUpdateCommandHandler.php deleted file mode 100644 index ee5cc5b7..00000000 --- a/app/Bus/Handlers/Commands/IncidentUpdate/RemoveIncidentUpdateCommandHandler.php +++ /dev/null @@ -1,59 +0,0 @@ - - */ -class RemoveIncidentUpdateCommandHandler -{ - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new remove incident update command handler instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - - /** - * Handle the remove incident update command. - * - * @param \CachetHQ\Cachet\Bus\Commands\IncidentUpdate\RemoveIncidentUpdateCommand $command - * - * @return void - */ - public function handle(RemoveIncidentUpdateCommand $command) - { - $update = $command->incidentUpdate; - - event(new IncidentUpdateWasRemovedEvent($this->auth->user(), $update)); - - $update->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/IncidentUpdate/UpdateIncidentUpdateCommandHandler.php b/app/Bus/Handlers/Commands/IncidentUpdate/UpdateIncidentUpdateCommandHandler.php deleted file mode 100644 index c3086ea7..00000000 --- a/app/Bus/Handlers/Commands/IncidentUpdate/UpdateIncidentUpdateCommandHandler.php +++ /dev/null @@ -1,79 +0,0 @@ - - */ -class UpdateIncidentUpdateCommandHandler -{ - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new update incident update command handler instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - - /** - * Handle the update incident update command. - * - * @param \CachetHQ\Cachet\Bus\Commands\IncidentUpdate\UpdateIncidentUpdateCommand $command - * - * @return \CachetHQ\Cachet\Models\IncidentUpdate - */ - public function handle(UpdateIncidentUpdateCommand $command) - { - $command->update->update($this->filter($command)); - - event(new IncidentUpdateWasUpdatedEvent($this->auth->user(), $command->update)); - - return $command->update; - } - - /** - * Filter the command data. - * - * @param \CachetHQ\Cachet\Bus\Commands\IncidentUpdate\UpdateIncidentUpdateCommand $command - * - * @return array - */ - protected function filter(UpdateIncidentUpdateCommand $command) - { - $params = [ - 'status' => $command->status, - 'message' => $command->message, - 'user_id' => $command->user->id, - ]; - - return array_filter($params, function ($val) { - return $val !== null; - }); - } -} diff --git a/app/Bus/Handlers/Commands/Invite/ClaimInviteCommandHandler.php b/app/Bus/Handlers/Commands/Invite/ClaimInviteCommandHandler.php deleted file mode 100644 index bd2603be..00000000 --- a/app/Bus/Handlers/Commands/Invite/ClaimInviteCommandHandler.php +++ /dev/null @@ -1,35 +0,0 @@ -invite; - - $invite->update(['claimed_at' => Carbon::now()]); - - event(new InviteWasClaimedEvent($invite)); - } -} diff --git a/app/Bus/Handlers/Commands/Metric/CreateMetricCommandHandler.php b/app/Bus/Handlers/Commands/Metric/CreateMetricCommandHandler.php deleted file mode 100644 index cc410ce0..00000000 --- a/app/Bus/Handlers/Commands/Metric/CreateMetricCommandHandler.php +++ /dev/null @@ -1,67 +0,0 @@ -auth = $auth; - } - - /** - * Handle the add metric command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Metric\CreateMetricCommand $command - * - * @return \CachetHQ\Cachet\Models\Metric - */ - public function handle(CreateMetricCommand $command) - { - $metric = Metric::create([ - 'name' => $command->name, - 'suffix' => $command->suffix, - 'description' => $command->description, - 'default_value' => $command->default_value, - 'calc_type' => $command->calc_type, - 'display_chart' => $command->display_chart, - 'places' => $command->places, - 'default_view' => $command->default_view, - 'threshold' => $command->threshold, - 'order' => $command->order, - 'visible' => $command->visible, - ]); - - event(new MetricWasCreatedEvent($this->auth->user(), $metric)); - - return $metric; - } -} diff --git a/app/Bus/Handlers/Commands/Metric/CreateMetricPointCommandHandler.php b/app/Bus/Handlers/Commands/Metric/CreateMetricPointCommandHandler.php deleted file mode 100644 index 8fdbe1ca..00000000 --- a/app/Bus/Handlers/Commands/Metric/CreateMetricPointCommandHandler.php +++ /dev/null @@ -1,100 +0,0 @@ -auth = $auth; - $this->dates = $dates; - } - - /** - * Handle the add metric point command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Metric\CreateMetricPointCommand $command - * - * @return \CachetHQ\Cachet\Models\MetricPoint - */ - public function handle(CreateMetricPointCommand $command) - { - $metric = $command->metric; - $createdAt = $command->created_at; - - // Do we have an existing point with the same value? - $point = $this->findOrCreatePoint($command); - - $point->increment('counter', 1); - - event(new MetricPointWasCreatedEvent($this->auth->user(), $point)); - - return $point; - } - - /** - * Find or create a metric point. - * - * @param \CachetHQ\Cachet\Bus\Commands\Metric\CreateMetricPointCommand $command - * - * @return \CachetHQ\Cachet\Models\MetricPoint - */ - protected function findOrCreatePoint(CreateMetricPointCommand $command) - { - $buffer = Carbon::now()->subMinutes($command->metric->threshold - 1)->startOfMinute(); - - if ($point = MetricPoint::where('metric_id', '=', $command->metric->id)->where('value', '=', $command->value)->where('created_at', '>=', $buffer)->first()) { - return $point; - } - - $data = [ - 'metric_id' => $command->metric->id, - 'value' => $command->value, - 'counter' => 0, - ]; - - if ($command->created_at) { - $data['created_at'] = $this->dates->create('U', $command->created_at)->format('Y-m-d H:i:s'); - } - - return MetricPoint::create($data); - } -} diff --git a/app/Bus/Handlers/Commands/Metric/RemoveMetricCommandHandler.php b/app/Bus/Handlers/Commands/Metric/RemoveMetricCommandHandler.php deleted file mode 100644 index 478d2952..00000000 --- a/app/Bus/Handlers/Commands/Metric/RemoveMetricCommandHandler.php +++ /dev/null @@ -1,55 +0,0 @@ -auth = $auth; - } - - /** - * Handle the remove metric command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Metric\RemoveMetricCommand $command - * - * @return void - */ - public function handle(RemoveMetricCommand $command) - { - $metric = $command->metric; - - event(new MetricWasRemovedEvent($this->auth->user(), $metric)); - - $metric->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/Metric/RemoveMetricPointCommandHandler.php b/app/Bus/Handlers/Commands/Metric/RemoveMetricPointCommandHandler.php deleted file mode 100644 index 7679942e..00000000 --- a/app/Bus/Handlers/Commands/Metric/RemoveMetricPointCommandHandler.php +++ /dev/null @@ -1,55 +0,0 @@ -auth = $auth; - } - - /** - * Handle the remove metric point command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Metric\RemoveMetricPointCommand $command - * - * @return void - */ - public function handle(RemoveMetricPointCommand $command) - { - $metricPoint = $command->metricPoint; - - event(new MetricPointWasRemovedEvent($this->auth->user(), $metricPoint)); - - $metricPoint->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/Metric/UpdateMetricCommandHandler.php b/app/Bus/Handlers/Commands/Metric/UpdateMetricCommandHandler.php deleted file mode 100644 index 1ba3636b..00000000 --- a/app/Bus/Handlers/Commands/Metric/UpdateMetricCommandHandler.php +++ /dev/null @@ -1,85 +0,0 @@ -auth = $auth; - } - - /** - * Handle the update metric command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Metric\UpdateMetricCommand $command - * - * @return \CachetHQ\Cachet\Models\Metric - */ - public function handle(UpdateMetricCommand $command) - { - $metric = $command->metric; - - $metric->update($this->filter($command)); - - event(new MetricWasUpdatedEvent($this->auth->user(), $metric)); - - return $metric; - } - - /** - * Filter the command data. - * - * @param \CachetHQ\Cachet\Bus\Commands\Metric\UpdateMetricCommand $command - * - * @return array - */ - protected function filter(UpdateMetricCommand $command) - { - $params = [ - 'name' => $command->name, - 'suffix' => $command->suffix, - 'description' => $command->description, - 'default_value' => $command->default_value, - 'calc_type' => $command->calc_type, - 'display_chart' => $command->display_chart, - 'places' => $command->places, - 'default_view' => $command->default_view, - 'threshold' => $command->threshold, - 'order' => $command->order, - 'visible' => $command->visible, - ]; - - return array_filter($params, function ($val) { - return $val !== null; - }); - } -} diff --git a/app/Bus/Handlers/Commands/Metric/UpdateMetricPointCommandHandler.php b/app/Bus/Handlers/Commands/Metric/UpdateMetricPointCommandHandler.php deleted file mode 100644 index f61e1733..00000000 --- a/app/Bus/Handlers/Commands/Metric/UpdateMetricPointCommandHandler.php +++ /dev/null @@ -1,77 +0,0 @@ -auth = $auth; - $this->dates = $dates; - } - - /** - * Handle the update metric point command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Metric\UpdateMetricPointCommand $command - * - * @return \CachetHQ\Cachet\Models\MetricPoint - */ - public function handle(UpdateMetricPointCommand $command) - { - $point = $command->point; - $metric = $command->metric; - $createdAt = $command->created_at; - - $data = [ - 'metric_id' => $metric->id, - 'value' => (float) $command->value, - ]; - - if ($createdAt) { - $data['created_at'] = $this->dates->create('U', $createdAt)->format('Y-m-d H:i:s'); - } - - $point->update($data); - - event(new MetricPointWasUpdatedEvent($this->auth->user(), $point)); - - return $point; - } -} diff --git a/app/Bus/Handlers/Commands/Schedule/CreateScheduleCommandHandler.php b/app/Bus/Handlers/Commands/Schedule/CreateScheduleCommandHandler.php deleted file mode 100644 index 9069eadb..00000000 --- a/app/Bus/Handlers/Commands/Schedule/CreateScheduleCommandHandler.php +++ /dev/null @@ -1,107 +0,0 @@ - - */ -class CreateScheduleCommandHandler -{ - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * The date factory instance. - * - * @var \CachetHQ\Cachet\Services\Dates\DateFactory - */ - protected $dates; - - /** - * Create a new update schedule command handler instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * @param \CachetHQ\Cachet\Services\Dates\DateFactory $dates - * - * @return void - */ - public function __construct(Guard $auth, DateFactory $dates) - { - $this->auth = $auth; - $this->dates = $dates; - } - - /** - * Handle the create schedule command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Schedule\CreateScheduleCommand $command - * - * @return \CachetHQ\Cachet\Models\Schedule - */ - public function handle(CreateScheduleCommand $command) - { - try { - $schedule = Schedule::create($this->filter($command)); - event(new ScheduleWasCreatedEvent($this->auth->user(), $schedule, (bool) $command->notify)); - } catch (InvalidArgumentException $e) { - throw new ValidationException(new MessageBag([$e->getMessage()])); - } - - return $schedule; - } - - /** - * Filter the command data. - * - * @param \CachetHQ\Cachet\Bus\Commands\Schedule\CreateScheduleCommand $command - * - * @return array - */ - protected function filter(CreateScheduleCommand $command) - { - $scheduledAt = $this->dates->create('Y-m-d H:i', $command->scheduled_at); - - if ($completedAt = $command->completed_at) { - $completedAt = $this->dates->create('Y-m-d H:i', $command->completed_at); - } - - $params = [ - 'name' => $command->name, - 'message' => $command->message, - 'status' => $command->status, - 'scheduled_at' => $scheduledAt, - 'completed_at' => $completedAt, - 'notify' => $command->notify, - ]; - - $availableParams = array_filter($params, function ($val) { - return $val !== null && $val !== ''; - }); - - return $availableParams; - } -} diff --git a/app/Bus/Handlers/Commands/Schedule/DeleteScheduleCommandHandler.php b/app/Bus/Handlers/Commands/Schedule/DeleteScheduleCommandHandler.php deleted file mode 100644 index cf5f6227..00000000 --- a/app/Bus/Handlers/Commands/Schedule/DeleteScheduleCommandHandler.php +++ /dev/null @@ -1,59 +0,0 @@ - - */ -class DeleteScheduleCommandHandler -{ - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new delete schedule command handler instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - - /** - * Handle the delete schedule command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Schedule\DeleteScheduleCommand $command - * - * @return void - */ - public function handle(DeleteScheduleCommand $command) - { - $schedule = $command->schedule; - - event(new ScheduleWasRemovedEvent($this->auth->user(), $schedule)); - - $schedule->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/Schedule/UpdateScheduleCommandHandler.php b/app/Bus/Handlers/Commands/Schedule/UpdateScheduleCommandHandler.php deleted file mode 100644 index 72f74328..00000000 --- a/app/Bus/Handlers/Commands/Schedule/UpdateScheduleCommandHandler.php +++ /dev/null @@ -1,102 +0,0 @@ - - */ -class UpdateScheduleCommandHandler -{ - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * The date factory instance. - * - * @var \CachetHQ\Cachet\Services\Dates\DateFactory - */ - protected $dates; - - /** - * Create a new update schedule command handler instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * @param \CachetHQ\Cachet\Services\Dates\DateFactory $dates - * - * @return void - */ - public function __construct(Guard $auth, DateFactory $dates) - { - $this->auth = $auth; - $this->dates = $dates; - } - - /** - * Handle the update schedule command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Schedule\UpdateScheduleCommand $command - * - * @return \CachetHQ\Cachet\Models\Schedule - */ - public function handle(UpdateScheduleCommand $command) - { - $schedule = $command->schedule; - - $schedule->update($this->filter($command)); - - event(new ScheduleWasUpdatedEvent($this->auth->user(), $schedule)); - - return $schedule; - } - - /** - * Filter the command data. - * - * @param \CachetHQ\Cachet\Bus\Commands\Schedule\UpdateScheduleCommand $command - * - * @return array - */ - protected function filter(UpdateScheduleCommand $command) - { - $params = [ - 'name' => $command->name, - 'message' => $command->message, - 'status' => $command->status, - ]; - - if ($scheduledAt = $command->scheduled_at) { - $params['scheduled_at'] = $this->dates->create('Y-m-d H:i', $scheduledAt); - } - - if ($completedAt = $command->completed_at) { - $params['completed_at'] = $this->dates->create('Y-m-d H:i', $completedAt); - } - - $availableParams = array_filter($params, function ($val) { - return $val !== null; - }); - - return $availableParams; - } -} diff --git a/app/Bus/Handlers/Commands/Subscriber/SubscribeSubscriberCommandHandler.php b/app/Bus/Handlers/Commands/Subscriber/SubscribeSubscriberCommandHandler.php deleted file mode 100644 index 1dde43da..00000000 --- a/app/Bus/Handlers/Commands/Subscriber/SubscribeSubscriberCommandHandler.php +++ /dev/null @@ -1,72 +0,0 @@ - - * @author Joseph Cohen - * @author Graham Campbell - */ -class SubscribeSubscriberCommandHandler -{ - /** - * Handle the subscribe subscriber command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Subscriber\SubscribeSubscriberCommand $command - * - * @return \CachetHQ\Cachet\Models\Subscriber - */ - public function handle(SubscribeSubscriberCommand $command) - { - if ($subscriber = Subscriber::where('email', '=', $command->email)->first()) { - return $subscriber; - } - - $subscriber = Subscriber::firstOrCreate(['email' => $command->email]); - - // Decide what to subscribe the subscriber to. - if ($subscriptions = $command->subscriptions) { - $components = Component::whereIn('id', $subscriptions)->get(); - } else { - $components = Component::all(); - } - - $components->each(function ($component) use ($subscriber) { - Subscription::create([ - 'subscriber_id' => $subscriber->id, - 'component_id' => $component->id, - ]); - }); - - if ($command->verified) { - execute(new VerifySubscriberCommand($subscriber)); - } else { - $subscriber->notify(new VerifySubscriptionNotification()); - } - - event(new SubscriberHasSubscribedEvent($subscriber)); - - $subscriber->load('subscriptions'); - - return $subscriber; - } -} diff --git a/app/Bus/Handlers/Commands/Subscriber/UnsubscribeSubscriberCommandHandler.php b/app/Bus/Handlers/Commands/Subscriber/UnsubscribeSubscriberCommandHandler.php deleted file mode 100644 index be0dd021..00000000 --- a/app/Bus/Handlers/Commands/Subscriber/UnsubscribeSubscriberCommandHandler.php +++ /dev/null @@ -1,45 +0,0 @@ - - * @author Graham Campbell - * @author James Brooks - */ -class UnsubscribeSubscriberCommandHandler -{ - /** - * Handle the subscribe customer command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Subscriber\UnsubscribeSubscriberCommand $command - * - * @return void - */ - public function handle(UnsubscribeSubscriberCommand $command) - { - $subscriber = $command->subscriber; - - // First remove subscriptions. - $subscriber->subscriptions()->delete(); - - event(new SubscriberHasUnsubscribedEvent($subscriber)); - - // Then remove the subscriber. - $subscriber->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/Subscriber/UnsubscribeSubscriptionCommandHandler.php b/app/Bus/Handlers/Commands/Subscriber/UnsubscribeSubscriptionCommandHandler.php deleted file mode 100644 index 55869119..00000000 --- a/app/Bus/Handlers/Commands/Subscriber/UnsubscribeSubscriptionCommandHandler.php +++ /dev/null @@ -1,35 +0,0 @@ -subscription; - - event(new SubscriberHasUnsubscribedEvent($subscription->subscriber)); - - $subscription->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/Subscriber/UpdateSubscriberSubscriptionCommandHandler.php b/app/Bus/Handlers/Commands/Subscriber/UpdateSubscriberSubscriptionCommandHandler.php deleted file mode 100644 index 5e8a1dd5..00000000 --- a/app/Bus/Handlers/Commands/Subscriber/UpdateSubscriberSubscriptionCommandHandler.php +++ /dev/null @@ -1,64 +0,0 @@ - - */ -class UpdateSubscriberSubscriptionCommandHandler -{ - /** - * Handle the subscribe subscriber command. - * - * @param \CachetHQ\Cachet\Bus\Commands\Subscriber\UpdateSubscriberSubscriptionCommand $command - * - * @return \CachetHQ\Cachet\Models\Subscriber - */ - public function handle(UpdateSubscriberSubscriptionCommand $command) - { - $subscriber = $command->subscriber; - $subscriptions = $command->subscriptions ?: []; - - $components = Component::enabled()->get(); - - $updateSubscriptions = $components->filter(function ($item) use ($subscriptions) { - return in_array($item->id, $subscriptions); - }); - - $subscriber->global = ($updateSubscriptions->count() === $components->count()); - - $subscriber->subscriptions()->delete(); - - if (!$updateSubscriptions->isEmpty()) { - $updateSubscriptions->each(function ($subscription) use ($subscriber) { - Subscription::firstOrCreate([ - 'subscriber_id' => $subscriber->id, - 'component_id' => $subscription->id, - ]); - }); - } - - $subscriber->save(); - - event(new SubscriberHasUpdatedSubscriptionsEvent($subscriber)); - - return $subscriber; - } -} diff --git a/app/Bus/Handlers/Commands/Subscriber/VerifySubscriberCommandHandler.php b/app/Bus/Handlers/Commands/Subscriber/VerifySubscriberCommandHandler.php deleted file mode 100644 index d56f928f..00000000 --- a/app/Bus/Handlers/Commands/Subscriber/VerifySubscriberCommandHandler.php +++ /dev/null @@ -1,37 +0,0 @@ -subscriber; - - // Mark the subscriber as verified. - $subscriber->update(['verified_at' => Carbon::now()]); - - event(new SubscriberHasVerifiedEvent($subscriber)); - } -} diff --git a/app/Bus/Handlers/Commands/System/Config/UpdateConfigCommandHandler.php b/app/Bus/Handlers/Commands/System/Config/UpdateConfigCommandHandler.php deleted file mode 100644 index ff7d1f4e..00000000 --- a/app/Bus/Handlers/Commands/System/Config/UpdateConfigCommandHandler.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ -class UpdateConfigCommandHandler -{ - /** - * Handle update config command handler instance. - * - * @param \CachetHQ\Cachet\Bus\Commands\System\Config\UpdateConfigCommand $command - * - * @return void - */ - public function handle(UpdateConfigCommand $command) - { - foreach ($command->values as $setting => $value) { - $this->writeEnv($setting, $value); - } - } - - /** - * Writes to the .env file with given parameters. - * - * @param string $key - * @param mixed $value - * - * @return void - */ - protected function writeEnv($key, $value) - { - $dir = app()->environmentPath(); - $file = app()->environmentFile(); - $path = "{$dir}/{$file}"; - - try { - (new Dotenv($dir, $file))->load(); - - $envKey = strtoupper($key); - $envValue = env($envKey) ?: 'null'; - - file_put_contents($path, str_replace( - "{$envKey}={$envValue}", - "{$envKey}={$value}", - file_get_contents($path) - )); - } catch (InvalidPathException $e) { - throw $e; - } - } -} diff --git a/app/Bus/Handlers/Commands/User/CreateUserCommandHandler.php b/app/Bus/Handlers/Commands/User/CreateUserCommandHandler.php deleted file mode 100644 index 9ae22e67..00000000 --- a/app/Bus/Handlers/Commands/User/CreateUserCommandHandler.php +++ /dev/null @@ -1,45 +0,0 @@ - - */ -class CreateUserCommandHandler -{ - /** - * Handle the add user command. - * - * @param \CachetHQ\Cachet\Bus\Commands\User\CreateUserCommand $command - * - * @return \CachetHQ\Cachet\Models\User - */ - public function handle(CreateUserCommand $command) - { - $user = User::create([ - 'username' => $command->username, - 'password' => $command->password, - 'email' => $command->email, - 'level' => $command->level, - ]); - - event(new UserWasCreatedEvent($user)); - - return $user; - } -} diff --git a/app/Bus/Handlers/Commands/User/GenerateApiTokenCommandHandler.php b/app/Bus/Handlers/Commands/User/GenerateApiTokenCommandHandler.php deleted file mode 100644 index f7b8ab53..00000000 --- a/app/Bus/Handlers/Commands/User/GenerateApiTokenCommandHandler.php +++ /dev/null @@ -1,35 +0,0 @@ -user; - - $user->update(['api_key' => User::generateApiKey()]); - - event(new UserRegeneratedApiTokenEvent($user)); - } -} diff --git a/app/Bus/Handlers/Commands/User/InviteUserCommandHandler.php b/app/Bus/Handlers/Commands/User/InviteUserCommandHandler.php deleted file mode 100644 index 164a4220..00000000 --- a/app/Bus/Handlers/Commands/User/InviteUserCommandHandler.php +++ /dev/null @@ -1,45 +0,0 @@ - - */ -class InviteUserCommandHandler -{ - /** - * Handle the invite team member command. - * - * @param \CachetHQ\Cachet\Bus\Commands\User\InviteUserCommand $command - * - * @return void - */ - public function handle(InviteUserCommand $command) - { - foreach ($command->emails as $email) { - $invite = Invite::create([ - 'email' => $email, - ]); - - $invite->notify(new InviteUserNotification()); - - event(new UserWasInvitedEvent($invite)); - } - } -} diff --git a/app/Bus/Handlers/Commands/User/RemoveUserCommandHandler.php b/app/Bus/Handlers/Commands/User/RemoveUserCommandHandler.php deleted file mode 100644 index 9ba2f1cb..00000000 --- a/app/Bus/Handlers/Commands/User/RemoveUserCommandHandler.php +++ /dev/null @@ -1,35 +0,0 @@ -user; - - event(new UserWasRemovedEvent($user)); - - $user->delete(); - } -} diff --git a/app/Bus/Handlers/Commands/User/SignupUserCommandHandler.php b/app/Bus/Handlers/Commands/User/SignupUserCommandHandler.php deleted file mode 100644 index bb274a2f..00000000 --- a/app/Bus/Handlers/Commands/User/SignupUserCommandHandler.php +++ /dev/null @@ -1,40 +0,0 @@ - $command->username, - 'password' => $command->password, - 'email' => $command->email, - 'level' => User::LEVEL_USER, - ]); - - event(new UserWasCreatedEvent($user)); - - return $user; - } -} diff --git a/app/Bus/Handlers/Commands/User/WelcomeUserCommandHandler.php b/app/Bus/Handlers/Commands/User/WelcomeUserCommandHandler.php deleted file mode 100644 index d0f1e505..00000000 --- a/app/Bus/Handlers/Commands/User/WelcomeUserCommandHandler.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class WelcomeUserCommandHandler -{ - /** - * Handle the welcome user command. - * - * @param \CachetHQ\Cachet\Bus\Commands\User\WelcomeUserCommand $command - * - * @return void - */ - public function handle(WelcomeUserCommand $command) - { - $command->user->update(['welcomed' => true]); - - event(new UserWasWelcomedEvent($command->user)); - } -} diff --git a/app/Bus/Handlers/Events/ActionStorageHandler.php b/app/Bus/Handlers/Events/ActionStorageHandler.php deleted file mode 100644 index 3ccc7a0f..00000000 --- a/app/Bus/Handlers/Events/ActionStorageHandler.php +++ /dev/null @@ -1,49 +0,0 @@ - - * @author James Brooks - */ -class ActionStorageHandler -{ - /** - * Handle the any actions that need storing. - * - * @param \CachetHQ\Cachet\Bus\Events\ActionInterface $event - * - * @return void - */ - public function handle(ActionInterface $event) - { - $data = $event->getAction(); - - $action = [ - 'class_name' => get_class($event), - 'user_id' => $data['user']->id, - 'username' => $data['user']->username, - 'description' => $data['description'], - ]; - - if (isset($data['information'])) { - $action['information'] = $data['information']; - } - - Action::create($action); - } -} diff --git a/app/Bus/Handlers/Events/Beacon/LogBeaconFailedHandler.php b/app/Bus/Handlers/Events/Beacon/LogBeaconFailedHandler.php deleted file mode 100644 index f69cf49f..00000000 --- a/app/Bus/Handlers/Events/Beacon/LogBeaconFailedHandler.php +++ /dev/null @@ -1,34 +0,0 @@ - - */ -class LogBeaconFailedHandler -{ - /** - * Handle the event. - * - * @param \CachetHQ\Cachet\Bus\Events\Beacon\BeaconFailedToSendEvent $event - * - * @return void - */ - public function handle(BeaconFailedToSendEvent $event) - { - logger('Beacon failed.'); - } -} diff --git a/app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php b/app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php deleted file mode 100644 index 5c64caf7..00000000 --- a/app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php +++ /dev/null @@ -1,40 +0,0 @@ - - */ -class CleanupComponentSubscriptionsHandler -{ - /** - * Handle the event. - * - * @param \CachetHQ\Cachet\Bus\Events\Component\ComponentWasRemovedEvent $event - * - * @return void - */ - public function handle(ComponentWasRemovedEvent $event) - { - $component = $event->component; - $subscription = Subscription::forComponent($component->id); - - // Cleanup the subscriptions. - $subscription->delete(); - } -} diff --git a/app/Bus/Handlers/Events/Component/SendComponentUpdateEmailNotificationHandler.php b/app/Bus/Handlers/Events/Component/SendComponentUpdateEmailNotificationHandler.php deleted file mode 100644 index 6ecdbfca..00000000 --- a/app/Bus/Handlers/Events/Component/SendComponentUpdateEmailNotificationHandler.php +++ /dev/null @@ -1,92 +0,0 @@ -system = $system; - $this->subscriber = $subscriber; - } - - /** - * Handle the event. - * - * @param \CachetHQ\Cachet\Bus\Events\Component\ComponentStatusWasChangedEvent $event - * - * @return void - */ - public function handle(ComponentStatusWasChangedEvent $event) - { - $component = $event->component; - - // If we're silent or the notifications are suppressed don't send this. - if ($event->silent || !$this->system->canNotifySubscribers()) { - return; - } - - // Don't email anything if the status hasn't changed. - if ($event->original_status === $event->new_status) { - return; - } - - // First notify all global subscribers. - $globalSubscribers = $this->subscriber->isVerified()->isGlobal()->get(); - - $globalSubscribers->each(function ($subscriber) use ($component, $event) { - $subscriber->notify(new ComponentStatusChangedNotification($component, $event->new_status)); - }); - - $notified = $globalSubscribers->pluck('id')->all(); - - // Notify the remaining component specific subscribers. - $componentSubscribers = $this->subscriber - ->isVerified() - ->forComponent($component->id) - ->get() - ->reject(function ($subscriber) use ($notified) { - return in_array($subscriber->id, $notified); - }); - - $componentSubscribers->each(function ($subscriber) use ($component, $event) { - $subscriber->notify(new ComponentStatusChangedNotification($component, $event->new_status)); - }); - } -} diff --git a/app/Bus/Handlers/Events/Incident/SendIncidentEmailNotificationHandler.php b/app/Bus/Handlers/Events/Incident/SendIncidentEmailNotificationHandler.php deleted file mode 100644 index d30916d1..00000000 --- a/app/Bus/Handlers/Events/Incident/SendIncidentEmailNotificationHandler.php +++ /dev/null @@ -1,93 +0,0 @@ -system = $system; - $this->subscriber = $subscriber; - } - - /** - * Handle the event. - * - * @param \CachetHQ\Cachet\Bus\Events\Incident\IncidentWasCreatedEvent $event - * - * @return void - */ - public function handle(IncidentWasCreatedEvent $event) - { - $incident = $event->incident; - - if (!$event->notify || !$this->system->canNotifySubscribers()) { - return false; - } - - // Only send emails for public incidents. - if (!$incident->visible) { - return; - } - - // First notify all global subscribers. - $globalSubscribers = $this->subscriber->isVerified()->isGlobal()->get(); - - $globalSubscribers->each(function ($subscriber) use ($incident) { - $subscriber->notify(new NewIncidentNotification($incident)); - }); - - if (!$incident->component) { - return; - } - - $notified = $globalSubscribers->pluck('id')->all(); - - // Notify the remaining component specific subscribers. - $componentSubscribers = $this->subscriber - ->isVerified() - ->forComponent($incident->component->id) - ->get() - ->reject(function ($subscriber) use ($notified) { - return in_array($subscriber->id, $notified); - })->each(function ($subscriber) use ($incident) { - $subscriber->notify(new NewIncidentNotification($incident)); - }); - } -} diff --git a/app/Bus/Handlers/Events/IncidentUpdate/SendIncidentUpdateEmailNotificationHandler.php b/app/Bus/Handlers/Events/IncidentUpdate/SendIncidentUpdateEmailNotificationHandler.php deleted file mode 100644 index 44760481..00000000 --- a/app/Bus/Handlers/Events/IncidentUpdate/SendIncidentUpdateEmailNotificationHandler.php +++ /dev/null @@ -1,90 +0,0 @@ -system = $system; - $this->subscriber = $subscriber; - } - - /** - * Handle the event. - * - * @param \CachetHQ\Cachet\Bus\Events\IncidentUpdate\IncidentUpdateWasReportedEvent $event - * - * @return void - */ - public function handle(IncidentUpdateWasReportedEvent $event) - { - $update = $event->update; - $incident = $update->incident; - - // Only send emails for public incidents while the system is not under scheduled maintenance. - if (!$incident->visible || !$this->system->canNotifySubscribers()) { - return; - } - - // First notify all global subscribers. - $globalSubscribers = $this->subscriber->isVerified()->isGlobal()->get(); - - $globalSubscribers->each(function ($subscriber) use ($update) { - $subscriber->notify(new IncidentUpdatedNotification($update)); - }); - - if (!$incident->component) { - return; - } - - $notified = $globalSubscribers->pluck('id')->all(); - - // Notify the remaining component specific subscribers. - $componentSubscribers = $this->subscriber - ->isVerified() - ->forComponent($incident->component->id) - ->get() - ->reject(function ($subscriber) use ($notified) { - return in_array($subscriber->id, $notified); - })->each(function ($subscriber) use ($update) { - $subscriber->notify(new IncidentUpdatedNotification($update)); - }); - } -} diff --git a/app/Bus/Handlers/Events/Schedule/SendScheduleEmailNotificationHandler.php b/app/Bus/Handlers/Events/Schedule/SendScheduleEmailNotificationHandler.php deleted file mode 100644 index 84e9db31..00000000 --- a/app/Bus/Handlers/Events/Schedule/SendScheduleEmailNotificationHandler.php +++ /dev/null @@ -1,63 +0,0 @@ - - */ -class SendScheduleEmailNotificationHandler -{ - /** - * The subscriber instance. - * - * @var \CachetHQ\Cachet\Models\Subscriber - */ - protected $subscriber; - - /** - * Create a new send schedule email notification handler. - * - * @param \CachetHQ\Cachet\Models\Subscriber $subscriber - * - * @return void - */ - public function __construct(Subscriber $subscriber) - { - $this->subscriber = $subscriber; - } - - /** - * Handle the event. - * - * @param \CachetHQ\Cachet\Bus\Events\Schedule\ScheduleEventInterface $event - * - * @return void - */ - public function handle(ScheduleEventInterface $event) - { - $schedule = $event->schedule; - if (!$event->notify) { - return false; - } - - // First notify all global subscribers. - $globalSubscribers = $this->subscriber->isVerified()->isGlobal()->get()->each(function ($subscriber) use ($schedule) { - $subscriber->notify(new NewScheduleNotification($schedule)); - }); - } -} diff --git a/app/Bus/Handlers/Jobs/System/SendBeaconJobHandler.php b/app/Bus/Handlers/Jobs/System/SendBeaconJobHandler.php deleted file mode 100644 index da0eb87d..00000000 --- a/app/Bus/Handlers/Jobs/System/SendBeaconJobHandler.php +++ /dev/null @@ -1,64 +0,0 @@ - - */ -class SendBeaconJobHandler -{ - /** - * The beacon instance. - * - * @var \CachetHQ\Cachet\Integrations\Contracts\Beacon - */ - protected $beacon; - - /** - * Create a new send beacon job handler instance. - * - * @param \CachetHQ\Cachet\Integrations\Contracts\Beacon $beacon - * - * @return void - */ - public function __construct(Beacon $beacon) - { - $this->beacon = $beacon; - } - - /** - * Handle the send beacon job. - * - * @param \CachetHQ\Cachet\Bus\Jobs\System\SendBeaconJob $job - * - * @return void - */ - public function handle(SendBeaconJob $job) - { - // Don't send anything if the installation explicitly prevents us. - if (!$this->beacon->enabled()) { - return; - } - - try { - $this->beacon->send(); - } catch (Exception $e) { - // - } - } -} diff --git a/app/Bus/Handlers/Traits/StoresMeta.php b/app/Bus/Handlers/Traits/StoresMeta.php deleted file mode 100644 index e5272ba5..00000000 --- a/app/Bus/Handlers/Traits/StoresMeta.php +++ /dev/null @@ -1,81 +0,0 @@ - $value) { - $modelInstance = call_user_func( - [$metaModel, 'firstOrNew'], - [ - 'key' => $key, - 'meta_type' => $metaType, - 'meta_id' => $metaId, - ] - ); - - $value = $this->removeEmptyValues($value); - if (!empty($value)) { - $modelInstance->setAttribute('value', $value); - $modelInstance->save(); - continue; - } - - // The value is empty, remove the row - if ($modelInstance->exists) { - $modelInstance->delete(); - } - } - } - - /** - * Determine if a Value is empty. - * - * @param mixed $values - * - * @return array|mixed - */ - protected function removeEmptyValues($values) - { - if (!is_array($values)) { - return empty($values) ? null : $values; - } - - foreach ($values as $key => $value) { - if (!empty($value)) { - continue; - } - unset($values[$key]); - } - - return $values; - } -} diff --git a/app/Bus/Jobs/System/SendBeaconJob.php b/app/Bus/Jobs/System/SendBeaconJob.php deleted file mode 100644 index 577aa810..00000000 --- a/app/Bus/Jobs/System/SendBeaconJob.php +++ /dev/null @@ -1,24 +0,0 @@ - - */ -final class SendBeaconJob implements ShouldQueue -{ - // -} diff --git a/app/Bus/Middleware/UseDatabaseTransactions.php b/app/Bus/Middleware/UseDatabaseTransactions.php deleted file mode 100644 index b0d48d74..00000000 --- a/app/Bus/Middleware/UseDatabaseTransactions.php +++ /dev/null @@ -1,38 +0,0 @@ - - */ -class UseDatabaseTransactions -{ - /** - * Handle the current command in the pipeline. - * - * @param mixed $command - * @param \Closure $next - * - * @return bool - */ - public function handle($command, Closure $next) - { - return DB::transaction(function () use ($command, $next) { - return $next($command); - }); - } -} diff --git a/app/Composers/AppComposer.php b/app/Composers/AppComposer.php deleted file mode 100644 index 822b30f2..00000000 --- a/app/Composers/AppComposer.php +++ /dev/null @@ -1,98 +0,0 @@ - - * @author Graham Campbell - */ -class AppComposer -{ - /** - * The date factory instance. - * - * @var \CachetHQ\Cachet\Services\Dates\DateFactory - */ - protected $dates; - - /** - * The illuminate config instance. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * Create a new app composer instance. - * - * @param \CachetHQ\Cachet\Services\Dates\DateFactory $dates - * @param \Illuminate\Contracts\Config\Repository $config - * - * @return void - */ - public function __construct(DateFactory $dates, Repository $config) - { - $this->dates = $dates; - $this->config = $config; - } - - /** - * Index page view composer. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - if ($this->config->get('setting.app_about')) { - $about = Markdown::convertToHtml($this->config->get('setting.app_about')); - } else { - $about = ''; - } - - $view->withAboutApp($about); - $view->withAppAnalytics($this->config->get('setting.app_analytics')); - $view->withAppAnalyticsGoSquared($this->config->get('setting.app_analytics_gs')); - $view->withAppAnalyticsPiwikUrl($this->config->get('setting.app_analytics_piwik_url')); - $view->withAppAnalyticsPiwikSiteId($this->config->get('setting.app_analytics_piwik_site_id')); - $view->withAppBanner($this->config->get('setting.app_banner')); - $view->withAppBannerStyleFullWidth($this->config->get('setting.style_fullwidth_header')); - $view->withAppBannerType($this->config->get('setting.app_banner_type')); - $view->withAppDomain($this->config->get('setting.app_domain')); - $view->withAppGraphs($this->config->get('setting.display_graphs')); - $view->withAppLocale($this->config->get('setting.app_locale')); - $view->withAppStylesheet($this->config->get('setting.stylesheet')); - $view->withAppUrl($this->config->get('app.url')); - $view->withAppHeader($this->config->get('setting.header')); - $view->withAppFooter($this->config->get('setting.footer')); - $view->withAppName($this->config->get('setting.app_name')); - $view->withShowSupport($this->config->get('setting.show_support')); - $view->withAutomaticLocalization($this->config->get('setting.automatic_localization')); - $view->withEnableExternalDependencies($this->config->get('setting.enable_external_dependencies')); - $view->withShowTimezone($this->config->get('setting.show_timezone')); - $view->withAppRefreshRate($this->config->get('setting.app_refresh_rate')); - $view->withTimezone($this->dates->getTimezone()); - $view->withSiteTitle($this->config->get('setting.app_name')); - $view->withFontSubset($this->config->get('langs.'.$this->config->get('app.locale').'.subset', 'latin')); - $view->withOnlyDisruptedDays($this->config->get('setting.only_disrupted_days')); - $view->withDashboardLink($this->config->get('setting.dashboard_login_link')); - $view->withEnableSubscribers($this->config->get('setting.enable_subscribers')); - } -} diff --git a/app/Composers/ComponentsComposer.php b/app/Composers/ComponentsComposer.php deleted file mode 100644 index 1fac9423..00000000 --- a/app/Composers/ComponentsComposer.php +++ /dev/null @@ -1,79 +0,0 @@ - - * @author Connor S. Parks - */ -class ComponentsComposer -{ - /** - * The user session object. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $guard; - - /** - * Creates a new components composer instance. - * - * @param \Illuminate\Contracts\Auth\Guard $guard - * - * @return void - */ - public function __construct(Guard $guard) - { - $this->guard = $guard; - } - - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $componentGroups = $this->getVisibleGroupedComponents(); - $ungroupedComponents = Component::ungrouped()->orderBy('status', 'desc')->get(); - - $view->withComponentGroups($componentGroups) - ->withUngroupedComponents($ungroupedComponents); - } - - /** - * Get visible grouped components. - * - * @return \Illuminate\Support\Collection - */ - protected function getVisibleGroupedComponents() - { - $componentGroupsBuilder = ComponentGroup::query(); - if (!$this->guard->check()) { - $componentGroupsBuilder->visible(); - } - - $usedComponentGroups = Component::grouped()->pluck('group_id'); - - return $componentGroupsBuilder->used($usedComponentGroups) - ->get(); - } -} diff --git a/app/Composers/CurrentUserComposer.php b/app/Composers/CurrentUserComposer.php deleted file mode 100644 index d7afe3b9..00000000 --- a/app/Composers/CurrentUserComposer.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @author James Brooks - * @author Graham Campbell - */ -class CurrentUserComposer -{ - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $view->withCurrentUser(AutoPresenter::decorate(Auth::user())); - } -} diff --git a/app/Composers/DashboardComposer.php b/app/Composers/DashboardComposer.php deleted file mode 100644 index c5ccef93..00000000 --- a/app/Composers/DashboardComposer.php +++ /dev/null @@ -1,108 +0,0 @@ - - * @author Graham Campbell - */ -class DashboardComposer -{ - /** - * The component count. - * - * @var int - */ - protected $componentCount; - - /** - * The incident count. - * - * @var int - */ - protected $incidentCount; - - /** - * The incident template count. - * - * @var int - */ - protected $incidentTemplateCount; - - /** - * The schedule count. - * - * @var int - */ - protected $scheduleCount; - - /** - * The subscriber count. - * - * @var int - */ - protected $subscriberCount; - - /** - * Create a new dashboard composer instance. - * - * @return void - */ - public function __construct() - { - if (is_null($this->componentCount)) { - $this->componentCount = Component::count(); - } - - if (is_null($this->incidentCount)) { - $this->incidentCount = Incident::count(); - } - - if (is_null($this->incidentTemplateCount)) { - $this->incidentTemplateCount = IncidentTemplate::count(); - } - - if (is_null($this->scheduleCount)) { - $this->scheduleCount = Schedule::count(); - } - - if (is_null($this->subscriberCount)) { - $this->subscriberCount = Subscriber::isVerified()->count(); - } - } - - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $view->withComponentCount($this->componentCount); - $view->withIncidentCount($this->incidentCount); - $view->withIncidentTemplateCount($this->incidentTemplateCount); - $view->withScheduleCount($this->scheduleCount); - $view->withSubscriberCount($this->subscriberCount); - $view->withIsWriteable(is_writable(app()->bootstrapPath().'/cachet')); - } -} diff --git a/app/Composers/MetricsComposer.php b/app/Composers/MetricsComposer.php deleted file mode 100644 index e6e32e9f..00000000 --- a/app/Composers/MetricsComposer.php +++ /dev/null @@ -1,92 +0,0 @@ - - * @author Connor S. Parks - */ -class MetricsComposer -{ - /** - * The illuminate config instance. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * The user session object. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $guard; - - /** - * Create a new metrics composer instance. - * - * @param \Illuminate\Contracts\Config\Repository $config - * @param \Illuminate\Contracts\Auth\Guard $guard - * - * @return void - */ - public function __construct(Repository $config, Guard $guard) - { - $this->config = $config; - $this->guard = $guard; - } - - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $displayMetrics = $this->config->get('setting.display_graphs'); - $metrics = $this->getVisibleMetrics($displayMetrics); - - $view->withDisplayMetrics($displayMetrics) - ->withMetrics($metrics); - } - - /** - * Get visible grouped components. - * - * @param bool $displayMetrics - * - * @return \Illuminate\Support\Collection|void - */ - protected function getVisibleMetrics($displayMetrics) - { - if (!$displayMetrics) { - return; - } - - $metrics = Metric::displayable(); - - if (!$this->guard->check()) { - $metrics->visible(); - } - - return $metrics->orderBy('order')->orderBy('id')->get(); - } -} diff --git a/app/Composers/ScheduledComposer.php b/app/Composers/ScheduledComposer.php deleted file mode 100644 index 0e65b4a8..00000000 --- a/app/Composers/ScheduledComposer.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @author Connor S. Parks - */ -class ScheduledComposer -{ - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $scheduledMaintenance = Schedule::uncompleted()->orderBy('scheduled_at')->get(); - - $view->withScheduledMaintenance($scheduledMaintenance); - } -} diff --git a/app/Composers/SettingsComposer.php b/app/Composers/SettingsComposer.php deleted file mode 100644 index aa0ff2fa..00000000 --- a/app/Composers/SettingsComposer.php +++ /dev/null @@ -1,80 +0,0 @@ - - */ -class SettingsComposer -{ - /** - * Array of cache drivers. - * - * @var string[] - */ - protected $cacheDrivers = [ - 'apc' => 'APC(u)', - 'array' => 'Array', - 'database' => 'Database', - 'file' => 'File', - 'memcached' => 'Memcached', - 'redis' => 'Redis', - ]; - - /** - * Array of cache drivers. - * - * @var string[] - */ - protected $mailDrivers = [ - 'smtp' => 'SMTP', - 'mail' => 'Mail', - 'sendmail' => 'Sendmail', - 'mailgun' => 'Mailgun', - 'mandrill' => 'Mandrill', - 'ses' => 'Amazon SES', - 'sparkpost' => 'SparkPost', - 'log' => 'Log (Testing)', - ]; - - /** - * Array of queue drivers. - * - * @var string[] - */ - protected $queueDrivers = [ - 'null' => 'None', - 'sync' => 'Synchronous', - 'database' => 'Database', - 'beanstalkd' => 'Beanstalk', - 'sqs' => 'Amazon SQS', - 'redis' => 'Redis', - ]; - - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $view->withCacheDrivers($this->cacheDrivers); - $view->withMailDrivers($this->mailDrivers); - $view->withQueueDrivers($this->queueDrivers); - } -} diff --git a/app/Composers/StatusComposer.php b/app/Composers/StatusComposer.php deleted file mode 100644 index 6b953343..00000000 --- a/app/Composers/StatusComposer.php +++ /dev/null @@ -1,59 +0,0 @@ - - * @author Connor S. Parks - */ -class StatusComposer -{ - /** - * The system instance. - * - * @var \CachetHQ\Cachet\Integrations\Contracts\System - */ - protected $system; - - /** - * Create a new status composer instance. - * - * @param \CachetHQ\Cachet\Integrations\Contracts\System $system - * - * @return void - */ - public function __construct(System $system) - { - $this->system = $system; - } - - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $status = $this->system->getStatus(); - - $view->withSystemStatus(Arr::get($status, 'system_status')); - $view->withSystemMessage(Arr::get($status, 'system_message')); - } -} diff --git a/app/Composers/StickiedComposer.php b/app/Composers/StickiedComposer.php deleted file mode 100644 index 82e357f3..00000000 --- a/app/Composers/StickiedComposer.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Connor S. Parks - * @author Antoine Girard - */ -class StickiedComposer -{ - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $stickiedIncidents = Incident::stickied()->orderBy('occurred_at', 'desc')->get()->groupBy(function (Incident $incident) { - return app(DateFactory::class)->make($incident->is_scheduled ? $incident->scheduled_at : $incident->occurred_at)->toDateString(); - }); - - $view->withStickiedIncidents($stickiedIncidents); - } -} diff --git a/app/Composers/ThemeComposer.php b/app/Composers/ThemeComposer.php deleted file mode 100644 index 0153a35f..00000000 --- a/app/Composers/ThemeComposer.php +++ /dev/null @@ -1,67 +0,0 @@ - - * @author Graham Campbell - */ -class ThemeComposer -{ - /** - * The illuminate config instance. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * Create a new theme composer. - * - * @param \Illuminate\Contracts\Config\Repository $config - * - * @return void - */ - public function __construct(Repository $config) - { - $this->config = $config; - } - - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $view->withThemeBackgroundColor($this->config->get('setting.style_background_color', '#F0F3F4')); - $view->withThemeBackgroundFills($this->config->get('setting.style_background_fills', '#FFFFFF')); - $view->withThemeBannerBackgroundColor($this->config->get('setting.style_banner_background_color', '')); - $view->withThemeBannerPadding($this->config->get('setting.style_banner_padding', '40px 0')); - $view->withThemeTextColor($this->config->get('setting.style_text_color', '#333333')); - $view->withThemeReds($this->config->get('setting.style_reds', '#FF6F6F')); - $view->withThemeBlues($this->config->get('setting.style_blues', '#3498DB')); - $view->withThemeGreens($this->config->get('setting.style_greens', '#7ED321')); - $view->withThemeYellows($this->config->get('setting.style_yellows', '#F7CA18')); - $view->withThemeOranges($this->config->get('setting.style_oranges', '#FF8800')); - $view->withThemeGreys($this->config->get('setting.style_greys', '#888888')); - $view->withThemeMetrics($this->config->get('setting.style_metrics', '#0DCCC0')); - $view->withThemeLinks($this->config->get('setting.style_links', '#7ED321')); - } -} diff --git a/app/Composers/TimelineComposer.php b/app/Composers/TimelineComposer.php deleted file mode 100644 index 0206a2dc..00000000 --- a/app/Composers/TimelineComposer.php +++ /dev/null @@ -1,35 +0,0 @@ - - * @author Connor S. Parks - */ -class TimelineComposer -{ - /** - * Bind data to the view. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - // ... - } -} diff --git a/app/Composers/TimezoneLocaleComposer.php b/app/Composers/TimezoneLocaleComposer.php deleted file mode 100644 index 5e3712d8..00000000 --- a/app/Composers/TimezoneLocaleComposer.php +++ /dev/null @@ -1,107 +0,0 @@ - - * @author James Brooks - * @author Graham Campbell - */ -class TimezoneLocaleComposer -{ - /** - * The illuminate config instance. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * Create a new timezone locale composer. - * - * @param \Illuminate\Contracts\Config\Repository $config - * - * @return void - */ - public function __construct(Repository $config) - { - $this->config = $config; - } - - /** - * Timezones and Locales composer. - * - * @param \Illuminate\Contracts\View\View $view - * - * @return void - */ - public function compose(View $view) - { - $enabledLangs = $this->config->get('langs'); - - $langs = array_map(function ($lang) use ($enabledLangs) { - $locale = basename($lang); - - return [$locale => Arr::get($enabledLangs, $locale, [ - 'name' => $locale, - 'subset' => null, - ])]; - }, glob(base_path('resources/lang').'/*')); - - $langs = call_user_func_array('array_merge', $langs); - - $regions = [ - 'UTC' => DateTimeZone::UTC, - 'Africa' => DateTimeZone::AFRICA, - 'America' => DateTimeZone::AMERICA, - 'Antarctica' => DateTimeZone::ANTARCTICA, - 'Arctic' => DateTimeZone::ARCTIC, - 'Asia' => DateTimeZone::ASIA, - 'Atlantic' => DateTimeZone::ATLANTIC, - 'Australia' => DateTimeZone::AUSTRALIA, - 'Europe' => DateTimeZone::EUROPE, - 'Indian' => DateTimeZone::INDIAN, - 'Pacific' => DateTimeZone::PACIFIC, - ]; - - $timezones = []; - - foreach ($regions as $name => $mask) { - $zones = DateTimeZone::listIdentifiers($mask); - - foreach ($zones as $timezone) { - // Lets sample the time there right now - $time = new DateTime(null, new DateTimeZone($timezone)); - - if ($timezone !== 'UTC') { - // Remove region name and add a sample time - $timezones[$name][$timezone] = substr($timezone, strlen($name) + 1).' - '.$time->format('H:i'); - } else { - $timezones[$name][$timezone] = 'UTC - '.$time->format('H:i'); - } - - $timezones[$name] = str_replace('_', ' ', $timezones[$name]); - } - } - - $view->withTimezones($timezones); - $view->withLangs($langs); - } -} diff --git a/app/Console/Commands/AppResetCommand.php b/app/Console/Commands/AppResetCommand.php deleted file mode 100644 index 3add76aa..00000000 --- a/app/Console/Commands/AppResetCommand.php +++ /dev/null @@ -1,76 +0,0 @@ - - */ -class AppResetCommand extends Command -{ - /** - * The name and signature of the console command. - * - * @var string - */ - protected $signature = 'app:reset'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Resets and installs the application'; - - /** - * The events instance. - * - * @var \Illuminate\Contracts\Events\Dispatcher - */ - protected $events; - - /** - * Create a new command instance. - * - * @return void - */ - public function __construct(Dispatcher $events) - { - $this->events = $events; - - parent::__construct(); - } - - /** - * Execute the console command. - * - * @return mixed - */ - public function handle() - { - $this->events->fire('command.resetting', $this); - $this->events->fire('command.generatekey', $this); - $this->events->fire('command.cacheconfig', $this); - $this->events->fire('command.cacheroutes', $this); - $this->events->fire('command.publishvendors', $this); - $this->events->fire('command.resetmigrations', $this); - $this->events->fire('command.runmigrations', $this); - $this->events->fire('command.runseeding', $this); - $this->events->fire('command.updatecache', $this); - $this->events->fire('command.extrastuff', $this); - $this->events->fire('command.reset', $this); - } -} diff --git a/app/Console/Commands/AppUpdateCommand.php b/app/Console/Commands/AppUpdateCommand.php deleted file mode 100644 index 1aa4bd97..00000000 --- a/app/Console/Commands/AppUpdateCommand.php +++ /dev/null @@ -1,73 +0,0 @@ - - */ -class AppUpdateCommand extends Command -{ - /** - * The name and signature of the console command. - * - * @var string - */ - protected $signature = 'app:update'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Updates the application'; - - /** - * The events instance. - * - * @var \Illuminate\Contracts\Events\Dispatcher - */ - protected $events; - - /** - * Create a new command instance. - * - * @return void - */ - public function __construct(Dispatcher $events) - { - $this->events = $events; - - parent::__construct(); - } - - /** - * Execute the console command. - * - * @return mixed - */ - public function handle() - { - $this->events->fire('command.updating', $this); - $this->events->fire('command.cacheconfig', $this); - $this->events->fire('command.cacheroutes', $this); - $this->events->fire('command.publishvendors', $this); - $this->events->fire('command.runmigrations', $this); - $this->events->fire('command.updatecache', $this); - $this->events->fire('command.extrastuff', $this); - $this->events->fire('command.updated', $this); - } -} diff --git a/app/Console/Commands/BeaconCommand.php b/app/Console/Commands/BeaconCommand.php deleted file mode 100644 index 27cad3f0..00000000 --- a/app/Console/Commands/BeaconCommand.php +++ /dev/null @@ -1,47 +0,0 @@ - - */ -class BeaconCommand extends Command -{ - /** - * The console command name. - * - * @var string - */ - protected $name = 'cachet:beacon'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Communicate with the Cachet Beacon server'; - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - dispatch(new SendBeaconJob()); - } -} diff --git a/app/Console/Commands/DemoMetricPointSeederCommand.php b/app/Console/Commands/DemoMetricPointSeederCommand.php deleted file mode 100644 index d4e16235..00000000 --- a/app/Console/Commands/DemoMetricPointSeederCommand.php +++ /dev/null @@ -1,101 +0,0 @@ - - */ -class DemoMetricPointSeederCommand extends Command -{ - use ConfirmableTrait; - - /** - * The console command name. - * - * @var string - */ - protected $name = 'cachet:metrics'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Seeds the demo Cachet metrics with points'; - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - if (!$this->confirmToProceed()) { - return; - } - - $this->seedMetricPoints(); - - $this->info('Demo metric seeded with demo data successfully!'); - } - - /** - * Seed the metric points table. - * - * @return void - */ - protected function seedMetricPoints() - { - MetricPoint::truncate(); - - $points = []; - - // Generate 24 hours of metric points - for ($i = 0; $i <= 23; $i++) { - for ($j = 0; $j <= 59; $j++) { - $this->info("{$i}:{$j}"); - - $pointTime = date("Y-m-d {$i}:{$j}:00"); - - $points[] = [ - 'metric_id' => 1, - 'value' => random_int(1, 10), - 'created_at' => $pointTime, - 'updated_at' => $pointTime, - ]; - } - } - - foreach (array_chunk($points, 100) as $chunk) { - MetricPoint::insert($chunk); - } - } - - /** - * Get the console command options. - * - * @return array - */ - protected function getOptions() - { - return [ - ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production.'], - ]; - } -} diff --git a/app/Console/Commands/DemoSeederCommand.php b/app/Console/Commands/DemoSeederCommand.php deleted file mode 100644 index 3d496ca0..00000000 --- a/app/Console/Commands/DemoSeederCommand.php +++ /dev/null @@ -1,468 +0,0 @@ - - */ -class DemoSeederCommand extends Command -{ - use ConfirmableTrait; - - /** - * The console command name. - * - * @var string - */ - protected $name = 'cachet:seed'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Seeds Cachet with demo data'; - - /** - * The settings repository. - * - * @var \CachetHQ\Cachet\Settings\Repository - */ - protected $settings; - - /** - * Create a new demo seeder command instance. - * - * @param \CachetHQ\Cachet\Settings\Repository $settings - * - * @return void - */ - public function __construct(Repository $settings) - { - parent::__construct(); - - $this->settings = $settings; - } - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - if (!$this->confirmToProceed()) { - return; - } - - $this->seedUsers(); - $this->seedActions(); - $this->seedComponentGroups(); - $this->seedComponents(); - $this->seedIncidents(); - $this->seedIncidentTemplates(); - $this->seedMetricPoints(); - $this->seedMetrics(); - $this->seedSchedules(); - $this->seedSettings(); - $this->seedSubscribers(); - - $this->info('Database seeded with demo data successfully!'); - } - - /** - * Seed the actions table. - * - * @return void - */ - protected function seedActions() - { - Action::truncate(); - } - - /** - * Seed the component groups table. - * - * @return void - */ - protected function seedComponentGroups() - { - $defaultGroups = [ - [ - 'name' => 'Websites', - 'order' => 1, - 'collapsed' => 0, - 'visible' => ComponentGroup::VISIBLE_AUTHENTICATED, - ], [ - 'name' => 'Services', - 'order' => 2, - 'collapsed' => 1, - 'visible' => ComponentGroup::VISIBLE_GUEST, - ], - ]; - - ComponentGroup::truncate(); - - foreach ($defaultGroups as $group) { - ComponentGroup::create($group); - } - } - - /** - * Seed the components table. - * - * @return void - */ - protected function seedComponents() - { - $defaultComponents = [ - [ - 'name' => 'API', - 'description' => 'Used by third-parties to connect to us', - 'status' => 1, - 'order' => 0, - 'group_id' => 0, - 'link' => '', - ], [ - 'name' => 'Documentation', - 'description' => 'Kindly powered by Readme.io', - 'status' => 1, - 'order' => 0, - 'group_id' => 1, - 'link' => 'https://docs.cachethq.io', - ], [ - 'name' => 'Website', - 'description' => '', - 'status' => 1, - 'order' => 0, - 'group_id' => 1, - 'link' => 'https://cachethq.io', - ], [ - 'name' => 'Laravel Artisan Cheatsheet', - 'description' => 'A searchable, bookmarkable cheatsheet for Laravel\'s Artisan commands.', - 'status' => 1, - 'order' => 0, - 'group_id' => 2, - 'link' => 'https://artisan.page', - ], [ - 'name' => 'Checkmango', - 'description' => 'The Full-Stack A/B Testing Platform', - 'status' => 1, - 'order' => 1, - 'group_id' => 2, - 'link' => 'https://checkmango.com', - ], [ - 'name' => 'GitHub', - 'description' => '', - 'status' => 1, - 'order' => 0, - 'group_id' => 0, - 'link' => 'https://github.com/cachethq/cachet', - ], - ]; - - Component::truncate(); - - foreach ($defaultComponents as $component) { - Component::create($component); - } - } - - /** - * Seed the incidents table. - * - * @return void - */ - protected function seedIncidents() - { - $incidentMessage = <<<'EINCIDENT' -# Of course it does! - -What kind of web application doesn't these days? - -## Headers are fun aren't they - -It's _exactly_ why we need Markdown. For **emphasis** and such. -EINCIDENT; - - $defaultIncidents = [ - [ - 'name' => 'Our monkeys aren\'t performing', - 'message' => 'We\'re investigating an issue with our monkeys not performing as they should be.', - 'status' => Incident::INVESTIGATING, - 'component_id' => 0, - 'visible' => 1, - 'stickied' => false, - 'user_id' => 1, - 'occurred_at' => Carbon::now(), - ], - [ - 'name' => 'This is an unresolved incident', - 'message' => 'Unresolved incidents are left without a **Fixed** update.', - 'status' => Incident::INVESTIGATING, - 'component_id' => 0, - 'visible' => 1, - 'stickied' => false, - 'user_id' => 1, - 'occurred_at' => Carbon::now(), - ], - ]; - - Incident::truncate(); - IncidentUpdate::truncate(); - - foreach ($defaultIncidents as $defaultIncident) { - $incident = Incident::create($defaultIncident); - - $this->seedIncidentUpdates($incident); - } - } - - /** - * Seed the incident templates table. - * - * @return void - */ - protected function seedIncidentTemplates() - { - IncidentTemplate::truncate(); - } - - /** - * Seed the incident updates table for a given incident. - * - * @return void - */ - protected function seedIncidentUpdates($incident) - { - $defaultUpdates = [ - 1 => [ - [ - 'status' => Incident::FIXED, - 'message' => 'The monkeys are back and rested!', - 'user_id' => 1, - ], [ - 'status' => Incident::WATCHED, - 'message' => 'Our monkeys need a break from performing. They\'ll be back after a good rest.', - 'user_id' => 1, - ], [ - 'status' => Incident::IDENTIFIED, - 'message' => 'We have identified the issue with our lovely performing monkeys.', - 'user_id' => 1, - ], - ], - 2 => [ - [ - 'status' => Incident::WATCHED, - 'message' => 'We\'re actively watching this issue, so it remains unresolved.', - 'user_id' => 1, - ], - ], - ]; - - $updates = $defaultUpdates[$incident->id]; - - foreach ($updates as $updateId => $update) { - $update['incident_id'] = $incident->id; - - IncidentUpdate::create($update); - } - } - - /** - * Seed the metric points table. - * - * @return void - */ - protected function seedMetricPoints() - { - MetricPoint::truncate(); - - // Generate 11 hours of metric points - for ($i = 0; $i < 11; $i++) { - $metricTime = (new DateTime())->sub(new DateInterval('PT'.$i.'H')); - - MetricPoint::create([ - 'metric_id' => 1, - 'value' => random_int(1, 10), - 'created_at' => $metricTime, - 'updated_at' => $metricTime, - ]); - } - } - - /** - * Seed the metrics table. - * - * @return void - */ - protected function seedMetrics() - { - $defaultMetrics = [ - [ - 'name' => 'Cups of coffee', - 'suffix' => 'Cups', - 'description' => 'How many cups of coffee we\'ve drank.', - 'default_value' => 0, - 'calc_type' => 1, - 'display_chart' => 1, - ], - ]; - - Metric::truncate(); - - foreach ($defaultMetrics as $metric) { - Metric::create($metric); - } - } - - /** - * Seed the schedules table. - * - * @return void - */ - protected function seedSchedules() - { - $defaultSchedules = [ - [ - 'name' => 'Demo resets every half hour!', - 'message' => 'You can schedule downtime for _your_ service!', - 'status' => Schedule::UPCOMING, - 'scheduled_at' => (new DateTime())->add(new DateInterval('PT2H')), - ], - ]; - - Schedule::truncate(); - - foreach ($defaultSchedules as $schedule) { - Schedule::create($schedule); - } - } - - /** - * Seed the settings table. - * - * @return void - */ - protected function seedSettings() - { - $defaultSettings = [ - [ - 'key' => 'app_name', - 'value' => 'Cachet Demo', - ], [ - 'key' => 'app_domain', - 'value' => 'https://demo.cachethq.io', - ], [ - 'key' => 'show_support', - 'value' => '1', - ], [ - 'key' => 'app_locale', - 'value' => 'en', - ], [ - 'key' => 'app_timezone', - 'value' => 'Europe/London', - ], [ - 'key' => 'app_incident_days', - 'value' => '7', - ], [ - 'key' => 'app_refresh_rate', - 'value' => '0', - ], [ - 'key' => 'display_graphs', - 'value' => '1', - ], [ - 'key' => 'app_about', - 'value' => 'This is the demo instance of [Cachet](https://cachethq.io?ref=demo). The open-source status page system, for everyone. 3.x is coming soon! [Read the announcement](https://github.com/cachethq/cachet/discussions/4342).', - ], [ - 'key' => 'enable_subscribers', - 'value' => '0', - ], [ - 'key' => 'header', - 'value' => '', - ], - ]; - - $this->settings->clear(); - - foreach ($defaultSettings as $setting) { - $this->settings->set($setting['key'], $setting['value']); - } - } - - /** - * Seed the subscribers. - * - * @return void - */ - protected function seedSubscribers() - { - Subscriber::truncate(); - } - - /** - * Seed the users table. - * - * @return void - */ - protected function seedUsers() - { - $users = [ - [ - 'username' => 'test', - 'password' => 'test123', - 'email' => 'test@example.com', - 'level' => User::LEVEL_ADMIN, - 'api_key' => '9yMHsdioQosnyVK4iCVR', - ], - ]; - - User::truncate(); - - foreach ($users as $user) { - User::create($user); - } - } - - /** - * Get the console command options. - * - * @return array - */ - protected function getOptions() - { - return [ - ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when in production.'], - ]; - } -} diff --git a/app/Console/Commands/InstallCommand.php b/app/Console/Commands/InstallCommand.php deleted file mode 100644 index 7c71cbc0..00000000 --- a/app/Console/Commands/InstallCommand.php +++ /dev/null @@ -1,448 +0,0 @@ - - */ -class InstallCommand extends Command -{ - /** - * The console command name. - * - * @var string - */ - protected $name = 'cachet:install'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Install Cachet'; - - /** - * The events instance. - * - * @var \Illuminate\Contracts\Events\Dispatcher - */ - protected $events; - - /** - * Create a new command instance. - * - * @param Dispatcher $events - */ - public function __construct(Dispatcher $events) - { - $this->events = $events; - - parent::__construct(); - } - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - if ($this->confirm('Do you want to configure Cachet before installing?')) { - $this->configureEnvironmentFile(); - $this->configureKey(); - $this->configureDatabase(); - $this->configureDrivers(); - $this->configureMail(); - $this->configureCachet(); - $this->configureUser(); - } - - $this->line('Installing Cachet...'); - - $this->events->fire('command.installing', $this); - $this->events->fire('command.generatekey', $this); - $this->events->fire('command.cacheconfig', $this); - $this->events->fire('command.cacheroutes', $this); - $this->events->fire('command.publishvendors', $this); - $this->events->fire('command.runmigrations', $this); - $this->events->fire('command.runseeding', $this); - $this->events->fire('command.updatecache', $this); - $this->events->fire('command.linkstorage', $this); - $this->events->fire('command.extrastuff', $this); - $this->events->fire('command.installed', $this); - - $this->info('Cachet is installed ⚡'); - } - - /** - * Copy the environment file. - * - * @return void - */ - protected function configureEnvironmentFile() - { - $dir = app()->environmentPath(); - $file = app()->environmentFile(); - $path = "{$dir}/{$file}"; - - if (file_exists($path)) { - $this->line('Environment file already exists. Moving on.'); - - return; - } - - copy("$path.example", $path); - } - - /** - * Generate the app key. - * - * @return void - */ - protected function configureKey() - { - $this->call('key:generate'); - } - - /** - * Configure the database. - * - * @param array $default - * - * @return void - */ - protected function configureDatabase(array $default = []) - { - $config = array_merge([ - 'DB_DRIVER' => null, - 'DB_HOST' => null, - 'DB_DATABASE' => null, - 'DB_USERNAME' => null, - 'DB_PASSWORD' => null, - 'DB_PORT' => null, - 'DB_PREFIX' => null, - ], $default); - - $config['DB_DRIVER'] = $this->choice('Which database driver do you want to use?', [ - 'mysql' => 'MySQL', - 'pgsql' => 'PostgreSQL', - 'sqlite' => 'SQLite', - ], $config['DB_DRIVER']); - - if ($config['DB_DRIVER'] === 'sqlite') { - $config['DB_DATABASE'] = $this->ask('Please provide the full path to your SQLite file.', $config['DB_DATABASE']); - } else { - $config['DB_HOST'] = $this->ask("What is the host of your {$config['DB_DRIVER']} database?", $config['DB_HOST']); - if ($config['DB_HOST'] === 'localhost' && $config['DB_DRIVER'] === 'mysql') { - $this->warn("Using 'localhost' will result in the usage of a local unix socket. Use 127.0.0.1 if you want to connect over TCP"); - } - - $config['DB_DATABASE'] = $this->ask('What is the name of the database that Cachet should use?', $config['DB_DATABASE']); - - $config['DB_USERNAME'] = $this->ask('What username should we connect with?', $config['DB_USERNAME']); - - $config['DB_PASSWORD'] = $this->secret('What password should we connect with?', $config['DB_PASSWORD']); - - $config['DB_PORT'] = $config['DB_DRIVER'] === 'mysql' ? 3306 : 5432; - if ($this->confirm('Is your database listening on a non-standard port number?')) { - $config['DB_PORT'] = $this->anticipate('What port number is your database using?', [3306, 5432], $config['DB_PORT']); - } - } - - if ($this->confirm('Do you want to use a prefix on the table names?')) { - $config['DB_PREFIX'] = $this->ask('Please enter the prefix now...', $config['DB_PREFIX']); - } - - // Format the settings ready to display them in the table. - $this->formatConfigsTable($config); - - if (!$this->confirm('Are these settings correct?')) { - return $this->configureDatabase($config); - } - - foreach ($config as $setting => $value) { - $this->writeEnv($setting, $value); - } - } - - /** - * Configure other drivers. - * - * @param array $default - * - * @return void - */ - protected function configureDrivers(array $default = []) - { - $config = array_merge([ - 'CACHE_DRIVER' => null, - 'SESSION_DRIVER' => null, - 'QUEUE_DRIVER' => null, - ], $default); - - // Format the settings ready to display them in the table. - $this->formatConfigsTable($config); - - $config['CACHE_DRIVER'] = $this->choice('Which cache driver do you want to use?', [ - 'apc' => 'APC(u)', - 'array' => 'Array', - 'database' => 'Database', - 'file' => 'File', - 'memcached' => 'Memcached', - 'redis' => 'Redis', - ], $config['CACHE_DRIVER']); - - // We need to configure Redis. - if ($config['CACHE_DRIVER'] === 'redis') { - $this->configureRedis(); - } - - $config['SESSION_DRIVER'] = $this->choice('Which session driver do you want to use?', [ - 'apc' => 'APC(u)', - 'array' => 'Array', - 'database' => 'Database', - 'file' => 'File', - 'memcached' => 'Memcached', - 'redis' => 'Redis', - ], $config['SESSION_DRIVER']); - - // We need to configure Redis. - if ($config['SESSION_DRIVER'] === 'redis') { - $this->configureRedis(); - } - - $config['QUEUE_DRIVER'] = $this->choice('Which queue driver do you want to use?', [ - 'null' => 'None', - 'sync' => 'Synchronous', - 'database' => 'Database', - 'beanstalkd' => 'Beanstalk', - 'sqs' => 'Amazon SQS', - 'redis' => 'Redis', - ], $config['QUEUE_DRIVER']); - - // We need to configure Redis, but only if the cache driver wasn't redis. - if ($config['QUEUE_DRIVER'] === 'redis' && ($config['SESSION_DRIVER'] !== 'redis' || $config['CACHE_DRIVER'] !== 'redis')) { - $this->configureRedis(); - } - - // Format the settings ready to display them in the table. - $this->formatConfigsTable($config); - - if (!$this->confirm('Are these settings correct?')) { - return $this->configureDrivers($config); - } - - foreach ($config as $setting => $value) { - $this->writeEnv($setting, $value); - } - } - - /** - * Configure mail. - * - * @param array $config - * - * @return void - */ - protected function configureMail(array $config = []) - { - $config = array_merge([ - 'MAIL_DRIVER' => null, - 'MAIL_HOST' => null, - 'MAIL_PORT' => null, - 'MAIL_USERNAME' => null, - 'MAIL_PASSWORD' => null, - 'MAIL_ADDRESS' => null, - 'MAIL_NAME' => null, - 'MAIL_ENCRYPTION' => null, - ], $config); - - // Don't continue with these settings if we're not interested in notifications. - if (!$this->confirm('Do you want Cachet to send mail notifications?')) { - return; - } - - $config['MAIL_DRIVER'] = $this->choice('What driver do you want to use to send notifications?', [ - 'smtp' => 'SMTP', - 'mail' => 'Mail', - 'sendmail' => 'Sendmail', - 'mailgun' => 'Mailgun', - 'mandrill' => 'Mandrill', - 'ses' => 'Amazon SES', - 'sparkpost' => 'SparkPost', - 'log' => 'Log (Testing)', - ]); - - if (!$config['MAIL_DRIVER'] === 'log') { - if ($config['MAIL_DRIVER'] === 'smtp') { - $config['MAIL_HOST'] = $this->ask('Please supply your mail server host'); - } - - $config['MAIL_ADDRESS'] = $this->ask('What email address should we send notifications from?'); - $config['MAIL_USERNAME'] = $this->ask('What username should we connect as?'); - $config['MAIL_PASSWORD'] = $this->secret('What password should we connect with?'); - } - - // Format the settings ready to display them in the table. - $this->formatConfigsTable($config); - - if (!$this->confirm('Are these settings correct?')) { - return $this->configureMail($config); - } - - foreach ($config as $setting => $value) { - $this->writeEnv($setting, $value); - } - } - - /** - * Configure Cachet. - * - * @param array $config - * - * @return void - */ - protected function configureCachet(array $config = []) - { - $config = []; - if ($this->confirm('Do you wish to use Cachet Beacon?')) { - $config['CACHET_BEACON'] = 'true'; - } - - if ($this->confirm('Do you wish to use Emoji? This requires a GitHub oAuth Token!')) { - $config['GITHUB_TOKEN'] = $this->ask('Please enter your GitHub oAuth Token'); - $config['CACHET_EMOJI'] = 'true'; - } - - foreach ($config as $setting => $value) { - $this->writeEnv($setting, $value); - } - } - - /** - * Configure the first user. - * - * @return void - */ - protected function configureUser() - { - if (!$this->confirm('Do you want to create an admin user?')) { - return; - } - - // We need to refresh the config to get access to the newly connected database. - $this->getFreshConfiguration(); - - // Now we need to install the application. - // $this->call('cachet:install'); - - $user = [ - 'username' => $this->ask('Please enter your username'), - 'email' => $this->ask('Please enter your email'), - 'password' => $this->secret('Please enter your password'), - 'level' => User::LEVEL_ADMIN, - ]; - - User::create($user); - } - - /** - * Configure the redis connection. - * - * @return void - */ - protected function configureRedis() - { - $config = [ - 'REDIS_HOST' => null, - 'REDIS_DATABASE' => null, - 'REDIS_PORT' => null, - ]; - - $config['REDIS_HOST'] = $this->ask('What is the host of your redis server?'); - $config['REDIS_DATABASE'] = $this->ask('What is the name of the database that Cachet should use?'); - $config['REDIS_PORT'] = $this->ask('What port should Cachet use?', 6379); - - foreach ($config as $setting => $value) { - $this->writeEnv($setting, $value); - } - } - - /** - * Format the configs into a pretty table that we can easily read. - * - * @param array $config - * - * @return void - */ - protected function formatConfigsTable(array $config) - { - $configRows = []; - - foreach ($config as $setting => $value) { - $configRows[] = compact('setting', 'value'); - } - - $this->table(['Setting', 'Value'], $configRows); - } - - /** - * Boot a fresh copy of the application configuration. - * - * @return void - */ - protected function getFreshConfiguration() - { - $app = require $this->laravel->bootstrapPath().'/app.php'; - $app->make(Kernel::class)->bootstrap(); - } - - /** - * Writes to the .env file with given parameters. - * - * @param string $key - * @param mixed $value - * - * @return void - */ - protected function writeEnv($key, $value) - { - $dir = app()->environmentPath(); - $file = app()->environmentFile(); - $path = "{$dir}/{$file}"; - - try { - (new Dotenv($dir, $file))->load(); - - $envKey = strtoupper($key); - $envValue = env($envKey) ?: 'null'; - - $envFileContents = file_get_contents($path); - $envFileContents = str_replace("{$envKey}={$envValue}", "{$envKey}={$value}", $envFileContents, $count); - if ($count < 1 && $envValue === 'null') { - $envFileContents = str_replace("{$envKey}=", "{$envKey}={$value}", $envFileContents); - } - file_put_contents($path, $envFileContents); - } catch (InvalidPathException $e) { - throw $e; - } - } -} diff --git a/app/Console/Commands/VersionCommand.php b/app/Console/Commands/VersionCommand.php deleted file mode 100644 index e093fe7a..00000000 --- a/app/Console/Commands/VersionCommand.php +++ /dev/null @@ -1,46 +0,0 @@ - - */ -class VersionCommand extends Command -{ - /** - * The console command name. - * - * @var string - */ - protected $name = 'cachet:version'; - - /** - * The console command description. - * - * @var string - */ - protected $description = 'Display the version of Cachet'; - - /** - * Execute the console command. - * - * @return void - */ - public function handle() - { - $this->info('Cachet '.CACHET_VERSION.' is installed ⚡'); - } -} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 12bc4a2a..e6b9960e 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -1,59 +1,27 @@ - * @author Joseph Cohen - * @author James Brooks - */ class Kernel extends ConsoleKernel { /** - * The Artisan commands provided by your application. - * - * @var array + * Define the application's command schedule. */ - protected $commands = [ - AppResetCommand::class, - AppUpdateCommand::class, - BeaconCommand::class, - DemoMetricPointSeederCommand::class, - DemoSeederCommand::class, - InstallCommand::class, - VersionCommand::class, - ]; + protected function schedule(Schedule $schedule): void + { + // $schedule->command('inspire')->hourly(); + } /** - * Define the application's command schedule. - * - * @param \Illuminate\Console\Scheduling\Schedule $schedule - * - * @return void + * Register the commands for the application. */ - protected function schedule(Schedule $schedule) + protected function commands(): void { - $schedule->command('cachet:beacon')->twiceDaily(0, 12); + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); } } diff --git a/app/Exceptions/Displayers/JsonValidationDisplayer.php b/app/Exceptions/Displayers/JsonValidationDisplayer.php deleted file mode 100644 index bb3d0c50..00000000 --- a/app/Exceptions/Displayers/JsonValidationDisplayer.php +++ /dev/null @@ -1,54 +0,0 @@ -info->generate($exception, $id, 400); - - $error = ['id' => $id, 'status' => $info['code'], 'title' => $info['name'], 'detail' => $info['detail'], 'meta' => ['details' => $exception->getMessageBag()->all()]]; - - return new JsonResponse(['errors' => [$error]], 400, array_merge($headers, ['Content-Type' => $this->contentType()])); - } - - /** - * Can we display the exception? - * - * @param \Exception $original - * @param \Exception $transformed - * @param int $code - * - * @return bool - */ - public function canDisplay(Exception $original, Exception $transformed, int $code) - { - return $transformed instanceof ValidationException; - } -} diff --git a/app/Exceptions/Displayers/MaintenanceDisplayer.php b/app/Exceptions/Displayers/MaintenanceDisplayer.php deleted file mode 100644 index 20b4a16d..00000000 --- a/app/Exceptions/Displayers/MaintenanceDisplayer.php +++ /dev/null @@ -1,104 +0,0 @@ - - */ -class MaintenanceDisplayer implements DisplayerInterface -{ - /** - * The view factory instance. - * - * @var \Illuminate\Contracts\View\Factory - */ - protected $view; - - /** - * Create a new maintenance displayer instance. - * - * @param \Illuminate\Contracts\View\Factory $view - * - * @return void - */ - public function __construct(Factory $view) - { - $this->view = $view; - } - - /** - * Get the error response associated with the given exception. - * - * @param \Exception $exception - * @param string $id - * @param int $code - * @param string[] $headers - * - * @return \Symfony\Component\HttpFoundation\Response - */ - public function display(Exception $exception, string $id, int $code, array $headers) - { - return new Response($this->render(), $code, array_merge($headers, ['Content-Type' => $this->contentType()])); - } - - /** - * Render the page. - * - * @return string - */ - protected function render() - { - return $this->view->make('errors.maintenance')->render(); - } - - /** - * Get the supported content type. - * - * @return string - */ - public function contentType() - { - return 'text/html'; - } - - /** - * Can we display the exception? - * - * @param \Exception $original - * @param \Exception $transformed - * @param int $code - * - * @return bool - */ - public function canDisplay(Exception $original, Exception $transformed, int $code) - { - return $transformed instanceof MaintenanceModeException; - } - - /** - * Do we provide verbose information about the exception? - * - * @return bool - */ - public function isVerbose() - { - return false; - } -} diff --git a/app/Exceptions/Displayers/RedirectDisplayer.php b/app/Exceptions/Displayers/RedirectDisplayer.php deleted file mode 100644 index 7a1670cb..00000000 --- a/app/Exceptions/Displayers/RedirectDisplayer.php +++ /dev/null @@ -1,90 +0,0 @@ -request = $request; - } - - /** - * Get the error response associated with the given exception. - * - * @param \Exception $exception - * @param string $id - * @param int $code - * @param string[] $headers - * - * @return \Symfony\Component\HttpFoundation\Response - */ - public function display(Exception $exception, string $id, int $code, array $headers) - { - return redirect()->guest('auth/login'); - } - - /** - * Get the supported content type. - * - * @return string - */ - public function contentType() - { - return 'text/html'; - } - - /** - * Can we display the exception? - * - * @param \Exception $original - * @param \Exception $transformed - * @param int $code - * - * @return bool - */ - public function canDisplay(Exception $original, Exception $transformed, int $code) - { - $redirect = $transformed instanceof HttpExceptionInterface && $transformed->getStatusCode() === 401; - - return $redirect && !$this->request->is('api*'); - } - - /** - * Do we provide verbose information about the exception? - * - * @return bool - */ - public function isVerbose() - { - return false; - } -} diff --git a/app/Exceptions/Displayers/SettingsDisplayer.php b/app/Exceptions/Displayers/SettingsDisplayer.php deleted file mode 100644 index d3a76d04..00000000 --- a/app/Exceptions/Displayers/SettingsDisplayer.php +++ /dev/null @@ -1,88 +0,0 @@ -request = $request; - } - - /** - * Get the error response associated with the given exception. - * - * @param \Exception $exception - * @param string $id - * @param int $code - * @param string[] $headers - * - * @return \Symfony\Component\HttpFoundation\Response - */ - public function display(Exception $exception, string $id, int $code, array $headers) - { - return cachet_redirect('setup'); - } - - /** - * Get the supported content type. - * - * @return string - */ - public function contentType() - { - return 'text/html'; - } - - /** - * Can we display the exception? - * - * @param \Exception $original - * @param \Exception $transformed - * @param int $code - * - * @return bool - */ - public function canDisplay(Exception $original, Exception $transformed, int $code) - { - return ($transformed instanceof ReadException) && !$this->request->is('setup*'); - } - - /** - * Do we provide verbose information about the exception? - * - * @return bool - */ - public function isVerbose() - { - return false; - } -} diff --git a/app/Exceptions/Displayers/ThrottleDisplayer.php b/app/Exceptions/Displayers/ThrottleDisplayer.php deleted file mode 100644 index 5f1907c7..00000000 --- a/app/Exceptions/Displayers/ThrottleDisplayer.php +++ /dev/null @@ -1,88 +0,0 @@ -request = $request; - } - - /** - * Get the error response associated with the given exception. - * - * @param \Exception $exception - * @param string $id - * @param int $code - * @param string[] $headers - * - * @return \Symfony\Component\HttpFoundation\Response - */ - public function display(Exception $exception, string $id, int $code, array $headers) - { - return cachet_redirect('auth.login')->withError(trans('forms.login.rate-limit')); - } - - /** - * Get the supported content type. - * - * @return string - */ - public function contentType() - { - return 'text/html'; - } - - /** - * Can we display the exception? - * - * @param \Exception $original - * @param \Exception $transformed - * @param int $code - * - * @return bool - */ - public function canDisplay(Exception $original, Exception $transformed, int $code) - { - return $transformed instanceof TooManyRequestsHttpException && $this->request->is('auth*'); - } - - /** - * Do we provide verbose information about the exception? - * - * @return bool - */ - public function isVerbose() - { - return false; - } -} diff --git a/app/Exceptions/Filters/ApiFilter.php b/app/Exceptions/Filters/ApiFilter.php deleted file mode 100644 index 8d12e4db..00000000 --- a/app/Exceptions/Filters/ApiFilter.php +++ /dev/null @@ -1,43 +0,0 @@ -is('api*')) { - foreach ($displayers as $index => $displayer) { - if (!Str::contains($displayer->contentType(), 'application/')) { - unset($displayers[$index]); - } - } - } - - return array_values($displayers); - } -} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 00000000..56af2640 --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,30 @@ + + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + */ + public function register(): void + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/app/Exceptions/Transformers/BusTransformer.php b/app/Exceptions/Transformers/BusTransformer.php deleted file mode 100644 index be0b2fe5..00000000 --- a/app/Exceptions/Transformers/BusTransformer.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -class BusTransformer implements TransformerInterface -{ - /** - * Transform the provided exception. - * - * @param \Exception $exception - * - * @return \Exception - */ - public function transform(Exception $exception) - { - if ($exception instanceof ExceptionInterface) { - $exception = new BadRequestHttpException($exception->getMessage()); - } - - return $exception; - } -} diff --git a/app/Http/Controllers/Api/AbstractApiController.php b/app/Http/Controllers/Api/AbstractApiController.php deleted file mode 100644 index 10be23db..00000000 --- a/app/Http/Controllers/Api/AbstractApiController.php +++ /dev/null @@ -1,198 +0,0 @@ -headers = $headers; - - return $this; - } - - /** - * Set the response meta data. - * - * @param array $meta - * - * @return $this - */ - protected function setMetaData(array $meta) - { - $this->meta = $meta; - - return $this; - } - - /** - * Set the response meta data. - * - * @param array $data - * - * @return $this - */ - protected function setData($data) - { - $this->data = $data; - - return $this; - } - - /** - * Set the response status code. - * - * @param int $statusCode - * - * @return $this - */ - protected function setStatusCode($statusCode) - { - $this->statusCode = $statusCode; - - return $this; - } - - /** - * Respond with an item response. - * - * @param mixed - * - * @return \Illuminate\Http\JsonResponse - */ - public function item($item) - { - return $this->setData(AutoPresenter::decorate($item))->respond(); - } - - /** - * Respond with a collection response. - * - * @param \Illuminate\Support\Collection $collection - * - * @return \Illuminate\Http\JsonResponse - */ - public function collection(Collection $collection) - { - return $this->setData(AutoPresenter::decorate($collection))->respond(); - } - - /** - * Respond with a pagination response. - * - * @param \Illuminate\Pagination\Paginator $paginator - * @param \Illuminate\Http\Request $request - * - * @return \Illuminate\Http\JsonResponse - */ - protected function paginator(Paginator $paginator, Request $request) - { - foreach ($request->query as $key => $value) { - if ($key != 'page') { - $paginator->appends($key, $value); - } - } - - $pagination = [ - 'pagination' => [ - 'total' => (int) $paginator->total(), - 'count' => count($paginator->items()), - 'per_page' => (int) $paginator->perPage(), - 'current_page' => (int) $paginator->currentPage(), - 'total_pages' => (int) $paginator->lastPage(), - 'links' => [ - 'next_page' => $paginator->nextPageUrl(), - 'previous_page' => $paginator->previousPageUrl(), - ], - ], - ]; - - $items = $paginator->getCollection(); - - return $this->setMetaData($pagination)->setData(AutoPresenter::decorate($items->values()))->respond(); - } - - /** - * Respond with a no content response. - * - * @return \Illuminate\Http\JsonResponse - */ - protected function noContent() - { - return $this->setStatusCode(204)->respond(); - } - - /** - * Build the response. - * - * @return \Illuminate\Http\Response - */ - protected function respond() - { - $response = []; - - if (!empty($this->meta)) { - $response['meta'] = $this->meta; - } - - $response['data'] = $this->data; - - if ($this->data instanceof Arrayable) { - $response['data'] = $this->data->toArray(); - } - - return Response::json($response, $this->statusCode, $this->headers); - } -} diff --git a/app/Http/Controllers/Api/ComponentController.php b/app/Http/Controllers/Api/ComponentController.php deleted file mode 100644 index 9bda7b09..00000000 --- a/app/Http/Controllers/Api/ComponentController.php +++ /dev/null @@ -1,137 +0,0 @@ -check()) { - $components = Component::query(); - } else { - $components = Component::enabled(); - } - - if ($tags = Binput::get('tags')) { - $components->withAnyTags($tags); - } - - $components->search(Binput::except(['sort', 'order', 'per_page'])); - - if ($sortBy = Binput::get('sort')) { - $direction = Binput::has('order') && Binput::get('order') == 'desc'; - - $components->sort($sortBy, $direction); - } - - $components = $components->paginate(Binput::get('per_page', 20)); - - return $this->paginator($components, Request::instance()); - } - - /** - * Get a single component. - * - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return \Illuminate\Http\JsonResponse - */ - public function show(Component $component) - { - return $this->item($component); - } - - /** - * Create a new component. - * - * @return \Illuminate\Http\JsonResponse - */ - public function store() - { - try { - $component = execute(new CreateComponentCommand( - Binput::get('name'), - Binput::get('description'), - Binput::get('status'), - Binput::get('link'), - Binput::get('order'), - Binput::get('group_id'), - (bool) Binput::get('enabled', true), - Binput::get('meta'), - Binput::get('tags') - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($component); - } - - /** - * Update an existing component. - * - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return \Illuminate\Http\JsonResponse - */ - public function update(Component $component) - { - try { - execute(new UpdateComponentCommand( - $component, - Binput::get('name'), - Binput::get('description'), - Binput::get('status'), - Binput::get('link'), - Binput::get('order'), - Binput::get('group_id'), - Binput::get('enabled', $component->enabled), - Binput::get('meta'), - Binput::get('tags'), - (bool) Binput::get('silent', false) - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($component); - } - - /** - * Delete an existing component. - * - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Component $component) - { - execute(new RemoveComponentCommand($component)); - - return $this->noContent(); - } -} diff --git a/app/Http/Controllers/Api/ComponentGroupController.php b/app/Http/Controllers/Api/ComponentGroupController.php deleted file mode 100644 index 957106e1..00000000 --- a/app/Http/Controllers/Api/ComponentGroupController.php +++ /dev/null @@ -1,145 +0,0 @@ - - * @author Graham Campbell - * @author Joseph Cohen - */ -class ComponentGroupController extends AbstractApiController -{ - /** - * The user session object. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $guard; - - /** - * Creates a new component group controller instance. - * - * @param \Illuminate\Contracts\Auth\Guard $guard - */ - public function __construct(Guard $guard) - { - $this->guard = $guard; - } - - /** - * Get all groups. - * - * @return \Illuminate\Http\JsonResponse - */ - public function index() - { - $groups = ComponentGroup::query(); - if (!$this->guard->check()) { - $groups = ComponentGroup::visible(); - } - - $groups->search(Binput::except(['sort', 'order', 'per_page'])); - - if ($sortBy = Binput::get('sort')) { - $direction = Binput::get('order', 'asc'); - - $groups->sort($sortBy, $direction); - } - - $groups = $groups->paginate(Binput::get('per_page', 20)); - - return $this->paginator($groups, Request::instance()); - } - - /** - * Get a single group. - * - * @param \CachetHQ\Cachet\Models\ComponentGroup $group - * - * @return \Illuminate\Http\JsonResponse - */ - public function show(ComponentGroup $group) - { - return $this->item($group); - } - - /** - * Create a new component group. - * - * @return \Illuminate\Http\JsonResponse - */ - public function store() - { - try { - $group = execute(new CreateComponentGroupCommand( - Binput::get('name'), - Binput::get('order', 0), - Binput::get('collapsed', 0), - Binput::get('visible', ComponentGroup::VISIBLE_AUTHENTICATED) - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($group); - } - - /** - * Update an existing group. - * - * @param \CachetHQ\Cachet\Models\ComponentGroup $group - * - * @return \Illuminate\Http\JsonResponse - */ - public function update(ComponentGroup $group) - { - try { - $group = execute(new UpdateComponentGroupCommand( - $group, - Binput::get('name'), - Binput::get('order'), - Binput::get('collapsed'), - Binput::get('visible') - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($group); - } - - /** - * Delete an existing group. - * - * @param \CachetHQ\Cachet\Models\ComponentGroup $group - * - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(ComponentGroup $group) - { - execute(new RemoveComponentGroupCommand($group)); - - return $this->noContent(); - } -} diff --git a/app/Http/Controllers/Api/GeneralController.php b/app/Http/Controllers/Api/GeneralController.php deleted file mode 100644 index 23ba1fa4..00000000 --- a/app/Http/Controllers/Api/GeneralController.php +++ /dev/null @@ -1,63 +0,0 @@ - - */ -class GeneralController extends AbstractApiController -{ - /** - * Ping endpoint allows API consumers to check the version. - * - * @return \Illuminate\Http\JsonResponse - */ - public function ping() - { - return $this->item('Pong!'); - } - - /** - * Endpoint to show the Cachet version. - * - * @return \Illuminate\Http\JsonResponse - */ - public function version() - { - $latest = app()->make(Releases::class)->latest(); - - return $this->setMetaData([ - 'on_latest' => version_compare(CACHET_VERSION, $latest['tag_name']) === 1, - 'latest' => $latest, - ])->item(CACHET_VERSION); - } - - /** - * Get the system status message. - * - * @return \Illuminate\Http\JsonResponse - */ - public function status() - { - $system = app()->make(System::class)->getStatus(); - - return $this->item([ - 'status' => $system['system_status'], - 'message' => $system['system_message'], - ]); - } -} diff --git a/app/Http/Controllers/Api/IncidentController.php b/app/Http/Controllers/Api/IncidentController.php deleted file mode 100644 index cd705519..00000000 --- a/app/Http/Controllers/Api/IncidentController.php +++ /dev/null @@ -1,135 +0,0 @@ -check() ? 0 : 1; - - $incidents = Incident::where('visible', '>=', $incidentVisibility); - - $incidents->search(Binput::except(['sort', 'order', 'per_page'])); - - if ($sortBy = Binput::get('sort')) { - $direction = Binput::has('order') && Binput::get('order') == 'desc'; - - $incidents->sort($sortBy, $direction); - } - - $incidents = $incidents->paginate(Binput::get('per_page', 20)); - - return $this->paginator($incidents, Request::instance()); - } - - /** - * Get a single incident. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\Http\JsonResponse - */ - public function show(Incident $incident) - { - return $this->item($incident); - } - - /** - * Create a new incident. - * - * @return \Illuminate\Http\JsonResponse - */ - public function store() - { - try { - $incident = execute(new CreateIncidentCommand( - Binput::get('name'), - Binput::get('status'), - Binput::get('message', null, false, false), - (bool) Binput::get('visible', true), - Binput::get('component_id'), - Binput::get('component_status'), - (bool) Binput::get('notify', true), - (bool) Binput::get('stickied', false), - Binput::get('occurred_at'), - Binput::get('template'), - Binput::get('vars', []), - Binput::get('meta', []) - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($incident); - } - - /** - * Update an existing incident. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\Http\JsonResponse - */ - public function update(Incident $incident) - { - try { - $incident = execute(new UpdateIncidentCommand( - $incident, - Binput::get('name'), - Binput::get('status'), - Binput::get('message'), - (bool) Binput::get('visible', true), - Binput::get('component_id'), - Binput::get('component_status'), - (bool) Binput::get('notify', true), - (bool) Binput::get('stickied', false), - Binput::get('occurred_at'), - Binput::get('template'), - Binput::get('vars', []) - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($incident); - } - - /** - * Delete an existing incident. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Incident $incident) - { - execute(new RemoveIncidentCommand($incident)); - - return $this->noContent(); - } -} diff --git a/app/Http/Controllers/Api/IncidentTemplateController.php b/app/Http/Controllers/Api/IncidentTemplateController.php deleted file mode 100644 index 3f1ba418..00000000 --- a/app/Http/Controllers/Api/IncidentTemplateController.php +++ /dev/null @@ -1,51 +0,0 @@ -sort($sortBy, $direction); - } - - $templates = $templates->paginate(Binput::get('per_page', 20)); - - return $this->paginator($templates, Request::instance()); - } - - /** - * Get a single incident templates. - * - * @param \CachetHQ\Cachet\Models\IncidentTemplate $incidentTemplate - * - * @return \Illuminate\Http\JsonResponse - */ - public function show(IncidentTemplate $incidentTemplate) - { - return $this->item($incidentTemplate); - } -} diff --git a/app/Http/Controllers/Api/IncidentUpdateController.php b/app/Http/Controllers/Api/IncidentUpdateController.php deleted file mode 100644 index 0c239a6a..00000000 --- a/app/Http/Controllers/Api/IncidentUpdateController.php +++ /dev/null @@ -1,134 +0,0 @@ - - */ -class IncidentUpdateController extends AbstractApiController -{ - /** - * Return all updates on the incident. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\Http\JsonResponse - */ - public function index(Incident $incident) - { - $updates = $incident->updates()->orderBy('created_at', 'desc'); - - if ($sortBy = Binput::get('sort')) { - $direction = Binput::has('order') && Binput::get('order') == 'desc'; - - $updates->sort($sortBy, $direction); - } - - $updates = $updates->paginate(Binput::get('per_page', 20)); - - return $this->paginator($updates, Request::instance()); - } - - /** - * Return a single incident update. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * @param \CachetHQ\Cachet\Models\IncidentUpdate $update - * - * @return \Illuminate\Http\JsonResponse - */ - public function show(Incident $incident, IncidentUpdate $update) - { - return $this->item($update); - } - - /** - * Create a new incident update. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\Http\JsonResponse - */ - public function store(Incident $incident) - { - try { - $update = execute(new CreateIncidentUpdateCommand( - $incident, - Binput::get('status'), - Binput::get('message'), - Binput::get('component_id'), - Binput::get('component_status'), - Auth::user() - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($update); - } - - /** - * Update an incident update. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * @param \CachetHQ\Cachet\Models\IncidentUpdate $update - * - * @return \Illuminate\Http\JsonResponse - */ - public function update(Incident $incident, IncidentUpdate $update) - { - try { - $update = execute(new UpdateIncidentUpdateCommand( - $update, - Binput::get('status'), - Binput::get('message'), - Auth::user() - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($update); - } - - /** - * Create a new incident update. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * @param \CachetHQ\Cachet\Models\IncidentUpdate $update - * - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Incident $incident, IncidentUpdate $update) - { - try { - execute(new RemoveIncidentUpdateCommand($update)); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->noContent(); - } -} diff --git a/app/Http/Controllers/Api/MetricController.php b/app/Http/Controllers/Api/MetricController.php deleted file mode 100644 index 4ef2e1e4..00000000 --- a/app/Http/Controllers/Api/MetricController.php +++ /dev/null @@ -1,129 +0,0 @@ -sort($sortBy, $direction); - } - - $metrics = $metrics->paginate(Binput::get('per_page', 20)); - - return $this->paginator($metrics, Request::instance()); - } - - /** - * Get a single metric. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return \Illuminate\Http\JsonResponse - */ - public function show(Metric $metric) - { - return $this->item($metric); - } - - /** - * Create a new metric. - * - * @return \Illuminate\Http\JsonResponse - */ - public function store() - { - try { - $metric = execute(new CreateMetricCommand( - Binput::get('name'), - Binput::get('suffix'), - Binput::get('description'), - Binput::get('default_value'), - Binput::get('calc_type', 0), - Binput::get('display_chart', true), - Binput::get('places', 2), - Binput::get('default_view', Binput::get('view', 1)), - Binput::get('threshold', 5), - Binput::get('order', 0), - Binput::get('visible', 1) - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($metric); - } - - /** - * Update an existing metric. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return \Illuminate\Http\JsonResponse - */ - public function update(Metric $metric) - { - try { - $metric = execute(new UpdateMetricCommand( - $metric, - Binput::get('name'), - Binput::get('suffix'), - Binput::get('description'), - Binput::get('default_value'), - Binput::get('calc_type'), - Binput::get('display_chart'), - Binput::get('places'), - Binput::get('default_view', Binput::get('view')), - Binput::get('threshold'), - Binput::get('order'), - Binput::get('visible') - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($metric); - } - - /** - * Delete an existing metric. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Metric $metric) - { - execute(new RemoveMetricCommand($metric)); - - return $this->noContent(); - } -} diff --git a/app/Http/Controllers/Api/MetricPointController.php b/app/Http/Controllers/Api/MetricPointController.php deleted file mode 100644 index 8afb5c59..00000000 --- a/app/Http/Controllers/Api/MetricPointController.php +++ /dev/null @@ -1,97 +0,0 @@ -points()->paginate(Binput::get('per_page', 20)); - - return $this->paginator($points, Request::instance()); - } - - /** - * Create a new metric point. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return \Illuminate\Http\JsonResponse - */ - public function store(Metric $metric) - { - try { - $metricPoint = execute(new CreateMetricPointCommand( - $metric, - Binput::get('value'), - Binput::get('timestamp') - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($metricPoint); - } - - /** - * Updates a metric point. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param \CachetHQ\Cachet\Models\MetricPoint $metricPoint - * - * @return \Illuminate\Http\JsonResponse - */ - public function update(Metric $metric, MetricPoint $metricPoint) - { - $metricPoint = execute(new UpdateMetricPointCommand( - $metricPoint, - $metric, - Binput::get('value'), - Binput::get('timestamp') - )); - - return $this->item($metricPoint); - } - - /** - * Destroys a metric point. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param \CachetHQ\Cachet\Models\MetricPoint $metricPoint - * - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Metric $metric, MetricPoint $metricPoint) - { - execute(new RemoveMetricPointCommand($metricPoint)); - - return $this->noContent(); - } -} diff --git a/app/Http/Controllers/Api/ScheduleController.php b/app/Http/Controllers/Api/ScheduleController.php deleted file mode 100644 index c59f46db..00000000 --- a/app/Http/Controllers/Api/ScheduleController.php +++ /dev/null @@ -1,129 +0,0 @@ - - */ -class ScheduleController extends AbstractApiController -{ - /** - * Return all schedules. - * - * @return \Illuminate\Http\JsonResponse - */ - public function index() - { - $schedule = Schedule::query(); - - if ($sortBy = Binput::get('sort')) { - $direction = Binput::has('order') && Binput::get('order') == 'desc'; - - $schedule->sort($sortBy, $direction); - } - - $schedule = $schedule->paginate(Binput::get('per_page', 20)); - - return $this->paginator($schedule, Request::instance()); - } - - /** - * Return a single schedule. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return \Illuminate\Http\JsonResponse - */ - public function show(Schedule $schedule) - { - return $this->item($schedule); - } - - /** - * Create a new schedule. - * - * @return \Illuminate\Http\JsonResponse - */ - public function store() - { - try { - $schedule = execute(new CreateScheduleCommand( - Binput::get('name'), - Binput::get('message', null, false, false), - Binput::get('status'), - Binput::get('scheduled_at'), - Binput::get('completed_at'), - Binput::get('components', []), - Binput::get('notify', false) - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($schedule); - } - - /** - * Update a schedule. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return \Illuminate\Http\JsonResponse - */ - public function update(Schedule $schedule) - { - try { - $schedule = execute(new UpdateScheduleCommand( - $schedule, - Binput::get('name'), - Binput::get('message'), - Binput::get('status'), - Binput::get('scheduled_at'), - Binput::get('completed_at'), - Binput::get('components', []) - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($schedule); - } - - /** - * Delete a schedule. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Schedule $schedule) - { - try { - execute(new DeleteScheduleCommand($schedule)); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->noContent(); - } -} diff --git a/app/Http/Controllers/Api/SubscriberController.php b/app/Http/Controllers/Api/SubscriberController.php deleted file mode 100644 index 621aa06d..00000000 --- a/app/Http/Controllers/Api/SubscriberController.php +++ /dev/null @@ -1,74 +0,0 @@ - - * @author Graham Campbell - */ -class SubscriberController extends AbstractApiController -{ - /** - * Get all subscribers. - * - * @return \Illuminate\Http\JsonResponse - */ - public function index() - { - $subscribers = Subscriber::paginate(Binput::get('per_page', 20)); - - return $this->paginator($subscribers, Request::instance()); - } - - /** - * Create a new subscriber. - * - * @return \Illuminate\Http\JsonResponse - */ - public function store() - { - $verified = Binput::get('verify', app(Repository::class)->get('setting.skip_subscriber_verification')); - - try { - $subscriber = execute(new SubscribeSubscriberCommand(Binput::get('email'), $verified, Binput::get('components', null))); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($subscriber); - } - - /** - * Delete a subscriber. - * - * @param \CachetHQ\Cachet\Models\Subscriber $subscriber - * - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Subscriber $subscriber) - { - execute(new UnsubscribeSubscriberCommand($subscriber)); - - return $this->noContent(); - } -} diff --git a/app/Http/Controllers/Api/SubscriptionController.php b/app/Http/Controllers/Api/SubscriptionController.php deleted file mode 100644 index 173a5e0f..00000000 --- a/app/Http/Controllers/Api/SubscriptionController.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class SubscriptionController extends AbstractApiController -{ - /** - * Delete a subscription. - * - * @param \CachetHQ\Cachet\Models\Subscription $subscription - * - * @return \Illuminate\Http\JsonResponse - */ - public function destroy(Subscription $subscription) - { - execute(new UnsubscribeSubscriptionCommand($subscription)); - - return $this->noContent(); - } -} diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php deleted file mode 100644 index 597b9b51..00000000 --- a/app/Http/Controllers/AuthController.php +++ /dev/null @@ -1,144 +0,0 @@ -withPageTitle(trans('dashboard.login.login')); - } - - /** - * Logs the user in. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function postLogin() - { - $loginData = Binput::only(['username', 'password', 'remember_me']); - - // Login with username or email. - $loginKey = filter_var($loginData['username'], FILTER_VALIDATE_EMAIL) ? 'email' : 'username'; - $loginData[$loginKey] = Arr::pull($loginData, 'username'); - - $rememberUser = Arr::pull($loginData, 'remember_me') === '1'; - - // Validate login credentials. - if (Auth::validate($loginData)) { - Auth::once($loginData); - - if (Auth::user()->hasTwoFactor) { - Session::put('2fa_id', Auth::user()->id); - - return cachet_redirect('auth.two-factor'); - } - - Auth::attempt($loginData, $rememberUser); - - event(new UserLoggedInEvent(Auth::user())); - - return Redirect::intended(cachet_route('dashboard')); - } - - return cachet_redirect('auth.login') - ->withInput(Binput::except('password')) - ->withError(trans('forms.login.invalid')); - } - - /** - * Shows the two-factor-auth view. - * - * @return \Illuminate\View\View - */ - public function showTwoFactorAuth() - { - return View::make('auth.two-factor-auth'); - } - - /** - * Validates the Two Factor token. - * - * This feels very hacky, but we have to juggle authentication and codes. - * - * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException - * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException - * @throws \PragmaRX\Google2FA\Exceptions\SecretKeyTooShortException - * - * @return \Illuminate\Http\RedirectResponse - */ - public function postTwoFactor() - { - // Check that we have a session. - if ($userId = Session::pull('2fa_id')) { - $code = str_replace(' ', '', Binput::get('code')); - - // Maybe a temp login here. - Auth::loginUsingId($userId); - - $user = Auth::user(); - - $google2fa = new Google2FA(); - $valid = $google2fa->verifyKey($user->google_2fa_secret, $code); - - if ($valid) { - event(new UserPassedTwoAuthEvent($user)); - - event(new UserLoggedInEvent($user)); - - return Redirect::intended('dashboard'); - } else { - event(new UserFailedTwoAuthEvent($user)); - - // Failed login, log back out. - Auth::logout(); - - return cachet_redirect('auth.login')->withError(trans('forms.login.invalid-token')); - } - } - - return cachet_redirect('auth.login')->withError(trans('forms.login.invalid-token')); - } - - /** - * Logs the user out, deleting their session etc. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function logoutAction() - { - event(new UserLoggedOutEvent(Auth::user())); - - Auth::logout(); - - return cachet_redirect('status-page'); - } -} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 00000000..77ec359a --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ +name, - $component->description, - Binput::get('status'), - $component->link, - $component->order, - $component->group_id, - $component->enabled, - $component->meta, - false - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - - return $this->item($component); - } - - /** - * Updates a components ordering. - * - * @return array - */ - public function postUpdateComponentOrder() - { - $componentData = Binput::get('ids'); - - foreach ($componentData as $order => $componentId) { - try { - $component = Component::find($componentId); - - execute(new UpdateComponentCommand( - $component, - $component->name, - $component->description, - $component->status, - $component->link, - $order + 1, - $component->group_id, - $component->enabled, - $component->meta, - true - )); - } catch (QueryException $e) { - throw new BadRequestHttpException(); - } - } - - return $this->collection(Component::query()->orderBy('order')->get()); - } - - /** - * Updates the order of component groups. - * - * @return array - */ - public function postUpdateComponentGroupOrder() - { - $groupData = Binput::get('ids'); - - foreach ($groupData as $order => $groupId) { - $group = ComponentGroup::find($groupId); - - execute(new UpdateComponentGroupCommand( - $group, - $group->name, - $order + 1, - $group->collapsed, - $group->visible - )); - } - - return $this->collection(ComponentGroup::query()->orderBy('order')->get()); - } - - /** - * Returns a template by slug. - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException - * - * @return \CachetHQ\Cachet\Models\IncidentTemplate - */ - public function getIncidentTemplate() - { - $templateSlug = Binput::get('slug'); - - if ($template = IncidentTemplate::where('slug', '=', $templateSlug)->first()) { - return $template; - } - - throw new ModelNotFoundException("Incident template for $templateSlug could not be found."); - } -} diff --git a/app/Http/Controllers/Dashboard/ComponentController.php b/app/Http/Controllers/Dashboard/ComponentController.php deleted file mode 100644 index c9c8e679..00000000 --- a/app/Http/Controllers/Dashboard/ComponentController.php +++ /dev/null @@ -1,196 +0,0 @@ - - */ -class ComponentController extends Controller -{ - /** - * Array of sub-menu items. - * - * @var array - */ - protected $subMenu = []; - - /** - * Creates a new component controller instance. - * - * @return void - */ - public function __construct() - { - $this->subMenu = [ - 'components' => [ - 'title' => trans('dashboard.components.components'), - 'url' => cachet_route('dashboard.components'), - 'icon' => 'ion-ios-browsers', - 'active' => false, - ], - 'groups' => [ - 'title' => trans_choice('dashboard.components.groups.groups', 2), - 'url' => cachet_route('dashboard.components.groups'), - 'icon' => 'ion-folder', - 'active' => false, - ], - ]; - - View::share([ - 'subMenu' => $this->subMenu, - 'subTitle' => trans_choice('dashboard.components.components', 2), - ]); - } - - /** - * Shows the components view. - * - * @return \Illuminate\View\View - */ - public function showComponents() - { - $components = Component::with('group')->orderBy('order')->orderBy('created_at')->get(); - - $this->subMenu['components']['active'] = true; - - return View::make('dashboard.components.index') - ->withPageTitle(trans_choice('dashboard.components.components', 2).' - '.trans('dashboard.dashboard')) - ->withComponents($components) - ->withSubMenu($this->subMenu); - } - - /** - * Shows the edit component view. - * - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return \Illuminate\View\View - */ - public function showEditComponent(Component $component) - { - $groups = ComponentGroup::all(); - - $pageTitle = sprintf('"%s" - %s - %s', $component->name, trans('dashboard.components.edit.title'), trans('dashboard.dashboard')); - - return View::make('dashboard.components.edit') - ->withPageTitle($pageTitle) - ->withComponent($component) - ->withGroups($groups); - } - - /** - * Updates a component. - * - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return \Illuminate\Http\RedirectResponse - */ - public function updateComponentAction(Component $component) - { - $componentData = Binput::get('component'); - - try { - $component = execute(new UpdateComponentCommand( - $component, - $componentData['name'], - $componentData['description'], - $componentData['status'], - $componentData['link'], - $componentData['order'], - $componentData['group_id'], - $componentData['enabled'], - null, // Meta data cannot be supplied through the dashboard yet. - $componentData['tags'], // Meta data cannot be supplied through the dashboard yet. - true // Silent since we're not really making changes to the component (this should be optional) - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.components.edit', [$component->id]) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.components.edit.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.components.edit', [$component->id]) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.components.edit.success'))); - } - - /** - * Shows the add component view. - * - * @return \Illuminate\View\View - */ - public function showAddComponent() - { - return View::make('dashboard.components.add') - ->withPageTitle(trans('dashboard.components.add.title').' - '.trans('dashboard.dashboard')) - ->withGroups(ComponentGroup::all()); - } - - /** - * Creates a new component. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function createComponentAction() - { - $componentData = Binput::get('component'); - - try { - $component = execute(new CreateComponentCommand( - $componentData['name'], - $componentData['description'], - $componentData['status'], - $componentData['link'], - $componentData['order'], - $componentData['group_id'], - $componentData['enabled'], - null, // Meta data cannot be supplied through the dashboard yet. - $componentData['tags'] - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.components.create') - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.components.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.components') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.components.add.success'))); - } - - /** - * Deletes a given component. - * - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteComponentAction(Component $component) - { - execute(new RemoveComponentCommand($component)); - - return cachet_redirect('dashboard.components') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.components.delete.success'))); - } -} diff --git a/app/Http/Controllers/Dashboard/ComponentGroupController.php b/app/Http/Controllers/Dashboard/ComponentGroupController.php deleted file mode 100644 index ad81afc9..00000000 --- a/app/Http/Controllers/Dashboard/ComponentGroupController.php +++ /dev/null @@ -1,173 +0,0 @@ - - */ -class ComponentGroupController extends Controller -{ - /** - * Array of sub-menu items. - * - * @var array - */ - protected $subMenu = []; - - /** - * Creates a new component controller instance. - * - * @return void - */ - public function __construct() - { - $this->subMenu = [ - 'components' => [ - 'title' => trans('dashboard.components.components'), - 'url' => cachet_route('dashboard.components'), - 'icon' => 'ion-ios-browsers', - 'active' => false, - ], - 'groups' => [ - 'title' => trans_choice('dashboard.components.groups.groups', 2), - 'url' => cachet_route('dashboard.components.groups'), - 'icon' => 'ion-folder', - 'active' => false, - ], - ]; - - View::share([ - 'sub_menu' => $this->subMenu, - 'subTitle' => trans_choice('dashboard.components.components', 2), - ]); - } - - /** - * Shows the component groups view. - * - * @return \Illuminate\View\View - */ - public function showComponentGroups() - { - $this->subMenu['groups']['active'] = true; - - return View::make('dashboard.components.groups.index') - ->withPageTitle(trans_choice('dashboard.components.groups.groups', 2).' - '.trans('dashboard.dashboard')) - ->withGroups(ComponentGroup::orderBy('order')->get()) - ->withSubMenu($this->subMenu); - } - - /** - * Deletes a given component group. - * - * @param \CachetHQ\Cachet\Models\ComponentGroup $group - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteComponentGroupAction(ComponentGroup $group) - { - execute(new RemoveComponentGroupCommand($group)); - - return cachet_redirect('dashboard.components.groups') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.components.delete.success'))); - } - - /** - * Shows the add component group view. - * - * @return \Illuminate\View\View - */ - public function showAddComponentGroup() - { - return View::make('dashboard.components.groups.add') - ->withPageTitle(trans('dashboard.components.groups.add.title').' - '.trans('dashboard.dashboard')); - } - - /** - * Shows the edit component group view. - * - * @param \CachetHQ\Cachet\Models\ComponentGroup $group - * - * @return \Illuminate\View\View - */ - public function showEditComponentGroup(ComponentGroup $group) - { - return View::make('dashboard.components.groups.edit') - ->withPageTitle(trans('dashboard.components.groups.edit.title').' - '.trans('dashboard.dashboard')) - ->withGroup($group); - } - - /** - * Creates a new component. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function postAddComponentGroup() - { - try { - $group = execute(new CreateComponentGroupCommand( - Binput::get('name'), - Binput::get('order', 0), - Binput::get('collapsed'), - Binput::get('visible') - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.components.groups.create') - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.components.groups.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.components.groups') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.components.groups.add.success'))); - } - - /** - * Updates a component group. - * - * @param \CachetHQ\Cachet\Models\ComponentGroup $group - * - * @return \Illuminate\Http\RedirectResponse - */ - public function updateComponentGroupAction(ComponentGroup $group) - { - try { - $group = execute(new UpdateComponentGroupCommand( - $group, - Binput::get('name'), - $group->order, - Binput::get('collapsed'), - Binput::get('visible') - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.components.groups.edit', [$group->id]) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.components.groups.edit.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.components.groups.edit', [$group->id]) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.components.groups.edit.success'))); - } -} diff --git a/app/Http/Controllers/Dashboard/DashboardController.php b/app/Http/Controllers/Dashboard/DashboardController.php deleted file mode 100644 index 2d5281a1..00000000 --- a/app/Http/Controllers/Dashboard/DashboardController.php +++ /dev/null @@ -1,206 +0,0 @@ - - */ -class DashboardController extends Controller -{ - /** - * Start date. - * - * @var \Jenssegers\Date\Date - */ - protected $startDate; - - /** - * The timezone the status page is running in. - * - * @var string - */ - protected $timeZone; - - /** - * The feed integration. - * - * @var \CachetHQ\Cachet\Integrations\Contracts\Feed - */ - protected $feed; - - /** - * The user session object. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $guard; - - /** - * Creates a new dashboard controller instance. - * - * @param \CachetHQ\Cachet\Integrations\Contracts\Feed $feed - * @param \Illuminate\Contracts\Auth\Guard $guard - * - * @return void - */ - public function __construct(Feed $feed, Guard $guard) - { - $this->feed = $feed; - $this->guard = $guard; - $this->startDate = new Date(); - $this->dateTimeZone = Config::get('cachet.timezone'); - } - - /** - * Redirect /admin to /dashboard. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function redirectAdmin() - { - return cachet_redirect('dashboard'); - } - - /** - * Shows the dashboard view. - * - * @return \Illuminate\View\View - */ - public function showDashboard() - { - $components = Component::orderBy('order')->get(); - $incidents = $this->getIncidents(); - $subscribers = $this->getSubscribers(); - - $componentGroups = $this->getVisibleGroupedComponents(); - $ungroupedComponents = Component::ungrouped()->get(); - - $welcomeUser = !Auth::user()->welcomed; - if ($welcomeUser) { - execute(new WelcomeUserCommand(Auth::user())); - } - - $entries = null; - if ($feed = $this->feed->latest() !== 1) { - if (is_object($feed)) { - $entries = array_slice($feed->channel->item, 0, 5); - } - } - - return View::make('dashboard.index') - ->withPageTitle(trans('dashboard.dashboard')) - ->withComponents($components) - ->withIncidents($incidents) - ->withSubscribers($subscribers) - ->withEntries($entries) - ->withComponentGroups($componentGroups) - ->withUngroupedComponents($ungroupedComponents) - ->withWelcomeUser($welcomeUser); - } - - /** - * Fetches all of the incidents over the last 30 days. - * - * @return \Illuminate\Support\Collection - */ - protected function getIncidents() - { - $allIncidents = Incident::whereBetween('occurred_at', [ - $this->startDate->copy()->subDays(30)->format('Y-m-d').' 00:00:00', - $this->startDate->format('Y-m-d').' 23:59:59', - ])->orderBy('occurred_at', 'desc')->get()->groupBy(function (Incident $incident) { - return (new Date($incident->occurred_at)) - ->setTimezone($this->dateTimeZone)->toDateString(); - }); - - // Add in days that have no incidents - foreach (range(0, 30) as $i) { - $date = (new Date($this->startDate))->setTimezone($this->dateTimeZone)->subDays($i); - - if (!isset($allIncidents[$date->toDateString()])) { - $allIncidents[$date->toDateString()] = []; - } - } - - // Sort the array so it takes into account the added days - $allIncidents = $allIncidents->sortBy(function ($value, $key) { - return strtotime($key); - }, SORT_REGULAR, false); - - return $allIncidents; - } - - /** - * Fetches all of the subscribers over the last 30 days. - * - * @return \Illuminate\Support\Collection - */ - protected function getSubscribers() - { - $allSubscribers = Subscriber::whereBetween('created_at', [ - $this->startDate->copy()->subDays(30)->format('Y-m-d').' 00:00:00', - $this->startDate->format('Y-m-d').' 23:59:59', - ])->orderBy('created_at', 'desc')->get()->groupBy(function (Subscriber $incident) { - return (new Date($incident->created_at)) - ->setTimezone($this->dateTimeZone)->toDateString(); - }); - - // Add in days that have no incidents - foreach (range(0, 30) as $i) { - $date = (new Date($this->startDate))->setTimezone($this->dateTimeZone)->subDays($i); - - if (!isset($allSubscribers[$date->toDateString()])) { - $allSubscribers[$date->toDateString()] = []; - } - } - - // Sort the array so it takes into account the added days - $allSubscribers = $allSubscribers->sortBy(function ($value, $key) { - return strtotime($key); - }, SORT_REGULAR, false); - - return $allSubscribers; - } - - /** - * Get visible grouped components. - * - * @return \Illuminate\Support\Collection - */ - protected function getVisibleGroupedComponents() - { - $componentGroupsBuilder = ComponentGroup::query(); - if (!$this->guard->check()) { - $componentGroupsBuilder = ComponentGroup::visible(); - } - - $usedComponentGroups = Component::grouped()->pluck('group_id'); - - return $componentGroupsBuilder->used($usedComponentGroups) - ->get(); - } -} diff --git a/app/Http/Controllers/Dashboard/IncidentController.php b/app/Http/Controllers/Dashboard/IncidentController.php deleted file mode 100644 index f5555aa0..00000000 --- a/app/Http/Controllers/Dashboard/IncidentController.php +++ /dev/null @@ -1,300 +0,0 @@ - - */ -class IncidentController extends Controller -{ - /** - * Stores the sub-sidebar tree list. - * - * @var array - */ - protected $subMenu = []; - - /** - * The guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * The system instance. - * - * @var \CachetHQ\Cachet\Integrations\Contracts\System - */ - protected $system; - - /** - * Creates a new incident controller instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth, System $system) - { - $this->auth = $auth; - $this->system = $system; - - View::share('subTitle', trans('dashboard.incidents.title')); - } - - /** - * Shows the incidents view. - * - * @return \Illuminate\View\View - */ - public function showIncidents() - { - $incidents = Incident::with('user')->orderBy('created_at', 'desc')->get(); - - return View::make('dashboard.incidents.index') - ->withPageTitle(trans('dashboard.incidents.incidents').' - '.trans('dashboard.dashboard')) - ->withIncidents($incidents); - } - - /** - * Shows the add incident view. - * - * @return \Illuminate\View\View - */ - public function showAddIncident() - { - return View::make('dashboard.incidents.add') - ->withPageTitle(trans('dashboard.incidents.add.title').' - '.trans('dashboard.dashboard')) - ->withComponentsInGroups(ComponentGroup::with('components')->get()) - ->withComponentsOutGroups(Component::where('group_id', '=', 0)->get()) - ->withNotificationsEnabled($this->system->canNotifySubscribers()) - ->withIncidentTemplates(IncidentTemplate::all()); - } - - /** - * Shows the incident templates. - * - * @return \Illuminate\View\View - */ - public function showTemplates() - { - return View::make('dashboard.templates.index') - ->withPageTitle(trans('dashboard.incidents.templates.title').' - '.trans('dashboard.dashboard')) - ->withIncidentTemplates(IncidentTemplate::all()); - } - - /** - * Creates a new incident. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function createIncidentAction() - { - try { - $incident = execute(new CreateIncidentCommand( - Binput::get('name'), - Binput::get('status'), - Binput::get('message', null, false, false), - Binput::get('visible', true), - Binput::get('component_id'), - Binput::get('component_status'), - Binput::get('notify', false), - Binput::get('stickied', false), - Binput::get('occurred_at'), - null, - [], - ['seo' => Binput::get('seo', [])] - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.incidents.create') - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.incidents') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.add.success'))); - } - - /** - * Shows the add incident template view. - * - * @return \Illuminate\View\View - */ - public function showAddIncidentTemplate() - { - return View::make('dashboard.templates.add') - ->withPageTitle(trans('dashboard.incidents.templates.add.title').' - '.trans('dashboard.dashboard')); - } - - /** - * Shows the edit incident template view. - * - * @param \CachetHQ\Cachet\Models\IncidentTemplate $template - * - * @return \Illuminate\View\View - */ - public function showEditTemplateAction(IncidentTemplate $template) - { - return View::make('dashboard.templates.edit') - ->withPageTitle(trans('dashboard.incidents.templates.edit.title').' - '.trans('dashboard.dashboard')) - ->withTemplate($template); - } - - /** - * Deletes an incident template. - * - * @param \CachetHQ\Cachet\Models\IncidentTemplate $template - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteTemplateAction(IncidentTemplate $template) - { - $template->delete(); - - return cachet_redirect('dashboard.templates') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.templates.delete.success'))); - } - - /** - * Creates a new incident template. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function createIncidentTemplateAction() - { - try { - IncidentTemplate::create([ - 'name' => Binput::get('name'), - 'template' => Binput::get('template', null, false, false), - ]); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.templates.create') - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.templates.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.templates') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.templates.add.success'))); - } - - /** - * Deletes a given incident. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteIncidentAction(Incident $incident) - { - execute(new RemoveIncidentCommand($incident)); - - return cachet_redirect('dashboard.incidents') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.delete.success'))); - } - - /** - * Shows the edit incident view. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\View\View - */ - public function showEditIncidentAction(Incident $incident) - { - return View::make('dashboard.incidents.edit') - ->withPageTitle(trans('dashboard.incidents.edit.title').' - '.trans('dashboard.dashboard')) - ->withIncident($incident) - ->withComponentsInGroups(ComponentGroup::with('components')->get()) - ->withComponentsOutGroups(Component::where('group_id', '=', 0)->get()) - ->withNotificationsEnabled($this->system->canNotifySubscribers()); - } - - /** - * Edit an incident. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\Http\RedirectResponse - */ - public function editIncidentAction(Incident $incident) - { - try { - $incident = execute(new UpdateIncidentCommand( - $incident, - Binput::get('name'), - Binput::get('status'), - Binput::get('message'), - Binput::get('visible', true), - Binput::get('component_id'), - Binput::get('component_status'), - Binput::get('notify', true), - Binput::get('stickied', false), - Binput::get('occurred_at'), - null, - [], - ['seo' => Binput::get('seo', [])] - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.incidents.edit', ['id' => $incident->id]) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.templates.edit.failure'))) - ->withErrors($e->getMessageBag()); - } - - if ($incident->component) { - $incident->component->update(['status' => Binput::get('component_status')]); - } - - return cachet_redirect('dashboard.incidents.edit', ['id' => $incident->id]) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.edit.success'))); - } - - /** - * Edit an incident template. - * - * @param \CachetHQ\Cachet\Models\IncidentTemplate $template - * - * @return \Illuminate\Http\RedirectResponse - */ - public function editTemplateAction(IncidentTemplate $template) - { - try { - $template->update(Binput::get('template')); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.templates.edit', ['id' => $template->id]) - ->withUpdatedTemplate($template) - ->withTemplateErrors($e->getMessageBag()->getErrors()); - } - - return cachet_redirect('dashboard.templates.edit', ['id' => $template->id]) - ->withUpdatedTemplate($template); - } -} diff --git a/app/Http/Controllers/Dashboard/IncidentTemplateController.php b/app/Http/Controllers/Dashboard/IncidentTemplateController.php deleted file mode 100644 index 853b5b2b..00000000 --- a/app/Http/Controllers/Dashboard/IncidentTemplateController.php +++ /dev/null @@ -1,161 +0,0 @@ - - */ -class IncidentTemplateController extends Controller -{ - /** - * Stores the sub-sidebar tree list. - * - * @var array - */ - protected $subMenu = []; - - /** - * The guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * The system instance. - * - * @var \CachetHQ\Cachet\Integrations\Contracts\System - */ - protected $system; - - /** - * Creates a new incident controller instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth, System $system) - { - $this->auth = $auth; - $this->system = $system; - - View::share('sub_title', trans('dashboard.incidents.title')); - } - - /** - * Shows the incident templates. - * - * @return \Illuminate\View\View - */ - public function showTemplates() - { - return View::make('dashboard.templates.index') - ->withPageTitle(trans('dashboard.incidents.templates.title').' - '.trans('dashboard.dashboard')) - ->withIncidentTemplates(IncidentTemplate::all()); - } - - /** - * Shows the add incident template view. - * - * @return \Illuminate\View\View - */ - public function showAddIncidentTemplate() - { - return View::make('dashboard.templates.add') - ->withPageTitle(trans('dashboard.incidents.templates.add.title').' - '.trans('dashboard.dashboard')); - } - - /** - * Shows the edit incident template view. - * - * @param \CachetHQ\Cachet\Models\IncidentTemplate $template - * - * @return \Illuminate\View\View - */ - public function showEditTemplateAction(IncidentTemplate $template) - { - return View::make('dashboard.templates.edit') - ->withPageTitle(trans('dashboard.incidents.templates.edit.title').' - '.trans('dashboard.dashboard')) - ->withTemplate($template); - } - - /** - * Deletes an incident template. - * - * @param \CachetHQ\Cachet\Models\IncidentTemplate $template - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteTemplateAction(IncidentTemplate $template) - { - $template->delete(); - - return cachet_redirect('dashboard.templates') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.templates.delete.success'))); - } - - /** - * Creates a new incident template. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function createIncidentTemplateAction() - { - try { - IncidentTemplate::create([ - 'name' => Binput::get('name'), - 'template' => Binput::get('template', null, false, false), - ]); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.templates.create') - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.templates.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.templates') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.templates.add.success'))); - } - - /** - * Edit an incident template. - * - * @param \CachetHQ\Cachet\Models\IncidentTemplate $template - * - * @return \Illuminate\Http\RedirectResponse - */ - public function editTemplateAction(IncidentTemplate $template) - { - try { - $template->update(Binput::get('template')); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.templates.edit', ['id' => $template->id]) - ->withUpdatedTemplate($template) - ->withTemplateErrors($e->getMessageBag()->getErrors()); - } - - return cachet_redirect('dashboard.templates.edit', ['id' => $template->id]) - ->withUpdatedTemplate($template); - } -} diff --git a/app/Http/Controllers/Dashboard/IncidentUpdateController.php b/app/Http/Controllers/Dashboard/IncidentUpdateController.php deleted file mode 100644 index 092809e3..00000000 --- a/app/Http/Controllers/Dashboard/IncidentUpdateController.php +++ /dev/null @@ -1,172 +0,0 @@ - - */ -class IncidentUpdateController extends Controller -{ - /** - * Stores the sub-sidebar tree list. - * - * @var array - */ - protected $subMenu = []; - - /** - * The guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * The system instance. - * - * @var \CachetHQ\Cachet\Integrations\Contracts\System - */ - protected $system; - - /** - * Creates a new incident controller instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth, System $system) - { - $this->auth = $auth; - $this->system = $system; - - View::share('sub_title', trans('dashboard.incidents.title')); - } - - /** - * Shows the incident update form. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\View\View - */ - public function showIncidentUpdates(Incident $incident) - { - return View::make('dashboard.incidents.updates.index')->withIncident($incident); - } - - /** - * Shows the incident update form. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\View\View - */ - public function showCreateIncidentUpdateAction(Incident $incident) - { - return View::make('dashboard.incidents.updates.add') - ->withIncident($incident) - ->withIncidentTemplates(IncidentTemplate::all()) - ->withNotificationsEnabled($this->system->canNotifySubscribers()); - } - - /** - * Creates a new incident update. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\Http\RedirectResponse - */ - public function createIncidentUpdateAction(Incident $incident) - { - try { - $incidentUpdate = execute(new CreateIncidentUpdateCommand( - $incident, - Binput::get('status'), - Binput::get('message'), - Binput::get('component_id'), - Binput::get('component_status'), - $this->auth->user() - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.incidents.updates.create', ['id' => $incident->id]) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.updates.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - if ($incident->component) { - $incident->component->update(['status' => Binput::get('component_status')]); - } - - return cachet_redirect('dashboard.incidents') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.updates.success'))); - } - - /** - * Shows the edit incident view. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * @param \CachetHQ\Cachet\Models\IncidentUpdate $incidentUpdate - * - * @return \Illuminate\View\View - */ - public function showEditIncidentUpdateAction(Incident $incident, IncidentUpdate $incidentUpdate) - { - return View::make('dashboard.incidents.updates.edit') - ->withIncident($incident) - ->withUpdate($incidentUpdate) - ->withNotificationsEnabled($this->system->canNotifySubscribers()); - } - - /** - * Edit an incident update. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * @param \CachetHQ\Cachet\Models\IncidentUpdate $incidentUpdate - * - * @return \Illuminate\Http\RedirectResponse - */ - public function editIncidentUpdateAction(Incident $incident, IncidentUpdate $incidentUpdate) - { - try { - $incidentUpdate = execute(new UpdateIncidentUpdateCommand( - $incidentUpdate, - Binput::get('status'), - Binput::get('message'), - $this->auth->user() - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.incidents.updates.edit', ['incident' => $incident->id, 'incident_update' => $incidentUpdate->id]) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.incidents.updates.edit.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.incidents.updates', ['incident' => $incident->id]) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.incidents.updates.edit.success'))); - } -} diff --git a/app/Http/Controllers/Dashboard/MetricController.php b/app/Http/Controllers/Dashboard/MetricController.php deleted file mode 100644 index 1a0b601c..00000000 --- a/app/Http/Controllers/Dashboard/MetricController.php +++ /dev/null @@ -1,171 +0,0 @@ -orderBy('id')->get(); - - return View::make('dashboard.metrics.index') - ->withPageTitle(trans('dashboard.metrics.metrics').' - '.trans('dashboard.dashboard')) - ->withMetrics($metrics); - } - - /** - * Shows the add metric view. - * - * @return \Illuminate\View\View - */ - public function showAddMetric() - { - return View::make('dashboard.metrics.add') - ->withPageTitle(trans('dashboard.metrics.add.title').' - '.trans('dashboard.dashboard')); - } - - /** - * Shows the metric points. - * - * @return \Illuminate\View\View - */ - public function showMetricPoints() - { - return View::make('dashboard.metrics.points.index') - ->withPageTitle(trans('dashboard.metrics.points.title').' - '.trans('dashboard.dashboard')) - ->withMetrics(MetricPoint::all()); - } - - /** - * Creates a new metric. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function createMetricAction() - { - $metricData = Binput::get('metric'); - - try { - execute(new CreateMetricCommand( - $metricData['name'], - $metricData['suffix'], - $metricData['description'], - $metricData['default_value'], - $metricData['calc_type'], - $metricData['display_chart'], - $metricData['places'], - $metricData['default_view'], - $metricData['threshold'], - 0, // Default order - $metricData['visible'] - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.metrics.create') - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.metrics.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.metrics') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.metrics.add.success'))); - } - - /** - * Shows the add metric point view. - * - * @return \Illuminate\View\View - */ - public function showAddMetricPoint() - { - return View::make('dashboard.metrics.points.add') - ->withPageTitle(trans('dashboard.metrics.points.add.title').' - '.trans('dashboard.dashboard')); - } - - /** - * Deletes a given metric. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteMetricAction(Metric $metric) - { - execute(new RemoveMetricCommand($metric)); - - return cachet_redirect('dashboard.metrics') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.metrics.delete.success'))); - } - - /** - * Shows the edit metric view. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return \Illuminate\View\View - */ - public function showEditMetricAction(Metric $metric) - { - return View::make('dashboard.metrics.edit') - ->withPageTitle(trans('dashboard.metrics.edit.title').' - '.trans('dashboard.dashboard')) - ->withMetric($metric); - } - - /** - * Edit an metric. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return \Illuminate\Http\RedirectResponse - */ - public function editMetricAction(Metric $metric) - { - try { - execute(new UpdateMetricCommand( - $metric, - Binput::get('name', null, false), - Binput::get('suffix', null, false), - Binput::get('description', null, false), - Binput::get('default_value', null, false), - Binput::get('calc_type', null, false), - Binput::get('display_chart', null, false), - Binput::get('places', null, false), - Binput::get('default_view', null, false), - Binput::get('threshold', null, false), - null, - Binput::get('visible', null, false) - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.metrics.edit', [$metric->id]) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s', trans('dashboard.notifications.whoops'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.metrics.edit', [$metric->id]) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.metrics.edit.success'))); - } -} diff --git a/app/Http/Controllers/Dashboard/ScheduleController.php b/app/Http/Controllers/Dashboard/ScheduleController.php deleted file mode 100644 index c06216a9..00000000 --- a/app/Http/Controllers/Dashboard/ScheduleController.php +++ /dev/null @@ -1,175 +0,0 @@ - - */ -class ScheduleController extends Controller -{ - /** - * Stores the sub-sidebar tree list. - * - * @var array - */ - protected $subMenu = []; - - /** - * The system instance. - * - * @var \CachetHQ\Cachet\Integrations\Contracts\System - */ - protected $system; - - /** - * Creates a new schedule controller instance. - * - * @return void - */ - public function __construct(System $system) - { - $this->system = $system; - View::share('subTitle', trans('dashboard.schedule.title')); - } - - /** - * Lists all scheduled maintenance. - * - * @return \Illuminate\View\View - */ - public function showIndex() - { - $schedule = Schedule::orderBy('created_at')->get(); - - return View::make('dashboard.maintenance.index') - ->withPageTitle(trans('dashboard.schedule.schedule').' - '.trans('dashboard.dashboard')) - ->withSchedule($schedule); - } - - /** - * Shows the add schedule maintenance form. - * - * @return \Illuminate\View\View - */ - public function showAddSchedule() - { - $incidentTemplates = IncidentTemplate::all(); - - return View::make('dashboard.maintenance.add') - ->withPageTitle(trans('dashboard.schedule.add.title').' - '.trans('dashboard.dashboard')) - ->withIncidentTemplates($incidentTemplates) - ->withNotificationsEnabled($this->system->canNotifySubscribers()); - } - - /** - * Creates a new scheduled maintenance. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function addScheduleAction() - { - try { - execute(new CreateScheduleCommand( - Binput::get('name'), - Binput::get('message', null, false, false), - Binput::get('status', Schedule::UPCOMING), - Binput::get('scheduled_at'), - Binput::get('completed_at'), - Binput::get('components', []), - Binput::get('notify', false) - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.schedule.create') - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.schedule.edit.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.schedule') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.schedule.add.success'))); - } - - /** - * Shows the edit schedule maintenance form. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return \Illuminate\View\View - */ - public function showEditSchedule(Schedule $schedule) - { - $incidentTemplates = IncidentTemplate::all(); - - return View::make('dashboard.maintenance.edit') - ->withPageTitle(trans('dashboard.schedule.edit.title').' - '.trans('dashboard.dashboard')) - ->withIncidentTemplates($incidentTemplates) - ->withSchedule($schedule); - } - - /** - * Updates the given incident. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return \Illuminate\Http\RedirectResponse - */ - public function editScheduleAction(Schedule $schedule) - { - try { - $schedule = execute(new UpdateScheduleCommand( - $schedule, - Binput::get('name', null), - Binput::get('message', null), - Binput::get('status', null), - Binput::get('scheduled_at', null), - Binput::get('completed_at', null), - Binput::get('components', []) - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.schedule.edit', [$schedule->id]) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.schedule.edit.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.schedule.edit', [$schedule->id]) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.schedule.edit.success'))); - } - - /** - * Deletes a given schedule. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteScheduleAction(Schedule $schedule) - { - execute(new DeleteScheduleCommand($schedule)); - - return cachet_redirect('dashboard.schedule') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.schedule.delete.success'))); - } -} diff --git a/app/Http/Controllers/Dashboard/SettingsController.php b/app/Http/Controllers/Dashboard/SettingsController.php deleted file mode 100644 index f128e227..00000000 --- a/app/Http/Controllers/Dashboard/SettingsController.php +++ /dev/null @@ -1,438 +0,0 @@ -subMenu = [ - 'setup' => [ - 'title' => trans('dashboard.settings.app-setup.app-setup'), - 'url' => cachet_route('dashboard.settings.setup'), - 'icon' => 'ion-gear-b', - 'active' => false, - ], - 'theme' => [ - 'title' => trans('dashboard.settings.theme.theme'), - 'url' => cachet_route('dashboard.settings.theme'), - 'icon' => 'ion-paintbrush', - 'active' => false, - ], - 'stylesheet' => [ - 'title' => trans('dashboard.settings.stylesheet.stylesheet'), - 'url' => cachet_route('dashboard.settings.stylesheet'), - 'icon' => 'ion-paintbucket', - 'active' => false, - ], - 'customization' => [ - 'title' => trans('dashboard.settings.customization.customization'), - 'url' => cachet_route('dashboard.settings.customization'), - 'icon' => 'ion-wand', - 'active' => false, - ], - 'localization' => [ - 'title' => trans('dashboard.settings.localization.localization'), - 'url' => cachet_route('dashboard.settings.localization'), - 'icon' => 'ion-earth', - 'active' => false, - ], - 'security' => [ - 'title' => trans('dashboard.settings.security.security'), - 'url' => cachet_route('dashboard.settings.security'), - 'icon' => 'ion-lock-combination', - 'active' => false, - ], - 'analytics' => [ - 'title' => trans('dashboard.settings.analytics.analytics'), - 'url' => cachet_route('dashboard.settings.analytics'), - 'icon' => 'ion-stats-bars', - 'active' => false, - ], - 'log' => [ - 'title' => trans('dashboard.settings.log.log'), - 'url' => cachet_route('dashboard.settings.log'), - 'icon' => 'ion-document-text', - 'active' => false, - ], - 'credits' => [ - 'title' => trans('dashboard.settings.credits.credits'), - 'url' => cachet_route('dashboard.settings.credits'), - 'icon' => 'ion-ios-list', - 'active' => false, - ], - 'mail' => [ - 'title' => trans('dashboard.settings.mail.mail'), - 'url' => cachet_route('dashboard.settings.mail'), - 'icon' => 'ion-paper-airplane', - 'active' => false, - ], - 'about' => [ - 'title' => CACHET_VERSION, - 'url' => 'javascript: void(0);', - 'icon' => 'ion-flag', - 'active' => false, - ], - ]; - - View::share([ - 'subTitle' => trans('dashboard.settings.settings'), - 'subMenu' => $this->subMenu, - ]); - } - - /** - * Shows the settings setup view. - * - * @return \Illuminate\View\View - */ - public function showSetupView() - { - $this->subMenu['setup']['active'] = true; - - Session::flash('redirect_to', $this->subMenu['setup']['url']); - - return View::make('dashboard.settings.app-setup') - ->withPageTitle(trans('dashboard.settings.app-setup.app-setup').' - '.trans('dashboard.dashboard')) - ->withSubMenu($this->subMenu) - ->withRawAppAbout(Config::get('setting.app_about')); - } - - /** - * Shows the settings analytics view. - * - * @return \Illuminate\View\View - */ - public function showAnalyticsView() - { - $this->subMenu['analytics']['active'] = true; - - Session::flash('redirect_to', $this->subMenu['analytics']['url']); - - return View::make('dashboard.settings.analytics') - ->withPageTitle(trans('dashboard.settings.analytics.analytics').' - '.trans('dashboard.dashboard')) - ->withSubMenu($this->subMenu); - } - - /** - * Shows the settings localization view. - * - * @return \Illuminate\View\View - */ - public function showLocalizationView() - { - $this->subMenu['localization']['active'] = true; - - Session::flash('redirect_to', $this->subMenu['localization']['url']); - - return View::make('dashboard.settings.localization') - ->withPageTitle(trans('dashboard.settings.localization.localization').' - '.trans('dashboard.dashboard')) - ->withSubMenu($this->subMenu); - } - - /** - * Shows the settings customization view. - * - * @return \Illuminate\View\View - */ - public function showCustomizationView() - { - $this->subMenu['customization']['active'] = true; - - Session::flash('redirect_to', $this->subMenu['customization']['url']); - - return View::make('dashboard.settings.customization') - ->withPageTitle(trans('dashboard.settings.customization.customization').' - '.trans('dashboard.dashboard')) - ->withSubMenu($this->subMenu); - } - - /** - * Shows the settings theme view. - * - * @return \Illuminate\View\View - */ - public function showThemeView() - { - $this->subMenu['theme']['active'] = true; - - Session::flash('redirect_to', $this->subMenu['theme']['url']); - - return View::make('dashboard.settings.theme') - ->withPageTitle(trans('dashboard.settings.theme.theme').' - '.trans('dashboard.dashboard')) - ->withSubMenu($this->subMenu); - } - - /** - * Shows the settings security view. - * - * @return \Illuminate\View\View - */ - public function showSecurityView() - { - $this->subMenu['security']['active'] = true; - - $unsecureUsers = User::whereNull('google_2fa_secret')->orWhere('google_2fa_secret', '=', '')->get(); - - Session::flash('redirect_to', $this->subMenu['security']['url']); - - return View::make('dashboard.settings.security') - ->withPageTitle(trans('dashboard.settings.security.security').' - '.trans('dashboard.dashboard')) - ->withSubMenu($this->subMenu) - ->withUnsecureUsers($unsecureUsers); - } - - /** - * Shows the settings stylesheet view. - * - * @return \Illuminate\View\View - */ - public function showStylesheetView() - { - $this->subMenu['stylesheet']['active'] = true; - - Session::flash('redirect_to', $this->subMenu['stylesheet']['url']); - - return View::make('dashboard.settings.stylesheet') - ->withPageTitle(trans('dashboard.settings.stylesheet.stylesheet').' - '.trans('dashboard.dashboard')) - ->withSubMenu($this->subMenu); - } - - /** - * Show the credits view. - * - * @return \Illuminate\View\View - */ - public function showCreditsView() - { - $this->subMenu['credits']['active'] = true; - - $credits = app(Credits::class)->latest(); - - $backers = $credits['backers']; - $contributors = $credits['contributors']; - - shuffle($backers); - shuffle($contributors); - - return View::make('dashboard.settings.credits') - ->withPageTitle(trans('dashboard.settings.credits.credits').' - '.trans('dashboard.dashboard')) - ->withBackers($backers) - ->withContributors($contributors) - ->withSubMenu($this->subMenu); - } - - /** - * Show the most recent log. - * - * @return \Illuminate\View\View - */ - public function showLogView() - { - $this->subMenu['log']['active'] = true; - - $log = Log::getLogger(); - - $logContents = ''; - - collect($log->getHandlers())->reject(function ($handler) { - return $handler instanceof SyslogHandler; - })->each(function ($handler) use (&$logContents, $log) { - if (file_exists($path = $log->getHandlers()[0]->getUrl())) { - $logContents = file_get_contents($path); - } - }); - - return View::make('dashboard.settings.log')->withLog($logContents)->withSubMenu($this->subMenu); - } - - /** - * Show the mail settings view. - * - * @return \Illuminate\View\View - */ - public function showMailView() - { - $this->subMenu['mail']['active'] = true; - - return View::make('dashboard.settings.mail')->withConfig(Config::get('mail')); - } - - /** - * Test the mail config. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function testMail() - { - Auth::user()->notify(new SystemTestNotification()); - - return cachet_redirect('dashboard.settings.mail') - ->withSuccess(trans('dashboard.notifications.awesome')); - } - - /** - * Handle updating of the settings. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function postMail() - { - $config = Binput::get('config'); - - execute(new UpdateConfigCommand($config)); - - return cachet_redirect('dashboard.settings.mail') - ->withInput(Binput::all()) - ->withSuccess(trans('dashboard.notifications.awesome')); - } - - /** - * Updates the status page settings. - * - * @return \Illuminate\View\View - */ - public function postSettings() - { - $setting = app(Repository::class); - - if (Binput::get('remove_banner') === '1') { - $setting->set('app_banner', null); - } - - $parameters = Binput::all(); - - if (isset($parameters['header'])) { - if ($header = Binput::get('header', null, false, false)) { - $setting->set('header', $header); - } else { - $setting->delete('header'); - } - } - - if (isset($parameters['footer'])) { - if ($footer = Binput::get('footer', null, false, false)) { - $setting->set('footer', $footer); - } else { - $setting->delete('footer'); - } - } - - if (isset($parameters['stylesheet'])) { - if ($stylesheet = Binput::get('stylesheet', null, false, false)) { - $setting->set('stylesheet', $stylesheet); - } else { - $setting->delete('stylesheet'); - } - } - - if (Binput::hasFile('app_banner')) { - $this->handleUpdateBanner($setting); - } - - $excludedParams = [ - '_token', - 'app_banner', - 'remove_banner', - 'header', - 'footer', - 'stylesheet', - ]; - - try { - foreach (Binput::except($excludedParams) as $settingName => $settingValue) { - if ($settingName === 'app_analytics_pi_url') { - $settingValue = rtrim($settingValue, '/'); - } - - $setting->set($settingName, $settingValue); - } - } catch (Exception $e) { - return Redirect::back()->withErrors(trans('dashboard.settings.edit.failure')); - } - - if (Binput::has('app_locale')) { - Lang::setLocale(Binput::get('app_locale')); - } - - if (Binput::has('always_authenticate')) { - Artisan::call('route:clear'); - } - - return Redirect::back()->withSuccess(trans('dashboard.settings.edit.success')); - } - - /** - * Handle updating of the banner image. - * - * @param \CachetHQ\Cachet\Settings\Repository $setting - * - * @return void - */ - protected function handleUpdateBanner(Repository $setting) - { - $file = Binput::file('app_banner'); - $redirectUrl = $this->subMenu['theme']['url']; - - // Image Validation. - // Image size in bytes. - $maxSize = $file->getMaxFilesize(); - - if ($file->getSize() > $maxSize) { - return Redirect::to($redirectUrl)->withErrors(trans('dashboard.settings.app-setup.too-big', ['size' => $maxSize])); - } - - if (!$file->isValid() || $file->getError()) { - return Redirect::to($redirectUrl)->withErrors($file->getErrorMessage()); - } - - if (!Str::startsWith($file->getMimeType(), 'image/')) { - return Redirect::to($redirectUrl)->withErrors(trans('dashboard.settings.app-setup.images-only')); - } - - // Store the banner. - $setting->set('app_banner', base64_encode(file_get_contents($file->getRealPath()))); - - // Store the banner type. - $setting->set('app_banner_type', $file->getMimeType()); - } -} diff --git a/app/Http/Controllers/Dashboard/SubscriberController.php b/app/Http/Controllers/Dashboard/SubscriberController.php deleted file mode 100644 index 17de83eb..00000000 --- a/app/Http/Controllers/Dashboard/SubscriberController.php +++ /dev/null @@ -1,89 +0,0 @@ -withPageTitle(trans('dashboard.subscribers.subscribers').' - '.trans('dashboard.dashboard')) - ->withSubscribers(Subscriber::with('subscriptions.component')->get()); - } - - /** - * Shows the add subscriber view. - * - * @return \Illuminate\View\View - */ - public function showAddSubscriber() - { - return View::make('dashboard.subscribers.add') - ->withPageTitle(trans('dashboard.subscribers.add.title').' - '.trans('dashboard.dashboard')); - } - - /** - * Creates a new subscriber. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function createSubscriberAction() - { - $verified = app(Repository::class)->get('setting.skip_subscriber_verification'); - - try { - $subscribers = preg_split("/\r\n|\n|\r/", Binput::get('email')); - - foreach ($subscribers as $subscriber) { - execute(new SubscribeSubscriberCommand($subscriber, $verified)); - } - } catch (ValidationException $e) { - return cachet_redirect('dashboard.subscribers.create') - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.subscribers.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.subscribers.create') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.subscribers.add.success'))); - } - - /** - * Deletes a subscriber. - * - * @param \CachetHQ\Cachet\Models\Subscriber $subscriber - * - * @throws \Exception - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteSubscriberAction(Subscriber $subscriber) - { - execute(new UnsubscribeSubscriberCommand($subscriber)); - - return cachet_redirect('dashboard.subscribers'); - } -} diff --git a/app/Http/Controllers/Dashboard/TeamController.php b/app/Http/Controllers/Dashboard/TeamController.php deleted file mode 100644 index b7621619..00000000 --- a/app/Http/Controllers/Dashboard/TeamController.php +++ /dev/null @@ -1,160 +0,0 @@ -withPageTitle(trans('dashboard.team.team').' - '.trans('dashboard.dashboard')) - ->withTeamMembers($team); - } - - /** - * Shows the edit team member view. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return \Illuminate\View\View - */ - public function showTeamMemberView(User $user) - { - return View::make('dashboard.team.edit') - ->withPageTitle(trans('dashboard.team.edit.title').' - '.trans('dashboard.dashboard')) - ->withUser($user); - } - - /** - * Shows the add team member view. - * - * @return \Illuminate\View\View - */ - public function showAddTeamMemberView() - { - return View::make('dashboard.team.add') - ->withPageTitle(trans('dashboard.team.add.title').' - '.trans('dashboard.dashboard')); - } - - /** - * Shows the invite team member view. - * - * @return \Illuminate\View\View - */ - public function showInviteTeamMemberView() - { - return View::make('dashboard.team.invite') - ->withPageTitle(trans('dashboard.team.invite.title').' - '.trans('dashboard.dashboard')); - } - - /** - * Creates a new team member. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function postAddUser() - { - try { - execute(new CreateUserCommand( - Binput::get('username'), - Binput::get('password'), - Binput::get('email'), - Binput::get('level') - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.team.create') - ->withInput(Binput::except('password')) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.team.add.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.team.create') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.team.add.success'))); - } - - /** - * Updates a user. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return \Illuminate\View\View - */ - public function postUpdateUser(User $user) - { - $userData = array_filter(Binput::only(['username', 'email', 'password', 'level'])); - - try { - $user->update($userData); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.team.edit', [$user->id]) - ->withInput($userData) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.team.edit.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.team.edit', [$user->id]) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.team.edit.success'))); - } - - /** - * Creates a new team member. - * - * @return \Illuminate\Http\RedirectResponse - */ - public function postInviteUser() - { - try { - execute(new InviteUserCommand( - array_unique(array_filter((array) Binput::get('emails'))) - )); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.team.invite') - ->withInput(Binput::except('password')) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.team.invite.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.team.invite') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.team.invite.success'))); - } - - /** - * Delete a user. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return \Illuminate\Http\RedirectResponse - */ - public function deleteUser(User $user) - { - execute(new RemoveUserCommand($user)); - - return cachet_redirect('dashboard.team') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.team.delete.success'))); - } -} diff --git a/app/Http/Controllers/Dashboard/UserController.php b/app/Http/Controllers/Dashboard/UserController.php deleted file mode 100644 index ba01e862..00000000 --- a/app/Http/Controllers/Dashboard/UserController.php +++ /dev/null @@ -1,92 +0,0 @@ -withPageTitle(trans('dashboard.team.profile').' - '.trans('dashboard.dashboard')); - } - - /** - * Updates the current user. - * - * @throws \PragmaRX\Google2FA\Exceptions\IncompatibleWithGoogleAuthenticatorException - * @throws \PragmaRX\Google2FA\Exceptions\InvalidCharactersException - * - * @return \Illuminate\View\View - */ - public function postUser() - { - $userData = array_filter(Binput::only(['username', 'email', 'password', 'google2fa'])); - - $enable2FA = (bool) Arr::pull($userData, 'google2fa'); - - // Let's enable/disable auth - if ($enable2FA && !Auth::user()->hasTwoFactor) { - event(new UserEnabledTwoAuthEvent(Auth::user())); - $google2fa = new Google2FA(); - $userData['google_2fa_secret'] = $google2fa->generateSecretKey(); - } elseif (!$enable2FA) { - event(new UserDisabledTwoAuthEvent(Auth::user())); - $userData['google_2fa_secret'] = ''; - } - - try { - Auth::user()->update($userData); - } catch (ValidationException $e) { - return cachet_redirect('dashboard.user') - ->withInput($userData) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('dashboard.team.edit.failure'))) - ->withErrors($e->getMessageBag()); - } - - return cachet_redirect('dashboard.user') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('dashboard.team.edit.success'))); - } - - /** - * Regenerates the users API key. - * - * @param \CachetHQ\Cachet\Models\User $user - * - * @return \Illuminate\View\View - */ - public function regenerateApiKey(User $user) - { - $user->api_key = User::generateApiKey(); - $user->save(); - - event(new UserRegeneratedApiTokenEvent($user)); - - return cachet_redirect('dashboard.user'); - } -} diff --git a/app/Http/Controllers/SetupController.php b/app/Http/Controllers/SetupController.php deleted file mode 100644 index 52bf51f7..00000000 --- a/app/Http/Controllers/SetupController.php +++ /dev/null @@ -1,284 +0,0 @@ - - * @author Graham Campbell - * @author Joseph Cohen - */ -class SetupController extends Controller -{ - /** - * Array of cache drivers. - * - * @var string[] - */ - protected $cacheDrivers = [ - 'apc' => 'APC(u)', - 'array' => 'Array', - 'file' => 'File', - 'database' => 'Database', - 'memcached' => 'Memcached', - 'redis' => 'Redis', - ]; - - /** - * Array of cache drivers. - * - * @var string[] - */ - protected $mailDrivers = [ - 'smtp' => 'SMTP', - 'mail' => 'Mail', - 'sendmail' => 'Sendmail', - 'mailgun' => 'Mailgun', - 'mandrill' => 'Mandrill', - 'ses' => 'Amazon SES', - 'sparkpost' => 'SparkPost', - 'log' => 'Log (Testing)', - ]; - - /** - * Array of queue drivers. - * - * @var string[] - */ - protected $queueDrivers = [ - 'null' => 'None', - 'sync' => 'Synchronous', - 'database' => 'Database', - 'beanstalkd' => 'Beanstalk', - 'sqs' => 'Amazon SQS', - 'redis' => 'Redis', - ]; - - /** - * Array of step1 rules. - * - * @var string[] - */ - protected $rulesStep1; - - /** - * Array of step2 rules. - * - * @var string[] - */ - protected $rulesStep2; - - /** - * Array of step3 rules. - * - * @var string[] - */ - protected $rulesStep3; - - /** - * Create a new controller instance. - * - * @return void - */ - public function __construct() - { - $this->rulesStep1 = [ - 'env.cache_driver' => 'required|in:'.implode(',', array_keys($this->cacheDrivers)), - 'env.session_driver' => 'required|in:'.implode(',', array_keys($this->cacheDrivers)), - 'env.queue_driver' => 'required|in:'.implode(',', array_keys($this->queueDrivers)), - 'env.mail_driver' => 'required|in:'.implode(',', array_keys($this->mailDrivers)), - ]; - - $this->rulesStep2 = [ - 'settings.app_name' => 'required', - 'settings.app_domain' => 'required', - 'settings.app_timezone' => 'required', - 'settings.app_locale' => 'required', - 'settings.show_support' => 'bool', - ]; - - $this->rulesStep3 = [ - 'user.username' => ['required', 'regex:/\A(?!.*[:;]-\))[ -~]+\z/'], - 'user.email' => 'email|required', - 'user.password' => 'required', - ]; - } - - /** - * Returns the setup page. - * - * @return \Illuminate\View\View - */ - public function getIndex() - { - $requestedLanguages = Request::getLanguages(); - $userLanguage = Config::get('app.locale'); - $langs = Config::get('langs'); - - foreach ($requestedLanguages as $language) { - $language = str_replace('_', '-', $language); - - if (isset($langs[$language])) { - $userLanguage = $language; - break; - } - } - - app('translator')->setLocale($userLanguage); - - // Since .env may already be configured, we should show that data! - $cacheConfig = [ - 'driver' => Config::get('cache.default'), - ]; - - $sessionConfig = [ - 'driver' => Config::get('session.driver'), - ]; - - $queueConfig = [ - 'driver' => Config::get('queue.default'), - ]; - - $mailConfig = [ - 'driver' => Config::get('mail.driver'), - 'host' => Config::get('mail.host'), - 'from' => Config::get('mail.from'), - 'username' => Config::get('mail.username'), - 'password' => Config::get('mail.password'), - ]; - - return View::make('setup.index') - ->withPageTitle(trans('setup.setup')) - ->withCacheDrivers($this->cacheDrivers) - ->withQueueDrivers($this->queueDrivers) - ->withMailDrivers($this->mailDrivers) - ->withUserLanguage($userLanguage) - ->withAppUrl(Request::root()) - ->withCacheConfig($cacheConfig) - ->withSessionConfig($sessionConfig) - ->withQueueConfig($queueConfig) - ->withMailConfig($mailConfig); - } - - /** - * Handles validation on step one of the setup form. - * - * @return \Illuminate\Http\Response - */ - public function postStep1() - { - $postData = Binput::all(); - - $v = Validator::make($postData, $this->rulesStep1); - - $v->sometimes('env.mail_host', 'required', function ($input) { - return $input->env['mail_driver'] === 'smtp'; - }); - - $v->sometimes(['env.mail_address', 'env.mail_password'], 'required', function ($input) { - return !in_array($input->env['mail_driver'], ['log', 'smtp']); - }); - - $v->sometimes(['env.mail_username'], 'required', function ($input) { - return !in_array($input->env['mail_driver'], ['sendmail', 'log']); - }); - - if ($v->passes()) { - return Response::json(['status' => 1]); - } - - return Response::json(['errors' => $v->getMessageBag()], 400); - } - - /** - * Handles validation on step two of the setup form. - * - * @return \Illuminate\Http\Response - */ - public function postStep2() - { - $postData = Binput::all(); - - $v = Validator::make($postData, $this->rulesStep1 + $this->rulesStep2); - - if ($v->passes()) { - return Response::json(['status' => 1]); - } - - return Response::json(['errors' => $v->getMessageBag()], 400); - } - - /** - * Handles the actual app setup, including user, settings and env. - * - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response - */ - public function postStep3() - { - $postData = Binput::all(); - - $v = Validator::make($postData, $this->rulesStep1 + $this->rulesStep2 + $this->rulesStep3); - - if ($v->passes()) { - // Pull the user details out. - $userDetails = Arr::pull($postData, 'user'); - - $user = User::create([ - 'username' => $userDetails['username'], - 'email' => $userDetails['email'], - 'password' => $userDetails['password'], - 'level' => User::LEVEL_ADMIN, - ]); - - Auth::login($user); - - $setting = app(Repository::class); - - $settings = Arr::pull($postData, 'settings'); - - foreach ($settings as $settingName => $settingValue) { - $setting->set($settingName, $settingValue); - } - - $envData = Arr::pull($postData, 'env'); - - // Write the env to the .env file. - execute(new UpdateConfigCommand($envData)); - - if (Request::ajax()) { - return Response::json(['status' => 1]); - } - - return cachet_redirect('dashboard'); - } - - if (Request::ajax()) { - return Response::json(['errors' => $v->getMessageBag()], 400); - } - - return cachet_redirect('setup')->withInput()->withErrors($v->getMessageBag()); - } -} diff --git a/app/Http/Controllers/SignupController.php b/app/Http/Controllers/SignupController.php deleted file mode 100644 index 6c7db152..00000000 --- a/app/Http/Controllers/SignupController.php +++ /dev/null @@ -1,90 +0,0 @@ -first(); - - if (!$invite || $invite->is_claimed) { - throw new BadRequestHttpException(); - } - - return View::make('signup') - ->withCode($invite->code) - ->withUsername(Binput::old('username')) - ->withEmail(Binput::old('email', $invite->email)); - } - - /** - * Handle a signup request. - * - * @param string|null $code - * - * @return \Illuminate\View\View - */ - public function postSignup($code = null) - { - if ($code === null) { - throw new NotFoundHttpException(); - } - - $invite = Invite::where('code', '=', $code)->first(); - - if (!$invite || $invite->is_claimed) { - throw new BadRequestHttpException(); - } - - try { - execute(new SignupUserCommand( - Binput::get('username'), - Binput::get('password'), - Binput::get('email'), - User::LEVEL_USER - )); - } catch (ValidationException $e) { - return cachet_redirect('signup.invite', [$invite->code]) - ->withInput(Binput::except('password')) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('cachet.signup.failure'))) - ->withErrors($e->getMessageBag()); - } - - execute(new ClaimInviteCommand($invite)); - - return cachet_redirect('status-page') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('cachet.signup.success'))); - } -} diff --git a/app/Http/Controllers/StatusPageController.php b/app/Http/Controllers/StatusPageController.php deleted file mode 100644 index 12766de5..00000000 --- a/app/Http/Controllers/StatusPageController.php +++ /dev/null @@ -1,220 +0,0 @@ - - * @author Graham Campbell - * @author Joseph Cohen - */ -class StatusPageController extends AbstractApiController -{ - /** - * Displays the status page. - * - * @return \Illuminate\View\View - */ - public function showIndex() - { - $onlyDisruptedDays = Config::get('setting.only_disrupted_days'); - $appIncidentDays = (int) Config::get('setting.app_incident_days', 1); - - $startDate = Date::createFromFormat('Y-m-d', Binput::get('start_date', Date::now()->toDateString())); - $endDate = $startDate->copy()->subDays($appIncidentDays); - - $canPageForward = false; - $canPageBackward = false; - $previousDate = null; - $nextDate = null; - - if ($onlyDisruptedDays) { - // In this case, start_date GET parameter means the page - $page = (int) Binput::get('start_date', 0); - - $allIncidentDays = Incident::where('visible', '>=', (int) !Auth::check()) - ->select('occurred_at') - ->whereBetween('occurred_at', [ - $endDate->format('Y-m-d').' 00:00:00', - $startDate->format('Y-m-d').' 23:59:59', - ]) - ->distinct() - ->orderBy('occurred_at', 'desc') - ->get() - ->map(function (Incident $incident) { - return app(DateFactory::class)->make($incident->occurred_at)->toDateString(); - })->unique() - ->values(); - - $numIncidentDays = count($allIncidentDays); - $numPages = round($numIncidentDays / max($appIncidentDays, 1)); - - $selectedDays = $allIncidentDays->slice($page * $appIncidentDays, $appIncidentDays)->all(); - - if (count($selectedDays) > 0) { - $startDate = Date::createFromFormat('Y-m-d', array_values($selectedDays)[0]); - $endDate = Date::createFromFormat('Y-m-d', array_values(array_slice($selectedDays, -1))[0]); - } - - $canPageForward = $page > 0; - $canPageBackward = ($page + 1) < $numPages; - $previousDate = $page + 1; - $nextDate = $page - 1; - } else { - $date = Date::now(); - - $canPageForward = (bool) $startDate->lt($date->sub('1 day')); - $canPageBackward = Incident::where('occurred_at', '<', $date->format('Y-m-d'))->count() > 0; - $previousDate = $startDate->copy()->subDays($appIncidentDays)->toDateString(); - $nextDate = $startDate->copy()->addDays($appIncidentDays)->toDateString(); - } - - $allIncidents = Incident::with('component', 'updates.incident') - ->where('visible', '>=', (int) !Auth::check())->whereBetween('occurred_at', [ - $endDate->format('Y-m-d').' 00:00:00', - $startDate->format('Y-m-d').' 23:59:59', - ])->orderBy('occurred_at', 'desc')->get()->groupBy(function (Incident $incident) { - return app(DateFactory::class)->make($incident->occurred_at)->toDateString(); - }); - - if (!$onlyDisruptedDays) { - $incidentDays = array_pad([], $appIncidentDays, null); - - // Add in days that have no incidents - foreach ($incidentDays as $i => $day) { - $date = app(DateFactory::class)->make($startDate)->subDays($i); - - if (!isset($allIncidents[$date->toDateString()])) { - $allIncidents[$date->toDateString()] = []; - } - } - } - - // Sort the array so it takes into account the added days - $allIncidents = $allIncidents->sortBy(function ($value, $key) { - return strtotime($key); - }, SORT_REGULAR, true); - - return View::make('index') - ->withDaysToShow($appIncidentDays) - ->withAllIncidents($allIncidents) - ->withCanPageForward($canPageForward) - ->withCanPageBackward($canPageBackward) - ->withPreviousDate($previousDate) - ->withNextDate($nextDate); - } - - /** - * Shows an incident in more detail. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return \Illuminate\View\View - */ - public function showIncident(Incident $incident) - { - return View::make('single-incident')->withIncident($incident); - } - - /** - * Show a single schedule. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return \Illuminate\View\View - */ - public function showSchedule(Schedule $schedule) - { - return View::make('single-schedule')->withSchedule($schedule); - } - - /** - * Returns metrics in a readily formatted way. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return \Illuminate\Http\JsonResponse - */ - public function getMetrics(Metric $metric) - { - $type = Binput::get('filter', AutoPresenter::decorate($metric)->view_name); - $metrics = app(MetricRepository::class); - - switch ($type) { - case 'last_hour': $metricData = $metrics->listPointsLastHour($metric); - break; - case 'today': $metricData = $metrics->listPointsToday($metric); - break; - case 'week': $metricData = $metrics->listPointsForWeek($metric); - break; - case 'month': $metricData = $metrics->listPointsForMonth($metric); - break; - default: $metricData = []; - } - - return $this->item([ - 'metric' => $metric->toArray(), - 'items' => $metricData, - ]); - } - - /** - * Generates a Shield (badge) for the component. - * - * @param \CachetHQ\Cachet\Models\Component $component - * - * @return \Illuminate\Http\Response - */ - public function showComponentBadge(Component $component) - { - $component = AutoPresenter::decorate($component); - - switch ($component->status_color) { - case 'reds': $color = Config::get('setting.style_reds', '#FF6F6F'); - break; - case 'blues': $color = Config::get('setting.style_blues', '#3498DB'); - break; - case 'greens': $color = Config::get('setting.style_greens', '#7ED321'); - break; - case 'yellows': $color = Config::get('setting.style_yellows', '#F7CA18'); - break; - default: $color = null; - } - - $badge = Badger::generate( - $component->name, - $component->human_status, - substr($color, 1), - Binput::get('style', 'flat-square') - ); - - return Response::make($badge, 200, ['Content-Type' => 'image/svg+xml']); - } -} diff --git a/app/Http/Controllers/SubscribeController.php b/app/Http/Controllers/SubscribeController.php deleted file mode 100644 index afa866a9..00000000 --- a/app/Http/Controllers/SubscribeController.php +++ /dev/null @@ -1,224 +0,0 @@ - - */ -class SubscribeController extends Controller -{ - /** - * The illuminate guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new subscribe controller instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - - /** - * Show the subscribe by email page. - * - * @return \Illuminate\View\View - */ - public function showSubscribe() - { - return View::make('subscribe.subscribe') - ->withAboutApp(Markdown::convertToHtml(Config::get('setting.app_about'))); - } - - /** - * Handle the subscribe user. - * - * @return \Illuminate\View\View - */ - public function postSubscribe() - { - $email = Binput::get('email'); - $subscriptions = Binput::get('subscriptions'); - $verified = app(Repository::class)->get('setting.skip_subscriber_verification'); - - try { - $subscription = execute(new SubscribeSubscriberCommand($email, $verified)); - } catch (ValidationException $e) { - return cachet_redirect('status-page') - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('cachet.subscriber.email.failure'))) - ->withErrors($e->getMessageBag()); - } - - // Send the subscriber a link to manage their subscription. - $subscription->notify(new ManageSubscriptionNotification()); - - return redirect()->back()->withSuccess( - sprintf( - '%s %s', - trans('dashboard.notifications.awesome'), - trans('cachet.subscriber.email.manage_subscription') - ) - ); - } - - /** - * Handle the verify subscriber email. - * - * @param string|null $code - * - * @return \Illuminate\View\View - */ - public function getVerify($code = null) - { - if ($code === null) { - throw new NotFoundHttpException(); - } - - $subscriber = Subscriber::where('verify_code', '=', $code)->first(); - - if (!$subscriber) { - throw new BadRequestHttpException(); - } - - if (!$subscriber->is_verified) { - execute(new VerifySubscriberCommand($subscriber)); - } - - return redirect()->to(URL::signedRoute(cachet_route_generator('subscribe.manage'), ['code' => $code])) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('cachet.subscriber.email.subscribed'))); - } - - /** - * Handle the unsubscribe. - * - * @param string|null $code - * @param int|null $subscription - * - * @return \Illuminate\View\View - */ - public function getUnsubscribe($code = null, $subscription = null) - { - if ($code === null) { - throw new NotFoundHttpException(); - } - - $subscriber = Subscriber::where('verify_code', '=', $code)->first(); - - if (!$subscriber || !$subscriber->is_verified) { - throw new BadRequestHttpException(); - } - - if ($subscription) { - execute(new UnsubscribeSubscriptionCommand(Subscription::forSubscriber($subscriber->id)->firstOrFail())); - } else { - execute(new UnsubscribeSubscriberCommand($subscriber)); - } - - return cachet_redirect('status-page') - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('cachet.subscriber.email.unsubscribed'))); - } - - /** - * Shows the subscription manager page. - * - * @param string|null $code - * - * @return \Illuminate\View\View - */ - public function showManage($code = null) - { - if ($code === null) { - throw new NotFoundHttpException(); - } - - $includePrivate = $this->auth->check(); - - $subscriber = Subscriber::where('verify_code', '=', $code)->first(); - $usedComponentGroups = Component::enabled()->authenticated($includePrivate)->where('group_id', '>', 0)->groupBy('group_id')->pluck('group_id'); - $componentGroups = ComponentGroup::whereIn('id', $usedComponentGroups)->orderBy('order')->get(); - $ungroupedComponents = Component::enabled()->authenticated($includePrivate)->where('group_id', '=', 0)->orderBy('order')->orderBy('created_at')->get(); - - if (!$subscriber) { - throw new BadRequestHttpException(); - } - - return View::make('subscribe.manage') - ->withUngroupedComponents($ungroupedComponents) - ->withSubscriber($subscriber) - ->withSubscriptions($subscriber->subscriptions->pluck('component_id')->all()) - ->withComponentGroups($componentGroups); - } - - /** - * Updates the subscription manager for a subscriber. - * - * @param string|null $code - * - * @return \Illuminate\View\View - */ - public function postManage($code = null) - { - if ($code === null) { - throw new NotFoundHttpException(); - } - - $subscriber = Subscriber::where('verify_code', '=', $code)->first(); - - if (!$subscriber) { - throw new BadRequestHttpException(); - } - - try { - execute(new UpdateSubscriberSubscriptionCommand($subscriber, Binput::get('subscriptions'))); - } catch (ValidationException $e) { - return redirect()->to(URL::signedRoute(cachet_route_generator('subscribe.manage'), ['code' => $subscriber->verify_code])) - ->withInput(Binput::all()) - ->withTitle(sprintf('%s %s', trans('dashboard.notifications.whoops'), trans('cachet.subscriber.email.failure'))) - ->withErrors($e->getMessageBag()); - } - - return redirect()->to(URL::signedRoute(cachet_route_generator('subscribe.manage'), ['code' => $subscriber->verify_code])) - ->withSuccess(sprintf('%s %s', trans('dashboard.notifications.awesome'), trans('cachet.subscriber.email.updated-subscribe'))); - } -} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index ee7e3b40..494c0501 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -1,65 +1,68 @@ */ protected $middleware = [ - TrustProxies::class, - CheckForMaintenanceMode::class, + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Illuminate\Http\Middleware\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, ]; /** - * The application's route middleware. + * The application's route middleware groups. * - * @var array + * @var array> */ - protected $routeMiddleware = [ - 'admin' => Admin::class, - 'auth.api' => ApiAuthentication::class, - 'auth.remoteuser' => RemoteUserAuthenticate::class, - 'auth' => Authenticate::class, - 'cache' => CacheControl::class, - 'can' => Authorize::class, - 'cors' => HandleCors::class, - 'guest' => RedirectIfAuthenticated::class, - 'localize' => Localize::class, - 'ready' => ReadyForUse::class, - 'setup' => SetupAlreadyCompleted::class, - 'signed' => ValidateSignature::class, - 'subscribers' => SubscribersConfigured::class, - 'throttle' => Throttler::class, + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's middleware aliases. + * + * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. + * + * @var array + */ + protected $middlewareAliases = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, + 'signed' => \App\Http\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, ]; } diff --git a/app/Http/Middleware/Acceptable.php b/app/Http/Middleware/Acceptable.php deleted file mode 100644 index 97974fa7..00000000 --- a/app/Http/Middleware/Acceptable.php +++ /dev/null @@ -1,43 +0,0 @@ - - * @author James Brooks - */ -class Acceptable -{ - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @param string|null $type - * - * @return mixed - */ - public function handle(Request $request, Closure $next, $type = null) - { - if (!$request->accepts($type ?: 'application/json')) { - throw new NotAcceptableHttpException(); - } - - return $next($request); - } -} diff --git a/app/Http/Middleware/Admin.php b/app/Http/Middleware/Admin.php deleted file mode 100644 index 4180c366..00000000 --- a/app/Http/Middleware/Admin.php +++ /dev/null @@ -1,63 +0,0 @@ - - * @author Graham Campbell - * @author James Brooks - */ -class Admin -{ - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new admin middleware instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed - */ - public function handle(Request $request, Closure $next) - { - if (!$this->auth->check() || ($this->auth->check() && !$this->auth->user()->isAdmin)) { - throw new HttpException(401); - } - - return $next($request); - } -} diff --git a/app/Http/Middleware/ApiAuthentication.php b/app/Http/Middleware/ApiAuthentication.php deleted file mode 100644 index c02b6c08..00000000 --- a/app/Http/Middleware/ApiAuthentication.php +++ /dev/null @@ -1,76 +0,0 @@ - - * @author Graham Campbell - * @author James Brooks - */ -class ApiAuthentication -{ - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new api authentication middleware instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @param bool $required - * - * @return mixed - */ - public function handle(Request $request, Closure $next, $required = false) - { - if ($this->auth->guest()) { - if ($apiToken = $request->header('X-Cachet-Token')) { - try { - $this->auth->onceUsingId(User::findByApiToken($apiToken)->id); - } catch (ModelNotFoundException $e) { - if ($required) { - throw new HttpException(401); - } - } - } elseif ($required) { - throw new HttpException(401); - } - } - - return $next($request); - } -} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index 9b5562cb..d4ef6447 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -1,63 +1,17 @@ - * @author Graham Campbell - * @author James Brooks - */ -class Authenticate +class Authenticate extends Middleware { /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard + * Get the path the user should be redirected to when they are not authenticated. */ - protected $auth; - - /** - * Create a new authenticate middleware instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) + protected function redirectTo(Request $request): ?string { - $this->auth = $auth; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed - */ - public function handle(Request $request, Closure $next) - { - if ($this->auth->guest()) { - throw new HttpException(401); - } - - return $next($request); + return $request->expectsJson() ? null : route('login'); } } diff --git a/app/Http/Middleware/CacheControl.php b/app/Http/Middleware/CacheControl.php deleted file mode 100644 index fa54dfe0..00000000 --- a/app/Http/Middleware/CacheControl.php +++ /dev/null @@ -1,37 +0,0 @@ -header('Cache-Control', 'public,max-age='.$maxAge); - - return $response; - } -} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 00000000..867695bd --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Middleware/Localize.php b/app/Http/Middleware/Localize.php deleted file mode 100644 index 52469c41..00000000 --- a/app/Http/Middleware/Localize.php +++ /dev/null @@ -1,89 +0,0 @@ - - * @author Joseph Cohen - * @author Graham Campbell - */ -class Localize -{ - /** - * The config repository instance. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * The settings repository instance. - * - * @var \CachetHQ\Cachet\Settings\Repository - */ - protected $settings; - - /** - * Constructs a new localize middleware instance. - * - * @param \Illuminate\Contracts\Config\Repository $config - * @param \CachetHQ\Cachet\Settings\Repository $settings - * - * @return void - */ - public function __construct(ConfigRepository $config, SettingsRepository $settings) - { - $this->config = $config; - $this->settings = $settings; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed - */ - public function handle(Request $request, Closure $next) - { - if (!(bool) $this->settings->get('automatic_localization')) { - return $next($request); - } - - $requestedLanguages = $request->getLanguages(); - $userLanguage = $this->config->get('app.locale'); - $langs = $this->config->get('langs'); - - foreach ($requestedLanguages as $language) { - $language = str_replace('_', '-', $language); - - if (isset($langs[$language])) { - $userLanguage = $language; - break; - } - } - - app('translator')->setLocale($userLanguage); - Date::setLocale($userLanguage); - - return $next($request); - } -} diff --git a/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 00000000..74cbd9a9 --- /dev/null +++ b/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Middleware/ReadyForUse.php b/app/Http/Middleware/ReadyForUse.php deleted file mode 100644 index 11b1afbb..00000000 --- a/app/Http/Middleware/ReadyForUse.php +++ /dev/null @@ -1,62 +0,0 @@ - - * @author James Brooks - * @author Joseph Cohen - */ -class ReadyForUse -{ - /** - * The settings repository instance. - * - * @var \CachetHQ\Cachet\Settings\Repository - */ - protected $settings; - - /** - * Creates a new setup already completed middleware instance. - * - * @param \CachetHQ\Cachet\Settings\Repository $settings - * - * @return void - */ - public function __construct(Repository $settings) - { - $this->settings = $settings; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed - */ - public function handle(Request $request, Closure $next) - { - if (!$request->is('setup*') && !$this->settings->get('app_name')) { - return cachet_redirect('setup'); - } - - return $next($request); - } -} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index b8c95648..afc78c4e 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -1,60 +1,28 @@ - * @author Joseph Cohen - * @author James Brooks - */ class RedirectIfAuthenticated { - /** - * The authentication guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new redirect if authenticated middleware instance. - * - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed + * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ - public function handle(Request $request, Closure $next) + public function handle(Request $request, Closure $next, string ...$guards): Response { - if ($this->auth->check()) { - return cachet_redirect('dashboard'); + $guards = empty($guards) ? [null] : $guards; + + foreach ($guards as $guard) { + if (Auth::guard($guard)->check()) { + return redirect(RouteServiceProvider::HOME); + } } return $next($request); diff --git a/app/Http/Middleware/RemoteUserAuthenticate.php b/app/Http/Middleware/RemoteUserAuthenticate.php deleted file mode 100644 index 075c0c4a..00000000 --- a/app/Http/Middleware/RemoteUserAuthenticate.php +++ /dev/null @@ -1,53 +0,0 @@ -auth = $auth; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed - */ - public function handle(Request $request, Closure $next) - { - if ($remoteUser = $request->server('REMOTE_USER')) { - $user = User::where('email', '=', $remoteUser)->first(); - - if ($user instanceof User && $this->auth->guest()) { - $this->auth->login($user); - } - } - - return $next($request); - } -} diff --git a/app/Http/Middleware/SetupAlreadyCompleted.php b/app/Http/Middleware/SetupAlreadyCompleted.php deleted file mode 100644 index e0df0c8f..00000000 --- a/app/Http/Middleware/SetupAlreadyCompleted.php +++ /dev/null @@ -1,67 +0,0 @@ - - * @author James Brooks - * @author Joseph Cohen - */ -class SetupAlreadyCompleted -{ - /** - * The settings repository instance. - * - * @var \CachetHQ\Cachet\Settings\Repository - */ - protected $settings; - - /** - * Creates a new setup already completed middleware instance. - * - * @param \CachetHQ\Cachet\Settings\Repository $settings - * - * @return void - */ - public function __construct(Repository $settings) - { - $this->settings = $settings; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed - */ - public function handle(Request $request, Closure $next) - { - try { - if ($this->settings->get('app_name')) { - return cachet_redirect('dashboard'); - } - } catch (ReadException $e) { - // not setup then! - } - - return $next($request); - } -} diff --git a/app/Http/Middleware/SubscribersConfigured.php b/app/Http/Middleware/SubscribersConfigured.php deleted file mode 100644 index 116b20a5..00000000 --- a/app/Http/Middleware/SubscribersConfigured.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @author Graham Campbell - */ -class SubscribersConfigured -{ - /** - * The config repository instance. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * Creates a subscribers configured middleware instance. - * - * @param \Illuminate\Contracts\Config\Repository $config - * - * @return void - */ - public function __construct(Repository $config) - { - $this->config = $config; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed - */ - public function handle(Request $request, Closure $next) - { - return $next($request); - } -} diff --git a/app/Http/Middleware/Throttler.php b/app/Http/Middleware/Throttler.php deleted file mode 100644 index c8314963..00000000 --- a/app/Http/Middleware/Throttler.php +++ /dev/null @@ -1,125 +0,0 @@ - - */ -class Throttler -{ - /** - * The rate limiter instance. - * - * @var \Illuminate\Cache\RateLimiter - */ - protected $limiter; - - /** - * Create a new throttler middleware instance. - * - * @param \Illuminate\Cache\RateLimiter $limiter - * - * @return void - */ - public function __construct(RateLimiter $limiter) - { - $this->limiter = $limiter; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @param int|string $limit - * @param int|string $decay - * - * @throws \Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException - * - * @return mixed - */ - public function handle(Request $request, Closure $next, $limit = 60, $decay = 1) - { - return $this->safeHandle($request, $next, (int) $limit, (int) $decay); - } - - /** - * Handle an incoming request, with correct types. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * @param int $limit - * @param int $decay - * - * @throws \Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException - * - * @return mixed - */ - protected function safeHandle(Request $request, Closure $next, int $limit, int $decay) - { - $key = $request->fingerprint(); - - if ($this->limiter->tooManyAttempts($key, $limit, $decay)) { - throw $this->buildException($key, $limit); - } - - $this->limiter->hit($key, $decay); - - $response = $next($request); - - $response->headers->add($this->getHeaders($key, $limit)); - - return $response; - } - - /** - * Create a too many requests http exception. - * - * @param string $key - * @param int $limit - * - * @return \Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException - */ - protected function buildException(string $key, int $limit) - { - $after = $this->limiter->availableIn($key); - $exception = new TooManyRequestsHttpException($after, 'Rate limit exceeded.'); - $exception->setHeaders($this->getHeaders($key, $limit, $after, $exception->getHeaders())); - - return $exception; - } - - /** - * Get the limit header information. - * - * @param string $key - * @param int $limit - * @param int|null $after - * @param array $merge - * - * @return array - */ - protected function getHeaders(string $key, int $limit, int $after = null, array $merge = []) - { - $remaining = $after === null ? $this->limiter->retriesLeft($key, $limit) : 0; - $headers = ['X-RateLimit-Limit' => $limit, 'X-RateLimit-Remaining' => $remaining]; - - return array_merge($headers, $merge); - } -} diff --git a/app/Http/Middleware/Timezone.php b/app/Http/Middleware/Timezone.php deleted file mode 100644 index e0700714..00000000 --- a/app/Http/Middleware/Timezone.php +++ /dev/null @@ -1,61 +0,0 @@ - - * @author Graham Campbell - */ -class Timezone -{ - /** - * The config repository instance. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * Creates a new timezone middleware instance. - * - * @param \Illuminate\Contracts\Config\Repository $config - * - * @return void - */ - public function __construct(Repository $config) - { - $this->config = $config; - } - - /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed - */ - public function handle(Request $request, Closure $next) - { - if ($tz = $request->header('Time-Zone')) { - $this->config->set('cachet.timezone', $tz); - } - - return $next($request); - } -} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 00000000..88cadcaa --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/app/Http/Middleware/TrustHosts.php b/app/Http/Middleware/TrustHosts.php new file mode 100644 index 00000000..c9c58bdd --- /dev/null +++ b/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts(): array + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php index 83a86c5e..3391630e 100644 --- a/app/Http/Middleware/TrustProxies.php +++ b/app/Http/Middleware/TrustProxies.php @@ -1,31 +1,16 @@ - */ class TrustProxies extends Middleware { /** * The trusted proxies for this application. * - * @var array + * @var array|string|null */ protected $proxies; @@ -34,17 +19,10 @@ class TrustProxies extends Middleware * * @var int */ - protected $headers = Request::HEADER_X_FORWARDED_ALL; - - /** - * Create new trust proxies instance. - * - * @return void - */ - public function __construct() - { - $proxies = Config::get('trustedproxies.proxies'); - - $this->proxies = empty($proxies) ? '*' : explode(',', trim($proxies)); - } + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; } diff --git a/app/Http/Middleware/ValidateSignature.php b/app/Http/Middleware/ValidateSignature.php new file mode 100644 index 00000000..093bf64a --- /dev/null +++ b/app/Http/Middleware/ValidateSignature.php @@ -0,0 +1,22 @@ + + */ + protected $except = [ + // 'fbclid', + // 'utm_campaign', + // 'utm_content', + // 'utm_medium', + // 'utm_source', + // 'utm_term', + ]; +} diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php index cfd2fc05..9e865217 100644 --- a/app/Http/Middleware/VerifyCsrfToken.php +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -1,38 +1,17 @@ - */ class VerifyCsrfToken extends Middleware { - /** - * Indicates whether the XSRF-TOKEN cookie should be set on the response. - * - * @var bool - */ - protected $addHttpCookie = true; - /** * The URIs that should be excluded from CSRF verification. * - * @var array + * @var array */ protected $except = [ - '/api/*', + // ]; } diff --git a/app/Http/Routes/ApiRoutes.php b/app/Http/Routes/ApiRoutes.php deleted file mode 100644 index b56902d3..00000000 --- a/app/Http/Routes/ApiRoutes.php +++ /dev/null @@ -1,98 +0,0 @@ - - */ -class ApiRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = false; - - /** - * Define the api routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'namespace' => 'Api', - 'prefix' => 'api/v1', - ], function (Registrar $router) { - $router->group(['middleware' => ['auth.api', 'cors']], function (Registrar $router) { - $router->get('components', 'ComponentController@index'); - $router->get('components/groups', 'ComponentGroupController@index'); - $router->get('components/groups/{component_group}', 'ComponentGroupController@show'); - $router->get('components/{component}', 'ComponentController@show'); - - $router->get('incidents', 'IncidentController@index'); - - $router->get('incidents/templates', 'IncidentTemplateController@index'); - $router->get('incidents/templates/{incident_template}', 'IncidentTemplateController@show'); - - $router->get('incidents/{incident}', 'IncidentController@show'); - $router->get('incidents/{incident}/updates', 'IncidentUpdateController@index'); - $router->get('incidents/{incident}/updates/{update}', 'IncidentUpdateController@show'); - - $router->get('metrics', 'MetricController@index'); - $router->get('metrics/{metric}', 'MetricController@show'); - $router->get('metrics/{metric}/points', 'MetricPointController@index'); - - $router->get('schedules', 'ScheduleController@index'); - $router->get('schedules/{schedule}', 'ScheduleController@show'); - }); - - $router->group(['middleware' => ['auth.api:true']], function (Registrar $router) { - $router->get('subscribers', 'SubscriberController@index'); - - $router->post('components', 'ComponentController@store'); - $router->post('components/groups', 'ComponentGroupController@store'); - $router->post('incidents', 'IncidentController@store'); - $router->post('incidents/{incident}/updates', 'IncidentUpdateController@store'); - $router->post('metrics', 'MetricController@store'); - $router->post('metrics/{metric}/points', 'MetricPointController@store'); - $router->post('schedules', 'ScheduleController@store'); - $router->post('subscribers', 'SubscriberController@store'); - - $router->put('components/groups/{component_group}', 'ComponentGroupController@update'); - $router->put('components/{component}', 'ComponentController@update'); - $router->put('incidents/{incident}', 'IncidentController@update'); - $router->put('incidents/{incident}/updates/{update}', 'IncidentUpdateController@update'); - $router->put('metrics/{metric}', 'MetricController@update'); - $router->put('metrics/{metric}/points/{metric_point}', 'MetricPointController@update'); - $router->put('schedules/{schedule}', 'ScheduleController@update'); - - $router->delete('components/groups/{component_group}', 'ComponentGroupController@destroy'); - $router->delete('components/{component}', 'ComponentController@destroy'); - $router->delete('incidents/{incident}', 'IncidentController@destroy'); - $router->delete('incidents/{incident}/updates/{update}', 'IncidentUpdateController@destroy'); - $router->delete('metrics/{metric}', 'MetricController@destroy'); - $router->delete('metrics/{metric}/points/{metric_point}', 'MetricPointController@destroy'); - $router->delete('schedules/{schedule}', 'ScheduleController@destroy'); - $router->delete('subscribers/{subscriber}', 'SubscriberController@destroy'); - $router->delete('subscriptions/{subscription}', 'SubscriptionController@destroy'); - }); - }); - } -} diff --git a/app/Http/Routes/ApiSystemRoutes.php b/app/Http/Routes/ApiSystemRoutes.php deleted file mode 100644 index 92a7aa2e..00000000 --- a/app/Http/Routes/ApiSystemRoutes.php +++ /dev/null @@ -1,50 +0,0 @@ - - */ -class ApiSystemRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = false; - - /** - * Define the api routes for the system status, ping and version. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'namespace' => 'Api', - 'prefix' => 'api/v1', - ], function (Registrar $router) { - $router->group(['middleware' => ['auth.api']], function (Registrar $router) { - $router->get('ping', 'GeneralController@ping'); - $router->get('version', 'GeneralController@version'); - $router->get('status', ['uses' => 'GeneralController@status', 'middleware' => ['cache']]); - }); - }); - } -} diff --git a/app/Http/Routes/AuthRoutes.php b/app/Http/Routes/AuthRoutes.php deleted file mode 100644 index f1dd7fa9..00000000 --- a/app/Http/Routes/AuthRoutes.php +++ /dev/null @@ -1,73 +0,0 @@ - - */ -class AuthRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the auth routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['ready'], - 'prefix' => 'auth', - ], function (Registrar $router) { - $router->get('login', [ - 'as' => 'get:auth.login', - 'middleware' => 'guest', - 'uses' => 'AuthController@showLogin', - ]); - - $router->post('login', [ - 'as' => 'post:auth.login', - 'middleware' => ['guest', 'throttle:10,10'], - 'uses' => 'AuthController@postLogin', - ]); - - $router->get('2fa', [ - 'as' => 'get:auth.two-factor', - 'uses' => 'AuthController@showTwoFactorAuth', - ]); - - $router->post('2fa', [ - 'as' => 'post:auth.two-factor', - 'middleware' => ['throttle:10,10'], - 'uses' => 'AuthController@postTwoFactor', - ]); - - $router->get('logout', [ - 'as' => 'get:auth.logout', - 'uses' => 'AuthController@logoutAction', - 'middleware' => 'auth', - ]); - }); - } -} diff --git a/app/Http/Routes/Dashboard/ApiRoutes.php b/app/Http/Routes/Dashboard/ApiRoutes.php deleted file mode 100644 index 46d186dc..00000000 --- a/app/Http/Routes/Dashboard/ApiRoutes.php +++ /dev/null @@ -1,51 +0,0 @@ - - * @author Connor S. Parks - */ -class ApiRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard api routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/api', - ], function (Registrar $router) { - $router->get('incidents/templates', 'ApiController@getIncidentTemplate'); - $router->post('components/groups/order', 'ApiController@postUpdateComponentGroupOrder'); - $router->post('components/order', 'ApiController@postUpdateComponentOrder'); - $router->any('components/{component}', 'ApiController@postUpdateComponent'); - }); - } -} diff --git a/app/Http/Routes/Dashboard/BaseRoutes.php b/app/Http/Routes/Dashboard/BaseRoutes.php deleted file mode 100644 index 61d7e742..00000000 --- a/app/Http/Routes/Dashboard/BaseRoutes.php +++ /dev/null @@ -1,54 +0,0 @@ - - * @author Connor S. Parks - */ -class BaseRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard base routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - ], function (Registrar $router) { - $router->get('admin', 'DashboardController@redirectAdmin'); - - $router->group(['prefix' => 'dashboard'], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:dashboard', - 'uses' => 'DashboardController@showDashboard', - ]); - }); - }); - } -} diff --git a/app/Http/Routes/Dashboard/ComponentRoutes.php b/app/Http/Routes/Dashboard/ComponentRoutes.php deleted file mode 100644 index aa7852f8..00000000 --- a/app/Http/Routes/Dashboard/ComponentRoutes.php +++ /dev/null @@ -1,100 +0,0 @@ - - * @author Connor S. Parks - */ -class ComponentRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard component routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/components', - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:dashboard.components', - 'uses' => 'ComponentController@showComponents', - ]); - - $router->get('create', [ - 'as' => 'get:dashboard.components.create', - 'uses' => 'ComponentController@showAddComponent', - ]); - $router->post('create', [ - 'as' => 'post:dashboard.components.create', - 'uses' => 'ComponentController@createComponentAction', - ]); - - $router->get('groups', [ - 'as' => 'get:dashboard.components.groups', - 'uses' => 'ComponentGroupController@showComponentGroups', - ]); - - $router->get('groups/create', [ - 'as' => 'get:dashboard.components.groups.create', - 'uses' => 'ComponentGroupController@showAddComponentGroup', - ]); - $router->post('groups/create', [ - 'as' => 'post:dashboard.components.groups.create', - 'uses' => 'ComponentGroupController@postAddComponentGroup', - ]); - - $router->get('groups/{component_group}', [ - 'as' => 'get:dashboard.components.groups.edit', - 'uses' => 'ComponentGroupController@showEditComponentGroup', - ]); - $router->post('groups/{component_group}', [ - 'as' => 'post:dashboard.components.groups.edit', - 'uses' => 'ComponentGroupController@updateComponentGroupAction', - ]); - $router->delete('groups/{component_group}', [ - 'as' => 'delete:dashboard.components.groups.delete', - 'uses' => 'ComponentGroupController@deleteComponentGroupAction', - ]); - - $router->get('{component}', [ - 'as' => 'get:dashboard.components.edit', - 'uses' => 'ComponentController@showEditComponent', - ]); - $router->post('{component}', [ - 'as' => 'post:dashboard.components.edit', - 'uses' => 'ComponentController@updateComponentAction', - ]); - $router->delete('{component}', [ - 'as' => 'delete:dashboard.components.delete', - 'uses' => 'ComponentController@deleteComponentAction', - ]); - }); - } -} diff --git a/app/Http/Routes/Dashboard/IncidentRoutes.php b/app/Http/Routes/Dashboard/IncidentRoutes.php deleted file mode 100644 index 4eee1e5e..00000000 --- a/app/Http/Routes/Dashboard/IncidentRoutes.php +++ /dev/null @@ -1,94 +0,0 @@ - - * @author Connor S. Parks - */ -class IncidentRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard incident routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/incidents', - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:dashboard.incidents', - 'uses' => 'IncidentController@showIncidents', - ]); - - $router->get('create', [ - 'as' => 'get:dashboard.incidents.create', - 'uses' => 'IncidentController@showAddIncident', - ]); - $router->post('create', [ - 'as' => 'post:dashboard.incidents.create', - 'uses' => 'IncidentController@createIncidentAction', - ]); - - $router->get('{incident}', [ - 'as' => 'get:dashboard.incidents.edit', - 'uses' => 'IncidentController@showEditIncidentAction', - ]); - $router->post('{incident}', [ - 'as' => 'post:dashboard.incidents.edit', - 'uses' => 'IncidentController@editIncidentAction', - ]); - $router->delete('{incident}', [ - 'as' => 'delete:dashboard.incidents.delete', - 'uses' => 'IncidentController@deleteIncidentAction', - ]); - - $router->get('{incident}/updates', [ - 'as' => 'get:dashboard.incidents.updates', - 'uses' => 'IncidentUpdateController@showIncidentUpdates', - ]); - $router->get('{incident}/updates/create', [ - 'as' => 'get:dashboard.incidents.updates.create', - 'uses' => 'IncidentUpdateController@showCreateIncidentUpdateAction', - ]); - $router->post('{incident}/updates/create', [ - 'as' => 'post:dashboard.incidents.updates.create', - 'uses' => 'IncidentUpdateController@createIncidentUpdateAction', - ]); - $router->get('{incident}/updates/{incident_update}', [ - 'as' => 'get:dashboard.incidents.updates.edit', - 'uses' => 'IncidentUpdateController@showEditIncidentUpdateAction', - ]); - $router->post('{incident}/updates/{incident_update}', [ - 'as' => 'post:dashboard.incidents.updates.edit', - 'uses' => 'IncidentUpdateController@editIncidentUpdateAction', - ]); - }); - } -} diff --git a/app/Http/Routes/Dashboard/MetricRoutes.php b/app/Http/Routes/Dashboard/MetricRoutes.php deleted file mode 100644 index 3f28899d..00000000 --- a/app/Http/Routes/Dashboard/MetricRoutes.php +++ /dev/null @@ -1,73 +0,0 @@ - - * @author Connor S. Parks - */ -class MetricRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard metric routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/metrics', - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:dashboard.metrics', - 'uses' => 'MetricController@showMetrics', - ]); - - $router->get('create', [ - 'as' => 'get:dashboard.metrics.create', - 'uses' => 'MetricController@showAddMetric', - ]); - $router->post('create', [ - 'as' => 'post:dashboard.metrics.create', - 'uses' => 'MetricController@createMetricAction', - ]); - - $router->get('{metric}', [ - 'as' => 'get:dashboard.metrics.edit', - 'uses' => 'MetricController@showEditMetricAction', - ]); - $router->post('{metric}', [ - 'as' => 'post:dashboard.metrics.edit', - 'uses' => 'MetricController@editMetricAction', - ]); - $router->delete('{metric}', [ - 'as' => 'delete:dashboard.metrics.delete', - 'uses' => 'MetricController@deleteMetricAction', - ]); - }); - } -} diff --git a/app/Http/Routes/Dashboard/ScheduleRoutes.php b/app/Http/Routes/Dashboard/ScheduleRoutes.php deleted file mode 100644 index 8591d150..00000000 --- a/app/Http/Routes/Dashboard/ScheduleRoutes.php +++ /dev/null @@ -1,73 +0,0 @@ - - * @author Connor S. Parks - */ -class ScheduleRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard schedule routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/schedule', - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:dashboard.schedule', - 'uses' => 'ScheduleController@showIndex', - ]); - - $router->get('create', [ - 'as' => 'get:dashboard.schedule.create', - 'uses' => 'ScheduleController@showAddSchedule', - ]); - $router->post('create', [ - 'as' => 'post:dashboard.schedule.create', - 'uses' => 'ScheduleController@addScheduleAction', - ]); - - $router->get('{schedule}', [ - 'as' => 'get:dashboard.schedule.edit', - 'uses' => 'ScheduleController@showEditSchedule', - ]); - $router->post('{schedule}', [ - 'as' => 'post:dashboard.schedule.edit', - 'uses' => 'ScheduleController@editScheduleAction', - ]); - $router->delete('{schedule}', [ - 'as' => 'delete:dashboard.schedule.delete', - 'uses' => 'ScheduleController@deleteScheduleAction', - ]); - }); - } -} diff --git a/app/Http/Routes/Dashboard/SettingRoutes.php b/app/Http/Routes/Dashboard/SettingRoutes.php deleted file mode 100644 index a963470d..00000000 --- a/app/Http/Routes/Dashboard/SettingRoutes.php +++ /dev/null @@ -1,100 +0,0 @@ - - * @author Connor S. Parks - */ -class SettingRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard setting routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/settings', - ], function (Registrar $router) { - $router->get('setup', [ - 'as' => 'get:dashboard.settings.setup', - 'uses' => 'SettingsController@showSetupView', - ]); - $router->get('analytics', [ - 'as' => 'get:dashboard.settings.analytics', - 'uses' => 'SettingsController@showAnalyticsView', - ]); - $router->get('localization', [ - 'as' => 'get:dashboard.settings.localization', - 'uses' => 'SettingsController@showLocalizationView', - ]); - $router->get('security', [ - 'as' => 'get:dashboard.settings.security', - 'uses' => 'SettingsController@showSecurityView', - ]); - $router->get('theme', [ - 'as' => 'get:dashboard.settings.theme', - 'uses' => 'SettingsController@showThemeView', - ]); - $router->get('stylesheet', [ - 'as' => 'get:dashboard.settings.stylesheet', - 'uses' => 'SettingsController@showStylesheetView', - ]); - $router->get('customization', [ - 'as' => 'get:dashboard.settings.customization', - 'uses' => 'SettingsController@showCustomizationView', - ]); - $router->get('credits', [ - 'as' => 'get:dashboard.settings.credits', - 'uses' => 'SettingsController@showCreditsView', - ]); - $router->get('log', [ - 'as' => 'get:dashboard.settings.log', - 'uses' => 'SettingsController@showLogView', - ]); - $router->get('mail', [ - 'as' => 'get:dashboard.settings.mail', - 'uses' => 'SettingsController@showMailView', - ]); - $router->post('mail', [ - 'as' => 'post:dashboard.settings.mail', - 'uses' => 'SettingsController@postMail', - ]); - $router->post('mail/test', [ - 'as' => 'post:dashboard.settings.mail.test', - 'uses' => 'SettingsController@testMail', - ]); - - $router->post('/', [ - 'as' => 'post:dashboard.settings', - 'uses' => 'SettingsController@postSettings', - ]); - }); - } -} diff --git a/app/Http/Routes/Dashboard/SubscriberRoutes.php b/app/Http/Routes/Dashboard/SubscriberRoutes.php deleted file mode 100644 index 129d786f..00000000 --- a/app/Http/Routes/Dashboard/SubscriberRoutes.php +++ /dev/null @@ -1,65 +0,0 @@ - - * @author Connor S. Parks - */ -class SubscriberRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard subscriber routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/subscribers', - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:dashboard.subscribers', - 'uses' => 'SubscriberController@showSubscribers', - ]); - - $router->get('create', [ - 'as' => 'get:dashboard.subscribers.create', - 'uses' => 'SubscriberController@showAddSubscriber', - ]); - $router->post('create', [ - 'as' => 'post:dashboard.subscribers.create', - 'uses' => 'SubscriberController@createSubscriberAction', - ]); - - $router->delete('{subscriber}/delete', [ - 'as' => 'delete:dashboard.subscribers.delete', - 'uses' => 'SubscriberController@deleteSubscriberAction', - ]); - }); - } -} diff --git a/app/Http/Routes/Dashboard/TeamRoutes.php b/app/Http/Routes/Dashboard/TeamRoutes.php deleted file mode 100644 index 88728592..00000000 --- a/app/Http/Routes/Dashboard/TeamRoutes.php +++ /dev/null @@ -1,84 +0,0 @@ - - * @author Connor S. Parks - */ -class TeamRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard team routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/team', - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:dashboard.team', - 'uses' => 'TeamController@showTeamView', - ]); - - $router->group(['middleware' => 'admin'], function (Registrar $router) { - $router->get('create', [ - 'as' => 'get:dashboard.team.create', - 'uses' => 'TeamController@showAddTeamMemberView', - ]); - $router->post('create', [ - 'as' => 'post:dashboard.team.create', - 'uses' => 'TeamController@postAddUser', - ]); - - $router->get('invite', [ - 'as' => 'get:dashboard.team.invite', - 'uses' => 'TeamController@showInviteTeamMemberView', - ]); - $router->post('invite', [ - 'as' => 'post:dashboard.team.invite', - 'uses' => 'TeamController@postInviteUser', - ]); - - $router->get('{user}', [ - 'as' => 'get:dashboard.team.edit', - 'uses' => 'TeamController@showTeamMemberView', - ]); - $router->post('{user}', [ - 'as' => 'post::dashboard.team.edit', - 'uses' => 'TeamController@postUpdateUser', - ]); - $router->delete('{user}', [ - 'as' => 'delete:dashboard.team.delete', - 'uses' => 'TeamController@deleteUser', - ]); - }); - }); - } -} diff --git a/app/Http/Routes/Dashboard/TemplateRoutes.php b/app/Http/Routes/Dashboard/TemplateRoutes.php deleted file mode 100644 index ee4ed5df..00000000 --- a/app/Http/Routes/Dashboard/TemplateRoutes.php +++ /dev/null @@ -1,73 +0,0 @@ - - * @author Connor S. Parks - */ -class TemplateRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard template routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/templates', - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:dashboard.templates', - 'uses' => 'IncidentTemplateController@showTemplates', - ]); - - $router->get('create', [ - 'as' => 'get:dashboard.templates.create', - 'uses' => 'IncidentTemplateController@showAddIncidentTemplate', - ]); - $router->post('create', [ - 'as' => 'post:dashboard.templates.create', - 'uses' => 'IncidentTemplateController@createIncidentTemplateAction', - ]); - - $router->get('{incident_template}', [ - 'as' => 'get:dashboard.templates.edit', - 'uses' => 'IncidentTemplateController@showEditTemplateAction', - ]); - $router->post('{incident_template}', [ - 'as' => 'post:dashboard.templates.edit', - 'uses' => 'IncidentTemplateController@editTemplateAction', - ]); - $router->delete('{incident_template}', [ - 'as' => 'delete:dashboard.templates.delete', - 'uses' => 'IncidentTemplateController@deleteTemplateAction', - ]); - }); - } -} diff --git a/app/Http/Routes/Dashboard/UserRoutes.php b/app/Http/Routes/Dashboard/UserRoutes.php deleted file mode 100644 index 15720a46..00000000 --- a/app/Http/Routes/Dashboard/UserRoutes.php +++ /dev/null @@ -1,60 +0,0 @@ - - * @author Connor S. Parks - */ -class UserRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the dashboard user routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['auth'], - 'namespace' => 'Dashboard', - 'prefix' => 'dashboard/user', - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:dashboard.user', - 'uses' => 'UserController@showUser', - ]); - $router->post('/', [ - 'as' => 'post:dashboard.user', - 'uses' => 'UserController@postUser', - ]); - - $router->get('{user}/api/regen', [ - 'as' => 'get:dashboard.user.api.regen', - 'uses' => 'UserController@regenerateApiKey', - ]); - }); - } -} diff --git a/app/Http/Routes/Setup/ApiRoutes.php b/app/Http/Routes/Setup/ApiRoutes.php deleted file mode 100644 index 8a3a3897..00000000 --- a/app/Http/Routes/Setup/ApiRoutes.php +++ /dev/null @@ -1,59 +0,0 @@ - - */ -class ApiRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = false; - - /** - * Define the setup routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['setup'], - 'prefix' => 'setup', - ], function (Registrar $router) { - $router->post('step1', [ - 'as' => 'post:setup.step1', - 'uses' => 'SetupController@postStep1', - ]); - - $router->post('step2', [ - 'as' => 'post:setup.step2', - 'uses' => 'SetupController@postStep2', - ]); - - $router->post('step3', [ - 'as' => 'post:setup.step3', - 'uses' => 'SetupController@postStep3', - ]); - }); - } -} diff --git a/app/Http/Routes/SetupRoutes.php b/app/Http/Routes/SetupRoutes.php deleted file mode 100644 index eb131954..00000000 --- a/app/Http/Routes/SetupRoutes.php +++ /dev/null @@ -1,50 +0,0 @@ - - * @author Graham Campbell - */ -class SetupRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the setup routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['setup'], - 'prefix' => 'setup', - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:setup', - 'uses' => 'SetupController@getIndex', - ]); - }); - } -} diff --git a/app/Http/Routes/SignupRoutes.php b/app/Http/Routes/SignupRoutes.php deleted file mode 100644 index 85307261..00000000 --- a/app/Http/Routes/SignupRoutes.php +++ /dev/null @@ -1,54 +0,0 @@ - - */ -class SignupRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the signup routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['ready', 'guest'], - 'prefix' => 'signup', - ], function (Registrar $router) { - $router->get('invite/{code}', [ - 'as' => 'get:signup.invite', - 'uses' => 'SignupController@getSignup', - ]); - - $router->post('invite/{code}', [ - 'as' => 'post:signup.invite', - 'uses' => 'SignupController@postSignup', - ]); - }); - } -} diff --git a/app/Http/Routes/StatusPageRoutes.php b/app/Http/Routes/StatusPageRoutes.php deleted file mode 100644 index 20bd6908..00000000 --- a/app/Http/Routes/StatusPageRoutes.php +++ /dev/null @@ -1,68 +0,0 @@ - - */ -class StatusPageRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the status page routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['ready', 'localize'], - ], function (Registrar $router) { - $router->get('/', [ - 'as' => 'get:status-page', - 'uses' => 'StatusPageController@showIndex', - ]); - - $router->get('incidents/{incident}', [ - 'as' => 'get:incident', - 'uses' => 'StatusPageController@showIncident', - ]); - - $router->get('schedules/{schedule}', [ - 'as' => 'get:schedule', - 'uses' => 'StatusPageController@showSchedule', - ]); - - $router->get('metrics/{metric}', [ - 'as' => 'get:metric', - 'uses' => 'StatusPageController@getMetrics', - ]); - - $router->get('component/{component}/shield', [ - 'as' => 'get:component_shield', - 'uses' => 'StatusPageController@showComponentBadge', - ]); - }); - } -} diff --git a/app/Http/Routes/SubscribeRoutes.php b/app/Http/Routes/SubscribeRoutes.php deleted file mode 100644 index 8c5279d4..00000000 --- a/app/Http/Routes/SubscribeRoutes.php +++ /dev/null @@ -1,73 +0,0 @@ - - */ -class SubscribeRoutes -{ - /** - * Defines if these routes are for the browser. - * - * @var bool - */ - public static $browser = true; - - /** - * Define the subscribe routes. - * - * @param \Illuminate\Contracts\Routing\Registrar $router - * - * @return void - */ - public function map(Registrar $router) - { - $router->group([ - 'middleware' => ['ready', 'localize', 'subscribers'], - ], function (Registrar $router) { - $router->get('subscribe', [ - 'as' => 'get:subscribe', - 'uses' => 'SubscribeController@showSubscribe', - ]); - $router->post('subscribe', [ - 'as' => 'post:subscribe', - 'uses' => 'SubscribeController@postSubscribe', - ]); - - $router->get('subscribe/manage/{code}', [ - 'as' => 'get:subscribe.manage', - 'middleware' => ['signed'], - 'uses' => 'SubscribeController@showManage', - ]); - $router->post('subscribe/manage/{code}', [ - 'as' => 'post:subscribe.manage', - 'uses' => 'SubscribeController@postManage', - ]); - - $router->get('subscribe/verify/{code}', [ - 'as' => 'get:subscribe.verify', - 'middleware' => ['signed'], - 'uses' => 'SubscribeController@getVerify', - ]); - - $router->get('unsubscribe/{code}/{subscription?}', [ - 'as' => 'get:subscribe.unsubscribe', - 'uses' => 'SubscribeController@getUnsubscribe', - ]); - }); - } -} diff --git a/app/Integrations/Contracts/Beacon.php b/app/Integrations/Contracts/Beacon.php deleted file mode 100644 index 61571403..00000000 --- a/app/Integrations/Contracts/Beacon.php +++ /dev/null @@ -1,34 +0,0 @@ - - */ -interface Beacon -{ - /** - * Has the install enabled Cachet beacon? - * - * @return bool - */ - public function enabled(); - - /** - * Send a beacon to our server. - * - * @return void - */ - public function send(); -} diff --git a/app/Integrations/Contracts/Credits.php b/app/Integrations/Contracts/Credits.php deleted file mode 100644 index 192907ca..00000000 --- a/app/Integrations/Contracts/Credits.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ -interface Credits -{ - /** - * Returns the latest credits. - * - * @return array|null - */ - public function latest(); -} diff --git a/app/Integrations/Contracts/Feed.php b/app/Integrations/Contracts/Feed.php deleted file mode 100644 index 2c7682f4..00000000 --- a/app/Integrations/Contracts/Feed.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ -interface Feed -{ - /** - * Returns the latest entries. - * - * @return array|null - */ - public function latest(); -} diff --git a/app/Integrations/Contracts/Releases.php b/app/Integrations/Contracts/Releases.php deleted file mode 100644 index f1526c8e..00000000 --- a/app/Integrations/Contracts/Releases.php +++ /dev/null @@ -1,27 +0,0 @@ - - */ -interface Releases -{ - /** - * Returns the latest release. - * - * @return string - */ - public function latest(); -} diff --git a/app/Integrations/Contracts/System.php b/app/Integrations/Contracts/System.php deleted file mode 100644 index a064e710..00000000 --- a/app/Integrations/Contracts/System.php +++ /dev/null @@ -1,48 +0,0 @@ - - */ -interface System -{ - /** - * Get the entire system status. - * - * @return array - */ - public function getStatus(); - - /** - * Determine if Cachet is allowed to send notifications to users, subscribers or third party tools. - * - * @return bool - */ - public function canNotifySubscribers(); - - /** - * Get the cachet version. - * - * @return string - */ - public function getVersion(); - - /** - * Get the table prefix. - * - * @return string - */ - public function getTablePrefix(); -} diff --git a/app/Integrations/Core/Beacon.php b/app/Integrations/Core/Beacon.php deleted file mode 100644 index f4a283ab..00000000 --- a/app/Integrations/Core/Beacon.php +++ /dev/null @@ -1,123 +0,0 @@ - - */ -class Beacon implements BeaconContract -{ - /** - * The beacon url. - * - * @var string - */ - const URL = 'https://cachethq.io/beacon'; - - /** - * The illuminate config instance. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * Create a new beacon instance. - * - * @param \Illuminate\Contracts\Config\Repository $config - * - * @return void - */ - public function __construct(Repository $config) - { - $this->config = $config; - } - - /** - * Has the install enabled Cachet beacon? - * - * @return bool - */ - public function enabled() - { - return $this->config->get('cachet.beacon'); - } - - /** - * Send a beacon to our server. - * - * @return void - */ - public function send() - { - // We don't want any accidental sending of beacons if the installation has explicitly said no. - if (!$this->enabled()) { - return; - } - - $setting = app(Setting::class); - - if (!$installId = $setting->get('install_id', null)) { - $installId = sha1(Str::random(20)); - - $setting->set('install_id', $installId); - } - - $payload = [ - 'install_id' => $installId, - 'version' => CACHET_VERSION, - 'docker' => $this->config->get('cachet.is_docker'), - 'database' => $this->config->get('database.default'), - 'data' => [ - 'components' => Component::all()->count(), - 'incidents' => Incident::all()->count(), - 'metrics' => Metric::all()->count(), - 'users' => User::all()->count(), - 'actions' => Action::all()->count(), - 'tags' => Tag::all()->count(), - 'schedules' => Schedule::all()->count(), - ], - ]; - - try { - $client = new Client(); - $client->post(self::URL, [ - 'headers' => ['Accept' => 'application/json', 'User-Agent' => defined('CACHET_VERSION') ? 'cachet/'.constant('CACHET_VERSION') : 'cachet'], - 'json' => $payload, - ]); - } catch (Exception $e) { - event(new BeaconFailedToSendEvent()); - - return; - } - - event(new BeaconWasSentEvent()); - } -} diff --git a/app/Integrations/Core/Credits.php b/app/Integrations/Core/Credits.php deleted file mode 100644 index e821c3b6..00000000 --- a/app/Integrations/Core/Credits.php +++ /dev/null @@ -1,88 +0,0 @@ - - * @author James Brooks - */ -class Credits implements CreditsContract -{ - /** - * The default url. - * - * @var string - */ - const URL = 'https://cachethq.io/credits'; - - /** - * The failed status indicator. - * - * @var int - */ - const FAILED = 1; - - /** - * The cache repository instance. - * - * @var \Illuminate\Contracts\Cache\Repository - */ - protected $cache; - - /** - * The url to use. - * - * @var string|null - */ - protected $url; - - /** - * Creates a new credits instance. - * - * @param \Illuminate\Contracts\Cache\Repository $cache - * @param string|null $url - * - * @return void - */ - public function __construct(Repository $cache, $url = null) - { - $this->cache = $cache; - $this->url = $url ?: static::URL; - } - - /** - * Returns the latest credits. - * - * @return array|null - */ - public function latest() - { - $result = $this->cache->remember('credits', 2880, function () { - try { - return json_decode((new Client())->get($this->url, [ - 'headers' => ['Accept' => 'application/json', 'User-Agent' => defined('CACHET_VERSION') ? 'cachet/'.constant('CACHET_VERSION') : 'cachet'], - ])->getBody(), true); - } catch (Exception $e) { - return self::FAILED; - } - }); - - return $result === self::FAILED ? null : $result; - } -} diff --git a/app/Integrations/Core/Feed.php b/app/Integrations/Core/Feed.php deleted file mode 100644 index 1ab93c4d..00000000 --- a/app/Integrations/Core/Feed.php +++ /dev/null @@ -1,89 +0,0 @@ - - */ -class Feed implements FeedContract -{ - /** - * The default url. - * - * @var string - */ - const URL = 'https://alt-three.com/tag/cachet/rss'; - - /** - * The failed status indicator. - * - * @var int - */ - const FAILED = 1; - - /** - * The cache repository instance. - * - * @var \Illuminate\Contracts\Cache\Repository - */ - protected $cache; - - /** - * The url to use. - * - * @var string|null - */ - protected $url; - - /** - * Creates a new feed instance. - * - * @param \Illuminate\Contracts\Cache\Repository $cache - * @param string|null $url - * - * @return void - */ - public function __construct(Repository $cache, $url = null) - { - $this->cache = $cache; - $this->url = $url ?: static::URL; - } - - /** - * Returns the latest entries. - * - * @return array|null - */ - public function latest() - { - $result = $this->cache->remember('feeds', 720, function () { - try { - $xml = simplexml_load_string((new Client())->get($this->url, [ - 'headers' => ['Accept' => 'application/rss+xml', 'User-Agent' => defined('CACHET_VERSION') ? 'cachet/'.constant('CACHET_VERSION') : 'cachet'], - ])->getBody()->getContents(), null, LIBXML_NOCDATA); - - return json_decode(json_encode($xml)); - } catch (Exception $e) { - return self::FAILED; - } - }); - - return $result === self::FAILED ? null : $result; - } -} diff --git a/app/Integrations/Core/System.php b/app/Integrations/Core/System.php deleted file mode 100644 index b1f7183c..00000000 --- a/app/Integrations/Core/System.php +++ /dev/null @@ -1,143 +0,0 @@ - - */ -class System implements SystemContract -{ - /** - * The illuminate config instance. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * The illuminate guard instance. - * - * @var \Illuminate\Contracts\Auth\Guard - */ - protected $auth; - - /** - * Create a new system instance. - * - * @param \Illuminate\Contracts\Config\Repository $config - * @param \Illuminate\Contracts\Auth\Guard $auth - * - * @return void - */ - public function __construct(Repository $config, Guard $auth) - { - $this->config = $config; - $this->auth = $auth; - } - - /** - * Get the entire system status. - * - * @return array - */ - public function getStatus() - { - $includePrivate = $this->auth->check(); - - $totalComponents = Component::enabled()->authenticated($includePrivate)->count(); - $majorOutages = Component::enabled()->authenticated($includePrivate)->status(4)->count(); - $majorOutageRate = (int) $this->config->get('setting.major_outage_rate', '50'); - $isMajorOutage = $totalComponents ? ($majorOutages / $totalComponents) * 100 >= $majorOutageRate : false; - - // Default data - $status = [ - 'system_status' => 'info', - 'system_message' => trans_choice('cachet.service.bad', $totalComponents), - 'favicon' => 'favicon-high-alert', - ]; - - if ($isMajorOutage) { - $status = [ - 'system_status' => 'danger', - 'system_message' => trans_choice('cachet.service.major', $totalComponents), - 'favicon' => 'favicon-high-alert', - ]; - } elseif (Component::enabled()->authenticated($includePrivate)->notStatus(1)->count() === 0) { - // If all our components are ok, do we have any non-fixed incidents? - $incidents = Incident::orderBy('occurred_at', 'desc')->get()->filter(function ($incident) { - return $incident->status !== Incident::FIXED; - }); - $incidentCount = $incidents->count(); - $unresolvedCount = $incidents->filter(function ($incident) { - return !$incident->is_resolved; - })->count(); - - if ($incidentCount === 0 || ($incidentCount >= 1 && $unresolvedCount === 0)) { - $status = [ - 'system_status' => 'success', - 'system_message' => trans_choice('cachet.service.good', $totalComponents), - 'favicon' => 'favicon', - ]; - } - } elseif (Component::enabled()->authenticated($includePrivate)->whereIn('status', [2, 3])->count() > 0) { - $status['favicon'] = 'favicon-medium-alert'; - } - - return $status; - } - - /** - * Determine if Cachet is allowed to send notifications to users, subscribers or third party tools. - * - * @return bool - */ - public function canNotifySubscribers() - { - $maintenancePeriods = Schedule::inProgress()->count(); - if ($maintenancePeriods === 0) { - return true; - } - - return !$this->config->get('setting.suppress_notifications_in_maintenance'); - } - - /** - * Get the cachet version. - * - * @return string - */ - public function getVersion() - { - return CACHET_VERSION; - } - - /** - * Get the table prefix. - * - * @return string - */ - public function getTablePrefix() - { - $driver = $this->config->get('database.default'); - - return $this->config->get("database.connections.{$driver}.prefix"); - } -} diff --git a/app/Integrations/GitHub/Releases.php b/app/Integrations/GitHub/Releases.php deleted file mode 100644 index 8d7935ad..00000000 --- a/app/Integrations/GitHub/Releases.php +++ /dev/null @@ -1,99 +0,0 @@ -cache = $cache; - $this->token = $token; - $this->url = $url ?: static::URL; - } - - /** - * Returns the latest release. - * - * @return string - */ - public function latest() - { - $release = $this->cache->remember('release.latest', 720, function () { - $headers = ['Accept' => 'application/vnd.github.v3+json', 'User-Agent' => defined('CACHET_VERSION') ? 'cachet/'.constant('CACHET_VERSION') : 'cachet']; - - if ($this->token) { - $headers['OAUTH-TOKEN'] = $this->token; - } - - event(new SystemCheckedForUpdatesEvent()); - - return json_decode((new Client())->get($this->url, [ - 'headers' => $headers, - ])->getBody(), true); - }); - - return [ - 'tag_name' => $release['tag_name'], - 'prelease' => $release['prerelease'], - 'draft' => $release['draft'], - ]; - } -} diff --git a/app/Models/Action.php b/app/Models/Action.php deleted file mode 100644 index be9cfcc1..00000000 --- a/app/Models/Action.php +++ /dev/null @@ -1,78 +0,0 @@ - - * @author James Brooks - */ -class Action extends Model -{ - use ValidatingTrait; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'id' => 'int', - 'class_name' => 'string', - 'user_id' => 'int', - 'username' => 'string', - 'information' => 'string', - 'description' => 'string', - ]; - - /** - * A list of methods protected from mass assignment. - * - * @var string[] - */ - protected $guarded = ['_token', '_method']; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'id' => 'nullable|int|min:1', - 'class_name' => 'required|string', - 'user_id' => 'required|int|min:1', - 'username' => 'required|string', - 'information' => 'nullable|string', - 'description' => 'required|string', - ]; - - /** - * The relations to eager load on every query. - * - * @var string[] - */ - protected $with = ['user']; - - /** - * Get the user relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function user() - { - return $this->belongsTo(User::class); - } -} diff --git a/app/Models/Component.php b/app/Models/Component.php deleted file mode 100644 index 08da7157..00000000 --- a/app/Models/Component.php +++ /dev/null @@ -1,248 +0,0 @@ - 0, - 'group_id' => 0, - 'description' => '', - 'link' => '', - 'enabled' => true, - 'meta' => null, - ]; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'name' => 'string', - 'description' => 'string', - 'status' => 'int', - 'order' => 'int', - 'link' => 'string', - 'group_id' => 'int', - 'enabled' => 'bool', - 'meta' => 'json', - 'deleted_at' => 'date', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'name', - 'description', - 'status', - 'link', - 'order', - 'group_id', - 'enabled', - 'meta', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required|string', - 'status' => 'required|int', - 'order' => 'nullable|int', - 'group_id' => 'nullable|int', - 'link' => 'nullable|url', - 'enabled' => 'required|bool', - ]; - - /** - * The searchable fields. - * - * @var string[] - */ - protected $searchable = [ - 'id', - 'name', - 'status', - 'order', - 'group_id', - 'enabled', - ]; - - /** - * The sortable fields. - * - * @var string[] - */ - protected $sortable = [ - 'id', - 'name', - 'status', - 'order', - 'group_id', - 'enabled', - ]; - - /** - * Get the group relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function group() - { - return $this->belongsTo(ComponentGroup::class, 'group_id', 'id'); - } - - /** - * Get the incidents relation. - * - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function incidents() - { - return $this->hasMany(Incident::class, 'component_id', 'id'); - } - - /** - * Finds all components by status. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param int $status - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeStatus(Builder $query, $status) - { - return $query->where('status', '=', $status); - } - - /** - * Finds all components which don't have the given status. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param int $status - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeNotStatus(Builder $query, $status) - { - return $query->where('status', '<>', $status); - } - - /** - * Finds all components which are enabled. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeEnabled(Builder $query) - { - return $query->where('enabled', '=', true); - } - - /** - * Find all components which are within visible groups. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param bool $authenticated - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeAuthenticated(Builder $query, $authenticated) - { - return $query->when(!$authenticated, function (Builder $query) { - return $query->whereDoesntHave('group', function (Builder $query) { - $query->where('visible', ComponentGroup::VISIBLE_AUTHENTICATED); - }); - }); - } - - /** - * Finds all components which are disabled. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeDisabled(Builder $query) - { - return $query->where('enabled', '=', false); - } - - /** - * Finds all ungrouped components. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeUngrouped(Builder $query) - { - return $query->enabled() - ->where('group_id', '=', 0) - ->orderBy('order') - ->orderBy('created_at'); - } - - /** - * Finds all grouped components. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeGrouped(Builder $query) - { - return $query->enabled() - ->where('group_id', '>', 0) - ->groupBy('group_id'); - } - - /** - * Get the presenter class. - * - * @return string - */ - public function getPresenterClass() - { - return ComponentPresenter::class; - } -} diff --git a/app/Models/ComponentGroup.php b/app/Models/ComponentGroup.php deleted file mode 100644 index f5a8af8d..00000000 --- a/app/Models/ComponentGroup.php +++ /dev/null @@ -1,197 +0,0 @@ - - */ -class ComponentGroup extends Model implements HasPresenter -{ - use SearchableTrait; - use SortableTrait; - use ValidatingTrait; - /** - * Viewable only authenticated users. - * - * @var int - */ - const VISIBLE_AUTHENTICATED = 0; - - /** - * Viewable by public. - * - * @var int - */ - const VISIBLE_GUEST = 1; - - /** - * The model's attributes. - * - * @var string - */ - protected $attributes = [ - 'order' => 0, - 'collapsed' => 0, - 'visible' => 0, - ]; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'name' => 'string', - 'order' => 'int', - 'collapsed' => 'int', - 'visible' => 'int', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = ['name', 'order', 'collapsed', 'visible']; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required|string', - 'order' => 'required|int', - 'collapsed' => 'required|int|between:0,4', - 'visible' => 'required|bool', - ]; - - /** - * The searchable fields. - * - * @var string[] - */ - protected $searchable = [ - 'id', - 'name', - 'order', - 'collapsed', - 'visible', - ]; - - /** - * The sortable fields. - * - * @var string[] - */ - protected $sortable = [ - 'id', - 'name', - 'order', - 'collapsed', - 'visible', - ]; - - /** - * The relations to eager load on every query. - * - * @var string[] - */ - protected $with = ['enabled_components', 'enabled_components_lowest']; - - /** - * Get the components relation. - * - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function components() - { - return $this->hasMany(Component::class, 'group_id', 'id'); - } - - /** - * Get the incidents relation. - * - * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough - */ - public function incidents() - { - return $this->hasManyThrough(Incident::class, Component::class, 'id', 'component_id'); - } - - /** - * Return all of the enabled components. - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function enabled_components() - { - return $this->components()->enabled()->orderBy('order'); - } - - /** - * Return all of the enabled components ordered by status. - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function enabled_components_lowest() - { - return $this->components()->enabled()->orderBy('status', 'desc'); - } - - /** - * Get the presenter class. - * - * @return string - */ - public function getPresenterClass() - { - return ComponentGroupPresenter::class; - } - - /** - * Finds all component groups which are visible to public. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeVisible(Builder $query) - { - return $query->where('visible', '=', self::VISIBLE_GUEST); - } - - /** - * Finds all used component groups. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param \Illuminate\Support\Collection $usedComponentGroups - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeUsed(Builder $query, Collection $usedComponentGroups) - { - return $query->whereIn('id', $usedComponentGroups) - ->orderBy('order'); - } -} diff --git a/app/Models/Incident.php b/app/Models/Incident.php deleted file mode 100644 index b1ddb58c..00000000 --- a/app/Models/Incident.php +++ /dev/null @@ -1,257 +0,0 @@ - - * @author Joseph Cohen - * @author Graham Campbell - */ -class Incident extends Model implements HasPresenter -{ - use HasMeta; - use HasTags; - use SearchableTrait; - use SoftDeletes; - use SortableTrait; - use ValidatingTrait; - - /** - * Status for incident being investigated. - * - * @var int - */ - const INVESTIGATING = 1; - - /** - * Status for incident having been identified. - * - * @var int - */ - const IDENTIFIED = 2; - - /** - * Status for incident being watched. - * - * @var int - */ - const WATCHED = 3; - - /** - * Status for incident now being fixed. - * - * @var int - */ - const FIXED = 4; - - /** - * The accessors to append to the model's array form. - * - * @var string[] - */ - protected $appends = [ - 'is_resolved', - ]; - - /** - * The model's attributes. - * - * @var string[] - */ - protected $attributes = [ - 'stickied' => false, - 'notifications' => false, - ]; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'component_id' => 'int', - 'status' => 'int', - 'user_id' => 'int', - 'visible' => 'int', - 'stickied' => 'bool', - 'notifications' => 'bool', - 'occurred_at' => 'datetime', - 'deleted_at' => 'date', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'user_id', - 'component_id', - 'name', - 'status', - 'visible', - 'stickied', - 'notifications', - 'message', - 'occurred_at', - 'created_at', - 'updated_at', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'user_id' => 'nullable|int', - 'component_id' => 'nullable|int', - 'name' => 'required|string', - 'status' => 'required|int', - 'visible' => 'required|bool', - 'stickied' => 'required|bool', - 'notifications' => 'nullable|bool', - 'message' => 'required|string', - ]; - - /** - * The searchable fields. - * - * @var string[] - */ - protected $searchable = [ - 'id', - 'user_id', - 'component_id', - 'name', - 'status', - 'visible', - 'stickied', - ]; - - /** - * The sortable fields. - * - * @var string[] - */ - protected $sortable = [ - 'id', - 'user_id', - 'name', - 'status', - 'visible', - 'stickied', - 'message', - 'occurred_at', - ]; - - /** - * The relations to eager load on every query. - * - * @var string[] - */ - protected $with = [ - 'meta', - 'updates', - ]; - - /** - * Get the component relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function component() - { - return $this->belongsTo(Component::class, 'component_id', 'id'); - } - - /** - * Get the updates relation. - * - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function updates() - { - return $this->hasMany(IncidentUpdate::class)->orderBy('created_at', 'desc'); - } - - /** - * Get the user relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function user() - { - return $this->belongsTo(User::class); - } - - /** - * Finds all visible incidents. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeVisible(Builder $query) - { - return $query->where('visible', '=', 1); - } - - /** - * Finds all stickied incidents. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeStickied(Builder $query) - { - return $query->where('stickied', '=', true); - } - - /** - * Is the incident resolved? - * - * @return bool - */ - public function getIsResolvedAttribute() - { - if ($updates = $this->updates->first()) { - return (int) $updates->status === self::FIXED; - } - - return (int) $this->status === self::FIXED; - } - - /** - * Get the presenter class. - * - * @return string - */ - public function getPresenterClass() - { - return IncidentPresenter::class; - } -} diff --git a/app/Models/IncidentComponent.php b/app/Models/IncidentComponent.php deleted file mode 100644 index 13218d15..00000000 --- a/app/Models/IncidentComponent.php +++ /dev/null @@ -1,78 +0,0 @@ - - */ -class IncidentComponent extends Model -{ - use ValidatingTrait; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'incident_id' => 'int', - 'component_id' => 'int', - 'status_id' => 'int', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'incident_id', - 'component_id', - 'status_id', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'incident_id' => 'required|int', - 'component_id' => 'required|int', - 'status_id' => 'required|int', - ]; - - /** - * Get the incident relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function incident() - { - return $this->belongsTo(Incident::class); - } - - /** - * Get the component relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function component() - { - return $this->belongsTo(Component::class); - } -} diff --git a/app/Models/IncidentTemplate.php b/app/Models/IncidentTemplate.php deleted file mode 100644 index 88b833d3..00000000 --- a/app/Models/IncidentTemplate.php +++ /dev/null @@ -1,80 +0,0 @@ - 'string', - 'slug' => 'string', - 'template' => 'string', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = ['name', 'slug', 'template']; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required|string', - 'template' => 'required|string', - ]; - - /** - * Overrides the models boot method. - * - * @return void - */ - public static function boot() - { - parent::boot(); - - self::saving(function ($template) { - if (!$template->slug) { - $template->slug = Str::slug($template->name); - } - }); - } - - /** - * Finds a template by the slug. - * - * @param string $slug - * @param string[] $columns - * - * @return \Illuminate\Database\Query\Builder - */ - public static function forSlug($slug, $columns = ['*']) - { - $template = static::where('slug', '=', $slug)->firstOrFail($columns); - - return $template; - } -} diff --git a/app/Models/IncidentUpdate.php b/app/Models/IncidentUpdate.php deleted file mode 100644 index 0591a248..00000000 --- a/app/Models/IncidentUpdate.php +++ /dev/null @@ -1,106 +0,0 @@ - - */ -class IncidentUpdate extends Model implements HasPresenter -{ - use SortableTrait; - use ValidatingTrait; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'incident_id' => 'int', - 'status' => 'int', - 'message' => 'string', - 'user_id' => 'int', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'incident_id', - 'status', - 'message', - 'user_id', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'incident_id' => 'required|int', - 'status' => 'required|int', - 'message' => 'required|string', - 'user_id' => 'required|int', - ]; - - /** - * The sortable fields. - * - * @var string[] - */ - protected $sortable = [ - 'id', - 'status', - 'user_id', - ]; - - /** - * Get the incident relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function incident() - { - return $this->belongsTo(Incident::class); - } - - /** - * Get the user relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function user() - { - return $this->belongsTo(User::class); - } - - /** - * Get the presenter class. - * - * @return string - */ - public function getPresenterClass() - { - return IncidentUpdatePresenter::class; - } -} diff --git a/app/Models/Invite.php b/app/Models/Invite.php deleted file mode 100644 index 292735c5..00000000 --- a/app/Models/Invite.php +++ /dev/null @@ -1,69 +0,0 @@ - - * @author James Brooks - */ -class Invite extends Model -{ - use Notifiable; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'email' => 'string', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = ['email']; - - /** - * Overrides the models boot method. - * - * @return void - */ - public static function boot() - { - parent::boot(); - - self::creating(function ($invite) { - if (!$invite->code) { - $invite->code = Str::random(20); - } - }); - } - - /** - * Determines if the invite was claimed. - * - * @return bool - */ - public function getIsClaimedAttribute() - { - return $this->claimed_at !== null; - } -} diff --git a/app/Models/Meta.php b/app/Models/Meta.php deleted file mode 100644 index 6c391d20..00000000 --- a/app/Models/Meta.php +++ /dev/null @@ -1,80 +0,0 @@ - - */ -class Meta extends Model -{ - use ValidatingTrait; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'id' => 'int', - 'key' => 'string', - 'value' => 'json', - 'meta_id' => 'int', - 'meta_type' => 'string', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'key', - 'value', - 'meta_id', - 'meta_type', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'id' => 'nullable|int|min:1', - 'key' => 'required|string', - 'value' => 'nullable', - 'meta_id' => 'required|int', - 'meta_type' => 'required|string', - ]; - - /** - * The table associated with the model. - * - * @var string - */ - protected $table = 'meta'; - - /** - * Get all of the owning meta models. - * - * @return \Illuminate\Database\Eloquent\Relations\MorphTo - */ - public function meta() - { - return $this->morphTo(); - } -} diff --git a/app/Models/Metric.php b/app/Models/Metric.php deleted file mode 100644 index c3e6483e..00000000 --- a/app/Models/Metric.php +++ /dev/null @@ -1,236 +0,0 @@ - '', - 'display_chart' => 1, - 'default_value' => 0, - 'calc_type' => 0, - 'places' => 2, - 'default_view' => 1, - 'threshold' => 5, - 'order' => 0, - 'visible' => 1, - ]; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'name' => 'string', - 'display_chart' => 'bool', - 'default_value' => 'int', - 'calc_type' => 'int', - 'places' => 'int', - 'default_view' => 'int', - 'threshold' => 'int', - 'order' => 'int', - 'visible' => 'int', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'name', - 'suffix', - 'description', - 'display_chart', - 'default_value', - 'calc_type', - 'places', - 'default_view', - 'threshold', - 'order', - 'visible', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required', - 'suffix' => 'required', - 'display_chart' => 'required|bool', - 'default_value' => 'required|numeric', - 'places' => 'required|numeric|between:0,4', - 'default_view' => 'required|numeric|between:0,3', - 'visible' => 'required|numeric|between:0,2', - ]; - - /** - * The sortable fields. - * - * @var string[] - */ - protected $sortable = [ - 'id', - 'name', - 'display_chart', - 'default_value', - 'calc_type', - 'order', - 'visible', - ]; - - /** - * Overrides the models boot method. - * - * @return void - */ - public static function boot() - { - parent::boot(); - - // When deleting a metric, delete the points too. - self::deleting(function ($model) { - $model->points()->delete(); - }); - } - - /** - * Get the points relation. - * - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function points() - { - return $this->hasMany(MetricPoint::class, 'metric_id', 'id')->latest(); - } - - /** - * Scope metrics to those of which are displayable. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeDisplayable(Builder $query) - { - return $query->where('display_chart', '=', true)->where('visible', '<>', self::VISIBLE_HIDDEN); - } - - /** - * Finds all metrics which are visible to public. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeVisible(Builder $query) - { - return $query->where('visible', '=', self::VISIBLE_GUEST); - } - - /** - * Determines whether a chart should be shown. - * - * @return bool - */ - public function getShouldDisplayAttribute() - { - return $this->display_chart; - } - - /** - * Validate the model before save. - * - * @throws \AltThree\Validator\ValidationException - * - * @return void - */ - public function validate() - { - $messages = []; - - if (60 % $this->threshold !== 0) { - $messages[] = 'Threshold must divide by 60.'; - } - - if ($messages) { - throw new ValidationException(new MessageBag($messages)); - } - } - - /** - * Get the presenter class. - * - * @return string - */ - public function getPresenterClass() - { - return MetricPresenter::class; - } -} diff --git a/app/Models/MetricPoint.php b/app/Models/MetricPoint.php deleted file mode 100644 index 6e649400..00000000 --- a/app/Models/MetricPoint.php +++ /dev/null @@ -1,139 +0,0 @@ - - * @author Joseph Cohen - * @author Graham Campbell - */ -class MetricPoint extends Model implements HasPresenter -{ - use ValidatingTrait; - - /** - * The accessors to append to the model's array form. - * - * @var string[] - */ - protected $appends = [ - 'calculated_value', - ]; - - /** - * The model's attributes. - * - * @var string[] - */ - protected $attributes = [ - 'value' => 0, - 'counter' => 1, - ]; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'metric_id' => 'int', - 'value' => 'float', - 'counter' => 'int', - ]; - - /** - * The attributes that are mass assignable. - * - * @var string[] - */ - protected $fillable = [ - 'metric_id', - 'value', - 'counter', - 'created_at', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'value' => 'required|numeric', - ]; - - /** - * Get the metric relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function metric() - { - return $this->belongsTo(Metric::class); - } - - /** - * Show the actual calculated value; as per (value * counter). - * - * @return int - */ - public function getCalculatedValueAttribute() - { - return $this->value * $this->counter; - } - - /** - * Round the created at value into intervals of 30 seconds. - * - * @param string $createdAt - * - * @return string|void - */ - public function setCreatedAtAttribute($createdAt) - { - if (!$createdAt) { - return; - } - - if (!$createdAt instanceof DateTime) { - $createdAt = Carbon::parse($createdAt); - } - - $timestamp = $createdAt->format('U'); - $timestamp = 30 * round($timestamp / 30); - - $date = Carbon::createFromFormat('U', $timestamp)->toDateTimeString(); - - $this->attributes['created_at'] = $date; - - return $date; - } - - /** - * Get the presenter class. - * - * @return string - */ - public function getPresenterClass() - { - return MetricPointPresenter::class; - } -} diff --git a/app/Models/Schedule.php b/app/Models/Schedule.php deleted file mode 100644 index 93a7e3bb..00000000 --- a/app/Models/Schedule.php +++ /dev/null @@ -1,219 +0,0 @@ - self::UPCOMING, - 'completed_at' => null, - ]; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'name' => 'string', - 'message' => 'string', - 'status' => 'int', - 'scheduled_at' => 'datetime', - 'completed_at' => 'datetime', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'name', - 'message', - 'status', - 'scheduled_at', - 'completed_at', - 'created_at', - 'updated_at', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'name' => 'required|string', - 'message' => 'nullable|string', - 'status' => 'required|int|between:0,2', - ]; - - /** - * The searchable fields. - * - * @var string[] - */ - protected $searchable = [ - 'id', - 'name', - 'status', - ]; - - /** - * The sortable fields. - * - * @var string[] - */ - protected $sortable = [ - 'id', - 'name', - 'status', - 'scheduled_at', - 'completed_at', - 'created_at', - 'updated_at', - ]; - - /** - * The relations to eager load on every query. - * - * @var string[] - */ - protected $with = ['components']; - - /** - * Get the components relation. - * - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function components() - { - return $this->hasMany(ScheduleComponent::class); - } - - /** - * Scope schedules that are uncompleted. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeUncompleted(Builder $query) - { - return $query->whereIn('status', [self::UPCOMING, self::IN_PROGRESS])->where(function (Builder $query) { - return $query->whereNull('completed_at'); - }); - } - - /** - * Scope schedules that are in progress. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeInProgress(Builder $query) - { - return $query->where('scheduled_at', '<=', Carbon::now())->where('status', '<>', self::COMPLETE)->where(function ($query) { - $query->whereNull('completed_at'); - }); - } - - /** - * Scopes schedules to those in the future. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeScheduledInFuture($query) - { - return $query->whereIn('status', [self::UPCOMING, self::IN_PROGRESS])->where('scheduled_at', '>=', Carbon::now()); - } - - /** - * Scopes schedules to those scheduled in the past. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeScheduledInPast($query) - { - return $query->whereIn('status', [self::UPCOMING, self::IN_PROGRESS])->where('scheduled_at', '<=', Carbon::now()); - } - - /** - * Scopes schedules to those completed in the past. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeCompletedInPast($query) - { - return $query->where('status', '=', self::COMPLETE)->where('completed_at', '<=', Carbon::now()); - } - - /** - * Get the presenter class. - * - * @return string - */ - public function getPresenterClass() - { - return SchedulePresenter::class; - } -} diff --git a/app/Models/ScheduleComponent.php b/app/Models/ScheduleComponent.php deleted file mode 100644 index a77abcd2..00000000 --- a/app/Models/ScheduleComponent.php +++ /dev/null @@ -1,73 +0,0 @@ - 'int', - 'component_id' => 'int', - 'component_status' => 'int', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'schedule_id', - 'component_id', - 'component_status', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'schedule_id' => 'required|int', - 'component_id' => 'required|int', - 'component_status' => 'required|int', - ]; - - /** - * Get the schedule relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function schedule() - { - return $this->belongsTo(Schedule::class); - } - - /** - * Get the component relation. - * - * @return \Illuminate\Database\Eloquent\Relations\HasOne - */ - public function component() - { - return $this->hasOne(Component::class); - } -} diff --git a/app/Models/Setting.php b/app/Models/Setting.php deleted file mode 100644 index 54ea2b77..00000000 --- a/app/Models/Setting.php +++ /dev/null @@ -1,41 +0,0 @@ - '']; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'name' => 'string', - 'value' => 'string', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = ['name', 'value']; -} diff --git a/app/Models/Subscriber.php b/app/Models/Subscriber.php deleted file mode 100644 index e10a093b..00000000 --- a/app/Models/Subscriber.php +++ /dev/null @@ -1,195 +0,0 @@ - - * @author James Brooks - * @author Graham Campbell - */ -class Subscriber extends Model implements HasPresenter -{ - use HasMeta; - use Notifiable; - use ValidatingTrait; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'email' => 'string', - 'phone_number' => 'string', - 'slack_webhook_url' => 'string', - 'verify_code' => 'string', - 'verified_at' => 'date', - 'global' => 'bool', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'email', - 'phone_number', - 'slack_webhook_url', - 'verified_at', - 'global', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'email' => 'nullable|email', - 'phone_number' => 'nullable|string', - 'slack_webhook_url' => 'nullable|url', - ]; - - /** - * The relations to eager load on every query. - * - * @var string[] - */ - protected $with = ['subscriptions']; - - /** - * Overrides the models boot method. - * - * @return void - */ - public static function boot() - { - parent::boot(); - - self::creating(function ($user) { - if (!$user->verify_code) { - $user->verify_code = self::generateVerifyCode(); - } - }); - } - - /** - * Get the subscriptions relation. - * - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function subscriptions() - { - return $this->hasMany(Subscription::class); - } - - /** - * Scope verified subscribers. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeIsVerified(Builder $query) - { - return $query->whereNotNull('verified_at'); - } - - /** - * Scope global subscribers. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeIsGlobal(Builder $query) - { - return $query->where('global', '=', true); - } - - /** - * Finds all verified subscriptions for a component. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param int $component_id - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeForComponent(Builder $query, $component_id) - { - return $query->select('subscribers.*') - ->join('subscriptions', 'subscribers.id', '=', 'subscriptions.subscriber_id') - ->where('subscriptions.component_id', '=', $component_id); - } - - /** - * Determines if the subscriber is verified. - * - * @return bool - */ - public function getIsVerifiedAttribute() - { - return $this->verified_at !== null; - } - - /** - * Returns an new verify code. - * - * @return string - */ - public static function generateVerifyCode() - { - return Str::random(42); - } - - /** - * Route notifications for the Nexmo channel. - * - * @return string - */ - public function routeNotificationForNexmo() - { - return $this->phone_number; - } - - /** - * Route notifications for the Slack channel. - * - * @return string - */ - public function routeNotificationForSlack() - { - return $this->slack_webhook_url; - } - - /** - * Get the presenter class. - * - * @return string - */ - public function getPresenterClass() - { - return SubscriberPresenter::class; - } -} diff --git a/app/Models/Subscription.php b/app/Models/Subscription.php deleted file mode 100644 index c878c3c2..00000000 --- a/app/Models/Subscription.php +++ /dev/null @@ -1,116 +0,0 @@ - 'int', - 'component_id' => 'int', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = [ - 'subscriber_id', - 'component_id', - ]; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'subscriber_id' => 'required|int', - 'component_id' => 'nullable|int', - ]; - - /** - * Get the subscriber relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsTo - */ - public function subscriber() - { - return $this->belongsTo(Subscriber::class); - } - - /** - * Get the component relation. - * - * @return \Illuminate\Database\Eloquent\Relations\HasOne - */ - public function component() - { - return $this->belongsTo(Component::class); - } - - /** - * Finds all subscriptions for a given subscriber. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param int $subscriber_id - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeForSubscriber(Builder $query, $subscriber_id) - { - return $query->where('subscriber_id', '=', $subscriber_id); - } - - /** - * Finds all subscriptions for a component. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param int $component_id - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeForComponent(Builder $query, $component_id) - { - return $query->where('component_id', '=', $component_id); - } - - /** - * Finds all verified subscriptions for a component. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param int $component_id - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeIsVerifiedForComponent(Builder $query, $component_id) - { - return $query->select('subscriptions.*') - ->join('subscribers', 'subscriptions.subscriber_id', '=', 'subscribers.id') - ->where(function ($query) { - $query->where('subscriptions.component_id', '=', $component_id) - ->orWhere('subscribers.global'); - }) - ->whereNotNull('subscribers.verified_at'); - } -} diff --git a/app/Models/Tag.php b/app/Models/Tag.php deleted file mode 100644 index 022ceb8c..00000000 --- a/app/Models/Tag.php +++ /dev/null @@ -1,85 +0,0 @@ - 'string', - ]; - - /** - * The fillable properties. - * - * @var string[] - */ - protected $fillable = ['name']; - - /** - * Overrides the models boot method. - * - * @return void - */ - public static function boot() - { - parent::boot(); - - self::creating(function ($tag) { - $tag->slug = Str::slug($tag->name); - }); - } - - /** - * Get the components relation. - * - * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany - */ - public function components() - { - return $this->belongsToMany(Component::class); - } - - /** - * @param array|\ArrayAccess $values - * - * @return \CachetHQ\Cachet\Models\Tag|static - */ - public static function findOrCreate($values) - { - $tags = collect($values)->map(function ($value) { - if ($value instanceof self) { - return $value; - } - - $tag = static::where('name', '=', $value)->first(); - - if (!$tag instanceof self) { - $tag = static::create([ - 'name' => $value, - 'slug' => Str::slug($value), - ]); - } - - return $tag; - }); - - return is_string($values) ? $tags->first() : $tags; - } -} diff --git a/app/Models/Traits/HasMeta.php b/app/Models/Traits/HasMeta.php deleted file mode 100644 index 3571cf0a..00000000 --- a/app/Models/Traits/HasMeta.php +++ /dev/null @@ -1,32 +0,0 @@ - - */ -trait HasMeta -{ - /** - * Get the meta relation. - * - * @return \Illuminate\Database\Eloquent\Relations\MorphMany - */ - public function meta() - { - return $this->morphMany(Meta::class, 'meta'); - } -} diff --git a/app/Models/Traits/HasTags.php b/app/Models/Traits/HasTags.php deleted file mode 100644 index b707e050..00000000 --- a/app/Models/Traits/HasTags.php +++ /dev/null @@ -1,196 +0,0 @@ - - */ -trait HasTags -{ - /** - * @var array - */ - protected $queuedTags = []; - - /** - * Boot the trait. - * - * @return void - */ - public static function bootHasTags() - { - static::created(function (Model $taggableModel) { - if (count($taggableModel->queuedTags) > 0) { - $taggableModel->attachTags($taggableModel->queuedTags); - - $taggableModel->queuedTags = []; - } - }); - - static::deleted(function (Model $deletedModel) { - $tags = $deletedModel->tags()->get(); - - $deletedModel->detachTags($tags); - }); - } - - /** - * Get the tags relation. - * - * @return \Illuminate\Database\Eloquent\Relations\MorphToMany - */ - public function tags() - { - return $this->morphToMany(Tag::class, 'taggable'); - } - - /** - * @param string|array|\ArrayAccess|\CachetHQ\Cachet\Models\Tag $tags - */ - public function setTagsAttribute($tags) - { - if (!$this->exists) { - $this->queuedTags = $tags; - - return; - } - - $this->attachTags($tags); - } - - /** - * @param \Illuminate\Database\Eloquent\Builder $query - * @param array|\ArrayAccess $tags - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeWithAllTags(Builder $query, $tags) - { - $tags = static::convertToTags($tags); - - $tags->each(function ($tag) use ($query) { - $query->whereHas('tags', function (Builder $query) use ($tag) { - return $query->where('tags.id', $tag ? $tag->id : 0); - }); - }); - - return $query; - } - - /** - * @param \Illuminate\Database\Eloquent\Builder $query - * @param array|\ArrayAccess $tags - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeWithAnyTags(Builder $query, $tags) - { - $tags = static::convertToTags($tags); - - return $query->whereHas('tags', function (Builder $query) use ($tags) { - $tagIds = collect($tags)->pluck('id'); - - $query->whereIn('tags.id', $tagIds); - }); - } - - /** - * @param array|\ArrayAccess|\CachetHQ\Cachet\Models\Tag $tags - * - * @return $this - */ - public function attachTags($tags) - { - $tags = collect(Tag::findOrCreate($tags)); - - $this->tags()->syncWithoutDetaching($tags->pluck('id')->toArray()); - - return $this; - } - - /** - * @param string|\CachetHQ\Cachet\Models\Tag $tag - * - * @return $this - */ - public function attachTag($tag) - { - return $this->attachTags([$tag]); - } - - /** - * @param array|\ArrayAccess $tags - * - * @return $this - */ - public function detachTags($tags) - { - $tags = static::convertToTags($tags); - - collect($tags) - ->filter() - ->each(function (Tag $tag) { - $this->tags()->detach($tag); - }); - - return $this; - } - - /** - * @param string|\CachetHQ\Cachet\Models\Tag $tag - * - * @return $this - */ - public function detachTag($tag) - { - return $this->detachTags([$tag]); - } - - /** - * @param array|\ArrayAccess $tags - * - * @return $this - */ - public function syncTags($tags) - { - $tags = collect(Tag::findOrCreate($tags)); - - $this->tags()->sync($tags->pluck('id')->toArray()); - - return $this; - } - - /** - * Convert a list of tags into a collection of \CachetHQ\Cachet\Models\Tag. - * - * @param array|\ArrayAccess $values - * - * @return \Illuminate\Support\Collection - */ - protected static function convertToTags($values) - { - return collect($values)->map(function ($value) { - if ($value instanceof Tag) { - return $value; - } - - return Tag::where('slug', '=', $value)->first(); - }); - } -} diff --git a/app/Models/Traits/SearchableTrait.php b/app/Models/Traits/SearchableTrait.php deleted file mode 100644 index 8038b47a..00000000 --- a/app/Models/Traits/SearchableTrait.php +++ /dev/null @@ -1,43 +0,0 @@ - - */ -trait SearchableTrait -{ - /** - * Adds a search scope. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param array $search - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeSearch(Builder $query, array $search = []) - { - if (empty($search)) { - return $query; - } - - if (!array_intersect(array_keys($search), $this->searchable)) { - return $query; - } - - return $query->where($search); - } -} diff --git a/app/Models/Traits/SortableTrait.php b/app/Models/Traits/SortableTrait.php deleted file mode 100644 index 7c579ce5..00000000 --- a/app/Models/Traits/SortableTrait.php +++ /dev/null @@ -1,40 +0,0 @@ - - */ -trait SortableTrait -{ - /** - * Adds a sort scope. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param string $column - * @param string $direction - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeSort(Builder $query, $column, $direction) - { - if (!in_array($column, $this->sortable)) { - return $query; - } - - return $query->orderBy($column, $direction); - } -} diff --git a/app/Models/User.php b/app/Models/User.php index 7e568bd0..4d7f70f5 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -1,212 +1,45 @@ - */ class User extends Authenticatable { - use Notifiable; - use ValidatingTrait; - /** - * The admin level of user. - * - * @var int - */ - const LEVEL_ADMIN = 1; + use HasApiTokens, HasFactory, Notifiable; /** - * The general level of user. + * The attributes that are mass assignable. * - * @var int - */ - const LEVEL_USER = 2; - - /** - * The model's attributes. - * - * @var string[] - */ - protected $attributes = [ - 'welcomed' => false, - ]; - - /** - * The attributes that should be casted to native types. - * - * @var string[] - */ - protected $casts = [ - 'username' => 'string', - 'email' => 'string', - 'google_2fa_secret' => 'string', - 'api_key' => 'string', - 'active' => 'bool', - 'level' => 'int', - 'welcomed' => 'bool', - ]; - - /** - * The fillable properties. - * - * @var string[] + * @var array */ protected $fillable = [ - 'username', - 'password', - 'google_2fa_secret', + 'name', 'email', - 'api_key', - 'active', - 'level', - 'welcomed', + 'password', ]; /** - * The properties that cannot be mass assigned. + * The attributes that should be hidden for serialization. * - * @var string[] + * @var array */ - protected $guarded = []; - - /** - * The hidden properties. - * - * These are excluded when we are serializing the model. - * - * @var string[] - */ - protected $hidden = ['password', 'remember_token', 'google_2fa_secret']; - - /** - * The validation rules. - * - * @var string[] - */ - public $rules = [ - 'username' => ['required', 'regex:/\A(?!.*[:;]-\))[ -~]+\z/'], - 'email' => 'required|email', - 'password' => 'required', + protected $hidden = [ + 'password', + 'remember_token', ]; /** - * Overrides the models boot method. + * The attributes that should be cast. * - * @return void + * @var array */ - public static function boot() - { - parent::boot(); - - self::creating(function ($user) { - if (!$user->api_key) { - $user->api_key = self::generateApiKey(); - } - }); - } - - /** - * Scope all admin users. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeAdmins(Builder $query) - { - return $query->where('level', '=', self::LEVEL_ADMIN); - } - - /** - * Scope all active users. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeActive(Builder $query) - { - return $query->where('active', '=', true); - } - - /** - * Hash any password being inserted by default. - * - * @param string $password - * - * @return \CachetHQ\Cachet\Models\User - */ - public function setPasswordAttribute($password) - { - $this->attributes['password'] = Hash::make($password); - - return $this; - } - - /** - * Find by api_key, or throw an exception. - * - * @param string $token - * @param string[] $columns - * - * @throws \Illuminate\Database\Eloquent\ModelNotFoundException - * - * @return \CachetHQ\Cachet\Models\User - */ - public static function findByApiToken($token, $columns = ['*']) - { - $user = static::where('api_key', $token)->firstOrFail($columns); - - return $user; - } - - /** - * Returns an API key. - * - * @return string - */ - public static function generateApiKey() - { - return Str::random(20); - } - - /** - * Returns whether a user is at admin level. - * - * @return bool - */ - public function getIsAdminAttribute() - { - return $this->level == self::LEVEL_ADMIN; - } - - /** - * Returns if a user has enabled two factor authentication. - * - * @return bool - */ - public function getHasTwoFactorAttribute() - { - return trim($this->google_2fa_secret) !== ''; - } + protected $casts = [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; } diff --git a/app/Notifications/Component/ComponentStatusChangedNotification.php b/app/Notifications/Component/ComponentStatusChangedNotification.php deleted file mode 100644 index 02d02d4a..00000000 --- a/app/Notifications/Component/ComponentStatusChangedNotification.php +++ /dev/null @@ -1,155 +0,0 @@ - - */ -class ComponentStatusChangedNotification extends Notification -{ - use Queueable; - - /** - * The component that changed. - * - * @var \CachetHQ\Cachet\Models\Component - */ - protected $component; - - /** - * The component status we're now at. - * - * @var int - */ - protected $status; - - /** - * Create a new notification instance. - * - * @param \CachetHQ\Cachet\Models\Component $component - * @param int $status - * - * @return void - */ - public function __construct(Component $component, $status) - { - $this->component = AutoPresenter::decorate($component); - $this->status = $status; - } - - /** - * Get the notification's delivery channels. - * - * @param mixed $notifiable - * - * @return string[] - */ - public function via($notifiable) - { - return ['mail', 'nexmo', 'slack']; - } - - /** - * Get the mail representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\MailMessage - */ - public function toMail($notifiable) - { - $content = trans('notifications.component.status_update.mail.content', [ - 'name' => $this->component->name, - 'old_status' => $this->component->human_status, - 'new_status' => trans("cachet.components.status.{$this->status}"), - ]); - - return (new MailMessage()) - ->subject(trans('notifications.component.status_update.mail.subject')) - ->markdown('notifications.component.update', [ - 'componentName' => $this->component->name, - 'content' => $content, - 'unsubscribeText' => trans('cachet.subscriber.unsubscribe'), - 'unsubscribeUrl' => cachet_route('subscribe.unsubscribe', $notifiable->verify_code), - 'manageSubscriptionText' => trans('cachet.subscriber.manage_subscription'), - 'manageSubscriptionUrl' => cachet_route('subscribe.manage', $notifiable->verify_code), - ]); - } - - /** - * Get the Nexmo / SMS representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\NexmoMessage - */ - public function toNexmo($notifiable) - { - $content = trans('notifications.component.status_update.sms.content', [ - 'name' => $this->component->name, - 'old_status' => $this->component->human_status, - 'new_status' => trans("cachet.components.status.{$this->status}"), - ]); - - return (new NexmoMessage())->content($content); - } - - /** - * Get the Slack representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\SlackMessage - */ - public function toSlack($notifiable) - { - $content = trans('notifications.component.status_update.slack.content', [ - 'name' => $this->component->name, - 'old_status' => $this->component->human_status, - 'new_status' => trans("cachet.components.status.{$this->status}"), - ]); - - $status = 'info'; - - if ($this->status <= 1) { - $status = 'success'; - } elseif ($this->status === 2) { - $status = 'warning'; - } elseif ($this->status >= 3) { - $status = 'error'; - } - - return (new SlackMessage()) - ->$status() - ->content(trans('notifications.component.status_update.slack.title')) - ->attachment(function ($attachment) use ($content, $notifiable) { - $attachment->title($content, cachet_route('status-page')) - ->fields(array_filter([ - 'Component' => $this->component->name, - 'Old Status' => $this->component->human_status, - 'New Status' => trans("cachet.components.status.{$this->status}"), - 'Link' => $this->component->link, - ])) - ->footer(trans('cachet.subscriber.unsubscribe', ['link' => cachet_route('subscribe.unsubscribe', $notifiable->verify_code)])); - }); - } -} diff --git a/app/Notifications/Incident/NewIncidentNotification.php b/app/Notifications/Incident/NewIncidentNotification.php deleted file mode 100644 index ac56c9de..00000000 --- a/app/Notifications/Incident/NewIncidentNotification.php +++ /dev/null @@ -1,139 +0,0 @@ - - */ -class NewIncidentNotification extends Notification -{ - use Queueable; - - /** - * The incident. - * - * @var \CachetHQ\Cachet\Models\Incident - */ - protected $incident; - - /** - * Create a new notification instance. - * - * @param \CachetHQ\Cachet\Models\Incident $incident - * - * @return void - */ - public function __construct(Incident $incident) - { - $this->incident = AutoPresenter::decorate($incident); - } - - /** - * Get the notification's delivery channels. - * - * @param mixed $notifiable - * - * @return string[] - */ - public function via($notifiable) - { - return ['mail', 'nexmo', 'slack']; - } - - /** - * Get the mail representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\MailMessage - */ - public function toMail($notifiable) - { - $content = trans('notifications.incident.new.mail.content', [ - 'name' => $this->incident->name, - ]); - - return (new MailMessage()) - ->subject(trans('notifications.incident.new.mail.subject')) - ->markdown('notifications.incident.new', [ - 'incident' => $this->incident, - 'content' => $content, - 'actionText' => trans('notifications.incident.new.mail.action'), - 'actionUrl' => cachet_route('incident', [$this->incident]), - 'unsubscribeText' => trans('cachet.subscriber.unsubscribe'), - 'unsubscribeUrl' => cachet_route('subscribe.unsubscribe', $notifiable->verify_code), - 'manageSubscriptionText' => trans('cachet.subscriber.manage_subscription'), - 'manageSubscriptionUrl' => cachet_route('subscribe.manage', $notifiable->verify_code), - ]); - } - - /** - * Get the Nexmo / SMS representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\NexmoMessage - */ - public function toNexmo($notifiable) - { - return (new NexmoMessage())->content(trans('notifications.incident.new.sms.content', [ - 'name' => $this->incident->name, - ])); - } - - /** - * Get the Slack representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\SlackMessage - */ - public function toSlack($notifiable) - { - $content = trans('notifications.incident.new.slack.content', [ - 'app_name' => Config::get('setting.app_name'), - ]); - - $status = 'info'; - - if ($this->incident->status === Incident::FIXED) { - $status = 'success'; - } elseif ($this->incident->status === Incident::WATCHED) { - $status = 'warning'; - } else { - $status = 'error'; - } - - return (new SlackMessage()) - ->$status() - ->content($content) - ->attachment(function ($attachment) { - $attachment->title(trans('notifications.incident.new.slack.title', ['name' => $this->incident->name])) - ->timestamp($this->incident->getWrappedObject()->occurred_at) - ->fields(array_filter([ - 'ID' => "#{$this->incident->id}", - 'Link' => $this->incident->permalink, - ])); - }); - } -} diff --git a/app/Notifications/IncidentUpdate/IncidentUpdatedNotification.php b/app/Notifications/IncidentUpdate/IncidentUpdatedNotification.php deleted file mode 100644 index 6c88b403..00000000 --- a/app/Notifications/IncidentUpdate/IncidentUpdatedNotification.php +++ /dev/null @@ -1,150 +0,0 @@ - - */ -class IncidentUpdatedNotification extends Notification -{ - use Queueable; - - /** - * The incident update. - * - * @var \CachetHQ\Cachet\Models\IncidentUpdate - */ - protected $update; - - /** - * Create a new notification instance. - * - * @param \CachetHQ\Cachet\Models\IncidentUpdate $update - * - * @return void - */ - public function __construct(IncidentUpdate $update) - { - $this->update = AutoPresenter::decorate($update); - } - - /** - * Get the notification's delivery channels. - * - * @param mixed $notifiable - * - * @return string[] - */ - public function via($notifiable) - { - return ['mail', 'nexmo', 'slack']; - } - - /** - * Get the mail representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\MailMessage - */ - public function toMail($notifiable) - { - $content = trans('notifications.incident.update.mail.content', [ - 'name' => $this->update->incident->name, - 'time' => $this->update->created_at_diff, - ]); - - return (new MailMessage()) - ->subject(trans('notifications.incident.update.mail.subject')) - ->markdown('notifications.incident.update', [ - 'incident' => $this->update->incident, - 'update' => $this->update, - 'content' => $content, - 'actionText' => trans('notifications.incident.new.mail.action'), - 'actionUrl' => cachet_route('incident', [$this->update->incident]), - 'incidentName' => $this->update->incident->name, - 'newStatus' => $this->update->human_status, - 'unsubscribeText' => trans('cachet.subscriber.unsubscribe'), - 'unsubscribeUrl' => cachet_route('subscribe.unsubscribe', $notifiable->verify_code), - 'manageSubscriptionText' => trans('cachet.subscriber.manage_subscription'), - 'manageSubscriptionUrl' => cachet_route('subscribe.manage', $notifiable->verify_code), - ]); - } - - /** - * Get the Nexmo / SMS representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\NexmoMessage - */ - public function toNexmo($notifiable) - { - $content = trans('notifications.incident.update.sms.content', [ - 'name' => $this->update->incident->name, - ]); - - return (new NexmoMessage())->content($content); - } - - /** - * Get the Slack representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\SlackMessage - */ - public function toSlack($notifiable) - { - $content = trans('notifications.incident.update.slack.content', [ - 'name' => $this->update->incident->name, - 'new_status' => $this->update->human_status, - ]); - - $status = 'info'; - - if ($this->update->status === Incident::FIXED) { - $status = 'success'; - } elseif ($this->update->status === Incident::WATCHED) { - $status = 'warning'; - } else { - $status = 'error'; - } - - return (new SlackMessage()) - ->$status() - ->content($content) - ->attachment(function ($attachment) use ($notifiable) { - $attachment->title(trans('notifications.incident.update.slack.title', [ - 'name' => $this->update->incident->name, - 'new_status' => $this->update->human_status, - ])) - ->timestamp($this->update->getWrappedObject()->created_at) - ->fields(array_filter([ - 'ID' => "#{$this->update->id}", - 'Link' => $this->update->permalink, - ])) - ->footer(trans('cachet.subscriber.unsubscribe', ['link' => cachet_route('subscribe.unsubscribe', $notifiable->verify_code)])); - }); - } -} diff --git a/app/Notifications/Schedule/NewScheduleNotification.php b/app/Notifications/Schedule/NewScheduleNotification.php deleted file mode 100644 index 3b04bc67..00000000 --- a/app/Notifications/Schedule/NewScheduleNotification.php +++ /dev/null @@ -1,130 +0,0 @@ - - */ -class NewScheduleNotification extends Notification implements ShouldQueue -{ - use Queueable; - - /** - * The schedule. - * - * @var \CachetHQ\Cachet\Models\Schedule - */ - protected $schedule; - - /** - * Create a new notification instance. - * - * @param \CachetHQ\Cachet\Models\Schedule $schedule - * - * @return void - */ - public function __construct(Schedule $schedule) - { - $this->schedule = AutoPresenter::decorate($schedule); - } - - /** - * Get the notification's delivery channels. - * - * @param mixed $notifiable - * - * @return string[] - */ - public function via($notifiable) - { - return ['mail', 'nexmo', 'slack']; - } - - /** - * Get the mail representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\MailMessage - */ - public function toMail($notifiable) - { - $content = trans('notifications.schedule.new.mail.content', [ - 'name' => $this->schedule->name, - 'date' => $this->schedule->scheduled_at_formatted, - ]); - - return (new MailMessage()) - ->subject(trans('notifications.schedule.new.mail.subject')) - ->markdown('notifications.schedule.new', [ - 'content' => $content, - 'unsubscribeText' => trans('cachet.subscriber.unsubscribe'), - 'unsubscribeUrl' => cachet_route('subscribe.unsubscribe', $notifiable->verify_code), - 'manageSubscriptionText' => trans('cachet.subscriber.manage_subscription'), - 'manageSubscriptionUrl' => cachet_route('subscribe.manage', $notifiable->verify_code), - ]); - } - - /** - * Get the Nexmo / SMS representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\NexmoMessage - */ - public function toNexmo($notifiable) - { - $content = trans('notifications.schedule.new.sms.content', [ - 'name' => $this->schedule->name, - 'date' => $this->schedule->scheduled_at_formatted, - ]); - - return (new NexmoMessage())->content($content); - } - - /** - * Get the Slack representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\SlackMessage - */ - public function toSlack($notifiable) - { - $content = trans('notifications.schedule.new.slack.content', [ - 'name' => $this->schedule->name, - 'date' => $this->schedule->scheduled_at_formatted, - ]); - - return (new SlackMessage()) - ->content(trans('notifications.schedule.new.slack.title')) - ->attachment(function ($attachment) use ($content) { - $attachment->title($content) - ->timestamp($this->schedule->getWrappedObject()->scheduled_at) - ->fields(array_filter([ - 'ID' => "#{$this->schedule->id}", - 'Status' => $this->schedule->human_status, - ])); - }); - } -} diff --git a/app/Notifications/Subscriber/ManageSubscriptionNotification.php b/app/Notifications/Subscriber/ManageSubscriptionNotification.php deleted file mode 100644 index e8f88398..00000000 --- a/app/Notifications/Subscriber/ManageSubscriptionNotification.php +++ /dev/null @@ -1,52 +0,0 @@ - $notifiable->verify_code]); - - return (new MailMessage()) - ->subject(trans('notifications.subscriber.manage.mail.subject')) - ->greeting(trans('notifications.subscriber.manage.mail.title', ['app_name' => setting('app_name')])) - ->action(trans('notifications.subscriber.manage.mail.action'), $route) - ->line(trans('notifications.subscriber.manage.mail.content', ['app_name' => setting('app_name')])); - } -} diff --git a/app/Notifications/Subscriber/VerifySubscriptionNotification.php b/app/Notifications/Subscriber/VerifySubscriptionNotification.php deleted file mode 100644 index 76da5dab..00000000 --- a/app/Notifications/Subscriber/VerifySubscriptionNotification.php +++ /dev/null @@ -1,58 +0,0 @@ - - */ -class VerifySubscriptionNotification extends Notification -{ - use Queueable; - - /** - * Get the notification's delivery channels. - * - * @param mixed $notifiable - * - * @return string[] - */ - public function via($notifiable) - { - return ['mail']; - } - - /** - * Get the mail representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\MailMessage - */ - public function toMail($notifiable) - { - $route = URL::signedRoute(cachet_route_generator('subscribe.verify'), ['code' => $notifiable->verify_code]); - - return (new MailMessage()) - ->subject(trans('notifications.subscriber.verify.mail.subject')) - ->greeting(trans('notifications.subscriber.verify.mail.title', ['app_name' => Config::get('setting.app_name')])) - ->action(trans('notifications.subscriber.verify.mail.action'), $route) - ->line(trans('notifications.subscriber.verify.mail.content', ['app_name' => Config::get('setting.app_name')])); - } -} diff --git a/app/Notifications/System/SystemTestNotification.php b/app/Notifications/System/SystemTestNotification.php deleted file mode 100644 index 941ff8b9..00000000 --- a/app/Notifications/System/SystemTestNotification.php +++ /dev/null @@ -1,53 +0,0 @@ - - */ -class SystemTestNotification extends Notification -{ - use Queueable; - - /** - * Get the notification's delivery channels. - * - * @param mixed $notifiable - * - * @return string[] - */ - public function via($notifiable) - { - return ['mail']; - } - - /** - * Get the mail representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\MailMessage - */ - public function toMail($notifiable) - { - return (new MailMessage()) - ->subject(trans('notifications.system.test.mail.subject')) - ->greeting(trans('notifications.system.test.mail.title')) - ->line(trans('notifications.system.test.mail.content')); - } -} diff --git a/app/Notifications/User/InviteUserNotification.php b/app/Notifications/User/InviteUserNotification.php deleted file mode 100644 index 0ebb906e..00000000 --- a/app/Notifications/User/InviteUserNotification.php +++ /dev/null @@ -1,55 +0,0 @@ - - */ -class InviteUserNotification extends Notification -{ - use Queueable; - - /** - * Get the notification's delivery channels. - * - * @param mixed $notifiable - * - * @return string[] - */ - public function via($notifiable) - { - return ['mail']; - } - - /** - * Get the mail representation of the notification. - * - * @param mixed $notifiable - * - * @return \Illuminate\Notifications\Messages\MailMessage - */ - public function toMail($notifiable) - { - return (new MailMessage()) - ->subject(trans('notifications.user.invite.mail.subject')) - ->greeting(trans('notifications.user.invite.mail.title', ['app_name' => Config::get('setting.app_name')])) - ->action(trans('notifications.user.invite.mail.action'), cachet_route('signup.invite', [$notifiable->code])) - ->line(trans('notifications.user.invite.mail.content', ['app_name' => Config::get('setting.app_name')])); - } -} diff --git a/app/Presenters/ComponentGroupPresenter.php b/app/Presenters/ComponentGroupPresenter.php deleted file mode 100644 index 456831a4..00000000 --- a/app/Presenters/ComponentGroupPresenter.php +++ /dev/null @@ -1,144 +0,0 @@ -enabled_components_lowest()) { - return AutoPresenter::decorate($component)->status; - } - } - - /** - * Returns the lowest component status, readable by humans. - * - * @return string|null - */ - public function lowest_human_status() - { - if ($component = $this->enabled_components_lowest()) { - return AutoPresenter::decorate($component)->human_status; - } - } - - /** - * Returns the lowest component status color. - * - * @return string|null - */ - public function lowest_status_color() - { - if ($component = $this->enabled_components_lowest()) { - return AutoPresenter::decorate($component)->status_color; - } - } - - /** - * Return the enabled components from the wrapped object, and cache it if need be. - * - * @return bool - */ - public function enabled_components_lowest() - { - if (is_bool($this->enabledComponentsLowest)) { - $this->enabledComponentsLowest = $this->wrappedObject->enabled_components_lowest()->first(); - } - - return $this->enabledComponentsLowest; - } - - /** - * Determine the class for collapsed/uncollapsed groups. - * - * @return string - */ - public function collapse_class() - { - return $this->is_collapsed() ? 'ion-ios-plus-outline' : 'ion-ios-minus-outline'; - } - - /** - * Determine if the group should be collapsed. - * - * @return bool - */ - public function is_collapsed() - { - if ($this->wrappedObject->collapsed === 0) { - return false; - } elseif ($this->wrappedObject->collapsed === 1) { - return true; - } - - return $this->wrappedObject->components->filter(function ($component) { - return $component->status > 1; - })->isEmpty(); - } - - /** - * Convert the presenter instance to an array. - * - * @return string[] - */ - public function toArray() - { - return array_merge($this->wrappedObject->toArray(), [ - 'created_at' => $this->created_at(), - 'updated_at' => $this->updated_at(), - 'lowest_human_status' => $this->lowest_human_status(), - ]); - } - - /** - * Determine if any of the contained components have active subscriptions. - * - * @return bool - */ - public function has_subscriber($subscriptions) - { - $enabled_components = $this->wrappedObject->enabled_components()->orderBy('order')->pluck('id')->toArray(); - $intersected = array_intersect($enabled_components, $subscriptions); - - return count($intersected) != 0; - } - - /** - * Determine the class for collapsed/uncollapsed groups on the subscription form. - * - * @return string - */ - public function collapse_class_with_subscriptions($subscriptions) - { - return $this->has_subscriber($subscriptions) ? 'ion-ios-minus-outline' : 'ion-ios-plus-outline'; - } -} diff --git a/app/Presenters/ComponentPresenter.php b/app/Presenters/ComponentPresenter.php deleted file mode 100644 index 07a2458e..00000000 --- a/app/Presenters/ComponentPresenter.php +++ /dev/null @@ -1,83 +0,0 @@ -wrappedObject->status) { - case 0: return 'greys'; - case 1: return 'greens'; - case 2: return 'blues'; - case 3: return 'yellows'; - case 4: return 'reds'; - } - } - - /** - * Looks up the human readable version of the status. - * - * @return string - */ - public function human_status() - { - return trans('cachet.components.status.'.$this->wrappedObject->status); - } - - /** - * Find all tag names for the component names. - * - * @return array - */ - public function tags() - { - return $this->wrappedObject->tags->pluck('name', 'slug'); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function updated_at_formatted() - { - return ucfirst(app(DateFactory::class)->make($this->wrappedObject->updated_at)->format($this->incidentDateFormat())); - } - - /** - * Convert the presenter instance to an array. - * - * @return string[] - */ - public function toArray() - { - return array_merge($this->wrappedObject->toArray(), [ - 'created_at' => $this->created_at(), - 'updated_at' => $this->updated_at(), - 'status_name' => $this->human_status(), - 'tags' => $this->tags(), - ]); - } -} diff --git a/app/Presenters/IncidentPresenter.php b/app/Presenters/IncidentPresenter.php deleted file mode 100644 index 0a8e8a65..00000000 --- a/app/Presenters/IncidentPresenter.php +++ /dev/null @@ -1,320 +0,0 @@ - 'icon ion-android-calendar', // Scheduled - 1 => 'icon ion-flag oranges', // Investigating - 2 => 'icon ion-alert yellows', // Identified - 3 => 'icon ion-eye blues', // Watching - 4 => 'icon ion-checkmark greens', // Fixed - ]; - - /** - * Create a new presenter. - * - * @param \CachetHQ\Cachet\Services\Dates\DateFactory $dates - * @param \CachetHQ\Cachet\Models\Incident $resource - * - * @return void - */ - public function __construct(DateFactory $dates, Incident $resource) - { - $this->dates = $dates; - } - - /** - * Renders the message from Markdown into HTML. - * - * @return string - */ - public function formatted_message() - { - return Markdown::convertToHtml($this->wrappedObject->message); - } - - /** - * Return the raw text of the message, even without Markdown. - * - * @return string - */ - public function raw_message() - { - return strip_tags($this->formatted_message()); - } - - /** - * Present formatted occurred_at date time. - * - * @return string - */ - public function occurred_at() - { - return $this->dates->make($this->wrappedObject->occurred_at)->toDateTimeString(); - } - - /** - * Present diff for humans date time. - * - * @return string - */ - public function occurred_at_diff() - { - return $this->dates->make($this->wrappedObject->occurred_at)->diffForHumans(); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function occurred_at_formatted() - { - return ucfirst($this->dates->make($this->wrappedObject->occurred_at)->format($this->incidentDateFormat())); - } - - /** - * Formats the occurred_at time ready to be used by bootstrap-datetimepicker. - * - * @return string - */ - public function occurred_at_datetimepicker() - { - return $this->dates->make($this->wrappedObject->occurred_at)->format('Y-m-d H:i'); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function occurred_at_iso() - { - return $this->dates->make($this->wrappedObject->occurred_at)->toISO8601String(); - } - - /** - * Present diff for humans date time. - * - * @return string - */ - public function created_at_diff() - { - return $this->dates->make($this->wrappedObject->created_at)->diffForHumans(); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function created_at_formatted() - { - return ucfirst($this->dates->make($this->wrappedObject->created_at)->format($this->incidentDateFormat())); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function created_at_iso() - { - return $this->dates->make($this->wrappedObject->created_at)->toISO8601String(); - } - - /** - * Returns a formatted timestamp for use within the timeline. - * - * @return string - */ - public function timestamp_formatted() - { - return $this->occurred_at_formatted; - } - - /** - * Return the iso timestamp for use within the timeline. - * - * @return string - */ - public function timestamp_iso() - { - return $this->occurred_at_iso; - } - - /** - * Present the status with an icon. - * - * @return string - */ - public function icon() - { - if (isset($this->icons[$this->wrappedObject->status])) { - return $this->icons[$this->wrappedObject->status]; - } - } - - /** - * Returns a human readable version of the status. - * - * @return string - */ - public function human_status() - { - return trans('cachet.incidents.status.'.$this->wrappedObject->status); - } - - /** - * Returns the latest update. - * - * @return int|null - */ - public function latest_status() - { - if ($update = $this->latest()) { - return $update->status; - } - - return $this->wrappedObject->status; - } - - /** - * Returns the latest update. - * - * @return string|null - */ - public function latest_human_status() - { - if ($update = $this->latest()) { - return trans('cachet.incidents.status.'.$update->status); - } - - return $this->human_status(); - } - - /** - * Present the latest icon. - * - * @return string - */ - public function latest_icon() - { - if ($update = $this->latest()) { - if (isset($this->icons[$update->status])) { - return $this->icons[$update->status]; - } - } - - return $this->icon(); - } - - /** - * Fetch the latest incident update. - * - * @return \CachetHQ\Cachet\Models\IncidentUpdate|void - */ - public function latest() - { - if (is_bool($this->latest)) { - $this->latest = $this->wrappedObject->updates()->first(); - } - - return $this->latest; - } - - /** - * Get the incident permalink. - * - * @return string - */ - public function permalink() - { - return cachet_route('incident', [$this->wrappedObject->id]); - } - - /** - * The duration since the last update (in seconds). - * - * @return int - */ - public function duration() - { - if ($update = $this->latest()) { - return $this->wrappedObject->created_at->diffInSeconds($update->occurred_at); - } - - return 0; - } - - /** - * Return the meta in a key value pair. - * - * @return array - */ - public function meta() - { - return $this->wrappedObject->meta->pluck('value', 'key')->all(); - } - - /** - * Convert the presenter instance to an array. - * - * @return string[] - */ - public function toArray() - { - return array_merge($this->wrappedObject->toArray(), [ - 'human_status' => $this->human_status(), - 'latest_update_id' => $this->latest() ? $this->latest()->id : null, - 'latest_status' => $this->latest_status(), - 'latest_human_status' => $this->latest_human_status(), - 'latest_icon' => $this->latest_icon(), - 'permalink' => $this->permalink(), - 'duration' => $this->duration(), - 'meta' => $this->meta(), - 'occurred_at' => $this->occurred_at(), - 'created_at' => $this->created_at(), - 'updated_at' => $this->updated_at(), - ]); - } -} diff --git a/app/Presenters/IncidentUpdatePresenter.php b/app/Presenters/IncidentUpdatePresenter.php deleted file mode 100644 index abbcbbc8..00000000 --- a/app/Presenters/IncidentUpdatePresenter.php +++ /dev/null @@ -1,177 +0,0 @@ - - */ -class IncidentUpdatePresenter extends BasePresenter implements Arrayable -{ - use TimestampsTrait; - - /** - * Renders the message from Markdown into HTML. - * - * @return string - */ - public function formatted_message() - { - return Markdown::convertToHtml($this->wrappedObject->message); - } - - /** - * Return the raw text of the message, even without Markdown. - * - * @return string - */ - public function raw_message() - { - return strip_tags($this->formatted_message()); - } - - /** - * Present diff for humans date time. - * - * @return string - */ - public function created_at_diff() - { - return app(DateFactory::class)->make($this->wrappedObject->created_at)->diffForHumans(); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function created_at_formatted() - { - return ucfirst(app(DateFactory::class)->make($this->wrappedObject->created_at)->format($this->incidentDateFormat())); - } - - /** - * Formats the created_at time ready to be used by bootstrap-datetimepicker. - * - * @return string - */ - public function created_at_datetimepicker() - { - return app(DateFactory::class)->make($this->wrappedObject->created_at)->format('d/m/Y H:i'); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function created_at_iso() - { - return app(DateFactory::class)->make($this->wrappedObject->created_at)->toISO8601String(); - } - - /** - * Returns a formatted timestamp for use within the timeline. - * - * @return string - */ - public function timestamp_formatted() - { - if ($this->wrappedObject->is_scheduled) { - return $this->scheduled_at_formatted; - } - - return $this->created_at_formatted; - } - - /** - * Return the iso timestamp for use within the timeline. - * - * @return string - */ - public function timestamp_iso() - { - if ($this->wrappedObject->is_scheduled) { - return $this->scheduled_at_iso; - } - - return $this->created_at_iso; - } - - /** - * Present the status with an icon. - * - * @return string - */ - public function icon() - { - switch ($this->wrappedObject->status) { - case 1: // Investigating - - return 'icon ion-flag oranges'; - case 2: // Identified - - return 'icon ion-alert yellows'; - case 3: // Watching - - return 'icon ion-eye blues'; - case 4: // Fixed - - return 'icon ion-checkmark greens'; - default: // Something actually broke, this shouldn't happen. - - return ''; - } - } - - /** - * Returns a human readable version of the status. - * - * @return string - */ - public function human_status() - { - return trans('cachet.incidents.status.'.$this->wrappedObject->status); - } - - /** - * Generate a permalink to the incident update. - * - * @return string - */ - public function permalink() - { - return cachet_route('incident', [$this->wrappedObject->incident]).'#update-'.$this->wrappedObject->id; - } - - /** - * Convert the presenter instance to an array. - * - * @return string[] - */ - public function toArray() - { - return array_merge($this->wrappedObject->toArray(), [ - 'human_status' => $this->human_status(), - 'permalink' => $this->permalink(), - 'created_at' => $this->created_at(), - 'updated_at' => $this->updated_at(), - ]); - } -} diff --git a/app/Presenters/MetricPointPresenter.php b/app/Presenters/MetricPointPresenter.php deleted file mode 100644 index 5cbfdd60..00000000 --- a/app/Presenters/MetricPointPresenter.php +++ /dev/null @@ -1,34 +0,0 @@ -wrappedObject->toArray(), [ - 'created_at' => $this->created_at(), - 'updated_at' => $this->updated_at(), - ]); - } -} diff --git a/app/Presenters/MetricPresenter.php b/app/Presenters/MetricPresenter.php deleted file mode 100644 index 4a4ef660..00000000 --- a/app/Presenters/MetricPresenter.php +++ /dev/null @@ -1,90 +0,0 @@ -wrappedObject->default_view) { - case 0: return 'last_hour'; - case 1: return 'today'; - case 2: return 'week'; - case 3: return 'month'; - } - } - - /** - * Determines the metric view filter name, used in the API. - * - * @return string - */ - public function default_view_name() - { - return trans('cachet.metrics.filter.'.$this->trans_string_name()); - } - - /** - * Determines the metric translation view filter name. - * - * @return string - */ - public function trans_string_name() - { - switch ($this->wrappedObject->default_view) { - case 0: return 'last_hour'; - case 1: return 'hourly'; - case 2: return 'weekly'; - case 3: return 'monthly'; - } - } - - /** - * Convert the presenter instance to an array. - * - * @return string[] - */ - public function toArray() - { - return array_merge($this->wrappedObject->toArray(), [ - 'created_at' => $this->created_at(), - 'updated_at' => $this->updated_at(), - 'default_view_name' => $this->default_view_name(), - ]); - } - - /** - * Convert the object to its JSON representation. - * - * @param int $options - * - * @return string - */ - public function toJson($options = 0) - { - $json = json_encode($this->toArray(), $options); - - return $json; - } -} diff --git a/app/Presenters/SchedulePresenter.php b/app/Presenters/SchedulePresenter.php deleted file mode 100644 index ddf0c04f..00000000 --- a/app/Presenters/SchedulePresenter.php +++ /dev/null @@ -1,261 +0,0 @@ - - */ -class SchedulePresenter extends BasePresenter implements Arrayable -{ - use TimestampsTrait; - - /** - * The date factory instance. - * - * @var \CachetHQ\Cachet\Services\Dates\DateFactory - */ - protected $dates; - - /** - * Create a new presenter. - * - * @param \CachetHQ\Cachet\Services\Dates\DateFactory $dates - * @param \CachetHQ\Cachet\Models\Schedule $resource - * - * @return void - */ - public function __construct(DateFactory $dates, Schedule $resource) - { - $this->dates = $dates; - } - - /** - * Renders the message from Markdown into HTML. - * - * @return string - */ - public function formatted_message() - { - return Markdown::convertToHtml($this->wrappedObject->message); - } - - /** - * Present diff for humans date time. - * - * @return string - */ - public function created_at_diff() - { - return $this->dates->make($this->wrappedObject->created_at)->diffForHumans(); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function created_at_formatted() - { - return ucfirst($this->dates->make($this->wrappedObject->created_at)->format($this->incidentDateFormat())); - } - - /** - * Formats the created_at time ready to be used by bootstrap-datetimepicker. - * - * @return string - */ - public function created_at_datetimepicker() - { - return $this->dates->make($this->wrappedObject->created_at)->format('Y-m-d H:i'); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function created_at_iso() - { - return $this->dates->make($this->wrappedObject->created_at)->toISO8601String(); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function scheduled_at() - { - return $this->dates->make($this->wrappedObject->scheduled_at)->toDateTimeString(); - } - - /** - * Present diff for humans date time. - * - * @return string - */ - public function scheduled_at_diff() - { - return $this->dates->make($this->wrappedObject->scheduled_at)->diffForHumans(); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function scheduled_at_formatted() - { - return ucfirst($this->dates->make($this->wrappedObject->scheduled_at)->format($this->incidentDateFormat())); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function scheduled_at_iso() - { - return $this->dates->make($this->wrappedObject->scheduled_at)->toISO8601String(); - } - - /** - * Formats the scheduled_at time ready to be used by bootstrap-datetimepicker. - * - * @return string - */ - public function scheduled_at_datetimepicker() - { - return $this->dates->make($this->wrappedObject->scheduled_at)->format('Y-m-d H:i'); - } - - /** - * Returns a formatted timestamp for use within the timeline. - * - * @return string - */ - public function timestamp_formatted() - { - if ($this->wrappedObject->is_scheduled) { - return $this->scheduled_at_formatted; - } - - return $this->created_at_formatted; - } - - /** - * Present formatted date time. - * - * @return string - */ - public function completed_at() - { - return $this->dates->make($this->wrappedObject->completed_at)->toDateTimeString(); - } - - /** - * Present diff for humans date time. - * - * @return string - */ - public function completed_at_diff() - { - return $this->dates->make($this->wrappedObject->completed_at)->diffForHumans(); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function completed_at_formatted() - { - return ucfirst($this->dates->make($this->wrappedObject->completed_at)->format($this->incidentDateFormat())); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function completed_at_iso() - { - return $this->dates->make($this->wrappedObject->completed_at)->toISO8601String(); - } - - /** - * Formats the completed_at time ready to be used by bootstrap-datetimepicker. - * - * @return string|void - */ - public function completed_at_datetimepicker() - { - if ($this->wrappedObject->completed_at) { - return $this->dates->make($this->wrappedObject->completed_at)->format('Y-m-d H:i'); - } - } - - /** - * Return the iso timestamp for use within the timeline. - * - * @return string - */ - public function timestamp_iso() - { - if ($this->wrappedObject->is_scheduled) { - return $this->scheduled_at_iso; - } - - return $this->completed_at_iso; - } - - /** - * Returns a human readable version of the status. - * - * @return string - */ - public function human_status() - { - // return trans('cachet.incidents.status.'.$this->wrappedObject->status); - // TODO: Refactor into translations. - switch ($this->wrappedObject->status) { - case 0: return 'Upcoming'; - case 1: return 'In Progress'; - case 2: return 'Complete'; - } - } - - /** - * Convert the presenter instance to an array. - * - * @return string[] - */ - public function toArray() - { - return array_merge($this->wrappedObject->toArray(), [ - 'human_status' => $this->human_status(), - 'scheduled_at' => $this->scheduled_at(), - 'completed_at' => $this->completed_at(), - 'created_at' => $this->created_at(), - 'updated_at' => $this->updated_at(), - ]); - } -} diff --git a/app/Presenters/SubscriberPresenter.php b/app/Presenters/SubscriberPresenter.php deleted file mode 100644 index 71c21126..00000000 --- a/app/Presenters/SubscriberPresenter.php +++ /dev/null @@ -1,46 +0,0 @@ -make($this->wrappedObject->verified_at)->format($this->incidentDateFormat())); - } - - /** - * Convert the presenter instance to an array. - * - * @return string[] - */ - public function toArray() - { - return array_merge($this->wrappedObject->toArray(), [ - 'created_at' => $this->created_at(), - 'updated_at' => $this->updated_at(), - 'verified_at' => $this->verified_at(), - ]); - } -} diff --git a/app/Presenters/Traits/TimestampsTrait.php b/app/Presenters/Traits/TimestampsTrait.php deleted file mode 100644 index 8642ac7a..00000000 --- a/app/Presenters/Traits/TimestampsTrait.php +++ /dev/null @@ -1,65 +0,0 @@ - - * @author Graham Campbell - * @author James Brooks - */ -trait TimestampsTrait -{ - /** - * Present formatted date time. - * - * @return string - */ - public function created_at() - { - return app(DateFactory::class)->make($this->wrappedObject->created_at)->toDateTimeString(); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function updated_at() - { - return app(DateFactory::class)->make($this->wrappedObject->updated_at)->toDateTimeString(); - } - - /** - * Present formatted date time. - * - * @return string - */ - public function deleted_at() - { - return app(DateFactory::class)->make($this->wrappedObject->deleted_at)->toDateTimeString(); - } - - /** - * Get the incident date format setting, or fallback to a sane default. - * - * @return string - */ - protected function incidentDateFormat() - { - return Config::get('setting.incident_date_format', 'l jS F Y H:i:s'); - } -} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 007a271c..452e6b65 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -1,87 +1,24 @@ - * @author Joseph Cohen - * @author Graham Campbell - */ class AppServiceProvider extends ServiceProvider { /** - * Boot the service provider. - * - * @param \AltThree\Bus\Dispatcher $dispatcher - * - * @return void + * Register any application services. */ - public function boot(Dispatcher $dispatcher) + public function register(): void { - Schema::defaultStringLength(191); - - $dispatcher->mapUsing(function ($command) { - return Dispatcher::simpleMapping($command, 'CachetHQ\Cachet\Bus', 'CachetHQ\Cachet\Bus\Handlers'); - }); - - $dispatcher->pipeThrough([UseDatabaseTransactions::class, ValidatingMiddleware::class]); - - Str::macro('canonicalize', function ($url) { - return preg_replace('/([^\/])$/', '$1/', $url); - }); - - Relation::morphMap([ - 'components' => \CachetHQ\Cachet\Models\Component::class, - 'incidents' => \CachetHQ\Cachet\Models\Incident::class, - 'metrics' => \CachetHQ\Cachet\Models\Metric::class, - 'schedules' => \CachetHQ\Cachet\Models\Schedule::class, - 'subscriber' => \CachetHQ\Cachet\Models\Subscriber::class, - 'tags' => \CachetHQ\Cachet\Models\Tag::class, - ]); + // } /** - * Register the service provider. - * - * @return void + * Bootstrap any application services. */ - public function register() + public function boot(): void { - $this->registerDateFactory(); - } - - /** - * Register the date factory. - * - * @return void - */ - protected function registerDateFactory() - { - $this->app->singleton(DateFactory::class, function ($app) { - $appTimezone = $app['config']->get('app.timezone'); - $cacheTimezone = $app['config']->get('cachet.timezone'); - - return new DateFactory($appTimezone, $cacheTimezone); - }); + // } } diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php new file mode 100644 index 00000000..54756cd1 --- /dev/null +++ b/app/Providers/AuthServiceProvider.php @@ -0,0 +1,26 @@ + + */ + protected $policies = [ + // + ]; + + /** + * Register any authentication / authorization services. + */ + public function boot(): void + { + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 00000000..2be04f5d --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,19 @@ +composer('*', AppComposer::class); - $factory->composer('*', CurrentUserComposer::class); - $factory->composer(['index', 'single-incident', 'subscribe.*', 'signup', 'dashboard.settings.theme', 'notifications::email', 'single-schedule', 'errors.*'], ThemeComposer::class); - $factory->composer('dashboard.*', DashboardComposer::class); - $factory->composer(['setup.*', 'dashboard.settings.localization'], TimezoneLocaleComposer::class); - - $factory->composer('partials.modules.components', ComponentsComposer::class); - $factory->composer('partials.modules.metrics', MetricsComposer::class); - $factory->composer('partials.modules.stickied', StickiedComposer::class); - $factory->composer('partials.modules.scheduled', ScheduledComposer::class); - $factory->composer('partials.modules.status', StatusComposer::class); - $factory->composer('partials.modules.timeline', TimelineComposer::class); - $factory->composer(['dashboard.settings.mail', 'setup.*'], SettingsComposer::class); - } - - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - $this->app->singleton(DashboardComposer::class); - } -} diff --git a/app/Providers/ConfigServiceProvider.php b/app/Providers/ConfigServiceProvider.php deleted file mode 100644 index 7390f720..00000000 --- a/app/Providers/ConfigServiceProvider.php +++ /dev/null @@ -1,125 +0,0 @@ - - * @author Graham Campbell - * @author Joseph Cohen - */ -class ConfigServiceProvider extends ServiceProvider -{ - /** - * Boot the service provider. - * - * @return void - */ - public function boot() - { - $env = $this->app->environment(); - $repo = $this->app->make(Repository::class); - $cache = $this->app->make(Cache::class); - $loaded = $cache->load($env); - - $this->app->terminating(function () use ($repo, $cache) { - if ($repo->stale()) { - $cache->clear(); - } - }); - - try { - if ($loaded === false) { - $loaded = $repo->all(); - $cache->store($env, $loaded); - } - - $settings = array_merge($this->app->config->get('setting'), $loaded); - - $this->app->config->set('setting', $settings); - } catch (Exception $e) { - // - } - - // Set the app url. - if ($appDomain = $this->app->config->get('setting.app_domain')) { - $this->app->config->set('app.url', $appDomain); - } - - // Set the locale. - if ($appLocale = $this->app->config->get('setting.app_locale')) { - $this->app->config->set('app.locale', $appLocale); - $this->app->translator->setLocale($appLocale); - Date::setLocale($appLocale); - } - - // Set the timezone. - if ($appTimezone = $this->app->config->get('setting.app_timezone')) { - $this->app->config->set('cachet.timezone', $appTimezone); - } - - // Set allowed domains for CORS. - $allowedOrigins = $this->app->config->get('cors.defaults.allowedOrigins'); - - if ($allowedDomains = $this->app->config->get('setting.allowed_domains')) { - $domains = explode(',', $allowedDomains); - foreach ($domains as $domain) { - $allowedOrigins[] = $domain; - } - } else { - $allowedOrigins[] = $this->app->config->get('app.url'); - } - - $this->app->config->set('cors.paths.api/v1/*.allowedOrigins', $allowedOrigins); - - // Set the mail from address. - if (!$this->app->config->get('mail.from.address')) { - $url = parse_url($appDomain); - - if (isset($url['host'])) { - $this->app->config->set('mail.from.address', "notify@{$url['host']}"); - } - } - - // Set the mail from name. - if (!$this->app->config->get('mail.from.name')) { - $this->app->config->set( - 'mail.from.name', - $this->app->config->get('setting.app_name', $this->app->config->get('app.name')) - ); - } - } - - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - $this->app->singleton(Cache::class, function ($app) { - return new Cache($app->files, $app->bootstrapPath().'/cachet'); - }); - - $this->app->singleton(Repository::class, function () { - return new Repository(new SettingModel()); - }); - } -} diff --git a/app/Providers/ConsoleServiceProvider.php b/app/Providers/ConsoleServiceProvider.php deleted file mode 100644 index 6976453b..00000000 --- a/app/Providers/ConsoleServiceProvider.php +++ /dev/null @@ -1,45 +0,0 @@ - - */ -class ConsoleServiceProvider extends ServiceProvider -{ - /** - * Boot the service provider. - * - * @return void - */ - public function boot() - { - $subscriber = $this->app->make(CommandSubscriber::class); - - $this->app->events->subscribe($subscriber); - } - - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - // - } -} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 792e2b8b..2d65aac0 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -1,163 +1,38 @@ > */ protected $listen = [ - 'CachetHQ\Cachet\Bus\Events\ActionInterface' => [ - 'CachetHQ\Cachet\Bus\Handlers\Events\ActionStorageHandler', - ], - 'CachetHQ\Cachet\Bus\Events\Beacon\BeaconFailedToSendEvent' => [ - 'CachetHQ\Cachet\Bus\Handlers\Events\Beacon\LogBeaconFailedHandler', - ], - 'CachetHQ\Cachet\Bus\Events\Beacon\BeaconWasSentEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\ComponentGroup\ComponentGroupWasCreatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\ComponentGroup\ComponentGroupWasRemovedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\ComponentGroup\ComponentGroupWasUpdatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Component\ComponentStatusWasChangedEvent' => [ - 'CachetHQ\Cachet\Bus\Handlers\Events\Component\SendComponentUpdateEmailNotificationHandler', - ], - 'CachetHQ\Cachet\Bus\Events\Component\ComponentWasCreatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Component\ComponentWasRemovedEvent' => [ - 'CachetHQ\Cachet\Bus\Handlers\Events\Component\CleanupComponentSubscriptionsHandler', - ], - 'CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\IncidentUpdate\IncidentUpdateWasRemovedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\IncidentUpdate\IncidentUpdateWasReportedEvent' => [ - 'CachetHQ\Cachet\Bus\Handlers\Events\IncidentUpdate\SendIncidentUpdateEmailNotificationHandler', - ], - 'CachetHQ\Cachet\Bus\Events\IncidentUpdate\IncidentUpdateWasUpdatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Incident\IncidentWasCreatedEvent' => [ - 'CachetHQ\Cachet\Bus\Handlers\Events\Incident\SendIncidentEmailNotificationHandler', - ], - 'CachetHQ\Cachet\Bus\Events\Incident\IncidentWasRemovedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Incident\IncidentWasUpdatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Invite\InviteWasClaimedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Metric\MetricPointWasCreatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Metric\MetricPointWasRemovedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Metric\MetricPointWasUpdatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Metric\MetricWasCreatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Metric\MetricWasRemovedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Metric\MetricWasUpdatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Schedule\ScheduleWasCreatedEvent' => [ - 'CachetHQ\Cachet\Bus\Handlers\Events\Schedule\SendScheduleEmailNotificationHandler', - ], - 'CachetHQ\Cachet\Bus\Events\Schedule\ScheduleWasRemovedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Schedule\ScheduleWasUpdatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Subscriber\SubscriberHasSubscribedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Subscriber\SubscriberHasUnsubscribedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Subscriber\SubscriberHasUpdatedSubscriptionsEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\Subscriber\SubscriberHasVerifiedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\System\SystemCheckedForUpdatesEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\System\SystemWasInstalledEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\System\SystemWasResetEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\System\SystemWasUpdatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserAcceptedInviteEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserDisabledTwoAuthEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserEnabledTwoAuthEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserFailedTwoAuthEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserLoggedInEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserLoggedOutEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserPassedTwoAuthEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserRegeneratedApiTokenEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserWasCreatedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserWasInvitedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserWasRemovedEvent' => [ - // - ], - 'CachetHQ\Cachet\Bus\Events\User\UserWasWelcomedEvent' => [ - // + Registered::class => [ + SendEmailVerificationNotification::class, ], ]; + + /** + * Register any events for your application. + */ + public function boot(): void + { + // + } + + /** + * Determine if events and listeners should be automatically discovered. + */ + public function shouldDiscoverEvents(): bool + { + return false; + } } diff --git a/app/Providers/IntegrationServiceProvider.php b/app/Providers/IntegrationServiceProvider.php deleted file mode 100644 index 57d27523..00000000 --- a/app/Providers/IntegrationServiceProvider.php +++ /dev/null @@ -1,120 +0,0 @@ - - */ -class IntegrationServiceProvider extends ServiceProvider -{ - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - $this->registerBeacon(); - $this->registerCredits(); - $this->registerFeed(); - $this->registerSystem(); - - $this->registerReleases(); - } - - /** - * Register the beacon class. - * - * @return void - */ - protected function registerBeacon() - { - $this->app->singleton(BeaconContract::class, function ($app) { - $config = $app['config']; - - return new Beacon($config); - }); - } - - /** - * Register the credits class. - * - * @return void - */ - protected function registerCredits() - { - $this->app->singleton(CreditsContract::class, function ($app) { - $cache = $app['cache.store']; - - return new Credits($cache); - }); - } - - /** - * Register the feed class. - * - * @return void - */ - protected function registerFeed() - { - $this->app->singleton(FeedContract::class, function ($app) { - $cache = $app['cache.store']; - - return new Feed($cache); - }); - } - - /** - * Register the system class. - * - * @return void - */ - protected function registerSystem() - { - $this->app->singleton(SystemContract::class, function (Container $app) { - $config = $app['config']; - $auth = $app['auth.driver']; - - return new System($config, $auth); - }); - } - - /** - * Register the releases class. - * - * @return void - */ - protected function registerReleases() - { - $this->app->singleton(ReleasesContract::class, function ($app) { - $cache = $app['cache.store']; - $token = $app['config']->get('services.github.token'); - - return new Releases($cache, $token); - }); - } -} diff --git a/app/Providers/RepositoryServiceProvider.php b/app/Providers/RepositoryServiceProvider.php deleted file mode 100644 index 550aa17f..00000000 --- a/app/Providers/RepositoryServiceProvider.php +++ /dev/null @@ -1,64 +0,0 @@ - - */ -class RepositoryServiceProvider extends ServiceProvider -{ - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - $this->registerMetricRepository(); - } - - /** - * Register the metric repository. - * - * @return void - */ - protected function registerMetricRepository() - { - $this->app->singleton(MetricRepository::class, function (Container $app) { - $config = $app->make(ConfigRepository::class); - - switch ($config->get('database.default')) { - case 'mysql': $repository = new MySqlRepository($config); - break; - case 'pgsql': $repository = new PgSqlRepository($config); - break; - case 'sqlite': $repository = new SqliteRepository($config); - break; - } - - $dates = $app->make(DateFactory::class); - - return new MetricRepository($repository, $dates); - }); - } -} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index f23d7a02..1cf5f15c 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -1,207 +1,40 @@ - * @author Joseph Cohen - * @author Graham Campbell - */ class RouteServiceProvider extends ServiceProvider { /** - * This namespace is applied to your controller routes. + * The path to your application's "home" route. * - * In addition, it is set as the URL generator's root namespace. + * Typically, users are redirected here after authentication. * * @var string */ - protected $namespace = 'CachetHQ\Cachet\Http\Controllers'; + public const HOME = '/home'; /** - * These are the route files that should always be available anonymously. - * - * When applying the always_authenticate feature, these routes will be skipped. - * - * @var string[] + * Define your route model bindings, pattern filters, and other route configuration. */ - protected $whitelistedAuthRoutes = [ - AuthRoutes::class, - SetupRoutes::class, - SignupRoutes::class, - ApiSystemRoutes::class, - ApiSetupRoutes::class, - ]; - - /** - * Define the route model bindings, pattern filters, etc. - * - * @return void - */ - public function boot() + public function boot(): void { - parent::boot(); - - $this->app->call([$this, 'bind']); - } - - /** - * Define the bindings for the application. - * - * @param \Illuminate\Routing\Router $router - * - * @return void - */ - public function bind(Router $router) - { - $router->model('component', 'CachetHQ\Cachet\Models\Component'); - $router->model('component_group', 'CachetHQ\Cachet\Models\ComponentGroup'); - $router->model('incident', 'CachetHQ\Cachet\Models\Incident'); - $router->model('incident_template', 'CachetHQ\Cachet\Models\IncidentTemplate'); - $router->model('incident_update', 'CachetHQ\Cachet\Models\IncidentUpdate'); - $router->model('metric', 'CachetHQ\Cachet\Models\Metric'); - $router->model('metric_point', 'CachetHQ\Cachet\Models\MetricPoint'); - $router->model('schedule', 'CachetHQ\Cachet\Models\Schedule'); - $router->model('setting', 'CachetHQ\Cachet\Models\Setting'); - $router->model('subscriber', 'CachetHQ\Cachet\Models\Subscriber'); - $router->model('subscription', 'CachetHQ\Cachet\Models\Subscription'); - $router->model('tag', 'CachetHQ\Cachet\Models\Tag'); - $router->model('user', 'CachetHQ\Cachet\Models\User'); - } - - /** - * Define the routes for the application. - * - * @param \Illuminate\Routing\Router $router - * - * @return void - */ - public function map(Router $router) - { - $router->group(['namespace' => $this->namespace, 'as' => 'core::'], function (Router $router) { - $path = app_path('Http/Routes'); - - $applyAlwaysAuthenticate = $this->app['config']->get('setting.always_authenticate', false); - $AllFileIterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path)); - $PhpFileIterator = new \RegexIterator($AllFileIterator, '/^.+\.php$/i', \RecursiveRegexIterator::GET_MATCH); - - foreach ($PhpFileIterator as $file => $object) { - $class = substr($file, strlen($path)); - $class = str_replace('/', '\\', $class); - $class = substr($class, 0, -4); - - $routes = $this->app->make("CachetHQ\\Cachet\\Http\\Routes${class}"); - - if ($routes::$browser) { - $this->mapForBrowser($router, $routes, $applyAlwaysAuthenticate); - } else { - $this->mapOtherwise($router, $routes, $applyAlwaysAuthenticate); - } - } + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()); }); - } - /** - * Wrap the routes in the browser specific middleware. - * - * @param \Illuminate\Routing\Router $router - * @param object $routes - * @param bool $applyAlwaysAuthenticate - * - * @return void - */ - protected function mapForBrowser(Router $router, $routes, $applyAlwaysAuthenticate) - { - $middleware = [ - EncryptCookies::class, - AddQueuedCookiesToResponse::class, - StartSession::class, - ShareErrorsFromSession::class, - VerifyCsrfToken::class, - SubstituteBindings::class, - ]; + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->group(base_path('routes/api.php')); - if ($applyAlwaysAuthenticate && !$this->isWhiteListedAuthRoute($routes)) { - $middleware[] = RemoteUserAuthenticate::class; - $middleware[] = Authenticate::class; - } - - $router->group(['middleware' => $middleware], function (Router $router) use ($routes) { - $routes->map($router); + Route::middleware('web') + ->group(base_path('routes/web.php')); }); } - - /** - * Wrap the routes in the basic middleware. - * - * @param \Illuminate\Routing\Router $router - * @param object $routes - * @param bool $applyAlwaysAuthenticate - * - * @return void - */ - protected function mapOtherwise(Router $router, $routes, $applyAlwaysAuthenticate) - { - $middleware = [ - SubstituteBindings::class, - Acceptable::class, - Timezone::class, - ]; - - if ($applyAlwaysAuthenticate && !$this->isWhiteListedAuthRoute($routes)) { - $middleware[] = 'auth.api:true'; - } - - $router->group(['middleware' => $middleware], function (Router $router) use ($routes) { - $routes->map($router); - }); - } - - /** - * Validates if the route object is an instance of the whitelisted routes. - * A small workaround since we cant use multiple classes in a `instanceof` comparison. - * - * @param object $routes - * - * @return bool - */ - private function isWhiteListedAuthRoute($routes) - { - foreach ($this->whitelistedAuthRoutes as $whitelistedRoute) { - if (is_a($routes, $whitelistedRoute)) { - return true; - } - } - - return false; - } } diff --git a/app/Repositories/Metric/AbstractMetricRepository.php b/app/Repositories/Metric/AbstractMetricRepository.php deleted file mode 100644 index 566827e6..00000000 --- a/app/Repositories/Metric/AbstractMetricRepository.php +++ /dev/null @@ -1,120 +0,0 @@ - - */ -abstract class AbstractMetricRepository -{ - /** - * The illuminate config repository. - * - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - - /** - * The name of the metrics table. - * - * @var string - */ - protected $tableName; - - /** - * Create a new abstract metric repository instance. - * - * @param \Illuminate\Contracts\Config\Repository $config - * - * @return void - */ - public function __construct(Repository $config) - { - $this->config = $config; - } - - /** - * Get the metrics table name. - * - * @return string - */ - protected function getMetricsTable() - { - $prefix = app(System::class)->getTablePrefix(); - - return $prefix.'metrics'; - } - - /** - * Get the metric points table name. - * - * @return string - */ - protected function getMetricPointsTable() - { - $prefix = app(System::class)->getTablePrefix(); - - return $prefix.'metric_points'; - } - - /** - * Return the query type. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return string - */ - protected function getQueryType(Metric $metric) - { - if (!isset($metric->calc_type) || $metric->calc_type == Metric::CALC_SUM) { - return "sum({$this->getMetricPointsTable()}.value * {$this->getMetricPointsTable()}.counter) AS value"; - } elseif ($metric->calc_type == Metric::CALC_AVG) { - return "avg({$this->getMetricPointsTable()}.value) AS value"; - } else { - return "sum({$this->getMetricPointsTable()}.value * {$this->getMetricPointsTable()}.counter) AS value"; - } - } - - /** - * Map the result set. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param array $results - * - * @return \Illuminate\Support\Collection - */ - protected function mapResults(Metric $metric, array $results) - { - $results = Collection::make($results); - - return $results->map(function ($point) use ($metric) { - if (!$point->value) { - $point->value = $metric->default_value; - } - - if ($point->value === 0 && $metric->default_value != $point->value) { - $point->value = $metric->default_value; - } - - $point->value = round($point->value, $metric->places); - - return $point; - }); - } -} diff --git a/app/Repositories/Metric/MetricInterface.php b/app/Repositories/Metric/MetricInterface.php deleted file mode 100644 index ec0cb163..00000000 --- a/app/Repositories/Metric/MetricInterface.php +++ /dev/null @@ -1,52 +0,0 @@ - - */ -interface MetricInterface -{ - /** - * Returns metrics since given minutes. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $minutes - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceMinutes(Metric $metric, $minutes); - - /** - * Returns metrics since given hour. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $hour - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceHour(Metric $metric, $hour); - - /** - * Returns metrics since given day. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $day - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceDay(Metric $metric, $day); -} diff --git a/app/Repositories/Metric/MetricRepository.php b/app/Repositories/Metric/MetricRepository.php deleted file mode 100644 index c424336b..00000000 --- a/app/Repositories/Metric/MetricRepository.php +++ /dev/null @@ -1,174 +0,0 @@ - - */ -class MetricRepository -{ - /** - * Metric repository. - * - * @var \CachetHQ\Cachet\Repositories\Metric\MetricInterface - */ - protected $repository; - - /** - * The date factory instance. - * - * @var \CachetHQ\Cachet\Services\Dates\DateFactory - */ - protected $dates; - - /** - * Create a new metric repository class. - * - * @param \CachetHQ\Cachet\Repositories\Metric\MetricInterface $repository - * @param \CachetHQ\Cachet\Services\Dates\DateFactory $dates - * - * @return void - */ - public function __construct(MetricInterface $repository, DateFactory $dates) - { - $this->repository = $repository; - $this->dates = $dates; - } - - /** - * Returns all points as an array, for the last hour. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return \Illuminate\Support\Collection - */ - public function listPointsLastHour(Metric $metric) - { - $dateTime = $this->dates->make(); - $pointKey = $dateTime->format('Y-m-d H:i'); - $nrOfMinutes = 61; - $points = $this->repository->getPointsSinceMinutes($metric, $nrOfMinutes + $metric->threshold)->pluck('value', 'key')->take(-$nrOfMinutes); - - $timeframe = $nrOfMinutes; - - //Settings counter for minutes without data - $minutesWithNoData = 0; - - for ($i = 0; $i < $timeframe; $i++) { - if (!$points->has($pointKey)) { - if ($i >= $metric->threshold) { - $points->put($pointKey, $metric->default_value); - //We put default value as metric, so we can reset counter for minutes without data - $minutesWithNoData = 0; - } else { - //We didn't find any data, but threshold is not meet yet so we just adding to counter - $minutesWithNoData++; - } - } else { - //We found data within this threshold, zeroing counter - $minutesWithNoData = 0; - } - - $pointKey = $dateTime->sub(new DateInterval('PT1M'))->format('Y-m-d H:i'); - } - - return $points->sortBy(function ($point, $key) { - return $key; - }); - } - - /** - * Returns all points as an array, by x hours. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $hours - * - * @return array - */ - public function listPointsToday(Metric $metric, $hours = 12) - { - $dateTime = $this->dates->make(); - $pointKey = $dateTime->format('Y-m-d H:00'); - $points = $this->repository->getPointsSinceHour($metric, $hours)->pluck('value', 'key'); - - for ($i = 0; $i < $hours; $i++) { - if (!$points->has($pointKey)) { - $points->put($pointKey, $metric->default_value); - } - - $pointKey = $dateTime->sub(new DateInterval('PT1H'))->format('Y-m-d H:00'); - } - - return $points->sortBy(function ($point, $key) { - return $key; - }); - } - - /** - * Returns all points as an array, in the last week. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return array - */ - public function listPointsForWeek(Metric $metric) - { - $dateTime = $this->dates->make(); - $pointKey = $dateTime->format('Y-m-d'); - $points = $this->repository->getPointsSinceDay($metric, 7)->pluck('value', 'key'); - - for ($i = 0; $i <= 7; $i++) { - if (!$points->has($pointKey)) { - $points->put($pointKey, $metric->default_value); - } - - $pointKey = $dateTime->sub(new DateInterval('P1D'))->format('Y-m-d'); - } - - return $points->sortBy(function ($point, $key) { - return $key; - }); - } - - /** - * Returns all points as an array, in the last month. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * - * @return array - */ - public function listPointsForMonth(Metric $metric) - { - $dateTime = $this->dates->make(); - $pointKey = $dateTime->format('Y-m-d'); - $daysInMonth = $dateTime->format('t'); - $points = $this->repository->getPointsSinceDay($metric, $daysInMonth)->pluck('value', 'key'); - - for ($i = 0; $i <= $daysInMonth; $i++) { - if (!$points->has($pointKey)) { - $points->put($pointKey, $metric->default_value); - } - - $pointKey = $dateTime->sub(new DateInterval('P1D'))->format('Y-m-d'); - } - - return $points->sortBy(function ($point, $key) { - return $key; - }); - } -} diff --git a/app/Repositories/Metric/MySqlRepository.php b/app/Repositories/Metric/MySqlRepository.php deleted file mode 100644 index 3d5e3715..00000000 --- a/app/Repositories/Metric/MySqlRepository.php +++ /dev/null @@ -1,97 +0,0 @@ - - */ -class MySqlRepository extends AbstractMetricRepository implements MetricInterface -{ - /** - * Returns metrics since given minutes. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $minutes - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceMinutes(Metric $metric, $minutes) - { - $queryType = $this->getQueryType($metric); - - $points = DB::select("SELECT DATE_FORMAT({$this->getMetricPointsTable()}.`created_at`, '%Y-%m-%d %H:%i') AS `key`, {$queryType} ". - "FROM {$this->getMetricsTable()} INNER JOIN {$this->getMetricPointsTable()} ON {$this->getMetricsTable()}.id = {$this->getMetricPointsTable()}.metric_id ". - "WHERE {$this->getMetricsTable()}.id = :metricId ". - "AND {$this->getMetricPointsTable()}.`created_at` >= DATE_SUB(NOW(), INTERVAL :minutes MINUTE) ". - "AND {$this->getMetricPointsTable()}.`created_at` <= NOW() ". - "GROUP BY HOUR({$this->getMetricPointsTable()}.`created_at`), MINUTE({$this->getMetricPointsTable()}.`created_at`) ORDER BY {$this->getMetricPointsTable()}.`created_at`", [ - 'metricId' => $metric->id, - 'minutes' => $minutes, - ]); - - return $this->mapResults($metric, $points); - } - - /** - * Returns metrics since given hour. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $hour - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceHour(Metric $metric, $hour) - { - $queryType = $this->getQueryType($metric); - $points = DB::select("SELECT DATE_FORMAT({$this->getMetricPointsTable()}.`created_at`, '%Y-%m-%d %H:00') AS `key`, {$queryType} ". - "FROM {$this->getMetricsTable()} INNER JOIN {$this->getMetricPointsTable()} ON {$this->getMetricsTable()}.id = {$this->getMetricPointsTable()}.metric_id ". - "WHERE {$this->getMetricsTable()}.id = :metricId ". - "AND {$this->getMetricPointsTable()}.`created_at` >= DATE_SUB(NOW(), INTERVAL :hour HOUR) ". - "AND {$this->getMetricPointsTable()}.`created_at` <= NOW() ". - "GROUP BY HOUR({$this->getMetricPointsTable()}.`created_at`) ". - "ORDER BY {$this->getMetricPointsTable()}.`created_at`", [ - 'metricId' => $metric->id, - 'hour' => $hour, - ]); - - return $this->mapResults($metric, $points); - } - - /** - * Returns metrics since given day. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $day - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceDay(Metric $metric, $day) - { - $queryType = $this->getQueryType($metric); - $points = DB::select("SELECT DATE_FORMAT({$this->getMetricPointsTable()}.`created_at`, '%Y-%m-%d') AS `key`, {$queryType} ". - "FROM {$this->getMetricsTable()} INNER JOIN {$this->getMetricPointsTable()} ON {$this->getMetricsTable()}.id = {$this->getMetricPointsTable()}.metric_id ". - "WHERE {$this->getMetricsTable()}.id = :metricId ". - "AND {$this->getMetricPointsTable()}.`created_at` >= DATE_SUB(NOW(), INTERVAL :day DAY) ". - "AND {$this->getMetricPointsTable()}.`created_at` <= NOW() ". - "GROUP BY DATE({$this->getMetricPointsTable()}.`created_at`) ORDER BY {$this->getMetricPointsTable()}.`created_at`", [ - 'metricId' => $metric->id, - 'day' => $day, - ]); - - return $this->mapResults($metric, $points); - } -} diff --git a/app/Repositories/Metric/PgSqlRepository.php b/app/Repositories/Metric/PgSqlRepository.php deleted file mode 100644 index c8d135c6..00000000 --- a/app/Repositories/Metric/PgSqlRepository.php +++ /dev/null @@ -1,95 +0,0 @@ - - */ -class PgSqlRepository extends AbstractMetricRepository implements MetricInterface -{ - /** - * Returns metrics since given minutes. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $minutes - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceMinutes(Metric $metric, $minutes) - { - $queryType = $this->getQueryType($metric); - $points = DB::select("SELECT to_char({$this->getMetricPointsTable()}.created_at, 'YYYY-MM-DD HH24:MI') AS key, {$queryType} ". - "FROM {$this->getMetricsTable()} INNER JOIN {$this->getMetricPointsTable()} ON {$this->getMetricsTable()}.id = {$this->getMetricPointsTable()}.metric_id ". - "WHERE {$this->getMetricsTable()}.id = :metricId ". - "AND {$this->getMetricPointsTable()}.created_at >= (NOW() - INTERVAL '{$minutes}' MINUTE) ". - "AND {$this->getMetricPointsTable()}.created_at <= NOW() ". - "GROUP BY to_char({$this->getMetricPointsTable()}.created_at, 'YYYY-MM-DD HH24:MI') ". - "ORDER BY to_char({$this->getMetricPointsTable()}.created_at, 'YYYY-MM-DD HH24:MI')", [ - 'metricId' => $metric->id, - ]); - - return $this->mapResults($metric, $points); - } - - /** - * Returns metrics since given hour. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $hour - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceHour(Metric $metric, $hour) - { - $queryType = $this->getQueryType($metric); - $points = DB::select("SELECT to_char({$this->getMetricPointsTable()}.created_at, 'YYYY-MM-DD HH24:00') AS key, {$queryType} ". - "FROM {$this->getMetricsTable()} INNER JOIN {$this->getMetricPointsTable()} ON {$this->getMetricsTable()}.id = {$this->getMetricPointsTable()}.metric_id ". - "WHERE {$this->getMetricsTable()}.id = :metricId ". - "AND {$this->getMetricPointsTable()}.created_at >= (NOW() - INTERVAL '{$hour}' HOUR) ". - "AND {$this->getMetricPointsTable()}.created_at <= NOW() ". - "GROUP BY to_char({$this->getMetricPointsTable()}.created_at, 'YYYY-MM-DD HH24:00') ". - "ORDER BY to_char({$this->getMetricPointsTable()}.created_at, 'YYYY-MM-DD HH24:00')", [ - 'metricId' => $metric->id, - ]); - - return $this->mapResults($metric, $points); - } - - /** - * Returns metrics since given day. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $day - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceDay(Metric $metric, $day) - { - $queryType = $this->getQueryType($metric); - $points = DB::select("SELECT to_char({$this->getMetricPointsTable()}.created_at, 'YYYY-MM-DD HH24:00') AS key, {$queryType} ". - "FROM {$this->getMetricsTable()} INNER JOIN {$this->getMetricPointsTable()} ON {$this->getMetricsTable()}.id = {$this->getMetricPointsTable()}.metric_id ". - "WHERE {$this->getMetricsTable()}.id = :metricId ". - "AND {$this->getMetricPointsTable()}.created_at >= (DATE(NOW()) - INTERVAL '{$day}' DAY) ". - "AND {$this->getMetricPointsTable()}.created_at <= DATE(NOW()) ". - "GROUP BY to_char({$this->getMetricPointsTable()}.created_at, 'YYYY-MM-DD HH24:00')". - "ORDER BY to_char({$this->getMetricPointsTable()}.created_at, 'YYYY-MM-DD HH24:00')", [ - 'metricId' => $metric->id, - ]); - - return $this->mapResults($metric, $points); - } -} diff --git a/app/Repositories/Metric/SqliteRepository.php b/app/Repositories/Metric/SqliteRepository.php deleted file mode 100644 index d979e084..00000000 --- a/app/Repositories/Metric/SqliteRepository.php +++ /dev/null @@ -1,95 +0,0 @@ - - */ -class SqliteRepository extends AbstractMetricRepository implements MetricInterface -{ - /** - * Returns metrics since given minutes. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $minutes - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceMinutes(Metric $metric, $minutes) - { - $queryType = $this->getQueryType($metric); - $points = DB::select("SELECT strftime('%Y-%m-%d %H:%M', {$this->getMetricPointsTable()}.`created_at`) AS `key`, {$queryType} ". - "FROM {$this->getMetricsTable()} ". - "INNER JOIN {$this->getMetricPointsTable()} ON {$this->getMetricsTable()}.id = {$this->getMetricPointsTable()}.metric_id ". - "WHERE {$this->getMetricsTable()}.id = :metricId ". - "AND {$this->getMetricPointsTable()}.`created_at` >= datetime('now', 'localtime', '-{$minutes} minutes') ". - "AND {$this->getMetricPointsTable()}.`created_at` <= datetime('now', 'localtime') ". - "GROUP BY strftime('%H', {$this->getMetricPointsTable()}.`created_at`), strftime('%M', {$this->getMetricPointsTable()}.`created_at`) ". - "ORDER BY {$this->getMetricPointsTable()}.`created_at`", [ - 'metricId' => $metric->id, - ]); - - return $this->mapResults($metric, $points); - } - - /** - * Returns metrics since given hour. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $hour - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceHour(Metric $metric, $hour) - { - $queryType = $this->getQueryType($metric); - $points = DB::select("SELECT strftime('%Y-%m-%d %H:00', {$this->getMetricPointsTable()}.`created_at`) AS `key`, {$queryType} ". - "FROM {$this->getMetricsTable()} INNER JOIN {$this->getMetricPointsTable()} ON {$this->getMetricsTable()}.id = {$this->getMetricPointsTable()}.metric_id ". - "WHERE {$this->getMetricsTable()}.id = :metricId ". - "AND {$this->getMetricPointsTable()}.`created_at` >= datetime('now', 'localtime', '-{$hour} hours') ". - "AND {$this->getMetricPointsTable()}.`created_at` <= datetime('now', 'localtime') ". - "GROUP BY strftime('%H', {$this->getMetricPointsTable()}.`created_at`) ORDER BY {$this->getMetricPointsTable()}.`created_at`", [ - 'metricId' => $metric->id, - ]); - - return $this->mapResults($metric, $points); - } - - /** - * Returns metrics since given day. - * - * @param \CachetHQ\Cachet\Models\Metric $metric - * @param int $day - * - * @return \Illuminate\Support\Collection - */ - public function getPointsSinceDay(Metric $metric, $day) - { - $queryType = $this->getQueryType($metric); - $points = DB::select("SELECT strftime('%Y-%m-%d', {$this->getMetricPointsTable()}.`created_at`) AS `key`, {$queryType} ". - "FROM {$this->getMetricsTable()} INNER JOIN {$this->getMetricPointsTable()} ON {$this->getMetricsTable()}.id = {$this->getMetricPointsTable()}.metric_id ". - "WHERE {$this->getMetricsTable()}.id = :metricId ". - "AND {$this->getMetricPointsTable()}.`created_at` >= datetime('now', 'localtime', '-{$day} days') ". - "AND {$this->getMetricPointsTable()}.`created_at` <= datetime('now', 'localtime') ". - "GROUP BY DATE({$this->getMetricPointsTable()}.`created_at`) ". - "ORDER BY {$this->getMetricPointsTable()}.`created_at`", [ - 'metricId' => $metric->id, - ]); - - return $this->mapResults($metric, $points); - } -} diff --git a/app/Services/Dates/DateFactory.php b/app/Services/Dates/DateFactory.php deleted file mode 100644 index 4ccbcb49..00000000 --- a/app/Services/Dates/DateFactory.php +++ /dev/null @@ -1,111 +0,0 @@ - - * @author James Brooks - */ -class DateFactory -{ - /** - * The application timezone. - * - * @var string - */ - protected $appTimezone; - - /** - * The cachet timezone. - * - * @var string - */ - protected $cachetTimezone; - - /** - * Create a new date factory instance. - * - * @param string $appTimezone - * @param string $cachetTimezone - * - * @return void - */ - public function __construct($appTimezone, $cachetTimezone) - { - $this->appTimezone = $appTimezone; - $this->cachetTimezone = $cachetTimezone; - } - - /** - * Create a Carbon instance from a specific format. - * - * @param string $format - * @param string $time - * - * @throws \InvalidArgumentException - * - * @return \Carbon\Carbon - */ - public function create($format, $time) - { - return Date::createFromFormat($format, $time, $this->cachetTimezone)->setTimezone($this->appTimezone); - } - - /** - * Create a Carbon instance from a specific format. - * - * We're also going to make sure the timezone information is correct. - * - * @param string $format - * @param string $time - * - * @throws \InvalidArgumentException - * - * @return \Carbon\Carbon - */ - public function createNormalized($format, $time) - { - return Date::createFromFormat($format, $time)->setTimezone($this->appTimezone); - } - - /** - * Make a Carbon instance from a string. - * - * @param string|null $time - * - * @throws \InvalidArgumentException - * - * @return \Carbon\Carbon - */ - public function make($time = null) - { - return (new Date($time))->setTimezone($this->cachetTimezone); - } - - /** - * Return the abbreviated timezone. - * - * @return string - */ - public function getTimezone() - { - $dateTime = new Date(); - $dateTime->setTimeZone(new DateTimeZone($this->cachetTimezone)); - - return $dateTime->format('T'); - } -} diff --git a/app/Settings/Cache.php b/app/Settings/Cache.php deleted file mode 100644 index a8364872..00000000 --- a/app/Settings/Cache.php +++ /dev/null @@ -1,103 +0,0 @@ - - * @author James Brooks - */ -class Cache -{ - /** - * The filesystem instance. - * - * @var \Illuminate\Filesystem\Filesystem - */ - protected $files; - - /** - * Is path to the setting cache. - * - * @var string - */ - protected $path; - - /** - * Create a new settings cache instance. - * - * @param \Illuminate\Filesystem\Filesystem $files - * @param string $path - * - * @return void - */ - public function __construct(Filesystem $files, $path) - { - $this->files = $files; - $this->path = $path; - } - - /** - * Store the settings in the cache. - * - * @param string $env - * @param array $data - * - * @return void - */ - public function store($env, array $data) - { - $this->files->put($this->path($env), 'files->getRequire($this->path($env)); - } catch (Exception $e) { - return false; - } - } - - /** - * Clear the settings cache. - * - * Note that we're careful not to remove the .gitignore file. - * - * @return void - */ - public function clear() - { - $this->files->delete($this->files->allFiles($this->path)); - } - - /** - * Returns the settings cache path. - * - * @return string - */ - protected function path($env) - { - return "{$this->path}/{$env}.php"; - } -} diff --git a/app/Settings/ReadException.php b/app/Settings/ReadException.php deleted file mode 100644 index 86de0ae3..00000000 --- a/app/Settings/ReadException.php +++ /dev/null @@ -1,34 +0,0 @@ - - */ -class ReadException extends SettingsException -{ - /** - * Create a new read exception instance. - * - * @param \Exception $e - * - * @return void - */ - public function __construct(Exception $e) - { - parent::__construct('Unable to read Cachet settings', $e); - } -} diff --git a/app/Settings/Repository.php b/app/Settings/Repository.php deleted file mode 100644 index e6d54038..00000000 --- a/app/Settings/Repository.php +++ /dev/null @@ -1,194 +0,0 @@ - - * @author James Brooks - */ -class Repository -{ - /** - * Array of numerical settings that are not bools. - * - * @var string[] - */ - protected $notBooleans = [ - 'app_incident_days', - ]; - - /** - * The eloquent model instance. - * - * @var \CachetHQ\Cachet\Models\Setting - */ - protected $model; - - /** - * Is the config state stale? - * - * @var bool - */ - protected $stale = false; - - /** - * Create a new settings repository instance. - * - * @param \CachetHQ\Cachet\Models\Setting $model - * - * @return void - */ - public function __construct(Setting $model) - { - $this->model = $model; - } - - /** - * Returns a setting from the database. - * - * @throws \CachetHQ\Cachet\Settings\ReadException - * - * @return array - */ - public function all() - { - try { - return $this->model->all(['name', 'value'])->pluck('value', 'name')->map(function ($value, $name) { - return $this->castSetting($name, $value); - })->toArray(); - } catch (Exception $e) { - throw new ReadException($e); - } - } - - /** - * Updates a setting value. - * - * @param string $name - * @param string|null $value - * - * @throws \CachetHQ\Cachet\Settings\WriteException - * - * @return void - */ - public function set($name, $value) - { - $this->stale = true; - - try { - if ($value === null) { - $this->model->where('name', '=', $name)->delete(); - } else { - $this->model->updateOrCreate(compact('name'), compact('value')); - } - } catch (Exception $e) { - throw new WriteException($e); - } - } - - /** - * Get a setting, or the default value. - * - * @param string $name - * @param mixed $default - * - * @throws \CachetHQ\Cachet\Settings\ReadException - * - * @return mixed - */ - public function get($name, $default = null) - { - try { - if ($setting = $this->model->where('name', '=', $name)->first()) { - return $this->castSetting($name, $setting->value); - } - - return $default; - } catch (Exception $e) { - throw new ReadException($e); - } - } - - /** - * Deletes a setting. - * - * @param string $name - * - * @throws \CachetHQ\Cachet\Settings\WriteException - * - * @return void - */ - public function delete($name) - { - $this->stale = true; - - try { - $this->model->where('name', '=', $name)->delete(); - } catch (Exception $e) { - throw new WriteException($e); - } - } - - /** - * Clear all settings. - * - * @throws \CachetHQ\Cachet\Settings\WriteException - * - * @return void - */ - public function clear() - { - $this->stale = true; - - try { - $this->model->query()->delete(); - } catch (Exception $e) { - throw new WriteException($e); - } - } - - /** - * Is the config state stale? - * - * @return bool - */ - public function stale() - { - return $this->stale; - } - - /** - * Cast setting as the applicable type. - * - * @param string $key - * @param string $value - * - * @return mixed - */ - protected function castSetting($key, $value) - { - if (is_null($value)) { - return $value; - } - - if (!in_array($key, $this->notBooleans) && in_array($value, ['0', '1'])) { - return (bool) $value; - } - - return $value; - } -} diff --git a/app/Settings/SettingsException.php b/app/Settings/SettingsException.php deleted file mode 100644 index 1716ea36..00000000 --- a/app/Settings/SettingsException.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ -class SettingsException extends Exception -{ - /** - * Create a new write exception instance. - * - * @param string $m - * @param \Exception $e - * - * @return void - */ - public function __construct(string $m, Exception $e) - { - parent::__construct($m, 0, $e); - } -} diff --git a/app/Settings/WriteException.php b/app/Settings/WriteException.php deleted file mode 100644 index baa41ff7..00000000 --- a/app/Settings/WriteException.php +++ /dev/null @@ -1,34 +0,0 @@ - - */ -class WriteException extends SettingsException -{ - /** - * Create a new write exception instance. - * - * @param \Exception $e - * - * @return void - */ - public function __construct(Exception $e) - { - parent::__construct('Unable to write Cachet settings', $e); - } -} diff --git a/app/Subscribers/CommandSubscriber.php b/app/Subscribers/CommandSubscriber.php deleted file mode 100644 index a8793619..00000000 --- a/app/Subscribers/CommandSubscriber.php +++ /dev/null @@ -1,246 +0,0 @@ - - * @author Graham Campbell - */ -class CommandSubscriber -{ - /** - * The settings cache instance. - * - * @var \CachetHQ\Cachet\Settings\Cache - */ - protected $cache; - - /** - * Create a new command subscriber instance. - * - * @param \CachetHQ\Cachet\Settings\Cache $cache - * - * @return void - */ - public function __construct(Cache $cache) - { - $this->cache = $cache; - } - - /** - * Register the listeners for the subscriber. - * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * - * @return void - */ - public function subscribe(Dispatcher $events) - { - $events->listen('command.installing', __CLASS__.'@fireInstallingCommand', 5); - $events->listen('command.updating', __CLASS__.'@fireUpdatingCommand', 5); - $events->listen('command.resetting', __CLASS__.'@fireResettingCommand', 5); - $events->listen('command.generatekey', __CLASS__.'@onGenerateKey'); - $events->listen('command.cacheconfig', __CLASS__.'@onCacheConfig'); - $events->listen('command.cacheroutes', __CLASS__.'@onCacheRoutes'); - $events->listen('command.publishvendors', __CLASS__.'@onPublishVendors'); - $events->listen('command.resetmigrations', __CLASS__.'@onResetMigrations'); - $events->listen('command.runmigrations', __CLASS__.'@onRunMigrations'); - $events->listen('command.runseeding', __CLASS__.'@onRunSeeding'); - $events->listen('command.linkstorage', __CLASS__.'@onLinkStorage'); - $events->listen('command.updatecache', __CLASS__.'@onUpdateCache'); - } - - /** - * Fire the installing command. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function fireInstallingCommand(Command $command) - { - $this->handleMainCommand($command); - - event(new SystemWasInstalledEvent()); - - $command->info('System was installed!'); - } - - /** - * Fire the updating command. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function fireUpdatingCommand(Command $command) - { - $this->handleMainCommand($command); - - event(new SystemWasUpdatedEvent()); - - $command->info('System was updated!'); - } - - /** - * Fire the resetting command. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function fireResettingCommand(Command $command) - { - $this->handleMainCommand($command); - - event(new SystemWasResetEvent()); - - $command->info('System was reset!'); - } - - /** - * Handle the main bulk of the command, clear the settings. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - protected function handleMainCommand(Command $command) - { - $command->line('Clearing settings cache...'); - - $this->cache->clear(); - - $command->line('Settings cache cleared!'); - } - - /** - * Handle a command.generatekey event. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function onGenerateKey(Command $command) - { - $command->call('key:generate'); - } - - /** - * Handle a command.cacheconfig event. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function onCacheConfig(Command $command) - { - $command->call('config:cache'); - } - - /** - * Handle a command.cacheroutes event. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function onCacheRoutes(Command $command) - { - $command->call('route:cache'); - } - - /** - * Handle a command.publishvendors event. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function onPublishVendors(Command $command) - { - $command->call('vendor:publish', ['--all' => true]); - } - - /** - * Handle a command.resetmigrations event. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function onResetMigrations(Command $command) - { - $command->call('migrate:reset', ['--force' => true]); - } - - /** - * Handle a command.runmigrations event. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function onRunMigrations(Command $command) - { - $command->call('migrate', ['--force' => true]); - } - - /** - * Handle a command.runseeding event. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function onRunSeeding(Command $command) - { - $command->call('db:seed', ['--force' => true]); - } - - /** - * Handle a command.linkstorage event. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function onLinkStorage(Command $command) - { - if ($command->getApplication()->has('storage:link')) { - $command->call('storage:link'); - } - } - - /** - * Handle a command.updatecache event. - * - * @param \Illuminate\Console\Command $command - * - * @return void - */ - public function onUpdateCache(Command $command) - { - $command->line('Clearing cache...'); - $command->call('cache:clear'); - $command->info('Cache cleared!'); - } -} diff --git a/app/helpers.php b/app/helpers.php deleted file mode 100644 index d1f03254..00000000 --- a/app/helpers.php +++ /dev/null @@ -1,196 +0,0 @@ -get($name, $default); - } -} - -if (!function_exists('set_active')) { - /** - * Set active class if request is in path. - * - * @param string $path - * @param array $classes - * @param string $active - * - * @return string - */ - function set_active($path, array $classes = [], $active = 'active') - { - if (Request::is($path)) { - $classes[] = $active; - } - - $class = e(implode(' ', $classes)); - - return empty($classes) ? '' : "class=\"{$class}\""; - } -} - -if (!function_exists('formatted_date')) { - /** - * Formats a date with the user timezone and the selected format. - * - * @param string $date - * - * @return \Jenssegers\Date\Date - */ - function formatted_date($date) - { - $dateFormat = Config::get('setting.date_format', 'jS F Y'); - - return (new Date($date))->format($dateFormat); - } -} - -if (!function_exists('color_darken')) { - /** - * Darken a color. - * - * @param string $hex - * @param int $percent - * - * @return string - */ - function color_darken($hex, $percent) - { - $hex = preg_replace('/[^0-9a-f]/i', '', $hex); - $new_hex = '#'; - - if (strlen($hex) < 6) { - $hex = $hex[0] + $hex[0] + $hex[1] + $hex[1] + $hex[2] + $hex[2]; - } - - for ($i = 0; $i < 3; $i++) { - $dec = hexdec(substr($hex, $i * 2, 2)); - $dec = min(max(0, $dec + $dec * $percent), 255); - $new_hex .= str_pad(dechex($dec), 2, 0, STR_PAD_LEFT); - } - - return $new_hex; - } -} - -if (!function_exists('color_contrast')) { - /** - * Calculates colour contrast. - * - * https://24ways.org/2010/calculating-color-contrast/ - * - * @param string $hexcolor - * - * @return string - */ - function color_contrast($hexcolor) - { - $r = ctype_xdigit(substr($hexcolor, 0, 2)); - $g = ctype_xdigit(substr($hexcolor, 2, 2)); - $b = ctype_xdigit(substr($hexcolor, 4, 2)); - $yiq = (($r * 100) + ($g * 400) + ($b * 114)) / 1000; - - return ($yiq >= 128) ? 'black' : 'white'; - } -} - -if (!function_exists('cachet_route_generator')) { - /** - * Generate the route string. - * - * @param string $name - * @param string $method - * @param string $domain - * - * @return string - */ - function cachet_route_generator($name, $method = 'get', $domain = 'core') - { - return "{$domain}::{$method}:{$name}"; - } -} - -if (!function_exists('cachet_route')) { - /** - * Generate a URL to a named route, which resides in a given domain. - * - * @param string $name - * @param array $parameters - * @param string $method - * @param string $domain - * - * @return string - */ - function cachet_route($name, $parameters = [], $method = 'get', $domain = 'core') - { - return app('url')->route( - cachet_route_generator($name, $method, $domain), - $parameters, - true - ); - } -} - -if (!function_exists('cachet_redirect')) { - /** - * Create a new redirect response to a named route, which resides in a given domain. - * - * @param string $name - * @param array $parameters - * @param int $status - * @param array $headers - * @param string $method - * @param string $domain - * - * @return \Illuminate\Http\RedirectResponse - */ - function cachet_redirect($name, $parameters = [], $status = 302, $headers = [], $method = 'get', $domain = 'core') - { - $url = cachet_route($name, $parameters, $method, $domain); - - return app('redirect')->to($url, $status, $headers); - } -} - -if (!function_exists('execute')) { - /** - * Send the given command to the dispatcher for execution. - * - * @param object $command - * - * @return void - */ - function execute($command) - { - return app(Dispatcher::class)->dispatchNow($command); - } -} diff --git a/artisan b/artisan old mode 100644 new mode 100755 index d294ad8b..67a3329b --- a/artisan +++ b/artisan @@ -1,6 +1,8 @@ #!/usr/bin/env php make(Illuminate\Contracts\Console\Kernel::class); $status = $kernel->handle( - $input = new Symfony\Component\Console\Input\ArgvInput(), - new Symfony\Component\Console\Output\ConsoleOutput() + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput ); /* diff --git a/bootstrap/app.php b/bootstrap/app.php index 2b2ff8cb..037e17df 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -1,15 +1,19 @@ singleton(Illuminate\Contracts\Http\Kernel::class, CachetHQ\Cachet\Http\Kernel::class); +$app->singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); -$app->singleton(Illuminate\Contracts\Console\Kernel::class, CachetHQ\Cachet\Console\Kernel::class); +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); -$app->singleton(Illuminate\Contracts\Debug\ExceptionHandler::class, GrahamCampbell\Exceptions\ExceptionHandler::class); +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); /* |-------------------------------------------------------------------------- diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php deleted file mode 100644 index 9a75f039..00000000 --- a/bootstrap/autoload.php +++ /dev/null @@ -1,43 +0,0 @@ -=5.5.9", - "symfony/http-foundation": "~2.7|~3.0|~4.0|~5.0", - "symfony/http-kernel": "~2.7|~3.0|~4.0|~5.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0 || ^4.8.10", - "squizlabs/php_codesniffer": "^2.3" + "friendsofphp/php-cs-fixer": "^3.26", + "laravel/legacy-factories": "^1.1", + "orchestra/testbench": "~3.6.0|~3.7.0|~3.8.0|^4.0|^5.0|^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5", + "psalm/plugin-laravel": "^2.8", + "squizlabs/php_codesniffer": "^3.7" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.2-dev" + "laravel": { + "aliases": { + "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade" + } } }, "autoload": { "psr-4": { - "Asm89\\Stack\\": "src/Asm89/Stack/" + "AnourValar\\EloquentSerialize\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Laravel Query Builder (Eloquent) serialization", + "homepage": "https://github.com/AnourValar/eloquent-serialize", + "keywords": [ + "anourvalar", + "builder", + "copy", + "eloquent", + "job", + "laravel", + "query", + "querybuilder", + "queue", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/AnourValar/eloquent-serialize/issues", + "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.17" + }, + "time": "2023-12-06T15:54:01+00:00" + }, + { + "name": "blade-ui-kit/blade-heroicons", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/blade-ui-kit/blade-heroicons.git", + "reference": "bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/blade-ui-kit/blade-heroicons/zipball/bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a", + "reference": "bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a", + "shasum": "" + }, + "require": { + "blade-ui-kit/blade-icons": "^1.1", + "illuminate/support": "^9.0|^10.0", + "php": "^8.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "BladeUI\\Heroicons\\BladeHeroiconsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "BladeUI\\Heroicons\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -158,212 +114,78 @@ ], "authors": [ { - "name": "Alexander", - "email": "iam.asm89@gmail.com" + "name": "Dries Vints", + "homepage": "https://driesvints.com" } ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", + "description": "A package to easily make use of Heroicons in your Laravel Blade views.", + "homepage": "https://github.com/blade-ui-kit/blade-heroicons", "keywords": [ - "cors", - "stack" + "Heroicons", + "blade", + "laravel" ], "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/1.3.0" + "issues": "https://github.com/blade-ui-kit/blade-heroicons/issues", + "source": "https://github.com/blade-ui-kit/blade-heroicons/tree/2.2.1" }, - "time": "2019-12-24T22:41:47+00:00" - }, - { - "name": "aws/aws-crt-php", - "version": "v1.2.3", - "source": { - "type": "git", - "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "5545a4fa310aec39f54279fdacebcce33b3ff382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/5545a4fa310aec39f54279fdacebcce33b3ff382", - "reference": "5545a4fa310aec39f54279fdacebcce33b3ff382", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5", - "yoast/phpunit-polyfills": "^1.0" - }, - "suggest": { - "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ + "funding": [ { - "name": "AWS SDK Common Runtime Team", - "email": "aws-sdk-common-runtime@amazon.com" + "url": "https://github.com/sponsors/driesvints", + "type": "github" + }, + { + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" } ], - "description": "AWS Common Runtime for PHP", - "homepage": "https://github.com/awslabs/aws-crt-php", - "keywords": [ - "amazon", - "aws", - "crt", - "sdk" - ], - "support": { - "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.3" - }, - "time": "2023-10-16T20:10:06+00:00" + "time": "2023-12-18T20:44:03+00:00" }, { - "name": "aws/aws-sdk-php", - "version": "3.278.3", + "name": "blade-ui-kit/blade-icons", + "version": "1.5.3", "source": { "type": "git", - "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "596534c0627d8b38597061341e99b460437d1a16" + "url": "https://github.com/blade-ui-kit/blade-icons.git", + "reference": "b5e6603218e2347ac81cb780bc6f71c8c3b31f5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/596534c0627d8b38597061341e99b460437d1a16", - "reference": "596534c0627d8b38597061341e99b460437d1a16", + "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/b5e6603218e2347ac81cb780bc6f71c8c3b31f5b", + "reference": "b5e6603218e2347ac81cb780bc6f71c8c3b31f5b", "shasum": "" }, "require": { - "aws/aws-crt-php": "^1.0.4", - "ext-json": "*", - "ext-pcre": "*", - "ext-simplexml": "*", - "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "guzzlehttp/promises": "^1.4.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "mtdowling/jmespath.php": "^2.6", - "php": ">=5.5", - "psr/http-message": "^1.0" + "illuminate/contracts": "^8.0|^9.0|^10.0", + "illuminate/filesystem": "^8.0|^9.0|^10.0", + "illuminate/support": "^8.0|^9.0|^10.0", + "illuminate/view": "^8.0|^9.0|^10.0", + "php": "^7.4|^8.0", + "symfony/console": "^5.3|^6.0", + "symfony/finder": "^5.3|^6.0" }, "require-dev": { - "andrewsville/php-token-reflection": "^1.4", - "aws/aws-php-sns-message-validator": "~1.0", - "behat/behat": "~3.0", - "composer/composer": "^1.10.22", - "dms/phpunit-arraysubset-asserts": "^0.4.0", - "doctrine/cache": "~1.4", - "ext-dom": "*", - "ext-openssl": "*", - "ext-pcntl": "*", - "ext-sockets": "*", - "nette/neon": "^2.3", - "paragonie/random_compat": ">= 2", - "phpunit/phpunit": "^4.8.35 || ^5.6.3 || ^9.5", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0", - "sebastian/comparator": "^1.2.3 || ^4.0", - "yoast/phpunit-polyfills": "^1.0" - }, - "suggest": { - "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", - "doctrine/cache": "To use the DoctrineCacheAdapter", - "ext-curl": "To send requests using cURL", - "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", - "ext-sockets": "To use client-side monitoring" + "mockery/mockery": "^1.3", + "orchestra/testbench": "^6.0|^7.0|^8.0", + "phpunit/phpunit": "^9.0" }, + "bin": [ + "bin/blade-icons-generate" + ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.0-dev" + "laravel": { + "providers": [ + "BladeUI\\Icons\\BladeIconsServiceProvider" + ] } }, "autoload": { "files": [ - "src/functions.php" + "src/helpers.php" ], "psr-4": { - "Aws\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Amazon Web Services", - "homepage": "http://aws.amazon.com" - } - ], - "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", - "homepage": "http://aws.amazon.com/sdkforphp", - "keywords": [ - "amazon", - "aws", - "cloud", - "dynamodb", - "ec2", - "glacier", - "s3", - "sdk" - ], - "support": { - "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", - "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.278.3" - }, - "time": "2023-08-15T18:07:55+00:00" - }, - { - "name": "barryvdh/laravel-cors", - "version": "v0.11.4", - "source": { - "type": "git", - "url": "https://github.com/fruitcake/laravel-cors.git", - "reference": "03492f1a3bc74a05de23f93b94ac7cc5c173eec9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/03492f1a3bc74a05de23f93b94ac7cc5c173eec9", - "reference": "03492f1a3bc74a05de23f93b94ac7cc5c173eec9", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^1.2", - "illuminate/support": "^5.5|^6", - "php": ">=7", - "symfony/http-foundation": "^3.1|^4", - "symfony/http-kernel": "^3.1|^4" - }, - "require-dev": { - "laravel/framework": "^5.5", - "orchestra/testbench": "3.3.x|3.4.x|3.5.x|3.6.x|3.7.x", - "phpunit/phpunit": "^4.8|^5.2|^7.0", - "squizlabs/php_codesniffer": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.11-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\Cors\\ServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\Cors\\": "src/" + "BladeUI\\Icons\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -372,648 +194,462 @@ ], "authors": [ { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" + "name": "Dries Vints", + "homepage": "https://driesvints.com" } ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "description": "A package to easily make use of icons in your Laravel Blade views.", + "homepage": "https://github.com/blade-ui-kit/blade-icons", "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "support": { - "issues": "https://github.com/fruitcake/laravel-cors/issues", - "source": "https://github.com/fruitcake/laravel-cors/tree/v0.11.4" - }, - "abandoned": true, - "time": "2019-08-28T11:27:11+00:00" - }, - { - "name": "bugsnag/bugsnag", - "version": "v3.29.1", - "source": { - "type": "git", - "url": "https://github.com/bugsnag/bugsnag-php.git", - "reference": "7fff8512b237a57323f600975ada6376e2b912c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bugsnag/bugsnag-php/zipball/7fff8512b237a57323f600975ada6376e2b912c1", - "reference": "7fff8512b237a57323f600975ada6376e2b912c1", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "guzzlehttp/guzzle": "^5.0|^6.0|^7.0", - "php": ">=5.5" - }, - "require-dev": { - "guzzlehttp/psr7": "^1.3", - "mtdowling/burgomaster": "dev-master#72151eddf5f0cf101502b94bf5031f9c53501a04", - "php-mock/php-mock-phpunit": "^1.1|^2.1", - "phpunit/phpunit": "^4.8.36|^7.5.15|^9.3.10", - "sebastian/version": ">=1.0.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.20-dev" - } - }, - "autoload": { - "psr-4": { - "Bugsnag\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "James Smith", - "email": "notifiers@bugsnag.com", - "homepage": "https://bugsnag.com" - } - ], - "description": "Official Bugsnag notifier for PHP applications.", - "homepage": "https://github.com/bugsnag/bugsnag-php", - "keywords": [ - "bugsnag", - "errors", - "exceptions", - "logging", - "tracking" - ], - "support": { - "issues": "https://github.com/bugsnag/bugsnag-php/issues", - "source": "https://github.com/bugsnag/bugsnag-php/tree/v3.29.1" - }, - "time": "2023-05-10T11:07:22+00:00" - }, - { - "name": "bugsnag/bugsnag-laravel", - "version": "v2.26.0", - "source": { - "type": "git", - "url": "https://github.com/bugsnag/bugsnag-laravel.git", - "reference": "333a912e38ead3e02724381093778b271168c8a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bugsnag/bugsnag-laravel/zipball/333a912e38ead3e02724381093778b271168c8a3", - "reference": "333a912e38ead3e02724381093778b271168c8a3", - "shasum": "" - }, - "require": { - "bugsnag/bugsnag": "^3.29.0", - "bugsnag/bugsnag-psr-logger": "^1.4|^2.0", - "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^5.0|^6.0|^7.0|^8.0|^9.0|^10.0", - "monolog/monolog": "^1.12|^2.0|^3.0", - "php": ">=5.5" - }, - "require-dev": { - "orchestra/testbench": "^3.1|^4.0|^5.0|^6.0|^7.0|^8.0", - "phpunit/phpunit": "^4.8.36|^6.3.1|^7.5.15|^8.3.5|^9.3.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.18-dev" - } - }, - "autoload": { - "psr-4": { - "Bugsnag\\BugsnagLaravel\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "James Smith", - "email": "notifiers@bugsnag.com" - } - ], - "description": "Official Bugsnag notifier for Laravel applications.", - "homepage": "https://github.com/bugsnag/bugsnag-laravel", - "keywords": [ - "bugsnag", - "errors", - "exceptions", + "blade", + "icons", "laravel", - "logging", - "tracking" - ], - "support": { - "issues": "https://github.com/bugsnag/bugsnag-laravel/issues", - "source": "https://github.com/bugsnag/bugsnag-laravel/tree/v2.26.0" - }, - "time": "2023-02-16T08:48:39+00:00" - }, - { - "name": "bugsnag/bugsnag-psr-logger", - "version": "v1.4.5", - "source": { - "type": "git", - "url": "https://github.com/bugsnag/bugsnag-psr-logger.git", - "reference": "366430a94d983488d265c1068f47d78ebfbacd74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bugsnag/bugsnag-psr-logger/zipball/366430a94d983488d265c1068f47d78ebfbacd74", - "reference": "366430a94d983488d265c1068f47d78ebfbacd74", - "shasum": "" - }, - "require": { - "bugsnag/bugsnag": "^3.10", - "php": ">=5.5", - "psr/log": "^1.0|^2.0" - }, - "require-dev": { - "graham-campbell/testbench-core": "^1.1", - "mockery/mockery": "^0.9.4|^1.3.1", - "phpunit/phpunit": "^4.8.36|^7.5.15|^9.4.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, - "autoload": { - "psr-4": { - "Bugsnag\\PsrLogger\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "James Smith", - "email": "notifiers@bugsnag.com", - "homepage": "https://bugsnag.com" - } - ], - "description": "Official Bugsnag PHP PSR Logger.", - "homepage": "https://github.com/bugsnag/bugsnag-psr", - "keywords": [ - "bugsnag", - "errors", - "exceptions", - "logging", - "psr", - "tracking" - ], - "support": { - "issues": "https://github.com/bugsnag/bugsnag-psr-logger/issues", - "source": "https://github.com/bugsnag/bugsnag-psr-logger/tree/v1.4.5" - }, - "time": "2021-12-13T09:52:57+00:00" - }, - { - "name": "cachethq/badger", - "version": "v2.0.0", - "source": { - "type": "git", - "url": "https://github.com/CachetHQ/Badger.git", - "reference": "9d7f9e8f8529d902f3a30ad120a403a7ba2da1e3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CachetHQ/Badger/zipball/9d7f9e8f8529d902f3a30ad120a403a7ba2da1e3", - "reference": "9d7f9e8f8529d902f3a30ad120a403a7ba2da1e3", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^5.5|^6.0", - "illuminate/support": "^5.5|^6.0", - "php": "^7.1.3" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.1", - "graham-campbell/testbench": "^5.1", - "phpunit/phpunit": "^6.5|^7.0|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - }, - "laravel": { - "providers": [ - "CachetHQ\\Badger\\BadgerServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "CachetHQ\\Badger\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cachet", - "email": "support@cachethq.io" - } - ], - "description": "A Badge Generator For Laravel 5 and 6.", - "keywords": [ - "CachetHQ", - "badge", - "badger", - "cachet", - "shield", "svg" ], "support": { - "issues": "https://github.com/CachetHQ/Badger/issues", - "source": "https://github.com/CachetHQ/Badger/tree/v2.0.0" - }, - "time": "2019-11-18T20:06:20+00:00" - }, - { - "name": "cachethq/emoji", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/CachetHQ/Emoji.git", - "reference": "45227616c9b8077deeefe5561035e219b4118233" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CachetHQ/Emoji/zipball/45227616c9b8077deeefe5561035e219b4118233", - "reference": "45227616c9b8077deeefe5561035e219b4118233", - "shasum": "" - }, - "require": { - "graham-campbell/guzzle-factory": "^3.0", - "illuminate/contracts": "^5.5|^6.0", - "illuminate/support": "^5.5|^6.0", - "league/commonmark": "^1.0", - "php": "^7.1.3" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.1", - "graham-campbell/markdown": "^11.0", - "graham-campbell/testbench": "^5.1", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.5|^7.0|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - }, - "laravel": { - "providers": [ - "CachetHQ\\Emoji\\EmojiServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "CachetHQ\\Emoji\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cachet", - "email": "support@cachethq.io" - } - ], - "description": "An Emoji Parser For Laravel 5 and 6", - "keywords": [ - "CachetHQ", - "cachet", - "emoji", - "parser" - ], - "support": { - "issues": "https://github.com/CachetHQ/Emoji/issues", - "source": "https://github.com/CachetHQ/Emoji/tree/v3.0.0" - }, - "time": "2019-11-19T17:04:13+00:00" - }, - { - "name": "cachethq/twitter", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/CachetHQ/Twitter.git", - "reference": "81216cbc3c1f1a32df70bfb73837f59a35a22b1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CachetHQ/Twitter/zipball/81216cbc3c1f1a32df70bfb73837f59a35a22b1c", - "reference": "81216cbc3c1f1a32df70bfb73837f59a35a22b1c", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^5.5|^6.0", - "illuminate/support": "^5.5|^6.0", - "league/commonmark": "^1.0", - "php": "^7.1.3" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.1", - "graham-campbell/markdown": "^11.0", - "graham-campbell/testbench": "^5.1", - "phpunit/phpunit": "^6.5|^7.0|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - }, - "laravel": { - "providers": [ - "CachetHQ\\Twitter\\TwitterServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "CachetHQ\\Twitter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cachet", - "email": "support@cachethq.io" - } - ], - "description": "A Twitter handle parser for Laravel 5 and 6", - "keywords": [ - "CachetHQ", - "cachet", - "markdown", - "parser", - "twitter" - ], - "support": { - "issues": "https://github.com/CachetHQ/Twitter/issues", - "source": "https://github.com/CachetHQ/Twitter/tree/v3.0.0" - }, - "time": "2019-11-19T17:04:54+00:00" - }, - { - "name": "chillerlan/php-qrcode", - "version": "2.0.8", - "source": { - "type": "git", - "url": "https://github.com/chillerlan/php-qrcode.git", - "reference": "bf0382aaf2f79fa41c2dcb0f216675f74d633fe7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/bf0382aaf2f79fa41c2dcb0f216675f74d633fe7", - "reference": "bf0382aaf2f79fa41c2dcb0f216675f74d633fe7", - "shasum": "" - }, - "require": { - "chillerlan/php-traits": "^1.1", - "php": ">=7.0.3" - }, - "require-dev": { - "chillerlan/php-authenticator": "^2.0", - "phpunit/phpunit": "^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "chillerlan\\QRCode\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kazuhiko Arase", - "homepage": "https://github.com/kazuhikoarase" - }, - { - "name": "Smiley", - "email": "smiley@chillerlan.net", - "homepage": "https://github.com/codemasher" - } - ], - "description": "A QR code generator. PHP 7+", - "homepage": "https://github.com/chillerlan/php-qrcode", - "keywords": [ - "qr code" - ], - "support": { - "issues": "https://github.com/chillerlan/php-qrcode/issues", - "source": "https://github.com/chillerlan/php-qrcode/tree/v2.0.x" + "issues": "https://github.com/blade-ui-kit/blade-icons/issues", + "source": "https://github.com/blade-ui-kit/blade-icons" }, "funding": [ { - "url": "https://ko-fi.com/codemasher", - "type": "ko_fi" - } - ], - "time": "2020-04-12T07:38:35+00:00" - }, - { - "name": "chillerlan/php-traits", - "version": "1.1.13", - "source": { - "type": "git", - "url": "https://github.com/chillerlan/php-traits.git", - "reference": "264759946b6aaeb427346b749fc9639b790b8e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/chillerlan/php-traits/zipball/264759946b6aaeb427346b749fc9639b790b8e7f", - "reference": "264759946b6aaeb427346b749fc9639b790b8e7f", - "shasum": "" - }, - "require": { - "php": ">=7.0.3" - }, - "require-dev": { - "phpunit/phpunit": "^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "chillerlan\\Traits\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Smiley", - "email": "smiley@chillerlan.net", - "homepage": "https://github.com/codemasher" - } - ], - "description": "Some useful traits for PHP 7+", - "homepage": "https://github.com/chillerlan/php-traits", - "keywords": [ - "PHP7", - "container", - "dotenv", - "helper", - "trait" - ], - "support": { - "issues": "https://github.com/chillerlan/php-traits/issues", - "source": "https://github.com/chillerlan/php-traits" - }, - "abandoned": true, - "time": "2018-06-22T00:30:47+00:00" - }, - { - "name": "composer/ca-bundle", - "version": "1.3.7", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.7" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", + "url": "https://github.com/sponsors/driesvints", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" + "url": "https://www.paypal.com/paypalme/driesvints", + "type": "paypal" } ], - "time": "2023-08-30T09:31:38+00:00" + "time": "2023-10-18T10:50:13+00:00" }, { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", + "name": "brick/math", + "version": "0.11.0", "source": { "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + "url": "https://github.com/brick/math.git", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^8.0" }, "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { "psr-4": { - "XdgBaseDir\\": "src/" + "Brick\\Math\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "implementation of xdg base directory specification for php", + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], "support": { - "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", - "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.11.0" }, - "time": "2019-12-04T15:06:13+00:00" + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-01-15T23:15:59+00:00" }, { - "name": "doctrine/cache", - "version": "1.13.0", + "name": "cachethq/core", + "version": "dev-main", "source": { "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "56cd022adb5514472cb144c087393c1821911d09" + "url": "https://github.com/cachethq/core.git", + "reference": "0bb54d5d02000446bcdb2486a0712f220881ded5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/56cd022adb5514472cb144c087393c1821911d09", - "reference": "56cd022adb5514472cb144c087393c1821911d09", + "url": "https://api.github.com/repos/cachethq/core/zipball/0bb54d5d02000446bcdb2486a0712f220881ded5", + "reference": "0bb54d5d02000446bcdb2486a0712f220881ded5", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^3.6", + "filament/filament": "^3.2", + "guzzlehttp/guzzle": "^7.8", + "illuminate/console": "^10.0", + "illuminate/database": "^10.0", + "illuminate/events": "^10.0", + "illuminate/queue": "^10.0", + "illuminate/support": "^10.0", + "nesbot/carbon": "^2.70", + "php": "^8.1", + "spatie/laravel-query-builder": "^5.5", + "tightenco/ziggy": "^1.6", + "timacdonald/json-api": "^v1.0.0-beta.4", + "twig/twig": "^3.0" + }, + "require-dev": { + "orchestra/testbench": "^8.14", + "pestphp/pest": "^2.13", + "pestphp/pest-plugin-laravel": "^2.2", + "spatie/laravel-ray": "^1.32" + }, + "default-branch": true, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Cachet\\CachetCoreServiceProvider", + "Cachet\\CachetDashboardServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Cachet\\": "src", + "Cachet\\Database\\Factories\\": "database/factories" + } + }, + "autoload-dev": { + "psr-4": { + "Cachet\\Tests\\": "tests", + "Workbench\\App\\": "workbench/app/", + "Workbench\\Database\\Factories\\": "workbench/database/factories/", + "Workbench\\Database\\Seeders\\": "workbench/database/seeders/" + } + }, + "scripts": { + "post-autoload-dump": [ + "@prepare" + ], + "test": [ + "vendor/bin/pest" + ], + "canvas": [ + "@php vendor/bin/canvas" + ], + "clear": [ + "@php vendor/bin/testbench package:purge-skeleton --ansi" + ], + "prepare": [ + "@php vendor/bin/testbench package:discover --ansi" + ], + "build": [ + "@prepare", + "@clear", + "@php vendor/bin/testbench workbench:build" + ], + "start": [ + "@build", + "Composer\\Config::disableProcessTimeout", + "@php vendor/bin/testbench serve" + ] + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "James Brooks", + "email": "james@alt-three.com" + } + ], + "description": "Cachet core package.", + "homepage": "https://cachethq.io", + "keywords": [ + "cachet", + "laravel", + "status page" + ], + "support": { + "issues": "https://github.com/cachethq/core/issues", + "source": "https://github.com/cachethq/core" + }, + "time": "2024-01-19T19:59:52+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, + { + "name": "danharrin/date-format-converter", + "version": "v0.3.0", + "source": { + "type": "git", + "url": "https://github.com/danharrin/date-format-converter.git", + "reference": "42b6ddc52059d4ba228a67c15adaaa0c039e75f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/danharrin/date-format-converter/zipball/42b6ddc52059d4ba228a67c15adaaa0c039e75f2", + "reference": "42b6ddc52059d4ba228a67c15adaaa0c039e75f2", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/helpers.php", + "src/standards.php" + ], + "psr-4": { + "DanHarrin\\DateFormatConverter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dan Harrin", + "email": "dan@danharrin.com" + } + ], + "description": "Convert token-based date formats between standards.", + "homepage": "https://github.com/danharrin/date-format-converter", + "support": { + "issues": "https://github.com/danharrin/date-format-converter/issues", + "source": "https://github.com/danharrin/date-format-converter" + }, + "funding": [ + { + "url": "https://github.com/danharrin", + "type": "github" + } + ], + "time": "2022-09-29T07:48:20+00:00" + }, + { + "name": "danharrin/livewire-rate-limiting", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/danharrin/livewire-rate-limiting.git", + "reference": "bc2cc0a0b5b517fdc5bba8671013dd71081f70a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/bc2cc0a0b5b517fdc5bba8671013dd71081f70a8", + "reference": "bc2cc0a0b5b517fdc5bba8671013dd71081f70a8", + "shasum": "" + }, + "require": { + "illuminate/support": "^9.0|^10.0", + "php": "^8.0" + }, + "require-dev": { + "livewire/livewire": "^3.0", + "livewire/volt": "^1.3", + "orchestra/testbench": "^7.0|^8.0", + "phpunit/phpunit": "^9.0|^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "DanHarrin\\LivewireRateLimiting\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dan Harrin", + "email": "dan@danharrin.com" + } + ], + "description": "Apply rate limiters to Laravel Livewire actions.", + "homepage": "https://github.com/danharrin/livewire-rate-limiting", + "support": { + "issues": "https://github.com/danharrin/livewire-rate-limiting/issues", + "source": "https://github.com/danharrin/livewire-rate-limiting" + }, + "funding": [ + { + "url": "https://github.com/danharrin", + "type": "github" + } + ], + "time": "2023-10-27T15:01:19+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "f41715465d65213d644d3141a6a93081be5d3549" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", + "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + }, + "time": "2022-10-27T11:44:00+00:00" + }, + { + "name": "doctrine/cache", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { @@ -1023,19 +659,13 @@ "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", "doctrine/coding-standard": "^9", - "mongodb/mongodb": "^1.1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "predis/predis": "~1.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", "symfony/cache": "^4.4 || ^5.4 || ^6", "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, "type": "library", "autoload": { "psr-4": { @@ -1083,7 +713,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.13.0" + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { @@ -1099,35 +729,44 @@ "type": "tidelift" } ], - "time": "2022-05-20T20:06:54+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { "name": "doctrine/dbal", - "version": "v2.9.3", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "7345cd59edfa2036eb0fa4264b77ae2576842035" + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/7345cd59edfa2036eb0fa4264b77ae2576842035", - "reference": "7345cd59edfa2036eb0fa4264b77ae2576842035", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", "shasum": "" }, "require": { - "doctrine/cache": "^1.0", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1" + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "^5.0", - "jetbrains/phpstorm-stubs": "^2018.1.2", - "phpstan/phpstan": "^0.10.1", - "phpunit/phpunit": "^7.4", - "symfony/console": "^2.0.5|^3.0|^4.0", - "symfony/phpunit-bridge": "^3.4.5|^4.0.5" + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.42", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.13", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^5.4|^6.0", + "symfony/console": "^4.4|^5.4|^6.0", + "vimeo/psalm": "4.30.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -1136,15 +775,9 @@ "bin/doctrine-dbal" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.9.x-dev", - "dev-develop": "3.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1174,18 +807,42 @@ "keywords": [ "abstraction", "database", + "db2", "dbal", + "mariadb", + "mssql", "mysql", - "persistence", + "oci8", + "oracle", + "pdo", "pgsql", - "php", - "queryobject" + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.9" + "source": "https://github.com/doctrine/dbal/tree/3.7.2" }, - "time": "2019-11-02T22:19:34+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2023-11-19T08:06:58+00:00" }, { "name": "doctrine/deprecations", @@ -1236,30 +893,29 @@ }, { "name": "doctrine/event-manager", - "version": "1.2.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.24" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.28" }, "type": "library", "autoload": { @@ -1308,7 +964,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.2.0" + "source": "https://github.com/doctrine/event-manager/tree/2.0.0" }, "funding": [ { @@ -1324,42 +980,37 @@ "type": "tidelift" } ], - "time": "2022-10-12T20:51:15+00:00" + "time": "2022-10-12T20:59:15+00:00" }, { "name": "doctrine/inflector", - "version": "1.4.4", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9" + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", - "reference": "4bd5c1cdfcd00e9e2d8c484f79150f67e5d355d9", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector", - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -1404,7 +1055,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/1.4.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.9" }, "funding": [ { @@ -1420,35 +1071,36 @@ "type": "tidelift" } ], - "time": "2021-04-16T17:34:40+00:00" + "time": "2024-01-15T18:05:13+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "84a527db05647743d50373e0ec53a152f2cde568" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", + "reference": "84a527db05647743d50373e0ec53a152f2cde568", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1480,7 +1132,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/3.0.0" }, "funding": [ { @@ -1496,34 +1148,36 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2022-12-15T16:57:16+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v2.3.1", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/65b2d8ee1f10915efb3b55597da3404f096acba2", - "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { - "php": "^7.0|^8.0" + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^6.4|^7.0|^8.0|^9.0" + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, "autoload": { "psr-4": { "Cron\\": "src/Cron/" @@ -1534,11 +1188,6 @@ "MIT" ], "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, { "name": "Chris Tankersley", "email": "chris@ctankersley.com", @@ -1552,7 +1201,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v2.3.1" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -1560,31 +1209,30 @@ "type": "github" } ], - "time": "2020-10-13T00:52:37+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", - "version": "2.1.25", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1592,7 +1240,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -1620,7 +1268,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -1628,92 +1276,471 @@ "type": "github" } ], - "time": "2020-12-29T14:50:06+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { - "name": "erusev/parsedown", - "version": "1.7.4", + "name": "filament/actions", + "version": "v3.2.6", "source": { "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" + "url": "https://github.com/filamentphp/actions.git", + "reference": "6060641d19b841c5f29fd303330c13578fb211f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/6060641d19b841c5f29fd303330c13578fb211f9", + "reference": "6060641d19b841c5f29fd303330c13578fb211f9", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "support": { - "issues": "https://github.com/erusev/parsedown/issues", - "source": "https://github.com/erusev/parsedown/tree/1.7.x" - }, - "time": "2019-12-30T22:54:17+00:00" - }, - { - "name": "fideloper/proxy", - "version": "4.4.2", - "source": { - "type": "git", - "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", - "reference": "a751f2bc86dd8e6cfef12dc0cbdada82f5a18750", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0", - "php": ">=5.4.0" - }, - "require-dev": { - "illuminate/http": "^5.0|^6.0|^7.0|^8.0|^9.0", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^8.5.8|^9.3.3" + "anourvalar/eloquent-serialize": "^1.2", + "filament/forms": "self.version", + "filament/infolists": "self.version", + "filament/notifications": "self.version", + "filament/support": "self.version", + "illuminate/contracts": "^10.0", + "illuminate/database": "^10.0", + "illuminate/support": "^10.0", + "league/csv": "9.11.0", + "openspout/openspout": "^4.23", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" }, "type": "library", "extra": { "laravel": { "providers": [ - "Fideloper\\Proxy\\TrustedProxyServiceProvider" + "Filament\\Actions\\ActionsServiceProvider" ] } }, "autoload": { "psr-4": { - "Fideloper\\Proxy\\": "src/" + "Filament\\Actions\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful action modals to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-01-19T14:01:23+00:00" + }, + { + "name": "filament/filament", + "version": "v3.2.6", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/panels.git", + "reference": "ebef3fec0014891adc2466def38e4e7ec685b82a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/ebef3fec0014891adc2466def38e4e7ec685b82a", + "reference": "ebef3fec0014891adc2466def38e4e7ec685b82a", + "shasum": "" + }, + "require": { + "danharrin/livewire-rate-limiting": "^0.3|^1.0", + "filament/actions": "self.version", + "filament/forms": "self.version", + "filament/infolists": "self.version", + "filament/notifications": "self.version", + "filament/support": "self.version", + "filament/tables": "self.version", + "filament/widgets": "self.version", + "illuminate/auth": "^10.0", + "illuminate/console": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/cookie": "^10.0", + "illuminate/database": "^10.0", + "illuminate/http": "^10.0", + "illuminate/routing": "^10.0", + "illuminate/session": "^10.0", + "illuminate/support": "^10.0", + "illuminate/view": "^10.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\FilamentServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/global_helpers.php", + "src/helpers.php" + ], + "psr-4": { + "Filament\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A collection of full-stack components for accelerated Laravel app development.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-01-19T14:01:29+00:00" + }, + { + "name": "filament/forms", + "version": "v3.2.6", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/forms.git", + "reference": "ac0cb821bf61a34b280e31edeeb8bb134581eb7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/ac0cb821bf61a34b280e31edeeb8bb134581eb7a", + "reference": "ac0cb821bf61a34b280e31edeeb8bb134581eb7a", + "shasum": "" + }, + "require": { + "danharrin/date-format-converter": "^0.3", + "filament/actions": "self.version", + "filament/support": "self.version", + "illuminate/console": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/database": "^10.0", + "illuminate/filesystem": "^10.0", + "illuminate/support": "^10.0", + "illuminate/validation": "^10.0", + "illuminate/view": "^10.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Forms\\FormsServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Filament\\Forms\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful forms to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-01-19T14:01:23+00:00" + }, + { + "name": "filament/infolists", + "version": "v3.2.6", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/infolists.git", + "reference": "3270453ce6301bba874fb205774a73da8ec51aa6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/3270453ce6301bba874fb205774a73da8ec51aa6", + "reference": "3270453ce6301bba874fb205774a73da8ec51aa6", + "shasum": "" + }, + "require": { + "filament/actions": "self.version", + "filament/support": "self.version", + "illuminate/console": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/database": "^10.0", + "illuminate/filesystem": "^10.0", + "illuminate/support": "^10.0", + "illuminate/view": "^10.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Infolists\\InfolistsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Infolists\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful read-only infolists to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-01-19T14:01:24+00:00" + }, + { + "name": "filament/notifications", + "version": "v3.2.6", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/notifications.git", + "reference": "c5f4f51d949fafc52643f2be654a4da92422836c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/c5f4f51d949fafc52643f2be654a4da92422836c", + "reference": "c5f4f51d949fafc52643f2be654a4da92422836c", + "shasum": "" + }, + "require": { + "filament/actions": "self.version", + "filament/support": "self.version", + "illuminate/contracts": "^10.0", + "illuminate/filesystem": "^10.0", + "illuminate/notifications": "^10.0", + "illuminate/support": "^10.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Notifications\\NotificationsServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Testing/Autoload.php" + ], + "psr-4": { + "Filament\\Notifications\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful notifications to any Livewire app.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-01-19T14:01:21+00:00" + }, + { + "name": "filament/support", + "version": "v3.2.6", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/support.git", + "reference": "bba54ccc077198761c90ba1a498099d4130cb11c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/support/zipball/bba54ccc077198761c90ba1a498099d4130cb11c", + "reference": "bba54ccc077198761c90ba1a498099d4130cb11c", + "shasum": "" + }, + "require": { + "blade-ui-kit/blade-heroicons": "^2.2.1", + "doctrine/dbal": "^3.2", + "ext-intl": "*", + "illuminate/contracts": "^10.0", + "illuminate/support": "^10.0", + "illuminate/view": "^10.0", + "livewire/livewire": "^3.2.3", + "php": "^8.1", + "ryangjchandler/blade-capture-directive": "^0.2|^0.3", + "spatie/color": "^1.5", + "spatie/invade": "^1.0|^2.0", + "spatie/laravel-package-tools": "^1.9", + "symfony/html-sanitizer": "^6.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Support\\SupportServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Filament\\Support\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Core helper methods and foundation code for all Filament packages.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-01-19T14:01:22+00:00" + }, + { + "name": "filament/tables", + "version": "v3.2.6", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/tables.git", + "reference": "11605d47690cdd04226e1770d07902cf84c38f6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/11605d47690cdd04226e1770d07902cf84c38f6f", + "reference": "11605d47690cdd04226e1770d07902cf84c38f6f", + "shasum": "" + }, + "require": { + "filament/actions": "self.version", + "filament/forms": "self.version", + "filament/support": "self.version", + "illuminate/console": "^10.0", + "illuminate/contracts": "^10.0", + "illuminate/database": "^10.0", + "illuminate/filesystem": "^10.0", + "illuminate/support": "^10.0", + "illuminate/view": "^10.0", + "kirschbaum-development/eloquent-power-joins": "^3.0", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Tables\\TablesServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Tables\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful tables to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-01-19T14:01:23+00:00" + }, + { + "name": "filament/widgets", + "version": "v3.2.6", + "source": { + "type": "git", + "url": "https://github.com/filamentphp/widgets.git", + "reference": "9fae19f86f50b71b9d47c87305d742ee962af573" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/9fae19f86f50b71b9d47c87305d742ee962af573", + "reference": "9fae19f86f50b71b9d47c87305d742ee962af573", + "shasum": "" + }, + "require": { + "filament/support": "self.version", + "php": "^8.1", + "spatie/laravel-package-tools": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Filament\\Widgets\\WidgetsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Filament\\Widgets\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Easily add beautiful dashboard widgets to any Livewire component.", + "homepage": "https://github.com/filamentphp/filament", + "support": { + "issues": "https://github.com/filamentphp/filament/issues", + "source": "https://github.com/filamentphp/filament" + }, + "time": "2024-01-15T20:39:18+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1722,205 +1749,62 @@ ], "authors": [ { - "name": "Chris Fidao", - "email": "fideloper@gmail.com" - } - ], - "description": "Set trusted proxies for Laravel", - "keywords": [ - "load balancing", - "proxy", - "trusted proxy" - ], - "support": { - "issues": "https://github.com/fideloper/TrustedProxy/issues", - "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.2" - }, - "time": "2022-02-09T13:33:34+00:00" - }, - { - "name": "graham-campbell/binput", - "version": "v6.2.0", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Laravel-Binput.git", - "reference": "9c0df9c3d0481a495bdc0638ee67bc199d70e3b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Binput/zipball/9c0df9c3d0481a495bdc0638ee67bc199d70e3b4", - "reference": "9c0df9c3d0481a495bdc0638ee67bc199d70e3b4", - "shasum": "" - }, - "require": { - "graham-campbell/security": "^6.2", - "illuminate/contracts": "^5.5|^6.0", - "illuminate/http": "^5.5|^6.0", - "illuminate/support": "^5.5|^6.0", - "php": "^7.1.3" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.1", - "graham-campbell/testbench": "^5.2", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.5|^7.0|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" }, - "laravel": { - "providers": [ - "GrahamCampbell\\Binput\\BinputServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "GrahamCampbell\\Binput\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Graham Campbell", - "email": "graham@alt-three.com" + "name": "Barryvdh", + "email": "barryvdh@gmail.com" } ], - "description": "Binput Is An Input Protector For Laravel 5", + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", "keywords": [ - "Binput", - "Graham Campbell", - "GrahamCampbell", - "Laravel Binput", - "Laravel-Binput", - "better", - "better input", - "framework", - "input", + "cors", "laravel", - "security" + "symfony" ], "support": { - "issues": "https://github.com/GrahamCampbell/Laravel-Binput/issues", - "source": "https://github.com/GrahamCampbell/Laravel-Binput/tree/master" + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" }, - "time": "2019-08-26T16:30:03+00:00" - }, - { - "name": "graham-campbell/exceptions", - "version": "v11.3.0", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Laravel-Exceptions.git", - "reference": "c33548417cf9903a049c7311ab57352a7e720b33" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Exceptions/zipball/c33548417cf9903a049c7311ab57352a7e720b33", - "reference": "c33548417cf9903a049c7311ab57352a7e720b33", - "shasum": "" - }, - "require": { - "illuminate/contracts": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/support": "5.5.*|5.6.*|5.7.*|5.8.*", - "php": "^7.1.3", - "psr/log": "^1.0", - "symfony/console": "^3.3|^4.0", - "symfony/debug": "^3.3|^4.0", - "symfony/http-foundation": "^3.3|^4.0" - }, - "require-dev": { - "filp/whoops": "^2.1.4", - "graham-campbell/analyzer": "^2.1", - "graham-campbell/testbench": "^5.2", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.5|^7.0|^8.0" - }, - "suggest": { - "filp/whoops": "Enables use of the debug displayer." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "11.3-dev" + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" }, - "laravel": { - "providers": [ - "GrahamCampbell\\Exceptions\\ExceptionsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "GrahamCampbell\\Exceptions\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Graham Campbell", - "email": "graham@alt-three.com" + "url": "https://github.com/barryvdh", + "type": "github" } ], - "description": "Provides A Powerful Error Response System For Both Development And Production", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Laravel Exceptions", - "Laravel-Exceptions", - "error", - "errors", - "exception", - "exceptions", - "framework", - "laravel", - "whoops" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Laravel-Exceptions/issues", - "source": "https://github.com/GrahamCampbell/Laravel-Exceptions/tree/v11.3.0" - }, - "time": "2019-06-03T06:57:27+00:00" + "time": "2023-10-12T05:21:21+00:00" }, { - "name": "graham-campbell/guzzle-factory", - "version": "v3.0.4", + "name": "graham-campbell/result-type", + "version": "v1.1.2", "source": { "type": "git", - "url": "https://github.com/GrahamCampbell/Guzzle-Factory.git", - "reference": "618cf7220b177c6d9939a36331df937739ffc596" + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Guzzle-Factory/zipball/618cf7220b177c6d9939a36331df937739ffc596", - "reference": "618cf7220b177c6d9939a36331df937739ffc596", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.2", - "php": "^7.0|^8.0" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "graham-campbell/analyzer": "^2.4", - "phpunit/phpunit": "^6.5|^7.0|^8.0" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, "autoload": { "psr-4": { - "GrahamCampbell\\GuzzleFactory\\": "src/" + "GrahamCampbell\\ResultType\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1930,21 +1814,21 @@ "authors": [ { "name": "Graham Campbell", - "email": "graham@alt-three.com" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], - "description": "Provides A Simple Guzzle Factory With Good Defaults", + "description": "An Implementation Of The Result Type", "keywords": [ "Graham Campbell", "GrahamCampbell", - "Guzzle", - "Guzzle Factory", - "Guzzle-Factory", - "http" + "Result Type", + "Result-Type", + "result" ], "support": { - "issues": "https://github.com/GrahamCampbell/Guzzle-Factory/issues", - "source": "https://github.com/GrahamCampbell/Guzzle-Factory/tree/3.0" + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" }, "funding": [ { @@ -1952,271 +1836,55 @@ "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/guzzle-factory", + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", "type": "tidelift" } ], - "time": "2020-05-02T14:45:48+00:00" - }, - { - "name": "graham-campbell/markdown", - "version": "v11.2.1", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Laravel-Markdown.git", - "reference": "7ead48c43098b562707a30650843d4279786b0d9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Markdown/zipball/7ead48c43098b562707a30650843d4279786b0d9", - "reference": "7ead48c43098b562707a30650843d4279786b0d9", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^5.5|^6.0|^7.0", - "illuminate/support": "^5.5|^6.0|^7.0", - "illuminate/view": "^5.5|^6.0|^7.0", - "league/commonmark": "^1.3", - "php": "^7.1.3" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.4", - "graham-campbell/testbench": "^5.4", - "mockery/mockery": "^1.3.1", - "phpunit/phpunit": "^6.5|^7.0|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "11.2-dev" - }, - "laravel": { - "providers": [ - "GrahamCampbell\\Markdown\\MarkdownServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "GrahamCampbell\\Markdown\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "graham@alt-three.com" - } - ], - "description": "Markdown Is A CommonMark Wrapper For Laravel", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Laravel Markdown", - "Laravel-Markdown", - "common mark", - "commonmark", - "framework", - "laravel", - "markdown" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Laravel-Markdown/issues", - "source": "https://github.com/GrahamCampbell/Laravel-Markdown/tree/11.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://www.patreon.com/GrahamJCampbell", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/markdown", - "type": "tidelift" - } - ], - "time": "2020-04-14T14:11:12+00:00" - }, - { - "name": "graham-campbell/security", - "version": "v6.2.0", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Laravel-Security.git", - "reference": "93b3e09774987916f9a91071b2e53738180f2ba8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Security/zipball/93b3e09774987916f9a91071b2e53738180f2ba8", - "reference": "93b3e09774987916f9a91071b2e53738180f2ba8", - "shasum": "" - }, - "require": { - "graham-campbell/security-core": "^1.0", - "illuminate/contracts": "^5.5|^6.0", - "illuminate/support": "^5.5|^6.0", - "php": "^7.1.3" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.1", - "graham-campbell/testbench": "^5.2", - "phpunit/phpunit": "^6.5|^7.0|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - }, - "laravel": { - "providers": [ - "GrahamCampbell\\Security\\SecurityServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "GrahamCampbell\\Security\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "graham@alt-three.com" - } - ], - "description": "Security Is A Port Of The Security Class From Codeigniter 3 For Laravel 5", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Laravel Security", - "Laravel-Security", - "codeigniter", - "framework", - "laravel", - "security" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Laravel-Security/issues", - "source": "https://github.com/GrahamCampbell/Laravel-Security/tree/master" - }, - "time": "2019-08-26T16:30:00+00:00" - }, - { - "name": "graham-campbell/security-core", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Security-Core.git", - "reference": "3b14e58dba84b0238a3409818d6f67acc5c00bf9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Security-Core/zipball/3b14e58dba84b0238a3409818d6f67acc5c00bf9", - "reference": "3b14e58dba84b0238a3409818d6f67acc5c00bf9", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.4", - "phpunit/phpunit": "^6.5|^7.5|^8.4|^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "GrahamCampbell\\SecurityCore\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "graham@alt-three.com" - } - ], - "description": "Security Core Is A Port Of The Security Class From Codeigniter 3 For General Use", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Security Core", - "Security-Core", - "codeigniter", - "framework", - "laravel", - "security" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Security-Core/issues", - "source": "https://github.com/GrahamCampbell/Security-Core/tree/v1.0.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://www.patreon.com/GrahamJCampbell", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/security-core", - "type": "tidelift" - } - ], - "time": "2020-04-13T13:30:49+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "6.5.8", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.9", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17" + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "6.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -2269,19 +1937,20 @@ } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5.8" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -2297,33 +1966,37 @@ "type": "tidelift" } ], - "time": "2022-06-20T22:16:07+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -2360,7 +2033,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.3" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -2376,42 +2049,48 @@ "type": "tidelift" } ], - "time": "2023-05-21T12:31:43+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.9.1", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/e4490cabc77465aaee90b20cfc9a770f8c04be6b", - "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Psr7\\": "src/" } @@ -2450,6 +2129,11 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -2465,7 +2149,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.9.1" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -2481,85 +2165,41 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:00:37+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", + "name": "guzzlehttp/uri-template", + "version": "v1.0.3", "source": { "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" + "url": "https://github.com/guzzle/uri-template.git", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" }, "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "support": { - "issues": "https://github.com/JakubOnderka/PHP-Console-Color/issues", - "source": "https://github.com/JakubOnderka/PHP-Console-Color/tree/master" - }, - "abandoned": "php-parallel-lint/php-console-color", - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", "autoload": { "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" + "GuzzleHttp\\UriTemplate\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2568,201 +2208,185 @@ ], "authors": [ { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "description": "Highlight PHP code in terminal", - "support": { - "issues": "https://github.com/JakubOnderka/PHP-Console-Highlighter/issues", - "source": "https://github.com/JakubOnderka/PHP-Console-Highlighter/tree/master" - }, - "abandoned": "php-parallel-lint/php-console-highlighter", - "time": "2018-09-29T18:48:56+00:00" - }, - { - "name": "jenssegers/date", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/jenssegers/date.git", - "reference": "58393b0544fc2525b3fcd02aa4c989857107e05a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jenssegers/date/zipball/58393b0544fc2525b3fcd02aa4c989857107e05a", - "reference": "58393b0544fc2525b3fcd02aa4c989857107e05a", - "shasum": "" - }, - "require": { - "nesbot/carbon": "^1.0|^2.0", - "php": ">=5.6", - "symfony/translation": "^2.7|^3.0|^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0|^6.0|^7.0", - "satooshi/php-coveralls": "^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, - "laravel": { - "providers": [ - "Jenssegers\\Date\\DateServiceProvider" - ], - "aliases": { - "Date": "Jenssegers\\Date\\Date" - } - } - }, - "autoload": { - "psr-4": { - "Jenssegers\\Date\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Jens Segers", - "homepage": "https://jenssegers.com" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" } ], - "description": "A date library to help you work with dates in different languages", - "homepage": "https://github.com/jenssegers/date", + "description": "A polyfill class for uri_template of PHP", "keywords": [ - "carbon", - "date", - "datetime", - "i18n", - "laravel", - "time", - "translation" + "guzzlehttp", + "uri-template" ], "support": { - "issues": "https://github.com/jenssegers/date/issues", - "source": "https://github.com/jenssegers/date/tree/master" - }, - "time": "2019-03-10T08:50:58+00:00" - }, - { - "name": "kylekatarnls/update-helper", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/kylekatarnls/update-helper.git", - "reference": "429be50660ed8a196e0798e5939760f168ec8ce9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kylekatarnls/update-helper/zipball/429be50660ed8a196e0798e5939760f168ec8ce9", - "reference": "429be50660ed8a196e0798e5939760f168ec8ce9", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", - "php": ">=5.3.0" - }, - "require-dev": { - "codeclimate/php-test-reporter": "dev-master", - "composer/composer": "2.0.x-dev || ^2.0.0-dev", - "phpunit/phpunit": ">=4.8.35 <6.0" - }, - "type": "composer-plugin", - "extra": { - "class": "UpdateHelper\\ComposerPlugin" - }, - "autoload": { - "psr-0": { - "UpdateHelper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kyle", - "email": "kylekatarnls@gmail.com" - } - ], - "description": "Update helper", - "support": { - "issues": "https://github.com/kylekatarnls/update-helper/issues", - "source": "https://github.com/kylekatarnls/update-helper/tree/1.2.1" + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" }, "funding": [ { - "url": "https://github.com/kylekatarnls", + "url": "https://github.com/GrahamCampbell", "type": "github" }, { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" + "url": "https://github.com/Nyholm", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", "type": "tidelift" } ], - "time": "2020-04-07T20:44:10+00:00" + "time": "2023-12-03T19:50:20+00:00" }, { - "name": "laravel/framework", - "version": "v5.7.29", + "name": "kirschbaum-development/eloquent-power-joins", + "version": "3.4.0", "source": { "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "2555bf6ef6e6739e5f49f4a5d40f6264c57abd56" + "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git", + "reference": "9238fcb53d777265ee9d8d139810e2cadecde079" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/2555bf6ef6e6739e5f49f4a5d40f6264c57abd56", - "reference": "2555bf6ef6e6739e5f49f4a5d40f6264c57abd56", + "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/9238fcb53d777265ee9d8d139810e2cadecde079", + "reference": "9238fcb53d777265ee9d8d139810e2cadecde079", "shasum": "" }, "require": { - "doctrine/inflector": "^1.1", - "dragonmantank/cron-expression": "^2.0", - "erusev/parsedown": "^1.7", + "illuminate/database": "^8.0|^9.0|^10.0", + "illuminate/support": "^8.0|^9.0|^10.0", + "php": "^8.0" + }, + "require-dev": { + "laravel/legacy-factories": "^1.0@dev", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0", + "phpunit/phpunit": "^8.0|^9.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Kirschbaum\\PowerJoins\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Luis Dalmolin", + "email": "luis.nh@gmail.com", + "role": "Developer" + } + ], + "description": "The Laravel magic applied to joins.", + "homepage": "https://github.com/kirschbaum-development/eloquent-power-joins", + "keywords": [ + "eloquent", + "join", + "laravel", + "mysql" + ], + "support": { + "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues", + "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/3.4.0" + }, + "time": "2023-12-07T10:44:41+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.41.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "da31969bd35e6ee0bbcd9e876f88952dc754b012" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/da31969bd35e6ee0bbcd9e876f88952dc754b012", + "reference": "da31969bd35e6ee0bbcd9e876f88952dc754b012", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", "ext-mbstring": "*", "ext-openssl": "*", - "laravel/nexmo-notification-channel": "^1.0", - "laravel/slack-notification-channel": "^1.0", - "league/flysystem": "^1.0.8", - "monolog/monolog": "^1.12", - "nesbot/carbon": "^1.26.3", - "opis/closure": "^3.1", - "php": "^7.1.3", - "psr/container": "^1.0", - "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7", - "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.1", - "symfony/debug": "^4.1", - "symfony/finder": "^4.1", - "symfony/http-foundation": "^4.1", - "symfony/http-kernel": "^4.1", - "symfony/process": "^4.1", - "symfony/routing": "^4.1", - "symfony/var-dumper": "^4.1", - "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^2.2" + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", + "nunomaduro/termwind": "^1.13", + "php": "^8.1", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^6.2", + "symfony/error-handler": "^6.2", + "symfony/finder": "^6.2", + "symfony/http-foundation": "^6.4", + "symfony/http-kernel": "^6.2", + "symfony/mailer": "^6.2", + "symfony/mime": "^6.2", + "symfony/process": "^6.2", + "symfony/routing": "^6.2", + "symfony/uid": "^6.2", + "symfony/var-dumper": "^6.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" }, "conflict": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", "tightenco/collect": "<5.5.33" }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, "replace": { "illuminate/auth": "self.version", "illuminate/broadcasting": "self.version", "illuminate/bus": "self.version", "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", "illuminate/config": "self.version", "illuminate/console": "self.version", "illuminate/container": "self.version", @@ -2775,70 +2399,103 @@ "illuminate/hashing": "self.version", "illuminate/http": "self.version", "illuminate/log": "self.version", + "illuminate/macroable": "self.version", "illuminate/mail": "self.version", "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", "illuminate/queue": "self.version", "illuminate/redis": "self.version", "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", + "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "^3.0", - "doctrine/dbal": "^2.6", - "filp/whoops": "^2.1.4", - "guzzlehttp/guzzle": "^6.3", - "league/flysystem-cached-adapter": "^1.0", - "mockery/mockery": "^1.0", - "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.7.*", - "pda/pheanstalk": "^3.0|^4.0", - "phpunit/phpunit": "^7.5", - "predis/predis": "^1.1.1", - "symfony/css-selector": "^4.1", - "symfony/dom-crawler": "^4.1", - "true/punycode": "^2.1" + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "doctrine/dbal": "^3.5.1", + "ext-gmp": "*", + "fakerphp/faker": "^1.21", + "guzzlehttp/guzzle": "^7.5", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.5.1", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.18", + "pda/pheanstalk": "^4.0", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4", + "symfony/psr-http-message-bridge": "^2.0" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", - "ext-pcntl": "Required to use all features of the queue worker.", + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", "ext-posix": "Required to use all features of the queue worker.", - "filp/whoops": "Required for friendly error pages in development (^2.1.4).", - "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", - "laravel/tinker": "Required to use the tinker console command (^1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", - "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", - "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", - "moontoast/math": "Required to use ordered UUIDs (^1.1).", - "nexmo/client": "Required to use the Nexmo transport (^1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^3.0|^4.0).", - "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.1).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.0)." + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.5.1).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "predis/predis": "Required to use the predis connector (^2.0.2).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7-dev" + "dev-master": "10.x-dev" } }, "autoload": { "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], "psr-4": { - "Illuminate\\": "src/Illuminate/" + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -2861,313 +2518,241 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2020-04-14T14:16:19+00:00" + "time": "2024-01-16T15:23:58+00:00" }, { - "name": "laravel/nexmo-notification-channel", - "version": "v1.0.1", + "name": "laravel/prompts", + "version": "v0.1.15", "source": { "type": "git", - "url": "https://github.com/laravel/vonage-notification-channel.git", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48" + "url": "https://github.com/laravel/prompts.git", + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/vonage-notification-channel/zipball/03edd42a55b306ff980c9950899d5a2b03260d48", - "reference": "03edd42a55b306ff980c9950899d5a2b03260d48", - "shasum": "" - }, - "require": { - "nexmo/client": "^1.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\NexmoChannelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Nexmo Notification Channel for laravel.", - "keywords": [ - "laravel", - "nexmo", - "notifications" - ], - "support": { - "issues": "https://github.com/laravel/vonage-notification-channel/issues", - "source": "https://github.com/laravel/vonage-notification-channel/tree/v1.0.1" - }, - "abandoned": "laravel/vonage-notification-channel", - "time": "2018-12-04T12:57:08+00:00" - }, - { - "name": "laravel/slack-notification-channel", - "version": "v1.0.3", - "source": { - "type": "git", - "url": "https://github.com/laravel/slack-notification-channel.git", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/slack-notification-channel/zipball/6e164293b754a95f246faf50ab2bbea3e4923cc9", - "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": "^7.1.3" - }, - "require-dev": { - "illuminate/notifications": "~5.7", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Illuminate\\Notifications\\SlackChannelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Notifications\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Slack Notification Channel for laravel.", - "keywords": [ - "laravel", - "notifications", - "slack" - ], - "support": { - "issues": "https://github.com/laravel/slack-notification-channel/issues", - "source": "https://github.com/laravel/slack-notification-channel/tree/1.0" - }, - "time": "2018-12-12T13:12:06+00:00" - }, - { - "name": "laravel/tinker", - "version": "v1.0.10", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/ad571aacbac1539c30d480908f9d0c9614eaf1a7", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7", - "shasum": "" - }, - "require": { - "illuminate/console": "~5.1|^6.0", - "illuminate/contracts": "~5.1|^6.0", - "illuminate/support": "~5.1|^6.0", - "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*|0.9.*", - "symfony/var-dumper": "~3.0|~4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (~5.1)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Tinker\\TinkerServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Tinker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Powerful REPL for the Laravel framework.", - "keywords": [ - "REPL", - "Tinker", - "laravel", - "psysh" - ], - "support": { - "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v1.0.10" - }, - "time": "2019-08-07T15:10:45+00:00" - }, - { - "name": "lcobucci/jwt", - "version": "3.4.6", - "source": { - "type": "git", - "url": "https://github.com/lcobucci/jwt.git", - "reference": "3ef8657a78278dfeae7707d51747251db4176240" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/3ef8657a78278dfeae7707d51747251db4176240", - "reference": "3ef8657a78278dfeae7707d51747251db4176240", + "url": "https://api.github.com/repos/laravel/prompts/zipball/d814a27514d99b03c85aa42b22cfd946568636c1", + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1", "shasum": "" }, "require": { "ext-mbstring": "*", - "ext-openssl": "*", - "php": "^5.6 || ^7.0" + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" }, "require-dev": { - "mikey179/vfsstream": "~1.5", - "phpmd/phpmd": "~2.2", - "phpunit/php-invoker": "~1.1", - "phpunit/phpunit": "^5.7 || ^7.3", - "squizlabs/php_codesniffer": "~2.3" + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" }, "suggest": { - "lcobucci/clock": "*" + "ext-pcntl": "Required for the spinner to be animated." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "0.1.x-dev" } }, "autoload": { "files": [ - "compat/class-aliases.php", - "compat/json-exception-polyfill.php", - "compat/lcobucci-clock-polyfill.php" + "src/helpers.php" ], "psr-4": { - "Lcobucci\\JWT\\": "src" + "Laravel\\Prompts\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Luís Otávio Cobucci Oblonczyk", - "email": "lcobucci@gmail.com", - "role": "Developer" - } - ], - "description": "A simple library to work with JSON Web Token and JSON Web Signature", - "keywords": [ - "JWS", - "jwt" + "MIT" ], "support": { - "issues": "https://github.com/lcobucci/jwt/issues", - "source": "https://github.com/lcobucci/jwt/tree/3.4.6" + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.15" }, - "funding": [ - { - "url": "https://github.com/lcobucci", - "type": "github" - }, - { - "url": "https://www.patreon.com/lcobucci", - "type": "patreon" - } - ], - "time": "2021-09-28T19:18:28+00:00" + "time": "2023-12-29T22:37:42+00:00" }, { - "name": "league/commonmark", - "version": "1.6.7", + "name": "laravel/sanctum", + "version": "v3.3.3", "source": { "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b" + "url": "https://github.com/laravel/sanctum.git", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/2b8185c13bc9578367a5bf901881d1c1b5bbd09b", - "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.21|^10.0", + "illuminate/contracts": "^9.21|^10.0", + "illuminate/database": "^9.21|^10.0", + "illuminate/support": "^9.21|^10.0", + "php": "^8.0.2" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^7.28.2|^8.8.3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2023-12-19T18:44:48+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-11-08T14:08:06+00:00" + }, + { + "name": "league/commonmark", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "scrutinizer/ocular": "1.7.*" + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "cebe/markdown": "~1.0", - "commonmark/commonmark.js": "0.29.2", - "erusev/parsedown": "~1.0", + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", "ext-json": "*", "github/gfm": "0.29.0", - "michelf/php-markdown": "~1.4", - "mikehaertl/php-shellcommand": "^1.4", - "phpstan/phpstan": "^0.12.90", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.2", - "scrutinizer/ocular": "^1.5", - "symfony/finder": "^4.2" + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" }, - "bin": [ - "bin/commonmark" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + } + }, "autoload": { "psr-4": { "League\\CommonMark\\": "src" @@ -3185,7 +2770,7 @@ "role": "Lead Developer" } ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", "homepage": "https://commonmark.thephpleague.com", "keywords": [ "commonmark", @@ -3199,6 +2784,7 @@ ], "support": { "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", "issues": "https://github.com/thephpleague/commonmark/issues", "rss": "https://github.com/thephpleague/commonmark/releases.atom", "source": "https://github.com/thephpleague/commonmark" @@ -3221,58 +2807,226 @@ "type": "tidelift" } ], - "time": "2022-01-13T17:18:13+00:00" + "time": "2023-08-30T16:55:00+00:00" }, { - "name": "league/flysystem", - "version": "1.0.70", + "name": "league/config", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "585824702f534f8d3cf7fab7225e8466cc4b7493" + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/585824702f534f8d3cf7fab7225e8466cc4b7493", - "reference": "585824702f534f8d3cf7fab7225e8466cc4b7493", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "php": ">=5.5.9" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpspec/phpspec": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "phpunit/phpunit": "^5.7.26" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "1.2-dev" } }, "autoload": { "psr-4": { - "League\\Flysystem\\": "src/" + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/csv", + "version": "9.11.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/csv.git", + "reference": "33149c4bea4949aa4fa3d03fb11ed28682168b39" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/33149c4bea4949aa4fa3d03fb11ed28682168b39", + "reference": "33149c4bea4949aa4fa3d03fb11ed28682168b39", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.1.2" + }, + "require-dev": { + "doctrine/collections": "^2.1.3", + "ext-dom": "*", + "ext-xdebug": "*", + "friendsofphp/php-cs-fixer": "^v3.22.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/phpstan": "^1.10.26", + "phpstan/phpstan-deprecation-rules": "^1.1.3", + "phpstan/phpstan-phpunit": "^1.3.13", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^10.3.1", + "symfony/var-dumper": "^6.3.3" + }, + "suggest": { + "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", + "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "League\\Csv\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://github.com/nyamsprod/", + "role": "Developer" + } + ], + "description": "CSV data manipulation made easy in PHP", + "homepage": "https://csv.thephpleague.com", + "keywords": [ + "convert", + "csv", + "export", + "filter", + "import", + "read", + "transform", + "write" + ], + "support": { + "docs": "https://csv.thephpleague.com", + "issues": "https://github.com/thephpleague/csv/issues", + "rss": "https://github.com/thephpleague/csv/releases.atom", + "source": "https://github.com/thephpleague/csv" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2023-09-23T10:09:54+00:00" + }, + { + "name": "league/flysystem", + "version": "3.23.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.220.0", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^3.0.34", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -3282,84 +3036,63 @@ "authors": [ { "name": "Frank de Jonge", - "email": "info@frenky.net" + "email": "info@frankdejonge.nl" } ], - "description": "Filesystem abstraction: Many filesystems, one API.", + "description": "File storage abstraction for PHP", "keywords": [ - "Cloud Files", "WebDAV", - "abstraction", "aws", "cloud", - "copy.com", - "dropbox", - "file systems", + "file", "files", "filesystem", "filesystems", "ftp", - "rackspace", - "remote", "s3", "sftp", "storage" ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.0.70" + "source": "https://github.com/thephpleague/flysystem/tree/3.23.0" }, "funding": [ { - "url": "https://offset.earth/frankdejonge", - "type": "other" + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" } ], - "time": "2020-07-26T07:20:36+00:00" + "time": "2023-12-04T10:16:17+00:00" }, { - "name": "mccool/laravel-auto-presenter", - "version": "7.7.0", + "name": "league/flysystem-local", + "version": "3.23.0", "source": { "type": "git", - "url": "https://github.com/laravel-auto-presenter/laravel-auto-presenter.git", - "reference": "e139110a82c8a1573d4015b4f6d600d79e1d33e5" + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel-auto-presenter/laravel-auto-presenter/zipball/e139110a82c8a1573d4015b4f6d600d79e1d33e5", - "reference": "e139110a82c8a1573d4015b4f6d600d79e1d33e5", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b", "shasum": "" }, "require": { - "illuminate/container": "^5.5 || ^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/contracts": "^5.5 || ^6.0 || ^7.0 || ^8.0|| ^9.0", - "illuminate/events": "^5.5 || ^6.0 || ^7.0 || ^8.0|| ^9.0", - "illuminate/pagination": "^5.5 || ^6.0 || ^7.0 || ^8.0|| ^9.0", - "illuminate/support": "^5.5 || ^6.0 || ^7.0 || ^8.0|| ^9.0", - "illuminate/view": "^5.5 || ^6.0 || ^7.0 || ^8.0|| ^9.0", - "php": "^7.1.3 || ^8.0" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.4 || ^3.0", - "graham-campbell/testbench": "^5.4", - "mockery/mockery": "^1.3.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.7" + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.7-dev" - }, - "laravel": { - "providers": [ - "McCool\\LaravelAutoPresenter\\AutoPresenterServiceProvider" - ] - } - }, "autoload": { "psr-4": { - "McCool\\LaravelAutoPresenter\\": "src/" + "League\\Flysystem\\Local\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -3368,86 +3101,467 @@ ], "authors": [ { - "name": "Shawn McCool", - "email": "shawn@mccool.email", - "homepage": "https://github.com/ShawnMcCool" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" } ], - "description": "A system for auto-decorating models with presenter objects.", + "description": "Local filesystem adapter for Flysystem.", "keywords": [ - "eloquent", - "laravel", - "lpm", - "presenter" + "Flysystem", + "file", + "files", + "filesystem", + "local" ], "support": { - "issues": "https://github.com/laravel-auto-presenter/laravel-auto-presenter/issues", - "source": "https://github.com/laravel-auto-presenter/laravel-auto-presenter/tree/7.7.0" + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" + "url": "https://ecologi.com/frankdejonge", + "type": "custom" }, { - "url": "https://tidelift.com/funding/github/packagist/mccool/laravel-auto-presenter", - "type": "tidelift" + "url": "https://github.com/frankdejonge", + "type": "github" } ], - "time": "2022-02-09T09:14:24+00:00" + "time": "2023-12-04T10:14:46+00:00" }, { - "name": "monolog/monolog", - "version": "1.27.1", + "name": "league/mime-type-detection", + "version": "1.14.0", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1" + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2023-10-17T14:13:20+00:00" + }, + { + "name": "league/uri", + "version": "7.4.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/bf414ba956d902f5d98bf9385fcf63954f09dce5", + "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5", + "shasum": "" + }, + "require": { + "league/uri-interfaces": "^7.3", + "php": "^8.1" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-fileinfo": "to create Data URI from file contennts", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", + "league/uri-components": "Needed to easily manipulate URI objects components", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri/tree/7.4.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2023-12-01T06:24:25+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "7.4.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/bd8c487ec236930f7bbc42b8d374fa882fbba0f3", + "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^8.1", + "psr/http-factory": "^1", + "psr/http-message": "^1.1 || ^2.0" + }, + "suggest": { + "ext-bcmath": "to improve IPV4 host parsing", + "ext-gmp": "to improve IPV4 host parsing", + "ext-intl": "to handle IDN host with the best performance", + "php-64bit": "to improve IPV4 host parsing", + "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interfaces and classes for URI representation and interaction", + "homepage": "https://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri-src/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2023-11-24T15:40:42+00:00" + }, + { + "name": "livewire/livewire", + "version": "v3.3.5", + "source": { + "type": "git", + "url": "https://github.com/livewire/livewire.git", + "reference": "1ef880fbcdc7b6e5e405cc9135a62cd5fdbcd06a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/livewire/zipball/1ef880fbcdc7b6e5e405cc9135a62cd5fdbcd06a", + "reference": "1ef880fbcdc7b6e5e405cc9135a62cd5fdbcd06a", + "shasum": "" + }, + "require": { + "illuminate/database": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "illuminate/validation": "^10.0|^11.0", + "league/mime-type-detection": "^1.9", + "php": "^8.1", + "symfony/http-kernel": "^6.2|^7.0" + }, + "require-dev": { + "calebporzio/sushi": "^2.1", + "laravel/framework": "^10.0|^11.0", + "laravel/prompts": "^0.1.6", + "mockery/mockery": "^1.3.1", + "orchestra/testbench": "^8.0|^9.0", + "orchestra/testbench-dusk": "^8.0|^9.0", + "phpunit/phpunit": "^10.4", + "psy/psysh": "^0.11.22|^0.12" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Livewire\\LivewireServiceProvider" + ], + "aliases": { + "Livewire": "Livewire\\Livewire" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Livewire\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "A front-end framework for Laravel.", + "support": { + "issues": "https://github.com/livewire/livewire/issues", + "source": "https://github.com/livewire/livewire/tree/v3.3.5" + }, + "funding": [ + { + "url": "https://github.com/livewire", + "type": "github" + } + ], + "time": "2024-01-02T14:29:17+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.8.1", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" + }, + "time": "2023-05-10T11:58:31+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -3461,11 +3575,11 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", @@ -3473,7 +3587,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.27.1" + "source": "https://github.com/Seldaek/monolog/tree/3.5.0" }, "funding": [ { @@ -3485,108 +3599,70 @@ "type": "tidelift" } ], - "time": "2022-06-09T08:53:42+00:00" + "time": "2023-10-27T15:32:31+00:00" }, { - "name": "mtdowling/jmespath.php", - "version": "2.6.1", + "name": "nesbot/carbon", + "version": "2.72.1", "source": { "type": "git", - "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", - "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0 || ^8.0", - "symfony/polyfill-mbstring": "^1.17" + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "provide": { + "psr/clock-implementation": "1.0" }, "require-dev": { - "composer/xdebug-handler": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^7.5.15" + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" }, "bin": [ - "bin/jp.php" + "bin/carbon" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "autoload": { - "files": [ - "src/JmesPath.php" - ], - "psr-4": { - "JmesPath\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Declaratively specify how to extract elements from a JSON document", - "keywords": [ - "json", - "jsonpath" - ], - "support": { - "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" - }, - "time": "2021-06-14T00:11:39+00:00" - }, - { - "name": "nesbot/carbon", - "version": "1.39.1", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4be0c005164249208ce1b5ca633cd57bdd42ff33", - "reference": "4be0c005164249208ce1b5ca633cd57bdd42ff33", - "shasum": "" - }, - "require": { - "kylekatarnls/update-helper": "^1.1", - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" - }, - "require-dev": { - "composer/composer": "^1.2", - "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "^4.8.35 || ^5.7" - }, - "bin": [ - "bin/upgrade-carbon" - ], - "type": "library", - "extra": { - "update-helper": "Carbon\\Upgrade", + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { "psr-4": { - "": "src/" + "Carbon\\": "src/Carbon/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3597,337 +3673,63 @@ { "name": "Brian Nesbitt", "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" } ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", "keywords": [ "date", "datetime", "time" ], "support": { + "docs": "https://carbon.nesbot.com/docs", "issues": "https://github.com/briannesbitt/Carbon/issues", "source": "https://github.com/briannesbitt/Carbon" }, - "time": "2019-10-14T05:51:36+00:00" - }, - { - "name": "nexmo/client", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/Nexmo/nexmo-php-complete.git", - "reference": "c6d11d953c8c5594590bb9ebaba9616e76948f93" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Nexmo/nexmo-php-complete/zipball/c6d11d953c8c5594590bb9ebaba9616e76948f93", - "reference": "c6d11d953c8c5594590bb9ebaba9616e76948f93", - "shasum": "" - }, - "require": { - "nexmo/client-core": "^1.0", - "php": ">=5.6", - "php-http/guzzle6-adapter": "^1.0" - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Tim Lytle", - "email": "tim@nexmo.com", - "homepage": "http://twitter.com/tjlytle", - "role": "Developer" + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" }, { - "name": "Michael Heap", - "email": "michael.heap@vonage.com", - "role": "Developer" + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" }, { - "name": "Lorna Mitchell", - "email": "lorna.mitchell@vonage.com", - "role": "Developer" + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" } ], - "description": "PHP Client for using Nexmo's API.", - "support": { - "email": "devrel@nexmo.com", - "source": "https://github.com/Nexmo/nexmo-php-complete/tree/1.9.1" - }, - "time": "2019-11-26T15:25:11+00:00" + "time": "2023-12-08T23:47:49+00:00" }, { - "name": "nexmo/client-core", - "version": "1.8.1", + "name": "nette/schema", + "version": "v1.2.5", "source": { "type": "git", - "url": "https://github.com/Nexmo/nexmo-php.git", - "reference": "182d41a02ebd3e4be147baea45458ccfe2f528c4" + "url": "https://github.com/nette/schema.git", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/182d41a02ebd3e4be147baea45458ccfe2f528c4", - "reference": "182d41a02ebd3e4be147baea45458ccfe2f528c4", + "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", "shasum": "" }, "require": { - "lcobucci/jwt": "^3.2", - "php": ">=5.6", - "php-http/client-implementation": "^1.0", - "php-http/guzzle6-adapter": "^1.0", - "zendframework/zend-diactoros": "^1.8.4 || ^2.0" + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": "7.1 - 8.3" }, "require-dev": { - "estahn/phpunit-json-assertions": "^1.0.0", - "php-http/mock-client": "^0.3.0", - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^3.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Nexmo\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tim Lytle", - "email": "tim@nexmo.com", - "homepage": "http://twitter.com/tjlytle", - "role": "Developer" - } - ], - "description": "PHP Client for using Nexmo's API.", - "support": { - "email": "devrel@nexmo.com", - "source": "https://github.com/Nexmo/nexmo-php/tree/1.8.1" - }, - "time": "2019-05-13T20:27:43+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.17.1", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" - }, - "time": "2023-08-13T19:53:39+00:00" - }, - { - "name": "opis/closure", - "version": "3.6.3", - "source": { - "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", - "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", - "shasum": "" - }, - "require": { - "php": "^5.4 || ^7.0 || ^8.0" - }, - "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.6.x-dev" - } - }, - "autoload": { - "files": [ - "functions.php" - ], - "psr-4": { - "Opis\\Closure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" - }, - { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" - } - ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "https://opis.io/closure", - "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" - ], - "support": { - "issues": "https://github.com/opis/closure/issues", - "source": "https://github.com/opis/closure/tree/3.6.3" - }, - "time": "2022-01-27T09:35:39+00:00" - }, - { - "name": "paragonie/constant_time_encoding", - "version": "v2.6.3", - "source": { - "type": "git", - "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "58c3f47f650c94ec05a151692652a868995d2938" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", - "reference": "58c3f47f650c94ec05a151692652a868995d2938", - "shasum": "" - }, - "require": { - "php": "^7|^8" - }, - "require-dev": { - "phpunit/phpunit": "^6|^7|^8|^9", - "vimeo/psalm": "^1|^2|^3|^4" - }, - "type": "library", - "autoload": { - "psr-4": { - "ParagonIE\\ConstantTime\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com", - "role": "Maintainer" - }, - { - "name": "Steve 'Sc00bz' Thomas", - "email": "steve@tobtu.com", - "homepage": "https://www.tobtu.com", - "role": "Original Developer" - } - ], - "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", - "keywords": [ - "base16", - "base32", - "base32_decode", - "base32_encode", - "base64", - "base64_decode", - "base64_encode", - "bin2hex", - "encoding", - "hex", - "hex2bin", - "rfc4648" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/constant_time_encoding/issues", - "source": "https://github.com/paragonie/constant_time_encoding" - }, - "time": "2022-06-14T06:56:20+00:00" - }, - { - "name": "php-http/guzzle6-adapter", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", - "php-http/httplug": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "php-http/adapter-integration-tests": "^0.4" + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.7" }, "type": "library", "extra": { @@ -3936,236 +3738,169 @@ } }, "autoload": { - "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" }, { - "name": "David de Boer", - "email": "david@ddeboer.nl" + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "Guzzle 6 HTTP Adapter", - "homepage": "http://httplug.io", + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", "keywords": [ - "Guzzle", - "http" + "config", + "nette" ], "support": { - "issues": "https://github.com/php-http/guzzle6-adapter/issues", - "source": "https://github.com/php-http/guzzle6-adapter/tree/master" + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.5" }, - "time": "2016-05-10T06:13:32+00:00" + "time": "2023-10-05T20:37:59+00:00" }, { - "name": "php-http/httplug", - "version": "v1.1.0", + "name": "nette/utils", + "version": "v4.0.4", "source": { "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" + "url": "https://github.com/nette/utils.git", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { - "php": ">=5.4", - "php-http/promise": "^1.0", - "psr/http-message": "^1.0" + "php": ">=8.0 <8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" }, "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/master" - }, - "time": "2016-08-31T08:30:17+00:00" - }, - { - "name": "php-http/promise", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "ef4905bfb492ff389eb7f12e26925a0f20073050" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/ef4905bfb492ff389eb7f12e26925a0f20073050", - "reference": "ef4905bfb492ff389eb7f12e26925a0f20073050", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", - "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.2.0" - }, - "time": "2023-10-24T09:20:26+00:00" - }, - { - "name": "pragmarx/google2fa", - "version": "v5.0.0", - "source": { - "type": "git", - "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "17c969c82f427dd916afe4be50bafc6299aef1b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/17c969c82f427dd916afe4be50bafc6299aef1b4", - "reference": "17c969c82f427dd916afe4be50bafc6299aef1b4", - "shasum": "" - }, - "require": { - "paragonie/constant_time_encoding": "~1.0|~2.0", - "paragonie/random_compat": ">=1", - "php": ">=5.4", - "symfony/polyfill-php56": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4|~5|~6" - }, - "type": "library", - "extra": { - "component": "package", - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "PragmaRX\\Google2FA\\": "src/", - "PragmaRX\\Google2FA\\Tests\\": "tests/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Antonio Carlos Ribeiro", - "email": "acr@antoniocarlosribeiro.com", - "role": "Creator & Designer" - } - ], - "description": "A One Time Password Authentication package, compatible with Google Authenticator.", - "keywords": [ - "2fa", - "Authentication", - "Two Factor Authentication", - "google2fa" - ], - "support": { - "issues": "https://github.com/antonioribeiro/google2fa/issues", - "source": "https://github.com/antonioribeiro/google2fa/tree/master" - }, - "time": "2019-03-19T22:44:16+00:00" - }, - { - "name": "predis/predis", - "version": "v1.1.10", - "source": { - "type": "git", - "url": "https://github.com/predis/predis.git", - "reference": "a2fb02d738bedadcffdbb07efa3a5e7bd57f8d6e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/predis/predis/zipball/a2fb02d738bedadcffdbb07efa3a5e7bd57f8d6e", - "reference": "a2fb02d738bedadcffdbb07efa3a5e7bd57f8d6e", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" }, "suggest": { - "ext-curl": "Allows access to Webdis when paired with phpiredis", - "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.4" + }, + "time": "2024-01-17T16:50:36+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.15.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.0", + "symfony/console": "^5.3.0|^6.0.0" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^1.0.", + "illuminate/console": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "laravel/pint": "^1.0.0", + "pestphp/pest": "^1.21.0", + "pestphp/pest-plugin-mock": "^1.0", + "phpstan/phpstan": "^1.4.6", + "phpstan/phpstan-strict-rules": "^1.1.0", + "symfony/var-dumper": "^5.2.7|^6.0.0", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], "psr-4": { - "Predis\\": "src/" + "Termwind\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4174,52 +3909,223 @@ ], "authors": [ { - "name": "Daniele Alessandri", - "email": "suppakilla@gmail.com", - "homepage": "http://clorophilla.net", - "role": "Creator & Maintainer" - }, - { - "name": "Till Krüss", - "homepage": "https://till.im", - "role": "Maintainer" + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" } ], - "description": "Flexible and feature-complete Redis client for PHP and HHVM", - "homepage": "http://github.com/predis/predis", + "description": "Its like Tailwind CSS, but for the console.", "keywords": [ - "nosql", - "predis", - "redis" + "cli", + "console", + "css", + "package", + "php", + "style" ], "support": { - "issues": "https://github.com/predis/predis/issues", - "source": "https://github.com/predis/predis/tree/v1.1.10" + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" }, "funding": [ { - "url": "https://github.com/sponsors/tillkruss", + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", "type": "github" } ], - "time": "2022-01-05T17:46:08+00:00" + "time": "2023-02-08T01:06:31+00:00" }, { - "name": "psr/container", - "version": "1.0.0", + "name": "openspout/openspout", + "version": "v4.23.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "url": "https://github.com/openspout/openspout.git", + "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/openspout/openspout/zipball/28f6a0e45acc3377f34c26cc3866e21f0447e0c8", + "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8", "shasum": "" }, "require": { - "php": ">=5.3.0" + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", + "ext-libxml": "*", + "ext-xmlreader": "*", + "ext-zip": "*", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + }, + "require-dev": { + "ext-zlib": "*", + "friendsofphp/php-cs-fixer": "^3.46.0", + "infection/infection": "^0.27.9", + "phpbench/phpbench": "^1.2.15", + "phpstan/phpstan": "^1.10.55", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "phpunit/phpunit": "^10.5.5" + }, + "suggest": { + "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", + "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "OpenSpout\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrien Loison", + "email": "adrien@box.com" + } + ], + "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", + "homepage": "https://github.com/openspout/openspout", + "keywords": [ + "OOXML", + "csv", + "excel", + "memory", + "odf", + "ods", + "office", + "open", + "php", + "read", + "scale", + "spreadsheet", + "stream", + "write", + "xlsx" + ], + "support": { + "issues": "https://github.com/openspout/openspout/issues", + "source": "https://github.com/openspout/openspout/tree/v4.23.0" + }, + "funding": [ + { + "url": "https://paypal.me/filippotessarotto", + "type": "custom" + }, + { + "url": "https://github.com/Slamdunk", + "type": "github" + } + ], + "time": "2024-01-09T09:30:37+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.2", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-11-12T21:59:55+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -4227,6 +4133,103 @@ "dev-master": "1.0.x-dev" } }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -4239,7 +4242,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -4253,9 +4256,111 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/master" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2017-02-14T16:28:37+00:00" + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", @@ -4314,25 +4419,25 @@ }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -4347,7 +4452,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -4361,36 +4466,36 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", - "version": "1.1.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -4411,31 +4516,31 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { "name": "psr/simple-cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -4450,7 +4555,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -4462,87 +4567,9 @@ "simple-cache" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" }, - "time": "2017-10-23T01:57:42+00:00" - }, - { - "name": "psy/psysh", - "version": "v0.9.12", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4", - "shasum": "" - }, - "require": { - "dnoegel/php-xdg-base-dir": "0.1.*", - "ext-json": "*", - "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.9.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Psy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "support": { - "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.9.12" - }, - "time": "2019-12-06T14:19:43+00:00" + "time": "2021-10-29T13:26:27+00:00" }, { "name": "ralouphie/getallheaders", @@ -4589,53 +4616,152 @@ "time": "2019-03-08T08:55:37+00:00" }, { - "name": "ramsey/uuid", - "version": "3.9.7", + "name": "ramsey/collection", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "dc75aa439eb4c1b77f5379fd958b3dc0e6014178" + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/dc75aa439eb4c1b77f5379fd958b3dc0e6014178", - "reference": "dc75aa439eb4c1b77f5379fd958b3dc0e6014178", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.5", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | ^9.99.99", - "php": "^5.4 | ^7.0 | ^8.0", - "symfony/polyfill-ctype": "^1.8" + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" }, "replace": { "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | >=2.1.0 <=2.3.2", - "mockery/mockery": "^0.9.11 | ^1", - "moontoast/math": "^1.1", - "nikic/php-parser": "<=4.5.0", + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1 | ^2.6", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpunit/phpunit": ">=4.8.36 <9.0.0 | >=9.3.0", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", "squizlabs/php_codesniffer": "^3.5", - "yoast/phpunit-polyfills": "^1.0" + "vimeo/psalm": "^4.9" }, "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, "autoload": { "files": [ "src/functions.php" @@ -4648,23 +4774,7 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ "guid", "identifier", @@ -4672,9 +4782,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "rss": "https://github.com/ramsey/uuid/releases.atom", - "source": "https://github.com/ramsey/uuid", - "wiki": "https://github.com/ramsey/uuid/wiki" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -4686,46 +4794,55 @@ "type": "tidelift" } ], - "time": "2022-12-19T21:55:10+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { - "name": "swiftmailer/swiftmailer", - "version": "v6.3.0", + "name": "ryangjchandler/blade-capture-directive", + "version": "v0.3.0", "source": { "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" + "url": "https://github.com/ryangjchandler/blade-capture-directive.git", + "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", + "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/62fd2ecb50b938a46025093bcb64fcaddd531f89", + "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89", "shasum": "" }, "require": { - "egulias/email-validator": "^2.0|^3.1", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "illuminate/contracts": "^9.0|^10.0", + "php": "^8.0", + "spatie/laravel-package-tools": "^1.9.2" }, "require-dev": { - "mockery/mockery": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.4" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses" + "nunomaduro/collision": "^6.0|^7.0", + "nunomaduro/larastan": "^2.0", + "orchestra/testbench": "^7.22|^8.0", + "pestphp/pest": "^1.21", + "pestphp/pest-plugin-laravel": "^1.1", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5", + "spatie/laravel-ray": "^1.26" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "6.2-dev" + "laravel": { + "providers": [ + "RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider" + ], + "aliases": { + "BladeCaptureDirective": "RyanChandler\\BladeCaptureDirective\\Facades\\BladeCaptureDirective" + } } }, "autoload": { - "files": [ - "lib/swift_required.php" - ] + "psr-4": { + "RyanChandler\\BladeCaptureDirective\\": "src", + "RyanChandler\\BladeCaptureDirective\\Database\\Factories\\": "database/factories" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4733,82 +4850,325 @@ ], "authors": [ { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Ryan Chandler", + "email": "support@ryangjchandler.co.uk", + "role": "Developer" } ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", + "description": "Create inline partials in your Blade templates with ease.", + "homepage": "https://github.com/ryangjchandler/blade-capture-directive", "keywords": [ - "email", - "mail", - "mailer" + "blade-capture-directive", + "laravel", + "ryangjchandler" ], "support": { - "issues": "https://github.com/swiftmailer/swiftmailer/issues", - "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" + "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues", + "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v0.3.0" }, "funding": [ { - "url": "https://github.com/fabpot", + "url": "https://github.com/ryangjchandler", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", - "type": "tidelift" } ], - "abandoned": "symfony/mailer", - "time": "2021-10-18T15:26:12+00:00" + "time": "2023-02-14T16:54:54+00:00" }, { - "name": "symfony/console", - "version": "v4.4.49", + "name": "spatie/color", + "version": "1.5.3", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9" + "url": "https://github.com/spatie/color.git", + "reference": "49739265900cabce4640cd26c3266fd8d2cca390" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", + "url": "https://api.github.com/repos/spatie/color/zipball/49739265900cabce4640cd26c3266fd8d2cca390", + "reference": "49739265900cabce4640cd26c3266fd8d2cca390", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" + "php": "^7.3|^8.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^6.5||^9.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Color\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sebastian De Deyne", + "email": "sebastian@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A little library to handle color conversions", + "homepage": "https://github.com/spatie/color", + "keywords": [ + "color", + "conversion", + "rgb", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/color/issues", + "source": "https://github.com/spatie/color/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-12-18T12:58:32+00:00" + }, + { + "name": "spatie/invade", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/invade.git", + "reference": "7b20a25486de69198e402da20dc924d8bcc8024a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/invade/zipball/7b20a25486de69198e402da20dc924d8bcc8024a", + "reference": "7b20a25486de69198e402da20dc924d8bcc8024a", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "pestphp/pest": "^1.20", + "phpstan/phpstan": "^1.4", + "spatie/ray": "^1.28" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Spatie\\Invade\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" + } + ], + "description": "A PHP function to work with private properties and methods", + "homepage": "https://github.com/spatie/invade", + "keywords": [ + "invade", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/invade/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-07-19T18:55:36+00:00" + }, + { + "name": "spatie/laravel-package-tools", + "version": "1.16.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-package-tools.git", + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^9.28|^10.0|^11.0", + "php": "^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "orchestra/testbench": "^7.7|^8.0", + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^9.5.24", + "spatie/pest-plugin-test-time": "^1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\LaravelPackageTools\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" + } + ], + "description": "Tools for creating Laravel packages", + "homepage": "https://github.com/spatie/laravel-package-tools", + "keywords": [ + "laravel-package-tools", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-package-tools/issues", + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.2" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-01-11T08:43:00+00:00" + }, + { + "name": "spatie/laravel-query-builder", + "version": "5.7.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-query-builder.git", + "reference": "ff61a9ea32c5b55cbe63de8e3c6e35a201e6b746" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-query-builder/zipball/ff61a9ea32c5b55cbe63de8e3c6e35a201e6b746", + "reference": "ff61a9ea32c5b55cbe63de8e3c6e35a201e6b746", + "shasum": "" + }, + "require": { + "illuminate/database": "^9.0|^10.0", + "illuminate/http": "^9.0|^10.0", + "illuminate/support": "^9.0|^10.0", + "php": "^8.0", + "spatie/laravel-package-tools": "^1.11" + }, + "require-dev": { + "ext-json": "*", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^7.0|^8.0", + "pestphp/pest": "^1.20", + "phpunit/phpunit": "^9.6.11", + "spatie/invade": "^2.0", + "spatie/laravel-ray": "^1.28" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\QueryBuilder\\QueryBuilderServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\QueryBuilder\\": "src", + "Spatie\\QueryBuilder\\Database\\Factories\\": "database/factories" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily build Eloquent queries from API requests", + "homepage": "https://github.com/spatie/laravel-query-builder", + "keywords": [ + "laravel-query-builder", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-query-builder/issues", + "source": "https://github.com/spatie/laravel-query-builder" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + } + ], + "time": "2024-01-08T09:57:13+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4835,8 +5195,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/console/tree/v4.4.49" + "source": "https://github.com/symfony/console/tree/v6.4.2" }, "funding": [ { @@ -4852,25 +5218,24 @@ "type": "tidelift" } ], - "time": "2022-11-05T17:10:16+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.44", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed" + "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", - "reference": "bd0a6737e48de45b4b0b7b6fc98c78404ddceaed", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e", + "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -4902,7 +5267,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.44" + "source": "https://github.com/symfony/css-selector/tree/v7.0.0" }, "funding": [ { @@ -4918,39 +5283,38 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2023-10-31T17:59:56+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.44", + "name": "symfony/deprecation-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "php": ">=8.1" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" }, - "exclude-from-classmap": [ - "/Tests/" + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4959,18 +5323,18 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to ease debugging PHP code", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.44" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -4986,33 +5350,39 @@ "type": "tidelift" } ], - "abandoned": "symfony/error-handler", - "time": "2022-07-28T16:29:46+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.44", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291" + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -5039,7 +5409,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.44" + "source": "https://github.com/symfony/error-handler/tree/v6.4.0" }, "funding": [ { @@ -5055,47 +5425,43 @@ "type": "tidelift" } ], - "time": "2022-07-28T16:29:46+00:00" + "time": "2023-10-18T09:43:34+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.44", + "version": "v7.0.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" + "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/098b62ae81fdd6cbf941f355059f617db28f4f9a", + "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5123,7 +5489,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.44" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.2" }, "funding": [ { @@ -5139,33 +5505,30 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2023-12-27T22:24:19+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.13", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5202,7 +5565,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -5218,25 +5581,27 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/finder", - "version": "v4.4.44", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f" + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/66bd787edb5e42ff59d3523f623895af05043e4f", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -5264,7 +5629,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.44" + "source": "https://github.com/symfony/finder/tree/v6.4.0" }, "funding": [ { @@ -5280,42 +5645,36 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:35:46+00:00" + "time": "2023-10-31T17:30:12+00:00" }, { - "name": "symfony/http-client-contracts", - "version": "v1.1.13", + "name": "symfony/html-sanitizer", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "59f37624a82635962f04c98f31aed122e539a89e" + "url": "https://github.com/symfony/html-sanitizer.git", + "reference": "9cc71f272eb62504872c80845074f236e8e43536" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/59f37624a82635962f04c98f31aed122e539a89e", - "reference": "59f37624a82635962f04c98f31aed122e539a89e", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/9cc71f272eb62504872c80845074f236e8e43536", + "reference": "9cc71f272eb62504872c80845074f236e8e43536", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "suggest": { - "symfony/http-client-implementation": "" + "ext-dom": "*", + "league/uri": "^6.5|^7.0", + "masterminds/html5": "^2.7.2", + "php": ">=8.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.1-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } + "Symfony\\Component\\HtmlSanitizer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5323,26 +5682,23 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to HTTP clients", + "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "Purifier", + "html", + "sanitizer" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/html-sanitizer/tree/v6.4.0" }, "funding": [ { @@ -5358,31 +5714,40 @@ "type": "tidelift" } ], - "time": "2022-04-11T14:52:04+00:00" + "time": "2023-10-28T23:12:08+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.49", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "191413c7b832c015bb38eae963f2e57498c3c173" + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/191413c7b832c015bb38eae963f2e57498c3c173", - "reference": "191413c7b832c015bb38eae963f2e57498c3c173", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271", + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.3" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5410,7 +5775,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.49" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.2" }, "funding": [ { @@ -5426,67 +5791,76 @@ "type": "tidelift" } ], - "time": "2022-11-04T16:17:57+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.50", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "aa6df6c045f034aa13ac752fc234bb300b9488ef" + "reference": "13e8387320b5942d0dc408440c888e2d526efef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aa6df6c045f034aa13ac752fc234bb300b9488ef", - "reference": "aa6df6c045f034aa13ac752fc234bb300b9488ef", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", + "reference": "13e8387320b5942d0dc408440c888e2d526efef4", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", + "twig/twig": "^2.13|^3.0.4" }, "type": "library", "autoload": { @@ -5514,7 +5888,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.50" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" }, "funding": [ { @@ -5530,35 +5904,123 @@ "type": "tidelift" } ], - "time": "2023-02-01T08:01:31+00:00" + "time": "2023-12-30T15:31:44+00:00" }, { - "name": "symfony/mime", - "version": "v4.4.47", + "name": "symfony/mailer", + "version": "v6.4.2", "source": { "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "0eaf33cd6d1b3eaa50e7bc48b17f6e45789df35d" + "url": "https://github.com/symfony/mailer.git", + "reference": "6da89e5c9202f129717a770a03183fb140720168" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/0eaf33cd6d1b3eaa50e7bc48b17f6e45789df35d", - "reference": "0eaf33cd6d1b3eaa50e7bc48b17f6e45789df35d", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6da89e5c9202f129717a770a03183fb140720168", + "reference": "6da89e5c9202f129717a770a03183fb140720168", "shasum": "" }, "require": { - "php": ">=7.1.3", + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.4.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-12-19T09:12:31+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "egulias/email-validator": "~3.0.0", - "symfony/mailer": "<4.4" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.3.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", - "symfony/dependency-injection": "^3.4|^4.1|^5.0" + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" }, "type": "library", "autoload": { @@ -5590,7 +6052,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v4.4.47" + "source": "https://github.com/symfony/mime/tree/v6.4.0" }, "funding": [ { @@ -5606,7 +6068,7 @@ "type": "tidelift" } ], - "time": "2022-10-03T15:15:11+00:00" + "time": "2023-10-17T11:49:05+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5691,27 +6153,24 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-iconv", + "name": "symfony/polyfill-intl-grapheme", "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6de50471469b8c9afc38164452ab2b6170ee71c1", - "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { "php": ">=7.1" }, - "provide": { - "ext-iconv": "*" - }, "suggest": { - "ext-iconv": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { @@ -5728,7 +6187,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -5745,17 +6204,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Iconv extension", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "iconv", + "grapheme", + "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -5945,32 +6405,46 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.20.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", - "reference": "54b8cd7e6c1643d78d011f3be89f3ef1f9f4c675", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { "php": ">=7.1" }, - "type": "metapackage", + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" } }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -5985,16 +6459,17 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "mbstring", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php56/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -6010,7 +6485,7 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php72", @@ -6088,85 +6563,6 @@ ], "time": "2023-01-26T09:26:14+00:00" }, - { - "name": "symfony/polyfill-php73", - "version": "v1.28.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-01-26T09:26:14+00:00" - }, { "name": "symfony/polyfill-php80", "version": "v1.28.0", @@ -6251,22 +6647,183 @@ "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/process", - "version": "v4.4.44", + "name": "symfony/polyfill-php83", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T06:22:46+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/c4b1ef0bc80533d87a2e969806172f1c2a980241", + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241", + "shasum": "" + }, + "require": { + "php": ">=8.1" }, "type": "library", "autoload": { @@ -6294,7 +6851,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.44" + "source": "https://github.com/symfony/process/tree/v6.4.2" }, "funding": [ { @@ -6310,46 +6867,40 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2023-12-22T16:42:54+00:00" }, { "name": "symfony/routing", - "version": "v4.4.44", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae" + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/f7751fd8b60a07f3f349947a309b5bdfce22d6ae", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae", + "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.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/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6383,7 +6934,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.44" + "source": "https://github.com/symfony/routing/tree/v6.4.2" }, "funding": [ { @@ -6399,33 +6950,33 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.13", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "afa00c500c2d6aea6e3b2f4862355f507bc5ebb4" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/afa00c500c2d6aea6e3b2f4862355f507bc5ebb4", - "reference": "afa00c500c2d6aea6e3b2f4862355f507bc5ebb4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0" + "php": ">=8.1", + "psr/container": "^1.1|^2.0" }, - "suggest": { - "symfony/service-implementation": "" + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -6435,7 +6986,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6462,7 +7016,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -6478,55 +7032,147 @@ "type": "tidelift" } ], - "time": "2022-05-27T14:01:05+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { - "name": "symfony/translation", - "version": "v4.4.47", + "name": "symfony/string", + "version": "v7.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94" + "url": "https://github.com/symfony/string.git", + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/45036b1d53accc48fe9bab71ccd86d57eba0dd94", - "reference": "45036b1d53accc48fe9bab71ccd86d57eba0dd94", + "url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5", + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "symfony/translation-implementation": "1.0|2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.0.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-12-10T16:54:46+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", + "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -6551,7 +7197,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.47" + "source": "https://github.com/symfony/translation/tree/v6.4.2" }, "funding": [ { @@ -6567,32 +7213,29 @@ "type": "tidelift" } ], - "time": "2022-10-03T15:15:11+00:00" + "time": "2023-12-18T09:25:29+00:00" }, { "name": "symfony/translation-contracts", - "version": "v1.1.13", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "7462e5c4cb8b9cd152f992e8f10963b5641921f6" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/7462e5c4cb8b9cd152f992e8f10963b5641921f6", - "reference": "7462e5c4cb8b9cd152f992e8f10963b5641921f6", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "suggest": { - "symfony/translation-implementation": "" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -6602,7 +7245,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6629,7 +7275,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -6645,42 +7291,112 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { - "name": "symfony/var-dumper", - "version": "v4.4.47", + "name": "symfony/uid", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "1069c7a3fca74578022fab6f81643248d02f8e63" + "url": "https://github.com/symfony/uid.git", + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1069c7a3fca74578022fab6f81643248d02f8e63", - "reference": "1069c7a3fca74578022fab6f81643248d02f8e63", + "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v6.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-10-31T08:18:17+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4" }, "bin": [ "Resources/bin/var-dump-server" @@ -6718,7 +7434,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.47" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" }, "funding": [ { @@ -6734,27 +7450,94 @@ "type": "tidelift" } ], - "time": "2022-10-03T15:15:11+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.6", + "name": "tightenco/ziggy", + "version": "v1.8.1", "source": { "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + "url": "https://github.com/tighten/ziggy.git", + "reference": "22dafc51f3f5ae5ed51f7cb6b566e6b9537f6937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "url": "https://api.github.com/repos/tighten/ziggy/zipball/22dafc51f3f5ae5ed51f7cb6b566e6b9537f6937", + "reference": "22dafc51f3f5ae5ed51f7cb6b566e6b9537f6937", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laravel/framework": ">=5.4@dev" + }, + "require-dev": { + "orchestra/testbench": "^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0", + "phpunit/phpunit": "^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Tightenco\\Ziggy\\ZiggyServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Tightenco\\Ziggy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Coulbourne", + "email": "daniel@tighten.co" + }, + { + "name": "Jake Bathman", + "email": "jake@tighten.co" + }, + { + "name": "Jacob Baker-Kretzmar", + "email": "jacob@tighten.co" + } + ], + "description": "Generates a Blade directive exporting all of your named Laravel routes. Also provides a nice route() helper function in JavaScript.", + "homepage": "https://github.com/tighten/ziggy", + "keywords": [ + "Ziggy", + "javascript", + "laravel", + "routes" + ], + "support": { + "issues": "https://github.com/tighten/ziggy/issues", + "source": "https://github.com/tighten/ziggy/tree/v1.8.1" + }, + "time": "2023-10-12T18:31:26+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" @@ -6785,44 +7568,97 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" }, - "time": "2023-01-03T09:29:04+00:00" + "time": "2023-12-08T13:03:43+00:00" }, { - "name": "twig/twig", - "version": "v2.15.5", + "name": "timacdonald/json-api", + "version": "v1.0.0-beta.6", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e" + "url": "https://github.com/timacdonald/json-api.git", + "reference": "0707887340fc427d9db443e44b453b04ef9a2811" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/fc02a6af3eeb97c4bf5650debc76c2eda85ac22e", - "reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e", + "url": "https://api.github.com/repos/timacdonald/json-api/zipball/0707887340fc427d9db443e44b453b04ef9a2811", + "reference": "0707887340fc427d9db443e44b453b04ef9a2811", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php72": "^1.8" + "illuminate/collections": "^9.0 || ^10.0", + "illuminate/database": "^9.0 || ^10.0", + "illuminate/http": "^9.0 || ^10.0", + "illuminate/support": "^9.0 || ^10.0", + "php": "^8.1 || ^8.2", + "symfony/http-kernel": "^6.0" }, "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "friendsofphp/php-cs-fixer": "^3.13", + "laravel/framework": "^9.0 || ^10.0", + "opis/json-schema": "^2.3", + "orchestra/testbench": "^7.0 || ^8.0", + "phpunit/phpunit": "^9.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.15-dev" + "autoload": { + "psr-4": { + "TiMacDonald\\JsonApi\\": "src" } }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tim MacDonald", + "email": "hello@timacdonald.me", + "homepage": "https://timacdonald.me" + } + ], + "description": "A Lightweight JSON:API Resource for Laravel", + "keywords": [ + "JSON-API", + "api", + "json", + "laravel", + "resource" + ], + "support": { + "docs": "https://github.com/timacdonald/json-api/blob/master/readme.md", + "issues": "https://github.com/timacdonald/json-api/issues", + "source": "https://github.com/timacdonald/json-api/releases/latest" + }, + "time": "2023-10-12T04:02:04+00:00" + }, + { + "name": "twig/twig", + "version": "v3.8.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" + }, + "require-dev": { + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" + }, + "type": "library", "autoload": { - "psr-0": { - "Twig_": "lib/" - }, "psr-4": { "Twig\\": "src/" } @@ -6855,7 +7691,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.15.5" + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" }, "funding": [ { @@ -6867,39 +7703,47 @@ "type": "tidelift" } ], - "time": "2023-05-03T17:49:41+00:00" + "time": "2023-11-21T18:54:41+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v2.6.9", + "version": "v5.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2e93cc98e2e8e869f8d9cfa61bb3a99ba4fc4141" + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2e93cc98e2e8e869f8d9cfa61bb3a99ba4fc4141", - "reference": "2e93cc98e2e8e869f8d9cfa61bb3a99ba4fc4141", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", "shasum": "" }, "require": { - "php": "^5.3.9 || ^7.0 || ^8.0", - "symfony/polyfill-ctype": "^1.17" + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "ext-pcre": "*", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.21" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { - "ext-filter": "Required to use the boolean validator.", - "ext-pcre": "Required to use most of the library." + "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -6931,7 +7775,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v2.6.9" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" }, "funding": [ { @@ -6943,115 +7787,195 @@ "type": "tidelift" } ], - "time": "2021-12-12T22:59:22+00:00" + "time": "2023-11-12T22:43:29+00:00" }, { - "name": "zendframework/zend-diactoros", - "version": "2.2.1", + "name": "voku/portable-ascii", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "de5847b068362a88684a55b0dbb40d85986cfa52" + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/de5847b068362a88684a55b0dbb40d85986cfa52", - "reference": "de5847b068362a88684a55b0dbb40d85986cfa52", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", "shasum": "" }, "require": { - "php": "^7.1", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "php": ">=7.0.0" }, "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.5.0", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^7.0.2", - "zendframework/zend-coding-standard": "~1.0.0" + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev", - "dev-develop": "2.2.x-dev", - "dev-release-1.8": "1.8.x-dev" - } - }, "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php" - ], "psr-4": { - "Zend\\Diactoros\\": "src/" + "voku\\": "src/voku/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "PSR HTTP Message implementations", + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", "keywords": [ - "http", - "psr", - "psr-7" + "ascii", + "clean", + "php" ], "support": { - "docs": "https://docs.zendframework.com/zend-diactoros/", - "forum": "https://discourse.zendframework.com/c/questions/exprssive", - "issues": "https://github.com/zendframework/zend-diactoros/issues", - "rss": "https://github.com/zendframework/zend-diactoros/releases.atom", - "slack": "https://zendframework-slack.herokuapp.com", - "source": "https://github.com/zendframework/zend-diactoros" + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" }, - "abandoned": "laminas/laminas-diactoros", - "time": "2019-11-13T19:16:13+00:00" + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" } ], "packages-dev": [ { - "name": "alt-three/testbench", - "version": "5.0.x-dev", + "name": "brianium/paratest", + "version": "v7.3.1", "source": { "type": "git", - "url": "https://github.com/AltThree/TestBench.git", - "reference": "246d9744ec1cde265e5ea40c7cd4eebd5577b601" + "url": "https://github.com/paratestphp/paratest.git", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/AltThree/TestBench/zipball/246d9744ec1cde265e5ea40c7cd4eebd5577b601", - "reference": "246d9744ec1cde265e5ea40c7cd4eebd5577b601", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30", "shasum": "" }, "require": { - "graham-campbell/testbench-core": "^3.2", - "php": "^7.0 || ^8.0" + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0", + "jean85/pretty-package-versions": "^2.0.5", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.7", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-timer": "^6.0", + "phpunit/phpunit": "^10.4.2", + "sebastian/environment": "^6.0.1", + "symfony/console": "^6.3.4 || ^7.0.0", + "symfony/process": "^6.3.4 || ^7.0.0" }, "require-dev": { - "graham-campbell/analyzer": "^2.4 || ^3.0", - "phpunit/phpunit": "^6.5 || ^7.5 || ^8.4 || ^9.0" - }, - "suggest": { - "laravel/framework": "Enables the use of most traits." + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "infection/infection": "^0.27.6", + "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "squizlabs/php_codesniffer": "^3.7.2", + "symfony/filesystem": "^6.3.1 || ^7.0.0" }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], "type": "library", "autoload": { "psr-4": { - "AltThree\\TestBench\\": "src/" + "ParaTest\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -7060,184 +7984,176 @@ ], "authors": [ { - "name": "Alt Three", - "email": "support@alt-three.com" - } - ], - "description": "Provides some testing traits for apps", - "keywords": [ - "Alt Three", - "TestBench", - "app" - ], - "support": { - "issues": "https://github.com/AltThree/TestBench/issues", - "source": "https://github.com/AltThree/TestBench/tree/5.0" - }, - "abandoned": true, - "time": "2021-03-29T11:19:11+00:00" - }, - { - "name": "barryvdh/laravel-debugbar", - "version": "v3.4.2", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "91ee8b3acf0d72a4937f4855bd245acbda9910ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/91ee8b3acf0d72a4937f4855bd245acbda9910ac", - "reference": "91ee8b3acf0d72a4937f4855bd245acbda9910ac", - "shasum": "" - }, - "require": { - "illuminate/routing": "^5.5|^6|^7", - "illuminate/session": "^5.5|^6|^7", - "illuminate/support": "^5.5|^6|^7", - "maximebf/debugbar": "^1.16.3", - "php": ">=7.0", - "symfony/debug": "^3|^4|^5", - "symfony/finder": "^3|^4|^5" - }, - "require-dev": { - "orchestra/testbench": "^3.5|^4.0|^5.0", - "phpunit/phpunit": "^6.0|^7.0|^8.5|^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" }, - "laravel": { - "providers": [ - "Barryvdh\\Debugbar\\ServiceProvider" - ], - "aliases": { - "Debugbar": "Barryvdh\\Debugbar\\Facade" - } - } - }, - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Barryvdh\\Debugbar\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" } ], - "description": "PHP Debugbar integration for Laravel", + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", "keywords": [ - "debug", - "debugbar", - "laravel", - "profiler", - "webprofiler" + "concurrent", + "parallel", + "phpunit", + "testing" ], "support": { - "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/3.4" + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.3.1" }, "funding": [ { - "url": "https://github.com/barryvdh", + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2023-10-31T09:24:17+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + }, + "time": "2024-01-02T13:46:09+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077", + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", "type": "github" } ], - "time": "2020-08-30T07:08:17+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.30 || ^5.4" - }, - "type": "library", - "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": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-12-30T00:15:36+00:00" + "time": "2023-09-17T21:38:23+00:00" }, { "name": "filp/whoops", - "version": "2.15.3", + "version": "2.15.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", - "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", "shasum": "" }, "require": { @@ -7287,7 +8203,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.3" + "source": "https://github.com/filp/whoops/tree/2.15.4" }, "funding": [ { @@ -7295,205 +8211,7 @@ "type": "github" } ], - "time": "2023-07-13T12:00:00+00:00" - }, - { - "name": "fzaninotto/faker", - "version": "v1.9.2", - "source": { - "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/848d8125239d7dbf8ab25cb7f054f1a630e68c2e", - "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^2.9.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "support": { - "issues": "https://github.com/fzaninotto/Faker/issues", - "source": "https://github.com/fzaninotto/Faker/tree/v1.9.2" - }, - "abandoned": true, - "time": "2020-12-11T09:56:16+00:00" - }, - { - "name": "graham-campbell/analyzer", - "version": "v2.4.3", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Analyzer.git", - "reference": "baecd15b7e1185075a8db63ca1806c555cd60bc8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Analyzer/zipball/baecd15b7e1185075a8db63ca1806c555cd60bc8", - "reference": "baecd15b7e1185075a8db63ca1806c555cd60bc8", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^3.0|^4.0", - "php": "^7.0|^8.0", - "phpdocumentor/reflection-docblock": "^4.2", - "phpdocumentor/type-resolver": "~0.4|^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5|^7.5|^8.4|^9.0" - }, - "suggest": { - "phpunit/phpunit": "Required to use the analysis trait." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-4": { - "GrahamCampbell\\Analyzer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "graham@alt-three.com" - } - ], - "description": "Checks if referenced classes really exist.", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "analysis", - "analyzer", - "classes", - "testing" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Analyzer/issues", - "source": "https://github.com/GrahamCampbell/Analyzer/tree/v2.4.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/analyzer", - "type": "tidelift" - } - ], - "time": "2020-05-02T14:42:06+00:00" - }, - { - "name": "graham-campbell/testbench-core", - "version": "v3.4.1", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Laravel-TestBench-Core.git", - "reference": "f62a3d0200cbea9f8156ac2cd7d16684ad324c8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Laravel-TestBench-Core/zipball/f62a3d0200cbea9f8156ac2cd7d16684ad324c8d", - "reference": "f62a3d0200cbea9f8156ac2cd7d16684ad324c8d", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "require-dev": { - "graham-campbell/analyzer": "^2.4 || ^3.0", - "phpunit/phpunit": "^6.5 || ^7.5 || ^8.0 || ^9.0 || ^10.0" - }, - "suggest": { - "illuminate/support": "Required to use the laravel trait.", - "mockery/mockery": "Required to use the mockery trait.", - "phpunit/phpunit": "Required to use the most of the features." - }, - "type": "library", - "autoload": { - "psr-4": { - "GrahamCampbell\\TestBenchCore\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "TestBench Core Provides Some Testing Functionality For Laravel", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Laravel TestBench Core", - "Laravel-TestBench-Core", - "TestBench", - "framework", - "laravel", - "testbench-core", - "testing" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Laravel-TestBench-Core/issues", - "source": "https://github.com/GrahamCampbell/Laravel-TestBench-Core/tree/v3.4.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/testbench-core", - "type": "tidelift" - } - ], - "time": "2023-02-25T15:19:33+00:00" + "time": "2023-11-03T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7547,42 +8265,39 @@ "time": "2020-07-09T08:09:16+00:00" }, { - "name": "maximebf/debugbar", - "version": "v1.19.1", + "name": "jean85/pretty-package-versions", + "version": "2.0.5", "source": { "type": "git", - "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523" + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/03dd40a1826f4d585ef93ef83afa2a9874a00523", - "reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", "shasum": "" }, "require": { - "php": "^7.1|^8", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4|^5|^6" + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" }, "require-dev": { - "phpunit/phpunit": ">=7.5.20 <10.0", - "twig/twig": "^1.38|^2.7|^3.0" - }, - "suggest": { - "kriswallsmith/assetic": "The best way to manage assets", - "monolog/monolog": "Log using Monolog", - "predis/predis": "Redis storage" + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "DebugBar\\": "src/DebugBar/" + "Jean85\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7591,58 +8306,188 @@ ], "authors": [ { - "name": "Maxime Bouroumeau-Fuseau", - "email": "maxime.bouroumeau@gmail.com", - "homepage": "http://maximebf.com" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" } ], - "description": "Debug bar in the browser for php application", - "homepage": "https://github.com/maximebf/php-debugbar", + "description": "A library to get pretty versions strings of installed dependencies", "keywords": [ - "debug", - "debugbar" + "composer", + "package", + "release", + "versions" ], "support": { - "issues": "https://github.com/maximebf/php-debugbar/issues", - "source": "https://github.com/maximebf/php-debugbar/tree/v1.19.1" + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" }, - "time": "2023-10-12T08:10:52+00:00" + "time": "2021-10-08T21:21:46+00:00" }, { - "name": "mockery/mockery", - "version": "1.3.6", + "name": "laravel/pint", + "version": "v1.13.9", "source": { "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "dc206df4fa314a50bbb81cf72239a305c5bbd5c0" + "url": "https://github.com/laravel/pint.git", + "reference": "e3e269cc5d874c8efd2dc7962b1c7ff2585fe525" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/dc206df4fa314a50bbb81cf72239a305c5bbd5c0", - "reference": "dc206df4fa314a50bbb81cf72239a305c5bbd5c0", + "url": "https://api.github.com/repos/laravel/pint/zipball/e3e269cc5d874c8efd2dc7962b1c7ff2585fe525", + "reference": "e3e269cc5d874c8efd2dc7962b1c7ff2585fe525", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.47.0", + "illuminate/view": "^10.40.0", + "larastan/larastan": "^2.8.1", + "laravel-zero/framework": "^10.3.0", + "mockery/mockery": "^1.6.7", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.31.0" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2024-01-16T17:39:29+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.27.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "9dc648978e4276f2bfd37a076a52e3bd9394777f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/9dc648978e4276f2bfd37a076a52e3bd9394777f", + "reference": "9dc648978e4276f2bfd37a076a52e3bd9394777f", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.0|^10.0|^11.0", + "illuminate/contracts": "^9.0|^10.0|^11.0", + "illuminate/support": "^9.0|^10.0|^11.0", + "php": "^8.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2024-01-13T18:46:48+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.7", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": ">=5.6.0" + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^5.7.10|^6.5|^7.5|^8.5|^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.10", + "symplify/easy-coding-standard": "^12.0.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -7653,12 +8498,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -7676,10 +8529,13 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.3.6" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-09-07T15:05:49+00:00" + "time": "2023-12-10T02:24:34+00:00" }, { "name": "myclabs/deep-copy", @@ -7741,29 +8597,502 @@ "time": "2023-03-08T13:26:56+00:00" }, { - "name": "phar-io/manifest", - "version": "1.0.3", + "name": "nikic/php-parser", + "version": "v5.0.0", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" + }, + "time": "2024-01-07T17:17:35+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.10.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-10-11T15:45:01+00:00" + }, + { + "name": "pestphp/pest", + "version": "v2.31.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest.git", + "reference": "3457841a9b124653edcfef1d5da24e6afe176f79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest/zipball/3457841a9b124653edcfef1d5da24e6afe176f79", + "reference": "3457841a9b124653edcfef1d5da24e6afe176f79", + "shasum": "" + }, + "require": { + "brianium/paratest": "^7.3.1", + "nunomaduro/collision": "^7.10.0|^8.0.1", + "nunomaduro/termwind": "^1.15.1|^2.0.0", + "pestphp/pest-plugin": "^2.1.1", + "pestphp/pest-plugin-arch": "^2.6.1", + "php": "^8.1.0", + "phpunit/phpunit": "^10.5.5" + }, + "conflict": { + "phpunit/phpunit": ">10.5.5", + "sebastian/exporter": "<5.1.0", + "webmozart/assert": "<1.11.0" + }, + "require-dev": { + "pestphp/pest-dev-tools": "^2.16.0", + "pestphp/pest-plugin-type-coverage": "^2.8.0", + "symfony/process": "^6.4.0|^7.0.2" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], + "psr-4": { + "Pest\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "The elegant PHP Testing Framework.", + "keywords": [ + "framework", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v2.31.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-01-11T15:33:20+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.1" + }, + "conflict": { + "pestphp/pest": "<2.2.3" + }, + "require-dev": { + "composer/composer": "^2.5.8", + "pestphp/pest": "^2.16.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Pest\\Plugin\\Manager" + }, + "autoload": { + "psr-4": { + "Pest\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest plugin manager", + "keywords": [ + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-08-22T08:40:06+00:00" + }, + { + "name": "pestphp/pest-plugin-arch", + "version": "v2.6.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "99e86316325e55edf66c1f86dd9f990e4e2c2321" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/99e86316325e55edf66c1f86dd9f990e4e2c2321", + "reference": "99e86316325e55edf66c1f86dd9f990e4e2c2321", + "shasum": "" + }, + "require": { + "nunomaduro/collision": "^7.10.0|^8.0.1", + "pestphp/pest-plugin": "^2.1.1", + "php": "^8.1", + "ta-tikoma/phpunit-architecture-test": "^0.8.4" + }, + "require-dev": { + "pestphp/pest": "^2.30.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Arch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Arch plugin for Pest PHP.", + "keywords": [ + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.6.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-01-11T11:21:05+00:00" + }, + { + "name": "pestphp/pest-plugin-laravel", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "77a2838c1d3b09d147211e76a48987ba9a758279" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/77a2838c1d3b09d147211e76a48987ba9a758279", + "reference": "77a2838c1d3b09d147211e76a48987ba9a758279", + "shasum": "" + }, + "require": { + "laravel/framework": "^10.18.0|^11.0", + "pestphp/pest": "^2.13.0", + "php": "^8.1.0" + }, + "require-dev": { + "laravel/dusk": "^7.9.3", + "orchestra/testbench": "^8.6.3", + "pestphp/pest-dev-tools": "^2.14.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Laravel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Laravel Plugin", + "keywords": [ + "framework", + "laravel", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2023-08-10T15:37:09+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { "ext-dom": "*", "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -7795,26 +9124,26 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2018-07-08T19:23:20+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "2.0.1", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -7846,31 +9175,31 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/master" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2018-07-08T19:19:57+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -7899,47 +9228,44 @@ ], "support": { "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master" + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "time": "2020-04-27T09:25:28+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -7950,42 +9276,53 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/4.x" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2019-12-28T18:55:12+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.0.1", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "shasum": "" }, "require": { - "php": "^7.1", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -8006,113 +9343,97 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/0.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" }, - "time": "2019-08-22T18:11:29+00:00" + "time": "2024-01-11T11:49:22+00:00" }, { - "name": "phpspec/prophecy", - "version": "v1.10.3", + "name": "phpstan/phpdoc-parser", + "version": "1.25.0", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.x-dev" - } - }, "autoload": { "psr-4": { - "Prophecy\\": "src/Prophecy" + "PHPStan\\PhpDocParser\\": [ + "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" - ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.10.3" + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" }, - "time": "2020-03-05T15:02:03+00:00" + "time": "2024-01-04T17:06:16+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "6.1.4", + "version": "10.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-xmlwriter": "*", - "php": "^7.1", - "phpunit/php-file-iterator": "^2.0", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.1 || ^4.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^10.1" }, "suggest": { - "ext-xdebug": "^2.6.0" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -8140,34 +9461,41 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/master" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" }, - "time": "2018-10-31T16:06:48+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T15:38:30+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "2.0.5", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", - "reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8194,7 +9522,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -8202,26 +9531,97 @@ "type": "github" } ], - "time": "2021-12-02T12:42:26+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.1" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-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": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -8245,34 +9645,41 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, - "time": "2015-06-21T13:50:34+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "2.1.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", - "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8298,7 +9705,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -8306,117 +9713,52 @@ "type": "github" } ], - "time": "2020-11-30T08:20:02+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "3.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "9c1da83261628cb24b6a6df371b6e312b3954768" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9c1da83261628cb24b6a6df371b6e312b3954768", - "reference": "9c1da83261628cb24b6a6df371b6e312b3954768", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-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" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", - "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "abandoned": true, - "time": "2021-07-26T12:15:06+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "7.5.20", + "version": "10.5.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + "reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ed21115d505b4b4f7dc7b5651464e19a2c7f7856", + "reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.7", - "phar-io/manifest": "^1.0.2", - "phar-io/version": "^2.0", - "php": "^7.1", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^6.0.7", - "phpunit/php-file-iterator": "^2.0.1", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0", - "sebastian/environment": "^4.0", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpunit/phpunit-mock-objects": "*" - }, - "require-dev": { - "ext-pdo": "*" + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -8424,10 +9766,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.5-dev" + "dev-main": "10.5-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -8452,34 +9797,161 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/7.5.20" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.5" }, - "time": "2020-01-08T08:45:45+00:00" + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2023-12-27T15:13:52+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "name": "sebastian/cli-parser", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:15+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-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": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" } }, "autoload": { @@ -8501,7 +9973,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -8509,34 +9981,36 @@ "type": "github" } ], - "time": "2020-11-30T08:15:22+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "3.0.5", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770", - "reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { - "php": ">=7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8575,7 +10049,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -8583,33 +10058,91 @@ "type": "github" } ], - "time": "2022-09-14T12:31:48+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { - "name": "sebastian/diff", - "version": "3.0.4", + "name": "sebastian/complexity", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6296a0c086dd0117c1b78b059374d7fcbe7545ae", - "reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "php": ">=7.1" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" } }, "autoload": { @@ -8641,7 +10174,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.4" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -8649,27 +10183,27 @@ "type": "github" } ], - "time": "2023-05-07T05:30:20+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "sebastian/environment", - "version": "4.2.4", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", - "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^7.5" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -8677,7 +10211,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8696,7 +10230,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -8704,7 +10238,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -8712,34 +10247,34 @@ "type": "github" } ], - "time": "2020-11-30T07:53:42+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.5", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6", - "reference": "73a9676f2833b9a7c36968f9d882589cd75511e6", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/recursion-context": "^3.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -8774,14 +10309,15 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -8789,35 +10325,35 @@ "type": "github" } ], - "time": "2022-09-14T06:00:17+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-uopz": "*" + "ext-dom": "*", + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8842,36 +10378,101 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, - "time": "2017-04-27T15:39:26+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-07-19T07:19:23+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "3.0.4", + "name": "sebastian/lines-of-code", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", - "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "php": ">=7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" } }, "autoload": { @@ -8893,7 +10494,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -8901,32 +10502,32 @@ "type": "github" } ], - "time": "2020-11-30T07:40:27+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "1.1.2", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", - "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -8948,7 +10549,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -8956,32 +10557,32 @@ "type": "github" } ], - "time": "2020-11-30T07:37:18+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.1", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", - "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -9008,10 +10609,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -9019,29 +10620,32 @@ "type": "github" } ], - "time": "2020-11-30T07:34:24+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { - "name": "sebastian/resource-operations", - "version": "2.0.2", + "name": "sebastian/type", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", - "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -9056,14 +10660,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -9071,29 +10676,29 @@ "type": "github" } ], - "time": "2020-11-30T07:30:19+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "2.0.1", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -9116,29 +10721,472 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/master" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, - "time": "2016-10-03T07:35:21+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" }, { - "name": "theseer/tokenizer", - "version": "1.1.3", + "name": "spatie/backtrace", + "version": "1.5.3", "source": { "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + "url": "https://github.com/spatie/backtrace.git", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2023-06-28T12:59:17+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.62.1", + "php": "^8.0", + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.4.3" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-10-17T15:54:07+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.12.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/5b6f801c605a593106b623e45ca41496a6e7d56d", + "reference": "5b6f801c605a593106b623e45ca41496a6e7d56d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-01-03T15:49:39+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/005e1e7b1232f3b22d7e7be3f602693efc7dba67", + "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0|^11.0", + "php": "^8.1", + "spatie/flare-client-php": "^1.3.5", + "spatie/ignition": "^1.9", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" + }, + "require-dev": { + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.30", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-01-12T13:14:58+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "0055b230c408428b9b5cde7c55659555be5c0278" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0055b230c408428b9b5cde7c55659555be5c0278", + "reference": "0055b230c408428b9b5cde7c55659555be5c0278", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.0.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-07T10:26:03+00:00" + }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.8.4", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18.0 || ^5.0.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" + }, + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" + }, + "time": "2024-01-05T14:10:56+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.0" + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { @@ -9160,128 +11208,27 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, - "time": "2019-06-13T22:48:21+00:00" - }, - { - "name": "tightenco/mailthief", - "version": "v0.3.14", - "source": { - "type": "git", - "url": "https://github.com/tighten/mailthief.git", - "reference": "9a8c2443be2b3d77753596f70ae6cd879b5b26a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tighten/mailthief/zipball/9a8c2443be2b3d77753596f70ae6cd879b5b26a6", - "reference": "9a8c2443be2b3d77753596f70ae6cd879b5b26a6", - "shasum": "" - }, - "require": { - "illuminate/mail": "5.*", - "illuminate/view": "5.*" - }, - "require-dev": { - "laravel/framework": ">=5.0 <5.5", - "mockery/mockery": "^0.9.5", - "phpunit/phpunit": "^5.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "MailThief\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Adam Wathan", - "email": "adam.wathan@gmail.com" + "url": "https://github.com/theseer", + "type": "github" } ], - "description": "A fake Mailer for Laravel applications that takes the pain out of testing mail.", - "support": { - "issues": "https://github.com/tighten/mailthief/issues", - "source": "https://github.com/tighten/mailthief/tree/v0.3.14" - }, - "time": "2018-02-10T04:17:52+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<3.9.1" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" - }, - "type": "library", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.9.1" - }, - "time": "2020-07-08T17:02:28+00:00" + "time": "2023-11-20T00:12:19+00:00" } ], "aliases": [], "minimum-stability": "dev", "stability-flags": { - "alt-three/testbench": 20 + "cachethq/core": 20 }, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.1.3", - "ext-mbstring": "*", - "ext-openssl": "*", - "ext-xml": "*" - }, - "platform-dev": { - "ext-sqlite3": "*" - }, - "platform-overrides": { - "php": "7.1.3" + "php": "^8.1" }, + "platform-dev": [], "plugin-api-version": "2.3.0" } diff --git a/config/app.php b/config/app.php index b9599092..9207160d 100644 --- a/config/app.php +++ b/config/app.php @@ -1,13 +1,7 @@ 'Cachet', + 'name' => env('APP_NAME', 'Laravel'), /* |-------------------------------------------------------------------------- @@ -30,7 +25,7 @@ return [ | | This value determines the "environment" your application is currently | running in. This may determine how you prefer to configure various - | services your application utilizes. Set this in your ".env" file. + | services the application utilizes. Set this in your ".env" file. | */ @@ -62,6 +57,8 @@ return [ 'url' => env('APP_URL', 'http://localhost'), + 'asset_url' => env('ASSET_URL'), + /* |-------------------------------------------------------------------------- | Application Timezone @@ -73,7 +70,7 @@ return [ | */ - 'timezone' => env('APP_TIMEZONE', 'UTC'), + 'timezone' => 'UTC', /* |-------------------------------------------------------------------------- @@ -86,7 +83,7 @@ return [ | */ - 'locale' => env('APP_LOCALE', 'en'), + 'locale' => 'en', /* |-------------------------------------------------------------------------- @@ -101,6 +98,19 @@ return [ 'fallback_locale' => 'en', + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + /* |-------------------------------------------------------------------------- | Encryption Key @@ -118,18 +128,21 @@ return [ /* |-------------------------------------------------------------------------- - | Logging Configuration + | Maintenance Mode Driver |-------------------------------------------------------------------------- | - | Here you may configure the log settings for your application. Out of - | the box, Laravel uses the Monolog PHP logging library. This gives - | you a variety of powerful log handlers / formatters to utilize. + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. | - | Available Settings: "single", "daily", "syslog", "errorlog" + | Supported drivers: "file", "cache" | */ - 'log' => env('APP_LOG', 'daily'), + 'maintenance' => [ + 'driver' => 'file', + // 'store' => 'redis', + ], /* |-------------------------------------------------------------------------- @@ -142,64 +155,20 @@ return [ | */ - 'providers' => array_filter([ - + 'providers' => ServiceProvider::defaultProviders()->merge([ /* - * Laravel Framework Service Providers... + * Package Service Providers... */ - Illuminate\Auth\AuthServiceProvider::class, - Illuminate\Broadcasting\BroadcastServiceProvider::class, - AltThree\Bus\BusServiceProvider::class, - Illuminate\Cache\CacheServiceProvider::class, - Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Cookie\CookieServiceProvider::class, - Illuminate\Database\DatabaseServiceProvider::class, - Illuminate\Encryption\EncryptionServiceProvider::class, - Illuminate\Filesystem\FilesystemServiceProvider::class, - Illuminate\Foundation\Providers\FoundationServiceProvider::class, - Illuminate\Hashing\HashServiceProvider::class, - Illuminate\Mail\MailServiceProvider::class, - Illuminate\Notifications\NotificationServiceProvider::class, - Illuminate\Pagination\PaginationServiceProvider::class, - Illuminate\Pipeline\PipelineServiceProvider::class, - Illuminate\Queue\QueueServiceProvider::class, - Illuminate\Redis\RedisServiceProvider::class, - Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, - Illuminate\Session\SessionServiceProvider::class, - Illuminate\Translation\TranslationServiceProvider::class, - Illuminate\Validation\ValidationServiceProvider::class, - Illuminate\View\ViewServiceProvider::class, - - /* - * Packages Service Providers... - */ - env('APP_DEBUG') ? Bugsnag\BugsnagLaravel\BugsnagServiceProvider::class : null, - Barryvdh\Cors\ServiceProvider::class, - env('APP_DEBUG') ? Barryvdh\Debugbar\ServiceProvider::class : null, - CachetHQ\Badger\BadgerServiceProvider::class, - CachetHQ\Emoji\EmojiServiceProvider::class, - CachetHQ\Twitter\TwitterServiceProvider::class, - GrahamCampbell\Binput\BinputServiceProvider::class, - GrahamCampbell\Exceptions\ExceptionsServiceProvider::class, - GrahamCampbell\Markdown\MarkdownServiceProvider::class, - GrahamCampbell\Security\SecurityServiceProvider::class, - Jenssegers\Date\DateServiceProvider::class, - Laravel\Tinker\TinkerServiceProvider::class, - McCool\LaravelAutoPresenter\AutoPresenterServiceProvider::class, /* * Application Service Providers... */ - CachetHQ\Cachet\Providers\AppServiceProvider::class, - CachetHQ\Cachet\Providers\ComposerServiceProvider::class, - CachetHQ\Cachet\Providers\ConsoleServiceProvider::class, - CachetHQ\Cachet\Providers\ConfigServiceProvider::class, - CachetHQ\Cachet\Providers\EventServiceProvider::class, - CachetHQ\Cachet\Providers\IntegrationServiceProvider::class, - CachetHQ\Cachet\Providers\RepositoryServiceProvider::class, - CachetHQ\Cachet\Providers\RouteServiceProvider::class, - - ]), + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + ])->toArray(), /* |-------------------------------------------------------------------------- @@ -212,44 +181,8 @@ return [ | */ - 'aliases' => [ - - 'App' => Illuminate\Support\Facades\App::class, - 'Artisan' => Illuminate\Support\Facades\Artisan::class, - 'Auth' => Illuminate\Support\Facades\Auth::class, - 'Blade' => Illuminate\Support\Facades\Blade::class, - 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, - 'Bus' => Illuminate\Support\Facades\Bus::class, - 'Cache' => Illuminate\Support\Facades\Cache::class, - 'Config' => Illuminate\Support\Facades\Config::class, - 'Cookie' => Illuminate\Support\Facades\Cookie::class, - 'Crypt' => Illuminate\Support\Facades\Crypt::class, - 'DB' => Illuminate\Support\Facades\DB::class, - 'Eloquent' => Illuminate\Database\Eloquent\Model::class, - 'Event' => Illuminate\Support\Facades\Event::class, - 'File' => Illuminate\Support\Facades\File::class, - 'Gate' => Illuminate\Support\Facades\Gate::class, - 'Hash' => Illuminate\Support\Facades\Hash::class, - 'Lang' => Illuminate\Support\Facades\Lang::class, - 'Log' => Illuminate\Support\Facades\Log::class, - 'Mail' => Illuminate\Support\Facades\Mail::class, - 'Notification' => Illuminate\Support\Facades\Notification::class, - 'Password' => Illuminate\Support\Facades\Password::class, - 'Queue' => Illuminate\Support\Facades\Queue::class, - 'Redirect' => Illuminate\Support\Facades\Redirect::class, - 'Redis' => Illuminate\Support\Facades\Redis::class, - 'Request' => Illuminate\Support\Facades\Request::class, - 'Response' => Illuminate\Support\Facades\Response::class, - 'Route' => Illuminate\Support\Facades\Route::class, - 'Schema' => Illuminate\Support\Facades\Schema::class, - 'Session' => Illuminate\Support\Facades\Session::class, - 'Storage' => Illuminate\Support\Facades\Storage::class, - 'URL' => Illuminate\Support\Facades\URL::class, - 'Validator' => Illuminate\Support\Facades\Validator::class, - 'View' => Illuminate\Support\Facades\View::class, - 'Binput' => GrahamCampbell\Binput\Facades\Binput::class, - 'Str' => Illuminate\Support\Str::class, - - ], + 'aliases' => Facade::defaultAliases()->merge([ + // 'Example' => App\Facades\Example::class, + ])->toArray(), ]; diff --git a/config/auth.php b/config/auth.php index a0697fac..9548c15d 100644 --- a/config/auth.php +++ b/config/auth.php @@ -1,14 +1,5 @@ [ - 'guard' => 'web', + 'guard' => 'web', 'passwords' => 'users', ], @@ -40,18 +31,13 @@ return [ | users are actually retrieved out of your database or other storage | mechanisms used by this application to persist your user's data. | - | Supported: "session", "token" + | Supported: "session" | */ 'guards' => [ 'web' => [ - 'driver' => 'session', - 'provider' => 'users', - ], - - 'api' => [ - 'driver' => 'token', + 'driver' => 'session', 'provider' => 'users', ], ], @@ -76,7 +62,7 @@ return [ 'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => \CachetHQ\Cachet\Models\User::class, + 'model' => App\Models\User::class, ], // 'users' => [ @@ -94,18 +80,36 @@ return [ | than one user table or model in the application and you want to have | separate password reset settings based on the specific user types. | - | The expire time is the number of minutes that the reset token should be + | The expiry time is the number of minutes that each reset token will be | considered valid. This security feature keeps tokens short-lived so | they have less time to be guessed. You may change this as needed. | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | */ 'passwords' => [ 'users' => [ 'provider' => 'users', - 'table' => 'password_resets', - 'expire' => 60, + 'table' => 'password_reset_tokens', + 'expire' => 60, + 'throttle' => 60, ], ], + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + ]; diff --git a/config/avatar.php b/config/avatar.php deleted file mode 100644 index 68590dd6..00000000 --- a/config/avatar.php +++ /dev/null @@ -1,88 +0,0 @@ - 'gd', - - // Whether all characters supplied must be replaced with their closest ASCII counterparts - 'ascii' => false, - - // Image shape: circle or square - 'shape' => 'circle', - - // Image width, in pixel - 'width' => 100, - - // Image height, in pixel - 'height' => 100, - - // Number of characters used as initials. If name consists of single word, the first N character will be used - 'chars' => 2, - - // font size - 'fontSize' => 48, - - // convert initial letter in uppercase - 'uppercase' => false, - - // Fonts used to render text. - // If contains more than one fonts, randomly selected based on name supplied - // You can provide absolute path, path relative to folder resources/laravolt/avatar/fonts/, or mixed. - 'fonts' => ['OpenSans-Bold.ttf', 'rockwell.ttf'], - - // List of foreground colors to be used, randomly selected based on name supplied - 'foregrounds' => [ - '#FFFFFF', - ], - - // List of background colors to be used, randomly selected based on name supplied - 'backgrounds' => [ - '#f44336', - '#E91E63', - '#9C27B0', - '#673AB7', - '#3F51B5', - '#2196F3', - '#03A9F4', - '#00BCD4', - '#009688', - '#4CAF50', - '#8BC34A', - '#CDDC39', - '#FFC107', - '#FF9800', - '#FF5722', - ], - - 'border' => [ - 'size' => 1, - - // border color, available value are: - // 'foreground' (same as foreground color) - // 'background' (same as background color) - // or any valid hex ('#aabbcc') - 'color' => 'foreground', - ], - -]; diff --git a/config/broadcasting.php b/config/broadcasting.php index 01c1213a..24104853 100644 --- a/config/broadcasting.php +++ b/config/broadcasting.php @@ -1,14 +1,5 @@ [ 'pusher' => [ - 'driver' => 'pusher', - 'key' => env('PUSHER_APP_KEY'), - 'secret' => env('PUSHER_APP_SECRET'), - 'app_id' => env('PUSHER_APP_ID'), + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), 'options' => [ - // + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', + 'port' => env('PUSHER_PORT', 443), + 'scheme' => env('PUSHER_SCHEME', 'https'), + 'encrypted' => true, + 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', + ], + 'client_options' => [ + // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html ], ], + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + 'redis' => [ - 'driver' => 'redis', + 'driver' => 'redis', 'connection' => 'default', ], diff --git a/config/cache.php b/config/cache.php index 06ec44c3..d4171e22 100644 --- a/config/cache.php +++ b/config/cache.php @@ -1,13 +1,6 @@ env('CACHE_DRIVER', 'file'), @@ -35,6 +26,9 @@ return [ | well as their drivers. You may even define multiple stores for the | same cache driver to group types of items stored in your caches. | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | */ 'stores' => [ @@ -45,44 +39,58 @@ return [ 'array' => [ 'driver' => 'array', + 'serialize' => false, ], 'database' => [ - 'driver' => 'database', - 'table' => 'cache', + 'driver' => 'database', + 'table' => 'cache', 'connection' => null, + 'lock_connection' => null, ], 'file' => [ 'driver' => 'file', - 'path' => storage_path('framework/cache/data'), + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), ], 'memcached' => [ - 'driver' => 'memcached', + 'driver' => 'memcached', 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), - 'sasl' => [ + 'sasl' => [ env('MEMCACHED_USERNAME'), env('MEMCACHED_PASSWORD'), ], 'options' => [ - // Memcached::OPT_CONNECT_TIMEOUT => 2000, + // Memcached::OPT_CONNECT_TIMEOUT => 2000, ], 'servers' => [ [ - 'host' => env('MEMCACHED_HOST', '127.0.0.1'), - 'port' => env('MEMCACHED_PORT', 11211), + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), 'weight' => 100, ], ], ], 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - 'password' => env('REDIS_PASSWORD', null), - 'port' => env('REDIS_PORT', 6379), - 'database' => env('REDIS_DB', 0), + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', ], ], @@ -92,12 +100,12 @@ return [ | Cache Key Prefix |-------------------------------------------------------------------------- | - | When utilizing a RAM based store such as APC or Memcached, there might - | be other applications utilizing the same cache. So, we'll specify a - | value to get prefixed to all our keys so we can avoid collisions. + | When utilizing the APC, database, memcached, Redis, or DynamoDB cache + | stores there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. | */ - 'prefix' => 'laravel', + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), ]; diff --git a/config/cachet.php b/config/cachet.php index 6e0c9f8d..771ff294 100644 --- a/config/cachet.php +++ b/config/cachet.php @@ -1,66 +1,78 @@ 'UTC', + 'enabled' => env('CACHET_ENABLED', true), /* - |-------------------------------------------------------------------------- - | Docker - |-------------------------------------------------------------------------- - | - | Is the installation running under a Docker container? - | - */ + |-------------------------------------------------------------------------- + | Cachet Path + |-------------------------------------------------------------------------- + | + | This is the URI path where Cachet will be accessible from. + */ + 'path' => env('CACHET_PATH', ''), - 'is_docker' => env('DOCKER', false), + 'guard' => env('CACHET_GUARD', null), /* - |-------------------------------------------------------------------------- - | Beacon - |-------------------------------------------------------------------------- - | - | Has the installation agreed to sending us Beacon data? - | - | Default: true - | - */ + |-------------------------------------------------------------------------- + | Cachet Domain + |-------------------------------------------------------------------------- + | + | This is the domain where Cachet will be accessible from. + | + */ + 'domain' => env('CACHET_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | Cachet Title + |-------------------------------------------------------------------------- + | + | This is the title of the status page. By default, this will be the name + | of your application. + | + */ + 'title' => env('CACHET_TITLE', env('APP_NAME').' - Status'), + + /* + |-------------------------------------------------------------------------- + | Cachet Middleware + |-------------------------------------------------------------------------- + | + | This is the middleware that will be applied to the status page. By + | default, the "web" middleware group will be applied, which means + | that the status page will be accessible by anyone. + | + */ + 'middleware' => [ + 'web', + ], + + 'api_middleware' => [ + 'api', + ], + + /* + |-------------------------------------------------------------------------- + | Cachet Major Outage Threshold + |-------------------------------------------------------------------------- + | + | This is the threshold at which a major outage is declared. + | + */ + 'major_outage' => 50.0, 'beacon' => env('CACHET_BEACON', true), - - /* - |-------------------------------------------------------------------------- - | Templates configurations - |-------------------------------------------------------------------------- - | - | Security fix: now user can provide information which will be included to the Twig sandbox settings - | - | Default: Described below - | - */ - 'twig' => [ - 'methods' => [], - 'functions' => [], - 'filters' => ['escape'], - 'tags' => ['if'], - 'props' => [], - ], ]; diff --git a/config/compile.php b/config/compile.php deleted file mode 100644 index 1f3f2b71..00000000 --- a/config/compile.php +++ /dev/null @@ -1,40 +0,0 @@ - [], - - /* - |-------------------------------------------------------------------------- - | Compiled File Providers - |-------------------------------------------------------------------------- - | - | Here you may list service providers which define a "compiles" function - | that returns additional files that should be compiled, providing an - | easy way to get common files from any packages you are utilizing. - | - */ - - 'providers' => [], - -]; diff --git a/config/cors.php b/config/cors.php index 6e843598..8a39e6da 100644 --- a/config/cors.php +++ b/config/cors.php @@ -1,32 +1,34 @@ false, - 'allowedOrigins' => ['*'], - 'allowedOriginsPatterns' => [], - 'allowedHeaders' => ['X-Cachet-Token'], - 'allowedMethods' => ['*'], - 'exposedHeaders' => [], - 'maxAge' => 3600, + 'paths' => ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, ]; diff --git a/config/database.php b/config/database.php index bb5f8221..137ad18c 100644 --- a/config/database.php +++ b/config/database.php @@ -1,13 +1,6 @@ env('DB_DRIVER', 'sqlite'), + 'default' => env('DB_CONNECTION', 'mysql'), /* |-------------------------------------------------------------------------- @@ -43,37 +36,61 @@ return [ 'connections' => [ 'sqlite' => [ - 'driver' => 'sqlite', + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), 'database' => env('DB_DATABASE', database_path('database.sqlite')), - 'prefix' => '', + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), ], 'mysql' => [ - 'driver' => 'mysql', - 'host' => env('DB_HOST', '127.0.0.1'), - 'unix_socket' => env('DB_UNIX_SOCKET', null), - 'port' => env('DB_PORT', '3306'), - 'database' => env('DB_DATABASE', 'forge'), - 'username' => env('DB_USERNAME', 'forge'), - 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_unicode_ci', - 'prefix' => env('DB_PREFIX', null), - 'strict' => false, - 'engine' => null, - ], - - 'pgsql' => [ - 'driver' => 'pgsql', - 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '5432'), + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), - 'charset' => 'utf8', - 'prefix' => env('DB_PREFIX', null), - 'schema' => env('DB_SCHEMA', 'public'), - 'sslmode' => 'prefer', + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), ], ], @@ -97,20 +114,36 @@ return [ |-------------------------------------------------------------------------- | | Redis is an open source, fast, and advanced key-value store that also - | provides a richer set of commands than a typical key-value systems + | provides a richer body of commands than a typical key-value system | such as APC or Memcached. Laravel makes it easy to dig right in. | */ 'redis' => [ - 'client' => 'predis', + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], 'default' => [ - 'host' => env('REDIS_HOST', '127.0.0.1'), - 'password' => env('REDIS_PASSWORD', null), - 'port' => env('REDIS_PORT', 6379), - 'database' => env('REDIS_DATABASE', 0), + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), ], ], diff --git a/config/debugbar.php b/config/debugbar.php deleted file mode 100644 index f2591b99..00000000 --- a/config/debugbar.php +++ /dev/null @@ -1,201 +0,0 @@ - env('DEBUGBAR_ENABLED', null), - - /* - |-------------------------------------------------------------------------- - | Storage settings - |-------------------------------------------------------------------------- - | - | DebugBar stores data for session/ajax requests. - | You can disable this, so the debugbar stores data in headers/session, - | but this can cause problems with large data collectors. - | By default, file storage (in the storage folder) is used. Redis and PDO - | can also be used. For PDO, run the package migrations first. - | - */ - 'storage' => [ - 'enabled' => true, - 'driver' => 'file', // redis, file, pdo, custom - 'path' => storage_path('debugbar'), // For file driver - 'connection' => null, // Leave null for default connection (Redis/PDO) - 'provider' => '', // Instance of StorageInterface for custom driver - ], - - /* - |-------------------------------------------------------------------------- - | Vendors - |-------------------------------------------------------------------------- - | - | Vendor files are included by default, but can be set to false. - | This can also be set to 'js' or 'css', to only include javascript or css vendor files. - | Vendor files are for css: font-awesome (including fonts) and highlight.js (css files) - | and for js: jquery and and highlight.js - | So if you want syntax highlighting, set it to true. - | jQuery is set to not conflict with existing jQuery scripts. - | - */ - - 'include_vendors' => true, - - /* - |-------------------------------------------------------------------------- - | Capture Ajax Requests - |-------------------------------------------------------------------------- - | - | The Debugbar can capture Ajax requests and display them. If you don't want this (ie. because of errors), - | you can use this option to disable sending the data through the headers. - | - | Optionally, you can also send ServerTiming headers on ajax requests for the Chrome DevTools. - */ - - 'capture_ajax' => true, - 'add_ajax_timing' => false, - - /* - |-------------------------------------------------------------------------- - | Custom Error Handler for Deprecated warnings - |-------------------------------------------------------------------------- - | - | When enabled, the Debugbar shows deprecated warnings for Symfony components - | in the Messages tab. - | - */ - 'error_handler' => false, - - /* - |-------------------------------------------------------------------------- - | Clockwork integration - |-------------------------------------------------------------------------- - | - | The Debugbar can emulate the Clockwork headers, so you can use the Chrome - | Extension, without the server-side code. It uses Debugbar collectors instead. - | - */ - 'clockwork' => false, - - /* - |-------------------------------------------------------------------------- - | DataCollectors - |-------------------------------------------------------------------------- - | - | Enable/disable DataCollectors - | - */ - - 'collectors' => [ - 'phpinfo' => true, // Php version - 'messages' => true, // Messages - 'time' => true, // Time Datalogger - 'memory' => true, // Memory usage - 'exceptions' => true, // Exception displayer - 'log' => true, // Logs from Monolog (merged in messages if enabled) - 'db' => true, // Show database (PDO) queries and bindings - 'views' => true, // Views with their data - 'route' => true, // Current route information - 'auth' => true, // Display Laravel authentication status - 'gate' => true, // Display Laravel Gate checks - 'session' => true, // Display session data - 'symfony_request' => true, // Only one can be enabled.. - 'mail' => true, // Catch mail messages - 'laravel' => false, // Laravel version and environment - 'events' => false, // All events fired - 'default_request' => false, // Regular or special Symfony request logger - 'logs' => false, // Add the latest log messages - 'files' => false, // Show the included files - 'config' => false, // Display config settings - ], - - /* - |-------------------------------------------------------------------------- - | Extra options - |-------------------------------------------------------------------------- - | - | Configure some DataCollectors - | - */ - - 'options' => [ - 'auth' => [ - 'show_name' => true, // Also show the users name/email in the debugbar - ], - 'db' => [ - 'with_params' => true, // Render SQL with the parameters substituted - 'backtrace' => true, // Use a backtrace to find the origin of the query in your files. - 'timeline' => false, // Add the queries to the timeline - 'explain' => [ // Show EXPLAIN output on queries - 'enabled' => false, - 'types' => ['SELECT'], // ['SELECT', 'INSERT', 'UPDATE', 'DELETE']; for MySQL 5.6.3+ - ], - 'hints' => true, // Show hints for common mistakes - ], - 'mail' => [ - 'full_log' => false, - ], - 'views' => [ - 'data' => false, //Note: Can slow down the application, because the data can be quite large.. - ], - 'route' => [ - 'label' => true, // show complete route on bar - ], - 'logs' => [ - 'file' => null, - ], - ], - - /* - |-------------------------------------------------------------------------- - | Inject Debugbar in Response - |-------------------------------------------------------------------------- - | - | Usually, the debugbar is added just before , by listening to the - | Response after the App is done. If you disable this, you have to add them - | in your template yourself. See http://phpdebugbar.com/docs/rendering.html - | - */ - - 'inject' => true, - - /* - |-------------------------------------------------------------------------- - | DebugBar route prefix - |-------------------------------------------------------------------------- - | - | Sometimes you want to set route prefix to be used by DebugBar to load - | its resources from. Usually the need comes from misconfigured web server or - | from trying to overcome bugs like this: http://trac.nginx.org/nginx/ticket/97 - | - */ - 'route_prefix' => '_debugbar', - - /* - |-------------------------------------------------------------------------- - | DebugBar route domain - |-------------------------------------------------------------------------- - | - | By default DebugBar route served from the same domain that request served. - | To override default domain, specify it as a non-empty value. - */ - 'route_domain' => null, -]; diff --git a/config/emoji.php b/config/emoji.php deleted file mode 100644 index 38834500..00000000 --- a/config/emoji.php +++ /dev/null @@ -1,60 +0,0 @@ - env('GITHUB_TOKEN', null), - - /* - |-------------------------------------------------------------------------- - | Cache Connection - |-------------------------------------------------------------------------- - | - | Here you may tell us what cache connection to use. To use the default, - | set this to null. - | - */ - - 'connection' => null, - - /* - |-------------------------------------------------------------------------- - | Cache Key - |-------------------------------------------------------------------------- - | - | Here you may tell us what cache key to use for storing the emoji map. - | - */ - - 'key' => 'emoji', - - /* - |-------------------------------------------------------------------------- - | Cache Life - |-------------------------------------------------------------------------- - | - | Here you may tell us how long in minutes to cache the emoji map. - | - */ - - 'life' => 10080, - -]; diff --git a/config/exceptions.php b/config/exceptions.php deleted file mode 100644 index bbdd386e..00000000 --- a/config/exceptions.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'GrahamCampbell\Exceptions\Transformers\AuthTransformer', - 'GrahamCampbell\Exceptions\Transformers\CsrfTransformer', - 'GrahamCampbell\Exceptions\Transformers\ModelTransformer', - 'CachetHQ\Cachet\Exceptions\Transformers\BusTransformer', - ], - - /* - |-------------------------------------------------------------------------- - | Exception Displayers - |-------------------------------------------------------------------------- - | - | Here are each of the exception displayers setup for your application. - | - | These displayers are sorted by priority. Note that when we are in debug - | mode, we will select the first valid displayer from the list, and when we - | are not in debug mode, we'll filter out all verbose displayers, then - | select the first valid displayer from the new list. - | - */ - - 'displayers' => [ - 'CachetHQ\Cachet\Exceptions\Displayers\MaintenanceDisplayer', - 'CachetHQ\Cachet\Exceptions\Displayers\SettingsDisplayer', - 'CachetHQ\Cachet\Exceptions\Displayers\RedirectDisplayer', - 'CachetHQ\Cachet\Exceptions\Displayers\ThrottleDisplayer', - 'CachetHQ\Cachet\Exceptions\Displayers\JsonValidationDisplayer', - 'GrahamCampbell\Exceptions\Displayers\DebugDisplayer', - 'GrahamCampbell\Exceptions\Displayers\HtmlDisplayer', - 'GrahamCampbell\Exceptions\Displayers\JsonDisplayer', - 'GrahamCampbell\Exceptions\Displayers\JsonApiDisplayer', - ], - - /* - |-------------------------------------------------------------------------- - | Displayer Filters - |-------------------------------------------------------------------------- - | - | Here are each of the filters for the displayers. - | - | This allows you to apply filters to your displayers in order to work out - | which displayer to use for each exception. This includes things like - | content type negotiation. - | - */ - - 'filters' => [ - 'GrahamCampbell\Exceptions\Filters\VerboseFilter', - 'GrahamCampbell\Exceptions\Filters\CanDisplayFilter', - 'GrahamCampbell\Exceptions\Filters\ContentTypeFilter', - 'CachetHQ\Cachet\Exceptions\Filters\ApiFilter', - ], - - /* - |-------------------------------------------------------------------------- - | Default Displayer - |-------------------------------------------------------------------------- - | - | Here you may define the default displayer for your application. - | - | This displayer will be used if your filters have filtered out all the - | displayers, otherwise leaving us unable to displayer the exception. - | - */ - - 'default' => 'GrahamCampbell\Exceptions\Displayers\HtmlDisplayer', - - /* - |-------------------------------------------------------------------------- - | Exception Levels - |-------------------------------------------------------------------------- - | - | Here are each of the log levels for the each exception. - | - | If an exception passes an instance of test for each key, then the log - | level used is the value associated with each key. - | - */ - - 'levels' => [ - 'Illuminate\Auth\Access\AuthorizationException' => 'warning', - 'Illuminate\Database\Eloquent\ModelNotFoundException' => 'warning', - 'Illuminate\Session\TokenMismatchException' => 'notice', - 'Symfony\Component\HttpKernel\Exception\HttpExceptionInterface' => 'notice', - 'Symfony\Component\Debug\Exception\FatalErrorException' => 'critical', - 'Exception' => 'error', - ], - -]; diff --git a/config/filesystems.php b/config/filesystems.php index d63eb16e..e9d9dbdb 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -1,14 +1,5 @@ env('FILESYSTEM_DRIVER', 'local'), - - /* - |-------------------------------------------------------------------------- - | Default Cloud Filesystem Disk - |-------------------------------------------------------------------------- - | - | Many applications store files both locally and in the cloud. For this - | reason, you may specify a default "cloud" driver here. This driver - | will be bound as the Cloud disk implementation in the container. - | - */ - - 'cloud' => env('FILESYSTEM_CLOUD', 's3'), + 'default' => env('FILESYSTEM_DISK', 'local'), /* |-------------------------------------------------------------------------- @@ -44,9 +22,9 @@ return [ | | Here you may configure as many filesystem "disks" as you wish, and you | may even configure multiple disks of the same driver. Defaults have - | been setup for each driver as an example of the required options. + | been set up for each driver as an example of the required values. | - | Supported Drivers: "local", "ftp", "s3", "rackspace" + | Supported Drivers: "local", "ftp", "sftp", "s3" | */ @@ -54,29 +32,45 @@ return [ 'local' => [ 'driver' => 'local', - 'root' => storage_path('app'), - ], - - 'database' => [ - 'driver' => 'local', - 'root' => database_path('backups'), + 'root' => storage_path('app'), + 'throw' => false, ], 'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', 'visibility' => 'public', + 'throw' => false, ], 's3' => [ 'driver' => 's3', - 'key' => env('AWS_KEY'), - 'secret' => env('AWS_SECRET'), - 'region' => env('AWS_REGION'), + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, ], ], + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + ]; diff --git a/config/hashing.php b/config/hashing.php index 30adba29..0e8a0bb3 100644 --- a/config/hashing.php +++ b/config/hashing.php @@ -1,14 +1,5 @@ [ - 'rounds' => env('BCRYPT_ROUNDS', 10), + 'rounds' => env('BCRYPT_ROUNDS', 12), + 'verify' => true, ], /* @@ -53,9 +45,10 @@ return [ */ 'argon' => [ - 'memory' => 1024, - 'threads' => 2, - 'time' => 2, + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, + 'verify' => true, ], ]; diff --git a/config/langs.php b/config/langs.php deleted file mode 100644 index d41fc5c6..00000000 --- a/config/langs.php +++ /dev/null @@ -1,153 +0,0 @@ - [ - 'name' => 'Afrikaans', - 'subset' => 'latin', - ], - 'ar' => [ - 'name' => 'Arabic', - 'subset' => 'latin', - ], - 'ca' => [ - 'name' => 'Catalan', - 'subset' => 'latin', - ], - 'cs' => [ - 'name' => 'Czech', - 'subset' => 'latin,latin-ext', - ], - 'da' => [ - 'name' => 'Danish', - 'subset' => 'latin,latin-ext', - ], - 'de' => [ - 'name' => 'Deutsch', - 'subset' => 'latin,latin-ext', - ], - 'el' => [ - 'name' => 'Greek', - 'subset' => 'greek,greek-ext', - ], - 'en' => [ - 'name' => 'English', - 'subset' => 'latin', - ], - 'en-UD' => [ - 'name' => 'CrowdIn - InContext Localization', - 'subset' => 'latin', - ], - 'es' => [ - 'name' => 'Español', - 'subset' => 'latin,latin-ext', - ], - 'fa' => [ - 'name' => 'Persian', - 'subset' => 'latin', - ], - 'fi' => [ - 'name' => 'Finnish', - 'subset' => 'latin,latin-ext', - ], - 'fr' => [ - 'name' => 'Français', - 'subset' => 'latin,latin-ext', - ], - 'he' => [ - 'name' => 'Hebrew', - 'subset' => 'latin', - ], - 'hu' => [ - 'name' => 'Hungarian', - 'subset' => 'latin,latin-ext', - ], - 'id' => [ - 'name' => 'Indonesian', - 'subset' => 'latin', - ], - 'it' => [ - 'name' => 'Italiano', - 'subset' => 'latin,latin-ext', - ], - 'ja' => [ - 'name' => 'Japanese', - 'subset' => 'latin', - ], - 'ko' => [ - 'name' => '한글', - 'subset' => 'latin', - ], - 'ms' => [ - 'name' => 'Malay', - 'subset' => 'latin', - ], - 'nl' => [ - 'name' => 'Nederlands', - 'subset' => 'latin,latin-ext', - ], - 'no' => [ - 'name' => 'Norwegian', - 'subset' => 'latin,latin-ext', - ], - 'pl' => [ - 'name' => 'Polski', - 'subset' => 'latin,latin-ext', - ], - 'pt-BR' => [ - 'name' => 'Portuguese, Brazilian', - 'subset' => 'latin,latin-ext', - ], - 'pt-PT' => [ - 'name' => 'Portuguese, Portugal', - 'subset' => 'latin,latin-ext', - ], - 'ro' => [ - 'name' => 'Romanian', - 'subset' => 'latin,latin-ext', - ], - 'ru' => [ - 'name' => 'Русский', - 'subset' => 'latin,cyrillic', - ], - 'sq' => [ - 'name' => 'Albanian', - 'subset' => 'latin,latin-ext', - ], - 'sr' => [ - 'name' => 'Sebrian (Cyrillic)', - 'subset' => 'latin,cyrillic,cyrillic-ext', - ], - 'sv-SE' => [ - 'name' => 'Swedish', - 'subset' => 'latin,latin-ext', - ], - 'tr' => [ - 'name' => 'Turkish', - 'subset' => 'latin,latin-ext', - ], - 'uk' => [ - 'name' => 'Ukranian', - 'subset' => 'latin,cyrillic-ext', - ], - 'vi' => [ - 'name' => 'Vietnamese', - 'subset' => 'latin,vietnamese', - ], - 'zh-CN' => [ - 'name' => '简体中文', - 'subset' => 'latin', - ], - 'zh-TW' => [ - 'name' => '繁體中文', - 'subset' => 'latin', - ], -]; diff --git a/config/logging.php b/config/logging.php index a397bd2f..c44d2763 100644 --- a/config/logging.php +++ b/config/logging.php @@ -1,15 +1,9 @@ env('LOG_CHANNEL', 'stack'), + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => false, + ], + /* |-------------------------------------------------------------------------- | Log Channels @@ -43,56 +53,78 @@ return [ 'channels' => [ 'stack' => [ - 'driver' => 'stack', + 'driver' => 'stack', 'channels' => ['single'], + 'ignore_exceptions' => false, ], 'single' => [ 'driver' => 'single', - 'path' => storage_path('logs/laravel.log'), - 'level' => 'debug', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, ], 'daily' => [ 'driver' => 'daily', - 'path' => storage_path('logs/laravel.log'), - 'level' => 'debug', - 'days' => 7, + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + 'replace_placeholders' => true, ], 'slack' => [ - 'driver' => 'slack', - 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), 'username' => 'Laravel Log', - 'emoji' => ':boom:', - 'level' => 'critical', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], ], 'stderr' => [ - 'driver' => 'monolog', + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), 'handler' => StreamHandler::class, - 'with' => [ + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ 'stream' => 'php://stderr', ], + 'processors' => [PsrLogMessageProcessor::class], ], 'syslog' => [ 'driver' => 'syslog', - 'level' => 'debug', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => LOG_USER, + 'replace_placeholders' => true, ], 'errorlog' => [ 'driver' => 'errorlog', - 'level' => 'debug', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, ], - 'bugsnag' => [ - 'driver' => 'bugsnag', + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, ], - 'debug' => [ - 'driver' => 'stack', - 'channels' => ['bugsnag', 'single'], + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), ], ], diff --git a/config/mail.php b/config/mail.php index 122eddc5..e894b2e5 100644 --- a/config/mail.php +++ b/config/mail.php @@ -1,57 +1,100 @@ env('MAIL_DRIVER', 'smtp'), + 'default' => env('MAIL_MAILER', 'smtp'), /* |-------------------------------------------------------------------------- - | SMTP Host Address + | Mailer Configurations |-------------------------------------------------------------------------- | - | Here you may provide the host address of the SMTP server used by your - | applications. A default option is provided that is compatible with - | the Mailgun mail service which will provide reliable deliveries. + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "log", "array", "failover", "roundrobin" | */ - 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN'), + ], - /* - |-------------------------------------------------------------------------- - | SMTP Host Port - |-------------------------------------------------------------------------- - | - | This is the SMTP port used by your application to deliver e-mails to - | users of the application. Like the host we have set this value to - | stay compatible with the Mailgun e-mail application by default. - | - */ + 'ses' => [ + 'transport' => 'ses', + ], - 'port' => env('MAIL_PORT', 587), + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => null, + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + ], + ], /* |-------------------------------------------------------------------------- @@ -65,51 +108,10 @@ return [ */ 'from' => [ - 'address' => env('MAIL_ADDRESS'), - 'name' => env('MAIL_NAME', 'Cachet'), + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), ], - /* - |-------------------------------------------------------------------------- - | E-Mail Encryption Protocol - |-------------------------------------------------------------------------- - | - | Here you may specify the encryption protocol that should be used when - | the application send e-mail messages. A sensible default using the - | transport layer security protocol should provide great security. - | - */ - - 'encryption' => env('MAIL_ENCRYPTION', 'tls'), - - /* - |-------------------------------------------------------------------------- - | SMTP Server Username - |-------------------------------------------------------------------------- - | - | If your SMTP server requires a username for authentication, you should - | set it here. This will get used to authenticate with your server on - | connection. You may also set the "password" value below this one. - | - */ - - 'username' => env('MAIL_USERNAME'), - - 'password' => env('MAIL_PASSWORD'), - - /* - |-------------------------------------------------------------------------- - | Sendmail System Path - |-------------------------------------------------------------------------- - | - | When using the "sendmail" driver to send e-mails, we will need to know - | the path to where Sendmail lives on this server. A default path has - | been provided here, which will work well on most of your systems. - | - */ - - 'sendmail' => '/usr/sbin/sendmail -bs', - /* |-------------------------------------------------------------------------- | Markdown Mail Settings diff --git a/config/markdown.php b/config/markdown.php deleted file mode 100644 index b6517bbc..00000000 --- a/config/markdown.php +++ /dev/null @@ -1,159 +0,0 @@ - false, - - /* - |-------------------------------------------------------------------------- - | CommonMark Extenstions - |-------------------------------------------------------------------------- - | - | This option specifies what extensions will be automatically enabled. - | Simply provide your extension class names here. - | - | Default: [] - | - */ - - 'extensions' => array_filter([ - env('CACHET_EMOJI', false) ? 'CachetHQ\Emoji\EmojiExtension' : null, - env('CACHET_AUTO_TWITTER', true) ? 'CachetHQ\Twitter\TwitterExtension' : null, - ]), - - /* - |-------------------------------------------------------------------------- - | Renderer Configuration - |-------------------------------------------------------------------------- - | - | This option specifies an array of options for rendering HTML. - | - | Default: [ - | 'block_separator' => "\n", - | 'inner_separator' => "\n", - | 'soft_break' => "\n", - | ] - | - */ - - 'renderer' => [ - 'block_separator' => "\n", - 'inner_separator' => "\n", - 'soft_break' => "\n\n", - ], - - /* - |-------------------------------------------------------------------------- - | Enable Em Tag Parsing - |-------------------------------------------------------------------------- - | - | This option specifies if `` parsing is enabled. - | - | Default: true - | - */ - - 'enable_em' => true, - - /* - |-------------------------------------------------------------------------- - | Enable Strong Tag Parsing - |-------------------------------------------------------------------------- - | - | This option specifies if `` parsing is enabled. - | - | Default: true - | - */ - - 'enable_strong' => true, - - /* - |-------------------------------------------------------------------------- - | Enable Asterisk Parsing - |-------------------------------------------------------------------------- - | - | This option specifies if `*` should be parsed for emphasis. - | - | Default: true - | - */ - - 'use_asterisk' => true, - - /* - |-------------------------------------------------------------------------- - | Enable Underscore Parsing - |-------------------------------------------------------------------------- - | - | This option specifies if `_` should be parsed for emphasis. - | - | Default: true - | - */ - - 'use_underscore' => true, - - /* - |-------------------------------------------------------------------------- - | HTML Input - |-------------------------------------------------------------------------- - | - | This option specifies how to handle untrusted HTML input. - | - | Default: 'strip' - | - */ - - 'html_input' => 'strip', - - /* - |-------------------------------------------------------------------------- - | Allow Unsafe Links - |-------------------------------------------------------------------------- - | - | This option specifies whether to allow risky image URLs and links. - | - | Default: true - | - */ - - 'allow_unsafe_links' => false, - - /* - |-------------------------------------------------------------------------- - | Maximum Nesting Level - |-------------------------------------------------------------------------- - | - | This option specifies the maximum permitted block nesting level. - | - | Default: INF - | - */ - - 'max_nesting_level' => INF, - -]; diff --git a/config/queue.php b/config/queue.php index a279d302..01c6b054 100644 --- a/config/queue.php +++ b/config/queue.php @@ -1,30 +1,19 @@ env('QUEUE_DRIVER', 'sync'), + 'default' => env('QUEUE_CONNECTION', 'sync'), /* |-------------------------------------------------------------------------- @@ -35,6 +24,8 @@ return [ | is used by your application. A default configuration has been added | for each back-end shipped with Laravel. You are free to add more. | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | */ 'connections' => [ @@ -44,37 +35,60 @@ return [ ], 'database' => [ - 'driver' => 'database', - 'table' => 'jobs', - 'queue' => 'default', + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', 'retry_after' => 90, + 'after_commit' => false, ], 'beanstalkd' => [ - 'driver' => 'beanstalkd', - 'host' => 'localhost', - 'queue' => 'default', + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', 'retry_after' => 90, + 'block_for' => 0, + 'after_commit' => false, ], 'sqs' => [ 'driver' => 'sqs', - 'key' => 'your-public-key', - 'secret' => 'your-secret-key', - 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id', - 'queue' => 'your-queue-name', - 'region' => 'us-east-1', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, ], 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - 'queue' => 'default', + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, ], ], + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'job_batches', + ], + /* |-------------------------------------------------------------------------- | Failed Queue Jobs @@ -87,8 +101,9 @@ return [ */ 'failed' => [ - 'database' => env('DB_DRIVER', 'sqlite'), - 'table' => 'failed_jobs', + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', ], ]; diff --git a/config/sanctum.php b/config/sanctum.php new file mode 100644 index 00000000..35d75b31 --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,83 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. This will override any values set in the token's + | "expires_at" attribute, but first-party sessions are not affected. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Token Prefix + |-------------------------------------------------------------------------- + | + | Sanctum can prefix new tokens in order to take advantage of numerous + | security scanning initiatives maintained by open source platforms + | that notify developers if they commit tokens into repositories. + | + | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning + | + */ + + 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + ], + +]; diff --git a/config/security.php b/config/security.php deleted file mode 100644 index 724338af..00000000 --- a/config/security.php +++ /dev/null @@ -1,25 +0,0 @@ - ['(? [ - 'token' => env('GITHUB_TOKEN'), - ], - 'mailgun' => [ - 'domain' => env('MAIL_USERNAME'), - 'secret' => env('MAIL_PASSWORD'), + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', ], - 'mandrill' => [ - 'secret' => env('MAIL_PASSWORD'), - ], - - 'nexmo' => [ - 'key' => env('NEXMO_KEY'), - 'secret' => env('NEXMO_SECRET'), - 'sms_from' => env('NEXMO_SMS_FROM'), + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), ], 'ses' => [ - 'key' => env('MAIL_USERNAME'), - 'secret' => env('MAIL_PASSWORD'), - 'region' => env('SES_REGION', 'us-east-1'), - ], - - 'sparkpost' => [ - 'secret' => env('MAIL_PASSWORD'), + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), ], ]; diff --git a/config/session.php b/config/session.php index dd1c1ead..e738cb3e 100644 --- a/config/session.php +++ b/config/session.php @@ -1,13 +1,6 @@ 120, + 'lifetime' => env('SESSION_LIFETIME', 120), 'expire_on_close' => false, @@ -79,7 +72,7 @@ return [ | */ - 'connection' => null, + 'connection' => env('SESSION_CONNECTION'), /* |-------------------------------------------------------------------------- @@ -99,13 +92,15 @@ return [ | Session Cache Store |-------------------------------------------------------------------------- | - | When using the "apc" or "memcached" session drivers, you may specify a - | cache store that should be used for these sessions. This value must - | correspond with one of the application's configured cache stores. + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" | */ - 'store' => null, + 'store' => env('SESSION_STORE'), /* |-------------------------------------------------------------------------- @@ -131,7 +126,10 @@ return [ | */ - 'cookie' => 'laravel_session', + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), /* |-------------------------------------------------------------------------- @@ -157,7 +155,7 @@ return [ | */ - 'domain' => env('SESSION_DOMAIN', null), + 'domain' => env('SESSION_DOMAIN'), /* |-------------------------------------------------------------------------- @@ -166,11 +164,11 @@ return [ | | By setting this option to true, session cookies will only be sent back | to the server if the browser has a HTTPS connection. This will keep - | the cookie from being sent to you if it can not be done securely. + | the cookie from being sent to you when it can't be done securely. | */ - 'secure' => env('SESSION_SECURE_COOKIE', false), + 'secure' => env('SESSION_SECURE_COOKIE'), /* |-------------------------------------------------------------------------- @@ -185,4 +183,32 @@ return [ 'http_only' => true, + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => false, + ]; diff --git a/config/setting.php b/config/setting.php deleted file mode 100644 index d7917b33..00000000 --- a/config/setting.php +++ /dev/null @@ -1,126 +0,0 @@ - true, - - /* - |-------------------------------------------------------------------------- - | Enable subscribers - |-------------------------------------------------------------------------- - | - | Whether to allow people to subscribe to the status page. - | - */ - - 'enable_subscribers' => true, - - /* - |-------------------------------------------------------------------------- - | Suppress notifications while in maintenance - |-------------------------------------------------------------------------- - | - | Whether to suppress notification channels if an issue is created during - | planned or in-progress maintenance periods. - | - */ - - 'suppress_notifications_in_maintenance' => true, - - /* - |-------------------------------------------------------------------------- - | Automatic Localization - |-------------------------------------------------------------------------- - | - | Whether to automatically localize the status to the visitors default - | browser language settings. - | - */ - - 'automatic_localization' => false, - - /* - |-------------------------------------------------------------------------- - | Show Support for Cachet - |-------------------------------------------------------------------------- - | - | Whether to show the "Powered by Cachet" text in the footer. - | - */ - - 'show_support' => true, - - /* - |-------------------------------------------------------------------------- - | Enable External Dependencies - |-------------------------------------------------------------------------- - | - | Whether to disable third-party dependencies. - | - */ - - 'enable_external_dependencies' => true, - - /* - |-------------------------------------------------------------------------- - | Show the timezone - |-------------------------------------------------------------------------- - | - | Whether to show the status page timezone in the footer. - | - */ - - 'show_timezone' => false, - - /* - |-------------------------------------------------------------------------- - | Skip subscriber verifications - |-------------------------------------------------------------------------- - | - | Whether to allow skipping of subscriber verifications. - | - */ - - 'skip_subscriber_verification' => false, - - /* - |-------------------------------------------------------------------------- - | Only disrupted days - |-------------------------------------------------------------------------- - | - | Whether to only show days with incidents, or each day in the timeline. - | - */ - - 'only_disrupted_days' => false, - - /* - |-------------------------------------------------------------------------- - | Always authenticate - |-------------------------------------------------------------------------- - | - | Whether to lock down Cachet and only allow viewing pages - | when authenticated. - | - */ - - 'always_authenticate' => false, -]; diff --git a/config/tinker.php b/config/tinker.php deleted file mode 100644 index c2cecedf..00000000 --- a/config/tinker.php +++ /dev/null @@ -1,27 +0,0 @@ - [], - -]; diff --git a/config/trustedproxy.php b/config/trustedproxy.php deleted file mode 100644 index e2fab526..00000000 --- a/config/trustedproxy.php +++ /dev/null @@ -1,53 +0,0 @@ - env('TRUSTED_PROXIES'), // [,], '*' - - /* - * To trust one or more specific proxies that connect - * directly to your server, use an array of IP addresses: - */ - // 'proxies' => ['192.168.1.1'], - - /* - * Or, to trust all proxies that connect - * directly to your server, use a "*" - */ - // 'proxies' => '*', - - /* - * Which headers to use to detect proxy related data (For, Host, Proto, Port) - * - * Options include: - * - * - Illuminate\Http\Request::HEADER_X_FORWARDED_ALL (use all x-forwarded-* headers to establish trust) - * - Illuminate\Http\Request::HEADER_FORWARDED (use the FORWARDED header to establish trust) - * - * @link https://symfony.com/doc/current/deployment/proxies.html - */ - 'headers' => Illuminate\Http\Request::HEADER_X_FORWARDED_ALL, - -]; diff --git a/config/twigbridge.php b/config/twigbridge.php deleted file mode 100644 index d4dcfd06..00000000 --- a/config/twigbridge.php +++ /dev/null @@ -1,212 +0,0 @@ - [ - /* - |-------------------------------------------------------------------------- - | Extension - |-------------------------------------------------------------------------- - | - | File extension for Twig view files. - | - */ - 'extension' => 'twig', - - /* - |-------------------------------------------------------------------------- - | Accepts all Twig environment configuration options - |-------------------------------------------------------------------------- - | - | http://twig.sensiolabs.org/doc/api.html#environment-options - | - */ - 'environment' => [ - - // When set to true, the generated templates have a __toString() method - // that you can use to display the generated nodes. - // default: false - 'debug' => false, - - // The charset used by the templates. - // default: utf-8 - 'charset' => 'utf-8', - - // The base template class to use for generated templates. - // default: TwigBridge\Twig\Template - 'base_template_class' => 'TwigBridge\Twig\Template', - - // An absolute path where to store the compiled templates, or false to disable caching. If null - // then the cache file path is used. - // default: cache file storage path - 'cache' => null, - - // When developing with Twig, it's useful to recompile the template - // whenever the source code changes. If you don't provide a value - // for the auto_reload option, it will be determined automatically based on the debug value. - 'auto_reload' => true, - - // If set to false, Twig will silently ignore invalid variables - // (variables and or attributes/methods that do not exist) and - // replace them with a null value. When set to true, Twig throws an exception instead. - // default: false - 'strict_variables' => false, - - // If set to true, auto-escaping will be enabled by default for all templates. - // default: 'html' - 'autoescape' => 'html', - - // A flag that indicates which optimizations to apply - // (default to -1 -- all optimizations are enabled; set it to 0 to disable) - 'optimizations' => -1, - ], - - /* - |-------------------------------------------------------------------------- - | Global variables - |-------------------------------------------------------------------------- - | - | These will always be passed in and can be accessed as Twig variables. - | NOTE: these will be overwritten if you pass data into the view with the same key. - | - */ - 'globals' => [], - ], - - 'extensions' => [ - - /* - |-------------------------------------------------------------------------- - | Extensions - |-------------------------------------------------------------------------- - | - | Enabled extensions. - | - | `Twig_Extension_Debug` is enabled automatically if twig.debug is TRUE. - | - */ - 'enabled' => [ - 'TwigBridge\Extension\Loader\Facades', - 'TwigBridge\Extension\Loader\Filters', - 'TwigBridge\Extension\Loader\Functions', - - 'TwigBridge\Extension\Laravel\Auth', - 'TwigBridge\Extension\Laravel\Config', - 'TwigBridge\Extension\Laravel\Dump', - 'TwigBridge\Extension\Laravel\Input', - 'TwigBridge\Extension\Laravel\Session', - 'TwigBridge\Extension\Laravel\Str', - 'TwigBridge\Extension\Laravel\Translator', - 'TwigBridge\Extension\Laravel\Url', - // 'TwigBridge\Extension\Laravel\Gate', - - // 'TwigBridge\Extension\Laravel\Form', - // 'TwigBridge\Extension\Laravel\Html', - // 'TwigBridge\Extension\Laravel\Legacy\Facades', - ], - - /* - |-------------------------------------------------------------------------- - | Facades - |-------------------------------------------------------------------------- - | - | Available facades. Access like `{{ Config.get('foo.bar') }}`. - | - | Each facade can take an optional array of options. To mark the whole facade - | as safe you can set the option `'is_safe' => true`. Setting the facade as - | safe means that any HTML returned will not be escaped. - | - | It is advisable to not set the whole facade as safe and instead mark the - | each appropriate method as safe for security reasons. You can do that with - | the following syntax: - | - | - | 'Form' => [ - | 'is_safe' => [ - | 'open' - | ] - | ] - | - | - | The values of the `is_safe` array must match the called method on the facade - | in order to be marked as safe. - | - */ - 'facades' => [], - - /* - |-------------------------------------------------------------------------- - | Functions - |-------------------------------------------------------------------------- - | - | Available functions. Access like `{{ secure_url(...) }}`. - | - | Each function can take an optional array of options. These options are - | passed directly to `Twig_SimpleFunction`. - | - | So for example, to mark a function as safe you can do the following: - | - | - | 'link_to' => [ - | 'is_safe' => ['html'] - | ] - | - | - | The options array also takes a `callback` that allows you to name the - | function differently in your Twig templates than what it's actually called. - | - | - | 'link' => [ - | 'callback' => 'link_to' - | ] - | - | - */ - 'functions' => [ - 'elixir', - 'head', - 'last', - ], - - /* - |-------------------------------------------------------------------------- - | Filters - |-------------------------------------------------------------------------- - | - | Available filters. Access like `{{ variable|filter }}`. - | - | Each filter can take an optional array of options. These options are - | passed directly to `Twig_SimpleFilter`. - | - | So for example, to mark a filter as safe you can do the following: - | - | - | 'studly_case' => [ - | 'is_safe' => ['html'] - | ] - | - | - | The options array also takes a `callback` that allows you to name the - | filter differently in your Twig templates than what is actually called. - | - | - | 'snake' => [ - | 'callback' => 'snake_case' - | ] - | - | - */ - 'filters' => [ - 'get' => 'data_get', - ], - ], -]; diff --git a/config/view.php b/config/view.php index f2463322..22b8a18d 100644 --- a/config/view.php +++ b/config/view.php @@ -1,14 +1,5 @@ realpath(storage_path('framework/views')), + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), ]; diff --git a/crowdin.yml b/crowdin.yml deleted file mode 100644 index 92fe4b70..00000000 --- a/crowdin.yml +++ /dev/null @@ -1,10 +0,0 @@ -files: - - - source: '/resources/lang/en/*.php' - translation: '/resources/lang/%locale%/%original_file_name%' - languages_mapping: - locale: - 'en-ES': 'es' - 'fa-IR': 'fa' - 'ko-KR': 'kr' - 'de-DE': 'de' diff --git a/database/.gitignore b/database/.gitignore index 9b1dffd9..9b19b93c 100644 --- a/database/.gitignore +++ b/database/.gitignore @@ -1 +1 @@ -*.sqlite +*.sqlite* diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php deleted file mode 100644 index 850f9b76..00000000 --- a/database/factories/ModelFactory.php +++ /dev/null @@ -1,144 +0,0 @@ -define(Component::class, function ($faker) { - return [ - 'name' => $faker->sentence(), - 'description' => $faker->paragraph(), - 'link' => $faker->url(), - 'status' => mt_rand(1, 4), - 'order' => 0, - ]; -}); - -$factory->define(ComponentGroup::class, function ($faker) { - return [ - 'name' => $faker->words(2, true), - 'order' => 0, - 'collapsed' => mt_rand(0, 4), - 'visible' => $faker->boolean(), - ]; -}); - -$factory->define(Incident::class, function ($faker) { - return [ - 'name' => $faker->sentence(), - 'user_id' => factory(User::class)->create()->id, - 'message' => $faker->paragraph(), - 'status' => mt_rand(1, 4), - 'visible' => 1, - 'stickied' => false, - ]; -}); - -$factory->define(IncidentTemplate::class, function ($faker) { - return [ - 'name' => 'Test Template', - 'slug' => 'test-template', - 'template' => "Name: {{ name }},\nMessage: {{ message }}", - ]; -}); - -$factory->define(IncidentUpdate::class, function ($faker) { - return [ - 'incident_id' => factory(Incident::class)->create()->id, - 'message' => $faker->paragraph(), - 'status' => mt_rand(1, 4), - 'user_id' => factory(User::class)->create()->id, - ]; -}); - -$factory->define(Metric::class, function ($faker) { - return [ - 'name' => $faker->sentence(), - 'suffix' => $faker->word(), - 'description' => $faker->paragraph(), - 'default_value' => 1, - 'places' => 2, - 'calc_type' => $faker->boolean(), - 'display_chart' => $faker->boolean(), - 'threshold' => 5, - ]; -}); - -$factory->define(MetricPoint::class, function ($faker) { - return [ - 'metric_id' => factory(Metric::class)->create()->id, - 'value' => mt_rand(1, 100), - 'counter' => 1, - 'created_at' => Carbon::now(), - 'updated_at' => Carbon::now(), - ]; -}); - -$factory->define(Schedule::class, function ($faker) { - return [ - 'name' => $faker->sentence(), - 'message' => $faker->paragraph(), - 'status' => Schedule::UPCOMING, - 'scheduled_at' => Carbon::now()->addDays(7), - ]; -}); - -$factory->define(Setting::class, function ($faker) { - return [ - 'name' => 'app_name', - 'value' => 'Cachet Test Demo', - ]; -}); - -$factory->define(Setting::class, function ($faker) { - return [ - 'name' => 'app_refresh_rate', - 'value' => '0', - ]; -}); - -$factory->define(Subscriber::class, function ($faker) { - return [ - 'email' => $faker->safeEmail, - 'verify_code' => 'Mqr80r2wJtxHCW5Ep4azkldFfIwHhw98M9HF04dn0z', - 'verified_at' => Carbon::now(), - ]; -}); - -$factory->define(Subscription::class, function ($faker) { - return [ - 'subscriber_id' => factory(Subscriber::class)->create()->id, - 'component_id' => factory(Component::class)->create()->id, - ]; -}); - -$factory->define(User::class, function ($faker) { - return [ - 'username' => $faker->userName, - 'email' => $faker->safeEmail, - 'password' => str_random(10), - 'remember_token' => str_random(10), - 'api_key' => str_random(20), - 'active' => true, - 'level' => 1, - ]; -}); diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 00000000..584104c9 --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,44 @@ + + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 00000000..444fafb7 --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php new file mode 100644 index 00000000..81a7229b --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php @@ -0,0 +1,28 @@ +string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('password_reset_tokens'); + } +}; diff --git a/database/migrations/2015_01_05_201324_CreateComponentGroupsTable.php b/database/migrations/2015_01_05_201324_CreateComponentGroupsTable.php deleted file mode 100644 index f6dd5895..00000000 --- a/database/migrations/2015_01_05_201324_CreateComponentGroupsTable.php +++ /dev/null @@ -1,39 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->string('name'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('component_groups'); - } -} diff --git a/database/migrations/2015_01_05_201444_CreateComponentsTable.php b/database/migrations/2015_01_05_201444_CreateComponentsTable.php deleted file mode 100644 index 4498f5a2..00000000 --- a/database/migrations/2015_01_05_201444_CreateComponentsTable.php +++ /dev/null @@ -1,51 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->string('name'); - $table->text('description'); - $table->text('link'); - $table->integer('status'); - $table->integer('order'); - $table->integer('group_id'); - $table->integer('user_id'); - $table->timestamps(); - $table->softDeletes(); - - $table->index('group_id'); - $table->index('user_id'); - $table->index('status'); - $table->index('order'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('components'); - } -} diff --git a/database/migrations/2015_01_05_202446_CreateIncidentTemplatesTable.php b/database/migrations/2015_01_05_202446_CreateIncidentTemplatesTable.php deleted file mode 100644 index 3b58da33..00000000 --- a/database/migrations/2015_01_05_202446_CreateIncidentTemplatesTable.php +++ /dev/null @@ -1,42 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->string('name'); - $table->string('slug'); - $table->longText('template'); - $table->timestamps(); - $table->softDeletes(); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('incident_templates'); - } -} diff --git a/database/migrations/2015_01_05_202609_CreateIncidentsTable.php b/database/migrations/2015_01_05_202609_CreateIncidentsTable.php deleted file mode 100644 index 4d2aa05a..00000000 --- a/database/migrations/2015_01_05_202609_CreateIncidentsTable.php +++ /dev/null @@ -1,48 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->integer('component_id')->default(0); - $table->string('name'); - $table->integer('status'); - $table->longText('message'); - $table->integer('user_id'); - $table->timestamps(); - $table->softDeletes(); - - $table->index('component_id'); - $table->index('status'); - $table->index('user_id'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('incidents'); - } -} diff --git a/database/migrations/2015_01_05_202730_CreateMetricPointsTable.php b/database/migrations/2015_01_05_202730_CreateMetricPointsTable.php deleted file mode 100644 index 6d3bc2f8..00000000 --- a/database/migrations/2015_01_05_202730_CreateMetricPointsTable.php +++ /dev/null @@ -1,42 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->integer('metric_id'); - $table->decimal('value', 10, 3); - $table->timestamps(); - - $table->index('metric_id'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('metric_points'); - } -} diff --git a/database/migrations/2015_01_05_202826_CreateMetricsTable.php b/database/migrations/2015_01_05_202826_CreateMetricsTable.php deleted file mode 100644 index 78a62063..00000000 --- a/database/migrations/2015_01_05_202826_CreateMetricsTable.php +++ /dev/null @@ -1,46 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->string('name'); - $table->string('suffix'); - $table->text('description'); - $table->decimal('default_value', 10, 3); - $table->tinyInteger('calc_type'); - $table->boolean('display_chart')->default(1); - $table->timestamps(); - - $table->index('display_chart'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('metrics'); - } -} diff --git a/database/migrations/2015_01_05_203014_CreateSettingsTable.php b/database/migrations/2015_01_05_203014_CreateSettingsTable.php deleted file mode 100644 index ccd0dd73..00000000 --- a/database/migrations/2015_01_05_203014_CreateSettingsTable.php +++ /dev/null @@ -1,40 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->string('name'); - $table->longText('value'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('settings'); - } -} diff --git a/database/migrations/2015_01_05_203235_CreateSubscribersTable.php b/database/migrations/2015_01_05_203235_CreateSubscribersTable.php deleted file mode 100644 index 204d3fbc..00000000 --- a/database/migrations/2015_01_05_203235_CreateSubscribersTable.php +++ /dev/null @@ -1,44 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->string('email'); - $table->string('verify_code'); - $table->timestamp('verified_at')->nullable(); - $table->timestamps(); - $table->softDeletes(); - - $table->unique(['email']); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('subscribers'); - } -} diff --git a/database/migrations/2015_01_05_203341_CreateUsersTable.php b/database/migrations/2015_01_05_203341_CreateUsersTable.php deleted file mode 100644 index 86eac205..00000000 --- a/database/migrations/2015_01_05_203341_CreateUsersTable.php +++ /dev/null @@ -1,51 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->string('username'); - $table->string('password'); - $table->rememberToken(); - $table->string('email'); - $table->string('api_key'); - $table->boolean('active')->default(1); - $table->tinyInteger('level')->default(2); - $table->timestamps(); - - $table->index('remember_token'); - $table->index('active'); - $table->unique('username'); - $table->unique('api_key'); - $table->unique('email'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('users'); - } -} diff --git a/database/migrations/2015_01_09_083419_AlterTableUsersAdd2FA.php b/database/migrations/2015_01_09_083419_AlterTableUsersAdd2FA.php deleted file mode 100644 index e8f2312e..00000000 --- a/database/migrations/2015_01_09_083419_AlterTableUsersAdd2FA.php +++ /dev/null @@ -1,37 +0,0 @@ -string('google_2fa_secret')->nullable()->after('remember_token'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn('google_2fa_secret'); - }); - } -} diff --git a/database/migrations/2015_01_16_083825_CreateTagsTable.php b/database/migrations/2015_01_16_083825_CreateTagsTable.php deleted file mode 100644 index 81edb136..00000000 --- a/database/migrations/2015_01_16_083825_CreateTagsTable.php +++ /dev/null @@ -1,42 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->string('name'); - $table->string('slug'); - $table->timestamps(); - - $table->unique(['name', 'slug']); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('tags'); - } -} diff --git a/database/migrations/2015_01_16_084030_CreateComponentTagTable.php b/database/migrations/2015_01_16_084030_CreateComponentTagTable.php deleted file mode 100644 index befb0409..00000000 --- a/database/migrations/2015_01_16_084030_CreateComponentTagTable.php +++ /dev/null @@ -1,42 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->integer('component_id'); - $table->integer('tag_id'); - - $table->index('component_id'); - $table->index('tag_id'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('component_tag'); - } -} diff --git a/database/migrations/2015_02_28_214642_UpdateIncidentsAddScheduledAt.php b/database/migrations/2015_02_28_214642_UpdateIncidentsAddScheduledAt.php deleted file mode 100644 index 5c2c7175..00000000 --- a/database/migrations/2015_02_28_214642_UpdateIncidentsAddScheduledAt.php +++ /dev/null @@ -1,37 +0,0 @@ -timestamp('scheduled_at')->after('user_id')->nullable()->default(null); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::table('incidents', function (Blueprint $table) { - $table->dropColumn('scheduled_at'); - }); - } -} diff --git a/database/migrations/2015_05_19_214534_AlterTableComponentGroupsAddOrder.php b/database/migrations/2015_05_19_214534_AlterTableComponentGroupsAddOrder.php deleted file mode 100644 index c5c7deae..00000000 --- a/database/migrations/2015_05_19_214534_AlterTableComponentGroupsAddOrder.php +++ /dev/null @@ -1,38 +0,0 @@ -integer('order')->after('name')->default(0); - $table->index('order'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::table('component_groups', function (Blueprint $table) { - $table->dropColumn('order'); - }); - } -} diff --git a/database/migrations/2015_05_20_073041_AlterTableIncidentsAddVisibileColumn.php b/database/migrations/2015_05_20_073041_AlterTableIncidentsAddVisibileColumn.php deleted file mode 100644 index 9fa00c9b..00000000 --- a/database/migrations/2015_05_20_073041_AlterTableIncidentsAddVisibileColumn.php +++ /dev/null @@ -1,39 +0,0 @@ -boolean('visible')->after('status')->default(1); - - $table->index('visible'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::table('incidents', function (Blueprint $table) { - $table->dropColumn('visible'); - }); - } -} diff --git a/database/migrations/2015_05_24_210939_create_jobs_table.php b/database/migrations/2015_05_24_210939_create_jobs_table.php deleted file mode 100644 index 3bf01a64..00000000 --- a/database/migrations/2015_05_24_210939_create_jobs_table.php +++ /dev/null @@ -1,44 +0,0 @@ -engine = 'InnoDB'; - - $table->bigIncrements('id'); - $table->string('queue'); - $table->text('payload'); - $table->tinyInteger('attempts')->unsigned(); - $table->tinyInteger('reserved')->unsigned(); - $table->unsignedInteger('reserved_at')->nullable(); - $table->unsignedInteger('available_at'); - $table->unsignedInteger('created_at'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('jobs'); - } -} diff --git a/database/migrations/2015_05_24_210948_create_failed_jobs_table.php b/database/migrations/2015_05_24_210948_create_failed_jobs_table.php deleted file mode 100644 index 6140896b..00000000 --- a/database/migrations/2015_05_24_210948_create_failed_jobs_table.php +++ /dev/null @@ -1,41 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->text('connection'); - $table->text('queue'); - $table->text('payload'); - $table->timestamp('failed_at'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::drop('failed_jobs'); - } -} diff --git a/database/migrations/2015_06_10_122216_AlterTableComponentsDropUserIdColumn.php b/database/migrations/2015_06_10_122216_AlterTableComponentsDropUserIdColumn.php deleted file mode 100644 index da818389..00000000 --- a/database/migrations/2015_06_10_122216_AlterTableComponentsDropUserIdColumn.php +++ /dev/null @@ -1,37 +0,0 @@ -dropColumn('user_id'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::table('components', function (Blueprint $table) { - $table->integer('user_id')->unsigned()->nullable()->default(null)->after('group_id'); - }); - } -} diff --git a/database/migrations/2015_06_10_122229_AlterTableIncidentsDropUserIdColumn.php b/database/migrations/2015_06_10_122229_AlterTableIncidentsDropUserIdColumn.php deleted file mode 100644 index 44e4ba6a..00000000 --- a/database/migrations/2015_06_10_122229_AlterTableIncidentsDropUserIdColumn.php +++ /dev/null @@ -1,37 +0,0 @@ -dropColumn('user_id'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::table('incidents', function (Blueprint $table) { - $table->integer('user_id')->unsigned()->nullable()->default(null)->after('message'); - }); - } -} diff --git a/database/migrations/2015_08_02_120436_AlterTableSubscribersRemoveDeletedAt.php b/database/migrations/2015_08_02_120436_AlterTableSubscribersRemoveDeletedAt.php deleted file mode 100644 index ffb6e5b1..00000000 --- a/database/migrations/2015_08_02_120436_AlterTableSubscribersRemoveDeletedAt.php +++ /dev/null @@ -1,41 +0,0 @@ -dropColumn('deleted_at'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('subscribers', function (Blueprint $table) { - $table->softDeletes(); - }); - } -} diff --git a/database/migrations/2015_08_13_214123_AlterTableMetricsAddDecimalPlacesColumn.php b/database/migrations/2015_08_13_214123_AlterTableMetricsAddDecimalPlacesColumn.php deleted file mode 100644 index a3070439..00000000 --- a/database/migrations/2015_08_13_214123_AlterTableMetricsAddDecimalPlacesColumn.php +++ /dev/null @@ -1,41 +0,0 @@ -integer('places')->unsigned()->default(2)->after('display_chart'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('metrics', function (Blueprint $table) { - $table->dropColumn('places'); - }); - } -} diff --git a/database/migrations/2015_10_31_211944_CreateInvitesTable.php b/database/migrations/2015_10_31_211944_CreateInvitesTable.php deleted file mode 100644 index b97f820e..00000000 --- a/database/migrations/2015_10_31_211944_CreateInvitesTable.php +++ /dev/null @@ -1,45 +0,0 @@ -engine = 'InnoDB'; - - $table->increments('id'); - $table->string('code')->unique(); - $table->string('email'); - $table->timestamp('claimed_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::drop('invites'); - } -} diff --git a/database/migrations/2015_11_03_211049_AlterTableComponentsAddEnabledColumn.php b/database/migrations/2015_11_03_211049_AlterTableComponentsAddEnabledColumn.php deleted file mode 100644 index f50dadef..00000000 --- a/database/migrations/2015_11_03_211049_AlterTableComponentsAddEnabledColumn.php +++ /dev/null @@ -1,41 +0,0 @@ -boolean('enabled')->after('group_id')->default(true); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('components', function (Blueprint $table) { - $table->dropColumn('enabled'); - }); - } -} diff --git a/database/migrations/2015_12_26_162258_AlterTableMetricsAddDefaultViewColumn.php b/database/migrations/2015_12_26_162258_AlterTableMetricsAddDefaultViewColumn.php deleted file mode 100644 index 9014ea11..00000000 --- a/database/migrations/2015_12_26_162258_AlterTableMetricsAddDefaultViewColumn.php +++ /dev/null @@ -1,41 +0,0 @@ -tinyInteger('default_view')->unsigned()->default(1)->after('places'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('metrics', function (Blueprint $table) { - $table->dropColumn('default_view'); - }); - } -} diff --git a/database/migrations/2016_01_09_141852_CreateSubscriptionsTable.php b/database/migrations/2016_01_09_141852_CreateSubscriptionsTable.php deleted file mode 100644 index f43ec71c..00000000 --- a/database/migrations/2016_01_09_141852_CreateSubscriptionsTable.php +++ /dev/null @@ -1,42 +0,0 @@ -increments('id'); - $table->integer('subscriber_id')->unsigned()->index(); - $table->integer('component_id')->unsigned()->index(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::drop('subscriptions'); - } -} diff --git a/database/migrations/2016_01_29_154937_AlterTableComponentGroupsAddCollapsedColumn.php b/database/migrations/2016_01_29_154937_AlterTableComponentGroupsAddCollapsedColumn.php deleted file mode 100644 index 8b8b9d84..00000000 --- a/database/migrations/2016_01_29_154937_AlterTableComponentGroupsAddCollapsedColumn.php +++ /dev/null @@ -1,41 +0,0 @@ -boolean('collapsed')->after('order')->default(false); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('component_groups', function (Blueprint $table) { - $table->dropColumn('collapsed'); - }); - } -} diff --git a/database/migrations/2016_02_18_085210_AlterTableMetricPointsChangeValueColumn.php b/database/migrations/2016_02_18_085210_AlterTableMetricPointsChangeValueColumn.php deleted file mode 100644 index 8c854d3e..00000000 --- a/database/migrations/2016_02_18_085210_AlterTableMetricPointsChangeValueColumn.php +++ /dev/null @@ -1,41 +0,0 @@ -decimal('value', 15, 3)->change(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('metric_points', function (Blueprint $table) { - $table->decimal('value', 10, 3)->change(); - }); - } -} diff --git a/database/migrations/2016_03_01_174858_AlterTableMetricPointsAddCounterColumn.php b/database/migrations/2016_03_01_174858_AlterTableMetricPointsAddCounterColumn.php deleted file mode 100644 index a6feaa55..00000000 --- a/database/migrations/2016_03_01_174858_AlterTableMetricPointsAddCounterColumn.php +++ /dev/null @@ -1,49 +0,0 @@ -integer('threshold')->unsigned()->default(5)->after('default_view'); - }); - - Schema::table('metric_points', function (Blueprint $table) { - $table->integer('counter')->unsigned()->default(1)->after('value'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('metrics', function (Blueprint $table) { - $table->dropColumn('threshold'); - }); - - Schema::table('metric_points', function (Blueprint $table) { - $table->dropColumn('counter'); - }); - } -} diff --git a/database/migrations/2016_03_08_125729_CreateIncidentUpdatesTable.php b/database/migrations/2016_03_08_125729_CreateIncidentUpdatesTable.php deleted file mode 100644 index 1f8f23be..00000000 --- a/database/migrations/2016_03_08_125729_CreateIncidentUpdatesTable.php +++ /dev/null @@ -1,46 +0,0 @@ -increments('id'); - $table->integer('incident_id')->unsigned(); - $table->integer('status'); - $table->longText('message'); - $table->integer('user_id')->unsigned(); - $table->timestamps(); - - $table->index('incident_id'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::drop('incident_updates'); - } -} diff --git a/database/migrations/2016_03_10_144613_AlterTableComponentGroupsMakeColumnInteger.php b/database/migrations/2016_03_10_144613_AlterTableComponentGroupsMakeColumnInteger.php deleted file mode 100644 index 1ece2b40..00000000 --- a/database/migrations/2016_03_10_144613_AlterTableComponentGroupsMakeColumnInteger.php +++ /dev/null @@ -1,45 +0,0 @@ -dropcolumn('collapsed'); - }); - - Schema::table('component_groups', function (Blueprint $table) { - $table->integer('collapsed')->unsigned()->default(1)->after('order'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('component_groups', function (Blueprint $table) { - $table->boolean('collapsed')->change(); - }); - } -} diff --git a/database/migrations/2016_04_05_142933_create_sessions_table.php b/database/migrations/2016_04_05_142933_create_sessions_table.php deleted file mode 100644 index e5dbfd4b..00000000 --- a/database/migrations/2016_04_05_142933_create_sessions_table.php +++ /dev/null @@ -1,44 +0,0 @@ -string('id')->unique(); - $table->integer('user_id')->nullable(); - $table->string('ip_address', 45)->nullable(); - $table->text('user_agent')->nullable(); - $table->text('payload'); - $table->integer('last_activity'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::drop('sessions'); - } -} diff --git a/database/migrations/2016_04_29_061916_AlterTableSubscribersAddGlobalColumn.php b/database/migrations/2016_04_29_061916_AlterTableSubscribersAddGlobalColumn.php deleted file mode 100644 index b5f65ddc..00000000 --- a/database/migrations/2016_04_29_061916_AlterTableSubscribersAddGlobalColumn.php +++ /dev/null @@ -1,41 +0,0 @@ -boolean('global')->after('verified_at')->default(1); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('subscribers', function (Blueprint $table) { - $table->dropColumn('global'); - }); - } -} diff --git a/database/migrations/2016_06_02_075012_AlterTableMetricsAddOrderColumn.php b/database/migrations/2016_06_02_075012_AlterTableMetricsAddOrderColumn.php deleted file mode 100644 index 967235a8..00000000 --- a/database/migrations/2016_06_02_075012_AlterTableMetricsAddOrderColumn.php +++ /dev/null @@ -1,41 +0,0 @@ -tinyInteger('order')->after('threshold')->default(0); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('metrics', function (Blueprint $table) { - $table->dropColumn('order'); - }); - } -} diff --git a/database/migrations/2016_06_05_091615_create_cache_table.php b/database/migrations/2016_06_05_091615_create_cache_table.php deleted file mode 100644 index 19fe094d..00000000 --- a/database/migrations/2016_06_05_091615_create_cache_table.php +++ /dev/null @@ -1,41 +0,0 @@ -string('key')->unique(); - $table->text('value'); - $table->integer('expiration'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::drop('cache'); - } -} diff --git a/database/migrations/2016_07_25_052444_AlterTableComponentGroupsAddVisibleColumn.php b/database/migrations/2016_07_25_052444_AlterTableComponentGroupsAddVisibleColumn.php deleted file mode 100644 index 4d933d3e..00000000 --- a/database/migrations/2016_07_25_052444_AlterTableComponentGroupsAddVisibleColumn.php +++ /dev/null @@ -1,46 +0,0 @@ -tinyInteger('visible') - ->after('order') - ->unsigned() - ->default(\CachetHQ\Cachet\Models\ComponentGroup::VISIBLE_AUTHENTICATED); - - $table->index('visible'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('component_groups', function (Blueprint $table) { - $table->dropColumn('visible'); - }); - } -} diff --git a/database/migrations/2016_08_23_114610_AlterTableUsersAddWelcomedColumn.php b/database/migrations/2016_08_23_114610_AlterTableUsersAddWelcomedColumn.php deleted file mode 100644 index 2783fa19..00000000 --- a/database/migrations/2016_08_23_114610_AlterTableUsersAddWelcomedColumn.php +++ /dev/null @@ -1,41 +0,0 @@ -boolean('welcomed')->default(false)->after('level'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('users', function (Blueprint $table) { - $table->dropColumn('welcomed'); - }); - } -} diff --git a/database/migrations/2016_09_04_100000_AlterTableIncidentsAddStickiedColumn.php b/database/migrations/2016_09_04_100000_AlterTableIncidentsAddStickiedColumn.php deleted file mode 100644 index 056c21e1..00000000 --- a/database/migrations/2016_09_04_100000_AlterTableIncidentsAddStickiedColumn.php +++ /dev/null @@ -1,39 +0,0 @@ -boolean('stickied')->after('visible')->default(false); - - $table->index('stickied'); - }); - } - - /** - * Reverse the migrations. - */ - public function down() - { - Schema::table('incidents', function (Blueprint $table) { - $table->dropColumn('stickied'); - }); - } -} diff --git a/database/migrations/2016_10_24_183415_AlterTableIncidentsAddOccurredAtColumn.php b/database/migrations/2016_10_24_183415_AlterTableIncidentsAddOccurredAtColumn.php deleted file mode 100644 index 9fad9497..00000000 --- a/database/migrations/2016_10_24_183415_AlterTableIncidentsAddOccurredAtColumn.php +++ /dev/null @@ -1,49 +0,0 @@ -timestamp('occurred_at')->nullable()->after('scheduled_at'); - }); - - // We need a better way of handling data migrations... - $system = app(System::class); - $prefix = $system->getTablePrefix(); - - DB::update("UPDATE {$prefix}incidents SET occurred_at = created_at"); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('incidents', function (Blueprint $table) { - $table->dropColumn('occurred_at'); - }); - } -} diff --git a/database/migrations/2016_10_30_174400_CreateSchedulesTable.php b/database/migrations/2016_10_30_174400_CreateSchedulesTable.php deleted file mode 100644 index 77211985..00000000 --- a/database/migrations/2016_10_30_174400_CreateSchedulesTable.php +++ /dev/null @@ -1,45 +0,0 @@ -increments('id'); - $table->string('name'); - $table->longText('message')->nullable()->default(null); - $table->tinyInteger('status')->unsigned()->default(0); - $table->timestamp('scheduled_at'); - $table->timestamp('completed_at')->nullable()->default(null); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::drop('schedules'); - } -} diff --git a/database/migrations/2016_10_30_174410_CreateScheduleComponentsTable.php b/database/migrations/2016_10_30_174410_CreateScheduleComponentsTable.php deleted file mode 100644 index 0ff151d8..00000000 --- a/database/migrations/2016_10_30_174410_CreateScheduleComponentsTable.php +++ /dev/null @@ -1,43 +0,0 @@ -increments('id'); - $table->integer('schedule_id')->unsigned(); - $table->integer('component_id')->unsigned(); - $table->tinyInteger('component_status')->unsigned(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::drop('schedule_components'); - } -} diff --git a/database/migrations/2016_10_30_182324_AlterTableIncidentsRemoveScheduledColumns.php b/database/migrations/2016_10_30_182324_AlterTableIncidentsRemoveScheduledColumns.php deleted file mode 100644 index a2d4ef5a..00000000 --- a/database/migrations/2016_10_30_182324_AlterTableIncidentsRemoveScheduledColumns.php +++ /dev/null @@ -1,50 +0,0 @@ -getTablePrefix(); - DB::update("INSERT INTO {$prefix}schedules (name, message, scheduled_at, created_at, updated_at) SELECT name, message, scheduled_at, created_at, updated_at FROM {$prefix}incidents WHERE scheduled_at IS NOT NULL"); - - DB::table('incidents')->whereNotNull('scheduled_at')->delete(); - - Schema::table('incidents', function (Blueprint $table) { - $table->dropColumn('scheduled_at'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('incidents', function (Blueprint $table) { - $table->timestamp('scheduled_at')->before('created_at')->nullable()->default(null); - }); - } -} diff --git a/database/migrations/2016_12_04_163502_AlterTableMetricsAddVisibleColumn.php b/database/migrations/2016_12_04_163502_AlterTableMetricsAddVisibleColumn.php deleted file mode 100644 index 51e36de0..00000000 --- a/database/migrations/2016_12_04_163502_AlterTableMetricsAddVisibleColumn.php +++ /dev/null @@ -1,43 +0,0 @@ -unsignedTinyInteger('visible')->after('order')->default(1); - - $table->index('visible'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('metrics', function (Blueprint $table) { - $table->dropColumn('visible'); - }); - } -} diff --git a/database/migrations/2016_12_05_185045_AlterTableComponentsAddMetaColumn.php b/database/migrations/2016_12_05_185045_AlterTableComponentsAddMetaColumn.php deleted file mode 100644 index fdfe6974..00000000 --- a/database/migrations/2016_12_05_185045_AlterTableComponentsAddMetaColumn.php +++ /dev/null @@ -1,41 +0,0 @@ -longText('meta')->nullable()->default(null)->after('enabled'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('components', function (Blueprint $table) { - $table->dropColumn('meta'); - }); - } -} diff --git a/database/migrations/2016_12_29_124643_AlterTableSubscribersAddPhoneNumberSlackColumns.php b/database/migrations/2016_12_29_124643_AlterTableSubscribersAddPhoneNumberSlackColumns.php deleted file mode 100644 index a47b7940..00000000 --- a/database/migrations/2016_12_29_124643_AlterTableSubscribersAddPhoneNumberSlackColumns.php +++ /dev/null @@ -1,43 +0,0 @@ -string('email')->nullable()->default(null)->change(); - $table->string('phone_number')->nullable()->default(null)->after('verify_code'); - $table->string('slack_webhook_url')->nullable()->default(null)->after('phone_number'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('subscribers', function (Blueprint $table) { - $table->dropColumn(['phone_number', 'slack_webhook_url']); - }); - } -} diff --git a/database/migrations/2016_12_29_155956_AlterTableComponentsMakeLinkNullable.php b/database/migrations/2016_12_29_155956_AlterTableComponentsMakeLinkNullable.php deleted file mode 100644 index 47cd317e..00000000 --- a/database/migrations/2016_12_29_155956_AlterTableComponentsMakeLinkNullable.php +++ /dev/null @@ -1,39 +0,0 @@ -text('link')->nullable()->change(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - // - } -} diff --git a/database/migrations/2017_01_03_143916_create_notifications_table.php b/database/migrations/2017_01_03_143916_create_notifications_table.php deleted file mode 100644 index d38e48c2..00000000 --- a/database/migrations/2017_01_03_143916_create_notifications_table.php +++ /dev/null @@ -1,44 +0,0 @@ -uuid('id')->primary(); - $table->string('type'); - $table->morphs('notifiable'); - $table->text('data'); - $table->timestamp('read_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('notifications'); - } -} diff --git a/database/migrations/2017_02_03_222218_CreateActionsTable.php b/database/migrations/2017_02_03_222218_CreateActionsTable.php deleted file mode 100644 index 7c535b18..00000000 --- a/database/migrations/2017_02_03_222218_CreateActionsTable.php +++ /dev/null @@ -1,45 +0,0 @@ -increments('id'); - $table->string('class_name'); - $table->bigInteger('user_id')->unsigned()->index(); - $table->string('username'); - $table->string('information')->nullable(); - $table->string('description'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('actions'); - } -} diff --git a/database/migrations/2017_06_13_181049_CreateMetaTable.php b/database/migrations/2017_06_13_181049_CreateMetaTable.php deleted file mode 100644 index 30f73b14..00000000 --- a/database/migrations/2017_06_13_181049_CreateMetaTable.php +++ /dev/null @@ -1,46 +0,0 @@ -increments('id'); - $table->string('key')->index(); - $table->string('value'); - $table->integer('meta_id')->unsigned(); - $table->string('meta_type'); - $table->timestamps(); - - $table->index(['meta_id', 'meta_type']); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('meta'); - } -} diff --git a/database/migrations/2017_07_18_214718_CreateIncidentComponents.php b/database/migrations/2017_07_18_214718_CreateIncidentComponents.php deleted file mode 100644 index f1926441..00000000 --- a/database/migrations/2017_07_18_214718_CreateIncidentComponents.php +++ /dev/null @@ -1,43 +0,0 @@ -increments('id'); - $table->integer('incident_id')->unsigned()->index(); - $table->integer('component_id')->unsigned()->index(); - $table->integer('status_id')->unsigned()->index(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('incident_components'); - } -} diff --git a/database/migrations/2017_09_14_180434_AlterIncidentsAddUserId.php b/database/migrations/2017_09_14_180434_AlterIncidentsAddUserId.php deleted file mode 100644 index 55e42b6a..00000000 --- a/database/migrations/2017_09_14_180434_AlterIncidentsAddUserId.php +++ /dev/null @@ -1,41 +0,0 @@ -integer('user_id')->unsigned()->nullable()->default(null)->index()->after('id'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('incidents', function (Blueprint $table) { - $table->dropColumn('user_id'); - }); - } -} diff --git a/database/migrations/2018_04_02_163328_CreateTaggablesTable.php b/database/migrations/2018_04_02_163328_CreateTaggablesTable.php deleted file mode 100644 index 7a05ce3e..00000000 --- a/database/migrations/2018_04_02_163328_CreateTaggablesTable.php +++ /dev/null @@ -1,42 +0,0 @@ -increments('id'); - $table->integer('tag_id')->unsigned()->index(); - $table->morphs('taggable'); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('taggables'); - } -} diff --git a/database/migrations/2018_04_02_163658_MigrateComponentTagTable.php b/database/migrations/2018_04_02_163658_MigrateComponentTagTable.php deleted file mode 100644 index 92690fb3..00000000 --- a/database/migrations/2018_04_02_163658_MigrateComponentTagTable.php +++ /dev/null @@ -1,57 +0,0 @@ -get()->map(function ($tag) { - return [ - 'tag_id' => $tag->tag_id, - 'taggable_type' => 'components', - 'taggable_id' => $tag->component_id, - ]; - }); - - DB::table('taggables')->insert($tags->toArray()); - - Schema::dropIfExists('component_tag'); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::create('component_tag', function (Blueprint $table) { - $table->engine = 'InnoDB'; - - $table->increments('id'); - $table->integer('component_id'); - $table->integer('tag_id'); - - $table->index('component_id'); - $table->index('tag_id'); - }); - } -} diff --git a/database/migrations/2018_06_14_201440_AlterSchedulesSoftDeletes.php b/database/migrations/2018_06_14_201440_AlterSchedulesSoftDeletes.php deleted file mode 100644 index fb802aba..00000000 --- a/database/migrations/2018_06_14_201440_AlterSchedulesSoftDeletes.php +++ /dev/null @@ -1,41 +0,0 @@ -softDeletes(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('schedules', function (Blueprint $table) { - $table->dropSoftDeletes(); - }); - } -} diff --git a/database/migrations/2018_06_17_182507_AlterIncidentsAddNotifications.php b/database/migrations/2018_06_17_182507_AlterIncidentsAddNotifications.php deleted file mode 100644 index 28388137..00000000 --- a/database/migrations/2018_06_17_182507_AlterIncidentsAddNotifications.php +++ /dev/null @@ -1,41 +0,0 @@ -boolean('notifications')->default(false)->after('stickied'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('incidents', function (Blueprint $table) { - $table->dropColumn('notifications'); - }); - } -} diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 00000000..249da817 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2019_12_12_131400_AlterJobsDropReserved.php b/database/migrations/2019_12_12_131400_AlterJobsDropReserved.php deleted file mode 100644 index 903d2df1..00000000 --- a/database/migrations/2019_12_12_131400_AlterJobsDropReserved.php +++ /dev/null @@ -1,41 +0,0 @@ -dropColumn('reserved'); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::table('jobs', function (Blueprint $table) { - $table->tinyInteger('reserved')->unsigned()->default(0)->after('attempts'); - }); - } -} diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 00000000..e828ad81 --- /dev/null +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 00000000..a0840ca8 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,23 @@ +create(); + + \App\Models\User::factory()->create([ +// 'name' => 'Test User', + 'email' => 'test@test.com', + 'password' => bcrypt('test123'), + ]); + } +} diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php deleted file mode 100644 index 834f35ea..00000000 --- a/database/seeds/DatabaseSeeder.php +++ /dev/null @@ -1,25 +0,0 @@ - **This is not secure** -> For obvious reasons, sending your authentication details in plain text is not -> secure. We do advise that you add SSL to your Cachet installation for added -> security, but suggest using API tokens. - -To authenticate your requests you only need to provide your email and password. - -``` -$ curl -u username@example.com:password -H "Content-Type: application/json" \ - -d '{"name":"API","description":"An example description","status":1}' \ - http://status.cachethq.io/api/v1/components -``` - -## API Token - -The API Token is generated at installation time for the main user or when a -new team member is added to your status page and can be found on your profile -page (click your profile picture to get there). - -Once you have your token you'll need to add a new request header of -`X-Cachet-Token: TOKEN` - -``` -$ curl -H "Content-Type: application/json;" -H "X-Cachet-Token: YOUR_KEY_HERE" \ - -d '{"name":"API","description":"An example description","status":1}' \ - http://status.cachethq.io/api/v1/components -``` - - - -[1]: http://en.wikipedia.org/wiki/Basic_access_authentication diff --git a/docs/api/api-documentation.md b/docs/api/api-documentation.md deleted file mode 100644 index 665cf883..00000000 --- a/docs/api/api-documentation.md +++ /dev/null @@ -1,48 +0,0 @@ -# API Documentation for Cachet - -## `GET /api/v1/ping` - -Ping the Cachet instance. - -## `GET /api/v1/version` - -Get the version of Cachet installed. - -## `GET /api/v1/status` - -Get the overall system status. - -## `GET /api/v1/components` - -Get all components. - -## `GET /api/v1/components/:id` - -Get a single component. - -### Params - -- `id` the ID of the component - -## `POST /api/v1/components` - -Create a new component. - -### Params - -- `name` the name of the component -- `description` may be left empty -- `status` -- `link` -- `order` -- `group_id` -- `enabled` -- `meta` - -## `DELETE /api/v1/components/:id` - -Delete a component. - -### Params - -- `id` diff --git a/docs/beacon.md b/docs/beacon.md deleted file mode 100644 index c4439e5f..00000000 --- a/docs/beacon.md +++ /dev/null @@ -1,19 +0,0 @@ -# About Beacon and the information we collect - -To help us understand how Cachet is used, we collect anonymous usage data. - -If you'd prefer not to provide us with this anonymous usage data, please set `CACHET_BEACON` to `false` in your `.env` file. - -## Data collected by Beacon - -- `install_id` - a unique, anonymous installation ID -- `version` - the version of Cachet being used -- `docker` - whether Cachet is being ran from a Docker container -- `database` - the database driver being used -- `data.components` - the amount of configured Components -- `data.incidents` - the amount of reported Incidents -- `data.metrics` - the amount of configured Metrics -- `data.users` - the amount of users -- `data.actions` - the amount of actions performed -- `data.tags` - the amount of Tags created -- `data.schedules` - the amount of reported Schedules diff --git a/docs/component-statuses.md b/docs/component-statuses.md deleted file mode 100644 index f91ad306..00000000 --- a/docs/component-statuses.md +++ /dev/null @@ -1,13 +0,0 @@ -# Component Statuses - -Unlike Incidents, Cachet starts listing Component statuses from 1. -When creating or updating a component, you'll need to specify a status for it. - -A status can be one of the following: - -Status|Name|Description -------|----|----------- -1|Operational|The component is working -2|Performance issues|The component is experiencing some slowness. -3|Partial Outage|The component may not be working for everybody. This could be a geographical issue for example. -4|Major outage|The component is not working for anybody. diff --git a/docs/faq.md b/docs/faq.md deleted file mode 100644 index 2ac2e314..00000000 --- a/docs/faq.md +++ /dev/null @@ -1,74 +0,0 @@ -# Frequently Asked Questions - -## Logging In - -### I can't login to Cachet, can you reset my password? - -We don't have access to your installation, but you are able to reset your password manually: - -Follow the commands below, replacing `:userId` with the ID of your user. The initially created user will be `1`. - -```bash -$ cd /var/www/ # the root of your Cachet installation -$ php artisan tinker -Psy Shell v0.8.8 (PHP 7.1.6 — cli) by Justin Hileman ->>> $user = CachetHQ\Cachet\Models\User::find(:userId); -=> CachetHQ\Cachet\Models\User {#865 - id: 1, - username: "test", - email: "test@example.com", - api_key: "9yMHsdioQosnyVK4iCVR", - active: 1, - level: 1, - created_at: "2015-07-24 13:42:10", - updated_at: "2015-07-28 15:12:55", -} ->>> $user->update(['password' => 'New Password']); ->>> exit -``` - -## Databases - -### Does Cachet support database X? - -Cachet has built-in support for: - -- MySQL/MariaDB -- SQLite -- PostgreSQL -- SQL Server - -### Can Cachet support database X? - -Cachet is built on the [Laravel](https://laravel.com) framework. By default, -Laravel supports the databases listed above but can be extended to support -new drivers, so whilst technically possible, it's not within scope of the -core team to provide support. - -Each new driver requires additional support, testing and maintenance to -retain compatibility with the features we want to build into Cachet in the -future. - -## Support and troubleshooting - -### Do you offer paid support for Cachet? - -We have been experimenting with paid support for Cachet at a limited scale. -Cachet is not a full-time job, so our time is low and we cannot yet -promise that your support request will be dealt with immediately. - -## Cachet usage - -### Why isn't the _Subscribe_ button enabled? - -Cachet checks some informations before displaying the _Subscribe_ button, -because checking the "Enable subscribers" is not enough. -To see the _Subscribe_ button you need to: - -- Check the box "Enable subscribers" in the settings. -- Set the `MAIL_*` option in your `.env` file. - -The second item is important, because if your mail is not well configured you -won't be able to send mails to your subscribers. - -> Note: The MAIL\_NAME **is** mandatory too, it is the sender name. diff --git a/docs/getting-started.md b/docs/getting-started.md deleted file mode 100644 index 30786d01..00000000 --- a/docs/getting-started.md +++ /dev/null @@ -1 +0,0 @@ -# Getting started with Cachet diff --git a/docs/images/setup/enable-subscribers.png b/docs/images/setup/enable-subscribers.png deleted file mode 100644 index c088c39b..00000000 Binary files a/docs/images/setup/enable-subscribers.png and /dev/null differ diff --git a/docs/images/sponsorships/exascale.jpg b/docs/images/sponsorships/exascale.jpg deleted file mode 100644 index 52caa72d..00000000 Binary files a/docs/images/sponsorships/exascale.jpg and /dev/null differ diff --git a/docs/incidents/index.md b/docs/incidents/index.md deleted file mode 100644 index ea5636c1..00000000 --- a/docs/incidents/index.md +++ /dev/null @@ -1,41 +0,0 @@ -# Incidents - -An incident is something that should not happen, but that happens anyway. - -## What is exactly an incident - -In your status page you are showing the state of some components. It may be a -server, a database, of whatever you want. -If your database server crashes, it is an incident. - -## Why should I create an incident - -Having a status page is a good thing, being honest with the state of your -components is better. -A status page is not only there to show a green light, it's also there to show -why something bad is happening, and when it will be fixed. - -So, when your component experiences a problem, it's a good practice to create an -incident. - -## How to use the incidents - -When experiencing an incident, it's good to keep being up-to-date with what -happens in the real world. That's why you can use _incident updates_. - -How you manage your incidents is up to you, but if you have no idea you can do -the following: - -1. An incident happens. While a team is working to fix it, a person is creating - an incident. Be clear about what happens. At the same time, set the concerned - component with the right status (_Major Outage_, _Performance issues_ or - other) -2. You identify the origin of the problem, add an _incident update_ to explain - what is the problem, if it's important or not. -3. You think the problem is fixed but are not sure, add an incident update to - explain that. Say it should be fixed, you are watching if everything keeps - being good. -4. If it's not fixed, add an _incident update_ as in the second point because - it's identified bt not fixed. If it's fixed, congratulation! Add an _incident - update_ to explain the details, and say it's definitely fixed. Do not forget - to set the component as _Operational_ again. diff --git a/docs/metrics/create-metric.md b/docs/metrics/create-metric.md deleted file mode 100644 index b0615a7b..00000000 --- a/docs/metrics/create-metric.md +++ /dev/null @@ -1,54 +0,0 @@ -# Create a metric - -This documentation will guide you through the metric creation. -You need to know [what is a metric][1]. - -## Filling the form - -Creating a metric is as simple as filling a form. You just need to know what do -the fields mean. - -To access to the metrics creation, follow these steps: - -- Log into your Cachet instance. -- Once on the Dashboard click `Metrics` in the sidebar. -- Click the `Create a metric` button. - -And you are there! You should be able to see the metric form. -Let's explain the fields: - -- `Name`: The name of the metric as it will be shown on the status page. - Example: "API response time". -- `Suffix`: The suffix that will be added in the tooltip when you put your mouse - over the point on the metric. Usually it's the unit of the raw data. Example: - "ms". If you send "42" to the metric, then "42ms" would be show in the - tooltip. -- `Description`: A description of the metric. What is the usage of the metric? - What does it measure? Example: "The average response time of our API". -- `Calculation of metrics`: What computation should be done on your data before - displaying them in the metric? It may be either _Sum_ or _Average_. Example: - _Average_ to compute the average reponse time for a given time. -- `Default view`: The default view of the metric. Viewing the datas of 1 year - ago is not useful, but it's about your preference to see datas of the last - hour, 12 hours, week or month. Example: _Last 12 hours_ because you want to - see the last 12 hours of data by default. It's only the default view, this can - be changed in a select box. -- `Decimal places` The number of decimal of the point that is displayed. If you - are computing the average of something it's almost sure that you'll get an - average with a coma, line 42,424242. Example: 2 to get 42,42 instead of a long - number. -- `How many minutes of threshold between metric points?`: The number of minutes - between the points in the metric. According to your needs it may be 1, 5 or - even 30. It's really up to you. Example: 60 to get one point every hour. -- `Display chart on the status page?`: If checked, this chart will be displayed - on the status page. But it's possible to create the metric and not showing it. -- `Visibility`: Who should be able to see the chart? You have three choices: - - `Visible to authenticated users`: It means that people won't be able to - see it except if they are authenticated. Useful if it's an internal metric. - - `Visible to everybody`: It means that every user, even not authenticated, - will be able to see the chart. - - `Always hidden`: It means that nobody will be able to see the chart. - - - -[1]: index.md diff --git a/docs/metrics/index.md b/docs/metrics/index.md deleted file mode 100644 index 6efd6764..00000000 --- a/docs/metrics/index.md +++ /dev/null @@ -1,32 +0,0 @@ -# Metrics - -This guide aims to explain basics about metrics. - -## What are metrics - -When you do monitoring on your services, servers, APIs or others, you can get -raw data. These datas may be a response time to a request, the number of queries -handled in a minute, etc. - -The metrics are these raw datas. Using the [Cachet's API][1] you can send the datas -about what you are monitoring to Cachet. - - -## What can do metrics for you - -Having good metrics to show may be great for customers or partners. - -You have a big webservice that is under pressure? So it's important to have a -short response time. A metric could show to your users that the webservice is -responding fast! -Imagine, you have a metric named "Response time". Every 10 seconds you call your -webservice, and send the response time to the Cachet's API, in the metric. On -your status page you'll be able to see the average response time for a minute -for example. - -Doing so, your users would see that during the last 10 minutes your response -time was worst than previously, and it begins to being better. - - - -[1]: api-documentation.md diff --git a/docs/setup/beacons.md b/docs/setup/beacons.md deleted file mode 100644 index 11c9a729..00000000 --- a/docs/setup/beacons.md +++ /dev/null @@ -1,30 +0,0 @@ -# Beacons - -> **Version Support** -> -> Beacons will be introduced in v2.4.0 - -Cachet will periodically communicate with our remote server. This is done so -that we're able to gather information about the current version of Cachet -and will later be used for system announcements. - -## Disabling the beacon - -To disable the beacon, you can turn off the following setting in your .env file. - -``` -CACHET_BEACON=false -``` - -## What is reported? - -We report the following information to our server: - -- A unique installation ID -- The current version of Cachet -- A support contact email (the first enabled admin's email) -- Anonymous statistics (the number of users, incidents, components and metrics) - -> **Support Contact Email** -> The contact email is used for the sole purpose of security -> announcements and will never be used for anything else. diff --git a/docs/setup/configuring-mail.md b/docs/setup/configuring-mail.md deleted file mode 100644 index 63d73498..00000000 --- a/docs/setup/configuring-mail.md +++ /dev/null @@ -1,66 +0,0 @@ -# Configuring Mail - -Your `.env` file will need to include the following setting keys. - -``` -MAIL_DRIVER=smtp -MAIL_HOST=mailtrap.io -MAIL_PORT=587 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ADDRESS=null -MAIL_NAME=null -MAIL_ENCRYPTION=tls -``` - -After making changes to your mail configuration you'll need to run the -following command within your Cachet installation directory. - -```bash -$ php artisan config:cache - -# If you experience any issues after running this command, run this too: -$ rm -rf bootstrap/cache/* -``` - -## Cachet + Mailgun - -Create an account with [Mailgun][1]. - -MAIL\_USERNAME should be Mailgun domain. -MAIL\_PASSWORD should be Mailgun API Key. - -Edit your `.env` file with the following variables. - -``` -MAIL_DRIVER=mailgun -MAIL_HOST=smtp.mailgun.org -MAIL_PORT=587 -MAIL_USERNAME=alt-three.com -MAIL_PASSWORD=xxxx -MAIL_ADDRESS=support@alt-three.com -MAIL_NAME="Alt Three Services Limited" -MAIL_ENCRYPTION=tls -``` - -The tls encryption setting is required to have e-mails be properly delivered. - -## Cachet + Spark Post - -Create an account with [Spark Post][2]. - -Edit your `.env` file with the following variables. - -``` -MAIL_DRIVER=smtp -MAIL_HOST=smtp.sparkpostmail.com -MAIL_PORT=587 -MAIL_USERNAME=SMTP_Injection -MAIL_PASSWORD=API_TOKEN -MAIL_ADDRESS=support@alt-three.com -MAIL_NAME="Alt Three Services Limited" -MAIL_ENCRYPTION=tls -``` - -[1]: https://mailgun.com/ -[2]: https://www.sparkpost.com/ diff --git a/docs/setup/configuring-queue.md b/docs/setup/configuring-queue.md deleted file mode 100644 index 2fe7d2f9..00000000 --- a/docs/setup/configuring-queue.md +++ /dev/null @@ -1,72 +0,0 @@ -# Configuring the queue - -Cachet uses a queue to send Configuring Mail and Beacons without slowing down -the rest of the application. This can be setup in a variety of ways. - -## Supervisor - -The recommended setup for the queue is to use Supervisor. - -Supervisor is a process manager which makes managing a number of -long-running programs a trivial task by providing a consistent interface -through which they can be monitored and controlled. - -## Installations up to Cachet v2.3 - -`cachet.conf` - -``` -[program:cachet-queue] -command=php artisan queue:work --daemon --delay=2 --sleep=1 --tries=3 -directory=/var/www/cachet/ -redirect\_stderr=true -autostart=true -autorestart=true -user=cachet -``` - -## Installations from Cachet v2.4-dev onwards - -`cachet.conf` - -``` -[program:cachet-queue] -command=php artisan queue:work --delay=1 --sleep=1 --timeout=1800 --tries=3 -directory=/var/www/cachet/ -redirect\_stderr=true -autostart=true -autorestart=true -user=cachet -``` - -> **Update to your configuration!** -> Be sure to update the values in the example configuration above to match -> your installation setup. - -## Database Queue with Cron - -The default installation of Cachet sets the queue type to database which means -that all jobs are stored within your database and is then processed by a cron -job which calls an artisan command from within the project directory. - -You'll need to create a new cron job, in Ubuntu it's a case of running -crontab -e and adding this line: - -`* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1` - -Close the file and the cron job will now begin running, processing any -confirmation and incident emails. - -## Synchronous Queue (not recommended for larger installs) - -If you cannot add a queue job, another alternative is to process all of -the jobs immediately after they are created. - -> **Not suitable for larger installations!** -> This setup is not ideal for larger installs with hundreds of subscribers -> as each email can take a few seconds to send and would slow down your -> interaction with the system. - -To set this up change the .env file with the following setting: - -`QUEUE_DRIVER=sync` diff --git a/docs/setup/configuring-subscribers.md b/docs/setup/configuring-subscribers.md deleted file mode 100644 index 3c1030a9..00000000 --- a/docs/setup/configuring-subscribers.md +++ /dev/null @@ -1,24 +0,0 @@ -# Configuring Subscribers - -Learn how to setup subscribers. - -One of the most powerful features of Cachet is the ability to automatically -send notification emails to anybody who has subscribed to your status -page whenever an incident is created. - -> **Hold up!** -> Before going any further, ensure that you've [configured -> the mail][1] and the [queue][2]. - -Once you've [Configuring Mail][1], you need to login to your Dashboard and enable -the Allow people to signup to email notifications? setting found in the -Application Setup panel. - -Once you've enabled this setting you'll see a Subscribe button in the footer -of your status page: - -![Enable subscribers][3] - -[1]: configuring-mail.md -[2]: configuring-queue.md -[3]: ../images/enable-subscribers.png diff --git a/docs/setup/cors.md b/docs/setup/cors.md deleted file mode 100644 index 6e29dc80..00000000 --- a/docs/setup/cors.md +++ /dev/null @@ -1,18 +0,0 @@ -# CORS - -Cross-original resource sharing - -> **External Access** -> By default Cachet can be accessed by any third-party server. - -You may configure your Cachet installation for CORS very easily. To blacklist everybody except one or more domains: - -- Login to your Dashboard -- Go to the Settings panel -- Click on Security -- You'll see a Allowed domains textarea, fill in any domains that you - want to access the API as a comma separated list: - -``` -https://demo.cachethq.io,https://status.cachethq.io -``` diff --git a/docs/setup/installation.md b/docs/setup/installation.md deleted file mode 100644 index 154c2ca3..00000000 --- a/docs/setup/installation.md +++ /dev/null @@ -1,182 +0,0 @@ -# Install Cachet - -This guide will detail how to install Cachet on your server. - -## Download the source code with Git - -> **Check out the latest version!** -> The tags below are examples of what will be shown. -> You should always run git checkout on the latest tag. - -``` -$ cd /var/www # Or wherever you chose to install web applications to -$ git clone https://github.com/CachetHQ/Cachet.git -$ cd Cachet -$ git tag -l - -v2.3.1 -v2.3.10 -v2.3.11 -v2.3.12 -v2.3.13 -v2.3.14 - -git checkout v2.3.14 -``` - -## Editing the configuration file - -By default Cachet comes with a `.env.example` file. You'll need to copy this -file to `.env` regardless of what environment you're working on. - -> On Windows you can use `copy .env.example .env` if you can't do it using the -> explorer. - -It's now just a case of editing this new .env file and setting the values of your setup. - -> **Environment Configuration Notice** -> Any values with spaces in them should be contained within double quotes. - -The `.env` file set environment variables that will be used by the application. - -> **SQLite hosts** -> If you're using SQLite then your .env file should not contain a -> `DB_HOST` key. You'll also need to touch ./database/database.sqlite -> and give it the required permissions. - -## Installing Composer - -Cachet uses dependencies, so it's required to have Composer installed. -Composer can be installed following the [official guide][1] - -## Installing dependencies - -```bash -composer install --no-dev -o -``` - -If you are installing Cachet as a contributor, you can forget the `--no-dev` -option. - -> **Tip for Windows users** -> If you're stuck at the Composer stage, you can run -> `composer install --no-dev -o --no-scripts` -> which usually fixes any issues on Windows servers. - -## Using the install command - -Cachet comes with an installation command that will: - -- Run migrations -- Run seeders (of which there are none) - -```bash -php artisan cachet:install -``` - -> Never change the `APP_KEY` after installation on production environment. -> This will result in all of your encrypted/hashed data being lost. - -> **Getting a 500 - Internal Server Error?** -> If you get a 500 error when visiting your status page, you may need to -> run `chmod -R 755 .env bootstrap/cache storage`. -> Also if you set value `file` for `CACHE_DRIVER` and `SESSION_DRIVER` parameters in `.env` file run `chmod -R 755 bootstrap/cachet`. -> Finally run `rm -rf bootstrap/cache/*` for delete old cache. - -## Running Cachet on Apache - -> **Required Apache Modules** -> You need to enable `mod_rewrite` for Apache. On Debian-based systems you can do this by -> -> `sudo a2enmod rewrite` - -Once Cachet is setup, the Apache installation is as simple as creating a -new Virtual Host entry in the httpd-vhosts.conf file. - -``` - - ServerName cachet.dev - # Or whatever you want to use - ServerAlias cachet.dev - # Make this the same as ServerName - DocumentRoot "/var/www/Cachet/public" - - Require all granted - # Used by Apache 2.4 - Options Indexes FollowSymLinks - AllowOverride All - Order allow,deny - Allow from all - - -``` - -Restart Apache by running the following: - -`sudo service apache2 restart` - - -If you also need HTTPS on apache you will need to get the ssl mod installed -and the default ssl conf file enabled. See DigitalOcean's [documentation][2]. - -## Running Cachet on nginx - -- You'll need to install php5-fpm - [DigitalOcean][3] has a nice LEMP installation tutorial -- Generate your SSL key+certificate -- Create a new vhost such as `/etc/nginx/sites-enabled/cachet.conf:` - -``` -# Upstream to abstract backend connection(s) for php -upstream php { - server unix:/tmp/php-cgi.socket; - server 127.0.0.1:9000; -} - -server { - server_name cachet.mycompany.com; # Or whatever you want to use - listen 80 default; - rewrite ^(.*) https://cachet.mycompany.com$1 permanent; -} - -# HTTPS server - -server { - listen 443; - server_name cachet.mycompany.com; - - root /var/vhost/cachet.mycompany.com/public; - index index.php; - - ssl on; - ssl_certificate /etc/ssl/crt/cachet.mycompany.com.crt; # Or wherever your crt is - ssl_certificate_key /etc/ssl/key/cachet.mycompany.com.key; # Or wherever your key is - ssl_session_timeout 5m; - - # Best practice as at March 2014 - ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - ssl_prefer_server_ciphers on; - ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA"; - ssl_buffer_size 1400; # 1400 bytes, within MTU - because we generally have small responses. Could increase to 4k, but default 16k is too big - - location / { - add_header Strict-Transport-Security max-age=15768000; - try_files $uri /index.php$is_args$args; - } - - location ~ \.php$ { - include fastcgi_params; - fastcgi_pass unix:/var/run/php5-fpm.sock; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_index index.php; - fastcgi_keep_conn on; - add_header Strict-Transport-Security max-age=15768000; - } -} -``` - -Start php5-fpm and nginx and you're done! - - -[1]: https://getcomposer.org/download/ -[2]: https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-14-04 -[3]: https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-12-04 diff --git a/docs/setup/prerequisites.md b/docs/setup/prerequisites.md deleted file mode 100644 index d8d195bd..00000000 --- a/docs/setup/prerequisites.md +++ /dev/null @@ -1,35 +0,0 @@ -# Prerequisites - -To start using Cachet, you'll need some prerequisites. - -## Application Prerequisites - -You'll need at least the following installed on your server: - -- PHP 7.1.3, you'll also need `ext-gd`, `ext-simplexml`, `ext-xml`, `ext-mbstring` and `ext-tokenizer` installed. -- [Composer][1] -- APCu or Redis for caching. -- A database driver for your DB such as; MySQL, PostgreSQL or SQLite. -- Git - -> **SQLite** -> Whilst we support SQLite, we advise not using it for status pages -> with a high amount of traffic. - -> **MySQL Timezone Info** -> Ensure your MySQL database has been updated with the correct timezone -> information. This will ensure that metrics are shown -> correctly: [https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html][2] - -## Developer prerequisites - -If you are looking to contribute to Cachet, thank you! Your help is really -appreciated! You may need some extra dependencies; depending on what you're looking for. - -Our CSS is compiled from SCSS, so to compile this you will need the following: - -- Node.js -- NPM or Yarn - -[1]: https://getcomposer.org/ -[2]: https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html diff --git a/docs/third-party-integrations.md b/docs/third-party-integrations.md deleted file mode 100644 index 1e1f4371..00000000 --- a/docs/third-party-integrations.md +++ /dev/null @@ -1,28 +0,0 @@ -# Third-party Integrations - -Below is a list of known applications or services using the Cachet API. - -Name|Link|Description -----|----|----------- -Cachet Monitor|[https://github.com/castawaylabs/cachet-monitor][1]|For URL monitoring. Automatic incident updates -Sensu Cachet|[https://github.com/bimlendu/sensu-cachethq][2]|Sensu handler for updating Cachet -Hubot Cachet|[https://github.com/willdurand/hubot-cachet][3]|A hubot script to manage incidents/statuses with Cachet -Nagios Notification|[https://github.com/mpellegrin/nagios-eventhandler-cachet][4]|A Nagios event handler to push Nagios notifications to Cachet API -Salt Cachet|[https://github.com/alkivi-sas/salt-cachet][5]|Salt module to use with Cachet -Pingometer|[https://pingometer.com][6]|Website uptime monitoring -Cachet URL Monitor|[https://github.com/mtakaki/cachet-url-monitor][7]/|Monitors an URL using HTTP status code, latency, and/or payload regex -Zabbix-Cachet|[https://github.com/qk4l/zabbix-cachet][8]|Synhronise your Zabbix IT Services and Cachet -CheckItOn.Us|[https://checkiton.us][9]|Server monitoring tool -Cachet-Monitor|[https://github.com/gaz492/cachet-monitor][10]|Monitors URL status via checking status codes, supports all Cloudflare http codes and more. See README for more - - -[1]: https://github.com/castawaylabs/cachet-monitor -[2]: https://github.com/bimlendu/sensu-cachethq -[3]: https://github.com/willdurand/hubot-cachet -[4]: https://github.com/mpellegrin/nagios-eventhandler-cachet -[5]: https://github.com/alkivi-sas/salt-cachet -[6]: https://pingometer.com/ -[7]: https://github.com/mtakaki/cachet-url-monitor/ -[8]: https://github.com/qk4l/zabbix-cachet -[9]: https://checkiton.us/ -[10]: https://github.com/gaz492/cachet-monitor diff --git a/docs/upgrade/UPGRADE-2.4.md b/docs/upgrade/UPGRADE-2.4.md deleted file mode 100644 index 555ac81d..00000000 --- a/docs/upgrade/UPGRADE-2.4.md +++ /dev/null @@ -1,10 +0,0 @@ -# Upgrading cachet 2.3 to 2.4 - -# PHP 7 -Cachet 2.4 is build using the Laravel 5.6 which requires at least PHP 7.1.3 or higher. - -# Backups -In previous versions Cachet would ship with `backup-manager/laravel` to create database backups at certain points when -running the software. This is no longer provided by default in 2.4. You are free to implement your custom backup -solution when running cachet on your environments. If you do prefer a backup solution close to the pre 2.4 Cachet version: -Spatie has created [a backup manager](https://github.com/spatie/laravel-backup) that comes close to the original implementation. diff --git a/package.json b/package.json index 4677d273..56f5ddcc 100644 --- a/package.json +++ b/package.json @@ -1,41 +1,13 @@ { - "name": "cachet", - "scripts": { - "dev": "npm run development", - "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", - "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", - "watch-poll": "npm run watch -- --watch-poll", - "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", - "prod": "npm run production", - "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" - }, - "devDependencies": { - "animate-sass": "^0.8.2", - "axios": "^0.19", - "bootstrap-sass": "^3.4.3", - "chart.js": "^2.9.4", - "cross-env": "^5.1", - "es5-shim": "^4.5.14", - "flatpickr": "^4.5.7", - "github-markdown-css": "^2.3.0", - "ionicons": "~2.0", - "jquery": "^3.4.0", - "jquery-minicolors": "^2.1.10", - "jquery-serializeobject": "^1.0.0", - "jquery-sparkline": "^2.4.0", - "laravel-mix": "^5.0.9", - "laravel-mix-purgecss": "^4.2.0", - "livestamp": "git+https://github.com/mattbradley/livestampjs.git#develop", - "lodash": "^4.17.13", - "messenger": "git+https://github.com/HubSpot/messenger.git", - "moment": "^2.24.0", - "promise": "^7.3.1", - "sass": "^1.69.5", - "sass-loader": "^8.0.2", - "sortablejs": "^1.8.4", - "sweetalert2": "^6.8.0", - "vue": "^2.7.15", - "vue-template-compiler": "^2.7.15" - }, - "private": true + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "axios": "^1.6.4", + "laravel-vite-plugin": "^1.0.0", + "vite": "^5.0.0" + } } diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 00000000..bc86714b --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,32 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + diff --git a/phpunit.xml.dist b/phpunit.xml.dist deleted file mode 100644 index 46128987..00000000 --- a/phpunit.xml.dist +++ /dev/null @@ -1,43 +0,0 @@ - - - - - ./tests - - - - - ./app - - - - - - - - - - - - - - - - - - diff --git a/public/.htaccess b/public/.htaccess index 903f6392..3aec5e27 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -1,20 +1,21 @@ - Options -MultiViews + Options -MultiViews -Indexes RewriteEngine On - # Redirect Trailing Slashes If Not A Folder... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule ^(.*)/$ /$1 [L,R=301] - - # Handle Front Controller... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^ index.php [L] - # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] diff --git a/public/dist/css/app.8e642081c214028ed55259aac8d62dee.css b/public/dist/css/app.8e642081c214028ed55259aac8d62dee.css deleted file mode 100644 index fe665ba4..00000000 --- a/public/dist/css/app.8e642081c214028ed55259aac8d62dee.css +++ /dev/null @@ -1,11 +0,0 @@ -@charset "UTF-8";/*! - Ionicons, v2.0.1 - Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ - https://twitter.com/benjsperry https://twitter.com/ionicframework - MIT License: https://github.com/driftyco/ionicons - - Android-style icons originally built by Google’s - Material Design Icons: https://github.com/google/material-design-icons - used under CC BY http://creativecommons.org/licenses/by/4.0/ - Modified icons to fit ionicon’s grid from original. -*/pre,textarea{overflow:auto}hr,img{border:0}[class^=swal2],html{-webkit-tap-highlight-color:transparent}body,figure{margin:0}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.dropdown-menu>li>a,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.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,.dropdown-menu{float:left}.img-responsive,.img-thumbnail,.table,label{max-width:100%}.btn,.no-select{-moz-user-select:none;-ms-user-select:none}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}@font-face{font-family:Ionicons;src:url(../../../fonts/ionicons.eot?v=2.0.1);src:url(../../../fonts/ionicons.eot?v=2.0.1#iefix) format("embedded-opentype"),url(../../../fonts/ionicons.ttf?v=2.0.1) format("truetype"),url(../../../fonts/ionicons.woff?v=2.0.1) format("woff"),url(../../../fonts/ionicons.svg?v=2.0.1#Ionicons) format("svg");font-weight:400;font-style:normal}.ion,.ion-alert-circled:before,.ion-alert:before,.ion-android-add-circle:before,.ion-android-add:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-cloud:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done-all:before,.ion-android-done:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite-outline:before,.ion-android-favorite:before,.ion-android-film:before,.ion-android-folder-open:before,.ion-android-folder:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone-off:before,.ion-android-microphone:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-notifications:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person-add:before,.ion-android-person:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove-circle:before,.ion-android-remove:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share-alt:before,.ion-android-share:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-star:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace-outline:before,.ion-backspace:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox-working:before,.ion-chatbox:before,.ion-chatboxes:before,.ion-chatbubble-working:before,.ion-chatbubble:before,.ion-chatbubbles:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-checkmark:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close-circled:before,.ion-close-round:before,.ion-close:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code-download:before,.ion-code-working:before,.ion-code:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document-text:before,.ion-document:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email-unread:before,.ion-email:before,.ion-erlenmeyer-flask-bubbles:before,.ion-erlenmeyer-flask:before,.ion-eye-disabled:before,.ion-eye:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash-off:before,.ion-flash:before,.ion-folder:before,.ion-fork-repo:before,.ion-fork:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy-outline:before,.ion-happy:before,.ion-headphone:before,.ion-heart-broken:before,.ion-heart:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-help:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information-circled:before,.ion-information:before,.ion-ionic:before,.ion-ios-alarm-outline:before,.ion-ios-alarm:before,.ion-ios-albums-outline:before,.ion-ios-albums:before,.ion-ios-americanfootball-outline:before,.ion-ios-americanfootball:before,.ion-ios-analytics-outline:before,.ion-ios-analytics:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at-outline:before,.ion-ios-at:before,.ion-ios-barcode-outline:before,.ion-ios-barcode:before,.ion-ios-baseball-outline:before,.ion-ios-baseball:before,.ion-ios-basketball-outline:before,.ion-ios-basketball:before,.ion-ios-bell-outline:before,.ion-ios-bell:before,.ion-ios-body-outline:before,.ion-ios-body:before,.ion-ios-bolt-outline:before,.ion-ios-bolt:before,.ion-ios-book-outline:before,.ion-ios-book:before,.ion-ios-bookmarks-outline:before,.ion-ios-bookmarks:before,.ion-ios-box-outline:before,.ion-ios-box:before,.ion-ios-briefcase-outline:before,.ion-ios-briefcase:before,.ion-ios-browsers-outline:before,.ion-ios-browsers:before,.ion-ios-calculator-outline:before,.ion-ios-calculator:before,.ion-ios-calendar-outline:before,.ion-ios-calendar:before,.ion-ios-camera-outline:before,.ion-ios-camera:before,.ion-ios-cart-outline:before,.ion-ios-cart:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatbubble-outline:before,.ion-ios-chatbubble:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-checkmark:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock-outline:before,.ion-ios-clock:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-close:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-outline:before,.ion-ios-cloudy:before,.ion-ios-cog-outline:before,.ion-ios-cog:before,.ion-ios-color-filter-outline:before,.ion-ios-color-filter:before,.ion-ios-color-wand-outline:before,.ion-ios-color-wand:before,.ion-ios-compose-outline:before,.ion-ios-compose:before,.ion-ios-contact-outline:before,.ion-ios-contact:before,.ion-ios-copy-outline:before,.ion-ios-copy:before,.ion-ios-crop-strong:before,.ion-ios-crop:before,.ion-ios-download-outline:before,.ion-ios-download:before,.ion-ios-drag:before,.ion-ios-email-outline:before,.ion-ios-email:before,.ion-ios-eye-outline:before,.ion-ios-eye:before,.ion-ios-fastforward-outline:before,.ion-ios-fastforward:before,.ion-ios-filing-outline:before,.ion-ios-filing:before,.ion-ios-film-outline:before,.ion-ios-film:before,.ion-ios-flag-outline:before,.ion-ios-flag:before,.ion-ios-flame-outline:before,.ion-ios-flame:before,.ion-ios-flask-outline:before,.ion-ios-flask:before,.ion-ios-flower-outline:before,.ion-ios-flower:before,.ion-ios-folder-outline:before,.ion-ios-folder:before,.ion-ios-football-outline:before,.ion-ios-football:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-b-outline:before,.ion-ios-game-controller-b:before,.ion-ios-gear-outline:before,.ion-ios-gear:before,.ion-ios-glasses-outline:before,.ion-ios-glasses:before,.ion-ios-grid-view-outline:before,.ion-ios-grid-view:before,.ion-ios-heart-outline:before,.ion-ios-heart:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-help:before,.ion-ios-home-outline:before,.ion-ios-home:before,.ion-ios-infinite-outline:before,.ion-ios-infinite:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-information:before,.ion-ios-ionic-outline:before,.ion-ios-keypad-outline:before,.ion-ios-keypad:before,.ion-ios-lightbulb-outline:before,.ion-ios-lightbulb:before,.ion-ios-list-outline:before,.ion-ios-list:before,.ion-ios-location-outline:before,.ion-ios-location:before,.ion-ios-locked-outline:before,.ion-ios-locked:before,.ion-ios-loop-strong:before,.ion-ios-loop:before,.ion-ios-medical-outline:before,.ion-ios-medical:before,.ion-ios-medkit-outline:before,.ion-ios-medkit:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-mic:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-minus:before,.ion-ios-monitor-outline:before,.ion-ios-monitor:before,.ion-ios-moon-outline:before,.ion-ios-moon:before,.ion-ios-more-outline:before,.ion-ios-more:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate-outline:before,.ion-ios-navigate:before,.ion-ios-nutrition-outline:before,.ion-ios-nutrition:before,.ion-ios-paper-outline:before,.ion-ios-paper:before,.ion-ios-paperplane-outline:before,.ion-ios-paperplane:before,.ion-ios-partlysunny-outline:before,.ion-ios-partlysunny:before,.ion-ios-pause-outline:before,.ion-ios-pause:before,.ion-ios-paw-outline:before,.ion-ios-paw:before,.ion-ios-people-outline:before,.ion-ios-people:before,.ion-ios-person-outline:before,.ion-ios-person:before,.ion-ios-personadd-outline:before,.ion-ios-personadd:before,.ion-ios-photos-outline:before,.ion-ios-photos:before,.ion-ios-pie-outline:before,.ion-ios-pie:before,.ion-ios-pint-outline:before,.ion-ios-pint:before,.ion-ios-play-outline:before,.ion-ios-play:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-plus:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetags-outline:before,.ion-ios-pricetags:before,.ion-ios-printer-outline:before,.ion-ios-printer:before,.ion-ios-pulse-strong:before,.ion-ios-pulse:before,.ion-ios-rainy-outline:before,.ion-ios-rainy:before,.ion-ios-recording-outline:before,.ion-ios-recording:before,.ion-ios-redo-outline:before,.ion-ios-redo:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-refresh:before,.ion-ios-reload:before,.ion-ios-reverse-camera-outline:before,.ion-ios-reverse-camera:before,.ion-ios-rewind-outline:before,.ion-ios-rewind:before,.ion-ios-rose-outline:before,.ion-ios-rose:before,.ion-ios-search-strong:before,.ion-ios-search:before,.ion-ios-settings-strong:before,.ion-ios-settings:before,.ion-ios-shuffle-strong:before,.ion-ios-shuffle:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipbackward:before,.ion-ios-skipforward-outline:before,.ion-ios-skipforward:before,.ion-ios-snowy:before,.ion-ios-speedometer-outline:before,.ion-ios-speedometer:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-star:before,.ion-ios-stopwatch-outline:before,.ion-ios-stopwatch:before,.ion-ios-sunny-outline:before,.ion-ios-sunny:before,.ion-ios-telephone-outline:before,.ion-ios-telephone:before,.ion-ios-tennisball-outline:before,.ion-ios-tennisball:before,.ion-ios-thunderstorm-outline:before,.ion-ios-thunderstorm:before,.ion-ios-time-outline:before,.ion-ios-time:before,.ion-ios-timer-outline:before,.ion-ios-timer:before,.ion-ios-toggle-outline:before,.ion-ios-toggle:before,.ion-ios-trash-outline:before,.ion-ios-trash:before,.ion-ios-undo-outline:before,.ion-ios-undo:before,.ion-ios-unlocked-outline:before,.ion-ios-unlocked:before,.ion-ios-upload-outline:before,.ion-ios-upload:before,.ion-ios-videocam-outline:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass-outline:before,.ion-ios-wineglass:before,.ion-ios-world-outline:before,.ion-ios-world:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-minus:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon-round:before,.ion-navicon:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person-add:before,.ion-person-stalker:before,.ion-person:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-plus:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply-all:before,.ion-reply:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad-outline:before,.ion-sad:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android-outline:before,.ion-social-android:before,.ion-social-angular-outline:before,.ion-social-angular:before,.ion-social-apple-outline:before,.ion-social-apple:before,.ion-social-bitcoin-outline:before,.ion-social-bitcoin:before,.ion-social-buffer-outline:before,.ion-social-buffer:before,.ion-social-chrome-outline:before,.ion-social-chrome:before,.ion-social-codepen-outline:before,.ion-social-codepen:before,.ion-social-css3-outline:before,.ion-social-css3:before,.ion-social-designernews-outline:before,.ion-social-designernews:before,.ion-social-dribbble-outline:before,.ion-social-dribbble:before,.ion-social-dropbox-outline:before,.ion-social-dropbox:before,.ion-social-euro-outline:before,.ion-social-euro:before,.ion-social-facebook-outline:before,.ion-social-facebook:before,.ion-social-foursquare-outline:before,.ion-social-foursquare:before,.ion-social-freebsd-devil:before,.ion-social-github-outline:before,.ion-social-github:before,.ion-social-google-outline:before,.ion-social-google:before,.ion-social-googleplus-outline:before,.ion-social-googleplus:before,.ion-social-hackernews-outline:before,.ion-social-hackernews:before,.ion-social-html5-outline:before,.ion-social-html5:before,.ion-social-instagram-outline:before,.ion-social-instagram:before,.ion-social-javascript-outline:before,.ion-social-javascript:before,.ion-social-linkedin-outline:before,.ion-social-linkedin:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest-outline:before,.ion-social-pinterest:before,.ion-social-python:before,.ion-social-reddit-outline:before,.ion-social-reddit:before,.ion-social-rss-outline:before,.ion-social-rss:before,.ion-social-sass:before,.ion-social-skype-outline:before,.ion-social-skype:before,.ion-social-snapchat-outline:before,.ion-social-snapchat:before,.ion-social-tumblr-outline:before,.ion-social-tumblr:before,.ion-social-tux:before,.ion-social-twitch-outline:before,.ion-social-twitch:before,.ion-social-twitter-outline:before,.ion-social-twitter:before,.ion-social-usd-outline:before,.ion-social-usd:before,.ion-social-vimeo-outline:before,.ion-social-vimeo:before,.ion-social-whatsapp-outline:before,.ion-social-whatsapp:before,.ion-social-windows-outline:before,.ion-social-windows:before,.ion-social-wordpress-outline:before,.ion-social-wordpress:before,.ion-social-yahoo-outline:before,.ion-social-yahoo:before,.ion-social-yen-outline:before,.ion-social-yen:before,.ion-social-youtube-outline:before,.ion-social-youtube:before,.ion-soup-can-outline:before,.ion-soup-can:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle-filled:before,.ion-toggle:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt-outline:before,.ion-tshirt:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before,.ionicons{display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:""}.ion-alert-circled:before{content:""}.ion-android-add:before{content:""}.ion-android-add-circle:before{content:""}.ion-android-alarm-clock:before{content:""}.ion-android-alert:before{content:""}.ion-android-apps:before{content:""}.ion-android-archive:before{content:""}.ion-android-arrow-back:before{content:""}.ion-android-arrow-down:before{content:""}.ion-android-arrow-dropdown:before{content:""}.ion-android-arrow-dropdown-circle:before{content:""}.ion-android-arrow-dropleft:before{content:""}.ion-android-arrow-dropleft-circle:before{content:""}.ion-android-arrow-dropright:before{content:""}.ion-android-arrow-dropright-circle:before{content:""}.ion-android-arrow-dropup:before{content:""}.ion-android-arrow-dropup-circle:before{content:""}.ion-android-arrow-forward:before{content:""}.ion-android-arrow-up:before{content:""}.ion-android-attach:before{content:""}.ion-android-bar:before{content:""}.ion-android-bicycle:before{content:""}.ion-android-boat:before{content:""}.ion-android-bookmark:before{content:""}.ion-android-bulb:before{content:""}.ion-android-bus:before{content:""}.ion-android-calendar:before{content:""}.ion-android-call:before{content:""}.ion-android-camera:before{content:""}.ion-android-cancel:before{content:""}.ion-android-car:before{content:""}.ion-android-cart:before{content:""}.ion-android-chat:before{content:""}.ion-android-checkbox:before{content:""}.ion-android-checkbox-blank:before{content:""}.ion-android-checkbox-outline:before{content:""}.ion-android-checkbox-outline-blank:before{content:""}.ion-android-checkmark-circle:before{content:""}.ion-android-clipboard:before{content:""}.ion-android-close:before{content:""}.ion-android-cloud:before{content:""}.ion-android-cloud-circle:before{content:""}.ion-android-cloud-done:before{content:""}.ion-android-cloud-outline:before{content:""}.ion-android-color-palette:before{content:""}.ion-android-compass:before{content:""}.ion-android-contact:before{content:""}.ion-android-contacts:before{content:""}.ion-android-contract:before{content:""}.ion-android-create:before{content:""}.ion-android-delete:before{content:""}.ion-android-desktop:before{content:""}.ion-android-document:before{content:""}.ion-android-done:before{content:""}.ion-android-done-all:before{content:""}.ion-android-download:before{content:""}.ion-android-drafts:before{content:""}.ion-android-exit:before{content:""}.ion-android-expand:before{content:""}.ion-android-favorite:before{content:""}.ion-android-favorite-outline:before{content:""}.ion-android-film:before{content:""}.ion-android-folder:before{content:""}.ion-android-folder-open:before{content:""}.ion-android-funnel:before{content:""}.ion-android-globe:before{content:""}.ion-android-hand:before{content:""}.ion-android-hangout:before{content:""}.ion-android-happy:before{content:""}.ion-android-home:before{content:""}.ion-android-image:before{content:""}.ion-android-laptop:before{content:""}.ion-android-list:before{content:""}.ion-android-locate:before{content:""}.ion-android-lock:before{content:""}.ion-android-mail:before{content:""}.ion-android-map:before{content:""}.ion-android-menu:before{content:""}.ion-android-microphone:before{content:""}.ion-android-microphone-off:before{content:""}.ion-android-more-horizontal:before{content:""}.ion-android-more-vertical:before{content:""}.ion-android-navigate:before{content:""}.ion-android-notifications:before{content:""}.ion-android-notifications-none:before{content:""}.ion-android-notifications-off:before{content:""}.ion-android-open:before{content:""}.ion-android-options:before{content:""}.ion-android-people:before{content:""}.ion-android-person:before{content:""}.ion-android-person-add:before{content:""}.ion-android-phone-landscape:before{content:""}.ion-android-phone-portrait:before{content:""}.ion-android-pin:before{content:""}.ion-android-plane:before{content:""}.ion-android-playstore:before{content:""}.ion-android-print:before{content:""}.ion-android-radio-button-off:before{content:""}.ion-android-radio-button-on:before{content:""}.ion-android-refresh:before{content:""}.ion-android-remove:before{content:""}.ion-android-remove-circle:before{content:""}.ion-android-restaurant:before{content:""}.ion-android-sad:before{content:""}.ion-android-search:before{content:""}.ion-android-send:before{content:""}.ion-android-settings:before{content:""}.ion-android-share:before{content:""}.ion-android-share-alt:before{content:""}.ion-android-star:before{content:""}.ion-android-star-half:before{content:""}.ion-android-star-outline:before{content:""}.ion-android-stopwatch:before{content:""}.ion-android-subway:before{content:""}.ion-android-sunny:before{content:""}.ion-android-sync:before{content:""}.ion-android-textsms:before{content:""}.ion-android-time:before{content:""}.ion-android-train:before{content:""}.ion-android-unlock:before{content:""}.ion-android-upload:before{content:""}.ion-android-volume-down:before{content:""}.ion-android-volume-mute:before{content:""}.ion-android-volume-off:before{content:""}.ion-android-volume-up:before{content:""}.ion-android-walk:before{content:""}.ion-android-warning:before{content:""}.ion-android-watch:before{content:""}.ion-android-wifi:before{content:""}.ion-aperture:before{content:""}.ion-archive:before{content:""}.ion-arrow-down-a:before{content:""}.ion-arrow-down-b:before{content:""}.ion-arrow-down-c:before{content:""}.ion-arrow-expand:before{content:""}.ion-arrow-graph-down-left:before{content:""}.ion-arrow-graph-down-right:before{content:""}.ion-arrow-graph-up-left:before{content:""}.ion-arrow-graph-up-right:before{content:""}.ion-arrow-left-a:before{content:""}.ion-arrow-left-b:before{content:""}.ion-arrow-left-c:before{content:""}.ion-arrow-move:before{content:""}.ion-arrow-resize:before{content:""}.ion-arrow-return-left:before{content:""}.ion-arrow-return-right:before{content:""}.ion-arrow-right-a:before{content:""}.ion-arrow-right-b:before{content:""}.ion-arrow-right-c:before{content:""}.ion-arrow-shrink:before{content:""}.ion-arrow-swap:before{content:""}.ion-arrow-up-a:before{content:""}.ion-arrow-up-b:before{content:""}.ion-arrow-up-c:before{content:""}.ion-asterisk:before{content:""}.ion-at:before{content:""}.ion-backspace:before{content:""}.ion-backspace-outline:before{content:""}.ion-bag:before{content:""}.ion-battery-charging:before{content:""}.ion-battery-empty:before{content:""}.ion-battery-full:before{content:""}.ion-battery-half:before{content:""}.ion-battery-low:before{content:""}.ion-beaker:before{content:""}.ion-beer:before{content:""}.ion-bluetooth:before{content:""}.ion-bonfire:before{content:""}.ion-bookmark:before{content:""}.ion-bowtie:before{content:""}.ion-briefcase:before{content:""}.ion-bug:before{content:""}.ion-calculator:before{content:""}.ion-calendar:before{content:""}.ion-camera:before{content:""}.ion-card:before{content:""}.ion-cash:before{content:""}.ion-chatbox:before{content:""}.ion-chatbox-working:before{content:""}.ion-chatboxes:before{content:""}.ion-chatbubble:before{content:""}.ion-chatbubble-working:before{content:""}.ion-chatbubbles:before{content:""}.ion-checkmark:before{content:""}.ion-checkmark-circled:before{content:""}.ion-checkmark-round:before{content:""}.ion-chevron-down:before{content:""}.ion-chevron-left:before{content:""}.ion-chevron-right:before{content:""}.ion-chevron-up:before{content:""}.ion-clipboard:before{content:""}.ion-clock:before{content:""}.ion-close:before{content:""}.ion-close-circled:before{content:""}.ion-close-round:before{content:""}.ion-closed-captioning:before{content:""}.ion-cloud:before{content:""}.ion-code:before{content:""}.ion-code-download:before{content:""}.ion-code-working:before{content:""}.ion-coffee:before{content:""}.ion-compass:before{content:""}.ion-compose:before{content:""}.ion-connection-bars:before{content:""}.ion-contrast:before{content:""}.ion-crop:before{content:""}.ion-cube:before{content:""}.ion-disc:before{content:""}.ion-document:before{content:""}.ion-document-text:before{content:""}.ion-drag:before{content:""}.ion-earth:before{content:""}.ion-easel:before{content:""}.ion-edit:before{content:""}.ion-egg:before{content:""}.ion-eject:before{content:""}.ion-email:before{content:""}.ion-email-unread:before{content:""}.ion-erlenmeyer-flask:before{content:""}.ion-erlenmeyer-flask-bubbles:before{content:""}.ion-eye:before{content:""}.ion-eye-disabled:before{content:""}.ion-female:before{content:""}.ion-filing:before{content:""}.ion-film-marker:before{content:""}.ion-fireball:before{content:""}.ion-flag:before{content:""}.ion-flame:before{content:""}.ion-flash:before{content:""}.ion-flash-off:before{content:""}.ion-folder:before{content:""}.ion-fork:before{content:""}.ion-fork-repo:before{content:""}.ion-forward:before{content:""}.ion-funnel:before{content:""}.ion-gear-a:before{content:""}.ion-gear-b:before{content:""}.ion-grid:before{content:""}.ion-hammer:before{content:""}.ion-happy:before{content:""}.ion-happy-outline:before{content:""}.ion-headphone:before{content:""}.ion-heart:before{content:""}.ion-heart-broken:before{content:""}.ion-help:before{content:""}.ion-help-buoy:before{content:""}.ion-help-circled:before{content:""}.ion-home:before{content:""}.ion-icecream:before{content:""}.ion-image:before{content:""}.ion-images:before{content:""}.ion-information:before{content:""}.ion-information-circled:before{content:""}.ion-ionic:before{content:""}.ion-ios-alarm:before{content:""}.ion-ios-alarm-outline:before{content:""}.ion-ios-albums:before{content:""}.ion-ios-albums-outline:before{content:""}.ion-ios-americanfootball:before{content:""}.ion-ios-americanfootball-outline:before{content:""}.ion-ios-analytics:before{content:""}.ion-ios-analytics-outline:before{content:""}.ion-ios-arrow-back:before{content:""}.ion-ios-arrow-down:before{content:""}.ion-ios-arrow-forward:before{content:""}.ion-ios-arrow-left:before{content:""}.ion-ios-arrow-right:before{content:""}.ion-ios-arrow-thin-down:before{content:""}.ion-ios-arrow-thin-left:before{content:""}.ion-ios-arrow-thin-right:before{content:""}.ion-ios-arrow-thin-up:before{content:""}.ion-ios-arrow-up:before{content:""}.ion-ios-at:before{content:""}.ion-ios-at-outline:before{content:""}.ion-ios-barcode:before{content:""}.ion-ios-barcode-outline:before{content:""}.ion-ios-baseball:before{content:""}.ion-ios-baseball-outline:before{content:""}.ion-ios-basketball:before{content:""}.ion-ios-basketball-outline:before{content:""}.ion-ios-bell:before{content:""}.ion-ios-bell-outline:before{content:""}.ion-ios-body:before{content:""}.ion-ios-body-outline:before{content:""}.ion-ios-bolt:before{content:""}.ion-ios-bolt-outline:before{content:""}.ion-ios-book:before{content:""}.ion-ios-book-outline:before{content:""}.ion-ios-bookmarks:before{content:""}.ion-ios-bookmarks-outline:before{content:""}.ion-ios-box:before{content:""}.ion-ios-box-outline:before{content:""}.ion-ios-briefcase:before{content:""}.ion-ios-briefcase-outline:before{content:""}.ion-ios-browsers:before{content:""}.ion-ios-browsers-outline:before{content:""}.ion-ios-calculator:before{content:""}.ion-ios-calculator-outline:before{content:""}.ion-ios-calendar:before{content:""}.ion-ios-calendar-outline:before{content:""}.ion-ios-camera:before{content:""}.ion-ios-camera-outline:before{content:""}.ion-ios-cart:before{content:""}.ion-ios-cart-outline:before{content:""}.ion-ios-chatboxes:before{content:""}.ion-ios-chatboxes-outline:before{content:""}.ion-ios-chatbubble:before{content:""}.ion-ios-chatbubble-outline:before{content:""}.ion-ios-checkmark:before{content:""}.ion-ios-checkmark-empty:before{content:""}.ion-ios-checkmark-outline:before{content:""}.ion-ios-circle-filled:before{content:""}.ion-ios-circle-outline:before{content:""}.ion-ios-clock:before{content:""}.ion-ios-clock-outline:before{content:""}.ion-ios-close:before{content:""}.ion-ios-close-empty:before{content:""}.ion-ios-close-outline:before{content:""}.ion-ios-cloud:before{content:""}.ion-ios-cloud-download:before{content:""}.ion-ios-cloud-download-outline:before{content:""}.ion-ios-cloud-outline:before{content:""}.ion-ios-cloud-upload:before{content:""}.ion-ios-cloud-upload-outline:before{content:""}.ion-ios-cloudy:before{content:""}.ion-ios-cloudy-night:before{content:""}.ion-ios-cloudy-night-outline:before{content:""}.ion-ios-cloudy-outline:before{content:""}.ion-ios-cog:before{content:""}.ion-ios-cog-outline:before{content:""}.ion-ios-color-filter:before{content:""}.ion-ios-color-filter-outline:before{content:""}.ion-ios-color-wand:before{content:""}.ion-ios-color-wand-outline:before{content:""}.ion-ios-compose:before{content:""}.ion-ios-compose-outline:before{content:""}.ion-ios-contact:before{content:""}.ion-ios-contact-outline:before{content:""}.ion-ios-copy:before{content:""}.ion-ios-copy-outline:before{content:""}.ion-ios-crop:before{content:""}.ion-ios-crop-strong:before{content:""}.ion-ios-download:before{content:""}.ion-ios-download-outline:before{content:""}.ion-ios-drag:before{content:""}.ion-ios-email:before{content:""}.ion-ios-email-outline:before{content:""}.ion-ios-eye:before{content:""}.ion-ios-eye-outline:before{content:""}.ion-ios-fastforward:before{content:""}.ion-ios-fastforward-outline:before{content:""}.ion-ios-filing:before{content:""}.ion-ios-filing-outline:before{content:""}.ion-ios-film:before{content:""}.ion-ios-film-outline:before{content:""}.ion-ios-flag:before{content:""}.ion-ios-flag-outline:before{content:""}.ion-ios-flame:before{content:""}.ion-ios-flame-outline:before{content:""}.ion-ios-flask:before{content:""}.ion-ios-flask-outline:before{content:""}.ion-ios-flower:before{content:""}.ion-ios-flower-outline:before{content:""}.ion-ios-folder:before{content:""}.ion-ios-folder-outline:before{content:""}.ion-ios-football:before{content:""}.ion-ios-football-outline:before{content:""}.ion-ios-game-controller-a:before{content:""}.ion-ios-game-controller-a-outline:before{content:""}.ion-ios-game-controller-b:before{content:""}.ion-ios-game-controller-b-outline:before{content:""}.ion-ios-gear:before{content:""}.ion-ios-gear-outline:before{content:""}.ion-ios-glasses:before{content:""}.ion-ios-glasses-outline:before{content:""}.ion-ios-grid-view:before{content:""}.ion-ios-grid-view-outline:before{content:""}.ion-ios-heart:before{content:""}.ion-ios-heart-outline:before{content:""}.ion-ios-help:before{content:""}.ion-ios-help-empty:before{content:""}.ion-ios-help-outline:before{content:""}.ion-ios-home:before{content:""}.ion-ios-home-outline:before{content:""}.ion-ios-infinite:before{content:""}.ion-ios-infinite-outline:before{content:""}.ion-ios-information:before{content:""}.ion-ios-information-empty:before{content:""}.ion-ios-information-outline:before{content:""}.ion-ios-ionic-outline:before{content:""}.ion-ios-keypad:before{content:""}.ion-ios-keypad-outline:before{content:""}.ion-ios-lightbulb:before{content:""}.ion-ios-lightbulb-outline:before{content:""}.ion-ios-list:before{content:""}.ion-ios-list-outline:before{content:""}.ion-ios-location:before{content:""}.ion-ios-location-outline:before{content:""}.ion-ios-locked:before{content:""}.ion-ios-locked-outline:before{content:""}.ion-ios-loop:before{content:""}.ion-ios-loop-strong:before{content:""}.ion-ios-medical:before{content:""}.ion-ios-medical-outline:before{content:""}.ion-ios-medkit:before{content:""}.ion-ios-medkit-outline:before{content:""}.ion-ios-mic:before{content:""}.ion-ios-mic-off:before{content:""}.ion-ios-mic-outline:before{content:""}.ion-ios-minus:before{content:""}.ion-ios-minus-empty:before{content:""}.ion-ios-minus-outline:before{content:""}.ion-ios-monitor:before{content:""}.ion-ios-monitor-outline:before{content:""}.ion-ios-moon:before{content:""}.ion-ios-moon-outline:before{content:""}.ion-ios-more:before{content:""}.ion-ios-more-outline:before{content:""}.ion-ios-musical-note:before{content:""}.ion-ios-musical-notes:before{content:""}.ion-ios-navigate:before{content:""}.ion-ios-navigate-outline:before{content:""}.ion-ios-nutrition:before{content:""}.ion-ios-nutrition-outline:before{content:""}.ion-ios-paper:before{content:""}.ion-ios-paper-outline:before{content:""}.ion-ios-paperplane:before{content:""}.ion-ios-paperplane-outline:before{content:""}.ion-ios-partlysunny:before{content:""}.ion-ios-partlysunny-outline:before{content:""}.ion-ios-pause:before{content:""}.ion-ios-pause-outline:before{content:""}.ion-ios-paw:before{content:""}.ion-ios-paw-outline:before{content:""}.ion-ios-people:before{content:""}.ion-ios-people-outline:before{content:""}.ion-ios-person:before{content:""}.ion-ios-person-outline:before{content:""}.ion-ios-personadd:before{content:""}.ion-ios-personadd-outline:before{content:""}.ion-ios-photos:before{content:""}.ion-ios-photos-outline:before{content:""}.ion-ios-pie:before{content:""}.ion-ios-pie-outline:before{content:""}.ion-ios-pint:before{content:""}.ion-ios-pint-outline:before{content:""}.ion-ios-play:before{content:""}.ion-ios-play-outline:before{content:""}.ion-ios-plus:before{content:""}.ion-ios-plus-empty:before{content:""}.ion-ios-plus-outline:before{content:""}.ion-ios-pricetag:before{content:""}.ion-ios-pricetag-outline:before{content:""}.ion-ios-pricetags:before{content:""}.ion-ios-pricetags-outline:before{content:""}.ion-ios-printer:before{content:""}.ion-ios-printer-outline:before{content:""}.ion-ios-pulse:before{content:""}.ion-ios-pulse-strong:before{content:""}.ion-ios-rainy:before{content:""}.ion-ios-rainy-outline:before{content:""}.ion-ios-recording:before{content:""}.ion-ios-recording-outline:before{content:""}.ion-ios-redo:before{content:""}.ion-ios-redo-outline:before{content:""}.ion-ios-refresh:before{content:""}.ion-ios-refresh-empty:before{content:""}.ion-ios-refresh-outline:before{content:""}.ion-ios-reload:before{content:""}.ion-ios-reverse-camera:before{content:""}.ion-ios-reverse-camera-outline:before{content:""}.ion-ios-rewind:before{content:""}.ion-ios-rewind-outline:before{content:""}.ion-ios-rose:before{content:""}.ion-ios-rose-outline:before{content:""}.ion-ios-search:before{content:""}.ion-ios-search-strong:before{content:""}.ion-ios-settings:before{content:""}.ion-ios-settings-strong:before{content:""}.ion-ios-shuffle:before{content:""}.ion-ios-shuffle-strong:before{content:""}.ion-ios-skipbackward:before{content:""}.ion-ios-skipbackward-outline:before{content:""}.ion-ios-skipforward:before{content:""}.ion-ios-skipforward-outline:before{content:""}.ion-ios-snowy:before{content:""}.ion-ios-speedometer:before{content:""}.ion-ios-speedometer-outline:before{content:""}.ion-ios-star:before{content:""}.ion-ios-star-half:before{content:""}.ion-ios-star-outline:before{content:""}.ion-ios-stopwatch:before{content:""}.ion-ios-stopwatch-outline:before{content:""}.ion-ios-sunny:before{content:""}.ion-ios-sunny-outline:before{content:""}.ion-ios-telephone:before{content:""}.ion-ios-telephone-outline:before{content:""}.ion-ios-tennisball:before{content:""}.ion-ios-tennisball-outline:before{content:""}.ion-ios-thunderstorm:before{content:""}.ion-ios-thunderstorm-outline:before{content:""}.ion-ios-time:before{content:""}.ion-ios-time-outline:before{content:""}.ion-ios-timer:before{content:""}.ion-ios-timer-outline:before{content:""}.ion-ios-toggle:before{content:""}.ion-ios-toggle-outline:before{content:""}.ion-ios-trash:before{content:""}.ion-ios-trash-outline:before{content:""}.ion-ios-undo:before{content:""}.ion-ios-undo-outline:before{content:""}.ion-ios-unlocked:before{content:""}.ion-ios-unlocked-outline:before{content:""}.ion-ios-upload:before{content:""}.ion-ios-upload-outline:before{content:""}.ion-ios-videocam:before{content:""}.ion-ios-videocam-outline:before{content:""}.ion-ios-volume-high:before{content:""}.ion-ios-volume-low:before{content:""}.ion-ios-wineglass:before{content:""}.ion-ios-wineglass-outline:before{content:""}.ion-ios-world:before{content:""}.ion-ios-world-outline:before{content:""}.ion-ipad:before{content:""}.ion-iphone:before{content:""}.ion-ipod:before{content:""}.ion-jet:before{content:""}.ion-key:before{content:""}.ion-knife:before{content:""}.ion-laptop:before{content:""}.ion-leaf:before{content:""}.ion-levels:before{content:""}.ion-lightbulb:before{content:""}.ion-link:before{content:""}.ion-load-a:before{content:""}.ion-load-b:before{content:""}.ion-load-c:before{content:""}.ion-load-d:before{content:""}.ion-location:before{content:""}.ion-lock-combination:before{content:""}.ion-locked:before{content:""}.ion-log-in:before{content:""}.ion-log-out:before{content:""}.ion-loop:before{content:""}.ion-magnet:before{content:""}.ion-male:before{content:""}.ion-man:before{content:""}.ion-map:before{content:""}.ion-medkit:before{content:""}.ion-merge:before{content:""}.ion-mic-a:before{content:""}.ion-mic-b:before{content:""}.ion-mic-c:before{content:""}.ion-minus:before{content:""}.ion-minus-circled:before{content:""}.ion-minus-round:before{content:""}.ion-model-s:before{content:""}.ion-monitor:before{content:""}.ion-more:before{content:""}.ion-mouse:before{content:""}.ion-music-note:before{content:""}.ion-navicon:before{content:""}.ion-navicon-round:before{content:""}.ion-navigate:before{content:""}.ion-network:before{content:""}.ion-no-smoking:before{content:""}.ion-nuclear:before{content:""}.ion-outlet:before{content:""}.ion-paintbrush:before{content:""}.ion-paintbucket:before{content:""}.ion-paper-airplane:before{content:""}.ion-paperclip:before{content:""}.ion-pause:before{content:""}.ion-person:before{content:""}.ion-person-add:before{content:""}.ion-person-stalker:before{content:""}.ion-pie-graph:before{content:""}.ion-pin:before{content:""}.ion-pinpoint:before{content:""}.ion-pizza:before{content:""}.ion-plane:before{content:""}.ion-planet:before{content:""}.ion-play:before{content:""}.ion-playstation:before{content:""}.ion-plus:before{content:""}.ion-plus-circled:before{content:""}.ion-plus-round:before{content:""}.ion-podium:before{content:""}.ion-pound:before{content:""}.ion-power:before{content:""}.ion-pricetag:before{content:""}.ion-pricetags:before{content:""}.ion-printer:before{content:""}.ion-pull-request:before{content:""}.ion-qr-scanner:before{content:""}.ion-quote:before{content:""}.ion-radio-waves:before{content:""}.ion-record:before{content:""}.ion-refresh:before{content:""}.ion-reply:before{content:""}.ion-reply-all:before{content:""}.ion-ribbon-a:before{content:""}.ion-ribbon-b:before{content:""}.ion-sad:before{content:""}.ion-sad-outline:before{content:""}.ion-scissors:before{content:""}.ion-search:before{content:""}.ion-settings:before{content:""}.ion-share:before{content:""}.ion-shuffle:before{content:""}.ion-skip-backward:before{content:""}.ion-skip-forward:before{content:""}.ion-social-android:before{content:""}.ion-social-android-outline:before{content:""}.ion-social-angular:before{content:""}.ion-social-angular-outline:before{content:""}.ion-social-apple:before{content:""}.ion-social-apple-outline:before{content:""}.ion-social-bitcoin:before{content:""}.ion-social-bitcoin-outline:before{content:""}.ion-social-buffer:before{content:""}.ion-social-buffer-outline:before{content:""}.ion-social-chrome:before{content:""}.ion-social-chrome-outline:before{content:""}.ion-social-codepen:before{content:""}.ion-social-codepen-outline:before{content:""}.ion-social-css3:before{content:""}.ion-social-css3-outline:before{content:""}.ion-social-designernews:before{content:""}.ion-social-designernews-outline:before{content:""}.ion-social-dribbble:before{content:""}.ion-social-dribbble-outline:before{content:""}.ion-social-dropbox:before{content:""}.ion-social-dropbox-outline:before{content:""}.ion-social-euro:before{content:""}.ion-social-euro-outline:before{content:""}.ion-social-facebook:before{content:""}.ion-social-facebook-outline:before{content:""}.ion-social-foursquare:before{content:""}.ion-social-foursquare-outline:before{content:""}.ion-social-freebsd-devil:before{content:""}.ion-social-github:before{content:""}.ion-social-github-outline:before{content:""}.ion-social-google:before{content:""}.ion-social-google-outline:before{content:""}.ion-social-googleplus:before{content:""}.ion-social-googleplus-outline:before{content:""}.ion-social-hackernews:before{content:""}.ion-social-hackernews-outline:before{content:""}.ion-social-html5:before{content:""}.ion-social-html5-outline:before{content:""}.ion-social-instagram:before{content:""}.ion-social-instagram-outline:before{content:""}.ion-social-javascript:before{content:""}.ion-social-javascript-outline:before{content:""}.ion-social-linkedin:before{content:""}.ion-social-linkedin-outline:before{content:""}.ion-social-markdown:before{content:""}.ion-social-nodejs:before{content:""}.ion-social-octocat:before{content:""}.ion-social-pinterest:before{content:""}.ion-social-pinterest-outline:before{content:""}.ion-social-python:before{content:""}.ion-social-reddit:before{content:""}.ion-social-reddit-outline:before{content:""}.ion-social-rss:before{content:""}.ion-social-rss-outline:before{content:""}.ion-social-sass:before{content:""}.ion-social-skype:before{content:""}.ion-social-skype-outline:before{content:""}.ion-social-snapchat:before{content:""}.ion-social-snapchat-outline:before{content:""}.ion-social-tumblr:before{content:""}.ion-social-tumblr-outline:before{content:""}.ion-social-tux:before{content:""}.ion-social-twitch:before{content:""}.ion-social-twitch-outline:before{content:""}.ion-social-twitter:before{content:""}.ion-social-twitter-outline:before{content:""}.ion-social-usd:before{content:""}.ion-social-usd-outline:before{content:""}.ion-social-vimeo:before{content:""}.ion-social-vimeo-outline:before{content:""}.ion-social-whatsapp:before{content:""}.ion-social-whatsapp-outline:before{content:""}.ion-social-windows:before{content:""}.ion-social-windows-outline:before{content:""}.ion-social-wordpress:before{content:""}.ion-social-wordpress-outline:before{content:""}.ion-social-yahoo:before{content:""}.ion-social-yahoo-outline:before{content:""}.ion-social-yen:before{content:""}.ion-social-yen-outline:before{content:""}.ion-social-youtube:before{content:""}.ion-social-youtube-outline:before{content:""}.ion-soup-can:before{content:""}.ion-soup-can-outline:before{content:""}.ion-speakerphone:before{content:""}.ion-speedometer:before{content:""}.ion-spoon:before{content:""}.ion-star:before{content:""}.ion-stats-bars:before{content:""}.ion-steam:before{content:""}.ion-stop:before{content:""}.ion-thermometer:before{content:""}.ion-thumbsdown:before{content:""}.ion-thumbsup:before{content:""}.ion-toggle:before{content:""}.ion-toggle-filled:before{content:""}.ion-transgender:before{content:""}.ion-trash-a:before{content:""}.ion-trash-b:before{content:""}.ion-trophy:before{content:""}.ion-tshirt:before{content:""}.ion-tshirt-outline:before{content:""}.ion-umbrella:before{content:""}.ion-university:before{content:""}.ion-unlocked:before{content:""}.ion-upload:before{content:""}.ion-usb:before{content:""}.ion-videocamera:before{content:""}.ion-volume-high:before{content:""}.ion-volume-low:before{content:""}.ion-volume-medium:before{content:""}.ion-volume-mute:before{content:""}.ion-wand:before{content:""}.ion-waterdrop:before{content:""}.ion-wifi:before{content:""}.ion-wineglass:before{content:""}.ion-woman:before{content:""}.ion-wrench:before{content:""}.ion-xbox:before{content:""}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}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}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.tooltip,address{font-style:normal}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{border:0;padding:0}input[type=checkbox],input[type=radio]{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-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.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}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.btn-danger.dropdown-toggle,.open>.btn-default.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-success.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}.img-thumbnail,body{background-color:#fff}*,:after,:before{box-sizing:border-box}html{font-size:10px}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#67808c;text-decoration:none}a:focus,a:hover{color:#465760;text-decoration:underline}a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;height:auto}.img-rounded{border-radius:4px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}select[multiple],select[size],textarea.form-control{height:auto}.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}dt,kbd kbd,label{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,output,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.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}.initialism,.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#67808c}a.text-primary:focus,a.text-primary:hover{color:#51656f}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#67808c}a.bg-primary:focus,a.bg-primary:hover{background-color:#51656f}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd{margin-left:0}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}legend,pre{color:#333}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.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}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:3px}kbd{color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-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-left:15px;padding-right:15px}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333333%}.col-xs-push-2{left:16.66666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333333%}.col-xs-push-5{left:41.66666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333333%}.col-xs-push-8{left:66.66666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333333%}.col-xs-push-11{left:91.66666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-12{margin-left:100%}@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-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-12{margin-left:100%}}@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-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-12{margin-left:100%}}@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-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-12{margin-left:100%}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{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,.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,.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 col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.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{overflow-x:auto;min-height:.01%}@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,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px}.checkbox,.radio,input[type=file],output{display:block}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=range]{display:block;width:100%}input[type=checkbox]:focus,input[type=radio]:focus,input[type=file]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px;font-size:14px;color:#555}.form-control{border-radius:3px}.form-control:focus{outline:0;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}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.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}.form-control::-ms-expand{border:0;background-color:transparent}.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}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{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-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,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-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,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;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-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,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}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.input-group-sm>.input-group-btn>select.btn,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,select.input-sm{height:30px;line-height:30px}.input-group-sm>.input-group-btn>select[multiple].btn,.input-group-sm>.input-group-btn>textarea.btn,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,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:2px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:4px}.input-group-lg>.input-group-btn>select.btn,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,select.input-lg{height:46px;line-height:46px}.input-group-lg>.input-group-btn>select[multiple].btn,.input-group-lg>.input-group-btn>textarea.btn,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,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:4px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 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}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.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-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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 .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:3px;-webkit-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e5e5;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e5e5;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.btn-default.dropdown-toggle.focus,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,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:#67808c;border-color:#5c727d}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#51656f;border-color:#262f34}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#51656f;border-color:#42525a}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#42525a;border-color:#262f34}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#67808c;border-color:#5c727d}.btn-primary .badge{color:#67808c;background-color:#fff}.btn-success{color:#fff;background-color:#7ED321;border-color:#71bd1e}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#64a71a;border-color:#2f4f0c}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#64a71a;border-color:#518815}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#518815;border-color:#2f4f0c}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#7ED321;border-color:#71bd1e}.btn-success .badge{color:#7ED321;background-color:#fff}.btn-info{color:#fff;background-color:#3498db;border-color:#258cd1}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#217dbb;border-color:#124364}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#217dbb;border-color:#1c699d}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#1c699d;border-color:#124364}.btn-info.active,.btn-info:active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#3498db;border-color:#258cd1}.btn-info .badge{color:#3498db;background-color:#fff}.btn-warning{color:#fff;background-color:#F80;border-color:#e67a00}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#cc6d00;border-color:#663600}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#cc6d00;border-color:#a85a00}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#a85a00;border-color:#663600}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#F80;border-color:#e67a00}.btn-warning .badge{color:#F80;background-color:#fff}.btn-danger{color:#fff;background-color:#ff6f6f;border-color:#ff5656}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#ff3c3c;border-color:#d50000}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#ff3c3c;border-color:#ff1818}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#ff1818;border-color:#d50000}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ff6f6f;border-color:#ff5656}.btn-danger .badge{color:#ff6f6f;background-color:#fff}.btn-link{color:#67808c;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#465760;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:4px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:2px}.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%}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;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;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#67808c}.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;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#777}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.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{left:0;right:auto}}.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:after,.btn-toolbar:before{content:" ";display:table}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-group-lg>.btn .caret,.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:after,.btn-group-vertical>.btn-group:before{content:" ";display:table}.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:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.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}.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-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;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,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.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:3px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:2px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:4px}.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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.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{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav:after{clear:both}.nav>li>a{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;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#67808c}.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:3px 3px 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;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li,.nav-tabs.nav-justified>li{float:none}.nav-pills>li>a{border-radius:3px}.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:#67808c}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.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-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before{display:table;content:" "}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;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-left:0;padding-right:0}}.modal,.modal-open{overflow:hidden}@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}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.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;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@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-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:3px}.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}.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;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}}.badge,.label{line-height:1;white-space:nowrap;text-align:center;font-weight:700}@media (min-width:768px){.navbar-toggle{display:none}.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;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.btn-group-sm>.navbar-btn.btn,.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.btn-group-xs>.navbar-btn.btn,.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-left:15px;margin-right:15px}.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:#5e5d5d;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{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{background-color:#e7e7e7;color:#555}@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:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{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:#090909}.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{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.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:#090909}.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}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:after,.pager:before{content:" ";display:table}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd}.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}.close,.list-group-item>.badge{float:right}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#67808c}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#51656f}.label-success{background-color:#7ED321}.label-success[href]:focus,.label-success[href]:hover{background-color:#64a71a}.label-info{background-color:#3498db}.label-info[href]:focus,.label-info[href]:hover{background-color:#217dbb}.label-warning{background-color:#F80}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#cc6d00}.label-danger{background-color:#ff6f6f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#ff3c3c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#67808c;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert{padding:15px;margin-bottom:20px}.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}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}.list-group{margin-bottom:20px;padding-left:0}.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-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.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:#67808c;border-color:#67808c}.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:#dbe1e4}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.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,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.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,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.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,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.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,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.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,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.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,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.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,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel,body.status-page .list-group.components{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:3px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table,body.status-page .list-group.components>.list-group,body.status-page .list-group.components>.panel-collapse>.list-group,body.status-page .list-group.components>.panel-collapse>.table,body.status-page .list-group.components>.table,body.status-page .list-group.components>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item,body.status-page .list-group.components>.list-group .list-group-item,body.status-page .list-group.components>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.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-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>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,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,body.status-page .list-group.components>.table-bordered>tbody>tr:first-child>td,body.status-page .list-group.components>.table-bordered>tbody>tr:first-child>th,body.status-page .list-group.components>.table-bordered>tbody>tr:last-child>td,body.status-page .list-group.components>.table-bordered>tbody>tr:last-child>th,body.status-page .list-group.components>.table-bordered>tfoot>tr:last-child>td,body.status-page .list-group.components>.table-bordered>tfoot>tr:last-child>th,body.status-page .list-group.components>.table-bordered>thead>tr:first-child>td,body.status-page .list-group.components>.table-bordered>thead>tr:first-child>th,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr:first-child>td,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr:first-child>th,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr:last-child>td,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr:last-child>th,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr:last-child>td,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr:last-child>th,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr:first-child>td,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive:last-child>.table:last-child,.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,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,body.status-page .list-group.components>.table:last-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child,body.status-page .list-group.components>.list-group:first-child .list-group-item:first-child,body.status-page .list-group.components>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:2px;border-top-left-radius:2px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child,body.status-page .list-group.components>.list-group:last-child .list-group-item:last-child,body.status-page .list-group.components>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child,body.status-page .list-group.components>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.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,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,body.status-page .list-group.components>.table:first-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption,body.status-page .list-group.components>.panel-collapse>.table caption,body.status-page .list-group.components>.table caption,body.status-page .list-group.components>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.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,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child td:first-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child th:first-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child td:first-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:2px}.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,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child td:last-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child th:last-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child td:last-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:2px}.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,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child td:first-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child th:first-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child td:first-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:2px}.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,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child td:last-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child th:last-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child td:last-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:2px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,body.status-page .list-group.components>.panel-body+.table,body.status-page .list-group.components>.panel-body+.table-responsive,body.status-page .list-group.components>.table+.panel-body,body.status-page .list-group.components>.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,body.status-page .list-group.components>.table>tbody:first-child>tr:first-child td,body.status-page .list-group.components>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,body.status-page .list-group.components>.table-bordered,body.status-page .list-group.components>.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,body.status-page .list-group.components>.table-bordered>tbody>tr>td:first-child,body.status-page .list-group.components>.table-bordered>tbody>tr>th:first-child,body.status-page .list-group.components>.table-bordered>tfoot>tr>td:first-child,body.status-page .list-group.components>.table-bordered>tfoot>tr>th:first-child,body.status-page .list-group.components>.table-bordered>thead>tr>td:first-child,body.status-page .list-group.components>.table-bordered>thead>tr>th:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr>td:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr>th:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr>td:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr>th:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr>td:first-child,body.status-page .list-group.components>.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,body.status-page .list-group.components>.table-bordered>tbody>tr>td:last-child,body.status-page .list-group.components>.table-bordered>tbody>tr>th:last-child,body.status-page .list-group.components>.table-bordered>tfoot>tr>td:last-child,body.status-page .list-group.components>.table-bordered>tfoot>tr>th:last-child,body.status-page .list-group.components>.table-bordered>thead>tr>td:last-child,body.status-page .list-group.components>.table-bordered>thead>tr>th:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr>td:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr>th:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr>td:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr>th:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr>td:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive,body.status-page .list-group.components>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel,.panel-group body.status-page .list-group.components,body.status-page .panel-group .list-group.components{margin-bottom:0;border-radius:3px}.panel-group .panel+.panel,.panel-group body.status-page .list-group.components+.list-group.components,.panel-group body.status-page .list-group.components+.panel,.panel-group body.status-page .panel+.list-group.components,body.status-page .panel-group .list-group.components+.list-group.components,body.status-page .panel-group .list-group.components+.panel,body.status-page .panel-group .panel+.list-group.components{margin-top:5px}.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:#67808c}.panel-primary>.panel-heading{color:#fff;background-color:#67808c;border-color:#67808c}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#67808c}.panel-primary>.panel-heading .badge{color:#67808c;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#67808c}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;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:4px}.well-sm{padding:9px;border-radius:2px}.close{font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before{display:table;content:" "}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);transform:translate(0,-25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}.modal.in .modal-dialog{-webkit-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;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:4px;box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.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{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-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#333;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{border-width:5px 5px 0;border-top-color:#333;bottom:0}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#333}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#333}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{top:0;border-width:0 5px 5px;border-bottom-color:#333}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.clearfix:after,.clearfix:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}body.status-page,html{-webkit-font-smoothing:antialiased}div[role=tabpanel] .tab-content,div[role=tabpanel] ul.nav-tabs{border-bottom:1px solid #d5d8d7}.affix{position:fixed}.markdown-control,html{position:relative}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.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!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.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!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!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}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}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}.hidden-print{display:none!important}}html{min-height:100%;overflow-y:scroll}body{margin-bottom:60px;padding-bottom:60px}.uppercase{text-transform:uppercase}.margin-top{margin-top:20px}.margin-bottom{margin-bottom:20px}.no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}div[role=tabpanel] ul.nav-tabs li a{font-weight:400;display:inline-block;padding:10px 25px;border-radius:0;font-size:.9em;letter-spacing:.01em}div[role=tabpanel] .tab-content{border-left:1px solid #d5d8d7;border-right:1px solid #d5d8d7;background-color:#fff}div[role=tabpanel] .tab-content .tab-pane{padding:10px}label{font-size:14px}textarea{resize:none}.markdown-control:before{position:absolute;display:block;right:0;bottom:0;width:40px;height:40px;font-size:2em;font-family:Ionicons;content:"\f4e6"}.form-control{display:block;width:100%;height:45px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;border:1px solid #ccc;box-shadow:none!important;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9}@media (max-width:767px){.component-inline .radio-items{text-align:left}.component-inline .radio-items .radio-inline{margin-left:0;width:100%}}.minicolors-theme-bootstrap .minicolors-swatch{top:9px;left:9px}.well{border-radius:0}.alert{border-radius:4px;background:#F7CA18;border:2px solid #d5ab07}.alert.alert-success{background-color:#7ED321;border:2px solid #64a71a;color:#fff}.alert.alert-success a{color:#fff;font-weight:700}.alert.alert-info{background:#3498db;border:2px solid #217dbb;color:#fff}.alert.alert-info a{color:#fff;font-weight:700}.alert.alert-danger{background:#ff6f6f;border:2px solid #ff3c3c;color:#fff}.alert.alert-danger a{color:#fff;font-weight:700}.panel-danger{border-color:#ff3c3c}.panel-danger>.panel-heading{color:#fff;background-color:#ff6f6f;border-color:#ff3c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff3c3c}.panel-danger>.panel-heading .badge{color:#ff6f6f;background-color:#fff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff3c3c}.panel-success{border-color:#64a71a}.panel-success>.panel-heading{color:#fff;background-color:#7ED321;border-color:#64a71a}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#64a71a}.panel-success>.panel-heading .badge{color:#7ED321;background-color:#fff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#64a71a}.panel-info{border-color:#217dbb}.panel-info>.panel-heading{color:#fff;background-color:#3498db;border-color:#217dbb}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#217dbb}.panel-info>.panel-heading .badge{color:#3498db;background-color:#fff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#217dbb}.panel-warning{border-color:#d5ab07}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#F7CA18;border-color:#d5ab07}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d5ab07}.panel-warning>.panel-heading .badge{color:#F7CA18;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d5ab07}.btn.btn-default{color:#333;background:#fff;border:1px solid #e6e5e5}.btn.btn-default.active,.btn.btn-default:active,.btn.btn-default:focus,.btn.btn-default:hover{background:#f2f2f2;border-color:#e6e5e5;color:#333;outline:0;outline-offset:0}.btn.btn-default.disabled,.btn.btn-default.disabled.active,.btn.btn-default.disabled:active,.btn.btn-default.disabled:focus,.btn.btn-default.disabled:hover,.btn.btn-default[disabled],.btn.btn-default[disabled].active,.btn.btn-default[disabled]:active,.btn.btn-default[disabled]:focus,.btn.btn-default[disabled]:hover,fieldset[disabled] .btn.btn-default,fieldset[disabled] .btn.btn-default.active,fieldset[disabled] .btn.btn-default:active,fieldset[disabled] .btn.btn-default:focus,fieldset[disabled] .btn.btn-default:hover{background-color:#fff;border-color:#e6e5e5}.btn.btn-primary{color:#fff;background:#67808c;border:1px solid #51656f}.btn.btn-primary.active,.btn.btn-primary:active,.btn.btn-primary:focus,.btn.btn-primary:hover{background:#5c727d;border-color:#51656f;color:#fff;outline:0;outline-offset:0}.btn.btn-primary.disabled,.btn.btn-primary.disabled.active,.btn.btn-primary.disabled:active,.btn.btn-primary.disabled:focus,.btn.btn-primary.disabled:hover,.btn.btn-primary[disabled],.btn.btn-primary[disabled].active,.btn.btn-primary[disabled]:active,.btn.btn-primary[disabled]:focus,.btn.btn-primary[disabled]:hover,fieldset[disabled] .btn.btn-primary,fieldset[disabled] .btn.btn-primary.active,fieldset[disabled] .btn.btn-primary:active,fieldset[disabled] .btn.btn-primary:focus,fieldset[disabled] .btn.btn-primary:hover{background-color:#748c99;border-color:#51656f}.btn.btn-success{color:#fff;background:#7ED321;border:1px solid #64a71a}.btn.btn-success.active,.btn.btn-success:active,.btn.btn-success:focus,.btn.btn-success:hover{background:#71bd1e;border-color:#64a71a;color:#fff;outline:0;outline-offset:0}.btn.btn-success.disabled,.btn.btn-success.disabled.active,.btn.btn-success.disabled:active,.btn.btn-success.disabled:focus,.btn.btn-success.disabled:hover,.btn.btn-success[disabled],.btn.btn-success[disabled].active,.btn.btn-success[disabled]:active,.btn.btn-success[disabled]:focus,.btn.btn-success[disabled]:hover,fieldset[disabled] .btn.btn-success,fieldset[disabled] .btn.btn-success.active,fieldset[disabled] .btn.btn-success:active,fieldset[disabled] .btn.btn-success:focus,fieldset[disabled] .btn.btn-success:hover{background-color:#8bde2f;border-color:#64a71a}.btn.btn-info{color:#fff;background:#3498db;border:1px solid #217dbb}.btn.btn-info.active,.btn.btn-info:active,.btn.btn-info:focus,.btn.btn-info:hover{background:#258cd1;border-color:#217dbb;color:#fff;outline:0;outline-offset:0}.btn.btn-info.disabled,.btn.btn-info.disabled.active,.btn.btn-info.disabled:active,.btn.btn-info.disabled:focus,.btn.btn-info.disabled:hover,.btn.btn-info[disabled],.btn.btn-info[disabled].active,.btn.btn-info[disabled]:active,.btn.btn-info[disabled]:focus,.btn.btn-info[disabled]:hover,fieldset[disabled] .btn.btn-info,fieldset[disabled] .btn.btn-info.active,fieldset[disabled] .btn.btn-info:active,fieldset[disabled] .btn.btn-info:focus,fieldset[disabled] .btn.btn-info:hover{background-color:#4aa3df;border-color:#217dbb}.btn.btn-warning{color:#fff;background:#F80;border:1px solid #cc6d00}.btn.btn-warning.active,.btn.btn-warning:active,.btn.btn-warning:focus,.btn.btn-warning:hover{background:#e67a00;border-color:#cc6d00;color:#fff;outline:0;outline-offset:0}.btn.btn-warning.disabled,.btn.btn-warning.disabled.active,.btn.btn-warning.disabled:active,.btn.btn-warning.disabled:focus,.btn.btn-warning.disabled:hover,.btn.btn-warning[disabled],.btn.btn-warning[disabled].active,.btn.btn-warning[disabled]:active,.btn.btn-warning[disabled]:focus,.btn.btn-warning[disabled]:hover,fieldset[disabled] .btn.btn-warning,fieldset[disabled] .btn.btn-warning.active,fieldset[disabled] .btn.btn-warning:active,fieldset[disabled] .btn.btn-warning:focus,fieldset[disabled] .btn.btn-warning:hover{background-color:#ff941a;border-color:#cc6d00}.btn.btn-danger{color:#fff;background:#ff6f6f;border:1px solid #ff3c3c}.btn.btn-danger.active,.btn.btn-danger:active,.btn.btn-danger:focus,.btn.btn-danger:hover{background:#ff5656;border-color:#ff3c3c;color:#fff;outline:0;outline-offset:0}.btn.btn-danger.disabled,.btn.btn-danger.disabled.active,.btn.btn-danger.disabled:active,.btn.btn-danger.disabled:focus,.btn.btn-danger.disabled:hover,.btn.btn-danger[disabled],.btn.btn-danger[disabled].active,.btn.btn-danger[disabled]:active,.btn.btn-danger[disabled]:focus,.btn.btn-danger[disabled]:hover,fieldset[disabled] .btn.btn-danger,fieldset[disabled] .btn.btn-danger.active,fieldset[disabled] .btn.btn-danger:active,fieldset[disabled] .btn.btn-danger:focus,fieldset[disabled] .btn.btn-danger:hover{background-color:#ff8989;border-color:#ff3c3c}.btn.btn-inverse{color:#fff;background:#474949;border:1px solid #2e2f2f}.btn.btn-inverse.active,.btn.btn-inverse:active,.btn.btn-inverse:focus,.btn.btn-inverse:hover{background:#3a3c3c;border-color:#2e2f2f;color:#fff;outline:0;outline-offset:0}.btn.btn-inverse.disabled,.btn.btn-inverse.disabled.active,.btn.btn-inverse.disabled:active,.btn.btn-inverse.disabled:focus,.btn.btn-inverse.disabled:hover,.btn.btn-inverse[disabled],.btn.btn-inverse[disabled].active,.btn.btn-inverse[disabled]:active,.btn.btn-inverse[disabled]:focus,.btn.btn-inverse[disabled]:hover,fieldset[disabled] .btn.btn-inverse,fieldset[disabled] .btn.btn-inverse.active,fieldset[disabled] .btn.btn-inverse:active,fieldset[disabled] .btn.btn-inverse:focus,fieldset[disabled] .btn.btn-inverse:hover{background-color:#545656;border-color:#2e2f2f}.btn-outline{background-color:transparent;background-image:none!important;color:inherit;transition:all .5s}.btn-default.btn-outline{color:#999}.btn-primary.btn-outline{color:#428bca}.btn-success.btn-outline{color:#5cb85c}.btn-info.btn-outline{color:#5bc0de}.btn-warning.btn-outline{color:#f0ad4e}.btn-danger.btn-outline{color:#d9534f}.btn-danger.btn-outline:hover,.btn-info.btn-outline:hover,.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover,.btn-warning.btn-outline:hover{color:#fff}.pager li>a,.pager li>span{border-radius:3px}body.error-page{background-color:#f3f3f4}body.error-page .middle-box{height:400px;width:400px;position:absolute;top:50%;left:50%;margin-top:-250px;margin-left:-200px;z-index:100}.swal2-container,body.swal2-iosfix{position:fixed;left:0;right:0}body.error-page .middle-box h1{font-size:9em}body.error-page h3.font-bold{font-weight:600}body.swal2-shown{overflow-y:hidden}.swal2-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;top:0;bottom:0;padding:10px;background-color:transparent;z-index:1060}.swal2-container.swal2-fade{transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-modal{background-color:#fff;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border-radius:5px;box-sizing:border-box;text-align:center;margin:auto;overflow-x:hidden;overflow-y:auto;display:none;position:relative;max-width:100%}.swal2-modal:focus{outline:0}.swal2-modal.swal2-loading{overflow-y:hidden}.swal2-modal .swal2-title{color:#595959;font-size:30px;text-align:center;font-weight:600;text-transform:none;position:relative;margin:0 0 .4em;padding:0;display:block;word-wrap:break-word}.swal2-modal .swal2-buttonswrapper{margin-top:15px}.swal2-modal .swal2-buttonswrapper:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4;cursor:no-drop}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;border:4px solid transparent;width:40px;height:40px;padding:0;margin:7.5px;vertical-align:top;background-color:transparent!important;color:transparent;cursor:default;border-radius:100%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-cancel{margin-left:30px;margin-right:30px}.swal2-modal .swal2-buttonswrapper.swal2-loading :not(.swal2-styled).swal2-confirm::after{display:inline-block;content:'';margin-left:5px;vertical-align:-1px;height:15px;width:15px;border:3px solid #999;box-shadow:1px 1px 1px #fff;border-right-color:transparent;border-radius:50%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal}.swal2-modal .swal2-checkbox input,.swal2-modal .swal2-checkbox span,.swal2-modal .swal2-radio input,.swal2-modal .swal2-radio span,body.status-page img.emoji{vertical-align:middle}.swal2-modal .swal2-styled{border:0;border-radius:3px;box-shadow:none;color:#fff;cursor:pointer;font-size:17px;font-weight:500;margin:15px 5px 0;padding:10px 32px}.swal2-modal .swal2-styled:focus{outline:0;box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4)}.swal2-modal .swal2-image{margin:20px auto;max-width:100%}.swal2-modal .swal2-close{background:0 0;border:0;margin:0;padding:0;width:38px;height:40px;font-size:36px;line-height:40px;font-family:serif;position:absolute;top:5px;right:8px;cursor:pointer;color:#ccc;transition:color .1s ease}.swal2-modal .swal2-close:hover{color:#d55}.swal2-modal>.swal2-checkbox,.swal2-modal>.swal2-file,.swal2-modal>.swal2-input,.swal2-modal>.swal2-radio,.swal2-modal>.swal2-select,.swal2-modal>.swal2-textarea{display:none}.swal2-modal .swal2-content{font-size:18px;text-align:center;font-weight:300;position:relative;float:none;margin:0;padding:0;line-height:normal;color:#545454;word-wrap:break-word}.swal2-modal .swal2-checkbox,.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-radio,.swal2-modal .swal2-select,.swal2-modal .swal2-textarea{margin:20px auto}.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-textarea{width:100%;box-sizing:border-box;font-size:18px;border-radius:3px;border:1px solid #d9d9d9;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);transition:border-color .3s,box-shadow .3s}.swal2-modal .swal2-file.swal2-inputerror,.swal2-modal .swal2-input.swal2-inputerror,.swal2-modal .swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-modal .swal2-file:focus,.swal2-modal .swal2-input:focus,.swal2-modal .swal2-textarea:focus{outline:0;border:1px solid #b4dbed;box-shadow:0 0 3px #c4e6f5}.swal2-modal .swal2-file::-webkit-input-placeholder,.swal2-modal .swal2-input::-webkit-input-placeholder,.swal2-modal .swal2-textarea::-webkit-input-placeholder{color:#ccc}.swal2-modal .swal2-file:-ms-input-placeholder,.swal2-modal .swal2-input:-ms-input-placeholder,.swal2-modal .swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-modal .swal2-file::placeholder,.swal2-modal .swal2-input::placeholder,.swal2-modal .swal2-textarea::placeholder{color:#ccc}.swal2-modal .swal2-range input{float:left;width:80%}.swal2-modal .swal2-range output{float:right;width:20%;font-size:20px;font-weight:600;text-align:center}.swal2-modal .swal2-range input,.swal2-modal .swal2-range output{height:43px;line-height:43px;vertical-align:middle;margin:20px auto;padding:0}.swal2-modal .swal2-input{height:43px;padding:0 12px}.swal2-modal .swal2-input[type=number]{max-width:150px}.swal2-modal .swal2-file{font-size:20px}.swal2-modal .swal2-textarea{height:108px;padding:12px}.swal2-modal .swal2-select{color:#545454;font-size:inherit;padding:5px 10px;min-width:40%;max-width:100%}.swal2-modal .swal2-radio{border:0}.swal2-modal .swal2-radio label:not(:first-child){margin-left:20px}.swal2-modal .swal2-radio input{margin:0 3px 0 0}.swal2-modal .swal2-checkbox{color:#545454}.swal2-modal .swal2-validationerror{background-color:#f0f0f0;margin:0 -20px;overflow:hidden;padding:10px;color:#807f7f;font-size:16px;font-weight:300;display:none}.swal2-modal .swal2-validationerror::before{content:'!';display:inline-block;width:24px;height:24px;border-radius:50%;background-color:#ea7d7d;color:#fff;line-height:24px;text-align:center;margin-right:10px}.swal2-icon.swal2-info,.swal2-icon.swal2-question,.swal2-icon.swal2-warning{font-size:60px;line-height:80px;text-align:center}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}.swal2-icon{width:80px;height:80px;border:4px solid transparent;border-radius:50%;margin:20px auto 30px;padding:0;position:relative;box-sizing:content-box;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;display:block}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}.swal2-icon.swal2-warning{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#f8bb86;border-color:#facea8}.swal2-icon.swal2-info{font-family:'Open Sans',sans-serif;color:#3fc3ee;border-color:#9de0f6}.swal2-icon.swal2-question{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#87adbd;border-color:#c9dae1}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{border-radius:50%;position:absolute;width:60px;height:120px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px}.swal2-icon.swal2-success .swal2-success-ring{width:80px;height:80px;border:4px solid rgba(165,220,134,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal2-icon.swal2-success .swal2-success-fix{width:7px;height:90px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-progresssteps{font-weight:600;margin:0 0 20px;padding:0}.swal2-progresssteps li{display:inline-block;position:relative}.swal2-progresssteps .swal2-progresscircle{background:#3085d6;border-radius:2em;color:#fff;height:2em;line-height:2em;text-align:center;width:2em;z-index:20}.swal2-progresssteps .swal2-progresscircle:first-child{margin-left:0}.swal2-progresssteps .swal2-progresscircle:last-child{margin-right:0}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep{background:#3085d6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progresscircle,.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progressline{background:#add8e6}.swal2-progresssteps .swal2-progressline{background:#3085d6;height:.4em;margin:0 -1px;z-index:10}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}.swal2-show{-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:hideSweetAlert .15s forwards;animation:hideSweetAlert .15s forwards}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}@-webkit-keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@-webkit-keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@-webkit-keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}.swal2-animate-success-line-tip{-webkit-animation:animate-success-tip .75s;animation:animate-success-tip .75s}.swal2-animate-success-line-long{-webkit-animation:animate-success-long .75s;animation:animate-success-long .75s}.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}@-webkit-keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}.swal2-animate-error-icon{-webkit-animation:animate-error-icon .5s;animation:animate-error-icon .5s}@-webkit-keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal2-animate-x-mark{-webkit-animation:animate-x-mark .5s;animation:animate-x-mark .5s}@-webkit-keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swal2-modal button{margin-right:8px}body.status-page{padding-top:40px;font-family:-apple-system,BlinkMacSystemFont,"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;background-color:#F0F3F4;color:#333;font-size:1.4em;font-weight:400}body.status-page.no-padding{padding-top:0!important}body.status-page hr{margin-top:10px;margin-bottom:10px}body.status-page h1,body.status-page h2,body.status-page h3,body.status-page h4,body.status-page h5{margin-bottom:20px}body.status-page img{box-sizing:border-box}body.status-page img.emoji{height:20px;width:20px;max-width:none}body.status-page p,body.status-page strong{color:#333}body.status-page .tooltip .tooltip-inner{padding:8px 12px;font-size:14px;word-wrap:break-word}body.status-page .help-icon{cursor:help}body.status-page .text-component-1,body.status-page .text-success{color:#7ED321}body.status-page .text-component-2,body.status-page .text-info{color:#3498db}body.status-page .text-alert,body.status-page .text-component-3{color:#F7CA18}body.status-page .text-component-4,body.status-page .text-danger{color:#ff6f6f}body.status-page .container{max-width:960px}body.status-page .page-header{margin-top:10px}body.status-page .app-banner{margin-bottom:30px}body.status-page .about-app{margin-bottom:40px}body.status-page .about-app p{font-size:1.2em}body.status-page .alert{font-size:1.2em;font-weight:600}body.status-page .timeline .content-wrapper{margin-top:40px;margin-bottom:40px}body.status-page .timeline h3{margin-top:30px;margin-bottom:40px;font-size:22px}body.status-page .timeline h3 small{margin-left:15px}body.status-page .timeline .list-group.components .panel-body h1,body.status-page .timeline .panel .panel-body h1{margin-top:0;margin-bottom:4px;font-size:2em}body.status-page .timeline .list-group.components .panel-body h2,body.status-page .timeline .panel .panel-body h2{margin-top:0;margin-bottom:4px;font-size:1.8em}body.status-page .timeline .list-group.components .panel-body h3,body.status-page .timeline .panel .panel-body h3{margin-top:0;margin-bottom:4px;font-size:1.6em}body.status-page .timeline .list-group.components .panel-body h4,body.status-page .timeline .panel .panel-body h4{margin-top:0;margin-bottom:4px;font-size:1.4em}body.status-page .timeline .list-group.components .panel-body h5,body.status-page .timeline .panel .panel-body h5{margin-top:0;margin-bottom:4px;font-size:1.2em}body.status-page .timeline .moment .list-group.components .panel-body p,body.status-page .timeline .moment .list-group.components .panel-heading strong,body.status-page .timeline .moment .panel .panel-body p,body.status-page .timeline .moment .panel .panel-heading strong{font-size:1.1em}body.status-page .timeline .list-group.components .panel-body p,body.status-page .timeline .panel .panel-body p{margin:0}body.status-page .timeline .moment{width:100%;padding-bottom:10px;position:relative}body.status-page .timeline .moment.first:before{top:-5px}body.status-page .timeline .moment:before{content:'';position:absolute;left:26px;top:-5px;width:2px;height:100%;background:#7266BA}body.status-page .timeline .moment .status-icon{background:#fff;width:35px;height:35px;border-radius:50%;border:1px solid #e8e8e8;position:absolute;left:25px;top:14px}body.status-page .timeline .moment .status-icon .icon{position:absolute;top:7px;left:11px}body.status-page .timeline .moment .status-icon .icon.ion-alert{left:15px}body.status-page .timeline .moment .status-icon.status-0{color:#b23f73}body.status-page .timeline .moment .status-icon.status-1{color:#F80}body.status-page .timeline .moment .status-icon.status-2{color:#F7CA18}body.status-page .timeline .moment .status-icon.status-3{color:#3498db}body.status-page .timeline .moment .status-icon.status-4{color:#7ED321}body.status-page .timeline .moment.last:before{background:#fff}body.status-page .timeline .moment .list-group.components,body.status-page .timeline .moment .panel{margin:0;border-radius:2px}body.status-page .timeline .moment .panel-message.list-group.components,body.status-page .timeline .moment .panel.panel-message{border:1px solid #e8e8e8}body.status-page .timeline .moment .panel-message.list-group.components .date,body.status-page .timeline .moment .panel.panel-message .date{color:#949494}body.status-page .timeline .moment .panel-message.list-group.components:before,body.status-page .timeline .moment .panel.panel-message:before{position:absolute;top:16px;left:1px;display:inline-block;border-top:15px solid transparent;border-left:0 solid #e8e8e8;border-right:15px solid #e8e8e8;border-bottom:15px solid transparent;content:" "}body.status-page .timeline .moment .panel-message.list-group.components:after,body.status-page .timeline .moment .panel.panel-message:after{position:absolute;top:17px;left:2px;display:inline-block;border-top:14px solid transparent;border-left:0 solid #fff;border-right:14px solid #fff;border-bottom:14px solid transparent;content:" "}body.status-page .timeline .moment .list-group.components .panel-body,body.status-page .timeline .moment .panel .panel-body{border-top:1px solid #eee}body.status-page .timeline .moment .list-group.components .panel-body p:not(:last-child),body.status-page .timeline .moment .panel .panel-body p:not(:last-child){margin-bottom:10px}@media (max-width:767px){body.status-page .timeline .moment .content{width:100%}}body.status-page .list-group{padding-left:0}body.status-page .list-group .list-group-item{border-radius:0;background-color:#fff;border:1px solid #e8e8e8;font-size:1.1em;padding:15px}body.status-page .list-group .list-group-item a{font-weight:400}body.status-page .list-group .list-group-item h4{margin:0;font-weight:400;max-width:90%}body.status-page .list-group .list-group-item p:not(:last-child),body.status-page .list-group .list-group-item time:not(:last-child){margin-bottom:10px}body.status-page .list-group .list-group-item time{margin-bottom:0}body.status-page .list-group .list-group-item i.icon{font-size:21px;line-height:24px;text-align:center;display:inline-block;min-width:20px}body.status-page .list-group .list-group-item.group-name{background-color:#e8e8e8;padding-top:.6em;padding-bottom:.6em;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.status-page .list-group .list-group-item.break{padding:1px;background-color:#f0f3f4}body.status-page .list-group.components{border-color:#e8e8e8}body.status-page .list-group.components:last-child{margin-bottom:30px}body.status-page .list-group.components+.components{margin-top:5px}body.status-page .list-group.components p{margin-bottom:10px}body.status-page .list-group.components .badge{color:transparent}body.status-page .list-group.components a{color:#333!important}body.status-page footer{position:absolute;width:100%;bottom:0;height:60px;padding:30px 0 60px;border-top:1px solid #e8e8e8;color:#666;font-size:13px;line-height:30px;text-align:center;text-shadow:0 1px 0 rgba(255,255,255,.5)}body.status-page footer .btn{text-shadow:none}body.status-page footer .icons a.icon-link{display:inline-block;min-width:30px;height:30px;border-radius:3px;background-color:#666;text-align:center;color:#e8e8e8;transition:all .15s;padding:0 10px}body.status-page footer .icons a.icon-link.rss{background-color:#F80}body.status-page footer .icons a.icon-link:hover{text-decoration:none;background-color:#4d4c4c}body.status-page footer .list-inline>li{padding-right:0}@media (min-width:768px){body.status-page footer{text-align:left}body.status-page footer .list-inline{text-align:right}body.status-page footer .list-inline>li{padding-right:0}body.status-page footer .icons{margin-top:0;text-align:right}}body.status-page .section-components,body.status-page .section-metrics,body.status-page .section-scheduled,body.status-page .section-timeline{margin-top:40px}body.status-page .navbar-custom{padding-top:10px;padding-bottom:10px;width:100%;border-radius:0;margin-bottom:10px}body.status-page .navbar-custom a.navbar-brand{font-size:30px;font-weight:600}body.status-page .navbar-custom .navbar-nav li a{color:#333;font-size:1.7rem}body.status-page .navbar-custom .navbar-nav li a:hover{background-color:transparent} \ No newline at end of file diff --git a/public/dist/css/app.css b/public/dist/css/app.css deleted file mode 100644 index 0b71e112..00000000 --- a/public/dist/css/app.css +++ /dev/null @@ -1,15 +0,0 @@ -@charset "UTF-8";/*! - Ionicons, v2.0.1 - Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ - https://twitter.com/benjsperry https://twitter.com/ionicframework - MIT License: https://github.com/driftyco/ionicons - - Android-style icons originally built by Google’s - Material Design Icons: https://github.com/google/material-design-icons - used under CC BY http://creativecommons.org/licenses/by/4.0/ - Modified icons to fit ionicon’s grid from original. -*/@font-face{font-family:Ionicons;src:url(../../../fonts/ionicons.eot?v=2.0.1);src:url(../../../fonts/ionicons.eot?v=2.0.1#iefix) format("embedded-opentype"),url(../../../fonts/ionicons.ttf?v=2.0.1) format("truetype"),url(../../../fonts/ionicons.woff?v=2.0.1) format("woff"),url(../../../fonts/ionicons.svg?v=2.0.1#Ionicons) format("svg");font-weight:400;font-style:normal}.ion,.ion-alert-circled:before,.ion-alert:before,.ion-android-alert:before,.ion-android-calendar:before,.ion-android-checkmark-circle:before,.ion-android-open:before,.ion-checkmark-circled:before,.ion-checkmark:before,.ion-code-working:before,.ion-document-text:before,.ion-drag:before,.ion-earth:before,.ion-eye:before,.ion-flag:before,.ion-folder:before,.ion-gear-b:before,.ion-help-circled:before,.ion-help:before,.ion-home:before,.ion-ios-arrow-right:before,.ion-ios-browsers-outline:before,.ion-ios-browsers:before,.ion-ios-circle-filled:before,.ion-ios-email-outline:before,.ion-ios-gear-outline:before,.ion-ios-help-outline:before,.ion-ios-information-outline:before,.ion-ios-keypad:before,.ion-ios-list:before,.ion-ios-minus-outline:before,.ion-ios-paper-outline:before,.ion-ios-people-outline:before,.ion-ios-people:before,.ion-ios-person-outline:before,.ion-ios-pie-outline:before,.ion-ios-plus-outline:before,.ion-ios-unlocked:before,.ion-link:before,.ion-load-c:before,.ion-lock-combination:before,.ion-log-out:before,.ion-monitor:before,.ion-navicon:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-person:before,.ion-speedometer:before,.ion-stats-bars:before,.ion-unlocked:before,.ion-wand:before{display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:"\F101"}.ion-alert-circled:before{content:"\F100"}.ion-android-alert:before{content:"\F35B"}.ion-android-calendar:before{content:"\F2D1"}.ion-android-checkmark-circle:before{content:"\F375"}.ion-android-open:before{content:"\F39C"}.ion-checkmark:before{content:"\F122"}.ion-checkmark-circled:before{content:"\F120"}.ion-code-working:before{content:"\F270"}.ion-document-text:before{content:"\F12E"}.ion-drag:before{content:"\F130"}.ion-earth:before{content:"\F276"}.ion-eye:before{content:"\F133"}.ion-flag:before{content:"\F279"}.ion-folder:before{content:"\F139"}.ion-gear-b:before{content:"\F13E"}.ion-help:before{content:"\F143"}.ion-help-circled:before{content:"\F142"}.ion-home:before{content:"\F144"}.ion-ios-arrow-right:before{content:"\F3D3"}.ion-ios-browsers:before{content:"\F3F0"}.ion-ios-browsers-outline:before{content:"\F3EF"}.ion-ios-circle-filled:before{content:"\F400"}.ion-ios-email-outline:before{content:"\F422"}.ion-ios-gear-outline:before{content:"\F43C"}.ion-ios-help-outline:before{content:"\F445"}.ion-ios-information-outline:before{content:"\F44C"}.ion-ios-keypad:before{content:"\F450"}.ion-ios-list:before{content:"\F454"}.ion-ios-minus-outline:before{content:"\F463"}.ion-ios-paper-outline:before{content:"\F471"}.ion-ios-people:before{content:"\F47C"}.ion-ios-people-outline:before{content:"\F47B"}.ion-ios-person-outline:before{content:"\F47D"}.ion-ios-pie-outline:before{content:"\F483"}.ion-ios-plus-outline:before{content:"\F48A"}.ion-ios-unlocked:before{content:"\F4C9"}.ion-link:before{content:"\F1FE"}.ion-load-c:before{content:"\F29C"}.ion-lock-combination:before{content:"\F4D4"}.ion-log-out:before{content:"\F29F"}.ion-monitor:before{content:"\F20A"}.ion-navicon:before{content:"\F20E"}.ion-paintbrush:before{content:"\F4D5"}.ion-paintbucket:before{content:"\F4D6"}.ion-paper-airplane:before{content:"\F2C3"}.ion-person:before{content:"\F213"}.ion-speedometer:before{content:"\F2B3"}.ion-stats-bars:before{content:"\F2B5"}.ion-unlocked:before{content:"\F254"}.ion-wand:before{content:"\F358"}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format("woff")}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body a{background-color:transparent}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{margin:.67em 0}.markdown-body img{border-style:none}.markdown-body code{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;overflow:visible}.markdown-body input{font:inherit;margin:0;overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom:1px solid #dfe2e5}.markdown-body hr:after,.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{clear:both}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body ol,.markdown-body p,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li{word-wrap:break-all}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{padding:.2em .4em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body hr{border-bottom-color:#eee} - -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}details,figcaption,figure,footer,header,main,menu,nav,section{display:block}canvas,progress{display:inline-block;vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}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{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{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-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}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:transparent!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^="#"]:after,a[href^="javascript:"]:after{content:""}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.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}}*,:after,:before{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.428571429;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#67808c;text-decoration:none}a:focus,a:hover{color:#465760;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:4px}.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}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}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,h1,h2,h3,h4,h5{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,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 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,h4,h5{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,h4 .small,h4 small,h5 .small,h5 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}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-right{text-align:right}.text-center{text-align:center}.text-muted{color:#777}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code{font-family:Menlo,Monaco,Consolas,Courier New,monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:3px}code{padding:2px 4px;font-size:90%}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:after,.container:before{display:table;content:" "}.container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-right:-15px;margin-left:-15px}.row:after,.row:before{display:table;content:" "}.row:after{clear:both}.col-lg-4,.col-lg-6,.col-lg-8,.col-md-3,.col-md-4,.col-md-6,.col-md-9,.col-md-12,.col-sm-1,.col-sm-3,.col-sm-4,.col-sm-8,.col-sm-11,.col-sm-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-6,.col-xs-9,.col-xs-10,.col-xs-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-6,.col-xs-9,.col-xs-10,.col-xs-12{float:left}.col-xs-2{width:16.6666666667%}.col-xs-3{width:25%}.col-xs-4{width:33.3333333333%}.col-xs-6{width:50%}.col-xs-9{width:75%}.col-xs-10{width:83.3333333333%}.col-xs-12{width:100%}.col-xs-push-1{left:8.3333333333%}.col-xs-offset-0{margin-left:0}.col-xs-offset-2{margin-left:16.6666666667%}@media (min-width:768px){.col-sm-1,.col-sm-3,.col-sm-4,.col-sm-8,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.3333333333%}.col-sm-3{width:25%}.col-sm-4{width:33.3333333333%}.col-sm-8{width:66.6666666667%}.col-sm-11{width:91.6666666667%}.col-sm-12{width:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-2{margin-left:16.6666666667%}}@media (min-width:992px){.col-md-3,.col-md-4,.col-md-6,.col-md-9,.col-md-12{float:left}.col-md-3{width:25%}.col-md-4{width:33.3333333333%}.col-md-6{width:50%}.col-md-9{width:75%}.col-md-12{width:100%}}@media (min-width:1200px){.col-lg-4,.col-lg-6,.col-lg-8{float:left}.col-lg-4{width:33.3333333333%}.col-lg-6{width:50%}.col-lg-8{width:66.6666666667%}.col-lg-offset-2{margin-left:16.6666666667%}}table{background-color:transparent}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777}caption,th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table .table{background-color:#fff}fieldset{min-width:0;margin:0}fieldset,legend{padding:0;border:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}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}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.form-control{line-height:1.428571429}.form-control{height:34px;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.form-control:focus{outline:0;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::-ms-expand{background-color:transparent;border:0}.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}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox-inline input[type=checkbox],.checkbox input[type=checkbox],.radio-inline input[type=radio],.radio 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.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}.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}.form-horizontal .form-group:after,.form-horizontal .form-group:before{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn.active:focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active:focus,.btn-default.active:hover,.btn-default:active:focus,.btn-default:active:hover,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled]:focus,.btn-default[disabled]:hover,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:#67808c;border-color:#5c727d}.btn-primary:focus{color:#fff;background-color:#51656f;border-color:#262f34}.btn-primary:hover{color:#fff;background-color:#51656f;border-color:#42525a}.btn-primary.active,.btn-primary:active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#51656f;background-image:none;border-color:#42525a}.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#42525a;border-color:#262f34}.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#67808c;border-color:#5c727d}.btn-primary .badge{color:#67808c;background-color:#fff}.btn-success{color:#fff;background-color:#7ed321;border-color:#71bd1e}.btn-success:focus{color:#fff;background-color:#64a71a;border-color:#2f4f0c}.btn-success:hover{color:#fff;background-color:#64a71a;border-color:#518815}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#64a71a;background-image:none;border-color:#518815}.btn-success.active:focus,.btn-success.active:hover,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#518815;border-color:#2f4f0c}.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#7ed321;border-color:#71bd1e}.btn-success .badge{color:#7ed321;background-color:#fff}.btn-info{color:#fff;background-color:#3498db;border-color:#258cd1}.btn-info:focus{color:#fff;background-color:#217dbb;border-color:#124364}.btn-info:hover{color:#fff;background-color:#217dbb;border-color:#1c699d}.btn-info.active,.btn-info:active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#217dbb;background-image:none;border-color:#1c699d}.btn-info.active:focus,.btn-info.active:hover,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#1c699d;border-color:#124364}.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#3498db;border-color:#258cd1}.btn-info .badge{color:#3498db;background-color:#fff}.btn-danger{color:#fff;background-color:#ff6f6f;border-color:#ff5656}.btn-danger:focus{color:#fff;background-color:#ff3c3c;border-color:#d50000}.btn-danger:hover{color:#fff;background-color:#ff3c3c;border-color:#ff1818}.btn-danger.active,.btn-danger:active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#ff3c3c;background-image:none;border-color:#ff1818}.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#ff1818;border-color:#d50000}.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ff6f6f;border-color:#ff5656}.btn-danger .badge{color:#ff6f6f;background-color:#fff}.btn-link{font-weight:400;color:#67808c;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#465760;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-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:4px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.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%}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{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;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;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:#67808c;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}.pull-right>.dropdown-menu{right:0;left:auto}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-group{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn{position:relative;float:left}.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-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{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.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 .form-control:focus{z-index:3}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control: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:3px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.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),.input-group .form-control:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.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,.input-group .form-control:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn,.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{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:after,.nav:before{display:table;content:" "}.nav:after{clear:both}.nav>li,.nav>li>a{position:relative;display:block}.nav>li>a{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:#67808c}.nav>li>a>img{max-width:none}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:after,.navbar:before{display:table;content:" "}.navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:3px}}.navbar-header:after,.navbar-header:before{display:table;content:" "}.navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1);-webkit-overflow-scrolling:touch}.navbar-collapse:after,.navbar-collapse:before{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}}.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-brand{float:left;height:50px;padding: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{margin-left:-15px}}.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;box-shadow:none}.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-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}@media (min-width:768px){.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:after,.pager:before{display:table;content:" "}.pager:after{clear:both}.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}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#67808c}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#51656f}.label-info{background-color:#3498db}.label-info[href]:focus,.label-info[href]:hover{background-color:#217dbb}.label-danger{background-color:#ff6f6f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#ff3c3c}.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:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.list-group-item.active>.badge{color:#67808c;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissible{padding-right:35px}.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-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.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:3px;border-top-right-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.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.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#67808c;border-color:#67808c}a.list-group-item,button.list-group-item{color:#555}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.panel,body.status-page .list-group.components{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:3px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-body:after,.panel-body:before{display:table;content:" "}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:2px;border-top-right-radius:2px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.list-group,body.status-page .list-group.components>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,body.status-page .list-group.components>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,body.status-page .list-group.components>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:2px;border-top-right-radius:2px}.panel>.list-group:last-child .list-group-item:last-child,body.status-page .list-group.components>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,body.status-page .list-group.components>.table{margin-bottom:0}.panel>.table caption,body.status-page .list-group.components>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,body.status-page .list-group.components>.table:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.panel>.table:last-child,body.status-page .list-group.components>.table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.panel-body+.table,.panel>.table+.panel-body,body.status-page .list-group.components>.panel-body+.table,body.status-page .list-group.components>.table+.panel-body{border-top:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.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{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{transform:translateY(-25%);transition:transform .3s ease-out}.modal.in .modal-dialog{transform:translate(0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:4px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header:after,.modal-header:before{display:table;content:" "}.modal-header:after{clear:both}.modal-header .close{margin-top:-2px}.modal-body{position:relative;padding:15px}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}}.tooltip{position:absolute;z-index:1070;display:block;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;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}.clearfix:after,.clearfix:before{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.hide{display:none!important}.show{display:block!important}.hidden{display:none!important}.visible-sm,.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}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){.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}}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;box-sizing:border-box;touch-action:manipulation;background:#fff;box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08)}.flatpickr-calendar.inline,.flatpickr-calendar.open{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:after,.flatpickr-calendar:before{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9);height:28px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;flex:1}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{text-decoration:none;cursor:pointer;position:absolute;top:0;line-height:16px;height:28px;padding:10px;z-index:3;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9)}.flatpickr-months .flatpickr-next-month.disabled,.flatpickr-months .flatpickr-prev-month.disabled{display:none}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i{position:relative}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#959ea9}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:6.16px 0 0;line-height:1;height:28px;display:inline-block;text-align:center;transform:translateZ(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0 ;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{background:transparent;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,.5);background:transparent;pointer-events:none}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:flex;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:flex;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,.54);line-height:1;margin:0;text-align:center;display:block;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:flex;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;box-sizing:border-box;display:inline-block;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;justify-content:space-around;transform:translateZ(0);opacity:1}.dayContainer+.dayContainer{box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:focus,.flatpickr-day.today:hover{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#569ff7;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 0 #569ff7}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.disabled,.flatpickr-day.disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{color:rgba(57,57,57,.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.disabled,.flatpickr-day.disabled:hover{cursor:not-allowed;color:rgba(57,57,57,.1)}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{display:inline-block;float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:flex;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;box-sizing:border-box;overflow:hidden;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{height:inherit;display:inline-block;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes fpFadeInDown{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.flatpickr-calendar{width:auto;min-width:293.75px;padding:10}.flatpickr-calendar.open{z-index:4!important}.flatpickr-calendar .flatpickr-month{min-height:30px}.flatpickr-calendar .flatpickr-current-month,.flatpickr-calendar .flatpickr-next-month,.flatpickr-calendar .flatpickr-prev-month{padding:0;display:flex!important;justify-content:center;align-items:center;height:100%}.flatpickr-calendar .flatpickr-next-month,.flatpickr-calendar .flatpickr-prev-month{border-radius:1rem;padding:.5rem}.flatpickr-calendar .flatpickr-next-month:hover,.flatpickr-calendar .flatpickr-prev-month:hover{background-color:#e8e8e8}.flatpickr-calendar .flatpickr-next-month:hover svg,.flatpickr-calendar .flatpickr-prev-month:hover svg{color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9)}.flatpickr-calendar .flatpickr-current-month .cur-month{margin-left:1rem}.flatpickr-calendar .flatpickr-current-month .cur-month:hover{background:transparent}.flatpickr-calendar .flatpickr-day{line-height:36px}.flatpickr-calendar .flatpickr-day:hover{background-color:#e8e8e8;border-color:#e8e8e8}.flatpickr-calendar .numInputWrapper{width:4rem;margin-left:.5rem}.flatpickr-calendar .numInputWrapper .numInput{padding:0;box-shadow:none}.flatpickr-time{text-align:left}html{position:relative;min-height:100%;-webkit-font-smoothing:antialiased;overflow-y:scroll}body{margin-bottom:60px;padding-bottom:60px}.uppercase{text-transform:uppercase}.margin-bottom{margin-bottom:20px}.no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}label{font-size:14px}textarea{resize:none;overflow:auto}.markdown-control{position:relative}.markdown-control:before{position:absolute;display:block;right:0;bottom:0;width:40px;height:40px;font-size:2em;font-family:Ionicons;content:"\F4E6"}.form-control{display:block;width:100%;height:45px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;box-shadow:none!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control:focus{border-color:#66afe9}@media (max-width:767px){.component-inline .radio-items{text-align:left}.component-inline .radio-items .radio-inline{margin-left:0;width:100%}}.well{border-radius:0}.alert{border-radius:4px;background:#f7ca18;border:2px solid #d5ab07}.alert.alert-success{background-color:#7ed321;border:2px solid #64a71a;color:#fff}.alert.alert-success a{color:#fff;font-weight:700}.alert.alert-info{background:#3498db;border:2px solid #217dbb;color:#fff}.alert.alert-info a{color:#fff;font-weight:700}.alert.alert-danger{background:#ff6f6f;border:2px solid #ff3c3c;color:#fff}.alert.alert-danger a{color:#fff;font-weight:700}.panel-danger{border-color:#ff3c3c}.panel-danger>.panel-heading{color:#fff;background-color:#ff6f6f;border-color:#ff3c3c}.panel-danger>.panel-heading .badge{color:#ff6f6f;background-color:#fff}.panel-info{border-color:#217dbb}.panel-info>.panel-heading{color:#fff;background-color:#3498db;border-color:#217dbb}.panel-info>.panel-heading .badge{color:#3498db;background-color:#fff}.btn.btn-default{color:#333;background:#fff;border:1px solid #e6e6e6}.btn.btn-default.active,.btn.btn-default:active,.btn.btn-default:focus,.btn.btn-default:hover{background:#f2f2f2;border-color:#e6e6e6;color:#333;outline:none;outline-offset:0}.btn.btn-default.disabled,.btn.btn-default.disabled.active,.btn.btn-default.disabled:active,.btn.btn-default.disabled:focus,.btn.btn-default.disabled:hover,.btn.btn-default[disabled],.btn.btn-default[disabled].active,.btn.btn-default[disabled]:active,.btn.btn-default[disabled]:focus,.btn.btn-default[disabled]:hover,fieldset[disabled] .btn.btn-default,fieldset[disabled] .btn.btn-default.active,fieldset[disabled] .btn.btn-default:active,fieldset[disabled] .btn.btn-default:focus,fieldset[disabled] .btn.btn-default:hover{background-color:#fff;border-color:#e6e6e6}.btn.btn-primary{color:#fff;background:#67808c;border:1px solid #51656f}.btn.btn-primary.active,.btn.btn-primary:active,.btn.btn-primary:focus,.btn.btn-primary:hover{background:#5c727d;border-color:#51656f;color:#fff;outline:none;outline-offset:0}.btn.btn-primary.disabled,.btn.btn-primary.disabled.active,.btn.btn-primary.disabled:active,.btn.btn-primary.disabled:focus,.btn.btn-primary.disabled:hover,.btn.btn-primary[disabled],.btn.btn-primary[disabled].active,.btn.btn-primary[disabled]:active,.btn.btn-primary[disabled]:focus,.btn.btn-primary[disabled]:hover,fieldset[disabled] .btn.btn-primary,fieldset[disabled] .btn.btn-primary.active,fieldset[disabled] .btn.btn-primary:active,fieldset[disabled] .btn.btn-primary:focus,fieldset[disabled] .btn.btn-primary:hover{background-color:#748c99;border-color:#51656f}.btn.btn-success{color:#fff;background:#7ed321;border:1px solid #64a71a}.btn.btn-success.active,.btn.btn-success:active,.btn.btn-success:focus,.btn.btn-success:hover{background:#71bd1e;border-color:#64a71a;color:#fff;outline:none;outline-offset:0}.btn.btn-success.disabled,.btn.btn-success.disabled.active,.btn.btn-success.disabled:active,.btn.btn-success.disabled:focus,.btn.btn-success.disabled:hover,.btn.btn-success[disabled],.btn.btn-success[disabled].active,.btn.btn-success[disabled]:active,.btn.btn-success[disabled]:focus,.btn.btn-success[disabled]:hover,fieldset[disabled] .btn.btn-success,fieldset[disabled] .btn.btn-success.active,fieldset[disabled] .btn.btn-success:active,fieldset[disabled] .btn.btn-success:focus,fieldset[disabled] .btn.btn-success:hover{background-color:#8bde2f;border-color:#64a71a}.btn.btn-info{color:#fff;background:#3498db;border:1px solid #217dbb}.btn.btn-info.active,.btn.btn-info:active,.btn.btn-info:focus,.btn.btn-info:hover{background:#258cd1;border-color:#217dbb;color:#fff;outline:none;outline-offset:0}.btn.btn-info.disabled,.btn.btn-info.disabled.active,.btn.btn-info.disabled:active,.btn.btn-info.disabled:focus,.btn.btn-info.disabled:hover,.btn.btn-info[disabled],.btn.btn-info[disabled].active,.btn.btn-info[disabled]:active,.btn.btn-info[disabled]:focus,.btn.btn-info[disabled]:hover,fieldset[disabled] .btn.btn-info,fieldset[disabled] .btn.btn-info.active,fieldset[disabled] .btn.btn-info:active,fieldset[disabled] .btn.btn-info:focus,fieldset[disabled] .btn.btn-info:hover{background-color:#4aa3df;border-color:#217dbb}.btn.btn-danger{color:#fff;background:#ff6f6f;border:1px solid #ff3c3c}.btn.btn-danger.active,.btn.btn-danger:active,.btn.btn-danger:focus,.btn.btn-danger:hover{background:#ff5656;border-color:#ff3c3c;color:#fff;outline:none;outline-offset:0}.btn.btn-danger.disabled,.btn.btn-danger.disabled.active,.btn.btn-danger.disabled:active,.btn.btn-danger.disabled:focus,.btn.btn-danger.disabled:hover,.btn.btn-danger[disabled],.btn.btn-danger[disabled].active,.btn.btn-danger[disabled]:active,.btn.btn-danger[disabled]:focus,.btn.btn-danger[disabled]:hover,fieldset[disabled] .btn.btn-danger,fieldset[disabled] .btn.btn-danger.active,fieldset[disabled] .btn.btn-danger:active,fieldset[disabled] .btn.btn-danger:focus,fieldset[disabled] .btn.btn-danger:hover{background-color:#ff8989;border-color:#ff3c3c}.btn-outline{background-color:transparent;background-image:none!important;color:inherit;transition:all .5s}.btn-default.btn-outline{color:#999}.btn-primary.btn-outline{color:#428bca}.btn-success.btn-outline{color:#5cb85c}.btn-info.btn-outline{color:#5bc0de}.btn-danger.btn-outline{color:#d9534f}.btn-danger.btn-outline:hover,.btn-info.btn-outline:hover,.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover{color:#fff}.pager li>a,.pager li>span{border-radius:3px}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}@keyframes showSweetAlert{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}to{transform:scale(1)}}@keyframes hideSweetAlert{0%{transform:scale(1);opacity:1}to{transform:scale(.5);opacity:0}}@keyframes animate-success-tip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@keyframes animate-success-long{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}@keyframes rotatePlaceholder{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}to{transform:rotate(-405deg)}}@keyframes animate-error-icon{0%{transform:rotateX(100deg);opacity:0}to{transform:rotateX(0deg);opacity:1}}@keyframes animate-x-mark{0%{transform:scale(.4);margin-top:26px;opacity:0}50%{transform:scale(.4);margin-top:26px;opacity:0}80%{transform:scale(1.15);margin-top:-6px}to{transform:scale(1);margin-top:0;opacity:1}}@keyframes rotate-loading{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}body.status-page{padding-top:40px;font-family:-apple-system,BlinkMacSystemFont,Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:#f0f3f4;color:#333;font-size:1.4em;font-weight:400;-webkit-font-smoothing:antialiased}body.status-page.no-padding{padding-top:0!important}body.status-page hr{margin-top:10px;margin-bottom:10px}body.status-page h1,body.status-page h2,body.status-page h3,body.status-page h4,body.status-page h5{margin-bottom:20px}body.status-page img{box-sizing:border-box}body.status-page p,body.status-page strong{color:#333}body.status-page .tooltip{background-color:#000}body.status-page .help-icon{cursor:help}body.status-page .text-success{color:#7ed321}body.status-page .text-danger{color:#ff6f6f}body.status-page .container{max-width:960px}body.status-page .app-banner{margin-bottom:30px}body.status-page .about-app{margin-bottom:40px}body.status-page .about-app p{font-size:1.2em}body.status-page .alert{font-size:1.2em;font-weight:600}body.status-page .timeline .content-wrapper{margin-top:40px;margin-bottom:40px}body.status-page .timeline h3{margin-top:30px;margin-bottom:40px;font-size:22px}body.status-page .timeline h3 small{margin-left:15px}body.status-page .timeline .list-group.components .panel-body h1,body.status-page .timeline .panel .panel-body h1{margin-top:0;margin-bottom:4px;font-size:2em}body.status-page .timeline .list-group.components .panel-body h2,body.status-page .timeline .panel .panel-body h2{margin-top:0;margin-bottom:4px;font-size:1.8em}body.status-page .timeline .list-group.components .panel-body h3,body.status-page .timeline .panel .panel-body h3{margin-top:0;margin-bottom:4px;font-size:1.6em}body.status-page .timeline .list-group.components .panel-body h4,body.status-page .timeline .panel .panel-body h4{margin-top:0;margin-bottom:4px;font-size:1.4em}body.status-page .timeline .list-group.components .panel-body h5,body.status-page .timeline .panel .panel-body h5{margin-top:0;margin-bottom:4px;font-size:1.2em}body.status-page .timeline .list-group.components .panel-body p,body.status-page .timeline .panel .panel-body p{margin:0}body.status-page .timeline .moment{width:100%;padding-bottom:10px;position:relative}body.status-page .timeline .moment.first:before{top:-5px}body.status-page .timeline .moment:before{content:"";position:absolute;left:26px;top:-5px;width:2px;height:100%;background:#7266ba}body.status-page .timeline .moment .status-icon{background:#fff;width:35px;height:35px;border-radius:50%;border:1px solid #e8e8e8;position:absolute;left:25px;top:14px}body.status-page .timeline .moment .status-icon .icon{position:absolute;top:7px;left:11px}body.status-page .timeline .moment .status-icon .icon.ion-alert{left:15px}body.status-page .timeline .moment.last:before{background:#fff}body.status-page .timeline .moment .list-group.components,body.status-page .timeline .moment .panel{margin:0;border-radius:2px}body.status-page .timeline .moment .panel-message.list-group.components,body.status-page .timeline .moment .panel.panel-message{border:1px solid #e8e8e8}body.status-page .timeline .moment .panel-message.list-group.components .date,body.status-page .timeline .moment .panel.panel-message .date{color:#949494}body.status-page .timeline .moment .panel-message.list-group.components:before,body.status-page .timeline .moment .panel.panel-message:before{position:absolute;top:16px;left:1px;display:inline-block;border-color:transparent #e8e8e8;border-style:solid;border-width:15px 15px 15px 0;content:" "}body.status-page .timeline .moment .panel-message.list-group.components:after,body.status-page .timeline .moment .panel.panel-message:after{position:absolute;top:17px;left:2px;display:inline-block;border-color:transparent #fff;border-style:solid;border-width:14px 14px 14px 0;content:" "}body.status-page .timeline .moment .list-group.components .panel-heading,body.status-page .timeline .moment .panel .panel-heading{padding-top:1em;padding-bottom:1.4em}body.status-page .timeline .moment .list-group.components .panel-heading strong,body.status-page .timeline .moment .panel .panel-heading strong{font-size:1.1em}body.status-page .timeline .moment .list-group.components .panel-body,body.status-page .timeline .moment .panel .panel-body{border-top:1px solid #eee}body.status-page .timeline .moment .list-group.components .panel-body p,body.status-page .timeline .moment .panel .panel-body p{font-size:1.1em}body.status-page .timeline .moment .list-group.components .panel-body p:not(:last-child),body.status-page .timeline .moment .panel .panel-body p:not(:last-child){margin-bottom:10px}@media (max-width:767px){body.status-page .timeline .moment .content{width:100%}}body.status-page .list-group{padding-left:0}body.status-page .list-group .list-group-item{border-radius:0;background-color:#fff;border:1px solid #e8e8e8;font-size:1.1em;padding:15px}body.status-page .list-group .list-group-item a{font-weight:400}body.status-page .list-group .list-group-item h4{margin:0;font-weight:400;max-width:90%}body.status-page .list-group .list-group-item p:not(:last-child),body.status-page .list-group .list-group-item time:not(:last-child){margin-bottom:10px}body.status-page .list-group .list-group-item time{margin-bottom:0}body.status-page .list-group .list-group-item i.icon{font-size:21px;line-height:24px;text-align:center;display:inline-block;min-width:20px}body.status-page .list-group .list-group-item.group-name{background-color:#e8e8e8;padding-top:.6em;padding-bottom:.6em;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}body.status-page .list-group .list-group-item.break{padding:1px;background-color:#f0f3f4}body.status-page .list-group.components{border-color:#e8e8e8}body.status-page .list-group.components:last-child{margin-bottom:30px}body.status-page .list-group.components+.components{margin-top:5px}body.status-page .list-group.components p{margin-bottom:10px}body.status-page .list-group.components .badge{color:transparent}body.status-page .list-group.components a{color:#333!important}body.status-page footer{position:absolute;width:100%;bottom:0;height:60px;padding:30px 0 60px;border-top:1px solid #e8e8e8;color:#666;font-size:13px;line-height:30px;text-align:center;text-shadow:0 1px 0 hsla(0,0%,100%,.5)}body.status-page footer .btn{text-shadow:none}body.status-page footer .list-inline>li{padding-right:0}@media (min-width:768px){body.status-page footer{text-align:left}body.status-page footer .list-inline{text-align:right}body.status-page footer .list-inline>li{padding-right:0}body.status-page footer .icons{margin-top:0;text-align:right}}body.status-page .section-components,body.status-page .section-metrics,body.status-page .section-scheduled,body.status-page .section-timeline{margin-top:40px}body.status-page .navbar-custom{padding-top:10px;padding-bottom:10px;width:100%;border-radius:0;margin-bottom:10px}body.status-page .navbar-custom a.navbar-brand{font-size:30px;font-weight:600}body.status-page .navbar-custom .navbar-nav li a{color:#333;font-size:1.7rem}body.status-page .navbar-custom .navbar-nav li a:hover{background-color:transparent}body.status-page .incident-update-item>p{display:inline-block} \ No newline at end of file diff --git a/public/dist/css/app.feac6a0c1283b11117bc898e9697488a.css b/public/dist/css/app.feac6a0c1283b11117bc898e9697488a.css deleted file mode 100644 index 62d029f7..00000000 --- a/public/dist/css/app.feac6a0c1283b11117bc898e9697488a.css +++ /dev/null @@ -1,11 +0,0 @@ -@charset "UTF-8";/*! - Ionicons, v2.0.1 - Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ - https://twitter.com/benjsperry https://twitter.com/ionicframework - MIT License: https://github.com/driftyco/ionicons - - Android-style icons originally built by Google’s - Material Design Icons: https://github.com/google/material-design-icons - used under CC BY http://creativecommons.org/licenses/by/4.0/ - Modified icons to fit ionicon’s grid from original. -*/pre,textarea{overflow:auto}hr,img{border:0}[class^=swal2],html{-webkit-tap-highlight-color:transparent}body,figure{margin:0}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.dropdown-menu>li>a,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.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,.dropdown-menu{float:left}.img-responsive,.img-thumbnail,.table,label{max-width:100%}.btn,.no-select{-moz-user-select:none;-ms-user-select:none}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}@font-face{font-family:Ionicons;src:url(../../../fonts/ionicons.eot?v=2.0.1);src:url(../../../fonts/ionicons.eot?v=2.0.1#iefix) format("embedded-opentype"),url(../../../fonts/ionicons.ttf?v=2.0.1) format("truetype"),url(../../../fonts/ionicons.woff?v=2.0.1) format("woff"),url(../../../fonts/ionicons.svg?v=2.0.1#Ionicons) format("svg");font-weight:400;font-style:normal}.ion,.ion-alert-circled:before,.ion-alert:before,.ion-android-add-circle:before,.ion-android-add:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-cloud:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done-all:before,.ion-android-done:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite-outline:before,.ion-android-favorite:before,.ion-android-film:before,.ion-android-folder-open:before,.ion-android-folder:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone-off:before,.ion-android-microphone:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-notifications:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person-add:before,.ion-android-person:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove-circle:before,.ion-android-remove:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share-alt:before,.ion-android-share:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-star:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace-outline:before,.ion-backspace:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox-working:before,.ion-chatbox:before,.ion-chatboxes:before,.ion-chatbubble-working:before,.ion-chatbubble:before,.ion-chatbubbles:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-checkmark:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close-circled:before,.ion-close-round:before,.ion-close:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code-download:before,.ion-code-working:before,.ion-code:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document-text:before,.ion-document:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email-unread:before,.ion-email:before,.ion-erlenmeyer-flask-bubbles:before,.ion-erlenmeyer-flask:before,.ion-eye-disabled:before,.ion-eye:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash-off:before,.ion-flash:before,.ion-folder:before,.ion-fork-repo:before,.ion-fork:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy-outline:before,.ion-happy:before,.ion-headphone:before,.ion-heart-broken:before,.ion-heart:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-help:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information-circled:before,.ion-information:before,.ion-ionic:before,.ion-ios-alarm-outline:before,.ion-ios-alarm:before,.ion-ios-albums-outline:before,.ion-ios-albums:before,.ion-ios-americanfootball-outline:before,.ion-ios-americanfootball:before,.ion-ios-analytics-outline:before,.ion-ios-analytics:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at-outline:before,.ion-ios-at:before,.ion-ios-barcode-outline:before,.ion-ios-barcode:before,.ion-ios-baseball-outline:before,.ion-ios-baseball:before,.ion-ios-basketball-outline:before,.ion-ios-basketball:before,.ion-ios-bell-outline:before,.ion-ios-bell:before,.ion-ios-body-outline:before,.ion-ios-body:before,.ion-ios-bolt-outline:before,.ion-ios-bolt:before,.ion-ios-book-outline:before,.ion-ios-book:before,.ion-ios-bookmarks-outline:before,.ion-ios-bookmarks:before,.ion-ios-box-outline:before,.ion-ios-box:before,.ion-ios-briefcase-outline:before,.ion-ios-briefcase:before,.ion-ios-browsers-outline:before,.ion-ios-browsers:before,.ion-ios-calculator-outline:before,.ion-ios-calculator:before,.ion-ios-calendar-outline:before,.ion-ios-calendar:before,.ion-ios-camera-outline:before,.ion-ios-camera:before,.ion-ios-cart-outline:before,.ion-ios-cart:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatbubble-outline:before,.ion-ios-chatbubble:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-checkmark:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock-outline:before,.ion-ios-clock:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-close:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-outline:before,.ion-ios-cloudy:before,.ion-ios-cog-outline:before,.ion-ios-cog:before,.ion-ios-color-filter-outline:before,.ion-ios-color-filter:before,.ion-ios-color-wand-outline:before,.ion-ios-color-wand:before,.ion-ios-compose-outline:before,.ion-ios-compose:before,.ion-ios-contact-outline:before,.ion-ios-contact:before,.ion-ios-copy-outline:before,.ion-ios-copy:before,.ion-ios-crop-strong:before,.ion-ios-crop:before,.ion-ios-download-outline:before,.ion-ios-download:before,.ion-ios-drag:before,.ion-ios-email-outline:before,.ion-ios-email:before,.ion-ios-eye-outline:before,.ion-ios-eye:before,.ion-ios-fastforward-outline:before,.ion-ios-fastforward:before,.ion-ios-filing-outline:before,.ion-ios-filing:before,.ion-ios-film-outline:before,.ion-ios-film:before,.ion-ios-flag-outline:before,.ion-ios-flag:before,.ion-ios-flame-outline:before,.ion-ios-flame:before,.ion-ios-flask-outline:before,.ion-ios-flask:before,.ion-ios-flower-outline:before,.ion-ios-flower:before,.ion-ios-folder-outline:before,.ion-ios-folder:before,.ion-ios-football-outline:before,.ion-ios-football:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-b-outline:before,.ion-ios-game-controller-b:before,.ion-ios-gear-outline:before,.ion-ios-gear:before,.ion-ios-glasses-outline:before,.ion-ios-glasses:before,.ion-ios-grid-view-outline:before,.ion-ios-grid-view:before,.ion-ios-heart-outline:before,.ion-ios-heart:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-help:before,.ion-ios-home-outline:before,.ion-ios-home:before,.ion-ios-infinite-outline:before,.ion-ios-infinite:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-information:before,.ion-ios-ionic-outline:before,.ion-ios-keypad-outline:before,.ion-ios-keypad:before,.ion-ios-lightbulb-outline:before,.ion-ios-lightbulb:before,.ion-ios-list-outline:before,.ion-ios-list:before,.ion-ios-location-outline:before,.ion-ios-location:before,.ion-ios-locked-outline:before,.ion-ios-locked:before,.ion-ios-loop-strong:before,.ion-ios-loop:before,.ion-ios-medical-outline:before,.ion-ios-medical:before,.ion-ios-medkit-outline:before,.ion-ios-medkit:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-mic:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-minus:before,.ion-ios-monitor-outline:before,.ion-ios-monitor:before,.ion-ios-moon-outline:before,.ion-ios-moon:before,.ion-ios-more-outline:before,.ion-ios-more:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate-outline:before,.ion-ios-navigate:before,.ion-ios-nutrition-outline:before,.ion-ios-nutrition:before,.ion-ios-paper-outline:before,.ion-ios-paper:before,.ion-ios-paperplane-outline:before,.ion-ios-paperplane:before,.ion-ios-partlysunny-outline:before,.ion-ios-partlysunny:before,.ion-ios-pause-outline:before,.ion-ios-pause:before,.ion-ios-paw-outline:before,.ion-ios-paw:before,.ion-ios-people-outline:before,.ion-ios-people:before,.ion-ios-person-outline:before,.ion-ios-person:before,.ion-ios-personadd-outline:before,.ion-ios-personadd:before,.ion-ios-photos-outline:before,.ion-ios-photos:before,.ion-ios-pie-outline:before,.ion-ios-pie:before,.ion-ios-pint-outline:before,.ion-ios-pint:before,.ion-ios-play-outline:before,.ion-ios-play:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-plus:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetags-outline:before,.ion-ios-pricetags:before,.ion-ios-printer-outline:before,.ion-ios-printer:before,.ion-ios-pulse-strong:before,.ion-ios-pulse:before,.ion-ios-rainy-outline:before,.ion-ios-rainy:before,.ion-ios-recording-outline:before,.ion-ios-recording:before,.ion-ios-redo-outline:before,.ion-ios-redo:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-refresh:before,.ion-ios-reload:before,.ion-ios-reverse-camera-outline:before,.ion-ios-reverse-camera:before,.ion-ios-rewind-outline:before,.ion-ios-rewind:before,.ion-ios-rose-outline:before,.ion-ios-rose:before,.ion-ios-search-strong:before,.ion-ios-search:before,.ion-ios-settings-strong:before,.ion-ios-settings:before,.ion-ios-shuffle-strong:before,.ion-ios-shuffle:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipbackward:before,.ion-ios-skipforward-outline:before,.ion-ios-skipforward:before,.ion-ios-snowy:before,.ion-ios-speedometer-outline:before,.ion-ios-speedometer:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-star:before,.ion-ios-stopwatch-outline:before,.ion-ios-stopwatch:before,.ion-ios-sunny-outline:before,.ion-ios-sunny:before,.ion-ios-telephone-outline:before,.ion-ios-telephone:before,.ion-ios-tennisball-outline:before,.ion-ios-tennisball:before,.ion-ios-thunderstorm-outline:before,.ion-ios-thunderstorm:before,.ion-ios-time-outline:before,.ion-ios-time:before,.ion-ios-timer-outline:before,.ion-ios-timer:before,.ion-ios-toggle-outline:before,.ion-ios-toggle:before,.ion-ios-trash-outline:before,.ion-ios-trash:before,.ion-ios-undo-outline:before,.ion-ios-undo:before,.ion-ios-unlocked-outline:before,.ion-ios-unlocked:before,.ion-ios-upload-outline:before,.ion-ios-upload:before,.ion-ios-videocam-outline:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass-outline:before,.ion-ios-wineglass:before,.ion-ios-world-outline:before,.ion-ios-world:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-minus:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon-round:before,.ion-navicon:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person-add:before,.ion-person-stalker:before,.ion-person:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-plus:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply-all:before,.ion-reply:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad-outline:before,.ion-sad:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android-outline:before,.ion-social-android:before,.ion-social-angular-outline:before,.ion-social-angular:before,.ion-social-apple-outline:before,.ion-social-apple:before,.ion-social-bitcoin-outline:before,.ion-social-bitcoin:before,.ion-social-buffer-outline:before,.ion-social-buffer:before,.ion-social-chrome-outline:before,.ion-social-chrome:before,.ion-social-codepen-outline:before,.ion-social-codepen:before,.ion-social-css3-outline:before,.ion-social-css3:before,.ion-social-designernews-outline:before,.ion-social-designernews:before,.ion-social-dribbble-outline:before,.ion-social-dribbble:before,.ion-social-dropbox-outline:before,.ion-social-dropbox:before,.ion-social-euro-outline:before,.ion-social-euro:before,.ion-social-facebook-outline:before,.ion-social-facebook:before,.ion-social-foursquare-outline:before,.ion-social-foursquare:before,.ion-social-freebsd-devil:before,.ion-social-github-outline:before,.ion-social-github:before,.ion-social-google-outline:before,.ion-social-google:before,.ion-social-googleplus-outline:before,.ion-social-googleplus:before,.ion-social-hackernews-outline:before,.ion-social-hackernews:before,.ion-social-html5-outline:before,.ion-social-html5:before,.ion-social-instagram-outline:before,.ion-social-instagram:before,.ion-social-javascript-outline:before,.ion-social-javascript:before,.ion-social-linkedin-outline:before,.ion-social-linkedin:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest-outline:before,.ion-social-pinterest:before,.ion-social-python:before,.ion-social-reddit-outline:before,.ion-social-reddit:before,.ion-social-rss-outline:before,.ion-social-rss:before,.ion-social-sass:before,.ion-social-skype-outline:before,.ion-social-skype:before,.ion-social-snapchat-outline:before,.ion-social-snapchat:before,.ion-social-tumblr-outline:before,.ion-social-tumblr:before,.ion-social-tux:before,.ion-social-twitch-outline:before,.ion-social-twitch:before,.ion-social-twitter-outline:before,.ion-social-twitter:before,.ion-social-usd-outline:before,.ion-social-usd:before,.ion-social-vimeo-outline:before,.ion-social-vimeo:before,.ion-social-whatsapp-outline:before,.ion-social-whatsapp:before,.ion-social-windows-outline:before,.ion-social-windows:before,.ion-social-wordpress-outline:before,.ion-social-wordpress:before,.ion-social-yahoo-outline:before,.ion-social-yahoo:before,.ion-social-yen-outline:before,.ion-social-yen:before,.ion-social-youtube-outline:before,.ion-social-youtube:before,.ion-soup-can-outline:before,.ion-soup-can:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle-filled:before,.ion-toggle:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt-outline:before,.ion-tshirt:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before,.ionicons{display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:""}.ion-alert-circled:before{content:""}.ion-android-add:before{content:""}.ion-android-add-circle:before{content:""}.ion-android-alarm-clock:before{content:""}.ion-android-alert:before{content:""}.ion-android-apps:before{content:""}.ion-android-archive:before{content:""}.ion-android-arrow-back:before{content:""}.ion-android-arrow-down:before{content:""}.ion-android-arrow-dropdown:before{content:""}.ion-android-arrow-dropdown-circle:before{content:""}.ion-android-arrow-dropleft:before{content:""}.ion-android-arrow-dropleft-circle:before{content:""}.ion-android-arrow-dropright:before{content:""}.ion-android-arrow-dropright-circle:before{content:""}.ion-android-arrow-dropup:before{content:""}.ion-android-arrow-dropup-circle:before{content:""}.ion-android-arrow-forward:before{content:""}.ion-android-arrow-up:before{content:""}.ion-android-attach:before{content:""}.ion-android-bar:before{content:""}.ion-android-bicycle:before{content:""}.ion-android-boat:before{content:""}.ion-android-bookmark:before{content:""}.ion-android-bulb:before{content:""}.ion-android-bus:before{content:""}.ion-android-calendar:before{content:""}.ion-android-call:before{content:""}.ion-android-camera:before{content:""}.ion-android-cancel:before{content:""}.ion-android-car:before{content:""}.ion-android-cart:before{content:""}.ion-android-chat:before{content:""}.ion-android-checkbox:before{content:""}.ion-android-checkbox-blank:before{content:""}.ion-android-checkbox-outline:before{content:""}.ion-android-checkbox-outline-blank:before{content:""}.ion-android-checkmark-circle:before{content:""}.ion-android-clipboard:before{content:""}.ion-android-close:before{content:""}.ion-android-cloud:before{content:""}.ion-android-cloud-circle:before{content:""}.ion-android-cloud-done:before{content:""}.ion-android-cloud-outline:before{content:""}.ion-android-color-palette:before{content:""}.ion-android-compass:before{content:""}.ion-android-contact:before{content:""}.ion-android-contacts:before{content:""}.ion-android-contract:before{content:""}.ion-android-create:before{content:""}.ion-android-delete:before{content:""}.ion-android-desktop:before{content:""}.ion-android-document:before{content:""}.ion-android-done:before{content:""}.ion-android-done-all:before{content:""}.ion-android-download:before{content:""}.ion-android-drafts:before{content:""}.ion-android-exit:before{content:""}.ion-android-expand:before{content:""}.ion-android-favorite:before{content:""}.ion-android-favorite-outline:before{content:""}.ion-android-film:before{content:""}.ion-android-folder:before{content:""}.ion-android-folder-open:before{content:""}.ion-android-funnel:before{content:""}.ion-android-globe:before{content:""}.ion-android-hand:before{content:""}.ion-android-hangout:before{content:""}.ion-android-happy:before{content:""}.ion-android-home:before{content:""}.ion-android-image:before{content:""}.ion-android-laptop:before{content:""}.ion-android-list:before{content:""}.ion-android-locate:before{content:""}.ion-android-lock:before{content:""}.ion-android-mail:before{content:""}.ion-android-map:before{content:""}.ion-android-menu:before{content:""}.ion-android-microphone:before{content:""}.ion-android-microphone-off:before{content:""}.ion-android-more-horizontal:before{content:""}.ion-android-more-vertical:before{content:""}.ion-android-navigate:before{content:""}.ion-android-notifications:before{content:""}.ion-android-notifications-none:before{content:""}.ion-android-notifications-off:before{content:""}.ion-android-open:before{content:""}.ion-android-options:before{content:""}.ion-android-people:before{content:""}.ion-android-person:before{content:""}.ion-android-person-add:before{content:""}.ion-android-phone-landscape:before{content:""}.ion-android-phone-portrait:before{content:""}.ion-android-pin:before{content:""}.ion-android-plane:before{content:""}.ion-android-playstore:before{content:""}.ion-android-print:before{content:""}.ion-android-radio-button-off:before{content:""}.ion-android-radio-button-on:before{content:""}.ion-android-refresh:before{content:""}.ion-android-remove:before{content:""}.ion-android-remove-circle:before{content:""}.ion-android-restaurant:before{content:""}.ion-android-sad:before{content:""}.ion-android-search:before{content:""}.ion-android-send:before{content:""}.ion-android-settings:before{content:""}.ion-android-share:before{content:""}.ion-android-share-alt:before{content:""}.ion-android-star:before{content:""}.ion-android-star-half:before{content:""}.ion-android-star-outline:before{content:""}.ion-android-stopwatch:before{content:""}.ion-android-subway:before{content:""}.ion-android-sunny:before{content:""}.ion-android-sync:before{content:""}.ion-android-textsms:before{content:""}.ion-android-time:before{content:""}.ion-android-train:before{content:""}.ion-android-unlock:before{content:""}.ion-android-upload:before{content:""}.ion-android-volume-down:before{content:""}.ion-android-volume-mute:before{content:""}.ion-android-volume-off:before{content:""}.ion-android-volume-up:before{content:""}.ion-android-walk:before{content:""}.ion-android-warning:before{content:""}.ion-android-watch:before{content:""}.ion-android-wifi:before{content:""}.ion-aperture:before{content:""}.ion-archive:before{content:""}.ion-arrow-down-a:before{content:""}.ion-arrow-down-b:before{content:""}.ion-arrow-down-c:before{content:""}.ion-arrow-expand:before{content:""}.ion-arrow-graph-down-left:before{content:""}.ion-arrow-graph-down-right:before{content:""}.ion-arrow-graph-up-left:before{content:""}.ion-arrow-graph-up-right:before{content:""}.ion-arrow-left-a:before{content:""}.ion-arrow-left-b:before{content:""}.ion-arrow-left-c:before{content:""}.ion-arrow-move:before{content:""}.ion-arrow-resize:before{content:""}.ion-arrow-return-left:before{content:""}.ion-arrow-return-right:before{content:""}.ion-arrow-right-a:before{content:""}.ion-arrow-right-b:before{content:""}.ion-arrow-right-c:before{content:""}.ion-arrow-shrink:before{content:""}.ion-arrow-swap:before{content:""}.ion-arrow-up-a:before{content:""}.ion-arrow-up-b:before{content:""}.ion-arrow-up-c:before{content:""}.ion-asterisk:before{content:""}.ion-at:before{content:""}.ion-backspace:before{content:""}.ion-backspace-outline:before{content:""}.ion-bag:before{content:""}.ion-battery-charging:before{content:""}.ion-battery-empty:before{content:""}.ion-battery-full:before{content:""}.ion-battery-half:before{content:""}.ion-battery-low:before{content:""}.ion-beaker:before{content:""}.ion-beer:before{content:""}.ion-bluetooth:before{content:""}.ion-bonfire:before{content:""}.ion-bookmark:before{content:""}.ion-bowtie:before{content:""}.ion-briefcase:before{content:""}.ion-bug:before{content:""}.ion-calculator:before{content:""}.ion-calendar:before{content:""}.ion-camera:before{content:""}.ion-card:before{content:""}.ion-cash:before{content:""}.ion-chatbox:before{content:""}.ion-chatbox-working:before{content:""}.ion-chatboxes:before{content:""}.ion-chatbubble:before{content:""}.ion-chatbubble-working:before{content:""}.ion-chatbubbles:before{content:""}.ion-checkmark:before{content:""}.ion-checkmark-circled:before{content:""}.ion-checkmark-round:before{content:""}.ion-chevron-down:before{content:""}.ion-chevron-left:before{content:""}.ion-chevron-right:before{content:""}.ion-chevron-up:before{content:""}.ion-clipboard:before{content:""}.ion-clock:before{content:""}.ion-close:before{content:""}.ion-close-circled:before{content:""}.ion-close-round:before{content:""}.ion-closed-captioning:before{content:""}.ion-cloud:before{content:""}.ion-code:before{content:""}.ion-code-download:before{content:""}.ion-code-working:before{content:""}.ion-coffee:before{content:""}.ion-compass:before{content:""}.ion-compose:before{content:""}.ion-connection-bars:before{content:""}.ion-contrast:before{content:""}.ion-crop:before{content:""}.ion-cube:before{content:""}.ion-disc:before{content:""}.ion-document:before{content:""}.ion-document-text:before{content:""}.ion-drag:before{content:""}.ion-earth:before{content:""}.ion-easel:before{content:""}.ion-edit:before{content:""}.ion-egg:before{content:""}.ion-eject:before{content:""}.ion-email:before{content:""}.ion-email-unread:before{content:""}.ion-erlenmeyer-flask:before{content:""}.ion-erlenmeyer-flask-bubbles:before{content:""}.ion-eye:before{content:""}.ion-eye-disabled:before{content:""}.ion-female:before{content:""}.ion-filing:before{content:""}.ion-film-marker:before{content:""}.ion-fireball:before{content:""}.ion-flag:before{content:""}.ion-flame:before{content:""}.ion-flash:before{content:""}.ion-flash-off:before{content:""}.ion-folder:before{content:""}.ion-fork:before{content:""}.ion-fork-repo:before{content:""}.ion-forward:before{content:""}.ion-funnel:before{content:""}.ion-gear-a:before{content:""}.ion-gear-b:before{content:""}.ion-grid:before{content:""}.ion-hammer:before{content:""}.ion-happy:before{content:""}.ion-happy-outline:before{content:""}.ion-headphone:before{content:""}.ion-heart:before{content:""}.ion-heart-broken:before{content:""}.ion-help:before{content:""}.ion-help-buoy:before{content:""}.ion-help-circled:before{content:""}.ion-home:before{content:""}.ion-icecream:before{content:""}.ion-image:before{content:""}.ion-images:before{content:""}.ion-information:before{content:""}.ion-information-circled:before{content:""}.ion-ionic:before{content:""}.ion-ios-alarm:before{content:""}.ion-ios-alarm-outline:before{content:""}.ion-ios-albums:before{content:""}.ion-ios-albums-outline:before{content:""}.ion-ios-americanfootball:before{content:""}.ion-ios-americanfootball-outline:before{content:""}.ion-ios-analytics:before{content:""}.ion-ios-analytics-outline:before{content:""}.ion-ios-arrow-back:before{content:""}.ion-ios-arrow-down:before{content:""}.ion-ios-arrow-forward:before{content:""}.ion-ios-arrow-left:before{content:""}.ion-ios-arrow-right:before{content:""}.ion-ios-arrow-thin-down:before{content:""}.ion-ios-arrow-thin-left:before{content:""}.ion-ios-arrow-thin-right:before{content:""}.ion-ios-arrow-thin-up:before{content:""}.ion-ios-arrow-up:before{content:""}.ion-ios-at:before{content:""}.ion-ios-at-outline:before{content:""}.ion-ios-barcode:before{content:""}.ion-ios-barcode-outline:before{content:""}.ion-ios-baseball:before{content:""}.ion-ios-baseball-outline:before{content:""}.ion-ios-basketball:before{content:""}.ion-ios-basketball-outline:before{content:""}.ion-ios-bell:before{content:""}.ion-ios-bell-outline:before{content:""}.ion-ios-body:before{content:""}.ion-ios-body-outline:before{content:""}.ion-ios-bolt:before{content:""}.ion-ios-bolt-outline:before{content:""}.ion-ios-book:before{content:""}.ion-ios-book-outline:before{content:""}.ion-ios-bookmarks:before{content:""}.ion-ios-bookmarks-outline:before{content:""}.ion-ios-box:before{content:""}.ion-ios-box-outline:before{content:""}.ion-ios-briefcase:before{content:""}.ion-ios-briefcase-outline:before{content:""}.ion-ios-browsers:before{content:""}.ion-ios-browsers-outline:before{content:""}.ion-ios-calculator:before{content:""}.ion-ios-calculator-outline:before{content:""}.ion-ios-calendar:before{content:""}.ion-ios-calendar-outline:before{content:""}.ion-ios-camera:before{content:""}.ion-ios-camera-outline:before{content:""}.ion-ios-cart:before{content:""}.ion-ios-cart-outline:before{content:""}.ion-ios-chatboxes:before{content:""}.ion-ios-chatboxes-outline:before{content:""}.ion-ios-chatbubble:before{content:""}.ion-ios-chatbubble-outline:before{content:""}.ion-ios-checkmark:before{content:""}.ion-ios-checkmark-empty:before{content:""}.ion-ios-checkmark-outline:before{content:""}.ion-ios-circle-filled:before{content:""}.ion-ios-circle-outline:before{content:""}.ion-ios-clock:before{content:""}.ion-ios-clock-outline:before{content:""}.ion-ios-close:before{content:""}.ion-ios-close-empty:before{content:""}.ion-ios-close-outline:before{content:""}.ion-ios-cloud:before{content:""}.ion-ios-cloud-download:before{content:""}.ion-ios-cloud-download-outline:before{content:""}.ion-ios-cloud-outline:before{content:""}.ion-ios-cloud-upload:before{content:""}.ion-ios-cloud-upload-outline:before{content:""}.ion-ios-cloudy:before{content:""}.ion-ios-cloudy-night:before{content:""}.ion-ios-cloudy-night-outline:before{content:""}.ion-ios-cloudy-outline:before{content:""}.ion-ios-cog:before{content:""}.ion-ios-cog-outline:before{content:""}.ion-ios-color-filter:before{content:""}.ion-ios-color-filter-outline:before{content:""}.ion-ios-color-wand:before{content:""}.ion-ios-color-wand-outline:before{content:""}.ion-ios-compose:before{content:""}.ion-ios-compose-outline:before{content:""}.ion-ios-contact:before{content:""}.ion-ios-contact-outline:before{content:""}.ion-ios-copy:before{content:""}.ion-ios-copy-outline:before{content:""}.ion-ios-crop:before{content:""}.ion-ios-crop-strong:before{content:""}.ion-ios-download:before{content:""}.ion-ios-download-outline:before{content:""}.ion-ios-drag:before{content:""}.ion-ios-email:before{content:""}.ion-ios-email-outline:before{content:""}.ion-ios-eye:before{content:""}.ion-ios-eye-outline:before{content:""}.ion-ios-fastforward:before{content:""}.ion-ios-fastforward-outline:before{content:""}.ion-ios-filing:before{content:""}.ion-ios-filing-outline:before{content:""}.ion-ios-film:before{content:""}.ion-ios-film-outline:before{content:""}.ion-ios-flag:before{content:""}.ion-ios-flag-outline:before{content:""}.ion-ios-flame:before{content:""}.ion-ios-flame-outline:before{content:""}.ion-ios-flask:before{content:""}.ion-ios-flask-outline:before{content:""}.ion-ios-flower:before{content:""}.ion-ios-flower-outline:before{content:""}.ion-ios-folder:before{content:""}.ion-ios-folder-outline:before{content:""}.ion-ios-football:before{content:""}.ion-ios-football-outline:before{content:""}.ion-ios-game-controller-a:before{content:""}.ion-ios-game-controller-a-outline:before{content:""}.ion-ios-game-controller-b:before{content:""}.ion-ios-game-controller-b-outline:before{content:""}.ion-ios-gear:before{content:""}.ion-ios-gear-outline:before{content:""}.ion-ios-glasses:before{content:""}.ion-ios-glasses-outline:before{content:""}.ion-ios-grid-view:before{content:""}.ion-ios-grid-view-outline:before{content:""}.ion-ios-heart:before{content:""}.ion-ios-heart-outline:before{content:""}.ion-ios-help:before{content:""}.ion-ios-help-empty:before{content:""}.ion-ios-help-outline:before{content:""}.ion-ios-home:before{content:""}.ion-ios-home-outline:before{content:""}.ion-ios-infinite:before{content:""}.ion-ios-infinite-outline:before{content:""}.ion-ios-information:before{content:""}.ion-ios-information-empty:before{content:""}.ion-ios-information-outline:before{content:""}.ion-ios-ionic-outline:before{content:""}.ion-ios-keypad:before{content:""}.ion-ios-keypad-outline:before{content:""}.ion-ios-lightbulb:before{content:""}.ion-ios-lightbulb-outline:before{content:""}.ion-ios-list:before{content:""}.ion-ios-list-outline:before{content:""}.ion-ios-location:before{content:""}.ion-ios-location-outline:before{content:""}.ion-ios-locked:before{content:""}.ion-ios-locked-outline:before{content:""}.ion-ios-loop:before{content:""}.ion-ios-loop-strong:before{content:""}.ion-ios-medical:before{content:""}.ion-ios-medical-outline:before{content:""}.ion-ios-medkit:before{content:""}.ion-ios-medkit-outline:before{content:""}.ion-ios-mic:before{content:""}.ion-ios-mic-off:before{content:""}.ion-ios-mic-outline:before{content:""}.ion-ios-minus:before{content:""}.ion-ios-minus-empty:before{content:""}.ion-ios-minus-outline:before{content:""}.ion-ios-monitor:before{content:""}.ion-ios-monitor-outline:before{content:""}.ion-ios-moon:before{content:""}.ion-ios-moon-outline:before{content:""}.ion-ios-more:before{content:""}.ion-ios-more-outline:before{content:""}.ion-ios-musical-note:before{content:""}.ion-ios-musical-notes:before{content:""}.ion-ios-navigate:before{content:""}.ion-ios-navigate-outline:before{content:""}.ion-ios-nutrition:before{content:""}.ion-ios-nutrition-outline:before{content:""}.ion-ios-paper:before{content:""}.ion-ios-paper-outline:before{content:""}.ion-ios-paperplane:before{content:""}.ion-ios-paperplane-outline:before{content:""}.ion-ios-partlysunny:before{content:""}.ion-ios-partlysunny-outline:before{content:""}.ion-ios-pause:before{content:""}.ion-ios-pause-outline:before{content:""}.ion-ios-paw:before{content:""}.ion-ios-paw-outline:before{content:""}.ion-ios-people:before{content:""}.ion-ios-people-outline:before{content:""}.ion-ios-person:before{content:""}.ion-ios-person-outline:before{content:""}.ion-ios-personadd:before{content:""}.ion-ios-personadd-outline:before{content:""}.ion-ios-photos:before{content:""}.ion-ios-photos-outline:before{content:""}.ion-ios-pie:before{content:""}.ion-ios-pie-outline:before{content:""}.ion-ios-pint:before{content:""}.ion-ios-pint-outline:before{content:""}.ion-ios-play:before{content:""}.ion-ios-play-outline:before{content:""}.ion-ios-plus:before{content:""}.ion-ios-plus-empty:before{content:""}.ion-ios-plus-outline:before{content:""}.ion-ios-pricetag:before{content:""}.ion-ios-pricetag-outline:before{content:""}.ion-ios-pricetags:before{content:""}.ion-ios-pricetags-outline:before{content:""}.ion-ios-printer:before{content:""}.ion-ios-printer-outline:before{content:""}.ion-ios-pulse:before{content:""}.ion-ios-pulse-strong:before{content:""}.ion-ios-rainy:before{content:""}.ion-ios-rainy-outline:before{content:""}.ion-ios-recording:before{content:""}.ion-ios-recording-outline:before{content:""}.ion-ios-redo:before{content:""}.ion-ios-redo-outline:before{content:""}.ion-ios-refresh:before{content:""}.ion-ios-refresh-empty:before{content:""}.ion-ios-refresh-outline:before{content:""}.ion-ios-reload:before{content:""}.ion-ios-reverse-camera:before{content:""}.ion-ios-reverse-camera-outline:before{content:""}.ion-ios-rewind:before{content:""}.ion-ios-rewind-outline:before{content:""}.ion-ios-rose:before{content:""}.ion-ios-rose-outline:before{content:""}.ion-ios-search:before{content:""}.ion-ios-search-strong:before{content:""}.ion-ios-settings:before{content:""}.ion-ios-settings-strong:before{content:""}.ion-ios-shuffle:before{content:""}.ion-ios-shuffle-strong:before{content:""}.ion-ios-skipbackward:before{content:""}.ion-ios-skipbackward-outline:before{content:""}.ion-ios-skipforward:before{content:""}.ion-ios-skipforward-outline:before{content:""}.ion-ios-snowy:before{content:""}.ion-ios-speedometer:before{content:""}.ion-ios-speedometer-outline:before{content:""}.ion-ios-star:before{content:""}.ion-ios-star-half:before{content:""}.ion-ios-star-outline:before{content:""}.ion-ios-stopwatch:before{content:""}.ion-ios-stopwatch-outline:before{content:""}.ion-ios-sunny:before{content:""}.ion-ios-sunny-outline:before{content:""}.ion-ios-telephone:before{content:""}.ion-ios-telephone-outline:before{content:""}.ion-ios-tennisball:before{content:""}.ion-ios-tennisball-outline:before{content:""}.ion-ios-thunderstorm:before{content:""}.ion-ios-thunderstorm-outline:before{content:""}.ion-ios-time:before{content:""}.ion-ios-time-outline:before{content:""}.ion-ios-timer:before{content:""}.ion-ios-timer-outline:before{content:""}.ion-ios-toggle:before{content:""}.ion-ios-toggle-outline:before{content:""}.ion-ios-trash:before{content:""}.ion-ios-trash-outline:before{content:""}.ion-ios-undo:before{content:""}.ion-ios-undo-outline:before{content:""}.ion-ios-unlocked:before{content:""}.ion-ios-unlocked-outline:before{content:""}.ion-ios-upload:before{content:""}.ion-ios-upload-outline:before{content:""}.ion-ios-videocam:before{content:""}.ion-ios-videocam-outline:before{content:""}.ion-ios-volume-high:before{content:""}.ion-ios-volume-low:before{content:""}.ion-ios-wineglass:before{content:""}.ion-ios-wineglass-outline:before{content:""}.ion-ios-world:before{content:""}.ion-ios-world-outline:before{content:""}.ion-ipad:before{content:""}.ion-iphone:before{content:""}.ion-ipod:before{content:""}.ion-jet:before{content:""}.ion-key:before{content:""}.ion-knife:before{content:""}.ion-laptop:before{content:""}.ion-leaf:before{content:""}.ion-levels:before{content:""}.ion-lightbulb:before{content:""}.ion-link:before{content:""}.ion-load-a:before{content:""}.ion-load-b:before{content:""}.ion-load-c:before{content:""}.ion-load-d:before{content:""}.ion-location:before{content:""}.ion-lock-combination:before{content:""}.ion-locked:before{content:""}.ion-log-in:before{content:""}.ion-log-out:before{content:""}.ion-loop:before{content:""}.ion-magnet:before{content:""}.ion-male:before{content:""}.ion-man:before{content:""}.ion-map:before{content:""}.ion-medkit:before{content:""}.ion-merge:before{content:""}.ion-mic-a:before{content:""}.ion-mic-b:before{content:""}.ion-mic-c:before{content:""}.ion-minus:before{content:""}.ion-minus-circled:before{content:""}.ion-minus-round:before{content:""}.ion-model-s:before{content:""}.ion-monitor:before{content:""}.ion-more:before{content:""}.ion-mouse:before{content:""}.ion-music-note:before{content:""}.ion-navicon:before{content:""}.ion-navicon-round:before{content:""}.ion-navigate:before{content:""}.ion-network:before{content:""}.ion-no-smoking:before{content:""}.ion-nuclear:before{content:""}.ion-outlet:before{content:""}.ion-paintbrush:before{content:""}.ion-paintbucket:before{content:""}.ion-paper-airplane:before{content:""}.ion-paperclip:before{content:""}.ion-pause:before{content:""}.ion-person:before{content:""}.ion-person-add:before{content:""}.ion-person-stalker:before{content:""}.ion-pie-graph:before{content:""}.ion-pin:before{content:""}.ion-pinpoint:before{content:""}.ion-pizza:before{content:""}.ion-plane:before{content:""}.ion-planet:before{content:""}.ion-play:before{content:""}.ion-playstation:before{content:""}.ion-plus:before{content:""}.ion-plus-circled:before{content:""}.ion-plus-round:before{content:""}.ion-podium:before{content:""}.ion-pound:before{content:""}.ion-power:before{content:""}.ion-pricetag:before{content:""}.ion-pricetags:before{content:""}.ion-printer:before{content:""}.ion-pull-request:before{content:""}.ion-qr-scanner:before{content:""}.ion-quote:before{content:""}.ion-radio-waves:before{content:""}.ion-record:before{content:""}.ion-refresh:before{content:""}.ion-reply:before{content:""}.ion-reply-all:before{content:""}.ion-ribbon-a:before{content:""}.ion-ribbon-b:before{content:""}.ion-sad:before{content:""}.ion-sad-outline:before{content:""}.ion-scissors:before{content:""}.ion-search:before{content:""}.ion-settings:before{content:""}.ion-share:before{content:""}.ion-shuffle:before{content:""}.ion-skip-backward:before{content:""}.ion-skip-forward:before{content:""}.ion-social-android:before{content:""}.ion-social-android-outline:before{content:""}.ion-social-angular:before{content:""}.ion-social-angular-outline:before{content:""}.ion-social-apple:before{content:""}.ion-social-apple-outline:before{content:""}.ion-social-bitcoin:before{content:""}.ion-social-bitcoin-outline:before{content:""}.ion-social-buffer:before{content:""}.ion-social-buffer-outline:before{content:""}.ion-social-chrome:before{content:""}.ion-social-chrome-outline:before{content:""}.ion-social-codepen:before{content:""}.ion-social-codepen-outline:before{content:""}.ion-social-css3:before{content:""}.ion-social-css3-outline:before{content:""}.ion-social-designernews:before{content:""}.ion-social-designernews-outline:before{content:""}.ion-social-dribbble:before{content:""}.ion-social-dribbble-outline:before{content:""}.ion-social-dropbox:before{content:""}.ion-social-dropbox-outline:before{content:""}.ion-social-euro:before{content:""}.ion-social-euro-outline:before{content:""}.ion-social-facebook:before{content:""}.ion-social-facebook-outline:before{content:""}.ion-social-foursquare:before{content:""}.ion-social-foursquare-outline:before{content:""}.ion-social-freebsd-devil:before{content:""}.ion-social-github:before{content:""}.ion-social-github-outline:before{content:""}.ion-social-google:before{content:""}.ion-social-google-outline:before{content:""}.ion-social-googleplus:before{content:""}.ion-social-googleplus-outline:before{content:""}.ion-social-hackernews:before{content:""}.ion-social-hackernews-outline:before{content:""}.ion-social-html5:before{content:""}.ion-social-html5-outline:before{content:""}.ion-social-instagram:before{content:""}.ion-social-instagram-outline:before{content:""}.ion-social-javascript:before{content:""}.ion-social-javascript-outline:before{content:""}.ion-social-linkedin:before{content:""}.ion-social-linkedin-outline:before{content:""}.ion-social-markdown:before{content:""}.ion-social-nodejs:before{content:""}.ion-social-octocat:before{content:""}.ion-social-pinterest:before{content:""}.ion-social-pinterest-outline:before{content:""}.ion-social-python:before{content:""}.ion-social-reddit:before{content:""}.ion-social-reddit-outline:before{content:""}.ion-social-rss:before{content:""}.ion-social-rss-outline:before{content:""}.ion-social-sass:before{content:""}.ion-social-skype:before{content:""}.ion-social-skype-outline:before{content:""}.ion-social-snapchat:before{content:""}.ion-social-snapchat-outline:before{content:""}.ion-social-tumblr:before{content:""}.ion-social-tumblr-outline:before{content:""}.ion-social-tux:before{content:""}.ion-social-twitch:before{content:""}.ion-social-twitch-outline:before{content:""}.ion-social-twitter:before{content:""}.ion-social-twitter-outline:before{content:""}.ion-social-usd:before{content:""}.ion-social-usd-outline:before{content:""}.ion-social-vimeo:before{content:""}.ion-social-vimeo-outline:before{content:""}.ion-social-whatsapp:before{content:""}.ion-social-whatsapp-outline:before{content:""}.ion-social-windows:before{content:""}.ion-social-windows-outline:before{content:""}.ion-social-wordpress:before{content:""}.ion-social-wordpress-outline:before{content:""}.ion-social-yahoo:before{content:""}.ion-social-yahoo-outline:before{content:""}.ion-social-yen:before{content:""}.ion-social-yen-outline:before{content:""}.ion-social-youtube:before{content:""}.ion-social-youtube-outline:before{content:""}.ion-soup-can:before{content:""}.ion-soup-can-outline:before{content:""}.ion-speakerphone:before{content:""}.ion-speedometer:before{content:""}.ion-spoon:before{content:""}.ion-star:before{content:""}.ion-stats-bars:before{content:""}.ion-steam:before{content:""}.ion-stop:before{content:""}.ion-thermometer:before{content:""}.ion-thumbsdown:before{content:""}.ion-thumbsup:before{content:""}.ion-toggle:before{content:""}.ion-toggle-filled:before{content:""}.ion-transgender:before{content:""}.ion-trash-a:before{content:""}.ion-trash-b:before{content:""}.ion-trophy:before{content:""}.ion-tshirt:before{content:""}.ion-tshirt-outline:before{content:""}.ion-umbrella:before{content:""}.ion-university:before{content:""}.ion-unlocked:before{content:""}.ion-upload:before{content:""}.ion-usb:before{content:""}.ion-videocamera:before{content:""}.ion-volume-high:before{content:""}.ion-volume-low:before{content:""}.ion-volume-medium:before{content:""}.ion-volume-mute:before{content:""}.ion-wand:before{content:""}.ion-waterdrop:before{content:""}.ion-wifi:before{content:""}.ion-wineglass:before{content:""}.ion-woman:before{content:""}.ion-wrench:before{content:""}.ion-xbox:before{content:""}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}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}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.tooltip,address{font-style:normal}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{border:0;padding:0}input[type=checkbox],input[type=radio]{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-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.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}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.form-control,.navbar-toggle,.open>.btn-danger.dropdown-toggle,.open>.btn-default.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-success.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}.img-thumbnail,body{background-color:#fff}*,:after,:before{box-sizing:border-box}html{font-size:10px}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#67808c;text-decoration:none}a:focus,a:hover{color:#465760;text-decoration:underline}a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;height:auto}.img-rounded{border-radius:4px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}select[multiple],select[size],textarea.form-control{height:auto}.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}dt,kbd kbd,label{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,output,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.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}.initialism,.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#67808c}a.text-primary:focus,a.text-primary:hover{color:#51656f}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#67808c}a.bg-primary:focus,a.bg-primary:hover{background-color:#51656f}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd{margin-left:0}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}legend,pre{color:#333}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.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}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:3px}kbd{color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row{margin-left:-15px;margin-right:-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-left:15px;padding-right:15px}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333333%}.col-xs-push-2{left:16.66666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333333%}.col-xs-push-5{left:41.66666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333333%}.col-xs-push-8{left:66.66666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333333%}.col-xs-push-11{left:91.66666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-12{margin-left:100%}@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-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-12{margin-left:100%}}@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-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-12{margin-left:100%}}@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-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-12{margin-left:100%}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{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,.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,.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 col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.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{overflow-x:auto;min-height:.01%}@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,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px}.checkbox,.radio,input[type=file],output{display:block}input[type=search]{box-sizing:border-box;-webkit-appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=range]{display:block;width:100%}input[type=checkbox]:focus,input[type=radio]:focus,input[type=file]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px;font-size:14px;color:#555}.form-control{border-radius:3px}.form-control:focus{outline:0;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}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.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}.form-control::-ms-expand{border:0;background-color:transparent}.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}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{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-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,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-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,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;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-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,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}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.input-group-sm>.input-group-btn>select.btn,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,select.input-sm{height:30px;line-height:30px}.input-group-sm>.input-group-btn>select[multiple].btn,.input-group-sm>.input-group-btn>textarea.btn,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,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:2px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:4px}.input-group-lg>.input-group-btn>select.btn,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,select.input-lg{height:46px;line-height:46px}.input-group-lg>.input-group-btn>select[multiple].btn,.input-group-lg>.input-group-btn>textarea.btn,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,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:4px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 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}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.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-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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 .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:3px;-webkit-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e5e5;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e5e5;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.btn-default.dropdown-toggle.focus,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,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:#67808c;border-color:#5c727d}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#51656f;border-color:#262f34}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#51656f;border-color:#42525a}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#42525a;border-color:#262f34}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#67808c;border-color:#5c727d}.btn-primary .badge{color:#67808c;background-color:#fff}.btn-success{color:#fff;background-color:#7ED321;border-color:#71bd1e}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#64a71a;border-color:#2f4f0c}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#64a71a;border-color:#518815}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#518815;border-color:#2f4f0c}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#7ED321;border-color:#71bd1e}.btn-success .badge{color:#7ED321;background-color:#fff}.btn-info{color:#fff;background-color:#3498db;border-color:#258cd1}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#217dbb;border-color:#124364}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#217dbb;border-color:#1c699d}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#1c699d;border-color:#124364}.btn-info.active,.btn-info:active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#3498db;border-color:#258cd1}.btn-info .badge{color:#3498db;background-color:#fff}.btn-warning{color:#fff;background-color:#F80;border-color:#e67a00}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#cc6d00;border-color:#663600}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#cc6d00;border-color:#a85a00}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#a85a00;border-color:#663600}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#F80;border-color:#e67a00}.btn-warning .badge{color:#F80;background-color:#fff}.btn-danger{color:#fff;background-color:#ff6f6f;border-color:#ff5656}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#ff3c3c;border-color:#d50000}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#ff3c3c;border-color:#ff1818}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#ff1818;border-color:#d50000}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ff6f6f;border-color:#ff5656}.btn-danger .badge{color:#ff6f6f;background-color:#fff}.btn-link{color:#67808c;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#465760;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:4px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:2px}.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%}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;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;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#67808c}.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;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#777}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.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{left:0;right:auto}}.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:after,.btn-toolbar:before{content:" ";display:table}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-group-lg>.btn .caret,.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:after,.btn-group-vertical>.btn-group:before{content:" ";display:table}.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:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.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}.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-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;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,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.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:3px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:2px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:4px}.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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.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{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav:after{clear:both}.nav>li>a{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;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#67808c}.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:3px 3px 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;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li,.nav-tabs.nav-justified>li{float:none}.nav-pills>li>a{border-radius:3px}.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:#67808c}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.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-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before{display:table;content:" "}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;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-left:0;padding-right:0}}.modal,.modal-open{overflow:hidden}@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}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.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;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@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-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:3px}.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}.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;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}}.badge,.label{line-height:1;white-space:nowrap;text-align:center;font-weight:700}@media (min-width:768px){.navbar-toggle{display:none}.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;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.btn-group-sm>.navbar-btn.btn,.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.btn-group-xs>.navbar-btn.btn,.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-left:15px;margin-right:15px}.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:#5e5d5d;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{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{background-color:#e7e7e7;color:#555}@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:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{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:#090909}.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{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.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:#090909}.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}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:after,.pager:before{content:" ";display:table}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd}.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}.close,.list-group-item>.badge{float:right}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#67808c}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#51656f}.label-success{background-color:#7ED321}.label-success[href]:focus,.label-success[href]:hover{background-color:#64a71a}.label-info{background-color:#3498db}.label-info[href]:focus,.label-info[href]:hover{background-color:#217dbb}.label-warning{background-color:#F80}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#cc6d00}.label-danger{background-color:#ff6f6f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#ff3c3c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#67808c;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert{padding:15px;margin-bottom:20px}.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}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}.list-group{margin-bottom:20px;padding-left:0}.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-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.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:#67808c;border-color:#67808c}.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:#dbe1e4}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.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,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.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,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.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,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.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,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.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,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.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,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.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,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel,body.status-page .list-group.components{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:3px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table,body.status-page .list-group.components>.list-group,body.status-page .list-group.components>.panel-collapse>.list-group,body.status-page .list-group.components>.panel-collapse>.table,body.status-page .list-group.components>.table,body.status-page .list-group.components>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item,body.status-page .list-group.components>.list-group .list-group-item,body.status-page .list-group.components>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.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-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>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,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,body.status-page .list-group.components>.table-bordered>tbody>tr:first-child>td,body.status-page .list-group.components>.table-bordered>tbody>tr:first-child>th,body.status-page .list-group.components>.table-bordered>tbody>tr:last-child>td,body.status-page .list-group.components>.table-bordered>tbody>tr:last-child>th,body.status-page .list-group.components>.table-bordered>tfoot>tr:last-child>td,body.status-page .list-group.components>.table-bordered>tfoot>tr:last-child>th,body.status-page .list-group.components>.table-bordered>thead>tr:first-child>td,body.status-page .list-group.components>.table-bordered>thead>tr:first-child>th,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr:first-child>td,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr:first-child>th,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr:last-child>td,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr:last-child>th,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr:last-child>td,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr:last-child>th,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr:first-child>td,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-responsive:last-child>.table:last-child,.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,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,body.status-page .list-group.components>.table:last-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child,body.status-page .list-group.components>.list-group:first-child .list-group-item:first-child,body.status-page .list-group.components>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:2px;border-top-left-radius:2px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child,body.status-page .list-group.components>.list-group:last-child .list-group-item:last-child,body.status-page .list-group.components>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child,body.status-page .list-group.components>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.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,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,body.status-page .list-group.components>.table:first-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption,body.status-page .list-group.components>.panel-collapse>.table caption,body.status-page .list-group.components>.table caption,body.status-page .list-group.components>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.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,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child td:first-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child th:first-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child td:first-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:2px}.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,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,body.status-page .list-group.components>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child td:last-child,body.status-page .list-group.components>.table:first-child>tbody:first-child>tr:first-child th:last-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child td:last-child,body.status-page .list-group.components>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:2px}.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,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child td:first-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child th:first-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child td:first-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:2px}.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,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,body.status-page .list-group.components>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child td:last-child,body.status-page .list-group.components>.table:last-child>tbody:last-child>tr:last-child th:last-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child td:last-child,body.status-page .list-group.components>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:2px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,body.status-page .list-group.components>.panel-body+.table,body.status-page .list-group.components>.panel-body+.table-responsive,body.status-page .list-group.components>.table+.panel-body,body.status-page .list-group.components>.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,body.status-page .list-group.components>.table>tbody:first-child>tr:first-child td,body.status-page .list-group.components>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,body.status-page .list-group.components>.table-bordered,body.status-page .list-group.components>.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,body.status-page .list-group.components>.table-bordered>tbody>tr>td:first-child,body.status-page .list-group.components>.table-bordered>tbody>tr>th:first-child,body.status-page .list-group.components>.table-bordered>tfoot>tr>td:first-child,body.status-page .list-group.components>.table-bordered>tfoot>tr>th:first-child,body.status-page .list-group.components>.table-bordered>thead>tr>td:first-child,body.status-page .list-group.components>.table-bordered>thead>tr>th:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr>td:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr>th:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr>td:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr>th:first-child,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr>td:first-child,body.status-page .list-group.components>.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,body.status-page .list-group.components>.table-bordered>tbody>tr>td:last-child,body.status-page .list-group.components>.table-bordered>tbody>tr>th:last-child,body.status-page .list-group.components>.table-bordered>tfoot>tr>td:last-child,body.status-page .list-group.components>.table-bordered>tfoot>tr>th:last-child,body.status-page .list-group.components>.table-bordered>thead>tr>td:last-child,body.status-page .list-group.components>.table-bordered>thead>tr>th:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr>td:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tbody>tr>th:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr>td:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>tfoot>tr>th:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr>td:last-child,body.status-page .list-group.components>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-responsive,body.status-page .list-group.components>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel,.panel-group body.status-page .list-group.components,body.status-page .panel-group .list-group.components{margin-bottom:0;border-radius:3px}.panel-group .panel+.panel,.panel-group body.status-page .list-group.components+.list-group.components,.panel-group body.status-page .list-group.components+.panel,.panel-group body.status-page .panel+.list-group.components,body.status-page .panel-group .list-group.components+.list-group.components,body.status-page .panel-group .list-group.components+.panel,body.status-page .panel-group .panel+.list-group.components{margin-top:5px}.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:#67808c}.panel-primary>.panel-heading{color:#fff;background-color:#67808c;border-color:#67808c}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#67808c}.panel-primary>.panel-heading .badge{color:#67808c;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#67808c}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;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:4px}.well-sm{padding:9px;border-radius:2px}.close{font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before{display:table;content:" "}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);transform:translate(0,-25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}.modal.in .modal-dialog{-webkit-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;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:4px;box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.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{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-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#333;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{border-width:5px 5px 0;border-top-color:#333;bottom:0}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#333}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#333}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{top:0;border-width:0 5px 5px;border-bottom-color:#333}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.clearfix:after,.clearfix:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}body.status-page,html{-webkit-font-smoothing:antialiased}div[role=tabpanel] .tab-content,div[role=tabpanel] ul.nav-tabs{border-bottom:1px solid #d5d8d7}.affix{position:fixed}.markdown-control,html{position:relative}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.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!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.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!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!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}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}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}.hidden-print{display:none!important}}html{min-height:100%;overflow-y:scroll}body{margin-bottom:60px;padding-bottom:60px}.uppercase{text-transform:uppercase}.margin-top{margin-top:20px}.margin-bottom{margin-bottom:20px}.no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}div[role=tabpanel] ul.nav-tabs li a{font-weight:400;display:inline-block;padding:10px 25px;border-radius:0;font-size:.9em;letter-spacing:.01em}div[role=tabpanel] .tab-content{border-left:1px solid #d5d8d7;border-right:1px solid #d5d8d7;background-color:#fff}div[role=tabpanel] .tab-content .tab-pane{padding:10px}label{font-size:14px}textarea{resize:none}.markdown-control:before{position:absolute;display:block;right:0;bottom:0;width:40px;height:40px;font-size:2em;font-family:Ionicons;content:"\f4e6"}.form-control{display:block;width:100%;height:45px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;border:1px solid #ccc;box-shadow:none!important;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9}@media (max-width:767px){.component-inline .radio-items{text-align:left}.component-inline .radio-items .radio-inline{margin-left:0;width:100%}}.minicolors-theme-bootstrap .minicolors-swatch{top:9px;left:9px}.well{border-radius:0}.alert{border-radius:4px;background:#F7CA18;border:2px solid #d5ab07}.alert.alert-success{background-color:#7ED321;border:2px solid #64a71a;color:#fff}.alert.alert-success a{color:#fff;font-weight:700}.alert.alert-info{background:#3498db;border:2px solid #217dbb;color:#fff}.alert.alert-info a{color:#fff;font-weight:700}.alert.alert-danger{background:#ff6f6f;border:2px solid #ff3c3c;color:#fff}.alert.alert-danger a{color:#fff;font-weight:700}.panel-danger{border-color:#ff3c3c}.panel-danger>.panel-heading{color:#fff;background-color:#ff6f6f;border-color:#ff3c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff3c3c}.panel-danger>.panel-heading .badge{color:#ff6f6f;background-color:#fff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff3c3c}.panel-success{border-color:#64a71a}.panel-success>.panel-heading{color:#fff;background-color:#7ED321;border-color:#64a71a}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#64a71a}.panel-success>.panel-heading .badge{color:#7ED321;background-color:#fff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#64a71a}.panel-info{border-color:#217dbb}.panel-info>.panel-heading{color:#fff;background-color:#3498db;border-color:#217dbb}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#217dbb}.panel-info>.panel-heading .badge{color:#3498db;background-color:#fff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#217dbb}.panel-warning{border-color:#d5ab07}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#F7CA18;border-color:#d5ab07}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d5ab07}.panel-warning>.panel-heading .badge{color:#F7CA18;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d5ab07}.btn.btn-default{color:#333;background:#fff;border:1px solid #e6e5e5}.btn.btn-default.active,.btn.btn-default:active,.btn.btn-default:focus,.btn.btn-default:hover{background:#f2f2f2;border-color:#e6e5e5;color:#333;outline:0;outline-offset:0}.btn.btn-default.disabled,.btn.btn-default.disabled.active,.btn.btn-default.disabled:active,.btn.btn-default.disabled:focus,.btn.btn-default.disabled:hover,.btn.btn-default[disabled],.btn.btn-default[disabled].active,.btn.btn-default[disabled]:active,.btn.btn-default[disabled]:focus,.btn.btn-default[disabled]:hover,fieldset[disabled] .btn.btn-default,fieldset[disabled] .btn.btn-default.active,fieldset[disabled] .btn.btn-default:active,fieldset[disabled] .btn.btn-default:focus,fieldset[disabled] .btn.btn-default:hover{background-color:#fff;border-color:#e6e5e5}.btn.btn-primary{color:#fff;background:#67808c;border:1px solid #51656f}.btn.btn-primary.active,.btn.btn-primary:active,.btn.btn-primary:focus,.btn.btn-primary:hover{background:#5c727d;border-color:#51656f;color:#fff;outline:0;outline-offset:0}.btn.btn-primary.disabled,.btn.btn-primary.disabled.active,.btn.btn-primary.disabled:active,.btn.btn-primary.disabled:focus,.btn.btn-primary.disabled:hover,.btn.btn-primary[disabled],.btn.btn-primary[disabled].active,.btn.btn-primary[disabled]:active,.btn.btn-primary[disabled]:focus,.btn.btn-primary[disabled]:hover,fieldset[disabled] .btn.btn-primary,fieldset[disabled] .btn.btn-primary.active,fieldset[disabled] .btn.btn-primary:active,fieldset[disabled] .btn.btn-primary:focus,fieldset[disabled] .btn.btn-primary:hover{background-color:#748c99;border-color:#51656f}.btn.btn-success{color:#fff;background:#7ED321;border:1px solid #64a71a}.btn.btn-success.active,.btn.btn-success:active,.btn.btn-success:focus,.btn.btn-success:hover{background:#71bd1e;border-color:#64a71a;color:#fff;outline:0;outline-offset:0}.btn.btn-success.disabled,.btn.btn-success.disabled.active,.btn.btn-success.disabled:active,.btn.btn-success.disabled:focus,.btn.btn-success.disabled:hover,.btn.btn-success[disabled],.btn.btn-success[disabled].active,.btn.btn-success[disabled]:active,.btn.btn-success[disabled]:focus,.btn.btn-success[disabled]:hover,fieldset[disabled] .btn.btn-success,fieldset[disabled] .btn.btn-success.active,fieldset[disabled] .btn.btn-success:active,fieldset[disabled] .btn.btn-success:focus,fieldset[disabled] .btn.btn-success:hover{background-color:#8bde2f;border-color:#64a71a}.btn.btn-info{color:#fff;background:#3498db;border:1px solid #217dbb}.btn.btn-info.active,.btn.btn-info:active,.btn.btn-info:focus,.btn.btn-info:hover{background:#258cd1;border-color:#217dbb;color:#fff;outline:0;outline-offset:0}.btn.btn-info.disabled,.btn.btn-info.disabled.active,.btn.btn-info.disabled:active,.btn.btn-info.disabled:focus,.btn.btn-info.disabled:hover,.btn.btn-info[disabled],.btn.btn-info[disabled].active,.btn.btn-info[disabled]:active,.btn.btn-info[disabled]:focus,.btn.btn-info[disabled]:hover,fieldset[disabled] .btn.btn-info,fieldset[disabled] .btn.btn-info.active,fieldset[disabled] .btn.btn-info:active,fieldset[disabled] .btn.btn-info:focus,fieldset[disabled] .btn.btn-info:hover{background-color:#4aa3df;border-color:#217dbb}.btn.btn-warning{color:#fff;background:#F80;border:1px solid #cc6d00}.btn.btn-warning.active,.btn.btn-warning:active,.btn.btn-warning:focus,.btn.btn-warning:hover{background:#e67a00;border-color:#cc6d00;color:#fff;outline:0;outline-offset:0}.btn.btn-warning.disabled,.btn.btn-warning.disabled.active,.btn.btn-warning.disabled:active,.btn.btn-warning.disabled:focus,.btn.btn-warning.disabled:hover,.btn.btn-warning[disabled],.btn.btn-warning[disabled].active,.btn.btn-warning[disabled]:active,.btn.btn-warning[disabled]:focus,.btn.btn-warning[disabled]:hover,fieldset[disabled] .btn.btn-warning,fieldset[disabled] .btn.btn-warning.active,fieldset[disabled] .btn.btn-warning:active,fieldset[disabled] .btn.btn-warning:focus,fieldset[disabled] .btn.btn-warning:hover{background-color:#ff941a;border-color:#cc6d00}.btn.btn-danger{color:#fff;background:#ff6f6f;border:1px solid #ff3c3c}.btn.btn-danger.active,.btn.btn-danger:active,.btn.btn-danger:focus,.btn.btn-danger:hover{background:#ff5656;border-color:#ff3c3c;color:#fff;outline:0;outline-offset:0}.btn.btn-danger.disabled,.btn.btn-danger.disabled.active,.btn.btn-danger.disabled:active,.btn.btn-danger.disabled:focus,.btn.btn-danger.disabled:hover,.btn.btn-danger[disabled],.btn.btn-danger[disabled].active,.btn.btn-danger[disabled]:active,.btn.btn-danger[disabled]:focus,.btn.btn-danger[disabled]:hover,fieldset[disabled] .btn.btn-danger,fieldset[disabled] .btn.btn-danger.active,fieldset[disabled] .btn.btn-danger:active,fieldset[disabled] .btn.btn-danger:focus,fieldset[disabled] .btn.btn-danger:hover{background-color:#ff8989;border-color:#ff3c3c}.btn.btn-inverse{color:#fff;background:#474949;border:1px solid #2e2f2f}.btn.btn-inverse.active,.btn.btn-inverse:active,.btn.btn-inverse:focus,.btn.btn-inverse:hover{background:#3a3c3c;border-color:#2e2f2f;color:#fff;outline:0;outline-offset:0}.btn.btn-inverse.disabled,.btn.btn-inverse.disabled.active,.btn.btn-inverse.disabled:active,.btn.btn-inverse.disabled:focus,.btn.btn-inverse.disabled:hover,.btn.btn-inverse[disabled],.btn.btn-inverse[disabled].active,.btn.btn-inverse[disabled]:active,.btn.btn-inverse[disabled]:focus,.btn.btn-inverse[disabled]:hover,fieldset[disabled] .btn.btn-inverse,fieldset[disabled] .btn.btn-inverse.active,fieldset[disabled] .btn.btn-inverse:active,fieldset[disabled] .btn.btn-inverse:focus,fieldset[disabled] .btn.btn-inverse:hover{background-color:#545656;border-color:#2e2f2f}.btn-outline{background-color:transparent;background-image:none!important;color:inherit;transition:all .5s}.btn-default.btn-outline{color:#999}.btn-primary.btn-outline{color:#428bca}.btn-success.btn-outline{color:#5cb85c}.btn-info.btn-outline{color:#5bc0de}.btn-warning.btn-outline{color:#f0ad4e}.btn-danger.btn-outline{color:#d9534f}.btn-danger.btn-outline:hover,.btn-info.btn-outline:hover,.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover,.btn-warning.btn-outline:hover{color:#fff}.pager li>a,.pager li>span{border-radius:3px}body.error-page{background-color:#f3f3f4}body.error-page .middle-box{height:400px;width:400px;position:absolute;top:50%;left:50%;margin-top:-250px;margin-left:-200px;z-index:100}.swal2-container,body.swal2-iosfix{position:fixed;left:0;right:0}body.error-page .middle-box h1{font-size:9em}body.error-page h3.font-bold{font-weight:600}body.swal2-shown{overflow-y:hidden}.swal2-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;top:0;bottom:0;padding:10px;background-color:transparent;z-index:1060}.swal2-container.swal2-fade{transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-modal{background-color:#fff;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border-radius:5px;box-sizing:border-box;text-align:center;margin:auto;overflow-x:hidden;overflow-y:auto;display:none;position:relative;max-width:100%}.swal2-modal:focus{outline:0}.swal2-modal.swal2-loading{overflow-y:hidden}.swal2-modal .swal2-title{color:#595959;font-size:30px;text-align:center;font-weight:600;text-transform:none;position:relative;margin:0 0 .4em;padding:0;display:block;word-wrap:break-word}.swal2-modal .swal2-buttonswrapper{margin-top:15px}.swal2-modal .swal2-buttonswrapper:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4;cursor:no-drop}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;border:4px solid transparent;width:40px;height:40px;padding:0;margin:7.5px;vertical-align:top;background-color:transparent!important;color:transparent;cursor:default;border-radius:100%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-cancel{margin-left:30px;margin-right:30px}.swal2-modal .swal2-buttonswrapper.swal2-loading :not(.swal2-styled).swal2-confirm::after{display:inline-block;content:'';margin-left:5px 0 15px;vertical-align:-1px;height:15px;width:15px;border:3px solid #999;box-shadow:1px 1px 1px #fff;border-right-color:transparent;border-radius:50%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal}.swal2-modal .swal2-checkbox input,.swal2-modal .swal2-checkbox span,.swal2-modal .swal2-radio input,.swal2-modal .swal2-radio span,body.status-page img.emoji{vertical-align:middle}.swal2-modal .swal2-styled{border:0;border-radius:3px;box-shadow:none;color:#fff;cursor:pointer;font-size:17px;font-weight:500;margin:15px 5px 0;padding:10px 32px}.swal2-modal .swal2-image{margin:20px auto;max-width:100%}.swal2-modal .swal2-close{background:0 0;border:0;margin:0;padding:0;width:38px;height:40px;font-size:36px;line-height:40px;font-family:serif;position:absolute;top:5px;right:8px;cursor:pointer;color:#ccc;transition:color .1s ease}.swal2-modal .swal2-close:hover{color:#d55}.swal2-modal>.swal2-checkbox,.swal2-modal>.swal2-file,.swal2-modal>.swal2-input,.swal2-modal>.swal2-radio,.swal2-modal>.swal2-select,.swal2-modal>.swal2-textarea{display:none}.swal2-modal .swal2-content{font-size:18px;text-align:center;font-weight:300;position:relative;float:none;margin:0;padding:0;line-height:normal;color:#545454;word-wrap:break-word}.swal2-modal .swal2-checkbox,.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-radio,.swal2-modal .swal2-select,.swal2-modal .swal2-textarea{margin:20px auto}.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-textarea{width:100%;box-sizing:border-box;font-size:18px;border-radius:3px;border:1px solid #d9d9d9;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);transition:border-color box-shadow .3s}.swal2-modal .swal2-file.swal2-inputerror,.swal2-modal .swal2-input.swal2-inputerror,.swal2-modal .swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-modal .swal2-file:focus,.swal2-modal .swal2-input:focus,.swal2-modal .swal2-textarea:focus{outline:0;border:1px solid #b4dbed;box-shadow:0 0 3px #c4e6f5}.swal2-modal .swal2-file:focus::-webkit-input-placeholder,.swal2-modal .swal2-input:focus::-webkit-input-placeholder,.swal2-modal .swal2-textarea:focus::-webkit-input-placeholder{transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus:-ms-input-placeholder,.swal2-modal .swal2-input:focus:-ms-input-placeholder,.swal2-modal .swal2-textarea:focus:-ms-input-placeholder{transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus::placeholder,.swal2-modal .swal2-input:focus::placeholder,.swal2-modal .swal2-textarea:focus::placeholder{transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file::-webkit-input-placeholder,.swal2-modal .swal2-input::-webkit-input-placeholder,.swal2-modal .swal2-textarea::-webkit-input-placeholder{color:#e6e5e5}.swal2-modal .swal2-file:-ms-input-placeholder,.swal2-modal .swal2-input:-ms-input-placeholder,.swal2-modal .swal2-textarea:-ms-input-placeholder{color:#e6e5e5}.swal2-modal .swal2-file::placeholder,.swal2-modal .swal2-input::placeholder,.swal2-modal .swal2-textarea::placeholder{color:#e6e5e5}.swal2-modal .swal2-range input{float:left;width:80%}.swal2-modal .swal2-range output{float:right;width:20%;font-size:20px;font-weight:600;text-align:center}.swal2-modal .swal2-range input,.swal2-modal .swal2-range output{height:43px;line-height:43px;vertical-align:middle;margin:20px auto;padding:0}.swal2-modal .swal2-input{height:43px;padding:0 12px}.swal2-modal .swal2-input[type=number]{max-width:150px}.swal2-modal .swal2-file{font-size:20px}.swal2-modal .swal2-textarea{height:108px;padding:12px}.swal2-modal .swal2-select{color:#545454;font-size:inherit;padding:5px 10px;min-width:40%;max-width:100%}.swal2-modal .swal2-radio{border:0}.swal2-modal .swal2-radio label:not(:first-child){margin-left:20px}.swal2-modal .swal2-radio input{margin:0 3px 0 0}.swal2-modal .swal2-checkbox{color:#545454}.swal2-modal .swal2-validationerror{background-color:#f0f0f0;margin:0 -20px;overflow:hidden;padding:10px;color:#807f7f;font-size:16px;font-weight:300;display:none}.swal2-modal .swal2-validationerror::before{content:'!';display:inline-block;width:24px;height:24px;border-radius:50%;background-color:#ea7d7d;color:#fff;line-height:24px;text-align:center;margin-right:10px}.swal2-icon.swal2-info,.swal2-icon.swal2-question,.swal2-icon.swal2-warning{font-size:60px;line-height:80px;text-align:center}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}.swal2-icon{width:80px;height:80px;border:4px solid transparent;border-radius:50%;margin:20px auto 30px;padding:0;position:relative;box-sizing:content-box;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;display:block}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}.swal2-icon.swal2-warning{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#f8bb86;border-color:#facea8}.swal2-icon.swal2-info{font-family:'Open Sans',sans-serif;color:#3fc3ee;border-color:#9de0f6}.swal2-icon.swal2-question{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#87adbd;border-color:#c9dae1}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{border-radius:50%;position:absolute;width:60px;height:120px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px}.swal2-icon.swal2-success .swal2-success-ring{width:80px;height:80px;border:4px solid rgba(165,220,134,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal2-icon.swal2-success .swal2-success-fix{width:7px;height:90px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-progresssteps{font-weight:600;margin:0 0 20px;padding:0}.swal2-progresssteps li{display:inline-block;position:relative}.swal2-progresssteps .swal2-progresscircle{background:#3085d6;border-radius:2em;color:#fff;height:2em;line-height:2em;text-align:center;width:2em;z-index:20}.swal2-progresssteps .swal2-progresscircle:first-child{margin-left:0}.swal2-progresssteps .swal2-progresscircle:last-child{margin-right:0}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep{background:#3085d6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progresscircle,.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progressline{background:#add8e6}.swal2-progresssteps .swal2-progressline{background:#3085d6;height:.4em;margin:0 -1px;z-index:10}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}.swal2-show{-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:hideSweetAlert .15s forwards;animation:hideSweetAlert .15s forwards}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}@-webkit-keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@-webkit-keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@-webkit-keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}.swal2-animate-success-line-tip{-webkit-animation:animate-success-tip .75s;animation:animate-success-tip .75s}.swal2-animate-success-line-long{-webkit-animation:animate-success-long .75s;animation:animate-success-long .75s}.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}@-webkit-keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}.swal2-animate-error-icon{-webkit-animation:animate-error-icon .5s;animation:animate-error-icon .5s}@-webkit-keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal2-animate-x-mark{-webkit-animation:animate-x-mark .5s;animation:animate-x-mark .5s}@-webkit-keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swal2-modal button{margin-right:8px}body.status-page{padding-top:40px;font-family:-apple-system,BlinkMacSystemFont,"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;background-color:#F0F3F4;color:#333;font-size:1.4em;font-weight:400}body.status-page.no-padding{padding-top:0!important}body.status-page hr{margin-top:10px;margin-bottom:10px}body.status-page h1,body.status-page h2,body.status-page h3,body.status-page h4,body.status-page h5{margin-bottom:20px}body.status-page img{box-sizing:border-box}body.status-page img.emoji{height:20px;width:20px;max-width:none}body.status-page p,body.status-page strong{color:#333}body.status-page .tooltip .tooltip-inner{padding:8px 12px;font-size:14px;word-wrap:break-word}body.status-page .help-icon{cursor:help}body.status-page .text-component-1,body.status-page .text-success{color:#7ED321}body.status-page .text-component-2,body.status-page .text-info{color:#3498db}body.status-page .text-alert,body.status-page .text-component-3{color:#F7CA18}body.status-page .text-component-4,body.status-page .text-danger{color:#ff6f6f}body.status-page .container{max-width:960px}body.status-page .page-header{margin-top:10px}body.status-page .app-banner{margin-bottom:30px}body.status-page .about-app{margin-bottom:40px}body.status-page .about-app p{font-size:1.2em}body.status-page .alert{font-size:1.2em;font-weight:600}body.status-page .timeline .content-wrapper{margin-top:40px;margin-bottom:40px}body.status-page .timeline h3{margin-top:30px;margin-bottom:40px;font-size:22px}body.status-page .timeline h3 small{margin-left:15px}body.status-page .timeline .list-group.components .panel-body h1,body.status-page .timeline .panel .panel-body h1{margin-top:0;margin-bottom:4px;font-size:2em}body.status-page .timeline .list-group.components .panel-body h2,body.status-page .timeline .panel .panel-body h2{margin-top:0;margin-bottom:4px;font-size:1.8em}body.status-page .timeline .list-group.components .panel-body h3,body.status-page .timeline .panel .panel-body h3{margin-top:0;margin-bottom:4px;font-size:1.6em}body.status-page .timeline .list-group.components .panel-body h4,body.status-page .timeline .panel .panel-body h4{margin-top:0;margin-bottom:4px;font-size:1.4em}body.status-page .timeline .list-group.components .panel-body h5,body.status-page .timeline .panel .panel-body h5{margin-top:0;margin-bottom:4px;font-size:1.2em}body.status-page .timeline .moment .list-group.components .panel-body p,body.status-page .timeline .moment .list-group.components .panel-heading strong,body.status-page .timeline .moment .panel .panel-body p,body.status-page .timeline .moment .panel .panel-heading strong{font-size:1.1em}body.status-page .timeline .list-group.components .panel-body p,body.status-page .timeline .panel .panel-body p{margin:0}body.status-page .timeline .moment{width:100%;padding-bottom:10px;position:relative}body.status-page .timeline .moment.first:before{top:-5px}body.status-page .timeline .moment:before{content:'';position:absolute;left:26px;top:-5px;width:2px;height:100%;background:#7266BA}body.status-page .timeline .moment .status-icon{background:#fff;width:35px;height:35px;border-radius:50%;border:1px solid #e8e8e8;position:absolute;left:25px;top:14px}body.status-page .timeline .moment .status-icon .icon{position:absolute;top:7px;left:11px}body.status-page .timeline .moment .status-icon .icon.ion-alert{left:15px}body.status-page .timeline .moment .status-icon.status-0{color:#b23f73}body.status-page .timeline .moment .status-icon.status-1{color:#F80}body.status-page .timeline .moment .status-icon.status-2{color:#F7CA18}body.status-page .timeline .moment .status-icon.status-3{color:#3498db}body.status-page .timeline .moment .status-icon.status-4{color:#7ED321}body.status-page .timeline .moment.last:before{background:#fff}body.status-page .timeline .moment .list-group.components,body.status-page .timeline .moment .panel{margin:0;border-radius:2px}body.status-page .timeline .moment .panel-message.list-group.components,body.status-page .timeline .moment .panel.panel-message{border:1px solid #e8e8e8}body.status-page .timeline .moment .panel-message.list-group.components .date,body.status-page .timeline .moment .panel.panel-message .date{color:#949494}body.status-page .timeline .moment .panel-message.list-group.components:before,body.status-page .timeline .moment .panel.panel-message:before{position:absolute;top:16px;left:1px;display:inline-block;border-top:15px solid transparent;border-left:0 solid #e8e8e8;border-right:15px solid #e8e8e8;border-bottom:15px solid transparent;content:" "}body.status-page .timeline .moment .panel-message.list-group.components:after,body.status-page .timeline .moment .panel.panel-message:after{position:absolute;top:17px;left:2px;display:inline-block;border-top:14px solid transparent;border-left:0 solid #fff;border-right:14px solid #fff;border-bottom:14px solid transparent;content:" "}body.status-page .timeline .moment .list-group.components .panel-body,body.status-page .timeline .moment .panel .panel-body{border-top:1px solid #eee}body.status-page .timeline .moment .list-group.components .panel-body p:not(:last-child),body.status-page .timeline .moment .panel .panel-body p:not(:last-child){margin-bottom:10px}@media (max-width:767px){body.status-page .timeline .moment .content{width:100%}}body.status-page .list-group{padding-left:0}body.status-page .list-group .list-group-item{border-radius:0;background-color:#fff;border:1px solid #e8e8e8;font-size:1.1em;padding:15px}body.status-page .list-group .list-group-item a{font-weight:400}body.status-page .list-group .list-group-item h4{margin:0;font-weight:400;max-width:90%}body.status-page .list-group .list-group-item p:not(:last-child),body.status-page .list-group .list-group-item time:not(:last-child){margin-bottom:10px}body.status-page .list-group .list-group-item time{margin-bottom:0}body.status-page .list-group .list-group-item i.icon{font-size:21px;line-height:24px;text-align:center;display:inline-block;min-width:20px}body.status-page .list-group .list-group-item.group-name{background-color:#e8e8e8;padding-top:.6em;padding-bottom:.6em;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.status-page .list-group .list-group-item.break{padding:1px;background-color:#f0f3f4}body.status-page .list-group.components{border-color:#e8e8e8}body.status-page .list-group.components:last-child{margin-bottom:30px}body.status-page .list-group.components+.components{margin-top:5px}body.status-page .list-group.components p{margin-bottom:10px}body.status-page .list-group.components .badge{color:transparent}body.status-page .list-group.components a{color:#333!important}body.status-page footer{position:absolute;width:100%;bottom:0;height:60px;padding:30px 0 60px;border-top:1px solid #e8e8e8;color:#666;font-size:13px;line-height:30px;text-align:center;text-shadow:0 1px 0 rgba(255,255,255,.5)}body.status-page footer .btn{text-shadow:none}body.status-page footer .icons a.icon-link{display:inline-block;min-width:30px;height:30px;border-radius:3px;background-color:#666;text-align:center;color:#e8e8e8;transition:all .15s;padding:0 10px}body.status-page footer .icons a.icon-link.rss{background-color:#F80}body.status-page footer .icons a.icon-link:hover{text-decoration:none;background-color:#4d4c4c}body.status-page footer .list-inline>li{padding-right:0}@media (min-width:768px){body.status-page footer{text-align:left}body.status-page footer .list-inline{text-align:right}body.status-page footer .list-inline>li{padding-right:0}body.status-page footer .icons{margin-top:0;text-align:right}}body.status-page .section-components,body.status-page .section-metrics,body.status-page .section-scheduled,body.status-page .section-timeline{margin-top:40px}body.status-page .navbar-custom{padding-top:10px;padding-bottom:10px;width:100%;border-radius:0;margin-bottom:10px}body.status-page .navbar-custom a.navbar-brand{font-size:30px;font-weight:600}body.status-page .navbar-custom .navbar-nav li a{color:#333;font-size:1.7rem}body.status-page .navbar-custom .navbar-nav li a:hover{background-color:transparent} \ No newline at end of file diff --git a/public/dist/css/dashboard/dashboard.23178384bd205669aa1bf4d387ba070d.css b/public/dist/css/dashboard/dashboard.23178384bd205669aa1bf4d387ba070d.css deleted file mode 100644 index f761ab73..00000000 --- a/public/dist/css/dashboard/dashboard.23178384bd205669aa1bf4d387ba070d.css +++ /dev/null @@ -1,15 +0,0 @@ -@charset "UTF-8";/*! - Ionicons, v2.0.1 - Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ - https://twitter.com/benjsperry https://twitter.com/ionicframework - MIT License: https://github.com/driftyco/ionicons - - Android-style icons originally built by Google’s - Material Design Icons: https://github.com/google/material-design-icons - used under CC BY http://creativecommons.org/licenses/by/4.0/ - Modified icons to fit ionicon’s grid from original. -*/hr,img{border:0}[class^=swal2],html{-webkit-tap-highlight-color:transparent}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.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,.dropdown-menu,.setup-page .steps .step{float:left}.img-responsive,.img-thumbnail,.table,label{max-width:100%}.btn,.no-select{-moz-user-select:none;-ms-user-select:none}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}.markdown-body,html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}@font-face{font-family:Ionicons;src:url(../../../fonts/ionicons.eot?v=2.0.1);src:url(../../../fonts/ionicons.eot?v=2.0.1#iefix) format("embedded-opentype"),url(../../../fonts/ionicons.ttf?v=2.0.1) format("truetype"),url(../../../fonts/ionicons.woff?v=2.0.1) format("woff"),url(../../../fonts/ionicons.svg?v=2.0.1#Ionicons) format("svg");font-weight:400;font-style:normal}.ion,.ion-alert-circled:before,.ion-alert:before,.ion-android-add-circle:before,.ion-android-add:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-cloud:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done-all:before,.ion-android-done:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite-outline:before,.ion-android-favorite:before,.ion-android-film:before,.ion-android-folder-open:before,.ion-android-folder:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone-off:before,.ion-android-microphone:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-notifications:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person-add:before,.ion-android-person:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove-circle:before,.ion-android-remove:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share-alt:before,.ion-android-share:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-star:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace-outline:before,.ion-backspace:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox-working:before,.ion-chatbox:before,.ion-chatboxes:before,.ion-chatbubble-working:before,.ion-chatbubble:before,.ion-chatbubbles:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-checkmark:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close-circled:before,.ion-close-round:before,.ion-close:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code-download:before,.ion-code-working:before,.ion-code:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document-text:before,.ion-document:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email-unread:before,.ion-email:before,.ion-erlenmeyer-flask-bubbles:before,.ion-erlenmeyer-flask:before,.ion-eye-disabled:before,.ion-eye:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash-off:before,.ion-flash:before,.ion-folder:before,.ion-fork-repo:before,.ion-fork:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy-outline:before,.ion-happy:before,.ion-headphone:before,.ion-heart-broken:before,.ion-heart:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-help:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information-circled:before,.ion-information:before,.ion-ionic:before,.ion-ios-alarm-outline:before,.ion-ios-alarm:before,.ion-ios-albums-outline:before,.ion-ios-albums:before,.ion-ios-americanfootball-outline:before,.ion-ios-americanfootball:before,.ion-ios-analytics-outline:before,.ion-ios-analytics:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at-outline:before,.ion-ios-at:before,.ion-ios-barcode-outline:before,.ion-ios-barcode:before,.ion-ios-baseball-outline:before,.ion-ios-baseball:before,.ion-ios-basketball-outline:before,.ion-ios-basketball:before,.ion-ios-bell-outline:before,.ion-ios-bell:before,.ion-ios-body-outline:before,.ion-ios-body:before,.ion-ios-bolt-outline:before,.ion-ios-bolt:before,.ion-ios-book-outline:before,.ion-ios-book:before,.ion-ios-bookmarks-outline:before,.ion-ios-bookmarks:before,.ion-ios-box-outline:before,.ion-ios-box:before,.ion-ios-briefcase-outline:before,.ion-ios-briefcase:before,.ion-ios-browsers-outline:before,.ion-ios-browsers:before,.ion-ios-calculator-outline:before,.ion-ios-calculator:before,.ion-ios-calendar-outline:before,.ion-ios-calendar:before,.ion-ios-camera-outline:before,.ion-ios-camera:before,.ion-ios-cart-outline:before,.ion-ios-cart:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatbubble-outline:before,.ion-ios-chatbubble:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-checkmark:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock-outline:before,.ion-ios-clock:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-close:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-outline:before,.ion-ios-cloudy:before,.ion-ios-cog-outline:before,.ion-ios-cog:before,.ion-ios-color-filter-outline:before,.ion-ios-color-filter:before,.ion-ios-color-wand-outline:before,.ion-ios-color-wand:before,.ion-ios-compose-outline:before,.ion-ios-compose:before,.ion-ios-contact-outline:before,.ion-ios-contact:before,.ion-ios-copy-outline:before,.ion-ios-copy:before,.ion-ios-crop-strong:before,.ion-ios-crop:before,.ion-ios-download-outline:before,.ion-ios-download:before,.ion-ios-drag:before,.ion-ios-email-outline:before,.ion-ios-email:before,.ion-ios-eye-outline:before,.ion-ios-eye:before,.ion-ios-fastforward-outline:before,.ion-ios-fastforward:before,.ion-ios-filing-outline:before,.ion-ios-filing:before,.ion-ios-film-outline:before,.ion-ios-film:before,.ion-ios-flag-outline:before,.ion-ios-flag:before,.ion-ios-flame-outline:before,.ion-ios-flame:before,.ion-ios-flask-outline:before,.ion-ios-flask:before,.ion-ios-flower-outline:before,.ion-ios-flower:before,.ion-ios-folder-outline:before,.ion-ios-folder:before,.ion-ios-football-outline:before,.ion-ios-football:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-b-outline:before,.ion-ios-game-controller-b:before,.ion-ios-gear-outline:before,.ion-ios-gear:before,.ion-ios-glasses-outline:before,.ion-ios-glasses:before,.ion-ios-grid-view-outline:before,.ion-ios-grid-view:before,.ion-ios-heart-outline:before,.ion-ios-heart:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-help:before,.ion-ios-home-outline:before,.ion-ios-home:before,.ion-ios-infinite-outline:before,.ion-ios-infinite:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-information:before,.ion-ios-ionic-outline:before,.ion-ios-keypad-outline:before,.ion-ios-keypad:before,.ion-ios-lightbulb-outline:before,.ion-ios-lightbulb:before,.ion-ios-list-outline:before,.ion-ios-list:before,.ion-ios-location-outline:before,.ion-ios-location:before,.ion-ios-locked-outline:before,.ion-ios-locked:before,.ion-ios-loop-strong:before,.ion-ios-loop:before,.ion-ios-medical-outline:before,.ion-ios-medical:before,.ion-ios-medkit-outline:before,.ion-ios-medkit:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-mic:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-minus:before,.ion-ios-monitor-outline:before,.ion-ios-monitor:before,.ion-ios-moon-outline:before,.ion-ios-moon:before,.ion-ios-more-outline:before,.ion-ios-more:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate-outline:before,.ion-ios-navigate:before,.ion-ios-nutrition-outline:before,.ion-ios-nutrition:before,.ion-ios-paper-outline:before,.ion-ios-paper:before,.ion-ios-paperplane-outline:before,.ion-ios-paperplane:before,.ion-ios-partlysunny-outline:before,.ion-ios-partlysunny:before,.ion-ios-pause-outline:before,.ion-ios-pause:before,.ion-ios-paw-outline:before,.ion-ios-paw:before,.ion-ios-people-outline:before,.ion-ios-people:before,.ion-ios-person-outline:before,.ion-ios-person:before,.ion-ios-personadd-outline:before,.ion-ios-personadd:before,.ion-ios-photos-outline:before,.ion-ios-photos:before,.ion-ios-pie-outline:before,.ion-ios-pie:before,.ion-ios-pint-outline:before,.ion-ios-pint:before,.ion-ios-play-outline:before,.ion-ios-play:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-plus:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetags-outline:before,.ion-ios-pricetags:before,.ion-ios-printer-outline:before,.ion-ios-printer:before,.ion-ios-pulse-strong:before,.ion-ios-pulse:before,.ion-ios-rainy-outline:before,.ion-ios-rainy:before,.ion-ios-recording-outline:before,.ion-ios-recording:before,.ion-ios-redo-outline:before,.ion-ios-redo:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-refresh:before,.ion-ios-reload:before,.ion-ios-reverse-camera-outline:before,.ion-ios-reverse-camera:before,.ion-ios-rewind-outline:before,.ion-ios-rewind:before,.ion-ios-rose-outline:before,.ion-ios-rose:before,.ion-ios-search-strong:before,.ion-ios-search:before,.ion-ios-settings-strong:before,.ion-ios-settings:before,.ion-ios-shuffle-strong:before,.ion-ios-shuffle:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipbackward:before,.ion-ios-skipforward-outline:before,.ion-ios-skipforward:before,.ion-ios-snowy:before,.ion-ios-speedometer-outline:before,.ion-ios-speedometer:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-star:before,.ion-ios-stopwatch-outline:before,.ion-ios-stopwatch:before,.ion-ios-sunny-outline:before,.ion-ios-sunny:before,.ion-ios-telephone-outline:before,.ion-ios-telephone:before,.ion-ios-tennisball-outline:before,.ion-ios-tennisball:before,.ion-ios-thunderstorm-outline:before,.ion-ios-thunderstorm:before,.ion-ios-time-outline:before,.ion-ios-time:before,.ion-ios-timer-outline:before,.ion-ios-timer:before,.ion-ios-toggle-outline:before,.ion-ios-toggle:before,.ion-ios-trash-outline:before,.ion-ios-trash:before,.ion-ios-undo-outline:before,.ion-ios-undo:before,.ion-ios-unlocked-outline:before,.ion-ios-unlocked:before,.ion-ios-upload-outline:before,.ion-ios-upload:before,.ion-ios-videocam-outline:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass-outline:before,.ion-ios-wineglass:before,.ion-ios-world-outline:before,.ion-ios-world:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-minus:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon-round:before,.ion-navicon:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person-add:before,.ion-person-stalker:before,.ion-person:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-plus:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply-all:before,.ion-reply:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad-outline:before,.ion-sad:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android-outline:before,.ion-social-android:before,.ion-social-angular-outline:before,.ion-social-angular:before,.ion-social-apple-outline:before,.ion-social-apple:before,.ion-social-bitcoin-outline:before,.ion-social-bitcoin:before,.ion-social-buffer-outline:before,.ion-social-buffer:before,.ion-social-chrome-outline:before,.ion-social-chrome:before,.ion-social-codepen-outline:before,.ion-social-codepen:before,.ion-social-css3-outline:before,.ion-social-css3:before,.ion-social-designernews-outline:before,.ion-social-designernews:before,.ion-social-dribbble-outline:before,.ion-social-dribbble:before,.ion-social-dropbox-outline:before,.ion-social-dropbox:before,.ion-social-euro-outline:before,.ion-social-euro:before,.ion-social-facebook-outline:before,.ion-social-facebook:before,.ion-social-foursquare-outline:before,.ion-social-foursquare:before,.ion-social-freebsd-devil:before,.ion-social-github-outline:before,.ion-social-github:before,.ion-social-google-outline:before,.ion-social-google:before,.ion-social-googleplus-outline:before,.ion-social-googleplus:before,.ion-social-hackernews-outline:before,.ion-social-hackernews:before,.ion-social-html5-outline:before,.ion-social-html5:before,.ion-social-instagram-outline:before,.ion-social-instagram:before,.ion-social-javascript-outline:before,.ion-social-javascript:before,.ion-social-linkedin-outline:before,.ion-social-linkedin:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest-outline:before,.ion-social-pinterest:before,.ion-social-python:before,.ion-social-reddit-outline:before,.ion-social-reddit:before,.ion-social-rss-outline:before,.ion-social-rss:before,.ion-social-sass:before,.ion-social-skype-outline:before,.ion-social-skype:before,.ion-social-snapchat-outline:before,.ion-social-snapchat:before,.ion-social-tumblr-outline:before,.ion-social-tumblr:before,.ion-social-tux:before,.ion-social-twitch-outline:before,.ion-social-twitch:before,.ion-social-twitter-outline:before,.ion-social-twitter:before,.ion-social-usd-outline:before,.ion-social-usd:before,.ion-social-vimeo-outline:before,.ion-social-vimeo:before,.ion-social-whatsapp-outline:before,.ion-social-whatsapp:before,.ion-social-windows-outline:before,.ion-social-windows:before,.ion-social-wordpress-outline:before,.ion-social-wordpress:before,.ion-social-yahoo-outline:before,.ion-social-yahoo:before,.ion-social-yen-outline:before,.ion-social-yen:before,.ion-social-youtube-outline:before,.ion-social-youtube:before,.ion-soup-can-outline:before,.ion-soup-can:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle-filled:before,.ion-toggle:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt-outline:before,.ion-tshirt:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before,.ionicons{display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:""}.ion-alert-circled:before{content:""}.ion-android-add:before{content:""}.ion-android-add-circle:before{content:""}.ion-android-alarm-clock:before{content:""}.ion-android-alert:before{content:""}.ion-android-apps:before{content:""}.ion-android-archive:before{content:""}.ion-android-arrow-back:before{content:""}.ion-android-arrow-down:before{content:""}.ion-android-arrow-dropdown:before{content:""}.ion-android-arrow-dropdown-circle:before{content:""}.ion-android-arrow-dropleft:before{content:""}.ion-android-arrow-dropleft-circle:before{content:""}.ion-android-arrow-dropright:before{content:""}.ion-android-arrow-dropright-circle:before{content:""}.ion-android-arrow-dropup:before{content:""}.ion-android-arrow-dropup-circle:before{content:""}.ion-android-arrow-forward:before{content:""}.ion-android-arrow-up:before{content:""}.ion-android-attach:before{content:""}.ion-android-bar:before{content:""}.ion-android-bicycle:before{content:""}.ion-android-boat:before{content:""}.ion-android-bookmark:before{content:""}.ion-android-bulb:before{content:""}.ion-android-bus:before{content:""}.ion-android-calendar:before{content:""}.ion-android-call:before{content:""}.ion-android-camera:before{content:""}.ion-android-cancel:before{content:""}.ion-android-car:before{content:""}.ion-android-cart:before{content:""}.ion-android-chat:before{content:""}.ion-android-checkbox:before{content:""}.ion-android-checkbox-blank:before{content:""}.ion-android-checkbox-outline:before{content:""}.ion-android-checkbox-outline-blank:before{content:""}.ion-android-checkmark-circle:before{content:""}.ion-android-clipboard:before{content:""}.ion-android-close:before{content:""}.ion-android-cloud:before{content:""}.ion-android-cloud-circle:before{content:""}.ion-android-cloud-done:before{content:""}.ion-android-cloud-outline:before{content:""}.ion-android-color-palette:before{content:""}.ion-android-compass:before{content:""}.ion-android-contact:before{content:""}.ion-android-contacts:before{content:""}.ion-android-contract:before{content:""}.ion-android-create:before{content:""}.ion-android-delete:before{content:""}.ion-android-desktop:before{content:""}.ion-android-document:before{content:""}.ion-android-done:before{content:""}.ion-android-done-all:before{content:""}.ion-android-download:before{content:""}.ion-android-drafts:before{content:""}.ion-android-exit:before{content:""}.ion-android-expand:before{content:""}.ion-android-favorite:before{content:""}.ion-android-favorite-outline:before{content:""}.ion-android-film:before{content:""}.ion-android-folder:before{content:""}.ion-android-folder-open:before{content:""}.ion-android-funnel:before{content:""}.ion-android-globe:before{content:""}.ion-android-hand:before{content:""}.ion-android-hangout:before{content:""}.ion-android-happy:before{content:""}.ion-android-home:before{content:""}.ion-android-image:before{content:""}.ion-android-laptop:before{content:""}.ion-android-list:before{content:""}.ion-android-locate:before{content:""}.ion-android-lock:before{content:""}.ion-android-mail:before{content:""}.ion-android-map:before{content:""}.ion-android-menu:before{content:""}.ion-android-microphone:before{content:""}.ion-android-microphone-off:before{content:""}.ion-android-more-horizontal:before{content:""}.ion-android-more-vertical:before{content:""}.ion-android-navigate:before{content:""}.ion-android-notifications:before{content:""}.ion-android-notifications-none:before{content:""}.ion-android-notifications-off:before{content:""}.ion-android-open:before{content:""}.ion-android-options:before{content:""}.ion-android-people:before{content:""}.ion-android-person:before{content:""}.ion-android-person-add:before{content:""}.ion-android-phone-landscape:before{content:""}.ion-android-phone-portrait:before{content:""}.ion-android-pin:before{content:""}.ion-android-plane:before{content:""}.ion-android-playstore:before{content:""}.ion-android-print:before{content:""}.ion-android-radio-button-off:before{content:""}.ion-android-radio-button-on:before{content:""}.ion-android-refresh:before{content:""}.ion-android-remove:before{content:""}.ion-android-remove-circle:before{content:""}.ion-android-restaurant:before{content:""}.ion-android-sad:before{content:""}.ion-android-search:before{content:""}.ion-android-send:before{content:""}.ion-android-settings:before{content:""}.ion-android-share:before{content:""}.ion-android-share-alt:before{content:""}.ion-android-star:before{content:""}.ion-android-star-half:before{content:""}.ion-android-star-outline:before{content:""}.ion-android-stopwatch:before{content:""}.ion-android-subway:before{content:""}.ion-android-sunny:before{content:""}.ion-android-sync:before{content:""}.ion-android-textsms:before{content:""}.ion-android-time:before{content:""}.ion-android-train:before{content:""}.ion-android-unlock:before{content:""}.ion-android-upload:before{content:""}.ion-android-volume-down:before{content:""}.ion-android-volume-mute:before{content:""}.ion-android-volume-off:before{content:""}.ion-android-volume-up:before{content:""}.ion-android-walk:before{content:""}.ion-android-warning:before{content:""}.ion-android-watch:before{content:""}.ion-android-wifi:before{content:""}.ion-aperture:before{content:""}.ion-archive:before{content:""}.ion-arrow-down-a:before{content:""}.ion-arrow-down-b:before{content:""}.ion-arrow-down-c:before{content:""}.ion-arrow-expand:before{content:""}.ion-arrow-graph-down-left:before{content:""}.ion-arrow-graph-down-right:before{content:""}.ion-arrow-graph-up-left:before{content:""}.ion-arrow-graph-up-right:before{content:""}.ion-arrow-left-a:before{content:""}.ion-arrow-left-b:before{content:""}.ion-arrow-left-c:before{content:""}.ion-arrow-move:before{content:""}.ion-arrow-resize:before{content:""}.ion-arrow-return-left:before{content:""}.ion-arrow-return-right:before{content:""}.ion-arrow-right-a:before{content:""}.ion-arrow-right-b:before{content:""}.ion-arrow-right-c:before{content:""}.ion-arrow-shrink:before{content:""}.ion-arrow-swap:before{content:""}.ion-arrow-up-a:before{content:""}.ion-arrow-up-b:before{content:""}.ion-arrow-up-c:before{content:""}.ion-asterisk:before{content:""}.ion-at:before{content:""}.ion-backspace:before{content:""}.ion-backspace-outline:before{content:""}.ion-bag:before{content:""}.ion-battery-charging:before{content:""}.ion-battery-empty:before{content:""}.ion-battery-full:before{content:""}.ion-battery-half:before{content:""}.ion-battery-low:before{content:""}.ion-beaker:before{content:""}.ion-beer:before{content:""}.ion-bluetooth:before{content:""}.ion-bonfire:before{content:""}.ion-bookmark:before{content:""}.ion-bowtie:before{content:""}.ion-briefcase:before{content:""}.ion-bug:before{content:""}.ion-calculator:before{content:""}.ion-calendar:before{content:""}.ion-camera:before{content:""}.ion-card:before{content:""}.ion-cash:before{content:""}.ion-chatbox:before{content:""}.ion-chatbox-working:before{content:""}.ion-chatboxes:before{content:""}.ion-chatbubble:before{content:""}.ion-chatbubble-working:before{content:""}.ion-chatbubbles:before{content:""}.ion-checkmark:before{content:""}.ion-checkmark-circled:before{content:""}.ion-checkmark-round:before{content:""}.ion-chevron-down:before{content:""}.ion-chevron-left:before{content:""}.ion-chevron-right:before{content:""}.ion-chevron-up:before{content:""}.ion-clipboard:before{content:""}.ion-clock:before{content:""}.ion-close:before{content:""}.ion-close-circled:before{content:""}.ion-close-round:before{content:""}.ion-closed-captioning:before{content:""}.ion-cloud:before{content:""}.ion-code:before{content:""}.ion-code-download:before{content:""}.ion-code-working:before{content:""}.ion-coffee:before{content:""}.ion-compass:before{content:""}.ion-compose:before{content:""}.ion-connection-bars:before{content:""}.ion-contrast:before{content:""}.ion-crop:before{content:""}.ion-cube:before{content:""}.ion-disc:before{content:""}.ion-document:before{content:""}.ion-document-text:before{content:""}.ion-drag:before{content:""}.ion-earth:before{content:""}.ion-easel:before{content:""}.ion-edit:before{content:""}.ion-egg:before{content:""}.ion-eject:before{content:""}.ion-email:before{content:""}.ion-email-unread:before{content:""}.ion-erlenmeyer-flask:before{content:""}.ion-erlenmeyer-flask-bubbles:before{content:""}.ion-eye:before{content:""}.ion-eye-disabled:before{content:""}.ion-female:before{content:""}.ion-filing:before{content:""}.ion-film-marker:before{content:""}.ion-fireball:before{content:""}.ion-flag:before{content:""}.ion-flame:before{content:""}.ion-flash:before{content:""}.ion-flash-off:before{content:""}.ion-folder:before{content:""}.ion-fork:before{content:""}.ion-fork-repo:before{content:""}.ion-forward:before{content:""}.ion-funnel:before{content:""}.ion-gear-a:before{content:""}.ion-gear-b:before{content:""}.ion-grid:before{content:""}.ion-hammer:before{content:""}.ion-happy:before{content:""}.ion-happy-outline:before{content:""}.ion-headphone:before{content:""}.ion-heart:before{content:""}.ion-heart-broken:before{content:""}.ion-help:before{content:""}.ion-help-buoy:before{content:""}.ion-help-circled:before{content:""}.ion-home:before{content:""}.ion-icecream:before{content:""}.ion-image:before{content:""}.ion-images:before{content:""}.ion-information:before{content:""}.ion-information-circled:before{content:""}.ion-ionic:before{content:""}.ion-ios-alarm:before{content:""}.ion-ios-alarm-outline:before{content:""}.ion-ios-albums:before{content:""}.ion-ios-albums-outline:before{content:""}.ion-ios-americanfootball:before{content:""}.ion-ios-americanfootball-outline:before{content:""}.ion-ios-analytics:before{content:""}.ion-ios-analytics-outline:before{content:""}.ion-ios-arrow-back:before{content:""}.ion-ios-arrow-down:before{content:""}.ion-ios-arrow-forward:before{content:""}.ion-ios-arrow-left:before{content:""}.ion-ios-arrow-right:before{content:""}.ion-ios-arrow-thin-down:before{content:""}.ion-ios-arrow-thin-left:before{content:""}.ion-ios-arrow-thin-right:before{content:""}.ion-ios-arrow-thin-up:before{content:""}.ion-ios-arrow-up:before{content:""}.ion-ios-at:before{content:""}.ion-ios-at-outline:before{content:""}.ion-ios-barcode:before{content:""}.ion-ios-barcode-outline:before{content:""}.ion-ios-baseball:before{content:""}.ion-ios-baseball-outline:before{content:""}.ion-ios-basketball:before{content:""}.ion-ios-basketball-outline:before{content:""}.ion-ios-bell:before{content:""}.ion-ios-bell-outline:before{content:""}.ion-ios-body:before{content:""}.ion-ios-body-outline:before{content:""}.ion-ios-bolt:before{content:""}.ion-ios-bolt-outline:before{content:""}.ion-ios-book:before{content:""}.ion-ios-book-outline:before{content:""}.ion-ios-bookmarks:before{content:""}.ion-ios-bookmarks-outline:before{content:""}.ion-ios-box:before{content:""}.ion-ios-box-outline:before{content:""}.ion-ios-briefcase:before{content:""}.ion-ios-briefcase-outline:before{content:""}.ion-ios-browsers:before{content:""}.ion-ios-browsers-outline:before{content:""}.ion-ios-calculator:before{content:""}.ion-ios-calculator-outline:before{content:""}.ion-ios-calendar:before{content:""}.ion-ios-calendar-outline:before{content:""}.ion-ios-camera:before{content:""}.ion-ios-camera-outline:before{content:""}.ion-ios-cart:before{content:""}.ion-ios-cart-outline:before{content:""}.ion-ios-chatboxes:before{content:""}.ion-ios-chatboxes-outline:before{content:""}.ion-ios-chatbubble:before{content:""}.ion-ios-chatbubble-outline:before{content:""}.ion-ios-checkmark:before{content:""}.ion-ios-checkmark-empty:before{content:""}.ion-ios-checkmark-outline:before{content:""}.ion-ios-circle-filled:before{content:""}.ion-ios-circle-outline:before{content:""}.ion-ios-clock:before{content:""}.ion-ios-clock-outline:before{content:""}.ion-ios-close:before{content:""}.ion-ios-close-empty:before{content:""}.ion-ios-close-outline:before{content:""}.ion-ios-cloud:before{content:""}.ion-ios-cloud-download:before{content:""}.ion-ios-cloud-download-outline:before{content:""}.ion-ios-cloud-outline:before{content:""}.ion-ios-cloud-upload:before{content:""}.ion-ios-cloud-upload-outline:before{content:""}.ion-ios-cloudy:before{content:""}.ion-ios-cloudy-night:before{content:""}.ion-ios-cloudy-night-outline:before{content:""}.ion-ios-cloudy-outline:before{content:""}.ion-ios-cog:before{content:""}.ion-ios-cog-outline:before{content:""}.ion-ios-color-filter:before{content:""}.ion-ios-color-filter-outline:before{content:""}.ion-ios-color-wand:before{content:""}.ion-ios-color-wand-outline:before{content:""}.ion-ios-compose:before{content:""}.ion-ios-compose-outline:before{content:""}.ion-ios-contact:before{content:""}.ion-ios-contact-outline:before{content:""}.ion-ios-copy:before{content:""}.ion-ios-copy-outline:before{content:""}.ion-ios-crop:before{content:""}.ion-ios-crop-strong:before{content:""}.ion-ios-download:before{content:""}.ion-ios-download-outline:before{content:""}.ion-ios-drag:before{content:""}.ion-ios-email:before{content:""}.ion-ios-email-outline:before{content:""}.ion-ios-eye:before{content:""}.ion-ios-eye-outline:before{content:""}.ion-ios-fastforward:before{content:""}.ion-ios-fastforward-outline:before{content:""}.ion-ios-filing:before{content:""}.ion-ios-filing-outline:before{content:""}.ion-ios-film:before{content:""}.ion-ios-film-outline:before{content:""}.ion-ios-flag:before{content:""}.ion-ios-flag-outline:before{content:""}.ion-ios-flame:before{content:""}.ion-ios-flame-outline:before{content:""}.ion-ios-flask:before{content:""}.ion-ios-flask-outline:before{content:""}.ion-ios-flower:before{content:""}.ion-ios-flower-outline:before{content:""}.ion-ios-folder:before{content:""}.ion-ios-folder-outline:before{content:""}.ion-ios-football:before{content:""}.ion-ios-football-outline:before{content:""}.ion-ios-game-controller-a:before{content:""}.ion-ios-game-controller-a-outline:before{content:""}.ion-ios-game-controller-b:before{content:""}.ion-ios-game-controller-b-outline:before{content:""}.ion-ios-gear:before{content:""}.ion-ios-gear-outline:before{content:""}.ion-ios-glasses:before{content:""}.ion-ios-glasses-outline:before{content:""}.ion-ios-grid-view:before{content:""}.ion-ios-grid-view-outline:before{content:""}.ion-ios-heart:before{content:""}.ion-ios-heart-outline:before{content:""}.ion-ios-help:before{content:""}.ion-ios-help-empty:before{content:""}.ion-ios-help-outline:before{content:""}.ion-ios-home:before{content:""}.ion-ios-home-outline:before{content:""}.ion-ios-infinite:before{content:""}.ion-ios-infinite-outline:before{content:""}.ion-ios-information:before{content:""}.ion-ios-information-empty:before{content:""}.ion-ios-information-outline:before{content:""}.ion-ios-ionic-outline:before{content:""}.ion-ios-keypad:before{content:""}.ion-ios-keypad-outline:before{content:""}.ion-ios-lightbulb:before{content:""}.ion-ios-lightbulb-outline:before{content:""}.ion-ios-list:before{content:""}.ion-ios-list-outline:before{content:""}.ion-ios-location:before{content:""}.ion-ios-location-outline:before{content:""}.ion-ios-locked:before{content:""}.ion-ios-locked-outline:before{content:""}.ion-ios-loop:before{content:""}.ion-ios-loop-strong:before{content:""}.ion-ios-medical:before{content:""}.ion-ios-medical-outline:before{content:""}.ion-ios-medkit:before{content:""}.ion-ios-medkit-outline:before{content:""}.ion-ios-mic:before{content:""}.ion-ios-mic-off:before{content:""}.ion-ios-mic-outline:before{content:""}.ion-ios-minus:before{content:""}.ion-ios-minus-empty:before{content:""}.ion-ios-minus-outline:before{content:""}.ion-ios-monitor:before{content:""}.ion-ios-monitor-outline:before{content:""}.ion-ios-moon:before{content:""}.ion-ios-moon-outline:before{content:""}.ion-ios-more:before{content:""}.ion-ios-more-outline:before{content:""}.ion-ios-musical-note:before{content:""}.ion-ios-musical-notes:before{content:""}.ion-ios-navigate:before{content:""}.ion-ios-navigate-outline:before{content:""}.ion-ios-nutrition:before{content:""}.ion-ios-nutrition-outline:before{content:""}.ion-ios-paper:before{content:""}.ion-ios-paper-outline:before{content:""}.ion-ios-paperplane:before{content:""}.ion-ios-paperplane-outline:before{content:""}.ion-ios-partlysunny:before{content:""}.ion-ios-partlysunny-outline:before{content:""}.ion-ios-pause:before{content:""}.ion-ios-pause-outline:before{content:""}.ion-ios-paw:before{content:""}.ion-ios-paw-outline:before{content:""}.ion-ios-people:before{content:""}.ion-ios-people-outline:before{content:""}.ion-ios-person:before{content:""}.ion-ios-person-outline:before{content:""}.ion-ios-personadd:before{content:""}.ion-ios-personadd-outline:before{content:""}.ion-ios-photos:before{content:""}.ion-ios-photos-outline:before{content:""}.ion-ios-pie:before{content:""}.ion-ios-pie-outline:before{content:""}.ion-ios-pint:before{content:""}.ion-ios-pint-outline:before{content:""}.ion-ios-play:before{content:""}.ion-ios-play-outline:before{content:""}.ion-ios-plus:before{content:""}.ion-ios-plus-empty:before{content:""}.ion-ios-plus-outline:before{content:""}.ion-ios-pricetag:before{content:""}.ion-ios-pricetag-outline:before{content:""}.ion-ios-pricetags:before{content:""}.ion-ios-pricetags-outline:before{content:""}.ion-ios-printer:before{content:""}.ion-ios-printer-outline:before{content:""}.ion-ios-pulse:before{content:""}.ion-ios-pulse-strong:before{content:""}.ion-ios-rainy:before{content:""}.ion-ios-rainy-outline:before{content:""}.ion-ios-recording:before{content:""}.ion-ios-recording-outline:before{content:""}.ion-ios-redo:before{content:""}.ion-ios-redo-outline:before{content:""}.ion-ios-refresh:before{content:""}.ion-ios-refresh-empty:before{content:""}.ion-ios-refresh-outline:before{content:""}.ion-ios-reload:before{content:""}.ion-ios-reverse-camera:before{content:""}.ion-ios-reverse-camera-outline:before{content:""}.ion-ios-rewind:before{content:""}.ion-ios-rewind-outline:before{content:""}.ion-ios-rose:before{content:""}.ion-ios-rose-outline:before{content:""}.ion-ios-search:before{content:""}.ion-ios-search-strong:before{content:""}.ion-ios-settings:before{content:""}.ion-ios-settings-strong:before{content:""}.ion-ios-shuffle:before{content:""}.ion-ios-shuffle-strong:before{content:""}.ion-ios-skipbackward:before{content:""}.ion-ios-skipbackward-outline:before{content:""}.ion-ios-skipforward:before{content:""}.ion-ios-skipforward-outline:before{content:""}.ion-ios-snowy:before{content:""}.ion-ios-speedometer:before{content:""}.ion-ios-speedometer-outline:before{content:""}.ion-ios-star:before{content:""}.ion-ios-star-half:before{content:""}.ion-ios-star-outline:before{content:""}.ion-ios-stopwatch:before{content:""}.ion-ios-stopwatch-outline:before{content:""}.ion-ios-sunny:before{content:""}.ion-ios-sunny-outline:before{content:""}.ion-ios-telephone:before{content:""}.ion-ios-telephone-outline:before{content:""}.ion-ios-tennisball:before{content:""}.ion-ios-tennisball-outline:before{content:""}.ion-ios-thunderstorm:before{content:""}.ion-ios-thunderstorm-outline:before{content:""}.ion-ios-time:before{content:""}.ion-ios-time-outline:before{content:""}.ion-ios-timer:before{content:""}.ion-ios-timer-outline:before{content:""}.ion-ios-toggle:before{content:""}.ion-ios-toggle-outline:before{content:""}.ion-ios-trash:before{content:""}.ion-ios-trash-outline:before{content:""}.ion-ios-undo:before{content:""}.ion-ios-undo-outline:before{content:""}.ion-ios-unlocked:before{content:""}.ion-ios-unlocked-outline:before{content:""}.ion-ios-upload:before{content:""}.ion-ios-upload-outline:before{content:""}.ion-ios-videocam:before{content:""}.ion-ios-videocam-outline:before{content:""}.ion-ios-volume-high:before{content:""}.ion-ios-volume-low:before{content:""}.ion-ios-wineglass:before{content:""}.ion-ios-wineglass-outline:before{content:""}.ion-ios-world:before{content:""}.ion-ios-world-outline:before{content:""}.ion-ipad:before{content:""}.ion-iphone:before{content:""}.ion-ipod:before{content:""}.ion-jet:before{content:""}.ion-key:before{content:""}.ion-knife:before{content:""}.ion-laptop:before{content:""}.ion-leaf:before{content:""}.ion-levels:before{content:""}.ion-lightbulb:before{content:""}.ion-link:before{content:""}.ion-load-a:before{content:""}.ion-load-b:before{content:""}.ion-load-c:before{content:""}.ion-load-d:before{content:""}.ion-location:before{content:""}.ion-lock-combination:before{content:""}.ion-locked:before{content:""}.ion-log-in:before{content:""}.ion-log-out:before{content:""}.ion-loop:before{content:""}.ion-magnet:before{content:""}.ion-male:before{content:""}.ion-man:before{content:""}.ion-map:before{content:""}.ion-medkit:before{content:""}.ion-merge:before{content:""}.ion-mic-a:before{content:""}.ion-mic-b:before{content:""}.ion-mic-c:before{content:""}.ion-minus:before{content:""}.ion-minus-circled:before{content:""}.ion-minus-round:before{content:""}.ion-model-s:before{content:""}.ion-monitor:before{content:""}.ion-more:before{content:""}.ion-mouse:before{content:""}.ion-music-note:before{content:""}.ion-navicon:before{content:""}.ion-navicon-round:before{content:""}.ion-navigate:before{content:""}.ion-network:before{content:""}.ion-no-smoking:before{content:""}.ion-nuclear:before{content:""}.ion-outlet:before{content:""}.ion-paintbrush:before{content:""}.ion-paintbucket:before{content:""}.ion-paper-airplane:before{content:""}.ion-paperclip:before{content:""}.ion-pause:before{content:""}.ion-person:before{content:""}.ion-person-add:before{content:""}.ion-person-stalker:before{content:""}.ion-pie-graph:before{content:""}.ion-pin:before{content:""}.ion-pinpoint:before{content:""}.ion-pizza:before{content:""}.ion-plane:before{content:""}.ion-planet:before{content:""}.ion-play:before{content:""}.ion-playstation:before{content:""}.ion-plus:before{content:""}.ion-plus-circled:before{content:""}.ion-plus-round:before{content:""}.ion-podium:before{content:""}.ion-pound:before{content:""}.ion-power:before{content:""}.ion-pricetag:before{content:""}.ion-pricetags:before{content:""}.ion-printer:before{content:""}.ion-pull-request:before{content:""}.ion-qr-scanner:before{content:""}.ion-quote:before{content:""}.ion-radio-waves:before{content:""}.ion-record:before{content:""}.ion-refresh:before{content:""}.ion-reply:before{content:""}.ion-reply-all:before{content:""}.ion-ribbon-a:before{content:""}.ion-ribbon-b:before{content:""}.ion-sad:before{content:""}.ion-sad-outline:before{content:""}.ion-scissors:before{content:""}.ion-search:before{content:""}.ion-settings:before{content:""}.ion-share:before{content:""}.ion-shuffle:before{content:""}.ion-skip-backward:before{content:""}.ion-skip-forward:before{content:""}.ion-social-android:before{content:""}.ion-social-android-outline:before{content:""}.ion-social-angular:before{content:""}.ion-social-angular-outline:before{content:""}.ion-social-apple:before{content:""}.ion-social-apple-outline:before{content:""}.ion-social-bitcoin:before{content:""}.ion-social-bitcoin-outline:before{content:""}.ion-social-buffer:before{content:""}.ion-social-buffer-outline:before{content:""}.ion-social-chrome:before{content:""}.ion-social-chrome-outline:before{content:""}.ion-social-codepen:before{content:""}.ion-social-codepen-outline:before{content:""}.ion-social-css3:before{content:""}.ion-social-css3-outline:before{content:""}.ion-social-designernews:before{content:""}.ion-social-designernews-outline:before{content:""}.ion-social-dribbble:before{content:""}.ion-social-dribbble-outline:before{content:""}.ion-social-dropbox:before{content:""}.ion-social-dropbox-outline:before{content:""}.ion-social-euro:before{content:""}.ion-social-euro-outline:before{content:""}.ion-social-facebook:before{content:""}.ion-social-facebook-outline:before{content:""}.ion-social-foursquare:before{content:""}.ion-social-foursquare-outline:before{content:""}.ion-social-freebsd-devil:before{content:""}.ion-social-github:before{content:""}.ion-social-github-outline:before{content:""}.ion-social-google:before{content:""}.ion-social-google-outline:before{content:""}.ion-social-googleplus:before{content:""}.ion-social-googleplus-outline:before{content:""}.ion-social-hackernews:before{content:""}.ion-social-hackernews-outline:before{content:""}.ion-social-html5:before{content:""}.ion-social-html5-outline:before{content:""}.ion-social-instagram:before{content:""}.ion-social-instagram-outline:before{content:""}.ion-social-javascript:before{content:""}.ion-social-javascript-outline:before{content:""}.ion-social-linkedin:before{content:""}.ion-social-linkedin-outline:before{content:""}.ion-social-markdown:before{content:""}.ion-social-nodejs:before{content:""}.ion-social-octocat:before{content:""}.ion-social-pinterest:before{content:""}.ion-social-pinterest-outline:before{content:""}.ion-social-python:before{content:""}.ion-social-reddit:before{content:""}.ion-social-reddit-outline:before{content:""}.ion-social-rss:before{content:""}.ion-social-rss-outline:before{content:""}.ion-social-sass:before{content:""}.ion-social-skype:before{content:""}.ion-social-skype-outline:before{content:""}.ion-social-snapchat:before{content:""}.ion-social-snapchat-outline:before{content:""}.ion-social-tumblr:before{content:""}.ion-social-tumblr-outline:before{content:""}.ion-social-tux:before{content:""}.ion-social-twitch:before{content:""}.ion-social-twitch-outline:before{content:""}.ion-social-twitter:before{content:""}.ion-social-twitter-outline:before{content:""}.ion-social-usd:before{content:""}.ion-social-usd-outline:before{content:""}.ion-social-vimeo:before{content:""}.ion-social-vimeo-outline:before{content:""}.ion-social-whatsapp:before{content:""}.ion-social-whatsapp-outline:before{content:""}.ion-social-windows:before{content:""}.ion-social-windows-outline:before{content:""}.ion-social-wordpress:before{content:""}.ion-social-wordpress-outline:before{content:""}.ion-social-yahoo:before{content:""}.ion-social-yahoo-outline:before{content:""}.ion-social-yen:before{content:""}.ion-social-yen-outline:before{content:""}.ion-social-youtube:before{content:""}.ion-social-youtube-outline:before{content:""}.ion-soup-can:before{content:""}.ion-soup-can-outline:before{content:""}.ion-speakerphone:before{content:""}.ion-speedometer:before{content:""}.ion-spoon:before{content:""}.ion-star:before{content:""}.ion-stats-bars:before{content:""}.ion-steam:before{content:""}.ion-stop:before{content:""}.ion-thermometer:before{content:""}.ion-thumbsdown:before{content:""}.ion-thumbsup:before{content:""}.ion-toggle:before{content:""}.ion-toggle-filled:before{content:""}.ion-transgender:before{content:""}.ion-trash-a:before{content:""}.ion-trash-b:before{content:""}.ion-trophy:before{content:""}.ion-tshirt:before{content:""}.ion-tshirt-outline:before{content:""}.ion-umbrella:before{content:""}.ion-university:before{content:""}.ion-unlocked:before{content:""}.ion-upload:before{content:""}.ion-usb:before{content:""}.ion-videocamera:before{content:""}.ion-volume-high:before{content:""}.ion-volume-low:before{content:""}.ion-volume-medium:before{content:""}.ion-volume-mute:before{content:""}.ion-wand:before{content:""}.ion-waterdrop:before{content:""}.ion-wifi:before{content:""}.ion-wineglass:before{content:""}.ion-woman:before{content:""}.ion-wrench:before{content:""}.ion-xbox:before{content:""}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif}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}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.tooltip,address{font-style:normal}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{border:0;padding:0}input[type=checkbox],input[type=radio]{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-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.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}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.navbar-toggle,.open>.btn-danger.dropdown-toggle,.open>.btn-default.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}.img-thumbnail,body{background-color:#fff}*,:after,:before{box-sizing:border-box}html{font-size:10px}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#67808c;text-decoration:none}a:focus,a:hover{color:#465760;text-decoration:underline}a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;height:auto}.img-rounded{border-radius:4px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after,.bootstrap-datetimepicker-widget .btn[data-action=clear]::after,.bootstrap-datetimepicker-widget .btn[data-action=today]::after,.bootstrap-datetimepicker-widget .picker-switch::after,.bootstrap-datetimepicker-widget table th.next::after,.bootstrap-datetimepicker-widget table th.prev::after,.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}select[multiple],select[size],textarea.form-control{height:auto}.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}dt,kbd kbd,label{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,output,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.component-inline-update,.text-right{text-align:right}.text-center,body.dashboard .sidebar .sidebar-inner .quick-add-incident{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.initialism,.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#67808c}a.text-primary:focus,a.text-primary:hover{color:#51656f}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#67808c}a.bg-primary:focus,a.bg-primary:hover{background-color:#51656f}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd{margin-left:0}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dropdown-menu>li>a,.form-horizontal .form-group:after,.markdown-body hr::after,.markdown-body::after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar:after,.pager:after,.panel-body:after,.row:after,.setup-page .steps:after,body.dashboard .sidebar .sidebar-inner ul{clear:both}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}legend,pre{color:#333}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.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}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:3px}kbd{color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before,.setup-page .steps:after,.setup-page .steps:before{display:table;content:" "}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row,.setup-page .steps{margin-left:-15px;margin-right:-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,.setup-page .steps .step{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3,.setup-page .steps .step{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333333%}.col-xs-push-2{left:16.66666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333333%}.col-xs-push-5{left:41.66666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333333%}.col-xs-push-8{left:66.66666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333333%}.col-xs-push-11{left:91.66666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-12{margin-left:100%}@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-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-12{margin-left:100%}}@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-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-12{margin-left:100%}}@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-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-12{margin-left:100%}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{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,.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,.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 col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.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{overflow-x:auto;min-height:.01%}@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,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px}.checkbox,.radio,input[type=file],output{display:block}input[type=search]{box-sizing:border-box;-webkit-appearance:none}.markdown-body hr,.minicolors-panel,.minicolors-picker{box-sizing:content-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=range]{display:block;width:100%}input[type=checkbox]:focus,input[type=radio]:focus,input[type=file]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px;font-size:14px;color:#555}.form-control{border-radius:3px}.form-control:focus{outline:0;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}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.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}.form-control::-ms-expand{border:0;background-color:transparent}.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}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{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-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,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-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,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;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-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,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}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.input-group-sm>.input-group-btn>select.btn,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,select.input-sm{height:30px;line-height:30px}.input-group-sm>.input-group-btn>select[multiple].btn,.input-group-sm>.input-group-btn>textarea.btn,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,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:2px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:4px}.input-group-lg>.input-group-btn>select.btn,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,select.input-lg{height:46px;line-height:46px}.input-group-lg>.input-group-btn>select[multiple].btn,.input-group-lg>.input-group-btn>textarea.btn,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,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:4px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 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}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:25px}.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=incrementHours]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=incrementMinutes]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=decrementHours]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=decrementMinutes]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=showHours]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=showMinutes]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=togglePeriod]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=clear]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=today]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.picker-switch::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=incrementHours]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=incrementMinutes]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=decrementHours]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=decrementMinutes]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=showHours]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=showMinutes]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=togglePeriod]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=clear]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=today]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.picker-switch::after~.form-control-feedback,.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-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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 .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:3px;-webkit-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e5e5;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e5e5;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.btn-default.dropdown-toggle.focus,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,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:#67808c;border-color:#5c727d}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#51656f;border-color:#262f34}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#51656f;border-color:#42525a}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#42525a;border-color:#262f34}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#67808c;border-color:#5c727d}.btn-primary .badge{color:#67808c;background-color:#fff}.btn-success{color:#fff;background-color:#7ED321;border-color:#71bd1e}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#64a71a;border-color:#2f4f0c}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#64a71a;border-color:#518815}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#518815;border-color:#2f4f0c}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#7ED321;border-color:#71bd1e}.btn-success .badge{color:#7ED321;background-color:#fff}.btn-info{color:#fff;background-color:#3498db;border-color:#258cd1}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#217dbb;border-color:#124364}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#217dbb;border-color:#1c699d}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#1c699d;border-color:#124364}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#3498db;border-color:#258cd1}.btn-info .badge{color:#3498db;background-color:#fff}.btn-warning{color:#fff;background-color:#F80;border-color:#e67a00}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#cc6d00;border-color:#663600}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#cc6d00;border-color:#a85a00}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#a85a00;border-color:#663600}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#F80;border-color:#e67a00}.btn-warning .badge{color:#F80;background-color:#fff}.btn-danger{color:#fff;background-color:#ff6f6f;border-color:#ff5656}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#ff3c3c;border-color:#d50000}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#ff3c3c;border-color:#ff1818}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#ff1818;border-color:#d50000}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ff6f6f;border-color:#ff5656}.btn-danger .badge{color:#ff6f6f;background-color:#fff}.btn-link{color:#67808c;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#465760;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:4px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:2px}.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%}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;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;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#67808c}.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;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#777}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.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{left:0;right:auto}}.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:after,.btn-toolbar:before{content:" ";display:table}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-group-lg>.btn .caret,.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:after,.btn-group-vertical>.btn-group:before{content:" ";display:table}.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:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.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}.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-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;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,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.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:3px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:2px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:4px}.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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.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{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav>li>a{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;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#67808c}.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:3px 3px 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;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li,.nav-tabs.nav-justified>li{float:none}.nav-pills>li>a{border-radius:3px}.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:#67808c}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.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-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before{display:table;content:" "}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-header:after{clear:both}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;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-left:0;padding-right:0}}.modal,.modal-open{overflow:hidden}@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}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.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;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@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-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:3px}.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}.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;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}}.badge,.label{line-height:1;white-space:nowrap;text-align:center;font-weight:700}@media (min-width:768px){.navbar-toggle{display:none}.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;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.btn-group-sm>.navbar-btn.btn,.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.btn-group-xs>.navbar-btn.btn,.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-left:15px;margin-right:15px}.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:#5e5d5d;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{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{background-color:#e7e7e7;color:#555}@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:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{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:#090909}.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{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.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:#090909}.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}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:after,.pager:before{content:" ";display:table}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd}.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}.close,.list-group-item>.badge{float:right}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#67808c}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#51656f}.label-success{background-color:#7ED321}.label-success[href]:focus,.label-success[href]:hover{background-color:#64a71a}.label-info{background-color:#3498db}.label-info[href]:focus,.label-info[href]:hover{background-color:#217dbb}.label-warning{background-color:#F80}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#cc6d00}.label-danger{background-color:#ff6f6f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#ff3c3c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#67808c;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert{padding:15px;margin-bottom:20px}.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}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}.list-group{margin-bottom:20px;padding-left:0}.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-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.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:#67808c;border-color:#67808c}.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:#dbe1e4}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.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,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.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,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.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,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.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,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.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,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.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,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.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,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.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:3px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.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-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>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,.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-responsive:last-child>.table:last-child,.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,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.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-right-radius:2px;border-top-left-radius:2px}.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:2px;border-bottom-left-radius:2px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.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,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.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:2px}.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:2px}.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:2px}.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:2px}.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-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:3px}.panel-group .panel+.panel{margin-top:5px}.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:#67808c}.panel-primary>.panel-heading{color:#fff;background-color:#67808c;border-color:#67808c}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#67808c}.panel-primary>.panel-heading .badge{color:#67808c;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#67808c}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;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:4px}.well-sm{padding:9px;border-radius:2px}.close{font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before{display:table;content:" "}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);transform:translate(0,-25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}.modal.in .modal-dialog{-webkit-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;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:4px;box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.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{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-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#333;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{border-width:5px 5px 0;border-top-color:#333;bottom:0}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#333}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#333}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{top:0;border-width:0 5px 5px;border-bottom-color:#333}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.clearfix:after,.clearfix:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,body.dashboard .sidebar .sidebar-inner .quick-add-incident i{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}body.dashboard,html{-webkit-font-smoothing:antialiased}div[role=tabpanel] .tab-content,div[role=tabpanel] ul.nav-tabs{border-bottom:1px solid #d5d8d7}.affix{position:fixed}.markdown-control,html{position:relative}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm,body.dashboard .sidebar .sidebar-inner .quick-add-incident i{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.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!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,body.dashboard .sidebar .bottom-menu-sidebar,body.dashboard .sidebar .sidebar-inner .quick-add-incident span,body.dashboard .sidebar .sidebar-inner>ul>li>a>span{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}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}.hidden-print{display:none!important}}html{min-height:100%;overflow-y:scroll}body{margin-bottom:60px;padding-bottom:60px;-webkit-backface-visibility:hidden}.uppercase{text-transform:uppercase}.margin-top{margin-top:20px}.margin-bottom{margin-bottom:20px}.no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}div[role=tabpanel] ul.nav-tabs li a{font-weight:400;display:inline-block;padding:10px 25px;border-radius:0;font-size:.9em;letter-spacing:.01em}div[role=tabpanel] .tab-content{border-left:1px solid #d5d8d7;border-right:1px solid #d5d8d7;background-color:#fff}div[role=tabpanel] .tab-content .tab-pane{padding:10px}label{font-size:14px}textarea{resize:none;overflow:auto}.markdown-control:before{position:absolute;display:block;right:0;bottom:0;width:40px;height:40px;font-size:2em;font-family:Ionicons;content:"\f4e6"}.form-control{display:block;width:100%;height:45px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;box-shadow:none!important;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9}@media (max-width:767px){.component-inline .radio-items{text-align:left}.component-inline .radio-items .radio-inline{margin-left:0;width:100%}}.well{border-radius:0}.alert{border-radius:4px;background:#F7CA18;border:2px solid #d5ab07}.alert.alert-success{background-color:#7ED321;border:2px solid #64a71a;color:#fff}.alert.alert-success a{color:#fff;font-weight:700}.alert.alert-info{background:#3498db;border:2px solid #217dbb;color:#fff}.alert.alert-info a{color:#fff;font-weight:700}.alert.alert-danger{background:#ff6f6f;border:2px solid #ff3c3c;color:#fff}.alert.alert-danger a{color:#fff;font-weight:700}.panel-danger{border-color:#ff3c3c}.panel-danger>.panel-heading{color:#fff;background-color:#ff6f6f;border-color:#ff3c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff3c3c}.panel-danger>.panel-heading .badge{color:#ff6f6f;background-color:#fff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff3c3c}.panel-success{border-color:#64a71a}.panel-success>.panel-heading{color:#fff;background-color:#7ED321;border-color:#64a71a}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#64a71a}.panel-success>.panel-heading .badge{color:#7ED321;background-color:#fff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#64a71a}.panel-info{border-color:#217dbb}.panel-info>.panel-heading{color:#fff;background-color:#3498db;border-color:#217dbb}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#217dbb}.panel-info>.panel-heading .badge{color:#3498db;background-color:#fff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#217dbb}.panel-warning{border-color:#d5ab07}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#F7CA18;border-color:#d5ab07}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d5ab07}.panel-warning>.panel-heading .badge{color:#F7CA18;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d5ab07}.btn.btn-default{color:#333;background:#fff;border:1px solid #e6e5e5}.btn.btn-default.active,.btn.btn-default:active,.btn.btn-default:focus,.btn.btn-default:hover{background:#f2f2f2;border-color:#e6e5e5;color:#333;outline:0;outline-offset:0}.btn.btn-default.disabled,.btn.btn-default.disabled.active,.btn.btn-default.disabled:active,.btn.btn-default.disabled:focus,.btn.btn-default.disabled:hover,.btn.btn-default[disabled],.btn.btn-default[disabled].active,.btn.btn-default[disabled]:active,.btn.btn-default[disabled]:focus,.btn.btn-default[disabled]:hover,fieldset[disabled] .btn.btn-default,fieldset[disabled] .btn.btn-default.active,fieldset[disabled] .btn.btn-default:active,fieldset[disabled] .btn.btn-default:focus,fieldset[disabled] .btn.btn-default:hover{background-color:#fff;border-color:#e6e5e5}.btn.btn-primary{color:#fff;background:#67808c;border:1px solid #51656f}.btn.btn-primary.active,.btn.btn-primary:active,.btn.btn-primary:focus,.btn.btn-primary:hover{background:#5c727d;border-color:#51656f;color:#fff;outline:0;outline-offset:0}.btn.btn-primary.disabled,.btn.btn-primary.disabled.active,.btn.btn-primary.disabled:active,.btn.btn-primary.disabled:focus,.btn.btn-primary.disabled:hover,.btn.btn-primary[disabled],.btn.btn-primary[disabled].active,.btn.btn-primary[disabled]:active,.btn.btn-primary[disabled]:focus,.btn.btn-primary[disabled]:hover,fieldset[disabled] .btn.btn-primary,fieldset[disabled] .btn.btn-primary.active,fieldset[disabled] .btn.btn-primary:active,fieldset[disabled] .btn.btn-primary:focus,fieldset[disabled] .btn.btn-primary:hover{background-color:#748c99;border-color:#51656f}.btn.btn-success{color:#fff;background:#7ED321;border:1px solid #64a71a}.btn.btn-success.active,.btn.btn-success:active,.btn.btn-success:focus,.btn.btn-success:hover{background:#71bd1e;border-color:#64a71a;color:#fff;outline:0;outline-offset:0}.btn.btn-success.disabled,.btn.btn-success.disabled.active,.btn.btn-success.disabled:active,.btn.btn-success.disabled:focus,.btn.btn-success.disabled:hover,.btn.btn-success[disabled],.btn.btn-success[disabled].active,.btn.btn-success[disabled]:active,.btn.btn-success[disabled]:focus,.btn.btn-success[disabled]:hover,fieldset[disabled] .btn.btn-success,fieldset[disabled] .btn.btn-success.active,fieldset[disabled] .btn.btn-success:active,fieldset[disabled] .btn.btn-success:focus,fieldset[disabled] .btn.btn-success:hover{background-color:#8bde2f;border-color:#64a71a}.btn.btn-info{color:#fff;background:#3498db;border:1px solid #217dbb}.btn.btn-info.active,.btn.btn-info:active,.btn.btn-info:focus,.btn.btn-info:hover{background:#258cd1;border-color:#217dbb;color:#fff;outline:0;outline-offset:0}.btn.btn-info.disabled,.btn.btn-info.disabled.active,.btn.btn-info.disabled:active,.btn.btn-info.disabled:focus,.btn.btn-info.disabled:hover,.btn.btn-info[disabled],.btn.btn-info[disabled].active,.btn.btn-info[disabled]:active,.btn.btn-info[disabled]:focus,.btn.btn-info[disabled]:hover,fieldset[disabled] .btn.btn-info,fieldset[disabled] .btn.btn-info.active,fieldset[disabled] .btn.btn-info:active,fieldset[disabled] .btn.btn-info:focus,fieldset[disabled] .btn.btn-info:hover{background-color:#4aa3df;border-color:#217dbb}.btn.btn-warning{color:#fff;background:#F80;border:1px solid #cc6d00}.btn.btn-warning.active,.btn.btn-warning:active,.btn.btn-warning:focus,.btn.btn-warning:hover{background:#e67a00;border-color:#cc6d00;color:#fff;outline:0;outline-offset:0}.btn.btn-warning.disabled,.btn.btn-warning.disabled.active,.btn.btn-warning.disabled:active,.btn.btn-warning.disabled:focus,.btn.btn-warning.disabled:hover,.btn.btn-warning[disabled],.btn.btn-warning[disabled].active,.btn.btn-warning[disabled]:active,.btn.btn-warning[disabled]:focus,.btn.btn-warning[disabled]:hover,fieldset[disabled] .btn.btn-warning,fieldset[disabled] .btn.btn-warning.active,fieldset[disabled] .btn.btn-warning:active,fieldset[disabled] .btn.btn-warning:focus,fieldset[disabled] .btn.btn-warning:hover{background-color:#ff941a;border-color:#cc6d00}.btn.btn-danger{color:#fff;background:#ff6f6f;border:1px solid #ff3c3c}.btn.btn-danger.active,.btn.btn-danger:active,.btn.btn-danger:focus,.btn.btn-danger:hover{background:#ff5656;border-color:#ff3c3c;color:#fff;outline:0;outline-offset:0}.btn.btn-danger.disabled,.btn.btn-danger.disabled.active,.btn.btn-danger.disabled:active,.btn.btn-danger.disabled:focus,.btn.btn-danger.disabled:hover,.btn.btn-danger[disabled],.btn.btn-danger[disabled].active,.btn.btn-danger[disabled]:active,.btn.btn-danger[disabled]:focus,.btn.btn-danger[disabled]:hover,fieldset[disabled] .btn.btn-danger,fieldset[disabled] .btn.btn-danger.active,fieldset[disabled] .btn.btn-danger:active,fieldset[disabled] .btn.btn-danger:focus,fieldset[disabled] .btn.btn-danger:hover{background-color:#ff8989;border-color:#ff3c3c}.btn.btn-inverse{color:#fff;background:#474949;border:1px solid #2e2f2f}.btn.btn-inverse.active,.btn.btn-inverse:active,.btn.btn-inverse:focus,.btn.btn-inverse:hover{background:#3a3c3c;border-color:#2e2f2f;color:#fff;outline:0;outline-offset:0}.btn.btn-inverse.disabled,.btn.btn-inverse.disabled.active,.btn.btn-inverse.disabled:active,.btn.btn-inverse.disabled:focus,.btn.btn-inverse.disabled:hover,.btn.btn-inverse[disabled],.btn.btn-inverse[disabled].active,.btn.btn-inverse[disabled]:active,.btn.btn-inverse[disabled]:focus,.btn.btn-inverse[disabled]:hover,fieldset[disabled] .btn.btn-inverse,fieldset[disabled] .btn.btn-inverse.active,fieldset[disabled] .btn.btn-inverse:active,fieldset[disabled] .btn.btn-inverse:focus,fieldset[disabled] .btn.btn-inverse:hover{background-color:#545656;border-color:#2e2f2f}.btn-outline{background-color:transparent;background-image:none!important;color:inherit;transition:all .5s}.btn-default.btn-outline{color:#999}.btn-primary.btn-outline{color:#428bca}.btn-success.btn-outline{color:#5cb85c}.btn-info.btn-outline{color:#5bc0de}.btn-warning.btn-outline{color:#f0ad4e}.btn-danger.btn-outline{color:#d9534f}.btn-danger.btn-outline:hover,.btn-info.btn-outline:hover,.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover,.btn-warning.btn-outline:hover,body.dashboard .navbar a,body.dashboard .navbar a:active,body.dashboard .navbar a:visited{color:#fff}.pager li>a,.pager li>span{border-radius:3px}body.error-page{background-color:#f3f3f4}body.error-page .middle-box{height:400px;width:400px;position:absolute;top:50%;left:50%;margin-top:-250px;margin-left:-200px;z-index:100}body.dashboard,body.dashboard .wrapper{display:table;height:100%;table-layout:fixed}body.error-page .middle-box h1{font-size:9em}body.error-page h3.font-bold{font-weight:600}body.dashboard{font-family:-apple-system,BlinkMacSystemFont,"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;font-size:15px;width:100%;line-height:1.42857143}body.dashboard .wrapper{padding-left:0;transition:all .5s ease}body.dashboard .wrapper.toggled{padding-left:235px}body.dashboard .wrapper.toggled .sidebar{width:235px}body.dashboard .wrapper.toggled .page-content{position:absolute;margin-right:-235px}@media (min-width:768px) and (max-width:991px){body.dashboard .wrapper{padding-left:80px}}@media (min-width:991px){body.dashboard .wrapper{padding-left:235px}body.dashboard .wrapper.toggled{padding-left:0}body.dashboard .wrapper.toggled .page-content{position:relative;margin-right:0}}body.dashboard .alerts .alert h5{margin-top:5px}body.dashboard .wrapper{width:100%}body.dashboard .navbar{z-index:999;border-radius:0;border:none;border-bottom:1px solid #00695c;background:#009c89;margin:0}body.dashboard .navbar a:active:hover,body.dashboard .navbar a:hover,body.dashboard .navbar a:visited:hover{color:#e9e9e9}body.dashboard .navbar .navbar-toggle{margin-top:15px;background:0 0;border-color:transparent}body.dashboard .navbar .navbar-toggle.collapsed span{background-color:#fff}body.dashboard .navbar .navbar-collapse{background:#009c89}body.dashboard .navbar a.navbar-brand{padding:34px 21px;line-height:0;font-size:1.1em;letter-spacing:.04em;font-weight:600;text-transform:uppercase}@media (min-width:991px){body.dashboard .navbar a.navbar-brand span{padding-right:10px}body.dashboard .navbar a.navbar-brand span:before{font-family:FontAwesome;content:"\f060"}}body.dashboard .navbar .nav li a{height:68px;line-height:35px}body.dashboard .sidebar{position:fixed;left:235px;width:0;height:100%;margin-left:-235px;overflow-y:auto;background:#333;box-shadow:inset 0 -2px 3px rgba(0,0,0,.25);z-index:1000;transition:all .5s ease}body.dashboard .sidebar .sidebar-inner{position:absolute;top:0;width:235px;margin:0;padding:0;list-style:none}body.dashboard .sidebar .sidebar-inner .profile{text-align:center;padding:20px 10px;margin-bottom:0}body.dashboard .sidebar .sidebar-inner .profile .dropdown-toggle{text-decoration:none}body.dashboard .sidebar .sidebar-inner .profile .dropdown-menu{top:108%}body.dashboard .sidebar .sidebar-inner .profile .avatar{width:60px}body.dashboard .sidebar .sidebar-inner .profile .avatar img{border-radius:50%;width:50px}body.dashboard .sidebar .sidebar-inner .profile .username{word-break:break-all;margin-bottom:0}body.dashboard .sidebar .sidebar-inner .profile a{color:#fff;text-decoration:none}body.dashboard .sidebar .sidebar-inner .quick-add-incident{padding:10px}body.dashboard .sidebar .sidebar-inner ul{margin:0;padding:0;list-style:none}body.dashboard .sidebar .sidebar-inner ul li{font-size:.9em}body.dashboard .sidebar .sidebar-inner ul li:focus,body.dashboard .sidebar .sidebar-inner ul li:hover{background:#404040!important}body.dashboard .sidebar .sidebar-inner ul li.active{background:#4d4c4c}body.dashboard .sidebar .sidebar-inner ul li.active:hover{background:#595959!important}body.dashboard .sidebar .sidebar-inner ul li.active a{padding-top:14px;padding-bottom:14px;border-top:1px solid #666;border-bottom:1px solid #666;color:#fff}body.dashboard .sidebar .sidebar-inner ul li.active a:focus,body.dashboard .sidebar .sidebar-inner ul li.active a:hover{text-decoration:none}body.dashboard .sidebar .sidebar-inner ul li a{display:block;padding:15px;color:#fff}body.dashboard .sidebar .sidebar-inner ul li a i{font-size:18px;min-width:17px;text-align:center;position:relative;top:1px;margin-right:5px}body.dashboard .sidebar .sidebar-inner ul li a:focus,body.dashboard .sidebar .sidebar-inner ul li a:hover{text-decoration:none}body.dashboard .sidebar .sidebar-inner ul li a span.label{float:right;margin:3px 0}body.dashboard .sidebar .sidebar-inner ul li a span.label.label-info{background-color:#6DB81C}body.dashboard .sidebar .sidebar-inner ul li.sub-nav-item a{padding-left:40px}body.dashboard .sidebar .bottom-menu-sidebar{position:fixed;bottom:0;width:237px;z-index:999}body.dashboard .sidebar .bottom-menu-sidebar ul>li{float:left;display:block;width:33.333%;border-right:1px solid #ddd;border-top:1px solid #ddd}body.dashboard .sidebar .bottom-menu-sidebar ul>li a{color:#333;display:block;position:relative;text-align:center;padding:6px 0;background:#fff}@media (min-width:767px){body.dashboard .sidebar{width:235px}body.dashboard .wrapper.toggled .sidebar{width:0}}@media (min-width:768px) and (max-width:991px){body.dashboard .sidebar{width:80px;left:150px;margin-left:-150px}body.dashboard .sidebar .sidebar-inner{width:80px}body.dashboard .sidebar .sidebar-inner .profile .avatar img{width:40px}body.dashboard .sidebar .sidebar-inner .quick-add-incident .btn{padding:3px 6px}body.dashboard .sidebar .sidebar-inner .quick-add-incident i{font-size:20px}body.dashboard .sidebar .sidebar-inner>ul>li>a{text-align:center}body.dashboard .sidebar .sidebar-inner>ul>li>a>i{font-size:25px}}body.dashboard .sidebar-toggler{float:left;padding:10px;position:relative;top:-15px;left:-5px;margin-right:10px;cursor:pointer}body.dashboard .sidebar-toggler i{font-size:25px}body.dashboard .sub-sidebar{left:0;top:0;bottom:0;position:fixed;margin-left:228px;width:22%;background:#F0F3F4;border-right:1px solid #E8ECF1}body.dashboard .sub-sidebar h3{margin:0;text-align:center;font-size:19px;padding:30px 15px 15px}body.dashboard .sub-sidebar hr{margin-top:5px;margin-bottom:5px}body.dashboard .sub-sidebar ul.menu{list-style-type:none;padding:0;margin:0}body.dashboard .sub-sidebar ul.menu li a{color:#666;display:block;padding:13px 30px;font-size:15px;transition:all .2s linear;text-decoration:none}body.dashboard .sub-sidebar ul.menu li a.active,body.dashboard .sub-sidebar ul.menu li a:hover{color:#6DB81C}body.dashboard .sub-sidebar ul.menu li i{margin-right:5px}body.dashboard .sub-sidebar .sidebar-toggler{position:absolute;top:3px;left:20px;font-size:36px;cursor:pointer}body.dashboard .sub-sidebar+.content-wrapper{top:0;position:relative;margin-left:26%;padding-right:40px!important}@media (max-width:767px){body.dashboard .sub-sidebar{position:relative;margin-left:0;width:100%}body.dashboard .sub-sidebar+.content-wrapper{margin-left:0;padding-left:40px!important;width:100%}}@media (min-width:768px) and (max-width:991px){body.dashboard .sub-sidebar{margin-left:80px;width:25%}body.dashboard .sub-sidebar+.content-wrapper{padding-left:45px!important}}body.dashboard .page-content{width:100%}body.dashboard .page-content .content-wrapper{padding-top:20px;padding-left:40px;padding-right:40px}body.dashboard .page-content .content-wrapper.header-fixed{margin-top:60px}body.dashboard .page-content .header{position:relative;top:0;left:0;color:#333;background-color:#fff;padding:22px 40px;width:100%;height:70px;font-size:1.2em;border-bottom:1px solid #eee;z-index:99}body.dashboard .page-content .header.sub-header{padding:8px 2px;height:50px}body.dashboard .page-content .header.fixed{position:fixed;padding-left:270px}body.dashboard .page-content .header .btn,body.dashboard .page-content .header button,body.dashboard .page-content .header input{position:relative;top:-4px}body.dashboard .page-content .header input{width:20%}.setup-page body.dashboard .page-content .header+.steps,body.dashboard .page-content .header+.row,body.dashboard .page-content .setup-page .header+.steps{margin-top:23px}body.dashboard .page-content .header h3{color:#444;margin-top:0;text-transform:uppercase}body.dashboard .page-content .header .ion,body.dashboard .page-content .header .ion-alert-circled:before,body.dashboard .page-content .header .ion-alert:before,body.dashboard .page-content .header .ion-android-add-circle:before,body.dashboard .page-content .header .ion-android-add:before,body.dashboard .page-content .header .ion-android-alarm-clock:before,body.dashboard .page-content .header .ion-android-alert:before,body.dashboard .page-content .header .ion-android-apps:before,body.dashboard .page-content .header .ion-android-archive:before,body.dashboard .page-content .header .ion-android-arrow-back:before,body.dashboard .page-content .header .ion-android-arrow-down:before,body.dashboard .page-content .header .ion-android-arrow-dropdown-circle:before,body.dashboard .page-content .header .ion-android-arrow-dropdown:before,body.dashboard .page-content .header .ion-android-arrow-dropleft-circle:before,body.dashboard .page-content .header .ion-android-arrow-dropleft:before,body.dashboard .page-content .header .ion-android-arrow-dropright-circle:before,body.dashboard .page-content .header .ion-android-arrow-dropright:before,body.dashboard .page-content .header .ion-android-arrow-dropup-circle:before,body.dashboard .page-content .header .ion-android-arrow-dropup:before,body.dashboard .page-content .header .ion-android-arrow-forward:before,body.dashboard .page-content .header .ion-android-arrow-up:before,body.dashboard .page-content .header .ion-android-attach:before,body.dashboard .page-content .header .ion-android-bar:before,body.dashboard .page-content .header .ion-android-bicycle:before,body.dashboard .page-content .header .ion-android-boat:before,body.dashboard .page-content .header .ion-android-bookmark:before,body.dashboard .page-content .header .ion-android-bulb:before,body.dashboard .page-content .header .ion-android-bus:before,body.dashboard .page-content .header .ion-android-calendar:before,body.dashboard .page-content .header .ion-android-call:before,body.dashboard .page-content .header .ion-android-camera:before,body.dashboard .page-content .header .ion-android-cancel:before,body.dashboard .page-content .header .ion-android-car:before,body.dashboard .page-content .header .ion-android-cart:before,body.dashboard .page-content .header .ion-android-chat:before,body.dashboard .page-content .header .ion-android-checkbox-blank:before,body.dashboard .page-content .header .ion-android-checkbox-outline-blank:before,body.dashboard .page-content .header .ion-android-checkbox-outline:before,body.dashboard .page-content .header .ion-android-checkbox:before,body.dashboard .page-content .header .ion-android-checkmark-circle:before,body.dashboard .page-content .header .ion-android-clipboard:before,body.dashboard .page-content .header .ion-android-close:before,body.dashboard .page-content .header .ion-android-cloud-circle:before,body.dashboard .page-content .header .ion-android-cloud-done:before,body.dashboard .page-content .header .ion-android-cloud-outline:before,body.dashboard .page-content .header .ion-android-cloud:before,body.dashboard .page-content .header .ion-android-color-palette:before,body.dashboard .page-content .header .ion-android-compass:before,body.dashboard .page-content .header .ion-android-contact:before,body.dashboard .page-content .header .ion-android-contacts:before,body.dashboard .page-content .header .ion-android-contract:before,body.dashboard .page-content .header .ion-android-create:before,body.dashboard .page-content .header .ion-android-delete:before,body.dashboard .page-content .header .ion-android-desktop:before,body.dashboard .page-content .header .ion-android-document:before,body.dashboard .page-content .header .ion-android-done-all:before,body.dashboard .page-content .header .ion-android-done:before,body.dashboard .page-content .header .ion-android-download:before,body.dashboard .page-content .header .ion-android-drafts:before,body.dashboard .page-content .header .ion-android-exit:before,body.dashboard .page-content .header .ion-android-expand:before,body.dashboard .page-content .header .ion-android-favorite-outline:before,body.dashboard .page-content .header .ion-android-favorite:before,body.dashboard .page-content .header .ion-android-film:before,body.dashboard .page-content .header .ion-android-folder-open:before,body.dashboard .page-content .header .ion-android-folder:before,body.dashboard .page-content .header .ion-android-funnel:before,body.dashboard .page-content .header .ion-android-globe:before,body.dashboard .page-content .header .ion-android-hand:before,body.dashboard .page-content .header .ion-android-hangout:before,body.dashboard .page-content .header .ion-android-happy:before,body.dashboard .page-content .header .ion-android-home:before,body.dashboard .page-content .header .ion-android-image:before,body.dashboard .page-content .header .ion-android-laptop:before,body.dashboard .page-content .header .ion-android-list:before,body.dashboard .page-content .header .ion-android-locate:before,body.dashboard .page-content .header .ion-android-lock:before,body.dashboard .page-content .header .ion-android-mail:before,body.dashboard .page-content .header .ion-android-map:before,body.dashboard .page-content .header .ion-android-menu:before,body.dashboard .page-content .header .ion-android-microphone-off:before,body.dashboard .page-content .header .ion-android-microphone:before,body.dashboard .page-content .header .ion-android-more-horizontal:before,body.dashboard .page-content .header .ion-android-more-vertical:before,body.dashboard .page-content .header .ion-android-navigate:before,body.dashboard .page-content .header .ion-android-notifications-none:before,body.dashboard .page-content .header .ion-android-notifications-off:before,body.dashboard .page-content .header .ion-android-notifications:before,body.dashboard .page-content .header .ion-android-open:before,body.dashboard .page-content .header .ion-android-options:before,body.dashboard .page-content .header .ion-android-people:before,body.dashboard .page-content .header .ion-android-person-add:before,body.dashboard .page-content .header .ion-android-person:before,body.dashboard .page-content .header .ion-android-phone-landscape:before,body.dashboard .page-content .header .ion-android-phone-portrait:before,body.dashboard .page-content .header .ion-android-pin:before,body.dashboard .page-content .header .ion-android-plane:before,body.dashboard .page-content .header .ion-android-playstore:before,body.dashboard .page-content .header .ion-android-print:before,body.dashboard .page-content .header .ion-android-radio-button-off:before,body.dashboard .page-content .header .ion-android-radio-button-on:before,body.dashboard .page-content .header .ion-android-refresh:before,body.dashboard .page-content .header .ion-android-remove-circle:before,body.dashboard .page-content .header .ion-android-remove:before,body.dashboard .page-content .header .ion-android-restaurant:before,body.dashboard .page-content .header .ion-android-sad:before,body.dashboard .page-content .header .ion-android-search:before,body.dashboard .page-content .header .ion-android-send:before,body.dashboard .page-content .header .ion-android-settings:before,body.dashboard .page-content .header .ion-android-share-alt:before,body.dashboard .page-content .header .ion-android-share:before,body.dashboard .page-content .header .ion-android-star-half:before,body.dashboard .page-content .header .ion-android-star-outline:before,body.dashboard .page-content .header .ion-android-star:before,body.dashboard .page-content .header .ion-android-stopwatch:before,body.dashboard .page-content .header .ion-android-subway:before,body.dashboard .page-content .header .ion-android-sunny:before,body.dashboard .page-content .header .ion-android-sync:before,body.dashboard .page-content .header .ion-android-textsms:before,body.dashboard .page-content .header .ion-android-time:before,body.dashboard .page-content .header .ion-android-train:before,body.dashboard .page-content .header .ion-android-unlock:before,body.dashboard .page-content .header .ion-android-upload:before,body.dashboard .page-content .header .ion-android-volume-down:before,body.dashboard .page-content .header .ion-android-volume-mute:before,body.dashboard .page-content .header .ion-android-volume-off:before,body.dashboard .page-content .header .ion-android-volume-up:before,body.dashboard .page-content .header .ion-android-walk:before,body.dashboard .page-content .header .ion-android-warning:before,body.dashboard .page-content .header .ion-android-watch:before,body.dashboard .page-content .header .ion-android-wifi:before,body.dashboard .page-content .header .ion-aperture:before,body.dashboard .page-content .header .ion-archive:before,body.dashboard .page-content .header .ion-arrow-down-a:before,body.dashboard .page-content .header .ion-arrow-down-b:before,body.dashboard .page-content .header .ion-arrow-down-c:before,body.dashboard .page-content .header .ion-arrow-expand:before,body.dashboard .page-content .header .ion-arrow-graph-down-left:before,body.dashboard .page-content .header .ion-arrow-graph-down-right:before,body.dashboard .page-content .header .ion-arrow-graph-up-left:before,body.dashboard .page-content .header .ion-arrow-graph-up-right:before,body.dashboard .page-content .header .ion-arrow-left-a:before,body.dashboard .page-content .header .ion-arrow-left-b:before,body.dashboard .page-content .header .ion-arrow-left-c:before,body.dashboard .page-content .header .ion-arrow-move:before,body.dashboard .page-content .header .ion-arrow-resize:before,body.dashboard .page-content .header .ion-arrow-return-left:before,body.dashboard .page-content .header .ion-arrow-return-right:before,body.dashboard .page-content .header .ion-arrow-right-a:before,body.dashboard .page-content .header .ion-arrow-right-b:before,body.dashboard .page-content .header .ion-arrow-right-c:before,body.dashboard .page-content .header .ion-arrow-shrink:before,body.dashboard .page-content .header .ion-arrow-swap:before,body.dashboard .page-content .header .ion-arrow-up-a:before,body.dashboard .page-content .header .ion-arrow-up-b:before,body.dashboard .page-content .header .ion-arrow-up-c:before,body.dashboard .page-content .header .ion-asterisk:before,body.dashboard .page-content .header .ion-at:before,body.dashboard .page-content .header .ion-backspace-outline:before,body.dashboard .page-content .header .ion-backspace:before,body.dashboard .page-content .header .ion-bag:before,body.dashboard .page-content .header .ion-battery-charging:before,body.dashboard .page-content .header .ion-battery-empty:before,body.dashboard .page-content .header .ion-battery-full:before,body.dashboard .page-content .header .ion-battery-half:before,body.dashboard .page-content .header .ion-battery-low:before,body.dashboard .page-content .header .ion-beaker:before,body.dashboard .page-content .header .ion-beer:before,body.dashboard .page-content .header .ion-bluetooth:before,body.dashboard .page-content .header .ion-bonfire:before,body.dashboard .page-content .header .ion-bookmark:before,body.dashboard .page-content .header .ion-bowtie:before,body.dashboard .page-content .header .ion-briefcase:before,body.dashboard .page-content .header .ion-bug:before,body.dashboard .page-content .header .ion-calculator:before,body.dashboard .page-content .header .ion-calendar:before,body.dashboard .page-content .header .ion-camera:before,body.dashboard .page-content .header .ion-card:before,body.dashboard .page-content .header .ion-cash:before,body.dashboard .page-content .header .ion-chatbox-working:before,body.dashboard .page-content .header .ion-chatbox:before,body.dashboard .page-content .header .ion-chatboxes:before,body.dashboard .page-content .header .ion-chatbubble-working:before,body.dashboard .page-content .header .ion-chatbubble:before,body.dashboard .page-content .header .ion-chatbubbles:before,body.dashboard .page-content .header .ion-checkmark-circled:before,body.dashboard .page-content .header .ion-checkmark-round:before,body.dashboard .page-content .header .ion-checkmark:before,body.dashboard .page-content .header .ion-chevron-down:before,body.dashboard .page-content .header .ion-chevron-left:before,body.dashboard .page-content .header .ion-chevron-right:before,body.dashboard .page-content .header .ion-chevron-up:before,body.dashboard .page-content .header .ion-clipboard:before,body.dashboard .page-content .header .ion-clock:before,body.dashboard .page-content .header .ion-close-circled:before,body.dashboard .page-content .header .ion-close-round:before,body.dashboard .page-content .header .ion-close:before,body.dashboard .page-content .header .ion-closed-captioning:before,body.dashboard .page-content .header .ion-cloud:before,body.dashboard .page-content .header .ion-code-download:before,body.dashboard .page-content .header .ion-code-working:before,body.dashboard .page-content .header .ion-code:before,body.dashboard .page-content .header .ion-coffee:before,body.dashboard .page-content .header .ion-compass:before,body.dashboard .page-content .header .ion-compose:before,body.dashboard .page-content .header .ion-connection-bars:before,body.dashboard .page-content .header .ion-contrast:before,body.dashboard .page-content .header .ion-crop:before,body.dashboard .page-content .header .ion-cube:before,body.dashboard .page-content .header .ion-disc:before,body.dashboard .page-content .header .ion-document-text:before,body.dashboard .page-content .header .ion-document:before,body.dashboard .page-content .header .ion-drag:before,body.dashboard .page-content .header .ion-earth:before,body.dashboard .page-content .header .ion-easel:before,body.dashboard .page-content .header .ion-edit:before,body.dashboard .page-content .header .ion-egg:before,body.dashboard .page-content .header .ion-eject:before,body.dashboard .page-content .header .ion-email-unread:before,body.dashboard .page-content .header .ion-email:before,body.dashboard .page-content .header .ion-erlenmeyer-flask-bubbles:before,body.dashboard .page-content .header .ion-erlenmeyer-flask:before,body.dashboard .page-content .header .ion-eye-disabled:before,body.dashboard .page-content .header .ion-eye:before,body.dashboard .page-content .header .ion-female:before,body.dashboard .page-content .header .ion-filing:before,body.dashboard .page-content .header .ion-film-marker:before,body.dashboard .page-content .header .ion-fireball:before,body.dashboard .page-content .header .ion-flag:before,body.dashboard .page-content .header .ion-flame:before,body.dashboard .page-content .header .ion-flash-off:before,body.dashboard .page-content .header .ion-flash:before,body.dashboard .page-content .header .ion-folder:before,body.dashboard .page-content .header .ion-fork-repo:before,body.dashboard .page-content .header .ion-fork:before,body.dashboard .page-content .header .ion-forward:before,body.dashboard .page-content .header .ion-funnel:before,body.dashboard .page-content .header .ion-gear-a:before,body.dashboard .page-content .header .ion-gear-b:before,body.dashboard .page-content .header .ion-grid:before,body.dashboard .page-content .header .ion-hammer:before,body.dashboard .page-content .header .ion-happy-outline:before,body.dashboard .page-content .header .ion-happy:before,body.dashboard .page-content .header .ion-headphone:before,body.dashboard .page-content .header .ion-heart-broken:before,body.dashboard .page-content .header .ion-heart:before,body.dashboard .page-content .header .ion-help-buoy:before,body.dashboard .page-content .header .ion-help-circled:before,body.dashboard .page-content .header .ion-help:before,body.dashboard .page-content .header .ion-home:before,body.dashboard .page-content .header .ion-icecream:before,body.dashboard .page-content .header .ion-image:before,body.dashboard .page-content .header .ion-images:before,body.dashboard .page-content .header .ion-information-circled:before,body.dashboard .page-content .header .ion-information:before,body.dashboard .page-content .header .ion-ionic:before,body.dashboard .page-content .header .ion-ios-alarm-outline:before,body.dashboard .page-content .header .ion-ios-alarm:before,body.dashboard .page-content .header .ion-ios-albums-outline:before,body.dashboard .page-content .header .ion-ios-albums:before,body.dashboard .page-content .header .ion-ios-americanfootball-outline:before,body.dashboard .page-content .header .ion-ios-americanfootball:before,body.dashboard .page-content .header .ion-ios-analytics-outline:before,body.dashboard .page-content .header .ion-ios-analytics:before,body.dashboard .page-content .header .ion-ios-arrow-back:before,body.dashboard .page-content .header .ion-ios-arrow-down:before,body.dashboard .page-content .header .ion-ios-arrow-forward:before,body.dashboard .page-content .header .ion-ios-arrow-left:before,body.dashboard .page-content .header .ion-ios-arrow-right:before,body.dashboard .page-content .header .ion-ios-arrow-thin-down:before,body.dashboard .page-content .header .ion-ios-arrow-thin-left:before,body.dashboard .page-content .header .ion-ios-arrow-thin-right:before,body.dashboard .page-content .header .ion-ios-arrow-thin-up:before,body.dashboard .page-content .header .ion-ios-arrow-up:before,body.dashboard .page-content .header .ion-ios-at-outline:before,body.dashboard .page-content .header .ion-ios-at:before,body.dashboard .page-content .header .ion-ios-barcode-outline:before,body.dashboard .page-content .header .ion-ios-barcode:before,body.dashboard .page-content .header .ion-ios-baseball-outline:before,body.dashboard .page-content .header .ion-ios-baseball:before,body.dashboard .page-content .header .ion-ios-basketball-outline:before,body.dashboard .page-content .header .ion-ios-basketball:before,body.dashboard .page-content .header .ion-ios-bell-outline:before,body.dashboard .page-content .header .ion-ios-bell:before,body.dashboard .page-content .header .ion-ios-body-outline:before,body.dashboard .page-content .header .ion-ios-body:before,body.dashboard .page-content .header .ion-ios-bolt-outline:before,body.dashboard .page-content .header .ion-ios-bolt:before,body.dashboard .page-content .header .ion-ios-book-outline:before,body.dashboard .page-content .header .ion-ios-book:before,body.dashboard .page-content .header .ion-ios-bookmarks-outline:before,body.dashboard .page-content .header .ion-ios-bookmarks:before,body.dashboard .page-content .header .ion-ios-box-outline:before,body.dashboard .page-content .header .ion-ios-box:before,body.dashboard .page-content .header .ion-ios-briefcase-outline:before,body.dashboard .page-content .header .ion-ios-briefcase:before,body.dashboard .page-content .header .ion-ios-browsers-outline:before,body.dashboard .page-content .header .ion-ios-browsers:before,body.dashboard .page-content .header .ion-ios-calculator-outline:before,body.dashboard .page-content .header .ion-ios-calculator:before,body.dashboard .page-content .header .ion-ios-calendar-outline:before,body.dashboard .page-content .header .ion-ios-calendar:before,body.dashboard .page-content .header .ion-ios-camera-outline:before,body.dashboard .page-content .header .ion-ios-camera:before,body.dashboard .page-content .header .ion-ios-cart-outline:before,body.dashboard .page-content .header .ion-ios-cart:before,body.dashboard .page-content .header .ion-ios-chatboxes-outline:before,body.dashboard .page-content .header .ion-ios-chatboxes:before,body.dashboard .page-content .header .ion-ios-chatbubble-outline:before,body.dashboard .page-content .header .ion-ios-chatbubble:before,body.dashboard .page-content .header .ion-ios-checkmark-empty:before,body.dashboard .page-content .header .ion-ios-checkmark-outline:before,body.dashboard .page-content .header .ion-ios-checkmark:before,body.dashboard .page-content .header .ion-ios-circle-filled:before,body.dashboard .page-content .header .ion-ios-circle-outline:before,body.dashboard .page-content .header .ion-ios-clock-outline:before,body.dashboard .page-content .header .ion-ios-clock:before,body.dashboard .page-content .header .ion-ios-close-empty:before,body.dashboard .page-content .header .ion-ios-close-outline:before,body.dashboard .page-content .header .ion-ios-close:before,body.dashboard .page-content .header .ion-ios-cloud-download-outline:before,body.dashboard .page-content .header .ion-ios-cloud-download:before,body.dashboard .page-content .header .ion-ios-cloud-outline:before,body.dashboard .page-content .header .ion-ios-cloud-upload-outline:before,body.dashboard .page-content .header .ion-ios-cloud-upload:before,body.dashboard .page-content .header .ion-ios-cloud:before,body.dashboard .page-content .header .ion-ios-cloudy-night-outline:before,body.dashboard .page-content .header .ion-ios-cloudy-night:before,body.dashboard .page-content .header .ion-ios-cloudy-outline:before,body.dashboard .page-content .header .ion-ios-cloudy:before,body.dashboard .page-content .header .ion-ios-cog-outline:before,body.dashboard .page-content .header .ion-ios-cog:before,body.dashboard .page-content .header .ion-ios-color-filter-outline:before,body.dashboard .page-content .header .ion-ios-color-filter:before,body.dashboard .page-content .header .ion-ios-color-wand-outline:before,body.dashboard .page-content .header .ion-ios-color-wand:before,body.dashboard .page-content .header .ion-ios-compose-outline:before,body.dashboard .page-content .header .ion-ios-compose:before,body.dashboard .page-content .header .ion-ios-contact-outline:before,body.dashboard .page-content .header .ion-ios-contact:before,body.dashboard .page-content .header .ion-ios-copy-outline:before,body.dashboard .page-content .header .ion-ios-copy:before,body.dashboard .page-content .header .ion-ios-crop-strong:before,body.dashboard .page-content .header .ion-ios-crop:before,body.dashboard .page-content .header .ion-ios-download-outline:before,body.dashboard .page-content .header .ion-ios-download:before,body.dashboard .page-content .header .ion-ios-drag:before,body.dashboard .page-content .header .ion-ios-email-outline:before,body.dashboard .page-content .header .ion-ios-email:before,body.dashboard .page-content .header .ion-ios-eye-outline:before,body.dashboard .page-content .header .ion-ios-eye:before,body.dashboard .page-content .header .ion-ios-fastforward-outline:before,body.dashboard .page-content .header .ion-ios-fastforward:before,body.dashboard .page-content .header .ion-ios-filing-outline:before,body.dashboard .page-content .header .ion-ios-filing:before,body.dashboard .page-content .header .ion-ios-film-outline:before,body.dashboard .page-content .header .ion-ios-film:before,body.dashboard .page-content .header .ion-ios-flag-outline:before,body.dashboard .page-content .header .ion-ios-flag:before,body.dashboard .page-content .header .ion-ios-flame-outline:before,body.dashboard .page-content .header .ion-ios-flame:before,body.dashboard .page-content .header .ion-ios-flask-outline:before,body.dashboard .page-content .header .ion-ios-flask:before,body.dashboard .page-content .header .ion-ios-flower-outline:before,body.dashboard .page-content .header .ion-ios-flower:before,body.dashboard .page-content .header .ion-ios-folder-outline:before,body.dashboard .page-content .header .ion-ios-folder:before,body.dashboard .page-content .header .ion-ios-football-outline:before,body.dashboard .page-content .header .ion-ios-football:before,body.dashboard .page-content .header .ion-ios-game-controller-a-outline:before,body.dashboard .page-content .header .ion-ios-game-controller-a:before,body.dashboard .page-content .header .ion-ios-game-controller-b-outline:before,body.dashboard .page-content .header .ion-ios-game-controller-b:before,body.dashboard .page-content .header .ion-ios-gear-outline:before,body.dashboard .page-content .header .ion-ios-gear:before,body.dashboard .page-content .header .ion-ios-glasses-outline:before,body.dashboard .page-content .header .ion-ios-glasses:before,body.dashboard .page-content .header .ion-ios-grid-view-outline:before,body.dashboard .page-content .header .ion-ios-grid-view:before,body.dashboard .page-content .header .ion-ios-heart-outline:before,body.dashboard .page-content .header .ion-ios-heart:before,body.dashboard .page-content .header .ion-ios-help-empty:before,body.dashboard .page-content .header .ion-ios-help-outline:before,body.dashboard .page-content .header .ion-ios-help:before,body.dashboard .page-content .header .ion-ios-home-outline:before,body.dashboard .page-content .header .ion-ios-home:before,body.dashboard .page-content .header .ion-ios-infinite-outline:before,body.dashboard .page-content .header .ion-ios-infinite:before,body.dashboard .page-content .header .ion-ios-information-empty:before,body.dashboard .page-content .header .ion-ios-information-outline:before,body.dashboard .page-content .header .ion-ios-information:before,body.dashboard .page-content .header .ion-ios-ionic-outline:before,body.dashboard .page-content .header .ion-ios-keypad-outline:before,body.dashboard .page-content .header .ion-ios-keypad:before,body.dashboard .page-content .header .ion-ios-lightbulb-outline:before,body.dashboard .page-content .header .ion-ios-lightbulb:before,body.dashboard .page-content .header .ion-ios-list-outline:before,body.dashboard .page-content .header .ion-ios-list:before,body.dashboard .page-content .header .ion-ios-location-outline:before,body.dashboard .page-content .header .ion-ios-location:before,body.dashboard .page-content .header .ion-ios-locked-outline:before,body.dashboard .page-content .header .ion-ios-locked:before,body.dashboard .page-content .header .ion-ios-loop-strong:before,body.dashboard .page-content .header .ion-ios-loop:before,body.dashboard .page-content .header .ion-ios-medical-outline:before,body.dashboard .page-content .header .ion-ios-medical:before,body.dashboard .page-content .header .ion-ios-medkit-outline:before,body.dashboard .page-content .header .ion-ios-medkit:before,body.dashboard .page-content .header .ion-ios-mic-off:before,body.dashboard .page-content .header .ion-ios-mic-outline:before,body.dashboard .page-content .header .ion-ios-mic:before,body.dashboard .page-content .header .ion-ios-minus-empty:before,body.dashboard .page-content .header .ion-ios-minus-outline:before,body.dashboard .page-content .header .ion-ios-minus:before,body.dashboard .page-content .header .ion-ios-monitor-outline:before,body.dashboard .page-content .header .ion-ios-monitor:before,body.dashboard .page-content .header .ion-ios-moon-outline:before,body.dashboard .page-content .header .ion-ios-moon:before,body.dashboard .page-content .header .ion-ios-more-outline:before,body.dashboard .page-content .header .ion-ios-more:before,body.dashboard .page-content .header .ion-ios-musical-note:before,body.dashboard .page-content .header .ion-ios-musical-notes:before,body.dashboard .page-content .header .ion-ios-navigate-outline:before,body.dashboard .page-content .header .ion-ios-navigate:before,body.dashboard .page-content .header .ion-ios-nutrition-outline:before,body.dashboard .page-content .header .ion-ios-nutrition:before,body.dashboard .page-content .header .ion-ios-paper-outline:before,body.dashboard .page-content .header .ion-ios-paper:before,body.dashboard .page-content .header .ion-ios-paperplane-outline:before,body.dashboard .page-content .header .ion-ios-paperplane:before,body.dashboard .page-content .header .ion-ios-partlysunny-outline:before,body.dashboard .page-content .header .ion-ios-partlysunny:before,body.dashboard .page-content .header .ion-ios-pause-outline:before,body.dashboard .page-content .header .ion-ios-pause:before,body.dashboard .page-content .header .ion-ios-paw-outline:before,body.dashboard .page-content .header .ion-ios-paw:before,body.dashboard .page-content .header .ion-ios-people-outline:before,body.dashboard .page-content .header .ion-ios-people:before,body.dashboard .page-content .header .ion-ios-person-outline:before,body.dashboard .page-content .header .ion-ios-person:before,body.dashboard .page-content .header .ion-ios-personadd-outline:before,body.dashboard .page-content .header .ion-ios-personadd:before,body.dashboard .page-content .header .ion-ios-photos-outline:before,body.dashboard .page-content .header .ion-ios-photos:before,body.dashboard .page-content .header .ion-ios-pie-outline:before,body.dashboard .page-content .header .ion-ios-pie:before,body.dashboard .page-content .header .ion-ios-pint-outline:before,body.dashboard .page-content .header .ion-ios-pint:before,body.dashboard .page-content .header .ion-ios-play-outline:before,body.dashboard .page-content .header .ion-ios-play:before,body.dashboard .page-content .header .ion-ios-plus-empty:before,body.dashboard .page-content .header .ion-ios-plus-outline:before,body.dashboard .page-content .header .ion-ios-plus:before,body.dashboard .page-content .header .ion-ios-pricetag-outline:before,body.dashboard .page-content .header .ion-ios-pricetag:before,body.dashboard .page-content .header .ion-ios-pricetags-outline:before,body.dashboard .page-content .header .ion-ios-pricetags:before,body.dashboard .page-content .header .ion-ios-printer-outline:before,body.dashboard .page-content .header .ion-ios-printer:before,body.dashboard .page-content .header .ion-ios-pulse-strong:before,body.dashboard .page-content .header .ion-ios-pulse:before,body.dashboard .page-content .header .ion-ios-rainy-outline:before,body.dashboard .page-content .header .ion-ios-rainy:before,body.dashboard .page-content .header .ion-ios-recording-outline:before,body.dashboard .page-content .header .ion-ios-recording:before,body.dashboard .page-content .header .ion-ios-redo-outline:before,body.dashboard .page-content .header .ion-ios-redo:before,body.dashboard .page-content .header .ion-ios-refresh-empty:before,body.dashboard .page-content .header .ion-ios-refresh-outline:before,body.dashboard .page-content .header .ion-ios-refresh:before,body.dashboard .page-content .header .ion-ios-reload:before,body.dashboard .page-content .header .ion-ios-reverse-camera-outline:before,body.dashboard .page-content .header .ion-ios-reverse-camera:before,body.dashboard .page-content .header .ion-ios-rewind-outline:before,body.dashboard .page-content .header .ion-ios-rewind:before,body.dashboard .page-content .header .ion-ios-rose-outline:before,body.dashboard .page-content .header .ion-ios-rose:before,body.dashboard .page-content .header .ion-ios-search-strong:before,body.dashboard .page-content .header .ion-ios-search:before,body.dashboard .page-content .header .ion-ios-settings-strong:before,body.dashboard .page-content .header .ion-ios-settings:before,body.dashboard .page-content .header .ion-ios-shuffle-strong:before,body.dashboard .page-content .header .ion-ios-shuffle:before,body.dashboard .page-content .header .ion-ios-skipbackward-outline:before,body.dashboard .page-content .header .ion-ios-skipbackward:before,body.dashboard .page-content .header .ion-ios-skipforward-outline:before,body.dashboard .page-content .header .ion-ios-skipforward:before,body.dashboard .page-content .header .ion-ios-snowy:before,body.dashboard .page-content .header .ion-ios-speedometer-outline:before,body.dashboard .page-content .header .ion-ios-speedometer:before,body.dashboard .page-content .header .ion-ios-star-half:before,body.dashboard .page-content .header .ion-ios-star-outline:before,body.dashboard .page-content .header .ion-ios-star:before,body.dashboard .page-content .header .ion-ios-stopwatch-outline:before,body.dashboard .page-content .header .ion-ios-stopwatch:before,body.dashboard .page-content .header .ion-ios-sunny-outline:before,body.dashboard .page-content .header .ion-ios-sunny:before,body.dashboard .page-content .header .ion-ios-telephone-outline:before,body.dashboard .page-content .header .ion-ios-telephone:before,body.dashboard .page-content .header .ion-ios-tennisball-outline:before,body.dashboard .page-content .header .ion-ios-tennisball:before,body.dashboard .page-content .header .ion-ios-thunderstorm-outline:before,body.dashboard .page-content .header .ion-ios-thunderstorm:before,body.dashboard .page-content .header .ion-ios-time-outline:before,body.dashboard .page-content .header .ion-ios-time:before,body.dashboard .page-content .header .ion-ios-timer-outline:before,body.dashboard .page-content .header .ion-ios-timer:before,body.dashboard .page-content .header .ion-ios-toggle-outline:before,body.dashboard .page-content .header .ion-ios-toggle:before,body.dashboard .page-content .header .ion-ios-trash-outline:before,body.dashboard .page-content .header .ion-ios-trash:before,body.dashboard .page-content .header .ion-ios-undo-outline:before,body.dashboard .page-content .header .ion-ios-undo:before,body.dashboard .page-content .header .ion-ios-unlocked-outline:before,body.dashboard .page-content .header .ion-ios-unlocked:before,body.dashboard .page-content .header .ion-ios-upload-outline:before,body.dashboard .page-content .header .ion-ios-upload:before,body.dashboard .page-content .header .ion-ios-videocam-outline:before,body.dashboard .page-content .header .ion-ios-videocam:before,body.dashboard .page-content .header .ion-ios-volume-high:before,body.dashboard .page-content .header .ion-ios-volume-low:before,body.dashboard .page-content .header .ion-ios-wineglass-outline:before,body.dashboard .page-content .header .ion-ios-wineglass:before,body.dashboard .page-content .header .ion-ios-world-outline:before,body.dashboard .page-content .header .ion-ios-world:before,body.dashboard .page-content .header .ion-ipad:before,body.dashboard .page-content .header .ion-iphone:before,body.dashboard .page-content .header .ion-ipod:before,body.dashboard .page-content .header .ion-jet:before,body.dashboard .page-content .header .ion-key:before,body.dashboard .page-content .header .ion-knife:before,body.dashboard .page-content .header .ion-laptop:before,body.dashboard .page-content .header .ion-leaf:before,body.dashboard .page-content .header .ion-levels:before,body.dashboard .page-content .header .ion-lightbulb:before,body.dashboard .page-content .header .ion-link:before,body.dashboard .page-content .header .ion-load-a:before,body.dashboard .page-content .header .ion-load-b:before,body.dashboard .page-content .header .ion-load-c:before,body.dashboard .page-content .header .ion-load-d:before,body.dashboard .page-content .header .ion-location:before,body.dashboard .page-content .header .ion-lock-combination:before,body.dashboard .page-content .header .ion-locked:before,body.dashboard .page-content .header .ion-log-in:before,body.dashboard .page-content .header .ion-log-out:before,body.dashboard .page-content .header .ion-loop:before,body.dashboard .page-content .header .ion-magnet:before,body.dashboard .page-content .header .ion-male:before,body.dashboard .page-content .header .ion-man:before,body.dashboard .page-content .header .ion-map:before,body.dashboard .page-content .header .ion-medkit:before,body.dashboard .page-content .header .ion-merge:before,body.dashboard .page-content .header .ion-mic-a:before,body.dashboard .page-content .header .ion-mic-b:before,body.dashboard .page-content .header .ion-mic-c:before,body.dashboard .page-content .header .ion-minus-circled:before,body.dashboard .page-content .header .ion-minus-round:before,body.dashboard .page-content .header .ion-minus:before,body.dashboard .page-content .header .ion-model-s:before,body.dashboard .page-content .header .ion-monitor:before,body.dashboard .page-content .header .ion-more:before,body.dashboard .page-content .header .ion-mouse:before,body.dashboard .page-content .header .ion-music-note:before,body.dashboard .page-content .header .ion-navicon-round:before,body.dashboard .page-content .header .ion-navicon:before,body.dashboard .page-content .header .ion-navigate:before,body.dashboard .page-content .header .ion-network:before,body.dashboard .page-content .header .ion-no-smoking:before,body.dashboard .page-content .header .ion-nuclear:before,body.dashboard .page-content .header .ion-outlet:before,body.dashboard .page-content .header .ion-paintbrush:before,body.dashboard .page-content .header .ion-paintbucket:before,body.dashboard .page-content .header .ion-paper-airplane:before,body.dashboard .page-content .header .ion-paperclip:before,body.dashboard .page-content .header .ion-pause:before,body.dashboard .page-content .header .ion-person-add:before,body.dashboard .page-content .header .ion-person-stalker:before,body.dashboard .page-content .header .ion-person:before,body.dashboard .page-content .header .ion-pie-graph:before,body.dashboard .page-content .header .ion-pin:before,body.dashboard .page-content .header .ion-pinpoint:before,body.dashboard .page-content .header .ion-pizza:before,body.dashboard .page-content .header .ion-plane:before,body.dashboard .page-content .header .ion-planet:before,body.dashboard .page-content .header .ion-play:before,body.dashboard .page-content .header .ion-playstation:before,body.dashboard .page-content .header .ion-plus-circled:before,body.dashboard .page-content .header .ion-plus-round:before,body.dashboard .page-content .header .ion-plus:before,body.dashboard .page-content .header .ion-podium:before,body.dashboard .page-content .header .ion-pound:before,body.dashboard .page-content .header .ion-power:before,body.dashboard .page-content .header .ion-pricetag:before,body.dashboard .page-content .header .ion-pricetags:before,body.dashboard .page-content .header .ion-printer:before,body.dashboard .page-content .header .ion-pull-request:before,body.dashboard .page-content .header .ion-qr-scanner:before,body.dashboard .page-content .header .ion-quote:before,body.dashboard .page-content .header .ion-radio-waves:before,body.dashboard .page-content .header .ion-record:before,body.dashboard .page-content .header .ion-refresh:before,body.dashboard .page-content .header .ion-reply-all:before,body.dashboard .page-content .header .ion-reply:before,body.dashboard .page-content .header .ion-ribbon-a:before,body.dashboard .page-content .header .ion-ribbon-b:before,body.dashboard .page-content .header .ion-sad-outline:before,body.dashboard .page-content .header .ion-sad:before,body.dashboard .page-content .header .ion-scissors:before,body.dashboard .page-content .header .ion-search:before,body.dashboard .page-content .header .ion-settings:before,body.dashboard .page-content .header .ion-share:before,body.dashboard .page-content .header .ion-shuffle:before,body.dashboard .page-content .header .ion-skip-backward:before,body.dashboard .page-content .header .ion-skip-forward:before,body.dashboard .page-content .header .ion-social-android-outline:before,body.dashboard .page-content .header .ion-social-android:before,body.dashboard .page-content .header .ion-social-angular-outline:before,body.dashboard .page-content .header .ion-social-angular:before,body.dashboard .page-content .header .ion-social-apple-outline:before,body.dashboard .page-content .header .ion-social-apple:before,body.dashboard .page-content .header .ion-social-bitcoin-outline:before,body.dashboard .page-content .header .ion-social-bitcoin:before,body.dashboard .page-content .header .ion-social-buffer-outline:before,body.dashboard .page-content .header .ion-social-buffer:before,body.dashboard .page-content .header .ion-social-chrome-outline:before,body.dashboard .page-content .header .ion-social-chrome:before,body.dashboard .page-content .header .ion-social-codepen-outline:before,body.dashboard .page-content .header .ion-social-codepen:before,body.dashboard .page-content .header .ion-social-css3-outline:before,body.dashboard .page-content .header .ion-social-css3:before,body.dashboard .page-content .header .ion-social-designernews-outline:before,body.dashboard .page-content .header .ion-social-designernews:before,body.dashboard .page-content .header .ion-social-dribbble-outline:before,body.dashboard .page-content .header .ion-social-dribbble:before,body.dashboard .page-content .header .ion-social-dropbox-outline:before,body.dashboard .page-content .header .ion-social-dropbox:before,body.dashboard .page-content .header .ion-social-euro-outline:before,body.dashboard .page-content .header .ion-social-euro:before,body.dashboard .page-content .header .ion-social-facebook-outline:before,body.dashboard .page-content .header .ion-social-facebook:before,body.dashboard .page-content .header .ion-social-foursquare-outline:before,body.dashboard .page-content .header .ion-social-foursquare:before,body.dashboard .page-content .header .ion-social-freebsd-devil:before,body.dashboard .page-content .header .ion-social-github-outline:before,body.dashboard .page-content .header .ion-social-github:before,body.dashboard .page-content .header .ion-social-google-outline:before,body.dashboard .page-content .header .ion-social-google:before,body.dashboard .page-content .header .ion-social-googleplus-outline:before,body.dashboard .page-content .header .ion-social-googleplus:before,body.dashboard .page-content .header .ion-social-hackernews-outline:before,body.dashboard .page-content .header .ion-social-hackernews:before,body.dashboard .page-content .header .ion-social-html5-outline:before,body.dashboard .page-content .header .ion-social-html5:before,body.dashboard .page-content .header .ion-social-instagram-outline:before,body.dashboard .page-content .header .ion-social-instagram:before,body.dashboard .page-content .header .ion-social-javascript-outline:before,body.dashboard .page-content .header .ion-social-javascript:before,body.dashboard .page-content .header .ion-social-linkedin-outline:before,body.dashboard .page-content .header .ion-social-linkedin:before,body.dashboard .page-content .header .ion-social-markdown:before,body.dashboard .page-content .header .ion-social-nodejs:before,body.dashboard .page-content .header .ion-social-octocat:before,body.dashboard .page-content .header .ion-social-pinterest-outline:before,body.dashboard .page-content .header .ion-social-pinterest:before,body.dashboard .page-content .header .ion-social-python:before,body.dashboard .page-content .header .ion-social-reddit-outline:before,body.dashboard .page-content .header .ion-social-reddit:before,body.dashboard .page-content .header .ion-social-rss-outline:before,body.dashboard .page-content .header .ion-social-rss:before,body.dashboard .page-content .header .ion-social-sass:before,body.dashboard .page-content .header .ion-social-skype-outline:before,body.dashboard .page-content .header .ion-social-skype:before,body.dashboard .page-content .header .ion-social-snapchat-outline:before,body.dashboard .page-content .header .ion-social-snapchat:before,body.dashboard .page-content .header .ion-social-tumblr-outline:before,body.dashboard .page-content .header .ion-social-tumblr:before,body.dashboard .page-content .header .ion-social-tux:before,body.dashboard .page-content .header .ion-social-twitch-outline:before,body.dashboard .page-content .header .ion-social-twitch:before,body.dashboard .page-content .header .ion-social-twitter-outline:before,body.dashboard .page-content .header .ion-social-twitter:before,body.dashboard .page-content .header .ion-social-usd-outline:before,body.dashboard .page-content .header .ion-social-usd:before,body.dashboard .page-content .header .ion-social-vimeo-outline:before,body.dashboard .page-content .header .ion-social-vimeo:before,body.dashboard .page-content .header .ion-social-whatsapp-outline:before,body.dashboard .page-content .header .ion-social-whatsapp:before,body.dashboard .page-content .header .ion-social-windows-outline:before,body.dashboard .page-content .header .ion-social-windows:before,body.dashboard .page-content .header .ion-social-wordpress-outline:before,body.dashboard .page-content .header .ion-social-wordpress:before,body.dashboard .page-content .header .ion-social-yahoo-outline:before,body.dashboard .page-content .header .ion-social-yahoo:before,body.dashboard .page-content .header .ion-social-yen-outline:before,body.dashboard .page-content .header .ion-social-yen:before,body.dashboard .page-content .header .ion-social-youtube-outline:before,body.dashboard .page-content .header .ion-social-youtube:before,body.dashboard .page-content .header .ion-soup-can-outline:before,body.dashboard .page-content .header .ion-soup-can:before,body.dashboard .page-content .header .ion-speakerphone:before,body.dashboard .page-content .header .ion-speedometer:before,body.dashboard .page-content .header .ion-spoon:before,body.dashboard .page-content .header .ion-star:before,body.dashboard .page-content .header .ion-stats-bars:before,body.dashboard .page-content .header .ion-steam:before,body.dashboard .page-content .header .ion-stop:before,body.dashboard .page-content .header .ion-thermometer:before,body.dashboard .page-content .header .ion-thumbsdown:before,body.dashboard .page-content .header .ion-thumbsup:before,body.dashboard .page-content .header .ion-toggle-filled:before,body.dashboard .page-content .header .ion-toggle:before,body.dashboard .page-content .header .ion-transgender:before,body.dashboard .page-content .header .ion-trash-a:before,body.dashboard .page-content .header .ion-trash-b:before,body.dashboard .page-content .header .ion-trophy:before,body.dashboard .page-content .header .ion-tshirt-outline:before,body.dashboard .page-content .header .ion-tshirt:before,body.dashboard .page-content .header .ion-umbrella:before,body.dashboard .page-content .header .ion-university:before,body.dashboard .page-content .header .ion-unlocked:before,body.dashboard .page-content .header .ion-upload:before,body.dashboard .page-content .header .ion-usb:before,body.dashboard .page-content .header .ion-videocamera:before,body.dashboard .page-content .header .ion-volume-high:before,body.dashboard .page-content .header .ion-volume-low:before,body.dashboard .page-content .header .ion-volume-medium:before,body.dashboard .page-content .header .ion-volume-mute:before,body.dashboard .page-content .header .ion-wand:before,body.dashboard .page-content .header .ion-waterdrop:before,body.dashboard .page-content .header .ion-wifi:before,body.dashboard .page-content .header .ion-wineglass:before,body.dashboard .page-content .header .ion-woman:before,body.dashboard .page-content .header .ion-wrench:before,body.dashboard .page-content .header .ion-xbox:before,body.dashboard .page-content .header .ionicons{margin-right:2px}body.dashboard .page-content .sub-header{font-weight:300;text-transform:uppercase}body.dashboard .page-content .sub-header a{text-transform:none}body.dashboard .page-content .striped-list .striped-list-item{border-bottom:1px solid #f0f0f0;padding:8px 0}body.dashboard .page-content .drag-handle{cursor:move}body.dashboard .page-content .user-grid .user img{border-radius:5px;margin-bottom:15px;border:0}body.dashboard .page-content .user-grid .user .name{font-weight:600}body.dashboard .page-content .user-grid .user .email{color:#444;margin-top:4px}@media (max-width:767px){body.dashboard .page-content .content-wrapper,body.dashboard .page-content .header,body.dashboard .page-content .header.fixed{padding-left:20px;padding-right:20px}}@media (min-width:768px) and (max-width:991px){body.dashboard .page-content .header.fixed{padding-left:120px}}#welcome-modal .modal-dialog{margin-top:65px}#welcome-modal .modal-content .modal-header{border-bottom:0}#welcome-modal .modal-content .modal-body{padding-bottom:50px}#welcome-modal .modal-content .modal-body header{text-align:center;font-weight:600;font-size:22px;color:#444;margin-bottom:23px}#welcome-modal .modal-content .modal-body p{font-size:13px;color:#555;margin:0 auto;width:80%;text-align:center;line-height:20px}#welcome-modal .modal-content .modal-body .go-dashboard{text-align:center;display:block;margin-top:10px}#welcome-modal .modal-content .modal-body .get-started{margin-top:40px}#welcome-modal .modal-content .modal-body .get-started .col-md-4{text-align:center;padding-bottom:50px}#welcome-modal .modal-content .modal-body .get-started .col-md-4 a{color:#666;display:block;margin-top:12px;font-size:13px}#welcome-modal .modal-content .modal-body .get-started .col-md-4 a i{font-size:38px;color:#6DB81C;display:block}#welcome-modal .modal-content .modal-body .get-started .col-md-4 a:hover{text-decoration:none;color:#999}body.login .form-bg{border-radius:10px;margin:60px auto auto;padding:30px;width:320px;border:1px solid rgba(0,0,0,.1);box-shadow:0 20px 30px rgba(0,0,0,.2);background-color:#fff}body.login .logo{margin-bottom:30px}body.login .logo img{margin:0 auto}body.login .login-input{height:45px}body.login i{font-size:22px}body.login .btn.btn-white{background-color:#fff;transition:background-color .5s ease}body.login .btn.btn-white.btn-trans{background-color:transparent;border:1px solid #fff;border-radius:4px;color:#fff}body.login .btn.btn-white.btn-trans:hover{background-color:#fff;color:#7ED321}.setup-page{padding-top:60px}.setup-page .logo{display:block;margin:0 auto 30px}.setup-page .steps{margin:0 auto 20px;border-radius:2px 2px 0 0}.setup-page .steps .step{padding:20px 0;text-align:center;position:relative;font-size:13px}.setup-page .steps .step:not(:last-child):after{content:'';position:absolute;bottom:31px;left:55%;display:block;height:1px;background:#94A1B8;width:100%}.setup-page .steps .step span{width:23px;height:23px;display:block;position:relative;margin:13px auto 0;border-radius:25px;background:#f0f3f4;border:1px solid #94A1B8;transition:all .2s linear}.setup-page .steps .step.active span{background:#7ED321}.setup-page .setup-success{text-align:center}.setup-page .setup-success i{font-size:47px}.setup-page .setup-success h3{margin-top:25px;font-size:21px;color:#556579}.setup-page .setup-success .btn{margin-top:40px}.component-inline-update{padding-top:8px}.component-inline-update label{display:initial;font-weight:400}.component-group-name{font-size:18px;padding-left:10px}.component-group-other{font-size:18px}.stats-widget{text-align:center;margin-bottom:30px;background-color:#fff;border:1px solid #eee}.stats-widget.full-stats-block .stats-bottom{border-top:0!important;color:#fff;position:relative;margin-top:-1px;z-index:1000}.stats-widget .stats-top{padding:20px}.stats-widget .stats-top>span{display:block;text-align:center}.stats-widget .stats-top>span.stats-value{font-size:24px;font-weight:400}.stats-widget .stats-top>span.stats-label{padding-top:5px;font-size:14px;font-weight:300;color:#777}.stats-widget .stats-body,.stats-widget .stats-chart{margin-top:-20px;padding-top:10px}.stats-widget .stats-body .list-group{border:none;padding-bottom:0;margin-bottom:0}.stats-widget .stats-body .list-group .list-group-item{border-right:none;border-left:none;border-color:#eee}.stats-widget .stats-body .list-group .list-group-item:last-child{border-bottom:none}.stats-widget .stats-bottom{border-top:#eee 1px solid;color:#777;padding:12px 10px;text-align:center;background-color:#f9f9f9}.stats-widget .stats-bottom.bg-green{background-color:#7ED321;color:#fff}.stats-widget .stats-bottom.bg-blue{background-color:#3498db;color:#fff}.stats-widget .stats-bottom.bg-red{background-color:#ff6f6f;color:#fff}.stats-widget .stats-bottom.bg-teal{background-color:#0dccc0;color:#fff}.minicolors{position:relative}.minicolors-sprite{background-image:url(data:image/png;base64,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)}.minicolors-no-data-uris .minicolors-sprite{background-image:url(jquery.minicolors.png)}.minicolors-swatch{position:absolute;vertical-align:middle;background-position:-80px 0;border:1px solid #ccc;cursor:text;padding:0;margin:0;display:inline-block}.minicolors-swatch-color{position:absolute;top:0;left:0;right:0;bottom:0}.minicolors input[type=hidden]+.minicolors-swatch{width:28px;position:static;cursor:pointer}.minicolors input[type=hidden][disabled]+.minicolors-swatch{cursor:default}.minicolors-panel{position:absolute;width:173px;height:152px;background:#fff;border:1px solid #CCC;box-shadow:0 0 20px rgba(0,0,0,.2);z-index:99999;display:none}.minicolors-panel.minicolors-visible{display:block}.minicolors-position-top .minicolors-panel{top:-154px}.minicolors-position-right .minicolors-panel{right:0}.minicolors-position-bottom .minicolors-panel{top:auto}.minicolors-position-left .minicolors-panel{left:0}.minicolors-with-opacity .minicolors-panel{width:194px}.minicolors .minicolors-grid{position:absolute;top:1px;left:1px;width:150px;height:150px;background-position:-120px 0;cursor:crosshair}.minicolors .minicolors-grid-inner{position:absolute;top:0;left:0;width:150px;height:150px}.minicolors-slider-saturation .minicolors-grid{background-position:-420px 0}.minicolors-slider-saturation .minicolors-grid-inner{background-position:-270px 0;background-image:inherit}.minicolors-slider-brightness .minicolors-grid{background-position:-570px 0}.minicolors-slider-brightness .minicolors-grid-inner{background-color:#000}.minicolors-slider-wheel .minicolors-grid{background-position:-720px 0}.minicolors-opacity-slider,.minicolors-slider{position:absolute;top:1px;left:152px;width:20px;height:150px;background-color:#fff;background-position:0 0;cursor:row-resize}.minicolors-slider-saturation .minicolors-slider{background-position:-60px 0}.minicolors-slider-brightness .minicolors-slider,.minicolors-slider-wheel .minicolors-slider{background-position:-20px 0}.minicolors-opacity-slider{left:173px;background-position:-40px 0;display:none}.minicolors-with-opacity .minicolors-opacity-slider{display:block}.minicolors-grid .minicolors-picker{position:absolute;top:70px;left:70px;width:12px;height:12px;border:1px solid #000;border-radius:10px;margin-top:-6px;margin-left:-6px;background:0 0}.minicolors-grid .minicolors-picker>div{position:absolute;top:0;left:0;width:8px;height:8px;border-radius:8px;border:2px solid #fff;box-sizing:content-box}.minicolors-picker{position:absolute;top:0;left:0;width:18px;height:2px;background:#fff;border:1px solid #000;margin-top:-2px}.minicolors-inline{display:inline-block}.minicolors-inline .minicolors-input{display:none!important}.minicolors-inline .minicolors-panel{position:relative;top:auto;left:auto;box-shadow:none;z-index:auto;display:inline-block}.minicolors-theme-default .minicolors-swatch{top:5px;left:5px;width:18px;height:18px}.minicolors-theme-default.minicolors-position-right .minicolors-swatch{left:auto;right:5px}.minicolors-theme-default.minicolors{width:auto;display:inline-block}.minicolors-theme-default .minicolors-input{height:20px;width:auto;display:inline-block;padding-left:26px}.minicolors-theme-default.minicolors-position-right .minicolors-input{padding-right:26px;padding-left:inherit}.minicolors-theme-bootstrap .minicolors-swatch{z-index:2;top:3px;left:3px;width:28px;height:28px;border-radius:3px}.minicolors-theme-bootstrap .minicolors-swatch-color{border-radius:inherit}.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch{left:auto;right:3px}.minicolors-theme-bootstrap .minicolors-input{float:none;padding-left:44px}.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input{padding-right:44px;padding-left:12px}.minicolors-theme-bootstrap .input-group-lg>.input-group-btn>.minicolors-input.btn+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-lg>.minicolors-input.form-control+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-lg>.minicolors-input.input-group-addon+.minicolors-swatch,.minicolors-theme-bootstrap .minicolors-input.input-lg+.minicolors-swatch{top:4px;left:4px;width:37px;height:37px;border-radius:5px}.minicolors-theme-bootstrap .input-group-sm>.input-group-btn>.minicolors-input.btn+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-sm>.minicolors-input.form-control+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-sm>.minicolors-input.input-group-addon+.minicolors-swatch,.minicolors-theme-bootstrap .minicolors-input.input-sm+.minicolors-swatch{width:24px;height:24px}.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input{border-top-left-radius:0;border-bottom-left-radius:0}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format("woff")}.markdown-body{color:#24292e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2::before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-mi2{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body hr::after,.markdown-body hr::before,.markdown-body::after,.markdown-body::before{display:table;content:""}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects;color:#0366d6;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body h1{margin:.67em 0}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body input{font:inherit;margin:0;overflow:visible;font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body td,.markdown-body th{padding:0}.markdown-body blockquote{margin:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace}.markdown-body pre{font:12px SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;word-wrap:normal}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:0}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{overflow:hidden;background:#e1e4e8;height:.25em;padding:0;margin:24px 0;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{font-size:2em}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body code::after,.markdown-body code::before{letter-spacing:-.2em;content:"\00a0"}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:0 0;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code::after,.markdown-body pre code::before{content:normal}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.swal2-container,body.swal2-iosfix{position:fixed;left:0;right:0}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}body.swal2-shown{overflow-y:hidden}.swal2-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;top:0;bottom:0;padding:10px;background-color:transparent;z-index:1060}.swal2-container.swal2-fade{transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-modal{background-color:#fff;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border-radius:5px;box-sizing:border-box;text-align:center;margin:auto;overflow-x:hidden;overflow-y:auto;display:none;position:relative;max-width:100%}.swal2-modal:focus{outline:0}.swal2-modal.swal2-loading{overflow-y:hidden}.swal2-modal .swal2-title{color:#595959;font-size:30px;text-align:center;font-weight:600;text-transform:none;position:relative;margin:0 0 .4em;padding:0;display:block;word-wrap:break-word}.swal2-modal .swal2-buttonswrapper{margin-top:15px}.swal2-modal .swal2-buttonswrapper:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4;cursor:no-drop}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;border:4px solid transparent;width:40px;height:40px;padding:0;margin:7.5px;vertical-align:top;background-color:transparent!important;color:transparent;cursor:default;border-radius:100%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-cancel{margin-left:30px;margin-right:30px}.swal2-modal .swal2-buttonswrapper.swal2-loading :not(.swal2-styled).swal2-confirm::after{display:inline-block;content:'';margin-left:5px;vertical-align:-1px;height:15px;width:15px;border:3px solid #999;box-shadow:1px 1px 1px #fff;border-right-color:transparent;border-radius:50%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal}.swal2-modal .swal2-checkbox input,.swal2-modal .swal2-checkbox span,.swal2-modal .swal2-radio input,.swal2-modal .swal2-radio span{vertical-align:middle}.swal2-modal .swal2-styled{border:0;border-radius:3px;box-shadow:none;color:#fff;cursor:pointer;font-size:17px;font-weight:500;margin:15px 5px 0;padding:10px 32px}.swal2-modal .swal2-styled:focus{outline:0;box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4)}.swal2-modal .swal2-image{margin:20px auto;max-width:100%}.swal2-modal .swal2-close{background:0 0;border:0;margin:0;padding:0;width:38px;height:40px;font-size:36px;line-height:40px;font-family:serif;position:absolute;top:5px;right:8px;cursor:pointer;color:#ccc;transition:color .1s ease}.swal2-modal .swal2-close:hover{color:#d55}.swal2-modal>.swal2-checkbox,.swal2-modal>.swal2-file,.swal2-modal>.swal2-input,.swal2-modal>.swal2-radio,.swal2-modal>.swal2-select,.swal2-modal>.swal2-textarea{display:none}.swal2-modal .swal2-content{font-size:18px;text-align:center;font-weight:300;position:relative;float:none;margin:0;padding:0;line-height:normal;color:#545454;word-wrap:break-word}.swal2-modal .swal2-checkbox,.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-radio,.swal2-modal .swal2-select,.swal2-modal .swal2-textarea{margin:20px auto}.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-textarea{width:100%;box-sizing:border-box;font-size:18px;border-radius:3px;border:1px solid #d9d9d9;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);transition:border-color .3s,box-shadow .3s}.swal2-modal .swal2-file.swal2-inputerror,.swal2-modal .swal2-input.swal2-inputerror,.swal2-modal .swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-modal .swal2-file:focus,.swal2-modal .swal2-input:focus,.swal2-modal .swal2-textarea:focus{outline:0;border:1px solid #b4dbed;box-shadow:0 0 3px #c4e6f5}.swal2-modal .swal2-file::-webkit-input-placeholder,.swal2-modal .swal2-input::-webkit-input-placeholder,.swal2-modal .swal2-textarea::-webkit-input-placeholder{color:#ccc}.swal2-modal .swal2-file:-ms-input-placeholder,.swal2-modal .swal2-input:-ms-input-placeholder,.swal2-modal .swal2-textarea:-ms-input-placeholder{color:#ccc}.swal2-modal .swal2-file::placeholder,.swal2-modal .swal2-input::placeholder,.swal2-modal .swal2-textarea::placeholder{color:#ccc}.swal2-modal .swal2-range input{float:left;width:80%}.swal2-modal .swal2-range output{float:right;width:20%;font-size:20px;font-weight:600;text-align:center}.swal2-modal .swal2-range input,.swal2-modal .swal2-range output{height:43px;line-height:43px;vertical-align:middle;margin:20px auto;padding:0}.swal2-modal .swal2-input{height:43px;padding:0 12px}.swal2-modal .swal2-input[type=number]{max-width:150px}.swal2-modal .swal2-file{font-size:20px}.swal2-modal .swal2-textarea{height:108px;padding:12px}.swal2-modal .swal2-select{color:#545454;font-size:inherit;padding:5px 10px;min-width:40%;max-width:100%}.swal2-modal .swal2-radio{border:0}.swal2-modal .swal2-radio label:not(:first-child){margin-left:20px}.swal2-modal .swal2-radio input{margin:0 3px 0 0}.swal2-modal .swal2-checkbox{color:#545454}.swal2-modal .swal2-validationerror{background-color:#f0f0f0;margin:0 -20px;overflow:hidden;padding:10px;color:#807f7f;font-size:16px;font-weight:300;display:none}.swal2-modal .swal2-validationerror::before{content:'!';display:inline-block;width:24px;height:24px;border-radius:50%;background-color:#ea7d7d;color:#fff;line-height:24px;text-align:center;margin-right:10px}.swal2-icon.swal2-info,.swal2-icon.swal2-question,.swal2-icon.swal2-warning{font-size:60px;line-height:80px;text-align:center}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}.swal2-icon{width:80px;height:80px;border:4px solid transparent;border-radius:50%;margin:20px auto 30px;padding:0;position:relative;box-sizing:content-box;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;display:block}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}.swal2-icon.swal2-warning{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#f8bb86;border-color:#facea8}.swal2-icon.swal2-info{font-family:'Open Sans',sans-serif;color:#3fc3ee;border-color:#9de0f6}.swal2-icon.swal2-question{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#87adbd;border-color:#c9dae1}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{border-radius:50%;position:absolute;width:60px;height:120px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px}.swal2-icon.swal2-success .swal2-success-ring{width:80px;height:80px;border:4px solid rgba(165,220,134,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal2-icon.swal2-success .swal2-success-fix{width:7px;height:90px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-progresssteps{font-weight:600;margin:0 0 20px;padding:0}.swal2-progresssteps li{display:inline-block;position:relative}ul.messenger .messenger-message.messenger-hidden,ul.messenger .messenger-spinner,ul.messenger.messenger-empty{display:none}.swal2-progresssteps .swal2-progresscircle{background:#3085d6;border-radius:2em;color:#fff;height:2em;line-height:2em;text-align:center;width:2em;z-index:20}.swal2-progresssteps .swal2-progresscircle:first-child{margin-left:0}.swal2-progresssteps .swal2-progresscircle:last-child{margin-right:0}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep{background:#3085d6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progresscircle,.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progressline{background:#add8e6}.swal2-progresssteps .swal2-progressline{background:#3085d6;height:.4em;margin:0 -1px;z-index:10}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}.swal2-show{-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:hideSweetAlert .15s forwards;animation:hideSweetAlert .15s forwards}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}@-webkit-keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@-webkit-keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@-webkit-keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}.swal2-animate-success-line-tip{-webkit-animation:animate-success-tip .75s;animation:animate-success-tip .75s}.swal2-animate-success-line-long{-webkit-animation:animate-success-long .75s;animation:animate-success-long .75s}.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}@-webkit-keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}.swal2-animate-error-icon{-webkit-animation:animate-error-icon .5s;animation:animate-error-icon .5s}@-webkit-keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal2-animate-x-mark{-webkit-animation:animate-x-mark .5s;animation:animate-x-mark .5s}@-webkit-keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swal2-modal button{margin-right:8px}ul.messenger,ul.messenger>li{margin:0;padding:0}ul.messenger>li{list-style:none}ul.messenger .messenger-message{overflow:hidden}ul.messenger .messenger-message .messenger-actions a,ul.messenger .messenger-message .messenger-phrase{padding-right:5px}ul.messenger .messenger-message .messenger-actions{float:right}ul.messenger.messenger-fixed .message .messenger-actions,ul.messenger.messenger-fixed.messenger-on-left .messenger-actions,ul.messenger.messenger-fixed.messenger-on-right .messenger-actions{float:left}ul.messenger .messenger-message .messenger-actions a{cursor:pointer;text-decoration:underline}ul.messenger .messenger-message ol,ul.messenger .messenger-message ul{margin:10px 18px 0}ul.messenger.messenger-fixed{position:fixed;z-index:10000}ul.messenger.messenger-fixed .messenger-message{min-width:0;box-sizing:border-box}ul.messenger.messenger-fixed.messenger-on-top{top:20px}ul.messenger.messenger-fixed.messenger-on-bottom{bottom:20px}ul.messenger.messenger-fixed.messenger-on-bottom,ul.messenger.messenger-fixed.messenger-on-top{left:50%;width:600px;margin-left:-300px}@media (max-width:960px){ul.messenger.messenger-fixed.messenger-on-bottom,ul.messenger.messenger-fixed.messenger-on-top{left:10%;width:80%;margin-left:0}}ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-right,ul.messenger.messenger-fixed.messenger-on-top.messenger-on-right{right:20px;left:auto}ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-left,ul.messenger.messenger-fixed.messenger-on-top.messenger-on-left{left:20px;margin-left:0}ul.messenger.messenger-fixed.messenger-on-left,ul.messenger.messenger-fixed.messenger-on-right{width:350px}@-webkit-keyframes ui-spinner-rotate-right{0%{-webkit-transform:rotate(0)}25%,50%{-webkit-transform:rotate(180deg)}100%,75%{-webkit-transform:rotate(360deg)}}@-webkit-keyframes ui-spinner-rotate-left{0%,25%{-webkit-transform:rotate(0)}50%,75%{-webkit-transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes ui-spinner-rotate-right{0%{-webkit-transform:rotate(0);transform:rotate(0)}25%,50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%,75%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ui-spinner-rotate-left{0%,25%{-webkit-transform:rotate(0);transform:rotate(0)}50%,75%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.messenger-spinner{position:relative;border-radius:100%}ul.messenger.messenger-spinner-active .messenger-spinner .messenger-spinner{display:block}.messenger-spinner .messenger-spinner-side{width:50%;height:100%;overflow:hidden;position:absolute}.messenger-spinner .messenger-spinner-side .messenger-spinner-fill{border-radius:999px;position:absolute;width:100%;height:100%;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.messenger-spinner .messenger-spinner-side-left{left:0}.messenger-spinner .messenger-spinner-side-left .messenger-spinner-fill{left:100%;border-top-left-radius:0;border-bottom-left-radius:0;-webkit-animation-name:ui-spinner-rotate-left;animation-name:ui-spinner-rotate-left;-webkit-transform-origin:0 50%;transform-origin:0 50%}.messenger-spinner .messenger-spinner-side-right{left:50%}.messenger-spinner .messenger-spinner-side-right .messenger-spinner-fill{left:-100%;border-top-right-radius:0;border-bottom-right-radius:0;-webkit-animation-name:ui-spinner-rotate-right;animation-name:ui-spinner-rotate-right;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}ul.messenger-theme-air{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none;font-family:Raleway,sans-serif}ul.messenger-theme-air .messenger-message{transition:background-color .4s;border-radius:5px;box-shadow:inset 0 0 0 1px #fff,inset 0 2px #fff,0 0 0 1px rgba(0,0,0,.1),0 1px rgba(0,0,0,.2);border:0;background-color:#fff;position:relative;margin-bottom:1em;font-size:13px;color:#666;font-weight:500;padding:10px 30px 11px 46px}ul.messenger-theme-air .messenger-message:hover{background-color:#fff}ul.messenger-theme-air .messenger-message .messenger-close{position:absolute;top:0;right:0;color:#888;opacity:1;font-weight:700;display:block;font-size:20px;line-height:20px;padding:8px 10px 7px 7px;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}ul.messenger-theme-air .messenger-message .messenger-close:hover{color:#444}ul.messenger-theme-air .messenger-message .messenger-close:active{color:#222}ul.messenger-theme-air .messenger-message .messenger-actions{float:none;margin-top:10px}ul.messenger-theme-air .messenger-message .messenger-actions a{box-shadow:0 0 0 1px rgba(0,0,0,.1),inset 0 1px rgba(255,255,255,.05);border-radius:4px;text-decoration:none;display:inline-block;color:#888;margin-right:10px;padding:3px 10px 5px;text-transform:capitalize}ul.messenger-theme-air .messenger-message .messenger-actions a:hover{box-shadow:0 0 0 1px rgba(0,0,0,.1),inset 0 1px rgba(255,255,255,.15);color:#444}ul.messenger-theme-air .messenger-message .messenger-actions a:active{box-shadow:0 0 0 1px rgba(0,0,0,.18),inset 0 1px rgba(0,0,0,.05);background:rgba(0,0,0,.04);color:#444}ul.messenger-theme-air .messenger-message .messenger-actions .messenger-phrase{display:none}ul.messenger-theme-air .messenger-message .messenger-message-inner:before{box-shadow:inset 0 1px 3px rgba(0,0,0,.3);border-radius:50%;position:absolute;left:17px;display:block;content:" ";top:50%;margin-top:-8px;height:13px;width:13px;z-index:20}ul.messenger-theme-air .messenger-message.alert-success .messenger-message-inner:before{background-color:#5fca4a}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner{width:24px;height:24px;background:0 0}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner .messenger-spinner-side .messenger-spinner-fill{background:#dd6a45;-webkit-animation-duration:20s;animation-duration:20s;opacity:1}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner:after{content:"";background:#fff;position:absolute;width:19px;height:19px;border-radius:50%;top:2px;left:2px;display:block}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner{width:24px;height:24px;background:0 0}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner .messenger-spinner-side .messenger-spinner-fill{background:#dd6a45;-webkit-animation-duration:600s;animation-duration:600s;opacity:1}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner:after{content:"";background:#fff;position:absolute;width:19px;height:19px;border-radius:50%;top:2px;left:2px;display:block}ul.messenger-theme-air .messenger-message.alert-error .messenger-message-inner:before{background-color:#dd6a45}ul.messenger-theme-air .messenger-message.alert-info .messenger-message-inner:before{background-color:#61c4b8}ul.messenger-theme-air .messenger-spinner{display:block;position:absolute;left:12px;top:50%;margin-top:-13px;height:24px;width:24px;z-index:10}/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT -Copyright (c) 2015 Daniel Eden -*/.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:after,.bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action=clear]::after{content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action=today]::after{content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:3px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e8e8e8}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#999}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#e8e8e8;cursor:pointer}.bootstrap-datetimepicker-widget table td.new,.bootstrap-datetimepicker-widget table td.old{color:#999}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#7ED321;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#7ED321;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:3px}.bootstrap-datetimepicker-widget table td span:hover{background:#e8e8e8}.bootstrap-datetimepicker-widget table td span.active{background-color:#7ED321;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td span.old{color:#999}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.input-group.date .input-group-addon{cursor:pointer}.strengthify-wrapper>*{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;transition:all .5s ease-in-out}.strengthify-wrapper{position:relative}.strengthify-bg,.strengthify-container,.strengthify-separator,.strengthify-wrapper{height:8px}.strengthify-bg,.strengthify-container{display:block;position:absolute;width:100%}.strengthify-bg{background-color:#eee}.strengthify-separator{display:inline-block;position:absolute;background-color:#fff;width:2px;z-index:10}.password-bad{background-color:#ff6f6f}.password-medium{background-color:#F7CA18}.password-good{background-color:#7ED321}.sortable-chosen{border:1px solid #e8e8e8!important;background-color:#f0f3f4} \ No newline at end of file diff --git a/public/dist/css/dashboard/dashboard.css b/public/dist/css/dashboard/dashboard.css deleted file mode 100644 index f6213e82..00000000 --- a/public/dist/css/dashboard/dashboard.css +++ /dev/null @@ -1,21 +0,0 @@ -@charset "UTF-8";/*! - Ionicons, v2.0.1 - Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ - https://twitter.com/benjsperry https://twitter.com/ionicframework - MIT License: https://github.com/driftyco/ionicons - - Android-style icons originally built by Google’s - Material Design Icons: https://github.com/google/material-design-icons - used under CC BY http://creativecommons.org/licenses/by/4.0/ - Modified icons to fit ionicon’s grid from original. -*/@font-face{font-family:Ionicons;src:url(../../../fonts/ionicons.eot?v=2.0.1);src:url(../../../fonts/ionicons.eot?v=2.0.1#iefix) format("embedded-opentype"),url(../../../fonts/ionicons.ttf?v=2.0.1) format("truetype"),url(../../../fonts/ionicons.woff?v=2.0.1) format("woff"),url(../../../fonts/ionicons.svg?v=2.0.1#Ionicons) format("svg");font-weight:400;font-style:normal}.ion,.ion-alert-circled:before,.ion-alert:before,.ion-android-alert:before,.ion-android-calendar:before,.ion-android-checkmark-circle:before,.ion-android-open:before,.ion-checkmark-circled:before,.ion-checkmark:before,.ion-code-working:before,.ion-document-text:before,.ion-drag:before,.ion-earth:before,.ion-eye:before,.ion-flag:before,.ion-folder:before,.ion-gear-b:before,.ion-help-circled:before,.ion-help:before,.ion-home:before,.ion-ios-arrow-right:before,.ion-ios-browsers-outline:before,.ion-ios-browsers:before,.ion-ios-circle-filled:before,.ion-ios-email-outline:before,.ion-ios-gear-outline:before,.ion-ios-help-outline:before,.ion-ios-information-outline:before,.ion-ios-keypad:before,.ion-ios-list:before,.ion-ios-minus-outline:before,.ion-ios-paper-outline:before,.ion-ios-people-outline:before,.ion-ios-people:before,.ion-ios-person-outline:before,.ion-ios-pie-outline:before,.ion-ios-plus-outline:before,.ion-ios-unlocked:before,.ion-link:before,.ion-load-c:before,.ion-lock-combination:before,.ion-log-out:before,.ion-monitor:before,.ion-navicon:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-person:before,.ion-speedometer:before,.ion-stats-bars:before,.ion-unlocked:before,.ion-wand:before{display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:"\F101"}.ion-alert-circled:before{content:"\F100"}.ion-android-alert:before{content:"\F35B"}.ion-android-calendar:before{content:"\F2D1"}.ion-android-checkmark-circle:before{content:"\F375"}.ion-android-open:before{content:"\F39C"}.ion-checkmark:before{content:"\F122"}.ion-checkmark-circled:before{content:"\F120"}.ion-code-working:before{content:"\F270"}.ion-document-text:before{content:"\F12E"}.ion-drag:before{content:"\F130"}.ion-earth:before{content:"\F276"}.ion-eye:before{content:"\F133"}.ion-flag:before{content:"\F279"}.ion-folder:before{content:"\F139"}.ion-gear-b:before{content:"\F13E"}.ion-help:before{content:"\F143"}.ion-help-circled:before{content:"\F142"}.ion-home:before{content:"\F144"}.ion-ios-arrow-right:before{content:"\F3D3"}.ion-ios-browsers:before{content:"\F3F0"}.ion-ios-browsers-outline:before{content:"\F3EF"}.ion-ios-circle-filled:before{content:"\F400"}.ion-ios-email-outline:before{content:"\F422"}.ion-ios-gear-outline:before{content:"\F43C"}.ion-ios-help-outline:before{content:"\F445"}.ion-ios-information-outline:before{content:"\F44C"}.ion-ios-keypad:before{content:"\F450"}.ion-ios-list:before{content:"\F454"}.ion-ios-minus-outline:before{content:"\F463"}.ion-ios-paper-outline:before{content:"\F471"}.ion-ios-people:before{content:"\F47C"}.ion-ios-people-outline:before{content:"\F47B"}.ion-ios-person-outline:before{content:"\F47D"}.ion-ios-pie-outline:before{content:"\F483"}.ion-ios-plus-outline:before{content:"\F48A"}.ion-ios-unlocked:before{content:"\F4C9"}.ion-link:before{content:"\F1FE"}.ion-load-c:before{content:"\F29C"}.ion-lock-combination:before{content:"\F4D4"}.ion-log-out:before{content:"\F29F"}.ion-monitor:before{content:"\F20A"}.ion-navicon:before{content:"\F20E"}.ion-paintbrush:before{content:"\F4D5"}.ion-paintbucket:before{content:"\F4D6"}.ion-paper-airplane:before{content:"\F2C3"}.ion-person:before{content:"\F213"}.ion-speedometer:before{content:"\F2B3"}.ion-stats-bars:before{content:"\F2B5"}.ion-unlocked:before{content:"\F254"}.ion-wand:before{content:"\F358"}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format("woff")}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body a{background-color:transparent}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{margin:.67em 0}.markdown-body img{border-style:none}.markdown-body code{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;overflow:visible}.markdown-body input{font:inherit;margin:0;overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{height:0;margin:15px 0;overflow:hidden;background:transparent;border-bottom:1px solid #dfe2e5}.markdown-body hr:after,.markdown-body hr:before{display:table;content:""}.markdown-body hr:after{clear:both}.markdown-body table{border-spacing:0;border-collapse:collapse}.markdown-body td,.markdown-body th{padding:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5{margin-top:0;margin-bottom:0}.markdown-body h1{font-size:32px;font-weight:600}.markdown-body h2{font-size:24px;font-weight:600}.markdown-body h3{font-size:20px;font-weight:600}.markdown-body h4{font-size:16px;font-weight:600}.markdown-body h5{font-size:14px;font-weight:600}.markdown-body p{margin-top:0;margin-bottom:10px}.markdown-body ol,.markdown-body ul{padding-left:0;margin-top:0;margin-bottom:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body ol,.markdown-body p,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e1e4e8;border:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li{word-wrap:break-all}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body table{display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{padding:.2em .4em;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body hr{border-bottom-color:#eee} - -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}details,figcaption,figure,footer,header,main,menu,nav,section{display:block}canvas,progress{display:inline-block;vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}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{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{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-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}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:transparent!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^="#"]:after,a[href^="javascript:"]:after{content:""}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.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}}*,:after,:before{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.428571429;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#67808c;text-decoration:none}a:focus,a:hover{color:#465760;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:4px}.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}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}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,h1,h2,h3,h4,h5{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,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 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,h4,h5{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,h4 .small,h4 small,h5 .small,h5 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}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}.component-inline-update,.text-right{text-align:right}.text-center,body.dashboard .sidebar .sidebar-inner .quick-add-incident{text-align:center}.text-muted{color:#777}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}abbr[data-original-title],abbr[title]{cursor:help}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code{font-family:Menlo,Monaco,Consolas,Courier New,monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:3px}code{padding:2px 4px;font-size:90%}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.container:after,.container:before{display:table;content:" "}.container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row,.setup-page .steps{margin-right:-15px;margin-left:-15px}.row:after,.row:before,.setup-page .steps:after,.setup-page .steps:before{display:table;content:" "}.row:after,.setup-page .steps:after{clear:both}.col-lg-4,.col-lg-6,.col-lg-8,.col-md-3,.col-md-4,.col-md-6,.col-md-9,.col-md-12,.col-sm-1,.col-sm-3,.col-sm-4,.col-sm-8,.col-sm-11,.col-sm-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-6,.col-xs-9,.col-xs-10,.col-xs-12,.setup-page .steps .step{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-6,.col-xs-9,.col-xs-10,.col-xs-12,.setup-page .steps .step{float:left}.col-xs-2{width:16.6666666667%}.col-xs-3,.setup-page .steps .step{width:25%}.col-xs-4{width:33.3333333333%}.col-xs-6{width:50%}.col-xs-9{width:75%}.col-xs-10{width:83.3333333333%}.col-xs-12{width:100%}.col-xs-push-1{left:8.3333333333%}.col-xs-offset-0{margin-left:0}.col-xs-offset-2{margin-left:16.6666666667%}@media (min-width:768px){.col-sm-1,.col-sm-3,.col-sm-4,.col-sm-8,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.3333333333%}.col-sm-3{width:25%}.col-sm-4{width:33.3333333333%}.col-sm-8{width:66.6666666667%}.col-sm-11{width:91.6666666667%}.col-sm-12{width:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-2{margin-left:16.6666666667%}}@media (min-width:992px){.col-md-3,.col-md-4,.col-md-6,.col-md-9,.col-md-12{float:left}.col-md-3{width:25%}.col-md-4{width:33.3333333333%}.col-md-6{width:50%}.col-md-9{width:75%}.col-md-12{width:100%}}@media (min-width:1200px){.col-lg-4,.col-lg-6,.col-lg-8{float:left}.col-lg-4{width:33.3333333333%}.col-lg-6{width:50%}.col-lg-8{width:66.6666666667%}.col-lg-offset-2{margin-left:16.6666666667%}}table{background-color:transparent}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777}caption,th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table .table{background-color:#fff}fieldset{min-width:0;margin:0}fieldset,legend{padding:0;border:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}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}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.form-control{line-height:1.428571429}.form-control{height:34px;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.form-control:focus{outline:0;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::-ms-expand{background-color:transparent;border:0}.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}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox-inline input[type=checkbox],.checkbox input[type=checkbox],.radio-inline input[type=radio],.radio 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.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}.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}.form-horizontal .form-group:after,.form-horizontal .form-group:before{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn.active:focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active:focus,.btn-default.active:hover,.btn-default:active:focus,.btn-default:active:hover,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled]:focus,.btn-default[disabled]:hover,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:#67808c;border-color:#5c727d}.btn-primary:focus{color:#fff;background-color:#51656f;border-color:#262f34}.btn-primary:hover{color:#fff;background-color:#51656f;border-color:#42525a}.btn-primary.active,.btn-primary:active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#51656f;background-image:none;border-color:#42525a}.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#42525a;border-color:#262f34}.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#67808c;border-color:#5c727d}.btn-primary .badge{color:#67808c;background-color:#fff}.btn-success{color:#fff;background-color:#7ed321;border-color:#71bd1e}.btn-success:focus{color:#fff;background-color:#64a71a;border-color:#2f4f0c}.btn-success:hover{color:#fff;background-color:#64a71a;border-color:#518815}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#64a71a;background-image:none;border-color:#518815}.btn-success.active:focus,.btn-success.active:hover,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#518815;border-color:#2f4f0c}.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#7ed321;border-color:#71bd1e}.btn-success .badge{color:#7ed321;background-color:#fff}.btn-info{color:#fff;background-color:#3498db;border-color:#258cd1}.btn-info:focus{color:#fff;background-color:#217dbb;border-color:#124364}.btn-info:hover{color:#fff;background-color:#217dbb;border-color:#1c699d}.btn-info.active,.btn-info:active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#217dbb;background-image:none;border-color:#1c699d}.btn-info.active:focus,.btn-info.active:hover,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#1c699d;border-color:#124364}.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#3498db;border-color:#258cd1}.btn-info .badge{color:#3498db;background-color:#fff}.btn-danger{color:#fff;background-color:#ff6f6f;border-color:#ff5656}.btn-danger:focus{color:#fff;background-color:#ff3c3c;border-color:#d50000}.btn-danger:hover{color:#fff;background-color:#ff3c3c;border-color:#ff1818}.btn-danger.active,.btn-danger:active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#ff3c3c;background-image:none;border-color:#ff1818}.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#ff1818;border-color:#d50000}.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ff6f6f;border-color:#ff5656}.btn-danger .badge{color:#ff6f6f;background-color:#fff}.btn-link{font-weight:400;color:#67808c;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#465760;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-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:4px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.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%}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{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;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;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:#67808c;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}.pull-right>.dropdown-menu{right:0;left:auto}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.btn-group{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn{position:relative;float:left}.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-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{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0}[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.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 .form-control:focus{z-index:3}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control: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:3px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.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),.input-group .form-control:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.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,.input-group .form-control:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn,.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{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:after,.nav:before{display:table;content:" "}.nav:after{clear:both}.nav>li,.nav>li>a{position:relative;display:block}.nav>li>a{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:#67808c}.nav>li>a>img{max-width:none}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:after,.navbar:before{display:table;content:" "}.navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:3px}}.navbar-header:after,.navbar-header:before{display:table;content:" "}.navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1);-webkit-overflow-scrolling:touch}.navbar-collapse:after,.navbar-collapse:before{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}}.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-brand{float:left;height:50px;padding: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{margin-left:-15px}}.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;box-shadow:none}.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-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}@media (min-width:768px){.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:after,.pager:before{display:table;content:" "}.pager:after{clear:both}.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}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#67808c}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#51656f}.label-info{background-color:#3498db}.label-info[href]:focus,.label-info[href]:hover{background-color:#217dbb}.label-danger{background-color:#ff6f6f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#ff3c3c}.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:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.list-group-item.active>.badge{color:#67808c;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:3px}.alert h4{margin-top:0;color:inherit}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissible{padding-right:35px}.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-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.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:3px;border-top-right-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.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.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#67808c;border-color:#67808c}a.list-group-item,button.list-group-item{color:#555}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:3px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-body:after,.panel-body:before{display:table;content:" "}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:2px;border-top-right-radius:2px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:2px;border-top-right-radius:2px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table{margin-bottom:0}.panel>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.panel>.table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.panel-body+.table,.panel>.table+.panel-body{border-top:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.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{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.modal{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{transform:translateY(-25%);transition:transform .3s ease-out}.modal.in .modal-dialog{transform:translate(0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:4px;box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header:after,.modal-header:before{display:table;content:" "}.modal-header:after{clear:both}.modal-header .close{margin-top:-2px}.modal-body{position:relative;padding:15px}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{box-shadow:0 5px 15px rgba(0,0,0,.5)}}.tooltip{position:absolute;z-index:1070;display:block;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;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}.clearfix:after,.clearfix:before{display:table;content:" "}.clearfix:after{clear:both}.pull-right{float:right!important}.hide{display:none!important}.show{display:block!important}.hidden{display:none!important}.visible-sm,.visible-xs,body.dashboard .sidebar .sidebar-inner .quick-add-incident i{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm,body.dashboard .sidebar .sidebar-inner .quick-add-incident i{display:block!important}table.visible-sm{display:table!important}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){.hidden-sm,body.dashboard .sidebar .bottom-menu-sidebar,body.dashboard .sidebar .sidebar-inner .quick-add-incident span,body.dashboard .sidebar .sidebar-inner>ul>li>a>span{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}}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;box-sizing:border-box;touch-action:manipulation;background:#fff;box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08)}.flatpickr-calendar.inline,.flatpickr-calendar.open{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasTime .dayContainer,.flatpickr-calendar .hasWeeks .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:after,.flatpickr-calendar:before{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:after,.flatpickr-calendar.rightMost:before{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:after,.flatpickr-calendar.arrowTop:before{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:after,.flatpickr-calendar.arrowBottom:before{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9);height:28px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;overflow:hidden;flex:1}.flatpickr-months .flatpickr-next-month,.flatpickr-months .flatpickr-prev-month{text-decoration:none;cursor:pointer;position:absolute;top:0;line-height:16px;height:28px;padding:10px;z-index:3;color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9)}.flatpickr-months .flatpickr-next-month.disabled,.flatpickr-months .flatpickr-prev-month.disabled{display:none}.flatpickr-months .flatpickr-next-month i,.flatpickr-months .flatpickr-prev-month i{position:relative}.flatpickr-months .flatpickr-next-month.flatpickr-prev-month,.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-next-month.flatpickr-next-month,.flatpickr-months .flatpickr-prev-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-next-month:hover,.flatpickr-months .flatpickr-prev-month:hover{color:#959ea9}.flatpickr-months .flatpickr-next-month:hover svg,.flatpickr-months .flatpickr-prev-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-next-month svg,.flatpickr-months .flatpickr-prev-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-next-month svg path,.flatpickr-months .flatpickr-prev-month svg path{transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-inner-spin-button,.numInputWrapper input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,.5)}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:6.16px 0 0;line-height:1;height:28px;display:inline-block;text-align:center;transform:translateZ(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0 ;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,.9)}.flatpickr-current-month input.cur-year{background:transparent;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,.5);background:transparent;pointer-events:none}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:flex;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:flex;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,.54);line-height:1;margin:0;text-align:center;display:block;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:flex;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;box-sizing:border-box;display:inline-block;display:flex;flex-wrap:wrap;-ms-flex-wrap:wrap;justify-content:space-around;transform:translateZ(0);opacity:1}.dayContainer+.dayContainer{box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day.nextMonthDay:focus,.flatpickr-day.nextMonthDay:hover,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.today.inRange,.flatpickr-day:focus,.flatpickr-day:hover{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:focus,.flatpickr-day.today:hover{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.endRange,.flatpickr-day.endRange.inRange,.flatpickr-day.endRange.nextMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.endRange:focus,.flatpickr-day.endRange:hover,.flatpickr-day.selected,.flatpickr-day.selected.inRange,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.selected:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange,.flatpickr-day.startRange.inRange,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.startRange:focus,.flatpickr-day.startRange:hover{background:#569ff7;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.endRange.startRange,.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.endRange.endRange,.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)){box-shadow:-10px 0 0 #569ff7}.flatpickr-day.endRange.startRange.endRange,.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.disabled,.flatpickr-day.disabled:hover,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.nextMonthDay,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.prevMonthDay{color:rgba(57,57,57,.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.disabled,.flatpickr-day.disabled:hover{cursor:not-allowed;color:rgba(57,57,57,.1)}.flatpickr-day.week.selected{border-radius:0;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{display:inline-block;float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:flex;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;box-sizing:border-box;overflow:hidden;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:700}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-am-pm,.flatpickr-time .flatpickr-time-separator{height:inherit;display:inline-block;float:left;line-height:inherit;color:#393939;font-weight:700;width:2%;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time .flatpickr-am-pm:focus,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time input:hover{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@keyframes fpFadeInDown{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.flatpickr-calendar{width:auto;min-width:293.75px;padding:10}.flatpickr-calendar.open{z-index:4!important}.flatpickr-calendar .flatpickr-month{min-height:30px}.flatpickr-calendar .flatpickr-current-month,.flatpickr-calendar .flatpickr-next-month,.flatpickr-calendar .flatpickr-prev-month{padding:0;display:flex!important;justify-content:center;align-items:center;height:100%}.flatpickr-calendar .flatpickr-next-month,.flatpickr-calendar .flatpickr-prev-month{border-radius:1rem;padding:.5rem}.flatpickr-calendar .flatpickr-next-month:hover,.flatpickr-calendar .flatpickr-prev-month:hover{background-color:#e8e8e8}.flatpickr-calendar .flatpickr-next-month:hover svg,.flatpickr-calendar .flatpickr-prev-month:hover svg{color:rgba(0,0,0,.9);fill:rgba(0,0,0,.9)}.flatpickr-calendar .flatpickr-current-month .cur-month{margin-left:1rem}.flatpickr-calendar .flatpickr-current-month .cur-month:hover{background:transparent}.flatpickr-calendar .flatpickr-day{line-height:36px}.flatpickr-calendar .flatpickr-day:hover{background-color:#e8e8e8;border-color:#e8e8e8}.flatpickr-calendar .numInputWrapper{width:4rem;margin-left:.5rem}.flatpickr-calendar .numInputWrapper .numInput{padding:0;box-shadow:none}.flatpickr-time{text-align:left}html{position:relative;min-height:100%;-webkit-font-smoothing:antialiased;overflow-y:scroll}body{margin-bottom:60px;padding-bottom:60px}.uppercase{text-transform:uppercase}.margin-bottom{margin-bottom:20px}.no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}label{font-size:14px}textarea{resize:none;overflow:auto}.markdown-control{position:relative}.markdown-control:before{position:absolute;display:block;right:0;bottom:0;width:40px;height:40px;font-size:2em;font-family:Ionicons;content:"\F4E6"}.form-control{display:block;width:100%;height:45px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;box-shadow:none!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control:focus{border-color:#66afe9}@media (max-width:767px){.component-inline .radio-items{text-align:left}.component-inline .radio-items .radio-inline{margin-left:0;width:100%}}.well{border-radius:0}.alert{border-radius:4px;background:#f7ca18;border:2px solid #d5ab07}.alert.alert-success{background-color:#7ed321;border:2px solid #64a71a;color:#fff}.alert.alert-success a{color:#fff;font-weight:700}.alert.alert-info{background:#3498db;border:2px solid #217dbb;color:#fff}.alert.alert-info a{color:#fff;font-weight:700}.alert.alert-danger{background:#ff6f6f;border:2px solid #ff3c3c;color:#fff}.alert.alert-danger a{color:#fff;font-weight:700}.panel-danger{border-color:#ff3c3c}.panel-danger>.panel-heading{color:#fff;background-color:#ff6f6f;border-color:#ff3c3c}.panel-danger>.panel-heading .badge{color:#ff6f6f;background-color:#fff}.panel-info{border-color:#217dbb}.panel-info>.panel-heading{color:#fff;background-color:#3498db;border-color:#217dbb}.panel-info>.panel-heading .badge{color:#3498db;background-color:#fff}.btn.btn-default{color:#333;background:#fff;border:1px solid #e6e6e6}.btn.btn-default.active,.btn.btn-default:active,.btn.btn-default:focus,.btn.btn-default:hover{background:#f2f2f2;border-color:#e6e6e6;color:#333;outline:none;outline-offset:0}.btn.btn-default.disabled,.btn.btn-default.disabled.active,.btn.btn-default.disabled:active,.btn.btn-default.disabled:focus,.btn.btn-default.disabled:hover,.btn.btn-default[disabled],.btn.btn-default[disabled].active,.btn.btn-default[disabled]:active,.btn.btn-default[disabled]:focus,.btn.btn-default[disabled]:hover,fieldset[disabled] .btn.btn-default,fieldset[disabled] .btn.btn-default.active,fieldset[disabled] .btn.btn-default:active,fieldset[disabled] .btn.btn-default:focus,fieldset[disabled] .btn.btn-default:hover{background-color:#fff;border-color:#e6e6e6}.btn.btn-primary{color:#fff;background:#67808c;border:1px solid #51656f}.btn.btn-primary.active,.btn.btn-primary:active,.btn.btn-primary:focus,.btn.btn-primary:hover{background:#5c727d;border-color:#51656f;color:#fff;outline:none;outline-offset:0}.btn.btn-primary.disabled,.btn.btn-primary.disabled.active,.btn.btn-primary.disabled:active,.btn.btn-primary.disabled:focus,.btn.btn-primary.disabled:hover,.btn.btn-primary[disabled],.btn.btn-primary[disabled].active,.btn.btn-primary[disabled]:active,.btn.btn-primary[disabled]:focus,.btn.btn-primary[disabled]:hover,fieldset[disabled] .btn.btn-primary,fieldset[disabled] .btn.btn-primary.active,fieldset[disabled] .btn.btn-primary:active,fieldset[disabled] .btn.btn-primary:focus,fieldset[disabled] .btn.btn-primary:hover{background-color:#748c99;border-color:#51656f}.btn.btn-success{color:#fff;background:#7ed321;border:1px solid #64a71a}.btn.btn-success.active,.btn.btn-success:active,.btn.btn-success:focus,.btn.btn-success:hover{background:#71bd1e;border-color:#64a71a;color:#fff;outline:none;outline-offset:0}.btn.btn-success.disabled,.btn.btn-success.disabled.active,.btn.btn-success.disabled:active,.btn.btn-success.disabled:focus,.btn.btn-success.disabled:hover,.btn.btn-success[disabled],.btn.btn-success[disabled].active,.btn.btn-success[disabled]:active,.btn.btn-success[disabled]:focus,.btn.btn-success[disabled]:hover,fieldset[disabled] .btn.btn-success,fieldset[disabled] .btn.btn-success.active,fieldset[disabled] .btn.btn-success:active,fieldset[disabled] .btn.btn-success:focus,fieldset[disabled] .btn.btn-success:hover{background-color:#8bde2f;border-color:#64a71a}.btn.btn-info{color:#fff;background:#3498db;border:1px solid #217dbb}.btn.btn-info.active,.btn.btn-info:active,.btn.btn-info:focus,.btn.btn-info:hover{background:#258cd1;border-color:#217dbb;color:#fff;outline:none;outline-offset:0}.btn.btn-info.disabled,.btn.btn-info.disabled.active,.btn.btn-info.disabled:active,.btn.btn-info.disabled:focus,.btn.btn-info.disabled:hover,.btn.btn-info[disabled],.btn.btn-info[disabled].active,.btn.btn-info[disabled]:active,.btn.btn-info[disabled]:focus,.btn.btn-info[disabled]:hover,fieldset[disabled] .btn.btn-info,fieldset[disabled] .btn.btn-info.active,fieldset[disabled] .btn.btn-info:active,fieldset[disabled] .btn.btn-info:focus,fieldset[disabled] .btn.btn-info:hover{background-color:#4aa3df;border-color:#217dbb}.btn.btn-danger{color:#fff;background:#ff6f6f;border:1px solid #ff3c3c}.btn.btn-danger.active,.btn.btn-danger:active,.btn.btn-danger:focus,.btn.btn-danger:hover{background:#ff5656;border-color:#ff3c3c;color:#fff;outline:none;outline-offset:0}.btn.btn-danger.disabled,.btn.btn-danger.disabled.active,.btn.btn-danger.disabled:active,.btn.btn-danger.disabled:focus,.btn.btn-danger.disabled:hover,.btn.btn-danger[disabled],.btn.btn-danger[disabled].active,.btn.btn-danger[disabled]:active,.btn.btn-danger[disabled]:focus,.btn.btn-danger[disabled]:hover,fieldset[disabled] .btn.btn-danger,fieldset[disabled] .btn.btn-danger.active,fieldset[disabled] .btn.btn-danger:active,fieldset[disabled] .btn.btn-danger:focus,fieldset[disabled] .btn.btn-danger:hover{background-color:#ff8989;border-color:#ff3c3c}.btn-outline{background-color:transparent;background-image:none!important;color:inherit;transition:all .5s}.btn-default.btn-outline{color:#999}.btn-primary.btn-outline{color:#428bca}.btn-success.btn-outline{color:#5cb85c}.btn-info.btn-outline{color:#5bc0de}.btn-danger.btn-outline{color:#d9534f}.btn-danger.btn-outline:hover,.btn-info.btn-outline:hover,.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover{color:#fff}.pager li>a,.pager li>span{border-radius:3px}body.dashboard{font-family:-apple-system,BlinkMacSystemFont,Open Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:400;font-size:15px;display:table;width:100%;height:100%;table-layout:fixed;line-height:1.42857143;-webkit-font-smoothing:antialiased}body.dashboard .wrapper{padding-left:0;transition:all .5s ease}body.dashboard .wrapper.toggled{padding-left:235px}body.dashboard .wrapper.toggled .sidebar{width:235px}body.dashboard .wrapper.toggled .page-content{position:absolute;margin-right:-235px}@media (min-width:768px) and (max-width:991px){body.dashboard .wrapper{padding-left:80px}}@media (min-width:991px){body.dashboard .wrapper{padding-left:235px}body.dashboard .wrapper.toggled{padding-left:0}body.dashboard .wrapper.toggled .page-content{position:relative;margin-right:0}}body.dashboard .alerts .alert h5{margin-top:5px}body.dashboard .wrapper{width:100%;display:table;height:100%;table-layout:fixed}body.dashboard .navbar{z-index:999;border-radius:0;border:none;border-bottom:1px solid #00695c;background:#009c89;margin:0}body.dashboard .navbar a,body.dashboard .navbar a:active,body.dashboard .navbar a:visited{color:#fff}body.dashboard .navbar a:active:hover,body.dashboard .navbar a:hover,body.dashboard .navbar a:visited:hover{color:#e9e9e9}body.dashboard .navbar .navbar-collapse{background:#009c89}body.dashboard .navbar a.navbar-brand{padding:34px 21px;line-height:0;font-size:1.1em;letter-spacing:.04em;font-weight:600;text-transform:uppercase}@media (min-width:991px){body.dashboard .navbar a.navbar-brand span{padding-right:10px}body.dashboard .navbar a.navbar-brand span:before{font-family:FontAwesome;content:"\F060"}}body.dashboard .navbar .nav li a{height:68px;line-height:35px}body.dashboard .sidebar{position:fixed;left:235px;width:0;height:100%;margin-left:-235px;overflow-y:auto;background:#333;box-shadow:inset 0 -2px 3px rgba(0,0,0,.25);z-index:1000;transition:all .5s ease}body.dashboard .sidebar .sidebar-inner{position:absolute;top:0;width:235px;margin:0;list-style:none;padding:0 0 64px}body.dashboard .sidebar .sidebar-inner .profile{text-align:center;padding:20px 10px;margin-bottom:0}body.dashboard .sidebar .sidebar-inner .profile .dropdown-toggle{text-decoration:none}body.dashboard .sidebar .sidebar-inner .profile .dropdown-menu{top:108%}body.dashboard .sidebar .sidebar-inner .profile .avatar{width:60px}body.dashboard .sidebar .sidebar-inner .profile .avatar img{border-radius:50%;width:50px}body.dashboard .sidebar .sidebar-inner .profile .username{word-break:break-all;margin-bottom:0}body.dashboard .sidebar .sidebar-inner .profile a{color:#fff;text-decoration:none}body.dashboard .sidebar .sidebar-inner .quick-add-incident{padding:10px}body.dashboard .sidebar .sidebar-inner ul{clear:both;margin:0;padding:0;list-style:none}body.dashboard .sidebar .sidebar-inner ul li{font-size:.9em}body.dashboard .sidebar .sidebar-inner ul li:focus,body.dashboard .sidebar .sidebar-inner ul li:hover{background:#404040!important}body.dashboard .sidebar .sidebar-inner ul li.active{background:#4d4d4d}body.dashboard .sidebar .sidebar-inner ul li.active:hover{background:#595959!important}body.dashboard .sidebar .sidebar-inner ul li.active a{padding-top:14px;padding-bottom:14px;border-top:1px solid #666;border-bottom:1px solid #666;color:#fff}body.dashboard .sidebar .sidebar-inner ul li.active a:focus,body.dashboard .sidebar .sidebar-inner ul li.active a:hover{text-decoration:none}body.dashboard .sidebar .sidebar-inner ul li a{display:block;padding:15px;color:#fff}body.dashboard .sidebar .sidebar-inner ul li a i{font-size:18px;min-width:17px;text-align:center;position:relative;top:1px;margin-right:5px}body.dashboard .sidebar .sidebar-inner ul li a:focus,body.dashboard .sidebar .sidebar-inner ul li a:hover{text-decoration:none}body.dashboard .sidebar .sidebar-inner ul li a span.label{float:right;margin:3px 0}body.dashboard .sidebar .sidebar-inner ul li a span.label.label-info{background-color:#6db81c}body.dashboard .sidebar .bottom-menu-sidebar{position:fixed;bottom:0;width:235px;z-index:999}body.dashboard .sidebar .bottom-menu-sidebar ul>li{float:left;display:block;width:33.333%;border-right:1px solid #ddd;border-top:1px solid #ddd}body.dashboard .sidebar .bottom-menu-sidebar ul>li a{color:#333;display:block;position:relative;text-align:center;padding:6px 0;background:#fff}@media (min-width:767px){body.dashboard .sidebar{width:235px}body.dashboard .wrapper.toggled .sidebar{width:0}}@media (min-width:768px) and (max-width:991px){body.dashboard .sidebar{width:80px;left:150px;margin-left:-150px}body.dashboard .sidebar .sidebar-inner{width:80px}body.dashboard .sidebar .sidebar-inner .profile .avatar img{width:40px}body.dashboard .sidebar .sidebar-inner .quick-add-incident .btn{padding:3px 6px}body.dashboard .sidebar .sidebar-inner .quick-add-incident i{font-size:20px}body.dashboard .sidebar .sidebar-inner>ul>li>a{text-align:center}body.dashboard .sidebar .sidebar-inner>ul>li>a>i{font-size:25px}}body.dashboard .sidebar-toggler{float:left;padding:10px;position:relative;top:-15px;left:-5px;margin-right:10px;cursor:pointer}body.dashboard .sidebar-toggler i{font-size:25px}body.dashboard .sub-sidebar{left:0;top:0;bottom:0;position:fixed;margin-left:228px;width:22%;background:#f0f3f4;border-right:1px solid #e8ecf1}body.dashboard .sub-sidebar h3{margin:0;text-align:center;font-size:19px;padding:30px 15px 15px}body.dashboard .sub-sidebar hr{margin-top:5px;margin-bottom:5px}body.dashboard .sub-sidebar ul.menu{list-style-type:none;padding:0;margin:0}body.dashboard .sub-sidebar ul.menu li a{color:#666;display:block;padding:13px 30px;font-size:15px;transition:all .2s linear;text-decoration:none}body.dashboard .sub-sidebar ul.menu li a.active,body.dashboard .sub-sidebar ul.menu li a:hover{color:#6db81c}body.dashboard .sub-sidebar ul.menu li i{margin-right:5px}body.dashboard .sub-sidebar .sidebar-toggler{position:absolute;top:3px;left:20px;font-size:36px;cursor:pointer}body.dashboard .sub-sidebar+.content-wrapper{top:0;position:relative;margin-left:26%;padding-right:40px!important}@media (max-width:767px){body.dashboard .sub-sidebar{position:relative;margin-left:0;width:100%}body.dashboard .sub-sidebar+.content-wrapper{margin-left:0;padding-left:40px!important;width:100%}}@media (min-width:768px) and (max-width:991px){body.dashboard .sub-sidebar{margin-left:80px;width:25%}body.dashboard .sub-sidebar+.content-wrapper{padding-left:45px!important}}body.dashboard .page-content{width:100%}body.dashboard .page-content .content-wrapper{padding-top:20px;padding-left:40px;padding-right:40px}body.dashboard .page-content .content-wrapper.header-fixed{margin-top:60px}body.dashboard .page-content .content-wrapper textarea[name=stylesheet]{resize:vertical}body.dashboard .page-content .header{position:relative;top:0;left:0;color:#333;background-color:#fff;padding:22px 40px;width:100%;height:70px;font-size:1.2em;border-bottom:1px solid #eee;z-index:99}body.dashboard .page-content .header.sub-header{padding:8px 2px;height:50px}body.dashboard .page-content .header.fixed{position:fixed;padding-left:270px}body.dashboard .page-content .header .btn,body.dashboard .page-content .header button,body.dashboard .page-content .header input{position:relative;top:-4px}body.dashboard .page-content .header input{width:20%}.setup-page body.dashboard .page-content .header+.steps,body.dashboard .page-content .header+.row,body.dashboard .page-content .setup-page .header+.steps{margin-top:23px}body.dashboard .page-content .header h3{color:#444;margin-top:0;text-transform:uppercase}body.dashboard .page-content .header .ion,body.dashboard .page-content .header .ion-alert-circled:before,body.dashboard .page-content .header .ion-alert:before,body.dashboard .page-content .header .ion-android-alert:before,body.dashboard .page-content .header .ion-android-calendar:before,body.dashboard .page-content .header .ion-android-checkmark-circle:before,body.dashboard .page-content .header .ion-android-open:before,body.dashboard .page-content .header .ion-checkmark-circled:before,body.dashboard .page-content .header .ion-checkmark:before,body.dashboard .page-content .header .ion-code-working:before,body.dashboard .page-content .header .ion-document-text:before,body.dashboard .page-content .header .ion-drag:before,body.dashboard .page-content .header .ion-earth:before,body.dashboard .page-content .header .ion-eye:before,body.dashboard .page-content .header .ion-flag:before,body.dashboard .page-content .header .ion-folder:before,body.dashboard .page-content .header .ion-gear-b:before,body.dashboard .page-content .header .ion-help-circled:before,body.dashboard .page-content .header .ion-help:before,body.dashboard .page-content .header .ion-home:before,body.dashboard .page-content .header .ion-ios-arrow-right:before,body.dashboard .page-content .header .ion-ios-browsers-outline:before,body.dashboard .page-content .header .ion-ios-browsers:before,body.dashboard .page-content .header .ion-ios-circle-filled:before,body.dashboard .page-content .header .ion-ios-email-outline:before,body.dashboard .page-content .header .ion-ios-gear-outline:before,body.dashboard .page-content .header .ion-ios-help-outline:before,body.dashboard .page-content .header .ion-ios-information-outline:before,body.dashboard .page-content .header .ion-ios-keypad:before,body.dashboard .page-content .header .ion-ios-list:before,body.dashboard .page-content .header .ion-ios-minus-outline:before,body.dashboard .page-content .header .ion-ios-paper-outline:before,body.dashboard .page-content .header .ion-ios-people-outline:before,body.dashboard .page-content .header .ion-ios-people:before,body.dashboard .page-content .header .ion-ios-person-outline:before,body.dashboard .page-content .header .ion-ios-pie-outline:before,body.dashboard .page-content .header .ion-ios-plus-outline:before,body.dashboard .page-content .header .ion-ios-unlocked:before,body.dashboard .page-content .header .ion-link:before,body.dashboard .page-content .header .ion-load-c:before,body.dashboard .page-content .header .ion-lock-combination:before,body.dashboard .page-content .header .ion-log-out:before,body.dashboard .page-content .header .ion-monitor:before,body.dashboard .page-content .header .ion-navicon:before,body.dashboard .page-content .header .ion-paintbrush:before,body.dashboard .page-content .header .ion-paintbucket:before,body.dashboard .page-content .header .ion-paper-airplane:before,body.dashboard .page-content .header .ion-person:before,body.dashboard .page-content .header .ion-speedometer:before,body.dashboard .page-content .header .ion-stats-bars:before,body.dashboard .page-content .header .ion-unlocked:before,body.dashboard .page-content .header .ion-wand:before{margin-right:2px}body.dashboard .page-content .sub-header{font-weight:300;text-transform:uppercase}body.dashboard .page-content .sub-header a{text-transform:none}body.dashboard .page-content .striped-list .striped-list-item{border-bottom:1px solid #f0f0f0;padding:8px 0}body.dashboard .page-content .drag-handle{cursor:move}body.dashboard .page-content .user-grid .user img{border-radius:5px;margin-bottom:15px;border:0}body.dashboard .page-content .user-grid .user .name{font-weight:600}body.dashboard .page-content .user-grid .user .email{color:#444;margin-top:4px}@media (max-width:767px){body.dashboard .page-content .content-wrapper,body.dashboard .page-content .header,body.dashboard .page-content .header.fixed{padding-left:20px;padding-right:20px}}@media (min-width:768px) and (max-width:991px){body.dashboard .page-content .header.fixed{padding-left:120px}}#welcome-modal .modal-dialog{margin-top:65px}#welcome-modal .modal-content .modal-header{border-bottom:0}#welcome-modal .modal-content .modal-body{padding-bottom:50px}#welcome-modal .modal-content .modal-body header{text-align:center;font-weight:600;font-size:22px;color:#444;margin-bottom:23px}#welcome-modal .modal-content .modal-body p{font-size:13px;color:#555;margin:0 auto;width:80%;text-align:center;line-height:20px}#welcome-modal .modal-content .modal-body .go-dashboard{text-align:center;display:block;margin-top:10px}#welcome-modal .modal-content .modal-body .get-started{margin-top:40px}#welcome-modal .modal-content .modal-body .get-started .col-md-4{text-align:center;padding-bottom:50px}#welcome-modal .modal-content .modal-body .get-started .col-md-4 a{color:#666;display:block;margin-top:12px;font-size:13px}#welcome-modal .modal-content .modal-body .get-started .col-md-4 a i{font-size:38px;color:#6db81c;display:block}#welcome-modal .modal-content .modal-body .get-started .col-md-4 a:hover{text-decoration:none;color:#999}body.login .form-bg{border-radius:10px;margin:60px auto auto;padding:30px;width:320px;border:1px solid rgba(0,0,0,.1);box-shadow:0 20px 30px rgba(0,0,0,.2);background-color:#fff}body.login .logo{margin-bottom:30px}body.login .logo img{margin:0 auto}body.login .login-input{height:45px}body.login i{font-size:22px}.setup-page{padding-top:60px}.setup-page .logo{display:block;margin:0 auto 30px}.setup-page .steps{border-radius:2px 2px 0 0;margin:0 auto 20px}.setup-page .steps .step{padding:20px 0;text-align:center;position:relative;font-size:13px}.setup-page .steps .step:not(:last-child):after{content:"";position:absolute;bottom:31px;left:55%;display:block;height:1px;background:#94a1b8;width:100%}.setup-page .steps .step span{width:23px;height:23px;display:block;position:relative;margin:13px auto 0;border-radius:25px;background:#f0f3f4;border:1px solid #94a1b8;transition:all .2s linear;z-index:10}.setup-page .steps .step.active span{background:#7ed321}.setup-page .setup-success{text-align:center}.setup-page .setup-success i{font-size:47px}.setup-page .setup-success h3{margin-top:25px;font-size:21px;color:#556579}.setup-page .setup-success .btn{margin-top:40px}.component-inline-update{padding-top:8px}.component-inline-update label{display:initial;font-weight:400}.component-group-name{font-size:18px;padding-left:10px}.component-group-other{font-size:18px}.list-group-item.group-name:hover{cursor:pointer}.stats-widget{text-align:center;margin-bottom:30px;background-color:#fff;border:1px solid #eee}.stats-widget .stats-top{padding:20px}.stats-widget .stats-top>span{display:block;text-align:center}.stats-widget .stats-top>span.stats-value{font-size:24px;font-weight:400}.stats-widget .stats-top>span.stats-label{padding-top:5px;font-size:14px;font-weight:300;color:#777}.stats-widget .stats-body,.stats-widget .stats-chart{margin-top:-20px;padding-top:10px}.stats-widget .stats-body .list-group{border:none;padding-bottom:0;margin-bottom:0}.stats-widget .stats-body .list-group .list-group-item{border-left:#eee;border-bottom-color:#eee;border-right:#eee;border-top-color:#eee}.stats-widget .stats-body .list-group .list-group-item:last-child{border-bottom:none}.minicolors{position:relative}.minicolors-sprite{background-image:url(data:image/png;base64,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)}.minicolors-no-data-uris .minicolors-sprite{background-image:url(jquery.minicolors.png)}.minicolors-swatch{position:absolute;vertical-align:middle;background-position:-80px 0;border:1px solid #ccc;cursor:text;padding:0;margin:0;display:inline-block}.minicolors-swatch-color{position:absolute;top:0;left:0;right:0;bottom:0}.minicolors input[type=hidden]+.minicolors-swatch{width:28px;position:static;cursor:pointer}.minicolors input[type=hidden][disabled]+.minicolors-swatch{cursor:default}.minicolors-panel{position:absolute;width:173px;height:152px;background:#fff;border:1px solid #ccc;box-shadow:0 0 20px rgba(0,0,0,.2);z-index:99999;box-sizing:content-box;display:none}.minicolors-panel.minicolors-visible{display:block}.minicolors-position-top .minicolors-panel{top:-154px}.minicolors-position-right .minicolors-panel{right:0}.minicolors-position-bottom .minicolors-panel{top:auto}.minicolors-position-left .minicolors-panel{left:0}.minicolors-with-opacity .minicolors-panel{width:194px}.minicolors .minicolors-grid{position:absolute;top:1px;left:1px;width:150px;height:150px;background-position:-120px 0;cursor:crosshair}.minicolors .minicolors-grid-inner{position:absolute;top:0;left:0;width:150px;height:150px}.minicolors-slider-saturation .minicolors-grid{background-position:-420px 0}.minicolors-slider-saturation .minicolors-grid-inner{background-position:-270px 0;background-image:inherit}.minicolors-slider-brightness .minicolors-grid{background-position:-570px 0}.minicolors-slider-brightness .minicolors-grid-inner{background-color:#000}.minicolors-slider-wheel .minicolors-grid{background-position:-720px 0}.minicolors-opacity-slider,.minicolors-slider{position:absolute;top:1px;left:152px;width:20px;height:150px;background-color:#fff;background-position:0 0;cursor:row-resize}.minicolors-slider-saturation .minicolors-slider{background-position:-60px 0}.minicolors-slider-brightness .minicolors-slider,.minicolors-slider-wheel .minicolors-slider{background-position:-20px 0}.minicolors-opacity-slider{left:173px;background-position:-40px 0;display:none}.minicolors-with-opacity .minicolors-opacity-slider{display:block}.minicolors-grid .minicolors-picker{position:absolute;top:70px;left:70px;width:12px;height:12px;border:1px solid #000;border-radius:10px;margin-top:-6px;margin-left:-6px;background:none}.minicolors-grid .minicolors-picker>div{position:absolute;top:0;left:0;width:8px;height:8px;border-radius:8px;border:2px solid #fff;box-sizing:content-box}.minicolors-picker{position:absolute;top:0;left:0;width:18px;height:2px;background:#fff;border:1px solid #000;margin-top:-2px;box-sizing:content-box}.minicolors-inline{display:inline-block}.minicolors-inline .minicolors-input{display:none!important}.minicolors-inline .minicolors-panel{position:relative;top:auto;left:auto;box-shadow:none;z-index:auto;display:inline-block}.minicolors-theme-default .minicolors-swatch{top:5px;left:5px;width:18px;height:18px}.minicolors-theme-default.minicolors-position-right .minicolors-swatch{left:auto;right:5px}.minicolors-theme-default.minicolors{width:auto;display:inline-block}.minicolors-theme-default .minicolors-input{height:20px;width:auto;display:inline-block;padding-left:26px}.minicolors-theme-default.minicolors-position-right .minicolors-input{padding-right:26px;padding-left:inherit}.minicolors-theme-bootstrap .minicolors-swatch{z-index:2;top:3px;left:3px;width:28px;height:28px;border-radius:3px}.minicolors-theme-bootstrap .minicolors-swatch-color{border-radius:inherit}.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch{left:auto;right:3px}.minicolors-theme-bootstrap .minicolors-input{float:none;padding-left:44px}.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input{padding-right:44px;padding-left:12px}.minicolors-theme-bootstrap .input-group-lg>.input-group-btn>.minicolors-input.btn+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-lg>.minicolors-input.form-control+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-lg>.minicolors-input.input-group-addon+.minicolors-swatch,.minicolors-theme-bootstrap .minicolors-input.input-lg+.minicolors-swatch{top:4px;left:4px;width:37px;height:37px;border-radius:5px}.minicolors-theme-bootstrap .input-group-sm>.input-group-btn>.minicolors-input.btn+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-sm>.minicolors-input.form-control+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-sm>.minicolors-input.input-group-addon+.minicolors-swatch,.minicolors-theme-bootstrap .minicolors-input.input-sm+.minicolors-swatch{width:24px;height:24px}.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input{border-top-left-radius:0;border-bottom-left-radius:0}body.swal2-shown{overflow-y:hidden}.swal2-container,body.swal2-iosfix{position:fixed;left:0;right:0}.swal2-container{display:flex;flex-direction:row;align-items:center;justify-content:center;top:0;bottom:0;padding:10px;background-color:transparent;z-index:1060}.swal2-container.swal2-top{align-items:flex-start}.swal2-container.swal2-top-left{align-items:flex-start;justify-content:flex-start}.swal2-container.swal2-top-right{align-items:flex-start;justify-content:flex-end}.swal2-container.swal2-center{align-items:center}.swal2-container.swal2-center-left{align-items:center;justify-content:flex-start}.swal2-container.swal2-center-right{align-items:center;justify-content:flex-end}.swal2-container.swal2-bottom{align-items:flex-end}.swal2-container.swal2-bottom-left{align-items:flex-end;justify-content:flex-start}.swal2-container.swal2-bottom-right{align-items:flex-end;justify-content:flex-end}.swal2-container.swal2-grow-fullscreen>.swal2-modal{display:flex!important;flex:1;align-self:stretch;justify-content:center}.swal2-container.swal2-grow-row>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container.swal2-grow-column{flex:1;flex-direction:column}.swal2-container.swal2-grow-column.swal2-bottom,.swal2-container.swal2-grow-column.swal2-center,.swal2-container.swal2-grow-column.swal2-top{align-items:center}.swal2-container.swal2-grow-column.swal2-bottom-left,.swal2-container.swal2-grow-column.swal2-center-left,.swal2-container.swal2-grow-column.swal2-top-left{align-items:flex-start}.swal2-container.swal2-grow-column.swal2-bottom-right,.swal2-container.swal2-grow-column.swal2-center-right,.swal2-container.swal2-grow-column.swal2-top-right{align-items:flex-end}.swal2-container.swal2-grow-column>.swal2-modal{display:flex!important;flex:1;align-content:center;justify-content:center}.swal2-container:not(.swal2-top):not(.swal2-top-left):not(.swal2-top-right):not(.swal2-center-left):not(.swal2-center-right):not(.swal2-bottom):not(.swal2-bottom-left):not(.swal2-bottom-right)>.swal2-modal{margin:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.swal2-container .swal2-modal{margin:0!important}}.swal2-container.swal2-fade{transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-modal{flex-direction:column;background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;border-radius:5px;box-sizing:border-box;text-align:center;overflow-x:hidden;overflow-y:auto;display:none;position:relative;max-width:100%}.swal2-modal:focus{outline:none}.swal2-modal.swal2-loading{overflow-y:hidden}.swal2-modal .swal2-title{color:#595959;font-size:30px;text-align:center;font-weight:600;text-transform:none;position:relative;margin:0 0 .4em;padding:0;display:block;word-wrap:break-word}.swal2-modal .swal2-buttonswrapper{margin-top:15px}.swal2-modal .swal2-buttonswrapper:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4;cursor:no-drop}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;border:4px solid transparent;width:40px;height:40px;padding:0;margin:7.5px;vertical-align:top;background-color:transparent!important;color:transparent;cursor:default;border-radius:100%;animation:rotate-loading 1.5s linear 0s infinite normal;-webkit-user-select:none;-moz-user-select:none;user-select:none}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-cancel{margin-left:30px;margin-right:30px}.swal2-modal .swal2-buttonswrapper.swal2-loading :not(.swal2-styled).swal2-confirm:after{display:inline-block;content:"";margin-left:5px;vertical-align:-1px;height:15px;width:15px;box-shadow:1px 1px 1px #fff;border:3px solid #999;border-right-color:transparent;border-radius:50%;animation:rotate-loading 1.5s linear 0s infinite normal}.swal2-modal .swal2-styled{border:0;border-radius:3px;box-shadow:none;color:#fff;cursor:pointer;font-size:17px;font-weight:500;margin:15px 5px 0;padding:10px 32px}.swal2-modal .swal2-styled:focus{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px rgba(50,100,150,.4)}.swal2-modal .swal2-image{margin:20px auto;max-width:100%}.swal2-modal .swal2-close{background:transparent;border:0;margin:0;padding:0;width:38px;height:40px;font-size:36px;line-height:40px;font-family:serif;position:absolute;top:5px;right:8px;cursor:pointer;color:#ccc;transition:color .1s ease}.swal2-modal .swal2-close:hover{color:#d55}.swal2-modal>.swal2-checkbox,.swal2-modal>.swal2-file,.swal2-modal>.swal2-input,.swal2-modal>.swal2-radio,.swal2-modal>.swal2-select,.swal2-modal>.swal2-textarea{display:none}.swal2-modal .swal2-content{font-size:18px;text-align:center;font-weight:300;position:relative;float:none;margin:0;padding:0;line-height:normal;color:#545454;word-wrap:break-word}.swal2-modal .swal2-checkbox,.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-radio,.swal2-modal .swal2-select,.swal2-modal .swal2-textarea{margin:20px auto}.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-textarea{width:100%;box-sizing:border-box;font-size:18px;border-radius:3px;border:1px solid #d9d9d9;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);transition:border-color .3s,box-shadow .3s}.swal2-modal .swal2-file.swal2-inputerror,.swal2-modal .swal2-input.swal2-inputerror,.swal2-modal .swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-modal .swal2-file:focus,.swal2-modal .swal2-input:focus,.swal2-modal .swal2-textarea:focus{outline:none;border:1px solid #b4dbed;box-shadow:0 0 3px #c4e6f5}.swal2-modal .swal2-file::-moz-placeholder,.swal2-modal .swal2-input::-moz-placeholder,.swal2-modal .swal2-textarea::-moz-placeholder{color:#ccc}.swal2-modal .swal2-file::placeholder,.swal2-modal .swal2-input::placeholder,.swal2-modal .swal2-textarea::placeholder{color:#ccc}.swal2-modal .swal2-range input{float:left;width:80%}.swal2-modal .swal2-range output{float:right;width:20%;font-size:20px;font-weight:600;text-align:center}.swal2-modal .swal2-range input,.swal2-modal .swal2-range output{height:43px;line-height:43px;vertical-align:middle;margin:20px auto;padding:0}.swal2-modal .swal2-input{height:43px;padding:0 12px}.swal2-modal .swal2-input[type=number]{max-width:150px}.swal2-modal .swal2-file{font-size:20px}.swal2-modal .swal2-textarea{height:108px;padding:12px}.swal2-modal .swal2-select{color:#545454;font-size:inherit;padding:5px 10px;min-width:40%;max-width:100%}.swal2-modal .swal2-radio{border:0}.swal2-modal .swal2-radio label:not(:first-child){margin-left:20px}.swal2-modal .swal2-radio input,.swal2-modal .swal2-radio span{vertical-align:middle}.swal2-modal .swal2-radio input{margin:0 3px 0 0}.swal2-modal .swal2-checkbox{color:#545454}.swal2-modal .swal2-checkbox input,.swal2-modal .swal2-checkbox span{vertical-align:middle}.swal2-modal .swal2-validationerror{background-color:#f0f0f0;margin:0 -20px;overflow:hidden;padding:10px;color:grey;font-size:16px;font-weight:300;display:none}.swal2-modal .swal2-validationerror:before{content:"!";display:inline-block;width:24px;height:24px;border-radius:50%;background-color:#ea7d7d;color:#fff;line-height:24px;text-align:center;margin-right:10px}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.swal2-range input{width:100%!important}.swal2-range output{display:none}}.swal2-icon{width:80px;height:80px;border:4px solid transparent;border-radius:50%;margin:20px auto 30px;padding:0;position:relative;box-sizing:content-box;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;display:block}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{transform:rotate(45deg);left:17px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{transform:rotate(-45deg);right:16px}.swal2-icon.swal2-warning{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#f8bb86;border-color:#facea8}.swal2-icon.swal2-info,.swal2-icon.swal2-warning{font-size:60px;line-height:80px;text-align:center}.swal2-icon.swal2-info{font-family:Open Sans,sans-serif;color:#3fc3ee;border-color:#9de0f6}.swal2-icon.swal2-question{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#87adbd;border-color:#c9dae1;font-size:60px;line-height:80px;text-align:center}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{border-radius:50%;position:absolute;width:60px;height:120px;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{border-radius:120px 0 0 120px;top:-7px;left:-33px;transform:rotate(-45deg);transform-origin:60px 60px}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{border-radius:0 120px 120px 0;top:-11px;left:30px;transform:rotate(-45deg);transform-origin:0 60px}.swal2-icon.swal2-success .swal2-success-ring{width:80px;height:80px;border:4px solid rgba(165,220,134,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal2-icon.swal2-success .swal2-success-fix{width:7px;height:90px;position:absolute;left:28px;top:8px;z-index:1;transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{width:25px;left:14px;top:46px;transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{width:47px;right:8px;top:38px;transform:rotate(-45deg)}.swal2-progresssteps{font-weight:600;margin:0 0 20px;padding:0}.swal2-progresssteps li{display:inline-block;position:relative}.swal2-progresssteps .swal2-progresscircle{background:#3085d6;border-radius:2em;color:#fff;height:2em;line-height:2em;text-align:center;width:2em;z-index:20}.swal2-progresssteps .swal2-progresscircle:first-child{margin-left:0}.swal2-progresssteps .swal2-progresscircle:last-child{margin-right:0}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep{background:#3085d6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progresscircle,.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progressline{background:#add8e6}.swal2-progresssteps .swal2-progressline{background:#3085d6;height:.4em;margin:0 -1px;z-index:10}[class^=swal2]{-webkit-tap-highlight-color:rgba(0,0,0,0)}@keyframes showSweetAlert{0%{transform:scale(.7)}45%{transform:scale(1.05)}80%{transform:scale(.95)}to{transform:scale(1)}}@keyframes hideSweetAlert{0%{transform:scale(1);opacity:1}to{transform:scale(.5);opacity:0}}.swal2-show{animation:showSweetAlert .3s}.swal2-show.swal2-noanimation{animation:none}.swal2-hide{animation:hideSweetAlert .15s forwards}.swal2-hide.swal2-noanimation{animation:none}@keyframes animate-success-tip{0%{width:0;left:1px;top:19px}54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}to{width:25px;left:14px;top:45px}}@keyframes animate-success-long{0%{width:0;right:46px;top:54px}65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}to{width:47px;right:8px;top:38px}}@keyframes rotatePlaceholder{0%{transform:rotate(-45deg)}5%{transform:rotate(-45deg)}12%{transform:rotate(-405deg)}to{transform:rotate(-405deg)}}.swal2-animate-success-line-tip{animation:animate-success-tip .75s}.swal2-animate-success-line-long{animation:animate-success-long .75s}.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right{animation:rotatePlaceholder 4.25s ease-in}@keyframes animate-error-icon{0%{transform:rotateX(100deg);opacity:0}to{transform:rotateX(0deg);opacity:1}}.swal2-animate-error-icon{animation:animate-error-icon .5s}@keyframes animate-x-mark{0%{transform:scale(.4);margin-top:26px;opacity:0}50%{transform:scale(.4);margin-top:26px;opacity:0}80%{transform:scale(1.15);margin-top:-6px}to{transform:scale(1);margin-top:0;opacity:1}}.swal2-animate-x-mark{animation:animate-x-mark .5s}@keyframes rotate-loading{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swal2-modal button{margin-right:8px}ul.messenger,ul.messenger>li{margin:0;padding:0}ul.messenger>li{list-style:none}ul.messenger.messenger-empty{display:none}ul.messenger .messenger-message{overflow:hidden;*zoom:1}ul.messenger .messenger-message.messenger-hidden{display:none}ul.messenger .messenger-message .messenger-actions a,ul.messenger .messenger-message .messenger-phrase{padding-right:5px}ul.messenger .messenger-message .messenger-actions{float:right}ul.messenger .messenger-message .messenger-actions a{cursor:pointer;text-decoration:underline}ul.messenger .messenger-message ol,ul.messenger .messenger-message ul{margin:10px 18px 0}ul.messenger.messenger-fixed{position:fixed;z-index:10000}ul.messenger.messenger-fixed .messenger-message{min-width:0;box-sizing:border-box}ul.messenger.messenger-fixed .message .messenger-actions{float:left}ul.messenger.messenger-fixed.messenger-on-top{top:20px}ul.messenger.messenger-fixed.messenger-on-bottom{bottom:20px}ul.messenger.messenger-fixed.messenger-on-bottom,ul.messenger.messenger-fixed.messenger-on-top{left:50%;width:600px;margin-left:-300px}@media (max-width:960px){ul.messenger.messenger-fixed.messenger-on-bottom,ul.messenger.messenger-fixed.messenger-on-top{left:10%;width:80%;margin-left:0}}ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-right,ul.messenger.messenger-fixed.messenger-on-top.messenger-on-right{right:20px;left:auto}ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-left,ul.messenger.messenger-fixed.messenger-on-top.messenger-on-left{left:20px;margin-left:0}ul.messenger.messenger-fixed.messenger-on-left,ul.messenger.messenger-fixed.messenger-on-right{width:350px}ul.messenger.messenger-fixed.messenger-on-left .messenger-actions,ul.messenger.messenger-fixed.messenger-on-right .messenger-actions{float:left}ul.messenger .messenger-spinner{display:none}@keyframes ui-spinner-rotate-right{0%{transform:rotate(0deg)}25%{transform:rotate(180deg)}50%{transform:rotate(180deg)}75%{transform:rotate(1turn)}to{transform:rotate(1turn)}}@keyframes ui-spinner-rotate-left{0%{transform:rotate(0deg)}25%{transform:rotate(0deg)}50%{transform:rotate(180deg)}75%{transform:rotate(180deg)}to{transform:rotate(1turn)}}.messenger-spinner{position:relative;border-radius:100%}ul.messenger.messenger-spinner-active .messenger-spinner .messenger-spinner{display:block}.messenger-spinner .messenger-spinner-side{width:50%;height:100%;overflow:hidden;position:absolute}.messenger-spinner .messenger-spinner-side .messenger-spinner-fill{border-radius:999px;position:absolute;width:100%;height:100%;animation-iteration-count:infinite;animation-timing-function:linear}.messenger-spinner .messenger-spinner-side-left{left:0}.messenger-spinner .messenger-spinner-side-left .messenger-spinner-fill{left:100%;border-top-left-radius:0;border-bottom-left-radius:0;animation-name:ui-spinner-rotate-left;transform-origin:0 50%}.messenger-spinner .messenger-spinner-side-right{left:50%}.messenger-spinner .messenger-spinner-side-right .messenger-spinner-fill{left:-100%;border-top-right-radius:0;border-bottom-right-radius:0;animation-name:ui-spinner-rotate-right;transform-origin:100% 50%}ul.messenger-theme-air{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none;font-family:Raleway,sans-serif}ul.messenger-theme-air .messenger-message{transition:background-color .4s;border-radius:5px;box-shadow:inset 0 0 0 1px #fff,inset 0 2px #fff,0 0 0 1px rgba(0,0,0,.1),0 1px rgba(0,0,0,.2);border:0;background-color:#fff;position:relative;margin-bottom:1em;font-size:13px;color:#666;font-weight:500;padding:10px 30px 11px 46px}ul.messenger-theme-air .messenger-message:hover{background-color:#fff}ul.messenger-theme-air .messenger-message .messenger-close{position:absolute;top:0;right:0;color:#888;opacity:1;font-weight:700;display:block;font-size:20px;line-height:20px;padding:8px 10px 7px 7px;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}ul.messenger-theme-air .messenger-message .messenger-close:hover{color:#444}ul.messenger-theme-air .messenger-message .messenger-close:active{color:#222}ul.messenger-theme-air .messenger-message .messenger-actions{float:none;margin-top:10px}ul.messenger-theme-air .messenger-message .messenger-actions a{box-shadow:0 0 0 1px rgba(0,0,0,.1),inset 0 1px hsla(0,0%,100%,.05);border-radius:4px;text-decoration:none;display:inline-block;color:#888;margin-right:10px;padding:3px 10px 5px;text-transform:capitalize}ul.messenger-theme-air .messenger-message .messenger-actions a:hover{box-shadow:0 0 0 1px rgba(0,0,0,.1),inset 0 1px hsla(0,0%,100%,.15);color:#444}ul.messenger-theme-air .messenger-message .messenger-actions a:active{box-shadow:0 0 0 1px rgba(0,0,0,.18),inset 0 1px rgba(0,0,0,.05);background:rgba(0,0,0,.04);color:#444}ul.messenger-theme-air .messenger-message .messenger-actions .messenger-phrase{display:none}ul.messenger-theme-air .messenger-message .messenger-message-inner:before{box-shadow:inset 0 1px 3px rgba(0,0,0,.3);border-radius:50%;position:absolute;left:17px;display:block;content:" ";top:50%;margin-top:-8px;height:13px;width:13px;z-index:20}ul.messenger-theme-air .messenger-message.alert-success .messenger-message-inner:before{background-color:#5fca4a}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner{width:24px;height:24px;background:transparent}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner .messenger-spinner-side .messenger-spinner-fill{background:#dd6a45;animation-duration:20s;opacity:1}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner:after{content:"";background:#fff;position:absolute;width:19px;height:19px;border-radius:50%;top:2px;left:2px;display:block}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner{width:24px;height:24px;background:transparent}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner .messenger-spinner-side .messenger-spinner-fill{background:#dd6a45;animation-duration:600s;opacity:1}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner:after{content:"";background:#fff;position:absolute;width:19px;height:19px;border-radius:50%;top:2px;left:2px;display:block}ul.messenger-theme-air .messenger-message.alert-error .messenger-message-inner:before{background-color:#dd6a45}ul.messenger-theme-air .messenger-message.alert-info .messenger-message-inner:before{background-color:#61c4b8}ul.messenger-theme-air .messenger-spinner{display:block;position:absolute;left:12px;top:50%;margin-top:-13px;height:24px;width:24px;z-index:10} - -/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT -Copyright (c) 2015 Daniel Eden -*/.animated.infinite{animation-iteration-count:infinite}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{animation-duration:.75s}body{-webkit-backface-visibility:hidden}.animated{animation-duration:1s;animation-fill-mode:both}.animated.hinge{animation-duration:2s}.sortable-chosen{border:1px solid #e8e8e8!important;background-color:#f0f3f4} \ No newline at end of file diff --git a/public/dist/css/dashboard/dashboard.d62a8b6468ab8c9bca396ab8f6cde506.css b/public/dist/css/dashboard/dashboard.d62a8b6468ab8c9bca396ab8f6cde506.css deleted file mode 100644 index a8516b21..00000000 --- a/public/dist/css/dashboard/dashboard.d62a8b6468ab8c9bca396ab8f6cde506.css +++ /dev/null @@ -1,15 +0,0 @@ -@charset "UTF-8";/*! - Ionicons, v2.0.1 - Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ - https://twitter.com/benjsperry https://twitter.com/ionicframework - MIT License: https://github.com/driftyco/ionicons - - Android-style icons originally built by Google’s - Material Design Icons: https://github.com/google/material-design-icons - used under CC BY http://creativecommons.org/licenses/by/4.0/ - Modified icons to fit ionicon’s grid from original. -*/hr,img{border:0}[class^=swal2],html{-webkit-tap-highlight-color:transparent}body,figure{margin:0}.btn-group>.btn-group,.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group,.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,.dropdown-menu,.setup-page .steps .step{float:left}.img-responsive,.img-thumbnail,.table,label{max-width:100%}.btn,.no-select{-moz-user-select:none;-ms-user-select:none}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.pre-scrollable{max-height:340px}.markdown-body,html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}@font-face{font-family:Ionicons;src:url(../../../fonts/ionicons.eot?v=2.0.1);src:url(../../../fonts/ionicons.eot?v=2.0.1#iefix) format("embedded-opentype"),url(../../../fonts/ionicons.ttf?v=2.0.1) format("truetype"),url(../../../fonts/ionicons.woff?v=2.0.1) format("woff"),url(../../../fonts/ionicons.svg?v=2.0.1#Ionicons) format("svg");font-weight:400;font-style:normal}.ion,.ion-alert-circled:before,.ion-alert:before,.ion-android-add-circle:before,.ion-android-add:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-cloud:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done-all:before,.ion-android-done:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite-outline:before,.ion-android-favorite:before,.ion-android-film:before,.ion-android-folder-open:before,.ion-android-folder:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone-off:before,.ion-android-microphone:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-notifications:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person-add:before,.ion-android-person:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove-circle:before,.ion-android-remove:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share-alt:before,.ion-android-share:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-star:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace-outline:before,.ion-backspace:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox-working:before,.ion-chatbox:before,.ion-chatboxes:before,.ion-chatbubble-working:before,.ion-chatbubble:before,.ion-chatbubbles:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-checkmark:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close-circled:before,.ion-close-round:before,.ion-close:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code-download:before,.ion-code-working:before,.ion-code:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document-text:before,.ion-document:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email-unread:before,.ion-email:before,.ion-erlenmeyer-flask-bubbles:before,.ion-erlenmeyer-flask:before,.ion-eye-disabled:before,.ion-eye:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash-off:before,.ion-flash:before,.ion-folder:before,.ion-fork-repo:before,.ion-fork:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy-outline:before,.ion-happy:before,.ion-headphone:before,.ion-heart-broken:before,.ion-heart:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-help:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information-circled:before,.ion-information:before,.ion-ionic:before,.ion-ios-alarm-outline:before,.ion-ios-alarm:before,.ion-ios-albums-outline:before,.ion-ios-albums:before,.ion-ios-americanfootball-outline:before,.ion-ios-americanfootball:before,.ion-ios-analytics-outline:before,.ion-ios-analytics:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at-outline:before,.ion-ios-at:before,.ion-ios-barcode-outline:before,.ion-ios-barcode:before,.ion-ios-baseball-outline:before,.ion-ios-baseball:before,.ion-ios-basketball-outline:before,.ion-ios-basketball:before,.ion-ios-bell-outline:before,.ion-ios-bell:before,.ion-ios-body-outline:before,.ion-ios-body:before,.ion-ios-bolt-outline:before,.ion-ios-bolt:before,.ion-ios-book-outline:before,.ion-ios-book:before,.ion-ios-bookmarks-outline:before,.ion-ios-bookmarks:before,.ion-ios-box-outline:before,.ion-ios-box:before,.ion-ios-briefcase-outline:before,.ion-ios-briefcase:before,.ion-ios-browsers-outline:before,.ion-ios-browsers:before,.ion-ios-calculator-outline:before,.ion-ios-calculator:before,.ion-ios-calendar-outline:before,.ion-ios-calendar:before,.ion-ios-camera-outline:before,.ion-ios-camera:before,.ion-ios-cart-outline:before,.ion-ios-cart:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatbubble-outline:before,.ion-ios-chatbubble:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-checkmark:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock-outline:before,.ion-ios-clock:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-close:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-outline:before,.ion-ios-cloudy:before,.ion-ios-cog-outline:before,.ion-ios-cog:before,.ion-ios-color-filter-outline:before,.ion-ios-color-filter:before,.ion-ios-color-wand-outline:before,.ion-ios-color-wand:before,.ion-ios-compose-outline:before,.ion-ios-compose:before,.ion-ios-contact-outline:before,.ion-ios-contact:before,.ion-ios-copy-outline:before,.ion-ios-copy:before,.ion-ios-crop-strong:before,.ion-ios-crop:before,.ion-ios-download-outline:before,.ion-ios-download:before,.ion-ios-drag:before,.ion-ios-email-outline:before,.ion-ios-email:before,.ion-ios-eye-outline:before,.ion-ios-eye:before,.ion-ios-fastforward-outline:before,.ion-ios-fastforward:before,.ion-ios-filing-outline:before,.ion-ios-filing:before,.ion-ios-film-outline:before,.ion-ios-film:before,.ion-ios-flag-outline:before,.ion-ios-flag:before,.ion-ios-flame-outline:before,.ion-ios-flame:before,.ion-ios-flask-outline:before,.ion-ios-flask:before,.ion-ios-flower-outline:before,.ion-ios-flower:before,.ion-ios-folder-outline:before,.ion-ios-folder:before,.ion-ios-football-outline:before,.ion-ios-football:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-b-outline:before,.ion-ios-game-controller-b:before,.ion-ios-gear-outline:before,.ion-ios-gear:before,.ion-ios-glasses-outline:before,.ion-ios-glasses:before,.ion-ios-grid-view-outline:before,.ion-ios-grid-view:before,.ion-ios-heart-outline:before,.ion-ios-heart:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-help:before,.ion-ios-home-outline:before,.ion-ios-home:before,.ion-ios-infinite-outline:before,.ion-ios-infinite:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-information:before,.ion-ios-ionic-outline:before,.ion-ios-keypad-outline:before,.ion-ios-keypad:before,.ion-ios-lightbulb-outline:before,.ion-ios-lightbulb:before,.ion-ios-list-outline:before,.ion-ios-list:before,.ion-ios-location-outline:before,.ion-ios-location:before,.ion-ios-locked-outline:before,.ion-ios-locked:before,.ion-ios-loop-strong:before,.ion-ios-loop:before,.ion-ios-medical-outline:before,.ion-ios-medical:before,.ion-ios-medkit-outline:before,.ion-ios-medkit:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-mic:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-minus:before,.ion-ios-monitor-outline:before,.ion-ios-monitor:before,.ion-ios-moon-outline:before,.ion-ios-moon:before,.ion-ios-more-outline:before,.ion-ios-more:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate-outline:before,.ion-ios-navigate:before,.ion-ios-nutrition-outline:before,.ion-ios-nutrition:before,.ion-ios-paper-outline:before,.ion-ios-paper:before,.ion-ios-paperplane-outline:before,.ion-ios-paperplane:before,.ion-ios-partlysunny-outline:before,.ion-ios-partlysunny:before,.ion-ios-pause-outline:before,.ion-ios-pause:before,.ion-ios-paw-outline:before,.ion-ios-paw:before,.ion-ios-people-outline:before,.ion-ios-people:before,.ion-ios-person-outline:before,.ion-ios-person:before,.ion-ios-personadd-outline:before,.ion-ios-personadd:before,.ion-ios-photos-outline:before,.ion-ios-photos:before,.ion-ios-pie-outline:before,.ion-ios-pie:before,.ion-ios-pint-outline:before,.ion-ios-pint:before,.ion-ios-play-outline:before,.ion-ios-play:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-plus:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetags-outline:before,.ion-ios-pricetags:before,.ion-ios-printer-outline:before,.ion-ios-printer:before,.ion-ios-pulse-strong:before,.ion-ios-pulse:before,.ion-ios-rainy-outline:before,.ion-ios-rainy:before,.ion-ios-recording-outline:before,.ion-ios-recording:before,.ion-ios-redo-outline:before,.ion-ios-redo:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-refresh:before,.ion-ios-reload:before,.ion-ios-reverse-camera-outline:before,.ion-ios-reverse-camera:before,.ion-ios-rewind-outline:before,.ion-ios-rewind:before,.ion-ios-rose-outline:before,.ion-ios-rose:before,.ion-ios-search-strong:before,.ion-ios-search:before,.ion-ios-settings-strong:before,.ion-ios-settings:before,.ion-ios-shuffle-strong:before,.ion-ios-shuffle:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipbackward:before,.ion-ios-skipforward-outline:before,.ion-ios-skipforward:before,.ion-ios-snowy:before,.ion-ios-speedometer-outline:before,.ion-ios-speedometer:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-star:before,.ion-ios-stopwatch-outline:before,.ion-ios-stopwatch:before,.ion-ios-sunny-outline:before,.ion-ios-sunny:before,.ion-ios-telephone-outline:before,.ion-ios-telephone:before,.ion-ios-tennisball-outline:before,.ion-ios-tennisball:before,.ion-ios-thunderstorm-outline:before,.ion-ios-thunderstorm:before,.ion-ios-time-outline:before,.ion-ios-time:before,.ion-ios-timer-outline:before,.ion-ios-timer:before,.ion-ios-toggle-outline:before,.ion-ios-toggle:before,.ion-ios-trash-outline:before,.ion-ios-trash:before,.ion-ios-undo-outline:before,.ion-ios-undo:before,.ion-ios-unlocked-outline:before,.ion-ios-unlocked:before,.ion-ios-upload-outline:before,.ion-ios-upload:before,.ion-ios-videocam-outline:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass-outline:before,.ion-ios-wineglass:before,.ion-ios-world-outline:before,.ion-ios-world:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-minus:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon-round:before,.ion-navicon:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person-add:before,.ion-person-stalker:before,.ion-person:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-plus:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply-all:before,.ion-reply:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad-outline:before,.ion-sad:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android-outline:before,.ion-social-android:before,.ion-social-angular-outline:before,.ion-social-angular:before,.ion-social-apple-outline:before,.ion-social-apple:before,.ion-social-bitcoin-outline:before,.ion-social-bitcoin:before,.ion-social-buffer-outline:before,.ion-social-buffer:before,.ion-social-chrome-outline:before,.ion-social-chrome:before,.ion-social-codepen-outline:before,.ion-social-codepen:before,.ion-social-css3-outline:before,.ion-social-css3:before,.ion-social-designernews-outline:before,.ion-social-designernews:before,.ion-social-dribbble-outline:before,.ion-social-dribbble:before,.ion-social-dropbox-outline:before,.ion-social-dropbox:before,.ion-social-euro-outline:before,.ion-social-euro:before,.ion-social-facebook-outline:before,.ion-social-facebook:before,.ion-social-foursquare-outline:before,.ion-social-foursquare:before,.ion-social-freebsd-devil:before,.ion-social-github-outline:before,.ion-social-github:before,.ion-social-google-outline:before,.ion-social-google:before,.ion-social-googleplus-outline:before,.ion-social-googleplus:before,.ion-social-hackernews-outline:before,.ion-social-hackernews:before,.ion-social-html5-outline:before,.ion-social-html5:before,.ion-social-instagram-outline:before,.ion-social-instagram:before,.ion-social-javascript-outline:before,.ion-social-javascript:before,.ion-social-linkedin-outline:before,.ion-social-linkedin:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest-outline:before,.ion-social-pinterest:before,.ion-social-python:before,.ion-social-reddit-outline:before,.ion-social-reddit:before,.ion-social-rss-outline:before,.ion-social-rss:before,.ion-social-sass:before,.ion-social-skype-outline:before,.ion-social-skype:before,.ion-social-snapchat-outline:before,.ion-social-snapchat:before,.ion-social-tumblr-outline:before,.ion-social-tumblr:before,.ion-social-tux:before,.ion-social-twitch-outline:before,.ion-social-twitch:before,.ion-social-twitter-outline:before,.ion-social-twitter:before,.ion-social-usd-outline:before,.ion-social-usd:before,.ion-social-vimeo-outline:before,.ion-social-vimeo:before,.ion-social-whatsapp-outline:before,.ion-social-whatsapp:before,.ion-social-windows-outline:before,.ion-social-windows:before,.ion-social-wordpress-outline:before,.ion-social-wordpress:before,.ion-social-yahoo-outline:before,.ion-social-yahoo:before,.ion-social-yen-outline:before,.ion-social-yen:before,.ion-social-youtube-outline:before,.ion-social-youtube:before,.ion-soup-can-outline:before,.ion-soup-can:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle-filled:before,.ion-toggle:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt-outline:before,.ion-tshirt:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before,.ionicons{display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:""}.ion-alert-circled:before{content:""}.ion-android-add:before{content:""}.ion-android-add-circle:before{content:""}.ion-android-alarm-clock:before{content:""}.ion-android-alert:before{content:""}.ion-android-apps:before{content:""}.ion-android-archive:before{content:""}.ion-android-arrow-back:before{content:""}.ion-android-arrow-down:before{content:""}.ion-android-arrow-dropdown:before{content:""}.ion-android-arrow-dropdown-circle:before{content:""}.ion-android-arrow-dropleft:before{content:""}.ion-android-arrow-dropleft-circle:before{content:""}.ion-android-arrow-dropright:before{content:""}.ion-android-arrow-dropright-circle:before{content:""}.ion-android-arrow-dropup:before{content:""}.ion-android-arrow-dropup-circle:before{content:""}.ion-android-arrow-forward:before{content:""}.ion-android-arrow-up:before{content:""}.ion-android-attach:before{content:""}.ion-android-bar:before{content:""}.ion-android-bicycle:before{content:""}.ion-android-boat:before{content:""}.ion-android-bookmark:before{content:""}.ion-android-bulb:before{content:""}.ion-android-bus:before{content:""}.ion-android-calendar:before{content:""}.ion-android-call:before{content:""}.ion-android-camera:before{content:""}.ion-android-cancel:before{content:""}.ion-android-car:before{content:""}.ion-android-cart:before{content:""}.ion-android-chat:before{content:""}.ion-android-checkbox:before{content:""}.ion-android-checkbox-blank:before{content:""}.ion-android-checkbox-outline:before{content:""}.ion-android-checkbox-outline-blank:before{content:""}.ion-android-checkmark-circle:before{content:""}.ion-android-clipboard:before{content:""}.ion-android-close:before{content:""}.ion-android-cloud:before{content:""}.ion-android-cloud-circle:before{content:""}.ion-android-cloud-done:before{content:""}.ion-android-cloud-outline:before{content:""}.ion-android-color-palette:before{content:""}.ion-android-compass:before{content:""}.ion-android-contact:before{content:""}.ion-android-contacts:before{content:""}.ion-android-contract:before{content:""}.ion-android-create:before{content:""}.ion-android-delete:before{content:""}.ion-android-desktop:before{content:""}.ion-android-document:before{content:""}.ion-android-done:before{content:""}.ion-android-done-all:before{content:""}.ion-android-download:before{content:""}.ion-android-drafts:before{content:""}.ion-android-exit:before{content:""}.ion-android-expand:before{content:""}.ion-android-favorite:before{content:""}.ion-android-favorite-outline:before{content:""}.ion-android-film:before{content:""}.ion-android-folder:before{content:""}.ion-android-folder-open:before{content:""}.ion-android-funnel:before{content:""}.ion-android-globe:before{content:""}.ion-android-hand:before{content:""}.ion-android-hangout:before{content:""}.ion-android-happy:before{content:""}.ion-android-home:before{content:""}.ion-android-image:before{content:""}.ion-android-laptop:before{content:""}.ion-android-list:before{content:""}.ion-android-locate:before{content:""}.ion-android-lock:before{content:""}.ion-android-mail:before{content:""}.ion-android-map:before{content:""}.ion-android-menu:before{content:""}.ion-android-microphone:before{content:""}.ion-android-microphone-off:before{content:""}.ion-android-more-horizontal:before{content:""}.ion-android-more-vertical:before{content:""}.ion-android-navigate:before{content:""}.ion-android-notifications:before{content:""}.ion-android-notifications-none:before{content:""}.ion-android-notifications-off:before{content:""}.ion-android-open:before{content:""}.ion-android-options:before{content:""}.ion-android-people:before{content:""}.ion-android-person:before{content:""}.ion-android-person-add:before{content:""}.ion-android-phone-landscape:before{content:""}.ion-android-phone-portrait:before{content:""}.ion-android-pin:before{content:""}.ion-android-plane:before{content:""}.ion-android-playstore:before{content:""}.ion-android-print:before{content:""}.ion-android-radio-button-off:before{content:""}.ion-android-radio-button-on:before{content:""}.ion-android-refresh:before{content:""}.ion-android-remove:before{content:""}.ion-android-remove-circle:before{content:""}.ion-android-restaurant:before{content:""}.ion-android-sad:before{content:""}.ion-android-search:before{content:""}.ion-android-send:before{content:""}.ion-android-settings:before{content:""}.ion-android-share:before{content:""}.ion-android-share-alt:before{content:""}.ion-android-star:before{content:""}.ion-android-star-half:before{content:""}.ion-android-star-outline:before{content:""}.ion-android-stopwatch:before{content:""}.ion-android-subway:before{content:""}.ion-android-sunny:before{content:""}.ion-android-sync:before{content:""}.ion-android-textsms:before{content:""}.ion-android-time:before{content:""}.ion-android-train:before{content:""}.ion-android-unlock:before{content:""}.ion-android-upload:before{content:""}.ion-android-volume-down:before{content:""}.ion-android-volume-mute:before{content:""}.ion-android-volume-off:before{content:""}.ion-android-volume-up:before{content:""}.ion-android-walk:before{content:""}.ion-android-warning:before{content:""}.ion-android-watch:before{content:""}.ion-android-wifi:before{content:""}.ion-aperture:before{content:""}.ion-archive:before{content:""}.ion-arrow-down-a:before{content:""}.ion-arrow-down-b:before{content:""}.ion-arrow-down-c:before{content:""}.ion-arrow-expand:before{content:""}.ion-arrow-graph-down-left:before{content:""}.ion-arrow-graph-down-right:before{content:""}.ion-arrow-graph-up-left:before{content:""}.ion-arrow-graph-up-right:before{content:""}.ion-arrow-left-a:before{content:""}.ion-arrow-left-b:before{content:""}.ion-arrow-left-c:before{content:""}.ion-arrow-move:before{content:""}.ion-arrow-resize:before{content:""}.ion-arrow-return-left:before{content:""}.ion-arrow-return-right:before{content:""}.ion-arrow-right-a:before{content:""}.ion-arrow-right-b:before{content:""}.ion-arrow-right-c:before{content:""}.ion-arrow-shrink:before{content:""}.ion-arrow-swap:before{content:""}.ion-arrow-up-a:before{content:""}.ion-arrow-up-b:before{content:""}.ion-arrow-up-c:before{content:""}.ion-asterisk:before{content:""}.ion-at:before{content:""}.ion-backspace:before{content:""}.ion-backspace-outline:before{content:""}.ion-bag:before{content:""}.ion-battery-charging:before{content:""}.ion-battery-empty:before{content:""}.ion-battery-full:before{content:""}.ion-battery-half:before{content:""}.ion-battery-low:before{content:""}.ion-beaker:before{content:""}.ion-beer:before{content:""}.ion-bluetooth:before{content:""}.ion-bonfire:before{content:""}.ion-bookmark:before{content:""}.ion-bowtie:before{content:""}.ion-briefcase:before{content:""}.ion-bug:before{content:""}.ion-calculator:before{content:""}.ion-calendar:before{content:""}.ion-camera:before{content:""}.ion-card:before{content:""}.ion-cash:before{content:""}.ion-chatbox:before{content:""}.ion-chatbox-working:before{content:""}.ion-chatboxes:before{content:""}.ion-chatbubble:before{content:""}.ion-chatbubble-working:before{content:""}.ion-chatbubbles:before{content:""}.ion-checkmark:before{content:""}.ion-checkmark-circled:before{content:""}.ion-checkmark-round:before{content:""}.ion-chevron-down:before{content:""}.ion-chevron-left:before{content:""}.ion-chevron-right:before{content:""}.ion-chevron-up:before{content:""}.ion-clipboard:before{content:""}.ion-clock:before{content:""}.ion-close:before{content:""}.ion-close-circled:before{content:""}.ion-close-round:before{content:""}.ion-closed-captioning:before{content:""}.ion-cloud:before{content:""}.ion-code:before{content:""}.ion-code-download:before{content:""}.ion-code-working:before{content:""}.ion-coffee:before{content:""}.ion-compass:before{content:""}.ion-compose:before{content:""}.ion-connection-bars:before{content:""}.ion-contrast:before{content:""}.ion-crop:before{content:""}.ion-cube:before{content:""}.ion-disc:before{content:""}.ion-document:before{content:""}.ion-document-text:before{content:""}.ion-drag:before{content:""}.ion-earth:before{content:""}.ion-easel:before{content:""}.ion-edit:before{content:""}.ion-egg:before{content:""}.ion-eject:before{content:""}.ion-email:before{content:""}.ion-email-unread:before{content:""}.ion-erlenmeyer-flask:before{content:""}.ion-erlenmeyer-flask-bubbles:before{content:""}.ion-eye:before{content:""}.ion-eye-disabled:before{content:""}.ion-female:before{content:""}.ion-filing:before{content:""}.ion-film-marker:before{content:""}.ion-fireball:before{content:""}.ion-flag:before{content:""}.ion-flame:before{content:""}.ion-flash:before{content:""}.ion-flash-off:before{content:""}.ion-folder:before{content:""}.ion-fork:before{content:""}.ion-fork-repo:before{content:""}.ion-forward:before{content:""}.ion-funnel:before{content:""}.ion-gear-a:before{content:""}.ion-gear-b:before{content:""}.ion-grid:before{content:""}.ion-hammer:before{content:""}.ion-happy:before{content:""}.ion-happy-outline:before{content:""}.ion-headphone:before{content:""}.ion-heart:before{content:""}.ion-heart-broken:before{content:""}.ion-help:before{content:""}.ion-help-buoy:before{content:""}.ion-help-circled:before{content:""}.ion-home:before{content:""}.ion-icecream:before{content:""}.ion-image:before{content:""}.ion-images:before{content:""}.ion-information:before{content:""}.ion-information-circled:before{content:""}.ion-ionic:before{content:""}.ion-ios-alarm:before{content:""}.ion-ios-alarm-outline:before{content:""}.ion-ios-albums:before{content:""}.ion-ios-albums-outline:before{content:""}.ion-ios-americanfootball:before{content:""}.ion-ios-americanfootball-outline:before{content:""}.ion-ios-analytics:before{content:""}.ion-ios-analytics-outline:before{content:""}.ion-ios-arrow-back:before{content:""}.ion-ios-arrow-down:before{content:""}.ion-ios-arrow-forward:before{content:""}.ion-ios-arrow-left:before{content:""}.ion-ios-arrow-right:before{content:""}.ion-ios-arrow-thin-down:before{content:""}.ion-ios-arrow-thin-left:before{content:""}.ion-ios-arrow-thin-right:before{content:""}.ion-ios-arrow-thin-up:before{content:""}.ion-ios-arrow-up:before{content:""}.ion-ios-at:before{content:""}.ion-ios-at-outline:before{content:""}.ion-ios-barcode:before{content:""}.ion-ios-barcode-outline:before{content:""}.ion-ios-baseball:before{content:""}.ion-ios-baseball-outline:before{content:""}.ion-ios-basketball:before{content:""}.ion-ios-basketball-outline:before{content:""}.ion-ios-bell:before{content:""}.ion-ios-bell-outline:before{content:""}.ion-ios-body:before{content:""}.ion-ios-body-outline:before{content:""}.ion-ios-bolt:before{content:""}.ion-ios-bolt-outline:before{content:""}.ion-ios-book:before{content:""}.ion-ios-book-outline:before{content:""}.ion-ios-bookmarks:before{content:""}.ion-ios-bookmarks-outline:before{content:""}.ion-ios-box:before{content:""}.ion-ios-box-outline:before{content:""}.ion-ios-briefcase:before{content:""}.ion-ios-briefcase-outline:before{content:""}.ion-ios-browsers:before{content:""}.ion-ios-browsers-outline:before{content:""}.ion-ios-calculator:before{content:""}.ion-ios-calculator-outline:before{content:""}.ion-ios-calendar:before{content:""}.ion-ios-calendar-outline:before{content:""}.ion-ios-camera:before{content:""}.ion-ios-camera-outline:before{content:""}.ion-ios-cart:before{content:""}.ion-ios-cart-outline:before{content:""}.ion-ios-chatboxes:before{content:""}.ion-ios-chatboxes-outline:before{content:""}.ion-ios-chatbubble:before{content:""}.ion-ios-chatbubble-outline:before{content:""}.ion-ios-checkmark:before{content:""}.ion-ios-checkmark-empty:before{content:""}.ion-ios-checkmark-outline:before{content:""}.ion-ios-circle-filled:before{content:""}.ion-ios-circle-outline:before{content:""}.ion-ios-clock:before{content:""}.ion-ios-clock-outline:before{content:""}.ion-ios-close:before{content:""}.ion-ios-close-empty:before{content:""}.ion-ios-close-outline:before{content:""}.ion-ios-cloud:before{content:""}.ion-ios-cloud-download:before{content:""}.ion-ios-cloud-download-outline:before{content:""}.ion-ios-cloud-outline:before{content:""}.ion-ios-cloud-upload:before{content:""}.ion-ios-cloud-upload-outline:before{content:""}.ion-ios-cloudy:before{content:""}.ion-ios-cloudy-night:before{content:""}.ion-ios-cloudy-night-outline:before{content:""}.ion-ios-cloudy-outline:before{content:""}.ion-ios-cog:before{content:""}.ion-ios-cog-outline:before{content:""}.ion-ios-color-filter:before{content:""}.ion-ios-color-filter-outline:before{content:""}.ion-ios-color-wand:before{content:""}.ion-ios-color-wand-outline:before{content:""}.ion-ios-compose:before{content:""}.ion-ios-compose-outline:before{content:""}.ion-ios-contact:before{content:""}.ion-ios-contact-outline:before{content:""}.ion-ios-copy:before{content:""}.ion-ios-copy-outline:before{content:""}.ion-ios-crop:before{content:""}.ion-ios-crop-strong:before{content:""}.ion-ios-download:before{content:""}.ion-ios-download-outline:before{content:""}.ion-ios-drag:before{content:""}.ion-ios-email:before{content:""}.ion-ios-email-outline:before{content:""}.ion-ios-eye:before{content:""}.ion-ios-eye-outline:before{content:""}.ion-ios-fastforward:before{content:""}.ion-ios-fastforward-outline:before{content:""}.ion-ios-filing:before{content:""}.ion-ios-filing-outline:before{content:""}.ion-ios-film:before{content:""}.ion-ios-film-outline:before{content:""}.ion-ios-flag:before{content:""}.ion-ios-flag-outline:before{content:""}.ion-ios-flame:before{content:""}.ion-ios-flame-outline:before{content:""}.ion-ios-flask:before{content:""}.ion-ios-flask-outline:before{content:""}.ion-ios-flower:before{content:""}.ion-ios-flower-outline:before{content:""}.ion-ios-folder:before{content:""}.ion-ios-folder-outline:before{content:""}.ion-ios-football:before{content:""}.ion-ios-football-outline:before{content:""}.ion-ios-game-controller-a:before{content:""}.ion-ios-game-controller-a-outline:before{content:""}.ion-ios-game-controller-b:before{content:""}.ion-ios-game-controller-b-outline:before{content:""}.ion-ios-gear:before{content:""}.ion-ios-gear-outline:before{content:""}.ion-ios-glasses:before{content:""}.ion-ios-glasses-outline:before{content:""}.ion-ios-grid-view:before{content:""}.ion-ios-grid-view-outline:before{content:""}.ion-ios-heart:before{content:""}.ion-ios-heart-outline:before{content:""}.ion-ios-help:before{content:""}.ion-ios-help-empty:before{content:""}.ion-ios-help-outline:before{content:""}.ion-ios-home:before{content:""}.ion-ios-home-outline:before{content:""}.ion-ios-infinite:before{content:""}.ion-ios-infinite-outline:before{content:""}.ion-ios-information:before{content:""}.ion-ios-information-empty:before{content:""}.ion-ios-information-outline:before{content:""}.ion-ios-ionic-outline:before{content:""}.ion-ios-keypad:before{content:""}.ion-ios-keypad-outline:before{content:""}.ion-ios-lightbulb:before{content:""}.ion-ios-lightbulb-outline:before{content:""}.ion-ios-list:before{content:""}.ion-ios-list-outline:before{content:""}.ion-ios-location:before{content:""}.ion-ios-location-outline:before{content:""}.ion-ios-locked:before{content:""}.ion-ios-locked-outline:before{content:""}.ion-ios-loop:before{content:""}.ion-ios-loop-strong:before{content:""}.ion-ios-medical:before{content:""}.ion-ios-medical-outline:before{content:""}.ion-ios-medkit:before{content:""}.ion-ios-medkit-outline:before{content:""}.ion-ios-mic:before{content:""}.ion-ios-mic-off:before{content:""}.ion-ios-mic-outline:before{content:""}.ion-ios-minus:before{content:""}.ion-ios-minus-empty:before{content:""}.ion-ios-minus-outline:before{content:""}.ion-ios-monitor:before{content:""}.ion-ios-monitor-outline:before{content:""}.ion-ios-moon:before{content:""}.ion-ios-moon-outline:before{content:""}.ion-ios-more:before{content:""}.ion-ios-more-outline:before{content:""}.ion-ios-musical-note:before{content:""}.ion-ios-musical-notes:before{content:""}.ion-ios-navigate:before{content:""}.ion-ios-navigate-outline:before{content:""}.ion-ios-nutrition:before{content:""}.ion-ios-nutrition-outline:before{content:""}.ion-ios-paper:before{content:""}.ion-ios-paper-outline:before{content:""}.ion-ios-paperplane:before{content:""}.ion-ios-paperplane-outline:before{content:""}.ion-ios-partlysunny:before{content:""}.ion-ios-partlysunny-outline:before{content:""}.ion-ios-pause:before{content:""}.ion-ios-pause-outline:before{content:""}.ion-ios-paw:before{content:""}.ion-ios-paw-outline:before{content:""}.ion-ios-people:before{content:""}.ion-ios-people-outline:before{content:""}.ion-ios-person:before{content:""}.ion-ios-person-outline:before{content:""}.ion-ios-personadd:before{content:""}.ion-ios-personadd-outline:before{content:""}.ion-ios-photos:before{content:""}.ion-ios-photos-outline:before{content:""}.ion-ios-pie:before{content:""}.ion-ios-pie-outline:before{content:""}.ion-ios-pint:before{content:""}.ion-ios-pint-outline:before{content:""}.ion-ios-play:before{content:""}.ion-ios-play-outline:before{content:""}.ion-ios-plus:before{content:""}.ion-ios-plus-empty:before{content:""}.ion-ios-plus-outline:before{content:""}.ion-ios-pricetag:before{content:""}.ion-ios-pricetag-outline:before{content:""}.ion-ios-pricetags:before{content:""}.ion-ios-pricetags-outline:before{content:""}.ion-ios-printer:before{content:""}.ion-ios-printer-outline:before{content:""}.ion-ios-pulse:before{content:""}.ion-ios-pulse-strong:before{content:""}.ion-ios-rainy:before{content:""}.ion-ios-rainy-outline:before{content:""}.ion-ios-recording:before{content:""}.ion-ios-recording-outline:before{content:""}.ion-ios-redo:before{content:""}.ion-ios-redo-outline:before{content:""}.ion-ios-refresh:before{content:""}.ion-ios-refresh-empty:before{content:""}.ion-ios-refresh-outline:before{content:""}.ion-ios-reload:before{content:""}.ion-ios-reverse-camera:before{content:""}.ion-ios-reverse-camera-outline:before{content:""}.ion-ios-rewind:before{content:""}.ion-ios-rewind-outline:before{content:""}.ion-ios-rose:before{content:""}.ion-ios-rose-outline:before{content:""}.ion-ios-search:before{content:""}.ion-ios-search-strong:before{content:""}.ion-ios-settings:before{content:""}.ion-ios-settings-strong:before{content:""}.ion-ios-shuffle:before{content:""}.ion-ios-shuffle-strong:before{content:""}.ion-ios-skipbackward:before{content:""}.ion-ios-skipbackward-outline:before{content:""}.ion-ios-skipforward:before{content:""}.ion-ios-skipforward-outline:before{content:""}.ion-ios-snowy:before{content:""}.ion-ios-speedometer:before{content:""}.ion-ios-speedometer-outline:before{content:""}.ion-ios-star:before{content:""}.ion-ios-star-half:before{content:""}.ion-ios-star-outline:before{content:""}.ion-ios-stopwatch:before{content:""}.ion-ios-stopwatch-outline:before{content:""}.ion-ios-sunny:before{content:""}.ion-ios-sunny-outline:before{content:""}.ion-ios-telephone:before{content:""}.ion-ios-telephone-outline:before{content:""}.ion-ios-tennisball:before{content:""}.ion-ios-tennisball-outline:before{content:""}.ion-ios-thunderstorm:before{content:""}.ion-ios-thunderstorm-outline:before{content:""}.ion-ios-time:before{content:""}.ion-ios-time-outline:before{content:""}.ion-ios-timer:before{content:""}.ion-ios-timer-outline:before{content:""}.ion-ios-toggle:before{content:""}.ion-ios-toggle-outline:before{content:""}.ion-ios-trash:before{content:""}.ion-ios-trash-outline:before{content:""}.ion-ios-undo:before{content:""}.ion-ios-undo-outline:before{content:""}.ion-ios-unlocked:before{content:""}.ion-ios-unlocked-outline:before{content:""}.ion-ios-upload:before{content:""}.ion-ios-upload-outline:before{content:""}.ion-ios-videocam:before{content:""}.ion-ios-videocam-outline:before{content:""}.ion-ios-volume-high:before{content:""}.ion-ios-volume-low:before{content:""}.ion-ios-wineglass:before{content:""}.ion-ios-wineglass-outline:before{content:""}.ion-ios-world:before{content:""}.ion-ios-world-outline:before{content:""}.ion-ipad:before{content:""}.ion-iphone:before{content:""}.ion-ipod:before{content:""}.ion-jet:before{content:""}.ion-key:before{content:""}.ion-knife:before{content:""}.ion-laptop:before{content:""}.ion-leaf:before{content:""}.ion-levels:before{content:""}.ion-lightbulb:before{content:""}.ion-link:before{content:""}.ion-load-a:before{content:""}.ion-load-b:before{content:""}.ion-load-c:before{content:""}.ion-load-d:before{content:""}.ion-location:before{content:""}.ion-lock-combination:before{content:""}.ion-locked:before{content:""}.ion-log-in:before{content:""}.ion-log-out:before{content:""}.ion-loop:before{content:""}.ion-magnet:before{content:""}.ion-male:before{content:""}.ion-man:before{content:""}.ion-map:before{content:""}.ion-medkit:before{content:""}.ion-merge:before{content:""}.ion-mic-a:before{content:""}.ion-mic-b:before{content:""}.ion-mic-c:before{content:""}.ion-minus:before{content:""}.ion-minus-circled:before{content:""}.ion-minus-round:before{content:""}.ion-model-s:before{content:""}.ion-monitor:before{content:""}.ion-more:before{content:""}.ion-mouse:before{content:""}.ion-music-note:before{content:""}.ion-navicon:before{content:""}.ion-navicon-round:before{content:""}.ion-navigate:before{content:""}.ion-network:before{content:""}.ion-no-smoking:before{content:""}.ion-nuclear:before{content:""}.ion-outlet:before{content:""}.ion-paintbrush:before{content:""}.ion-paintbucket:before{content:""}.ion-paper-airplane:before{content:""}.ion-paperclip:before{content:""}.ion-pause:before{content:""}.ion-person:before{content:""}.ion-person-add:before{content:""}.ion-person-stalker:before{content:""}.ion-pie-graph:before{content:""}.ion-pin:before{content:""}.ion-pinpoint:before{content:""}.ion-pizza:before{content:""}.ion-plane:before{content:""}.ion-planet:before{content:""}.ion-play:before{content:""}.ion-playstation:before{content:""}.ion-plus:before{content:""}.ion-plus-circled:before{content:""}.ion-plus-round:before{content:""}.ion-podium:before{content:""}.ion-pound:before{content:""}.ion-power:before{content:""}.ion-pricetag:before{content:""}.ion-pricetags:before{content:""}.ion-printer:before{content:""}.ion-pull-request:before{content:""}.ion-qr-scanner:before{content:""}.ion-quote:before{content:""}.ion-radio-waves:before{content:""}.ion-record:before{content:""}.ion-refresh:before{content:""}.ion-reply:before{content:""}.ion-reply-all:before{content:""}.ion-ribbon-a:before{content:""}.ion-ribbon-b:before{content:""}.ion-sad:before{content:""}.ion-sad-outline:before{content:""}.ion-scissors:before{content:""}.ion-search:before{content:""}.ion-settings:before{content:""}.ion-share:before{content:""}.ion-shuffle:before{content:""}.ion-skip-backward:before{content:""}.ion-skip-forward:before{content:""}.ion-social-android:before{content:""}.ion-social-android-outline:before{content:""}.ion-social-angular:before{content:""}.ion-social-angular-outline:before{content:""}.ion-social-apple:before{content:""}.ion-social-apple-outline:before{content:""}.ion-social-bitcoin:before{content:""}.ion-social-bitcoin-outline:before{content:""}.ion-social-buffer:before{content:""}.ion-social-buffer-outline:before{content:""}.ion-social-chrome:before{content:""}.ion-social-chrome-outline:before{content:""}.ion-social-codepen:before{content:""}.ion-social-codepen-outline:before{content:""}.ion-social-css3:before{content:""}.ion-social-css3-outline:before{content:""}.ion-social-designernews:before{content:""}.ion-social-designernews-outline:before{content:""}.ion-social-dribbble:before{content:""}.ion-social-dribbble-outline:before{content:""}.ion-social-dropbox:before{content:""}.ion-social-dropbox-outline:before{content:""}.ion-social-euro:before{content:""}.ion-social-euro-outline:before{content:""}.ion-social-facebook:before{content:""}.ion-social-facebook-outline:before{content:""}.ion-social-foursquare:before{content:""}.ion-social-foursquare-outline:before{content:""}.ion-social-freebsd-devil:before{content:""}.ion-social-github:before{content:""}.ion-social-github-outline:before{content:""}.ion-social-google:before{content:""}.ion-social-google-outline:before{content:""}.ion-social-googleplus:before{content:""}.ion-social-googleplus-outline:before{content:""}.ion-social-hackernews:before{content:""}.ion-social-hackernews-outline:before{content:""}.ion-social-html5:before{content:""}.ion-social-html5-outline:before{content:""}.ion-social-instagram:before{content:""}.ion-social-instagram-outline:before{content:""}.ion-social-javascript:before{content:""}.ion-social-javascript-outline:before{content:""}.ion-social-linkedin:before{content:""}.ion-social-linkedin-outline:before{content:""}.ion-social-markdown:before{content:""}.ion-social-nodejs:before{content:""}.ion-social-octocat:before{content:""}.ion-social-pinterest:before{content:""}.ion-social-pinterest-outline:before{content:""}.ion-social-python:before{content:""}.ion-social-reddit:before{content:""}.ion-social-reddit-outline:before{content:""}.ion-social-rss:before{content:""}.ion-social-rss-outline:before{content:""}.ion-social-sass:before{content:""}.ion-social-skype:before{content:""}.ion-social-skype-outline:before{content:""}.ion-social-snapchat:before{content:""}.ion-social-snapchat-outline:before{content:""}.ion-social-tumblr:before{content:""}.ion-social-tumblr-outline:before{content:""}.ion-social-tux:before{content:""}.ion-social-twitch:before{content:""}.ion-social-twitch-outline:before{content:""}.ion-social-twitter:before{content:""}.ion-social-twitter-outline:before{content:""}.ion-social-usd:before{content:""}.ion-social-usd-outline:before{content:""}.ion-social-vimeo:before{content:""}.ion-social-vimeo-outline:before{content:""}.ion-social-whatsapp:before{content:""}.ion-social-whatsapp-outline:before{content:""}.ion-social-windows:before{content:""}.ion-social-windows-outline:before{content:""}.ion-social-wordpress:before{content:""}.ion-social-wordpress-outline:before{content:""}.ion-social-yahoo:before{content:""}.ion-social-yahoo-outline:before{content:""}.ion-social-yen:before{content:""}.ion-social-yen-outline:before{content:""}.ion-social-youtube:before{content:""}.ion-social-youtube-outline:before{content:""}.ion-soup-can:before{content:""}.ion-soup-can-outline:before{content:""}.ion-speakerphone:before{content:""}.ion-speedometer:before{content:""}.ion-spoon:before{content:""}.ion-star:before{content:""}.ion-stats-bars:before{content:""}.ion-steam:before{content:""}.ion-stop:before{content:""}.ion-thermometer:before{content:""}.ion-thumbsdown:before{content:""}.ion-thumbsup:before{content:""}.ion-toggle:before{content:""}.ion-toggle-filled:before{content:""}.ion-transgender:before{content:""}.ion-trash-a:before{content:""}.ion-trash-b:before{content:""}.ion-trophy:before{content:""}.ion-tshirt:before{content:""}.ion-tshirt-outline:before{content:""}.ion-umbrella:before{content:""}.ion-university:before{content:""}.ion-unlocked:before{content:""}.ion-upload:before{content:""}.ion-usb:before{content:""}.ion-videocamera:before{content:""}.ion-volume-high:before{content:""}.ion-volume-low:before{content:""}.ion-volume-medium:before{content:""}.ion-volume-mute:before{content:""}.ion-wand:before{content:""}.ion-waterdrop:before{content:""}.ion-wifi:before{content:""}.ion-wineglass:before{content:""}.ion-woman:before{content:""}.ion-wrench:before{content:""}.ion-xbox:before{content:""}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif}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}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{vertical-align:middle}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}.tooltip,address{font-style:normal}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{border:0;padding:0}input[type=checkbox],input[type=radio]{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-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{blockquote,img,pre,tr{page-break-inside:avoid}*,:after,:before{background:0 0!important;color:#000!important;box-shadow:none!important;text-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.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}}.btn,.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-warning.active,.btn-warning:active,.btn.active,.btn:active,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover,.navbar-toggle,.open>.btn-danger.dropdown-toggle,.open>.btn-default.dropdown-toggle,.open>.btn-info.dropdown-toggle,.open>.btn-primary.dropdown-toggle,.open>.btn-warning.dropdown-toggle{background-image:none}.img-thumbnail,body{background-color:#fff}*,:after,:before{box-sizing:border-box}html{font-size:10px}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#67808c;text-decoration:none}a:focus,a:hover{color:#465760;text-decoration:underline}a:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.img-responsive{display:block;height:auto}.img-rounded{border-radius:4px}.img-thumbnail{padding:4px;line-height:1.42857143;border:1px solid #ddd;border-radius:3px;transition:all .2s ease-in-out;display:inline-block;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border-top:1px solid #eee}.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after,.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after,.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after,.bootstrap-datetimepicker-widget .btn[data-action=clear]::after,.bootstrap-datetimepicker-widget .btn[data-action=today]::after,.bootstrap-datetimepicker-widget .picker-switch::after,.bootstrap-datetimepicker-widget table th.next::after,.bootstrap-datetimepicker-widget table th.prev::after,.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}select[multiple],select[size],textarea.form-control{height:auto}.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}dt,kbd kbd,label{font-weight:700}address,blockquote .small,blockquote footer,blockquote small,dd,dt,output,pre{line-height:1.42857143}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{background-color:#fcf8e3;padding:.2em}.list-inline,.list-unstyled{padding-left:0;list-style:none}.text-left{text-align:left}.component-inline-update,.text-right{text-align:right}.text-center,body.dashboard .sidebar .sidebar-inner .quick-add-incident{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.initialism,.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#67808c}a.text-primary:focus,a.text-primary:hover{color:#51656f}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#67808c}a.bg-primary:focus,a.bg-primary:hover{background-color:#51656f}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}pre code,table{background-color:transparent}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}dl,ol,ul{margin-top:0}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ol,ul{margin-bottom:10px}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd{margin-left:0}.dl-horizontal dd:after,.dl-horizontal dd:before{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.container{width:750px}}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dropdown-menu>li>a,.form-horizontal .form-group:after,.markdown-body hr::after,.markdown-body::after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar:after,.pager:after,.panel-body:after,.row:after,.setup-page .steps:after,body.dashboard .sidebar .sidebar-inner ul{clear:both}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;color:#777}legend,pre{color:#333}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}code,kbd{padding:2px 4px;font-size:90%}caption,th{text-align:left}.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}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{color:#c7254e;background-color:#f9f2f4;border-radius:3px}kbd{color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before,.setup-page .steps:after,.setup-page .steps:before{display:table;content:" "}.container,.container-fluid{margin-right:auto;margin-left:auto}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.container,.container-fluid{padding-left:15px;padding-right:15px}.pre-scrollable{overflow-y:scroll}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.row,.setup-page .steps{margin-left:-15px;margin-right:-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,.setup-page .steps .step{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3,.setup-page .steps .step{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333333%}.col-xs-push-2{left:16.66666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333333%}.col-xs-push-5{left:41.66666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333333%}.col-xs-push-8{left:66.66666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333333%}.col-xs-push-11{left:91.66666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-12{margin-left:100%}@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-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-12{margin-left:100%}}@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-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-12{margin-left:100%}}@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-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-12{margin-left:100%}}caption{padding-top:8px;padding-bottom:8px;color:#777}.table{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,.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,.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 col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.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{overflow-x:auto;min-height:.01%}@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,legend{padding:0;border:0}fieldset{margin:0;min-width:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px}.checkbox,.radio,input[type=file],output{display:block}input[type=search]{box-sizing:border-box;-webkit-appearance:none}.markdown-body hr,.minicolors-panel,.minicolors-picker{box-sizing:content-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=range]{display:block;width:100%}input[type=checkbox]:focus,input[type=radio]:focus,input[type=file]:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}output{padding-top:7px;font-size:14px;color:#555}.form-control{border-radius:3px}.form-control:focus{outline:0;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}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .form-control-feedback,.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}.form-control::-ms-expand{border:0;background-color:transparent}.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}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{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-group-sm>.input-group-btn>input[type=date].btn,.input-group-sm>.input-group-btn>input[type=time].btn,.input-group-sm>.input-group-btn>input[type=datetime-local].btn,.input-group-sm>.input-group-btn>input[type=month].btn,.input-group-sm>input[type=date].form-control,.input-group-sm>input[type=date].input-group-addon,.input-group-sm>input[type=time].form-control,.input-group-sm>input[type=time].input-group-addon,.input-group-sm>input[type=datetime-local].form-control,.input-group-sm>input[type=datetime-local].input-group-addon,.input-group-sm>input[type=month].form-control,.input-group-sm>input[type=month].input-group-addon,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-group-lg>.input-group-btn>input[type=date].btn,.input-group-lg>.input-group-btn>input[type=time].btn,.input-group-lg>.input-group-btn>input[type=datetime-local].btn,.input-group-lg>.input-group-btn>input[type=month].btn,.input-group-lg>input[type=date].form-control,.input-group-lg>input[type=date].input-group-addon,.input-group-lg>input[type=time].form-control,.input-group-lg>input[type=time].input-group-addon,.input-group-lg>input[type=datetime-local].form-control,.input-group-lg>input[type=datetime-local].input-group-addon,.input-group-lg>input[type=month].form-control,.input-group-lg>input[type=month].input-group-addon,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;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-left:-20px;margin-top:4px\9}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline.disabled,.checkbox.disabled label,.radio-inline.disabled,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio label,fieldset[disabled] .radio-inline,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}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.input-group-sm>.input-group-btn>select.btn,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,select.input-sm{height:30px;line-height:30px}.input-group-sm>.input-group-btn>select[multiple].btn,.input-group-sm>.input-group-btn>textarea.btn,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,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:2px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:4px}.input-group-lg>.input-group-btn>select.btn,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,select.input-lg{height:46px;line-height:46px}.input-group-lg>.input-group-btn>select[multiple].btn,.input-group-lg>.input-group-btn>textarea.btn,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,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:4px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 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}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .form-control{border-color:#3c763d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .form-control-feedback,.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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .form-control-feedback,.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;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-feedback label~.form-control-feedback{top:25px}.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=incrementHours]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=incrementMinutes]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=decrementHours]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=decrementMinutes]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=showHours]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=showMinutes]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=togglePeriod]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=clear]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.btn[data-action=today]::after~.form-control-feedback,.bootstrap-datetimepicker-widget .has-feedback label.picker-switch::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=incrementHours]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=incrementMinutes]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=decrementHours]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=decrementMinutes]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=showHours]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=showMinutes]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=togglePeriod]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=clear]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.btn[data-action=today]::after~.form-control-feedback,.has-feedback .bootstrap-datetimepicker-widget label.picker-switch::after~.form-control-feedback,.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-control-static,.form-inline .form-group{display:inline-block}.form-inline .control-label,.form-inline .form-group{margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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 .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:after,.form-horizontal .form-group:before{content:" ";display:table}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:3px;-webkit-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e5e5;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.btn-default:hover,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e5e5;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.btn-default.dropdown-toggle.focus,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,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:#67808c;border-color:#5c727d}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#51656f;border-color:#262f34}.btn-primary.active,.btn-primary:active,.btn-primary:hover,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#51656f;border-color:#42525a}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#42525a;border-color:#262f34}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#67808c;border-color:#5c727d}.btn-primary .badge{color:#67808c;background-color:#fff}.btn-success{color:#fff;background-color:#7ED321;border-color:#71bd1e}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#64a71a;border-color:#2f4f0c}.btn-success.active,.btn-success:active,.btn-success:hover,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#64a71a;border-color:#518815}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#518815;border-color:#2f4f0c}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#7ED321;border-color:#71bd1e}.btn-success .badge{color:#7ED321;background-color:#fff}.btn-info{color:#fff;background-color:#3498db;border-color:#258cd1}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#217dbb;border-color:#124364}.btn-info.active,.btn-info:active,.btn-info:hover,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#217dbb;border-color:#1c699d}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#1c699d;border-color:#124364}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#3498db;border-color:#258cd1}.btn-info .badge{color:#3498db;background-color:#fff}.btn-warning{color:#fff;background-color:#F80;border-color:#e67a00}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#cc6d00;border-color:#663600}.btn-warning.active,.btn-warning:active,.btn-warning:hover,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#cc6d00;border-color:#a85a00}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#a85a00;border-color:#663600}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#F80;border-color:#e67a00}.btn-warning .badge{color:#F80;background-color:#fff}.btn-danger{color:#fff;background-color:#ff6f6f;border-color:#ff5656}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#ff3c3c;border-color:#d50000}.btn-danger.active,.btn-danger:active,.btn-danger:hover,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#ff3c3c;border-color:#ff1818}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#ff1818;border-color:#d50000}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ff6f6f;border-color:#ff5656}.btn-danger .badge{color:#ff6f6f;background-color:#fff}.btn-link{color:#67808c;font-weight:400;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#465760;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:4px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:2px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:2px}.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%}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;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;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:3px;box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu-right,.dropdown-menu.pull-right{left:auto;right:0}.dropdown-header,.dropdown-menu>li>a{display:block;padding:3px 20px;line-height:1.42857143;white-space:nowrap}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle,.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child,.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child),.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn,.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{font-weight:400;color:#333}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#67808c}.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;background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{font-size:12px;color:#777}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9;content:""}.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{left:0;right:auto}}.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:after,.btn-toolbar:before{content:" ";display:table}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn .caret,.btn-group>.btn:first-child{margin-left:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group-lg.btn-group>.btn+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{box-shadow:none}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:5px 5px 0}.dropup .btn-group-lg>.btn .caret,.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:after,.btn-group-vertical>.btn-group:before{content:" ";display:table}.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:first-child:not(:last-child){border-radius:3px 3px 0 0}.btn-group-vertical>.btn:last-child:not(:first-child){border-radius:0 0 3px 3px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn,.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}.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-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;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,.input-group-btn,.input-group-btn>.btn{position:relative}.input-group{display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.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:3px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:2px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:4px}.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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.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{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:after,.nav:before{content:" ";display:table}.nav>li,.nav>li>a{display:block;position:relative}.nav>li>a{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;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#67808c}.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:3px 3px 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;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-justified>li,.nav-stacked>li,.nav-tabs.nav-justified>li{float:none}.nav-pills>li>a{border-radius:3px}.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:#67808c}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:3px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.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-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before{display:table;content:" "}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar-header:after{clear:both}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar{border-radius:3px}.navbar-header{float:left}.navbar-collapse{width:auto;border-top:0;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-left:0;padding-right:0}}.modal,.modal-open{overflow:hidden}@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}.navbar-static-top{z-index:1000;border-width:0 0 1px}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.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;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@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-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;border:1px solid transparent;border-radius:3px}.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}.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;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}}.badge,.label{line-height:1;white-space:nowrap;text-align:center;font-weight:700}@media (min-width:768px){.navbar-toggle{display:none}.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;border-top:1px solid transparent;border-bottom:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-control-static,.navbar-form .form-group{display:inline-block}.navbar-form .control-label,.navbar-form .form-group{margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.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 .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}.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;box-shadow:none}}.btn .badge,.btn .label{top:-1px;position:relative}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-radius:3px 3px 0 0}.navbar-btn{margin-top:8px;margin-bottom:8px}.btn-group-sm>.navbar-btn.btn,.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.btn-group-xs>.navbar-btn.btn,.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-left:15px;margin-right:15px}.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:#5e5d5d;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{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{background-color:#e7e7e7;color:#555}@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:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{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:#090909}.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{background-color:#090909;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.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:#090909}.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}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:after,.pager:before{content:" ";display:table}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd}.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}.close,.list-group-item>.badge{float:right}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;color:#fff;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#67808c}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#51656f}.label-success{background-color:#7ED321}.label-success[href]:focus,.label-success[href]:hover{background-color:#64a71a}.label-info{background-color:#3498db}.label-info[href]:focus,.label-info[href]:hover{background-color:#217dbb}.label-warning{background-color:#F80}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#cc6d00}.label-danger{background-color:#ff6f6f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#ff3c3c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;color:#fff;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#67808c;background-color:#fff}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.alert{padding:15px;margin-bottom:20px}.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}.modal,.modal-backdrop{top:0;right:0;bottom:0;left:0}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}.list-group{margin-bottom:20px;padding-left:0}.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-right-radius:3px;border-top-left-radius:3px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{background-color:#eee;color:#777;cursor:not-allowed}.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:#67808c;border-color:#67808c}.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:#dbe1e4}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.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,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.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,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.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,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.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,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.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,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.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,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.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,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.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:3px;box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-title,.panel>.list-group,.panel>.panel-collapse>.list-group,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel-body{padding:15px}.panel-body:after,.panel-body:before{content:" ";display:table}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px}.panel-title{margin-top:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel-group .panel-heading,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.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-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>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,.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-responsive:last-child>.table:last-child,.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,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.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-right-radius:2px;border-top-left-radius:2px}.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:2px;border-bottom-left-radius:2px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.table-responsive:first-child>.table:first-child,.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,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-right-radius:2px;border-top-left-radius:2px}.list-group+.panel-footer,.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-left:15px;padding-right:15px}.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:2px}.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:2px}.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:2px}.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:2px}.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-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:3px}.panel-group .panel+.panel{margin-top:5px}.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:#67808c}.panel-primary>.panel-heading{color:#fff;background-color:#67808c;border-color:#67808c}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#67808c}.panel-primary>.panel-heading .badge{color:#67808c;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#67808c}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;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:4px}.well-sm{padding:9px;border-radius:2px}.close{font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.modal-title,.tooltip{line-height:1.42857143}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal{display:none;position:fixed;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before{display:table;content:" "}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);transform:translate(0,-25%);transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}.modal.in .modal-dialog{-webkit-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;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:4px;box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.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{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-weight:400;letter-spacing:normal;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#333;border-radius:3px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow,.tooltip.top-left .tooltip-arrow,.tooltip.top-right .tooltip-arrow{border-width:5px 5px 0;border-top-color:#333;bottom:0}.tooltip.top .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.top-left .tooltip-arrow{right:5px;margin-bottom:-5px}.tooltip.top-right .tooltip-arrow{left:5px;margin-bottom:-5px}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#333}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#333}.tooltip.bottom .tooltip-arrow,.tooltip.bottom-left .tooltip-arrow,.tooltip.bottom-right .tooltip-arrow{top:0;border-width:0 5px 5px;border-bottom-color:#333}.tooltip.bottom .tooltip-arrow{left:50%;margin-left:-5px}.tooltip.bottom-left .tooltip-arrow{right:5px;margin-top:-5px}.tooltip.bottom-right .tooltip-arrow{left:5px;margin-top:-5px}.clearfix:after,.clearfix:before{content:" ";display:table}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.hidden,.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,body.dashboard .sidebar .sidebar-inner .quick-add-incident i{display:none!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}body.dashboard,html{-webkit-font-smoothing:antialiased}div[role=tabpanel] .tab-content,div[role=tabpanel] ul.nav-tabs{border-bottom:1px solid #d5d8d7}.affix{position:fixed}.markdown-control,html{position:relative}@-ms-viewport{width:device-width}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-block{display:block!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm,body.dashboard .sidebar .sidebar-inner .quick-add-incident i{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-block{display:block!important}.visible-sm-inline{display:inline!important}.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!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-block{display:block!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-block{display:block!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}.hidden-lg{display:none!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,body.dashboard .sidebar .bottom-menu-sidebar,body.dashboard .sidebar .sidebar-inner .quick-add-incident span,body.dashboard .sidebar .sidebar-inner>ul>li>a>span{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}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}.hidden-print{display:none!important}}html{min-height:100%;overflow-y:scroll}body{margin-bottom:60px;padding-bottom:60px;-webkit-backface-visibility:hidden}.uppercase{text-transform:uppercase}.margin-top{margin-top:20px}.margin-bottom{margin-bottom:20px}.no-select{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}div[role=tabpanel] ul.nav-tabs li a{font-weight:400;display:inline-block;padding:10px 25px;border-radius:0;font-size:.9em;letter-spacing:.01em}div[role=tabpanel] .tab-content{border-left:1px solid #d5d8d7;border-right:1px solid #d5d8d7;background-color:#fff}div[role=tabpanel] .tab-content .tab-pane{padding:10px}label{font-size:14px}textarea{resize:none;overflow:auto}.markdown-control:before{position:absolute;display:block;right:0;bottom:0;width:40px;height:40px;font-size:2em;font-family:Ionicons;content:"\f4e6"}.form-control{display:block;width:100%;height:45px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;box-shadow:none!important;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9}@media (max-width:767px){.component-inline .radio-items{text-align:left}.component-inline .radio-items .radio-inline{margin-left:0;width:100%}}.well{border-radius:0}.alert{border-radius:4px;background:#F7CA18;border:2px solid #d5ab07}.alert.alert-success{background-color:#7ED321;border:2px solid #64a71a;color:#fff}.alert.alert-success a{color:#fff;font-weight:700}.alert.alert-info{background:#3498db;border:2px solid #217dbb;color:#fff}.alert.alert-info a{color:#fff;font-weight:700}.alert.alert-danger{background:#ff6f6f;border:2px solid #ff3c3c;color:#fff}.alert.alert-danger a{color:#fff;font-weight:700}.panel-danger{border-color:#ff3c3c}.panel-danger>.panel-heading{color:#fff;background-color:#ff6f6f;border-color:#ff3c3c}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ff3c3c}.panel-danger>.panel-heading .badge{color:#ff6f6f;background-color:#fff}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ff3c3c}.panel-success{border-color:#64a71a}.panel-success>.panel-heading{color:#fff;background-color:#7ED321;border-color:#64a71a}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#64a71a}.panel-success>.panel-heading .badge{color:#7ED321;background-color:#fff}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#64a71a}.panel-info{border-color:#217dbb}.panel-info>.panel-heading{color:#fff;background-color:#3498db;border-color:#217dbb}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#217dbb}.panel-info>.panel-heading .badge{color:#3498db;background-color:#fff}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#217dbb}.panel-warning{border-color:#d5ab07}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#F7CA18;border-color:#d5ab07}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d5ab07}.panel-warning>.panel-heading .badge{color:#F7CA18;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d5ab07}.btn.btn-default{color:#333;background:#fff;border:1px solid #e6e5e5}.btn.btn-default.active,.btn.btn-default:active,.btn.btn-default:focus,.btn.btn-default:hover{background:#f2f2f2;border-color:#e6e5e5;color:#333;outline:0;outline-offset:0}.btn.btn-default.disabled,.btn.btn-default.disabled.active,.btn.btn-default.disabled:active,.btn.btn-default.disabled:focus,.btn.btn-default.disabled:hover,.btn.btn-default[disabled],.btn.btn-default[disabled].active,.btn.btn-default[disabled]:active,.btn.btn-default[disabled]:focus,.btn.btn-default[disabled]:hover,fieldset[disabled] .btn.btn-default,fieldset[disabled] .btn.btn-default.active,fieldset[disabled] .btn.btn-default:active,fieldset[disabled] .btn.btn-default:focus,fieldset[disabled] .btn.btn-default:hover{background-color:#fff;border-color:#e6e5e5}.btn.btn-primary{color:#fff;background:#67808c;border:1px solid #51656f}.btn.btn-primary.active,.btn.btn-primary:active,.btn.btn-primary:focus,.btn.btn-primary:hover{background:#5c727d;border-color:#51656f;color:#fff;outline:0;outline-offset:0}.btn.btn-primary.disabled,.btn.btn-primary.disabled.active,.btn.btn-primary.disabled:active,.btn.btn-primary.disabled:focus,.btn.btn-primary.disabled:hover,.btn.btn-primary[disabled],.btn.btn-primary[disabled].active,.btn.btn-primary[disabled]:active,.btn.btn-primary[disabled]:focus,.btn.btn-primary[disabled]:hover,fieldset[disabled] .btn.btn-primary,fieldset[disabled] .btn.btn-primary.active,fieldset[disabled] .btn.btn-primary:active,fieldset[disabled] .btn.btn-primary:focus,fieldset[disabled] .btn.btn-primary:hover{background-color:#748c99;border-color:#51656f}.btn.btn-success{color:#fff;background:#7ED321;border:1px solid #64a71a}.btn.btn-success.active,.btn.btn-success:active,.btn.btn-success:focus,.btn.btn-success:hover{background:#71bd1e;border-color:#64a71a;color:#fff;outline:0;outline-offset:0}.btn.btn-success.disabled,.btn.btn-success.disabled.active,.btn.btn-success.disabled:active,.btn.btn-success.disabled:focus,.btn.btn-success.disabled:hover,.btn.btn-success[disabled],.btn.btn-success[disabled].active,.btn.btn-success[disabled]:active,.btn.btn-success[disabled]:focus,.btn.btn-success[disabled]:hover,fieldset[disabled] .btn.btn-success,fieldset[disabled] .btn.btn-success.active,fieldset[disabled] .btn.btn-success:active,fieldset[disabled] .btn.btn-success:focus,fieldset[disabled] .btn.btn-success:hover{background-color:#8bde2f;border-color:#64a71a}.btn.btn-info{color:#fff;background:#3498db;border:1px solid #217dbb}.btn.btn-info.active,.btn.btn-info:active,.btn.btn-info:focus,.btn.btn-info:hover{background:#258cd1;border-color:#217dbb;color:#fff;outline:0;outline-offset:0}.btn.btn-info.disabled,.btn.btn-info.disabled.active,.btn.btn-info.disabled:active,.btn.btn-info.disabled:focus,.btn.btn-info.disabled:hover,.btn.btn-info[disabled],.btn.btn-info[disabled].active,.btn.btn-info[disabled]:active,.btn.btn-info[disabled]:focus,.btn.btn-info[disabled]:hover,fieldset[disabled] .btn.btn-info,fieldset[disabled] .btn.btn-info.active,fieldset[disabled] .btn.btn-info:active,fieldset[disabled] .btn.btn-info:focus,fieldset[disabled] .btn.btn-info:hover{background-color:#4aa3df;border-color:#217dbb}.btn.btn-warning{color:#fff;background:#F80;border:1px solid #cc6d00}.btn.btn-warning.active,.btn.btn-warning:active,.btn.btn-warning:focus,.btn.btn-warning:hover{background:#e67a00;border-color:#cc6d00;color:#fff;outline:0;outline-offset:0}.btn.btn-warning.disabled,.btn.btn-warning.disabled.active,.btn.btn-warning.disabled:active,.btn.btn-warning.disabled:focus,.btn.btn-warning.disabled:hover,.btn.btn-warning[disabled],.btn.btn-warning[disabled].active,.btn.btn-warning[disabled]:active,.btn.btn-warning[disabled]:focus,.btn.btn-warning[disabled]:hover,fieldset[disabled] .btn.btn-warning,fieldset[disabled] .btn.btn-warning.active,fieldset[disabled] .btn.btn-warning:active,fieldset[disabled] .btn.btn-warning:focus,fieldset[disabled] .btn.btn-warning:hover{background-color:#ff941a;border-color:#cc6d00}.btn.btn-danger{color:#fff;background:#ff6f6f;border:1px solid #ff3c3c}.btn.btn-danger.active,.btn.btn-danger:active,.btn.btn-danger:focus,.btn.btn-danger:hover{background:#ff5656;border-color:#ff3c3c;color:#fff;outline:0;outline-offset:0}.btn.btn-danger.disabled,.btn.btn-danger.disabled.active,.btn.btn-danger.disabled:active,.btn.btn-danger.disabled:focus,.btn.btn-danger.disabled:hover,.btn.btn-danger[disabled],.btn.btn-danger[disabled].active,.btn.btn-danger[disabled]:active,.btn.btn-danger[disabled]:focus,.btn.btn-danger[disabled]:hover,fieldset[disabled] .btn.btn-danger,fieldset[disabled] .btn.btn-danger.active,fieldset[disabled] .btn.btn-danger:active,fieldset[disabled] .btn.btn-danger:focus,fieldset[disabled] .btn.btn-danger:hover{background-color:#ff8989;border-color:#ff3c3c}.btn.btn-inverse{color:#fff;background:#474949;border:1px solid #2e2f2f}.btn.btn-inverse.active,.btn.btn-inverse:active,.btn.btn-inverse:focus,.btn.btn-inverse:hover{background:#3a3c3c;border-color:#2e2f2f;color:#fff;outline:0;outline-offset:0}.btn.btn-inverse.disabled,.btn.btn-inverse.disabled.active,.btn.btn-inverse.disabled:active,.btn.btn-inverse.disabled:focus,.btn.btn-inverse.disabled:hover,.btn.btn-inverse[disabled],.btn.btn-inverse[disabled].active,.btn.btn-inverse[disabled]:active,.btn.btn-inverse[disabled]:focus,.btn.btn-inverse[disabled]:hover,fieldset[disabled] .btn.btn-inverse,fieldset[disabled] .btn.btn-inverse.active,fieldset[disabled] .btn.btn-inverse:active,fieldset[disabled] .btn.btn-inverse:focus,fieldset[disabled] .btn.btn-inverse:hover{background-color:#545656;border-color:#2e2f2f}.btn-outline{background-color:transparent;background-image:none!important;color:inherit;transition:all .5s}.btn-default.btn-outline{color:#999}.btn-primary.btn-outline{color:#428bca}.btn-success.btn-outline{color:#5cb85c}.btn-info.btn-outline{color:#5bc0de}.btn-warning.btn-outline{color:#f0ad4e}.btn-danger.btn-outline{color:#d9534f}.btn-danger.btn-outline:hover,.btn-info.btn-outline:hover,.btn-primary.btn-outline:hover,.btn-success.btn-outline:hover,.btn-warning.btn-outline:hover,body.dashboard .navbar a,body.dashboard .navbar a:active,body.dashboard .navbar a:visited{color:#fff}.pager li>a,.pager li>span{border-radius:3px}body.error-page{background-color:#f3f3f4}body.error-page .middle-box{height:400px;width:400px;position:absolute;top:50%;left:50%;margin-top:-250px;margin-left:-200px;z-index:100}body.dashboard,body.dashboard .wrapper{display:table;height:100%;table-layout:fixed}body.error-page .middle-box h1{font-size:9em}body.error-page h3.font-bold{font-weight:600}body.dashboard{font-family:-apple-system,BlinkMacSystemFont,"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;font-size:15px;width:100%;line-height:1.42857143}body.dashboard .wrapper{padding-left:0;transition:all .5s ease}body.dashboard .wrapper.toggled{padding-left:235px}body.dashboard .wrapper.toggled .sidebar{width:235px}body.dashboard .wrapper.toggled .page-content{position:absolute;margin-right:-235px}@media (min-width:768px) and (max-width:991px){body.dashboard .wrapper{padding-left:80px}}@media (min-width:991px){body.dashboard .wrapper{padding-left:235px}body.dashboard .wrapper.toggled{padding-left:0}body.dashboard .wrapper.toggled .page-content{position:relative;margin-right:0}}body.dashboard .alerts .alert h5{margin-top:5px}body.dashboard .wrapper{width:100%}body.dashboard .navbar{z-index:999;border-radius:0;border:none;border-bottom:1px solid #00695c;background:#009c89;margin:0}body.dashboard .navbar a:active:hover,body.dashboard .navbar a:hover,body.dashboard .navbar a:visited:hover{color:#e9e9e9}body.dashboard .navbar .navbar-toggle{margin-top:15px;background:0 0;border-color:transparent}body.dashboard .navbar .navbar-toggle.collapsed span{background-color:#fff}body.dashboard .navbar .navbar-collapse{background:#009c89}body.dashboard .navbar a.navbar-brand{padding:34px 21px;line-height:0;font-size:1.1em;letter-spacing:.04em;font-weight:600;text-transform:uppercase}@media (min-width:991px){body.dashboard .navbar a.navbar-brand span{padding-right:10px}body.dashboard .navbar a.navbar-brand span:before{font-family:FontAwesome;content:"\f060"}}body.dashboard .navbar .nav li a{height:68px;line-height:35px}body.dashboard .sidebar{position:fixed;left:235px;width:0;height:100%;margin-left:-235px;overflow-y:auto;background:#333;box-shadow:inset 0 -2px 3px rgba(0,0,0,.25);z-index:1000;transition:all .5s ease}body.dashboard .sidebar .sidebar-inner{position:absolute;top:0;width:235px;margin:0;padding:0;list-style:none}body.dashboard .sidebar .sidebar-inner .profile{text-align:center;padding:20px 10px;margin-bottom:0}body.dashboard .sidebar .sidebar-inner .profile .dropdown-toggle{text-decoration:none}body.dashboard .sidebar .sidebar-inner .profile .dropdown-menu{top:108%}body.dashboard .sidebar .sidebar-inner .profile .avatar{width:60px}body.dashboard .sidebar .sidebar-inner .profile .avatar img{border-radius:50%;width:50px}body.dashboard .sidebar .sidebar-inner .profile .username{word-break:break-all;margin-bottom:0}body.dashboard .sidebar .sidebar-inner .profile a{color:#fff;text-decoration:none}body.dashboard .sidebar .sidebar-inner .quick-add-incident{padding:10px}body.dashboard .sidebar .sidebar-inner ul{margin:0;padding:0;list-style:none}body.dashboard .sidebar .sidebar-inner ul li{font-size:.9em}body.dashboard .sidebar .sidebar-inner ul li:focus,body.dashboard .sidebar .sidebar-inner ul li:hover{background:#404040!important}body.dashboard .sidebar .sidebar-inner ul li.active{background:#4d4c4c}body.dashboard .sidebar .sidebar-inner ul li.active:hover{background:#595959!important}body.dashboard .sidebar .sidebar-inner ul li.active a{padding-top:14px;padding-bottom:14px;border-top:1px solid #666;border-bottom:1px solid #666;color:#fff}body.dashboard .sidebar .sidebar-inner ul li.active a:focus,body.dashboard .sidebar .sidebar-inner ul li.active a:hover{text-decoration:none}body.dashboard .sidebar .sidebar-inner ul li a{display:block;padding:15px;color:#fff}body.dashboard .sidebar .sidebar-inner ul li a i{font-size:18px;min-width:17px;text-align:center;position:relative;top:1px;margin-right:5px}body.dashboard .sidebar .sidebar-inner ul li a:focus,body.dashboard .sidebar .sidebar-inner ul li a:hover{text-decoration:none}body.dashboard .sidebar .sidebar-inner ul li a span.label{float:right;margin:3px 0}body.dashboard .sidebar .sidebar-inner ul li a span.label.label-info{background-color:#6DB81C}body.dashboard .sidebar .sidebar-inner ul li.sub-nav-item a{padding-left:40px}body.dashboard .sidebar .bottom-menu-sidebar{position:fixed;bottom:0;width:237px;z-index:999}body.dashboard .sidebar .bottom-menu-sidebar ul>li{float:left;display:block;width:33.333%;border-right:1px solid #ddd;border-top:1px solid #ddd}body.dashboard .sidebar .bottom-menu-sidebar ul>li a{color:#333;display:block;position:relative;text-align:center;padding:6px 0;background:#fff}@media (min-width:767px){body.dashboard .sidebar{width:235px}body.dashboard .wrapper.toggled .sidebar{width:0}}@media (min-width:768px) and (max-width:991px){body.dashboard .sidebar{width:80px;left:150px;margin-left:-150px}body.dashboard .sidebar .sidebar-inner{width:80px}body.dashboard .sidebar .sidebar-inner .profile .avatar img{width:40px}body.dashboard .sidebar .sidebar-inner .quick-add-incident .btn{padding:3px 6px}body.dashboard .sidebar .sidebar-inner .quick-add-incident i{font-size:20px}body.dashboard .sidebar .sidebar-inner>ul>li>a{text-align:center}body.dashboard .sidebar .sidebar-inner>ul>li>a>i{font-size:25px}}body.dashboard .sidebar-toggler{float:left;padding:10px;position:relative;top:-15px;left:-5px;margin-right:10px;cursor:pointer}body.dashboard .sidebar-toggler i{font-size:25px}body.dashboard .sub-sidebar{left:0;top:0;bottom:0;position:fixed;margin-left:228px;width:22%;background:#F0F3F4;border-right:1px solid #E8ECF1}body.dashboard .sub-sidebar h3{margin:0;text-align:center;font-size:19px;padding:30px 15px 15px}body.dashboard .sub-sidebar hr{margin-top:5px;margin-bottom:5px}body.dashboard .sub-sidebar ul.menu{list-style-type:none;padding:0;margin:0}body.dashboard .sub-sidebar ul.menu li a{color:#666;display:block;padding:13px 30px;font-size:15px;transition:all .2s linear;text-decoration:none}body.dashboard .sub-sidebar ul.menu li a.active,body.dashboard .sub-sidebar ul.menu li a:hover{color:#6DB81C}body.dashboard .sub-sidebar ul.menu li i{margin-right:5px}body.dashboard .sub-sidebar .sidebar-toggler{position:absolute;top:3px;left:20px;font-size:36px;cursor:pointer}body.dashboard .sub-sidebar+.content-wrapper{top:0;position:relative;margin-left:26%;padding-right:40px!important}@media (max-width:767px){body.dashboard .sub-sidebar{position:relative;margin-left:0;width:100%}body.dashboard .sub-sidebar+.content-wrapper{margin-left:0;padding-left:40px!important;width:100%}}@media (min-width:768px) and (max-width:991px){body.dashboard .sub-sidebar{margin-left:80px;width:25%}body.dashboard .sub-sidebar+.content-wrapper{padding-left:45px!important}}body.dashboard .page-content{width:100%}body.dashboard .page-content .content-wrapper{padding-top:20px;padding-left:40px;padding-right:40px}body.dashboard .page-content .content-wrapper.header-fixed{margin-top:60px}body.dashboard .page-content .header{position:relative;top:0;left:0;color:#333;background-color:#fff;padding:22px 40px;width:100%;height:70px;font-size:1.2em;border-bottom:1px solid #eee;z-index:99}body.dashboard .page-content .header.sub-header{padding:8px 2px;height:50px}body.dashboard .page-content .header.fixed{position:fixed;padding-left:270px}body.dashboard .page-content .header .btn,body.dashboard .page-content .header button,body.dashboard .page-content .header input{position:relative;top:-4px}body.dashboard .page-content .header input{width:20%}.setup-page body.dashboard .page-content .header+.steps,body.dashboard .page-content .header+.row,body.dashboard .page-content .setup-page .header+.steps{margin-top:23px}body.dashboard .page-content .header h3{color:#444;margin-top:0;text-transform:uppercase}body.dashboard .page-content .header .ion,body.dashboard .page-content .header .ion-alert-circled:before,body.dashboard .page-content .header .ion-alert:before,body.dashboard .page-content .header .ion-android-add-circle:before,body.dashboard .page-content .header .ion-android-add:before,body.dashboard .page-content .header .ion-android-alarm-clock:before,body.dashboard .page-content .header .ion-android-alert:before,body.dashboard .page-content .header .ion-android-apps:before,body.dashboard .page-content .header .ion-android-archive:before,body.dashboard .page-content .header .ion-android-arrow-back:before,body.dashboard .page-content .header .ion-android-arrow-down:before,body.dashboard .page-content .header .ion-android-arrow-dropdown-circle:before,body.dashboard .page-content .header .ion-android-arrow-dropdown:before,body.dashboard .page-content .header .ion-android-arrow-dropleft-circle:before,body.dashboard .page-content .header .ion-android-arrow-dropleft:before,body.dashboard .page-content .header .ion-android-arrow-dropright-circle:before,body.dashboard .page-content .header .ion-android-arrow-dropright:before,body.dashboard .page-content .header .ion-android-arrow-dropup-circle:before,body.dashboard .page-content .header .ion-android-arrow-dropup:before,body.dashboard .page-content .header .ion-android-arrow-forward:before,body.dashboard .page-content .header .ion-android-arrow-up:before,body.dashboard .page-content .header .ion-android-attach:before,body.dashboard .page-content .header .ion-android-bar:before,body.dashboard .page-content .header .ion-android-bicycle:before,body.dashboard .page-content .header .ion-android-boat:before,body.dashboard .page-content .header .ion-android-bookmark:before,body.dashboard .page-content .header .ion-android-bulb:before,body.dashboard .page-content .header .ion-android-bus:before,body.dashboard .page-content .header .ion-android-calendar:before,body.dashboard .page-content .header .ion-android-call:before,body.dashboard .page-content .header .ion-android-camera:before,body.dashboard .page-content .header .ion-android-cancel:before,body.dashboard .page-content .header .ion-android-car:before,body.dashboard .page-content .header .ion-android-cart:before,body.dashboard .page-content .header .ion-android-chat:before,body.dashboard .page-content .header .ion-android-checkbox-blank:before,body.dashboard .page-content .header .ion-android-checkbox-outline-blank:before,body.dashboard .page-content .header .ion-android-checkbox-outline:before,body.dashboard .page-content .header .ion-android-checkbox:before,body.dashboard .page-content .header .ion-android-checkmark-circle:before,body.dashboard .page-content .header .ion-android-clipboard:before,body.dashboard .page-content .header .ion-android-close:before,body.dashboard .page-content .header .ion-android-cloud-circle:before,body.dashboard .page-content .header .ion-android-cloud-done:before,body.dashboard .page-content .header .ion-android-cloud-outline:before,body.dashboard .page-content .header .ion-android-cloud:before,body.dashboard .page-content .header .ion-android-color-palette:before,body.dashboard .page-content .header .ion-android-compass:before,body.dashboard .page-content .header .ion-android-contact:before,body.dashboard .page-content .header .ion-android-contacts:before,body.dashboard .page-content .header .ion-android-contract:before,body.dashboard .page-content .header .ion-android-create:before,body.dashboard .page-content .header .ion-android-delete:before,body.dashboard .page-content .header .ion-android-desktop:before,body.dashboard .page-content .header .ion-android-document:before,body.dashboard .page-content .header .ion-android-done-all:before,body.dashboard .page-content .header .ion-android-done:before,body.dashboard .page-content .header .ion-android-download:before,body.dashboard .page-content .header .ion-android-drafts:before,body.dashboard .page-content .header .ion-android-exit:before,body.dashboard .page-content .header .ion-android-expand:before,body.dashboard .page-content .header .ion-android-favorite-outline:before,body.dashboard .page-content .header .ion-android-favorite:before,body.dashboard .page-content .header .ion-android-film:before,body.dashboard .page-content .header .ion-android-folder-open:before,body.dashboard .page-content .header .ion-android-folder:before,body.dashboard .page-content .header .ion-android-funnel:before,body.dashboard .page-content .header .ion-android-globe:before,body.dashboard .page-content .header .ion-android-hand:before,body.dashboard .page-content .header .ion-android-hangout:before,body.dashboard .page-content .header .ion-android-happy:before,body.dashboard .page-content .header .ion-android-home:before,body.dashboard .page-content .header .ion-android-image:before,body.dashboard .page-content .header .ion-android-laptop:before,body.dashboard .page-content .header .ion-android-list:before,body.dashboard .page-content .header .ion-android-locate:before,body.dashboard .page-content .header .ion-android-lock:before,body.dashboard .page-content .header .ion-android-mail:before,body.dashboard .page-content .header .ion-android-map:before,body.dashboard .page-content .header .ion-android-menu:before,body.dashboard .page-content .header .ion-android-microphone-off:before,body.dashboard .page-content .header .ion-android-microphone:before,body.dashboard .page-content .header .ion-android-more-horizontal:before,body.dashboard .page-content .header .ion-android-more-vertical:before,body.dashboard .page-content .header .ion-android-navigate:before,body.dashboard .page-content .header .ion-android-notifications-none:before,body.dashboard .page-content .header .ion-android-notifications-off:before,body.dashboard .page-content .header .ion-android-notifications:before,body.dashboard .page-content .header .ion-android-open:before,body.dashboard .page-content .header .ion-android-options:before,body.dashboard .page-content .header .ion-android-people:before,body.dashboard .page-content .header .ion-android-person-add:before,body.dashboard .page-content .header .ion-android-person:before,body.dashboard .page-content .header .ion-android-phone-landscape:before,body.dashboard .page-content .header .ion-android-phone-portrait:before,body.dashboard .page-content .header .ion-android-pin:before,body.dashboard .page-content .header .ion-android-plane:before,body.dashboard .page-content .header .ion-android-playstore:before,body.dashboard .page-content .header .ion-android-print:before,body.dashboard .page-content .header .ion-android-radio-button-off:before,body.dashboard .page-content .header .ion-android-radio-button-on:before,body.dashboard .page-content .header .ion-android-refresh:before,body.dashboard .page-content .header .ion-android-remove-circle:before,body.dashboard .page-content .header .ion-android-remove:before,body.dashboard .page-content .header .ion-android-restaurant:before,body.dashboard .page-content .header .ion-android-sad:before,body.dashboard .page-content .header .ion-android-search:before,body.dashboard .page-content .header .ion-android-send:before,body.dashboard .page-content .header .ion-android-settings:before,body.dashboard .page-content .header .ion-android-share-alt:before,body.dashboard .page-content .header .ion-android-share:before,body.dashboard .page-content .header .ion-android-star-half:before,body.dashboard .page-content .header .ion-android-star-outline:before,body.dashboard .page-content .header .ion-android-star:before,body.dashboard .page-content .header .ion-android-stopwatch:before,body.dashboard .page-content .header .ion-android-subway:before,body.dashboard .page-content .header .ion-android-sunny:before,body.dashboard .page-content .header .ion-android-sync:before,body.dashboard .page-content .header .ion-android-textsms:before,body.dashboard .page-content .header .ion-android-time:before,body.dashboard .page-content .header .ion-android-train:before,body.dashboard .page-content .header .ion-android-unlock:before,body.dashboard .page-content .header .ion-android-upload:before,body.dashboard .page-content .header .ion-android-volume-down:before,body.dashboard .page-content .header .ion-android-volume-mute:before,body.dashboard .page-content .header .ion-android-volume-off:before,body.dashboard .page-content .header .ion-android-volume-up:before,body.dashboard .page-content .header .ion-android-walk:before,body.dashboard .page-content .header .ion-android-warning:before,body.dashboard .page-content .header .ion-android-watch:before,body.dashboard .page-content .header .ion-android-wifi:before,body.dashboard .page-content .header .ion-aperture:before,body.dashboard .page-content .header .ion-archive:before,body.dashboard .page-content .header .ion-arrow-down-a:before,body.dashboard .page-content .header .ion-arrow-down-b:before,body.dashboard .page-content .header .ion-arrow-down-c:before,body.dashboard .page-content .header .ion-arrow-expand:before,body.dashboard .page-content .header .ion-arrow-graph-down-left:before,body.dashboard .page-content .header .ion-arrow-graph-down-right:before,body.dashboard .page-content .header .ion-arrow-graph-up-left:before,body.dashboard .page-content .header .ion-arrow-graph-up-right:before,body.dashboard .page-content .header .ion-arrow-left-a:before,body.dashboard .page-content .header .ion-arrow-left-b:before,body.dashboard .page-content .header .ion-arrow-left-c:before,body.dashboard .page-content .header .ion-arrow-move:before,body.dashboard .page-content .header .ion-arrow-resize:before,body.dashboard .page-content .header .ion-arrow-return-left:before,body.dashboard .page-content .header .ion-arrow-return-right:before,body.dashboard .page-content .header .ion-arrow-right-a:before,body.dashboard .page-content .header .ion-arrow-right-b:before,body.dashboard .page-content .header .ion-arrow-right-c:before,body.dashboard .page-content .header .ion-arrow-shrink:before,body.dashboard .page-content .header .ion-arrow-swap:before,body.dashboard .page-content .header .ion-arrow-up-a:before,body.dashboard .page-content .header .ion-arrow-up-b:before,body.dashboard .page-content .header .ion-arrow-up-c:before,body.dashboard .page-content .header .ion-asterisk:before,body.dashboard .page-content .header .ion-at:before,body.dashboard .page-content .header .ion-backspace-outline:before,body.dashboard .page-content .header .ion-backspace:before,body.dashboard .page-content .header .ion-bag:before,body.dashboard .page-content .header .ion-battery-charging:before,body.dashboard .page-content .header .ion-battery-empty:before,body.dashboard .page-content .header .ion-battery-full:before,body.dashboard .page-content .header .ion-battery-half:before,body.dashboard .page-content .header .ion-battery-low:before,body.dashboard .page-content .header .ion-beaker:before,body.dashboard .page-content .header .ion-beer:before,body.dashboard .page-content .header .ion-bluetooth:before,body.dashboard .page-content .header .ion-bonfire:before,body.dashboard .page-content .header .ion-bookmark:before,body.dashboard .page-content .header .ion-bowtie:before,body.dashboard .page-content .header .ion-briefcase:before,body.dashboard .page-content .header .ion-bug:before,body.dashboard .page-content .header .ion-calculator:before,body.dashboard .page-content .header .ion-calendar:before,body.dashboard .page-content .header .ion-camera:before,body.dashboard .page-content .header .ion-card:before,body.dashboard .page-content .header .ion-cash:before,body.dashboard .page-content .header .ion-chatbox-working:before,body.dashboard .page-content .header .ion-chatbox:before,body.dashboard .page-content .header .ion-chatboxes:before,body.dashboard .page-content .header .ion-chatbubble-working:before,body.dashboard .page-content .header .ion-chatbubble:before,body.dashboard .page-content .header .ion-chatbubbles:before,body.dashboard .page-content .header .ion-checkmark-circled:before,body.dashboard .page-content .header .ion-checkmark-round:before,body.dashboard .page-content .header .ion-checkmark:before,body.dashboard .page-content .header .ion-chevron-down:before,body.dashboard .page-content .header .ion-chevron-left:before,body.dashboard .page-content .header .ion-chevron-right:before,body.dashboard .page-content .header .ion-chevron-up:before,body.dashboard .page-content .header .ion-clipboard:before,body.dashboard .page-content .header .ion-clock:before,body.dashboard .page-content .header .ion-close-circled:before,body.dashboard .page-content .header .ion-close-round:before,body.dashboard .page-content .header .ion-close:before,body.dashboard .page-content .header .ion-closed-captioning:before,body.dashboard .page-content .header .ion-cloud:before,body.dashboard .page-content .header .ion-code-download:before,body.dashboard .page-content .header .ion-code-working:before,body.dashboard .page-content .header .ion-code:before,body.dashboard .page-content .header .ion-coffee:before,body.dashboard .page-content .header .ion-compass:before,body.dashboard .page-content .header .ion-compose:before,body.dashboard .page-content .header .ion-connection-bars:before,body.dashboard .page-content .header .ion-contrast:before,body.dashboard .page-content .header .ion-crop:before,body.dashboard .page-content .header .ion-cube:before,body.dashboard .page-content .header .ion-disc:before,body.dashboard .page-content .header .ion-document-text:before,body.dashboard .page-content .header .ion-document:before,body.dashboard .page-content .header .ion-drag:before,body.dashboard .page-content .header .ion-earth:before,body.dashboard .page-content .header .ion-easel:before,body.dashboard .page-content .header .ion-edit:before,body.dashboard .page-content .header .ion-egg:before,body.dashboard .page-content .header .ion-eject:before,body.dashboard .page-content .header .ion-email-unread:before,body.dashboard .page-content .header .ion-email:before,body.dashboard .page-content .header .ion-erlenmeyer-flask-bubbles:before,body.dashboard .page-content .header .ion-erlenmeyer-flask:before,body.dashboard .page-content .header .ion-eye-disabled:before,body.dashboard .page-content .header .ion-eye:before,body.dashboard .page-content .header .ion-female:before,body.dashboard .page-content .header .ion-filing:before,body.dashboard .page-content .header .ion-film-marker:before,body.dashboard .page-content .header .ion-fireball:before,body.dashboard .page-content .header .ion-flag:before,body.dashboard .page-content .header .ion-flame:before,body.dashboard .page-content .header .ion-flash-off:before,body.dashboard .page-content .header .ion-flash:before,body.dashboard .page-content .header .ion-folder:before,body.dashboard .page-content .header .ion-fork-repo:before,body.dashboard .page-content .header .ion-fork:before,body.dashboard .page-content .header .ion-forward:before,body.dashboard .page-content .header .ion-funnel:before,body.dashboard .page-content .header .ion-gear-a:before,body.dashboard .page-content .header .ion-gear-b:before,body.dashboard .page-content .header .ion-grid:before,body.dashboard .page-content .header .ion-hammer:before,body.dashboard .page-content .header .ion-happy-outline:before,body.dashboard .page-content .header .ion-happy:before,body.dashboard .page-content .header .ion-headphone:before,body.dashboard .page-content .header .ion-heart-broken:before,body.dashboard .page-content .header .ion-heart:before,body.dashboard .page-content .header .ion-help-buoy:before,body.dashboard .page-content .header .ion-help-circled:before,body.dashboard .page-content .header .ion-help:before,body.dashboard .page-content .header .ion-home:before,body.dashboard .page-content .header .ion-icecream:before,body.dashboard .page-content .header .ion-image:before,body.dashboard .page-content .header .ion-images:before,body.dashboard .page-content .header .ion-information-circled:before,body.dashboard .page-content .header .ion-information:before,body.dashboard .page-content .header .ion-ionic:before,body.dashboard .page-content .header .ion-ios-alarm-outline:before,body.dashboard .page-content .header .ion-ios-alarm:before,body.dashboard .page-content .header .ion-ios-albums-outline:before,body.dashboard .page-content .header .ion-ios-albums:before,body.dashboard .page-content .header .ion-ios-americanfootball-outline:before,body.dashboard .page-content .header .ion-ios-americanfootball:before,body.dashboard .page-content .header .ion-ios-analytics-outline:before,body.dashboard .page-content .header .ion-ios-analytics:before,body.dashboard .page-content .header .ion-ios-arrow-back:before,body.dashboard .page-content .header .ion-ios-arrow-down:before,body.dashboard .page-content .header .ion-ios-arrow-forward:before,body.dashboard .page-content .header .ion-ios-arrow-left:before,body.dashboard .page-content .header .ion-ios-arrow-right:before,body.dashboard .page-content .header .ion-ios-arrow-thin-down:before,body.dashboard .page-content .header .ion-ios-arrow-thin-left:before,body.dashboard .page-content .header .ion-ios-arrow-thin-right:before,body.dashboard .page-content .header .ion-ios-arrow-thin-up:before,body.dashboard .page-content .header .ion-ios-arrow-up:before,body.dashboard .page-content .header .ion-ios-at-outline:before,body.dashboard .page-content .header .ion-ios-at:before,body.dashboard .page-content .header .ion-ios-barcode-outline:before,body.dashboard .page-content .header .ion-ios-barcode:before,body.dashboard .page-content .header .ion-ios-baseball-outline:before,body.dashboard .page-content .header .ion-ios-baseball:before,body.dashboard .page-content .header .ion-ios-basketball-outline:before,body.dashboard .page-content .header .ion-ios-basketball:before,body.dashboard .page-content .header .ion-ios-bell-outline:before,body.dashboard .page-content .header .ion-ios-bell:before,body.dashboard .page-content .header .ion-ios-body-outline:before,body.dashboard .page-content .header .ion-ios-body:before,body.dashboard .page-content .header .ion-ios-bolt-outline:before,body.dashboard .page-content .header .ion-ios-bolt:before,body.dashboard .page-content .header .ion-ios-book-outline:before,body.dashboard .page-content .header .ion-ios-book:before,body.dashboard .page-content .header .ion-ios-bookmarks-outline:before,body.dashboard .page-content .header .ion-ios-bookmarks:before,body.dashboard .page-content .header .ion-ios-box-outline:before,body.dashboard .page-content .header .ion-ios-box:before,body.dashboard .page-content .header .ion-ios-briefcase-outline:before,body.dashboard .page-content .header .ion-ios-briefcase:before,body.dashboard .page-content .header .ion-ios-browsers-outline:before,body.dashboard .page-content .header .ion-ios-browsers:before,body.dashboard .page-content .header .ion-ios-calculator-outline:before,body.dashboard .page-content .header .ion-ios-calculator:before,body.dashboard .page-content .header .ion-ios-calendar-outline:before,body.dashboard .page-content .header .ion-ios-calendar:before,body.dashboard .page-content .header .ion-ios-camera-outline:before,body.dashboard .page-content .header .ion-ios-camera:before,body.dashboard .page-content .header .ion-ios-cart-outline:before,body.dashboard .page-content .header .ion-ios-cart:before,body.dashboard .page-content .header .ion-ios-chatboxes-outline:before,body.dashboard .page-content .header .ion-ios-chatboxes:before,body.dashboard .page-content .header .ion-ios-chatbubble-outline:before,body.dashboard .page-content .header .ion-ios-chatbubble:before,body.dashboard .page-content .header .ion-ios-checkmark-empty:before,body.dashboard .page-content .header .ion-ios-checkmark-outline:before,body.dashboard .page-content .header .ion-ios-checkmark:before,body.dashboard .page-content .header .ion-ios-circle-filled:before,body.dashboard .page-content .header .ion-ios-circle-outline:before,body.dashboard .page-content .header .ion-ios-clock-outline:before,body.dashboard .page-content .header .ion-ios-clock:before,body.dashboard .page-content .header .ion-ios-close-empty:before,body.dashboard .page-content .header .ion-ios-close-outline:before,body.dashboard .page-content .header .ion-ios-close:before,body.dashboard .page-content .header .ion-ios-cloud-download-outline:before,body.dashboard .page-content .header .ion-ios-cloud-download:before,body.dashboard .page-content .header .ion-ios-cloud-outline:before,body.dashboard .page-content .header .ion-ios-cloud-upload-outline:before,body.dashboard .page-content .header .ion-ios-cloud-upload:before,body.dashboard .page-content .header .ion-ios-cloud:before,body.dashboard .page-content .header .ion-ios-cloudy-night-outline:before,body.dashboard .page-content .header .ion-ios-cloudy-night:before,body.dashboard .page-content .header .ion-ios-cloudy-outline:before,body.dashboard .page-content .header .ion-ios-cloudy:before,body.dashboard .page-content .header .ion-ios-cog-outline:before,body.dashboard .page-content .header .ion-ios-cog:before,body.dashboard .page-content .header .ion-ios-color-filter-outline:before,body.dashboard .page-content .header .ion-ios-color-filter:before,body.dashboard .page-content .header .ion-ios-color-wand-outline:before,body.dashboard .page-content .header .ion-ios-color-wand:before,body.dashboard .page-content .header .ion-ios-compose-outline:before,body.dashboard .page-content .header .ion-ios-compose:before,body.dashboard .page-content .header .ion-ios-contact-outline:before,body.dashboard .page-content .header .ion-ios-contact:before,body.dashboard .page-content .header .ion-ios-copy-outline:before,body.dashboard .page-content .header .ion-ios-copy:before,body.dashboard .page-content .header .ion-ios-crop-strong:before,body.dashboard .page-content .header .ion-ios-crop:before,body.dashboard .page-content .header .ion-ios-download-outline:before,body.dashboard .page-content .header .ion-ios-download:before,body.dashboard .page-content .header .ion-ios-drag:before,body.dashboard .page-content .header .ion-ios-email-outline:before,body.dashboard .page-content .header .ion-ios-email:before,body.dashboard .page-content .header .ion-ios-eye-outline:before,body.dashboard .page-content .header .ion-ios-eye:before,body.dashboard .page-content .header .ion-ios-fastforward-outline:before,body.dashboard .page-content .header .ion-ios-fastforward:before,body.dashboard .page-content .header .ion-ios-filing-outline:before,body.dashboard .page-content .header .ion-ios-filing:before,body.dashboard .page-content .header .ion-ios-film-outline:before,body.dashboard .page-content .header .ion-ios-film:before,body.dashboard .page-content .header .ion-ios-flag-outline:before,body.dashboard .page-content .header .ion-ios-flag:before,body.dashboard .page-content .header .ion-ios-flame-outline:before,body.dashboard .page-content .header .ion-ios-flame:before,body.dashboard .page-content .header .ion-ios-flask-outline:before,body.dashboard .page-content .header .ion-ios-flask:before,body.dashboard .page-content .header .ion-ios-flower-outline:before,body.dashboard .page-content .header .ion-ios-flower:before,body.dashboard .page-content .header .ion-ios-folder-outline:before,body.dashboard .page-content .header .ion-ios-folder:before,body.dashboard .page-content .header .ion-ios-football-outline:before,body.dashboard .page-content .header .ion-ios-football:before,body.dashboard .page-content .header .ion-ios-game-controller-a-outline:before,body.dashboard .page-content .header .ion-ios-game-controller-a:before,body.dashboard .page-content .header .ion-ios-game-controller-b-outline:before,body.dashboard .page-content .header .ion-ios-game-controller-b:before,body.dashboard .page-content .header .ion-ios-gear-outline:before,body.dashboard .page-content .header .ion-ios-gear:before,body.dashboard .page-content .header .ion-ios-glasses-outline:before,body.dashboard .page-content .header .ion-ios-glasses:before,body.dashboard .page-content .header .ion-ios-grid-view-outline:before,body.dashboard .page-content .header .ion-ios-grid-view:before,body.dashboard .page-content .header .ion-ios-heart-outline:before,body.dashboard .page-content .header .ion-ios-heart:before,body.dashboard .page-content .header .ion-ios-help-empty:before,body.dashboard .page-content .header .ion-ios-help-outline:before,body.dashboard .page-content .header .ion-ios-help:before,body.dashboard .page-content .header .ion-ios-home-outline:before,body.dashboard .page-content .header .ion-ios-home:before,body.dashboard .page-content .header .ion-ios-infinite-outline:before,body.dashboard .page-content .header .ion-ios-infinite:before,body.dashboard .page-content .header .ion-ios-information-empty:before,body.dashboard .page-content .header .ion-ios-information-outline:before,body.dashboard .page-content .header .ion-ios-information:before,body.dashboard .page-content .header .ion-ios-ionic-outline:before,body.dashboard .page-content .header .ion-ios-keypad-outline:before,body.dashboard .page-content .header .ion-ios-keypad:before,body.dashboard .page-content .header .ion-ios-lightbulb-outline:before,body.dashboard .page-content .header .ion-ios-lightbulb:before,body.dashboard .page-content .header .ion-ios-list-outline:before,body.dashboard .page-content .header .ion-ios-list:before,body.dashboard .page-content .header .ion-ios-location-outline:before,body.dashboard .page-content .header .ion-ios-location:before,body.dashboard .page-content .header .ion-ios-locked-outline:before,body.dashboard .page-content .header .ion-ios-locked:before,body.dashboard .page-content .header .ion-ios-loop-strong:before,body.dashboard .page-content .header .ion-ios-loop:before,body.dashboard .page-content .header .ion-ios-medical-outline:before,body.dashboard .page-content .header .ion-ios-medical:before,body.dashboard .page-content .header .ion-ios-medkit-outline:before,body.dashboard .page-content .header .ion-ios-medkit:before,body.dashboard .page-content .header .ion-ios-mic-off:before,body.dashboard .page-content .header .ion-ios-mic-outline:before,body.dashboard .page-content .header .ion-ios-mic:before,body.dashboard .page-content .header .ion-ios-minus-empty:before,body.dashboard .page-content .header .ion-ios-minus-outline:before,body.dashboard .page-content .header .ion-ios-minus:before,body.dashboard .page-content .header .ion-ios-monitor-outline:before,body.dashboard .page-content .header .ion-ios-monitor:before,body.dashboard .page-content .header .ion-ios-moon-outline:before,body.dashboard .page-content .header .ion-ios-moon:before,body.dashboard .page-content .header .ion-ios-more-outline:before,body.dashboard .page-content .header .ion-ios-more:before,body.dashboard .page-content .header .ion-ios-musical-note:before,body.dashboard .page-content .header .ion-ios-musical-notes:before,body.dashboard .page-content .header .ion-ios-navigate-outline:before,body.dashboard .page-content .header .ion-ios-navigate:before,body.dashboard .page-content .header .ion-ios-nutrition-outline:before,body.dashboard .page-content .header .ion-ios-nutrition:before,body.dashboard .page-content .header .ion-ios-paper-outline:before,body.dashboard .page-content .header .ion-ios-paper:before,body.dashboard .page-content .header .ion-ios-paperplane-outline:before,body.dashboard .page-content .header .ion-ios-paperplane:before,body.dashboard .page-content .header .ion-ios-partlysunny-outline:before,body.dashboard .page-content .header .ion-ios-partlysunny:before,body.dashboard .page-content .header .ion-ios-pause-outline:before,body.dashboard .page-content .header .ion-ios-pause:before,body.dashboard .page-content .header .ion-ios-paw-outline:before,body.dashboard .page-content .header .ion-ios-paw:before,body.dashboard .page-content .header .ion-ios-people-outline:before,body.dashboard .page-content .header .ion-ios-people:before,body.dashboard .page-content .header .ion-ios-person-outline:before,body.dashboard .page-content .header .ion-ios-person:before,body.dashboard .page-content .header .ion-ios-personadd-outline:before,body.dashboard .page-content .header .ion-ios-personadd:before,body.dashboard .page-content .header .ion-ios-photos-outline:before,body.dashboard .page-content .header .ion-ios-photos:before,body.dashboard .page-content .header .ion-ios-pie-outline:before,body.dashboard .page-content .header .ion-ios-pie:before,body.dashboard .page-content .header .ion-ios-pint-outline:before,body.dashboard .page-content .header .ion-ios-pint:before,body.dashboard .page-content .header .ion-ios-play-outline:before,body.dashboard .page-content .header .ion-ios-play:before,body.dashboard .page-content .header .ion-ios-plus-empty:before,body.dashboard .page-content .header .ion-ios-plus-outline:before,body.dashboard .page-content .header .ion-ios-plus:before,body.dashboard .page-content .header .ion-ios-pricetag-outline:before,body.dashboard .page-content .header .ion-ios-pricetag:before,body.dashboard .page-content .header .ion-ios-pricetags-outline:before,body.dashboard .page-content .header .ion-ios-pricetags:before,body.dashboard .page-content .header .ion-ios-printer-outline:before,body.dashboard .page-content .header .ion-ios-printer:before,body.dashboard .page-content .header .ion-ios-pulse-strong:before,body.dashboard .page-content .header .ion-ios-pulse:before,body.dashboard .page-content .header .ion-ios-rainy-outline:before,body.dashboard .page-content .header .ion-ios-rainy:before,body.dashboard .page-content .header .ion-ios-recording-outline:before,body.dashboard .page-content .header .ion-ios-recording:before,body.dashboard .page-content .header .ion-ios-redo-outline:before,body.dashboard .page-content .header .ion-ios-redo:before,body.dashboard .page-content .header .ion-ios-refresh-empty:before,body.dashboard .page-content .header .ion-ios-refresh-outline:before,body.dashboard .page-content .header .ion-ios-refresh:before,body.dashboard .page-content .header .ion-ios-reload:before,body.dashboard .page-content .header .ion-ios-reverse-camera-outline:before,body.dashboard .page-content .header .ion-ios-reverse-camera:before,body.dashboard .page-content .header .ion-ios-rewind-outline:before,body.dashboard .page-content .header .ion-ios-rewind:before,body.dashboard .page-content .header .ion-ios-rose-outline:before,body.dashboard .page-content .header .ion-ios-rose:before,body.dashboard .page-content .header .ion-ios-search-strong:before,body.dashboard .page-content .header .ion-ios-search:before,body.dashboard .page-content .header .ion-ios-settings-strong:before,body.dashboard .page-content .header .ion-ios-settings:before,body.dashboard .page-content .header .ion-ios-shuffle-strong:before,body.dashboard .page-content .header .ion-ios-shuffle:before,body.dashboard .page-content .header .ion-ios-skipbackward-outline:before,body.dashboard .page-content .header .ion-ios-skipbackward:before,body.dashboard .page-content .header .ion-ios-skipforward-outline:before,body.dashboard .page-content .header .ion-ios-skipforward:before,body.dashboard .page-content .header .ion-ios-snowy:before,body.dashboard .page-content .header .ion-ios-speedometer-outline:before,body.dashboard .page-content .header .ion-ios-speedometer:before,body.dashboard .page-content .header .ion-ios-star-half:before,body.dashboard .page-content .header .ion-ios-star-outline:before,body.dashboard .page-content .header .ion-ios-star:before,body.dashboard .page-content .header .ion-ios-stopwatch-outline:before,body.dashboard .page-content .header .ion-ios-stopwatch:before,body.dashboard .page-content .header .ion-ios-sunny-outline:before,body.dashboard .page-content .header .ion-ios-sunny:before,body.dashboard .page-content .header .ion-ios-telephone-outline:before,body.dashboard .page-content .header .ion-ios-telephone:before,body.dashboard .page-content .header .ion-ios-tennisball-outline:before,body.dashboard .page-content .header .ion-ios-tennisball:before,body.dashboard .page-content .header .ion-ios-thunderstorm-outline:before,body.dashboard .page-content .header .ion-ios-thunderstorm:before,body.dashboard .page-content .header .ion-ios-time-outline:before,body.dashboard .page-content .header .ion-ios-time:before,body.dashboard .page-content .header .ion-ios-timer-outline:before,body.dashboard .page-content .header .ion-ios-timer:before,body.dashboard .page-content .header .ion-ios-toggle-outline:before,body.dashboard .page-content .header .ion-ios-toggle:before,body.dashboard .page-content .header .ion-ios-trash-outline:before,body.dashboard .page-content .header .ion-ios-trash:before,body.dashboard .page-content .header .ion-ios-undo-outline:before,body.dashboard .page-content .header .ion-ios-undo:before,body.dashboard .page-content .header .ion-ios-unlocked-outline:before,body.dashboard .page-content .header .ion-ios-unlocked:before,body.dashboard .page-content .header .ion-ios-upload-outline:before,body.dashboard .page-content .header .ion-ios-upload:before,body.dashboard .page-content .header .ion-ios-videocam-outline:before,body.dashboard .page-content .header .ion-ios-videocam:before,body.dashboard .page-content .header .ion-ios-volume-high:before,body.dashboard .page-content .header .ion-ios-volume-low:before,body.dashboard .page-content .header .ion-ios-wineglass-outline:before,body.dashboard .page-content .header .ion-ios-wineglass:before,body.dashboard .page-content .header .ion-ios-world-outline:before,body.dashboard .page-content .header .ion-ios-world:before,body.dashboard .page-content .header .ion-ipad:before,body.dashboard .page-content .header .ion-iphone:before,body.dashboard .page-content .header .ion-ipod:before,body.dashboard .page-content .header .ion-jet:before,body.dashboard .page-content .header .ion-key:before,body.dashboard .page-content .header .ion-knife:before,body.dashboard .page-content .header .ion-laptop:before,body.dashboard .page-content .header .ion-leaf:before,body.dashboard .page-content .header .ion-levels:before,body.dashboard .page-content .header .ion-lightbulb:before,body.dashboard .page-content .header .ion-link:before,body.dashboard .page-content .header .ion-load-a:before,body.dashboard .page-content .header .ion-load-b:before,body.dashboard .page-content .header .ion-load-c:before,body.dashboard .page-content .header .ion-load-d:before,body.dashboard .page-content .header .ion-location:before,body.dashboard .page-content .header .ion-lock-combination:before,body.dashboard .page-content .header .ion-locked:before,body.dashboard .page-content .header .ion-log-in:before,body.dashboard .page-content .header .ion-log-out:before,body.dashboard .page-content .header .ion-loop:before,body.dashboard .page-content .header .ion-magnet:before,body.dashboard .page-content .header .ion-male:before,body.dashboard .page-content .header .ion-man:before,body.dashboard .page-content .header .ion-map:before,body.dashboard .page-content .header .ion-medkit:before,body.dashboard .page-content .header .ion-merge:before,body.dashboard .page-content .header .ion-mic-a:before,body.dashboard .page-content .header .ion-mic-b:before,body.dashboard .page-content .header .ion-mic-c:before,body.dashboard .page-content .header .ion-minus-circled:before,body.dashboard .page-content .header .ion-minus-round:before,body.dashboard .page-content .header .ion-minus:before,body.dashboard .page-content .header .ion-model-s:before,body.dashboard .page-content .header .ion-monitor:before,body.dashboard .page-content .header .ion-more:before,body.dashboard .page-content .header .ion-mouse:before,body.dashboard .page-content .header .ion-music-note:before,body.dashboard .page-content .header .ion-navicon-round:before,body.dashboard .page-content .header .ion-navicon:before,body.dashboard .page-content .header .ion-navigate:before,body.dashboard .page-content .header .ion-network:before,body.dashboard .page-content .header .ion-no-smoking:before,body.dashboard .page-content .header .ion-nuclear:before,body.dashboard .page-content .header .ion-outlet:before,body.dashboard .page-content .header .ion-paintbrush:before,body.dashboard .page-content .header .ion-paintbucket:before,body.dashboard .page-content .header .ion-paper-airplane:before,body.dashboard .page-content .header .ion-paperclip:before,body.dashboard .page-content .header .ion-pause:before,body.dashboard .page-content .header .ion-person-add:before,body.dashboard .page-content .header .ion-person-stalker:before,body.dashboard .page-content .header .ion-person:before,body.dashboard .page-content .header .ion-pie-graph:before,body.dashboard .page-content .header .ion-pin:before,body.dashboard .page-content .header .ion-pinpoint:before,body.dashboard .page-content .header .ion-pizza:before,body.dashboard .page-content .header .ion-plane:before,body.dashboard .page-content .header .ion-planet:before,body.dashboard .page-content .header .ion-play:before,body.dashboard .page-content .header .ion-playstation:before,body.dashboard .page-content .header .ion-plus-circled:before,body.dashboard .page-content .header .ion-plus-round:before,body.dashboard .page-content .header .ion-plus:before,body.dashboard .page-content .header .ion-podium:before,body.dashboard .page-content .header .ion-pound:before,body.dashboard .page-content .header .ion-power:before,body.dashboard .page-content .header .ion-pricetag:before,body.dashboard .page-content .header .ion-pricetags:before,body.dashboard .page-content .header .ion-printer:before,body.dashboard .page-content .header .ion-pull-request:before,body.dashboard .page-content .header .ion-qr-scanner:before,body.dashboard .page-content .header .ion-quote:before,body.dashboard .page-content .header .ion-radio-waves:before,body.dashboard .page-content .header .ion-record:before,body.dashboard .page-content .header .ion-refresh:before,body.dashboard .page-content .header .ion-reply-all:before,body.dashboard .page-content .header .ion-reply:before,body.dashboard .page-content .header .ion-ribbon-a:before,body.dashboard .page-content .header .ion-ribbon-b:before,body.dashboard .page-content .header .ion-sad-outline:before,body.dashboard .page-content .header .ion-sad:before,body.dashboard .page-content .header .ion-scissors:before,body.dashboard .page-content .header .ion-search:before,body.dashboard .page-content .header .ion-settings:before,body.dashboard .page-content .header .ion-share:before,body.dashboard .page-content .header .ion-shuffle:before,body.dashboard .page-content .header .ion-skip-backward:before,body.dashboard .page-content .header .ion-skip-forward:before,body.dashboard .page-content .header .ion-social-android-outline:before,body.dashboard .page-content .header .ion-social-android:before,body.dashboard .page-content .header .ion-social-angular-outline:before,body.dashboard .page-content .header .ion-social-angular:before,body.dashboard .page-content .header .ion-social-apple-outline:before,body.dashboard .page-content .header .ion-social-apple:before,body.dashboard .page-content .header .ion-social-bitcoin-outline:before,body.dashboard .page-content .header .ion-social-bitcoin:before,body.dashboard .page-content .header .ion-social-buffer-outline:before,body.dashboard .page-content .header .ion-social-buffer:before,body.dashboard .page-content .header .ion-social-chrome-outline:before,body.dashboard .page-content .header .ion-social-chrome:before,body.dashboard .page-content .header .ion-social-codepen-outline:before,body.dashboard .page-content .header .ion-social-codepen:before,body.dashboard .page-content .header .ion-social-css3-outline:before,body.dashboard .page-content .header .ion-social-css3:before,body.dashboard .page-content .header .ion-social-designernews-outline:before,body.dashboard .page-content .header .ion-social-designernews:before,body.dashboard .page-content .header .ion-social-dribbble-outline:before,body.dashboard .page-content .header .ion-social-dribbble:before,body.dashboard .page-content .header .ion-social-dropbox-outline:before,body.dashboard .page-content .header .ion-social-dropbox:before,body.dashboard .page-content .header .ion-social-euro-outline:before,body.dashboard .page-content .header .ion-social-euro:before,body.dashboard .page-content .header .ion-social-facebook-outline:before,body.dashboard .page-content .header .ion-social-facebook:before,body.dashboard .page-content .header .ion-social-foursquare-outline:before,body.dashboard .page-content .header .ion-social-foursquare:before,body.dashboard .page-content .header .ion-social-freebsd-devil:before,body.dashboard .page-content .header .ion-social-github-outline:before,body.dashboard .page-content .header .ion-social-github:before,body.dashboard .page-content .header .ion-social-google-outline:before,body.dashboard .page-content .header .ion-social-google:before,body.dashboard .page-content .header .ion-social-googleplus-outline:before,body.dashboard .page-content .header .ion-social-googleplus:before,body.dashboard .page-content .header .ion-social-hackernews-outline:before,body.dashboard .page-content .header .ion-social-hackernews:before,body.dashboard .page-content .header .ion-social-html5-outline:before,body.dashboard .page-content .header .ion-social-html5:before,body.dashboard .page-content .header .ion-social-instagram-outline:before,body.dashboard .page-content .header .ion-social-instagram:before,body.dashboard .page-content .header .ion-social-javascript-outline:before,body.dashboard .page-content .header .ion-social-javascript:before,body.dashboard .page-content .header .ion-social-linkedin-outline:before,body.dashboard .page-content .header .ion-social-linkedin:before,body.dashboard .page-content .header .ion-social-markdown:before,body.dashboard .page-content .header .ion-social-nodejs:before,body.dashboard .page-content .header .ion-social-octocat:before,body.dashboard .page-content .header .ion-social-pinterest-outline:before,body.dashboard .page-content .header .ion-social-pinterest:before,body.dashboard .page-content .header .ion-social-python:before,body.dashboard .page-content .header .ion-social-reddit-outline:before,body.dashboard .page-content .header .ion-social-reddit:before,body.dashboard .page-content .header .ion-social-rss-outline:before,body.dashboard .page-content .header .ion-social-rss:before,body.dashboard .page-content .header .ion-social-sass:before,body.dashboard .page-content .header .ion-social-skype-outline:before,body.dashboard .page-content .header .ion-social-skype:before,body.dashboard .page-content .header .ion-social-snapchat-outline:before,body.dashboard .page-content .header .ion-social-snapchat:before,body.dashboard .page-content .header .ion-social-tumblr-outline:before,body.dashboard .page-content .header .ion-social-tumblr:before,body.dashboard .page-content .header .ion-social-tux:before,body.dashboard .page-content .header .ion-social-twitch-outline:before,body.dashboard .page-content .header .ion-social-twitch:before,body.dashboard .page-content .header .ion-social-twitter-outline:before,body.dashboard .page-content .header .ion-social-twitter:before,body.dashboard .page-content .header .ion-social-usd-outline:before,body.dashboard .page-content .header .ion-social-usd:before,body.dashboard .page-content .header .ion-social-vimeo-outline:before,body.dashboard .page-content .header .ion-social-vimeo:before,body.dashboard .page-content .header .ion-social-whatsapp-outline:before,body.dashboard .page-content .header .ion-social-whatsapp:before,body.dashboard .page-content .header .ion-social-windows-outline:before,body.dashboard .page-content .header .ion-social-windows:before,body.dashboard .page-content .header .ion-social-wordpress-outline:before,body.dashboard .page-content .header .ion-social-wordpress:before,body.dashboard .page-content .header .ion-social-yahoo-outline:before,body.dashboard .page-content .header .ion-social-yahoo:before,body.dashboard .page-content .header .ion-social-yen-outline:before,body.dashboard .page-content .header .ion-social-yen:before,body.dashboard .page-content .header .ion-social-youtube-outline:before,body.dashboard .page-content .header .ion-social-youtube:before,body.dashboard .page-content .header .ion-soup-can-outline:before,body.dashboard .page-content .header .ion-soup-can:before,body.dashboard .page-content .header .ion-speakerphone:before,body.dashboard .page-content .header .ion-speedometer:before,body.dashboard .page-content .header .ion-spoon:before,body.dashboard .page-content .header .ion-star:before,body.dashboard .page-content .header .ion-stats-bars:before,body.dashboard .page-content .header .ion-steam:before,body.dashboard .page-content .header .ion-stop:before,body.dashboard .page-content .header .ion-thermometer:before,body.dashboard .page-content .header .ion-thumbsdown:before,body.dashboard .page-content .header .ion-thumbsup:before,body.dashboard .page-content .header .ion-toggle-filled:before,body.dashboard .page-content .header .ion-toggle:before,body.dashboard .page-content .header .ion-transgender:before,body.dashboard .page-content .header .ion-trash-a:before,body.dashboard .page-content .header .ion-trash-b:before,body.dashboard .page-content .header .ion-trophy:before,body.dashboard .page-content .header .ion-tshirt-outline:before,body.dashboard .page-content .header .ion-tshirt:before,body.dashboard .page-content .header .ion-umbrella:before,body.dashboard .page-content .header .ion-university:before,body.dashboard .page-content .header .ion-unlocked:before,body.dashboard .page-content .header .ion-upload:before,body.dashboard .page-content .header .ion-usb:before,body.dashboard .page-content .header .ion-videocamera:before,body.dashboard .page-content .header .ion-volume-high:before,body.dashboard .page-content .header .ion-volume-low:before,body.dashboard .page-content .header .ion-volume-medium:before,body.dashboard .page-content .header .ion-volume-mute:before,body.dashboard .page-content .header .ion-wand:before,body.dashboard .page-content .header .ion-waterdrop:before,body.dashboard .page-content .header .ion-wifi:before,body.dashboard .page-content .header .ion-wineglass:before,body.dashboard .page-content .header .ion-woman:before,body.dashboard .page-content .header .ion-wrench:before,body.dashboard .page-content .header .ion-xbox:before,body.dashboard .page-content .header .ionicons{margin-right:2px}body.dashboard .page-content .sub-header{font-weight:300;text-transform:uppercase}body.dashboard .page-content .sub-header a{text-transform:none}body.dashboard .page-content .striped-list .striped-list-item{border-bottom:1px solid #f0f0f0;padding:8px 0}body.dashboard .page-content .drag-handle{cursor:move}body.dashboard .page-content .user-grid .user img{border-radius:5px;margin-bottom:15px;border:0}body.dashboard .page-content .user-grid .user .name{font-weight:600}body.dashboard .page-content .user-grid .user .email{color:#444;margin-top:4px}@media (max-width:767px){body.dashboard .page-content .content-wrapper,body.dashboard .page-content .header,body.dashboard .page-content .header.fixed{padding-left:20px;padding-right:20px}}@media (min-width:768px) and (max-width:991px){body.dashboard .page-content .header.fixed{padding-left:120px}}#welcome-modal .modal-dialog{margin-top:65px}#welcome-modal .modal-content .modal-header{border-bottom:0}#welcome-modal .modal-content .modal-body{padding-bottom:50px}#welcome-modal .modal-content .modal-body header{text-align:center;font-weight:600;font-size:22px;color:#444;margin-bottom:23px}#welcome-modal .modal-content .modal-body p{font-size:13px;color:#555;margin:0 auto;width:80%;text-align:center;line-height:20px}#welcome-modal .modal-content .modal-body .go-dashboard{text-align:center;display:block;margin-top:10px}#welcome-modal .modal-content .modal-body .get-started{margin-top:40px}#welcome-modal .modal-content .modal-body .get-started .col-md-4{text-align:center;padding-bottom:50px}#welcome-modal .modal-content .modal-body .get-started .col-md-4 a{color:#666;display:block;margin-top:12px;font-size:13px}#welcome-modal .modal-content .modal-body .get-started .col-md-4 a i{font-size:38px;color:#6DB81C;display:block}#welcome-modal .modal-content .modal-body .get-started .col-md-4 a:hover{text-decoration:none;color:#999}body.login .form-bg{border-radius:10px;margin:60px auto auto;padding:30px;width:320px;border:1px solid rgba(0,0,0,.1);box-shadow:0 20px 30px rgba(0,0,0,.2);background-color:#fff}body.login .logo{margin-bottom:30px}body.login .logo img{margin:0 auto}body.login .login-input{height:45px}body.login i{font-size:22px}body.login .btn.btn-white{background-color:#fff;transition:background-color .5s ease}body.login .btn.btn-white.btn-trans{background-color:transparent;border:1px solid #fff;border-radius:4px;color:#fff}body.login .btn.btn-white.btn-trans:hover{background-color:#fff;color:#7ED321}.setup-page{padding-top:60px}.setup-page .logo{display:block;margin:0 auto 30px}.setup-page .steps{margin:0 auto 20px;border-radius:2px 2px 0 0}.setup-page .steps .step{padding:20px 0;text-align:center;position:relative;font-size:13px}.setup-page .steps .step:not(:last-child):after{content:'';position:absolute;bottom:31px;left:55%;display:block;height:1px;background:#94A1B8;width:100%}.setup-page .steps .step span{width:23px;height:23px;display:block;position:relative;margin:13px auto 0;border-radius:25px;background:#f0f3f4;border:1px solid #94A1B8;transition:all .2s linear}.setup-page .steps .step.active span{background:#7ED321}.setup-page .setup-success{text-align:center}.setup-page .setup-success i{font-size:47px}.setup-page .setup-success h3{margin-top:25px;font-size:21px;color:#556579}.setup-page .setup-success .btn{margin-top:40px}.component-inline-update{padding-top:8px}.component-inline-update label{display:initial;font-weight:400}.component-group-name{font-size:18px;padding-left:10px}.component-group-other{font-size:18px}.stats-widget{text-align:center;margin-bottom:30px;background-color:#fff;border:1px solid #eee}.stats-widget.full-stats-block .stats-bottom{border-top:0!important;color:#fff;position:relative;margin-top:-1px;z-index:1000}.stats-widget .stats-top{padding:20px}.stats-widget .stats-top>span{display:block;text-align:center}.stats-widget .stats-top>span.stats-value{font-size:24px;font-weight:400}.stats-widget .stats-top>span.stats-label{padding-top:5px;font-size:14px;font-weight:300;color:#777}.stats-widget .stats-body,.stats-widget .stats-chart{margin-top:-20px;padding-top:10px}.stats-widget .stats-body .list-group{border:none;padding-bottom:0;margin-bottom:0}.stats-widget .stats-body .list-group .list-group-item{border-right:none;border-left:none;border-color:#eee}.stats-widget .stats-body .list-group .list-group-item:last-child{border-bottom:none}.stats-widget .stats-bottom{border-top:#eee 1px solid;color:#777;padding:12px 10px;text-align:center;background-color:#f9f9f9}.stats-widget .stats-bottom.bg-green{background-color:#7ED321;color:#fff}.stats-widget .stats-bottom.bg-blue{background-color:#3498db;color:#fff}.stats-widget .stats-bottom.bg-red{background-color:#ff6f6f;color:#fff}.stats-widget .stats-bottom.bg-teal{background-color:#0dccc0;color:#fff}.minicolors{position:relative}.minicolors-sprite{background-image:url(data:image/png;base64,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)}.minicolors-no-data-uris .minicolors-sprite{background-image:url(jquery.minicolors.png)}.minicolors-swatch{position:absolute;vertical-align:middle;background-position:-80px 0;border:1px solid #ccc;cursor:text;padding:0;margin:0;display:inline-block}.minicolors-swatch-color{position:absolute;top:0;left:0;right:0;bottom:0}.minicolors input[type=hidden]+.minicolors-swatch{width:28px;position:static;cursor:pointer}.minicolors input[type=hidden][disabled]+.minicolors-swatch{cursor:default}.minicolors-panel{position:absolute;width:173px;height:152px;background:#fff;border:1px solid #CCC;box-shadow:0 0 20px rgba(0,0,0,.2);z-index:99999;display:none}.minicolors-panel.minicolors-visible{display:block}.minicolors-position-top .minicolors-panel{top:-154px}.minicolors-position-right .minicolors-panel{right:0}.minicolors-position-bottom .minicolors-panel{top:auto}.minicolors-position-left .minicolors-panel{left:0}.minicolors-with-opacity .minicolors-panel{width:194px}.minicolors .minicolors-grid{position:absolute;top:1px;left:1px;width:150px;height:150px;background-position:-120px 0;cursor:crosshair}.minicolors .minicolors-grid-inner{position:absolute;top:0;left:0;width:150px;height:150px}.minicolors-slider-saturation .minicolors-grid{background-position:-420px 0}.minicolors-slider-saturation .minicolors-grid-inner{background-position:-270px 0;background-image:inherit}.minicolors-slider-brightness .minicolors-grid{background-position:-570px 0}.minicolors-slider-brightness .minicolors-grid-inner{background-color:#000}.minicolors-slider-wheel .minicolors-grid{background-position:-720px 0}.minicolors-opacity-slider,.minicolors-slider{position:absolute;top:1px;left:152px;width:20px;height:150px;background-color:#fff;background-position:0 0;cursor:row-resize}.minicolors-slider-saturation .minicolors-slider{background-position:-60px 0}.minicolors-slider-brightness .minicolors-slider,.minicolors-slider-wheel .minicolors-slider{background-position:-20px 0}.minicolors-opacity-slider{left:173px;background-position:-40px 0;display:none}.minicolors-with-opacity .minicolors-opacity-slider{display:block}.minicolors-grid .minicolors-picker{position:absolute;top:70px;left:70px;width:12px;height:12px;border:1px solid #000;border-radius:10px;margin-top:-6px;margin-left:-6px;background:0 0}.minicolors-grid .minicolors-picker>div{position:absolute;top:0;left:0;width:8px;height:8px;border-radius:8px;border:2px solid #fff;box-sizing:content-box}.minicolors-picker{position:absolute;top:0;left:0;width:18px;height:2px;background:#fff;border:1px solid #000;margin-top:-2px}.minicolors-inline{display:inline-block}.minicolors-inline .minicolors-input{display:none!important}.minicolors-inline .minicolors-panel{position:relative;top:auto;left:auto;box-shadow:none;z-index:auto;display:inline-block}.minicolors-theme-default .minicolors-swatch{top:5px;left:5px;width:18px;height:18px}.minicolors-theme-default.minicolors-position-right .minicolors-swatch{left:auto;right:5px}.minicolors-theme-default.minicolors{width:auto;display:inline-block}.minicolors-theme-default .minicolors-input{height:20px;width:auto;display:inline-block;padding-left:26px}.minicolors-theme-default.minicolors-position-right .minicolors-input{padding-right:26px;padding-left:inherit}.minicolors-theme-bootstrap .minicolors-swatch{z-index:2;top:3px;left:3px;width:28px;height:28px;border-radius:3px}.minicolors-theme-bootstrap .minicolors-swatch-color{border-radius:inherit}.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch{left:auto;right:3px}.minicolors-theme-bootstrap .minicolors-input{float:none;padding-left:44px}.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input{padding-right:44px;padding-left:12px}.minicolors-theme-bootstrap .input-group-lg>.input-group-btn>.minicolors-input.btn+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-lg>.minicolors-input.form-control+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-lg>.minicolors-input.input-group-addon+.minicolors-swatch,.minicolors-theme-bootstrap .minicolors-input.input-lg+.minicolors-swatch{top:4px;left:4px;width:37px;height:37px;border-radius:5px}.minicolors-theme-bootstrap .input-group-sm>.input-group-btn>.minicolors-input.btn+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-sm>.minicolors-input.form-control+.minicolors-swatch,.minicolors-theme-bootstrap .input-group-sm>.minicolors-input.input-group-addon+.minicolors-swatch,.minicolors-theme-bootstrap .minicolors-input.input-sm+.minicolors-swatch{width:24px;height:24px}.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input{border-top-left-radius:0;border-bottom-left-radius:0}@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format("woff")}.markdown-body{color:#24292e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{color:#fafbfc;background-color:#b31d28}.markdown-body .pl-c2{color:#fafbfc;background-color:#d73a49}.markdown-body .pl-c2::before{content:"^M"}.markdown-body .pl-sr .pl-cce{font-weight:700;color:#22863a}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{font-weight:700;color:#005cc5}.markdown-body .pl-mi{font-style:italic;color:#24292e}.markdown-body .pl-mb{font-weight:700;color:#24292e}.markdown-body .pl-md{color:#b31d28;background-color:#ffeef0}.markdown-body .pl-mi1{color:#22863a;background-color:#f0fff4}.markdown-body .pl-mc{color:#e36209;background-color:#ffebda}.markdown-body .pl-mi2{color:#f6f8fa;background-color:#005cc5}.markdown-body .pl-mdr{font-weight:700;color:#6f42c1}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{text-decoration:underline;color:#032f62}.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body hr::after,.markdown-body hr::before,.markdown-body::after,.markdown-body::before{display:table;content:""}.markdown-body a{background-color:transparent;-webkit-text-decoration-skip:objects;color:#0366d6;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body h1{margin:.67em 0}.markdown-body img{border-style:none}.markdown-body svg:not(:root){overflow:hidden}.markdown-body input{font:inherit;margin:0;overflow:visible;font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body td,.markdown-body th{padding:0}.markdown-body blockquote{margin:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code{font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace}.markdown-body pre{font:12px SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;word-wrap:normal}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:0}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{overflow:hidden;background:#e1e4e8;height:.25em;padding:0;margin:24px 0;border:0}.markdown-body blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eaecef}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1{font-size:2em}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#6a737d}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:600}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:100%;overflow:auto}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #dfe2e5}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body code::after,.markdown-body code::before{letter-spacing:-.2em;content:"\00a0"}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:0 0;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f6f8fa;border-radius:3px}.markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code::after,.markdown-body pre code::before{content:normal}.markdown-body .full-commit .btn-outline:not(:disabled):hover{color:#005cc5;border-color:#005cc5}.markdown-body kbd{display:inline-block;padding:3px 5px;font:11px SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;line-height:10px;color:#444d56;vertical-align:middle;background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1}.markdown-body :checked+.radio-label{position:relative;z-index:1;border-color:#0366d6}.swal2-container,body.swal2-iosfix{position:fixed;left:0;right:0}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}body.swal2-shown{overflow-y:hidden}.swal2-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;top:0;bottom:0;padding:10px;background-color:transparent;z-index:1060}.swal2-container.swal2-fade{transition:background-color .1s}.swal2-container.swal2-shown{background-color:rgba(0,0,0,.4)}.swal2-modal{background-color:#fff;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border-radius:5px;box-sizing:border-box;text-align:center;margin:auto;overflow-x:hidden;overflow-y:auto;display:none;position:relative;max-width:100%}.swal2-modal:focus{outline:0}.swal2-modal.swal2-loading{overflow-y:hidden}.swal2-modal .swal2-title{color:#595959;font-size:30px;text-align:center;font-weight:600;text-transform:none;position:relative;margin:0 0 .4em;padding:0;display:block;word-wrap:break-word}.swal2-modal .swal2-buttonswrapper{margin-top:15px}.swal2-modal .swal2-buttonswrapper:not(.swal2-loading) .swal2-styled[disabled]{opacity:.4;cursor:no-drop}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-confirm{box-sizing:border-box;border:4px solid transparent;width:40px;height:40px;padding:0;margin:7.5px;vertical-align:top;background-color:transparent!important;color:transparent;cursor:default;border-radius:100%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-modal .swal2-buttonswrapper.swal2-loading .swal2-styled.swal2-cancel{margin-left:30px;margin-right:30px}.swal2-modal .swal2-buttonswrapper.swal2-loading :not(.swal2-styled).swal2-confirm::after{display:inline-block;content:'';margin-left:5px 0 15px;vertical-align:-1px;height:15px;width:15px;border:3px solid #999;box-shadow:1px 1px 1px #fff;border-right-color:transparent;border-radius:50%;-webkit-animation:rotate-loading 1.5s linear 0s infinite normal;animation:rotate-loading 1.5s linear 0s infinite normal}.swal2-modal .swal2-checkbox input,.swal2-modal .swal2-checkbox span,.swal2-modal .swal2-radio input,.swal2-modal .swal2-radio span{vertical-align:middle}.swal2-modal .swal2-styled{border:0;border-radius:3px;box-shadow:none;color:#fff;cursor:pointer;font-size:17px;font-weight:500;margin:15px 5px 0;padding:10px 32px}.swal2-modal .swal2-image{margin:20px auto;max-width:100%}.swal2-modal .swal2-close{background:0 0;border:0;margin:0;padding:0;width:38px;height:40px;font-size:36px;line-height:40px;font-family:serif;position:absolute;top:5px;right:8px;cursor:pointer;color:#ccc;transition:color .1s ease}.swal2-modal .swal2-close:hover{color:#d55}.swal2-modal>.swal2-checkbox,.swal2-modal>.swal2-file,.swal2-modal>.swal2-input,.swal2-modal>.swal2-radio,.swal2-modal>.swal2-select,.swal2-modal>.swal2-textarea{display:none}.swal2-modal .swal2-content{font-size:18px;text-align:center;font-weight:300;position:relative;float:none;margin:0;padding:0;line-height:normal;color:#545454;word-wrap:break-word}.swal2-modal .swal2-checkbox,.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-radio,.swal2-modal .swal2-select,.swal2-modal .swal2-textarea{margin:20px auto}.swal2-modal .swal2-file,.swal2-modal .swal2-input,.swal2-modal .swal2-textarea{width:100%;box-sizing:border-box;font-size:18px;border-radius:3px;border:1px solid #d9d9d9;box-shadow:inset 0 1px 1px rgba(0,0,0,.06);transition:border-color box-shadow .3s}.swal2-modal .swal2-file.swal2-inputerror,.swal2-modal .swal2-input.swal2-inputerror,.swal2-modal .swal2-textarea.swal2-inputerror{border-color:#f27474!important;box-shadow:0 0 2px #f27474!important}.swal2-modal .swal2-file:focus,.swal2-modal .swal2-input:focus,.swal2-modal .swal2-textarea:focus{outline:0;border:1px solid #b4dbed;box-shadow:0 0 3px #c4e6f5}.swal2-modal .swal2-file:focus::-webkit-input-placeholder,.swal2-modal .swal2-input:focus::-webkit-input-placeholder,.swal2-modal .swal2-textarea:focus::-webkit-input-placeholder{transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus:-ms-input-placeholder,.swal2-modal .swal2-input:focus:-ms-input-placeholder,.swal2-modal .swal2-textarea:focus:-ms-input-placeholder{transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file:focus::placeholder,.swal2-modal .swal2-input:focus::placeholder,.swal2-modal .swal2-textarea:focus::placeholder{transition:opacity .3s .03s ease;opacity:.8}.swal2-modal .swal2-file::-webkit-input-placeholder,.swal2-modal .swal2-input::-webkit-input-placeholder,.swal2-modal .swal2-textarea::-webkit-input-placeholder{color:#e6e5e5}.swal2-modal .swal2-file:-ms-input-placeholder,.swal2-modal .swal2-input:-ms-input-placeholder,.swal2-modal .swal2-textarea:-ms-input-placeholder{color:#e6e5e5}.swal2-modal .swal2-file::placeholder,.swal2-modal .swal2-input::placeholder,.swal2-modal .swal2-textarea::placeholder{color:#e6e5e5}.swal2-modal .swal2-range input{float:left;width:80%}.swal2-modal .swal2-range output{float:right;width:20%;font-size:20px;font-weight:600;text-align:center}.swal2-modal .swal2-range input,.swal2-modal .swal2-range output{height:43px;line-height:43px;vertical-align:middle;margin:20px auto;padding:0}.swal2-modal .swal2-input{height:43px;padding:0 12px}.swal2-modal .swal2-input[type=number]{max-width:150px}.swal2-modal .swal2-file{font-size:20px}.swal2-modal .swal2-textarea{height:108px;padding:12px}.swal2-modal .swal2-select{color:#545454;font-size:inherit;padding:5px 10px;min-width:40%;max-width:100%}.swal2-modal .swal2-radio{border:0}.swal2-modal .swal2-radio label:not(:first-child){margin-left:20px}.swal2-modal .swal2-radio input{margin:0 3px 0 0}.swal2-modal .swal2-checkbox{color:#545454}.swal2-modal .swal2-validationerror{background-color:#f0f0f0;margin:0 -20px;overflow:hidden;padding:10px;color:#807f7f;font-size:16px;font-weight:300;display:none}.swal2-modal .swal2-validationerror::before{content:'!';display:inline-block;width:24px;height:24px;border-radius:50%;background-color:#ea7d7d;color:#fff;line-height:24px;text-align:center;margin-right:10px}.swal2-icon.swal2-info,.swal2-icon.swal2-question,.swal2-icon.swal2-warning{font-size:60px;line-height:80px;text-align:center}@supports (-ms-accelerator:true){.swal2-range input{width:100%!important}.swal2-range output{display:none}}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.swal2-range input{width:100%!important}.swal2-range output{display:none}}.swal2-icon{width:80px;height:80px;border:4px solid transparent;border-radius:50%;margin:20px auto 30px;padding:0;position:relative;box-sizing:content-box;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.swal2-icon.swal2-error{border-color:#f27474}.swal2-icon.swal2-error .swal2-x-mark{position:relative;display:block}.swal2-icon.swal2-error [class^=swal2-x-mark-line]{position:absolute;height:5px;width:47px;background-color:#f27474;display:block;top:37px;border-radius:2px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left]{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right]{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}.swal2-icon.swal2-warning{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#f8bb86;border-color:#facea8}.swal2-icon.swal2-info{font-family:'Open Sans',sans-serif;color:#3fc3ee;border-color:#9de0f6}.swal2-icon.swal2-question{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#87adbd;border-color:#c9dae1}.swal2-icon.swal2-success{border-color:#a5dc86}.swal2-icon.swal2-success [class^=swal2-success-circular-line]{border-radius:50%;position:absolute;width:60px;height:120px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left]{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right]{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 60px;transform-origin:0 60px}.swal2-icon.swal2-success .swal2-success-ring{width:80px;height:80px;border:4px solid rgba(165,220,134,.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}.swal2-icon.swal2-success .swal2-success-fix{width:7px;height:90px;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-icon.swal2-success [class^=swal2-success-line]{height:5px;background-color:#a5dc86;display:block;border-radius:2px;position:absolute;z-index:2}.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip]{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.swal2-icon.swal2-success [class^=swal2-success-line][class$=long]{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.swal2-progresssteps{font-weight:600;margin:0 0 20px;padding:0}.swal2-progresssteps li{display:inline-block;position:relative}ul.messenger .messenger-message.messenger-hidden,ul.messenger .messenger-spinner,ul.messenger.messenger-empty{display:none}.swal2-progresssteps .swal2-progresscircle{background:#3085d6;border-radius:2em;color:#fff;height:2em;line-height:2em;text-align:center;width:2em;z-index:20}.swal2-progresssteps .swal2-progresscircle:first-child{margin-left:0}.swal2-progresssteps .swal2-progresscircle:last-child{margin-right:0}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep{background:#3085d6}.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progresscircle,.swal2-progresssteps .swal2-progresscircle.swal2-activeprogressstep~.swal2-progressline{background:#add8e6}.swal2-progresssteps .swal2-progressline{background:#3085d6;height:.4em;margin:0 -1px;z-index:10}@-webkit-keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes showSweetAlert{0%{-webkit-transform:scale(.7);transform:scale(.7)}45%{-webkit-transform:scale(1.05);transform:scale(1.05)}80%{-webkit-transform:scale(.95);transform:scale(.95)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}@keyframes hideSweetAlert{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}100%{-webkit-transform:scale(.5);transform:scale(.5);opacity:0}}.swal2-show{-webkit-animation:showSweetAlert .3s;animation:showSweetAlert .3s}.swal2-show.swal2-noanimation{-webkit-animation:none;animation:none}.swal2-hide{-webkit-animation:hideSweetAlert .15s forwards;animation:hideSweetAlert .15s forwards}.swal2-hide.swal2-noanimation{-webkit-animation:none;animation:none}@-webkit-keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@keyframes animate-success-tip{0%,54%{width:0;left:1px;top:19px}70%{width:50px;left:-8px;top:37px}84%{width:17px;left:21px;top:48px}100%{width:25px;left:14px;top:45px}}@-webkit-keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@keyframes animate-success-long{0%,65%{width:0;right:46px;top:54px}84%{width:55px;right:0;top:35px}100%{width:47px;right:8px;top:38px}}@-webkit-keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}@keyframes rotatePlaceholder{0%,5%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}100%,12%{-webkit-transform:rotate(-405deg);transform:rotate(-405deg)}}.swal2-animate-success-line-tip{-webkit-animation:animate-success-tip .75s;animation:animate-success-tip .75s}.swal2-animate-success-line-long{-webkit-animation:animate-success-long .75s;animation:animate-success-long .75s}.swal2-success.swal2-animate-success-icon .swal2-success-circular-line-right{-webkit-animation:rotatePlaceholder 4.25s ease-in;animation:rotatePlaceholder 4.25s ease-in}@-webkit-keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}@keyframes animate-error-icon{0%{-webkit-transform:rotateX(100deg);transform:rotateX(100deg);opacity:0}100%{-webkit-transform:rotateX(0);transform:rotateX(0);opacity:1}}.swal2-animate-error-icon{-webkit-animation:animate-error-icon .5s;animation:animate-error-icon .5s}@-webkit-keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}@keyframes animate-x-mark{0%,50%{-webkit-transform:scale(.4);transform:scale(.4);margin-top:26px;opacity:0}80%{-webkit-transform:scale(1.15);transform:scale(1.15);margin-top:-6px}100%{-webkit-transform:scale(1);transform:scale(1);margin-top:0;opacity:1}}.swal2-animate-x-mark{-webkit-animation:animate-x-mark .5s;animation:animate-x-mark .5s}@-webkit-keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate-loading{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.swal2-modal button{margin-right:8px}ul.messenger,ul.messenger>li{margin:0;padding:0}ul.messenger>li{list-style:none}ul.messenger .messenger-message{overflow:hidden}ul.messenger .messenger-message .messenger-actions a,ul.messenger .messenger-message .messenger-phrase{padding-right:5px}ul.messenger .messenger-message .messenger-actions{float:right}ul.messenger.messenger-fixed .message .messenger-actions,ul.messenger.messenger-fixed.messenger-on-left .messenger-actions,ul.messenger.messenger-fixed.messenger-on-right .messenger-actions{float:left}ul.messenger .messenger-message .messenger-actions a{cursor:pointer;text-decoration:underline}ul.messenger .messenger-message ol,ul.messenger .messenger-message ul{margin:10px 18px 0}ul.messenger.messenger-fixed{position:fixed;z-index:10000}ul.messenger.messenger-fixed .messenger-message{min-width:0;box-sizing:border-box}ul.messenger.messenger-fixed.messenger-on-top{top:20px}ul.messenger.messenger-fixed.messenger-on-bottom{bottom:20px}ul.messenger.messenger-fixed.messenger-on-bottom,ul.messenger.messenger-fixed.messenger-on-top{left:50%;width:600px;margin-left:-300px}@media (max-width:960px){ul.messenger.messenger-fixed.messenger-on-bottom,ul.messenger.messenger-fixed.messenger-on-top{left:10%;width:80%;margin-left:0}}ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-right,ul.messenger.messenger-fixed.messenger-on-top.messenger-on-right{right:20px;left:auto}ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-left,ul.messenger.messenger-fixed.messenger-on-top.messenger-on-left{left:20px;margin-left:0}ul.messenger.messenger-fixed.messenger-on-left,ul.messenger.messenger-fixed.messenger-on-right{width:350px}@-webkit-keyframes ui-spinner-rotate-right{0%{-webkit-transform:rotate(0)}25%,50%{-webkit-transform:rotate(180deg)}100%,75%{-webkit-transform:rotate(360deg)}}@-webkit-keyframes ui-spinner-rotate-left{0%,25%{-webkit-transform:rotate(0)}50%,75%{-webkit-transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes ui-spinner-rotate-right{0%{-webkit-transform:rotate(0);transform:rotate(0)}25%,50%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%,75%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes ui-spinner-rotate-left{0%,25%{-webkit-transform:rotate(0);transform:rotate(0)}50%,75%{-webkit-transform:rotate(180deg);transform:rotate(180deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.messenger-spinner{position:relative;border-radius:100%}ul.messenger.messenger-spinner-active .messenger-spinner .messenger-spinner{display:block}.messenger-spinner .messenger-spinner-side{width:50%;height:100%;overflow:hidden;position:absolute}.messenger-spinner .messenger-spinner-side .messenger-spinner-fill{border-radius:999px;position:absolute;width:100%;height:100%;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.messenger-spinner .messenger-spinner-side-left{left:0}.messenger-spinner .messenger-spinner-side-left .messenger-spinner-fill{left:100%;border-top-left-radius:0;border-bottom-left-radius:0;-webkit-animation-name:ui-spinner-rotate-left;animation-name:ui-spinner-rotate-left;-webkit-transform-origin:0 50%;transform-origin:0 50%}.messenger-spinner .messenger-spinner-side-right{left:50%}.messenger-spinner .messenger-spinner-side-right .messenger-spinner-fill{left:-100%;border-top-right-radius:0;border-bottom-right-radius:0;-webkit-animation-name:ui-spinner-rotate-right;animation-name:ui-spinner-rotate-right;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}ul.messenger-theme-air{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none;font-family:Raleway,sans-serif}ul.messenger-theme-air .messenger-message{transition:background-color .4s;border-radius:5px;box-shadow:inset 0 0 0 1px #fff,inset 0 2px #fff,0 0 0 1px rgba(0,0,0,.1),0 1px rgba(0,0,0,.2);border:0;background-color:#fff;position:relative;margin-bottom:1em;font-size:13px;color:#666;font-weight:500;padding:10px 30px 11px 46px}ul.messenger-theme-air .messenger-message:hover{background-color:#fff}ul.messenger-theme-air .messenger-message .messenger-close{position:absolute;top:0;right:0;color:#888;opacity:1;font-weight:700;display:block;font-size:20px;line-height:20px;padding:8px 10px 7px 7px;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}ul.messenger-theme-air .messenger-message .messenger-close:hover{color:#444}ul.messenger-theme-air .messenger-message .messenger-close:active{color:#222}ul.messenger-theme-air .messenger-message .messenger-actions{float:none;margin-top:10px}ul.messenger-theme-air .messenger-message .messenger-actions a{box-shadow:0 0 0 1px rgba(0,0,0,.1),inset 0 1px rgba(255,255,255,.05);border-radius:4px;text-decoration:none;display:inline-block;color:#888;margin-right:10px;padding:3px 10px 5px;text-transform:capitalize}ul.messenger-theme-air .messenger-message .messenger-actions a:hover{box-shadow:0 0 0 1px rgba(0,0,0,.1),inset 0 1px rgba(255,255,255,.15);color:#444}ul.messenger-theme-air .messenger-message .messenger-actions a:active{box-shadow:0 0 0 1px rgba(0,0,0,.18),inset 0 1px rgba(0,0,0,.05);background:rgba(0,0,0,.04);color:#444}ul.messenger-theme-air .messenger-message .messenger-actions .messenger-phrase{display:none}ul.messenger-theme-air .messenger-message .messenger-message-inner:before{box-shadow:inset 0 1px 3px rgba(0,0,0,.3);border-radius:50%;position:absolute;left:17px;display:block;content:" ";top:50%;margin-top:-8px;height:13px;width:13px;z-index:20}ul.messenger-theme-air .messenger-message.alert-success .messenger-message-inner:before{background-color:#5fca4a}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner{width:24px;height:24px;background:0 0}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner .messenger-spinner-side .messenger-spinner-fill{background:#dd6a45;-webkit-animation-duration:20s;animation-duration:20s;opacity:1}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner:after{content:"";background:#fff;position:absolute;width:19px;height:19px;border-radius:50%;top:2px;left:2px;display:block}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner{width:24px;height:24px;background:0 0}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner .messenger-spinner-side .messenger-spinner-fill{background:#dd6a45;-webkit-animation-duration:600s;animation-duration:600s;opacity:1}ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner:after{content:"";background:#fff;position:absolute;width:19px;height:19px;border-radius:50%;top:2px;left:2px;display:block}ul.messenger-theme-air .messenger-message.alert-error .messenger-message-inner:before{background-color:#dd6a45}ul.messenger-theme-air .messenger-message.alert-info .messenger-message-inner:before{background-color:#61c4b8}ul.messenger-theme-air .messenger-spinner{display:block;position:absolute;left:12px;top:50%;margin-top:-13px;height:24px;width:24px;z-index:10}/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - http://opensource.org/licenses/MIT -Copyright (c) 2015 Daniel Eden -*/.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:after,.bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action=clear]::after{content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action=today]::after{content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:3px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#e8e8e8}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#999}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#e8e8e8;cursor:pointer}.bootstrap-datetimepicker-widget table td.new,.bootstrap-datetimepicker-widget table td.old{color:#999}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#7ED321;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#7ED321;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:3px}.bootstrap-datetimepicker-widget table td span:hover{background:#e8e8e8}.bootstrap-datetimepicker-widget table td span.active{background-color:#7ED321;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.bootstrap-datetimepicker-widget table td span.old{color:#999}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#999;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.input-group.date .input-group-addon{cursor:pointer}.strengthify-wrapper>*{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;transition:all .5s ease-in-out}.strengthify-wrapper{position:relative}.strengthify-bg,.strengthify-container,.strengthify-separator,.strengthify-wrapper{height:8px}.strengthify-bg,.strengthify-container{display:block;position:absolute;width:100%}.strengthify-bg{background-color:#eee}.strengthify-separator{display:inline-block;position:absolute;background-color:#fff;width:2px;z-index:10}.password-bad{background-color:#ff6f6f}.password-medium{background-color:#F7CA18}.password-good{background-color:#7ED321}.sortable-chosen{border:1px solid #e8e8e8!important;background-color:#f0f3f4} \ No newline at end of file diff --git a/public/dist/js/all.4083e75c2ea0d0e7c624e3519d24eb35.js b/public/dist/js/all.4083e75c2ea0d0e7c624e3519d24eb35.js deleted file mode 100644 index 41577003..00000000 --- a/public/dist/js/all.4083e75c2ea0d0e7c624e3519d24eb35.js +++ /dev/null @@ -1,24 +0,0 @@ -if(function(e,t){"use strict";"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.returnExports=t()}(this,function(){var e,t,n=Array,r=n.prototype,i=Object,a=i.prototype,o=Function,s=o.prototype,l=String,u=l.prototype,d=Number,c=d.prototype,h=r.slice,f=r.splice,p=r.push,m=r.unshift,_=r.concat,g=r.join,y=s.call,v=s.apply,b=Math.max,M=Math.min,w=a.toString,x="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,k=Function.prototype.toString,L=/^\s*class /,D=function(e){try{var t=k.call(e),n=t.replace(/\/\/.*\n/g,""),r=n.replace(/\/\*[.\s\S]*\*\//g,""),i=r.replace(/\n/gm," ").replace(/ {2}/g," ");return L.test(i)}catch(e){return!1}},Y=function(e){try{return!D(e)&&(k.call(e),!0)}catch(e){return!1}},e=function(e){if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if(x)return Y(e);if(D(e))return!1;var t=w.call(e);return"[object Function]"===t||"[object GeneratorFunction]"===t},T=RegExp.prototype.exec,S=function(e){try{return T.call(e),!0}catch(e){return!1}};t=function(e){return"object"==typeof e&&(x?S(e):"[object RegExp]"===w.call(e))};var C,j=String.prototype.valueOf,H=function(e){try{return j.call(e),!0}catch(e){return!1}};C=function(e){return"string"==typeof e||"object"==typeof e&&(x?H(e):"[object String]"===w.call(e))};var O=i.defineProperty&&function(){try{var e={};i.defineProperty(e,"x",{enumerable:!1,value:e});for(var t in e)return!1;return e.x===e}catch(e){return!1}}(),A=function(e){var t;return t=O?function(e,t,n,r){!r&&t in e||i.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:!0,value:n})}:function(e,t,n,r){!r&&t in e||(e[t]=n)},function(n,r,i){for(var a in r)e.call(r,a)&&t(n,a,r[a],i)}}(a.hasOwnProperty),P=function(e){var t=typeof e;return null===e||"object"!==t&&"function"!==t},E=d.isNaN||function(e){return e!==e},I={ToInteger:function(e){var t=+e;return E(t)?t=0:0!==t&&t!==1/0&&t!==-1/0&&(t=(t>0||-1)*Math.floor(Math.abs(t))),t},ToPrimitive:function(t){var n,r,i;if(P(t))return t;if(r=t.valueOf,e(r)&&(n=r.call(t),P(n)))return n;if(i=t.toString,e(i)&&(n=i.call(t),P(n)))return n;throw new TypeError},ToObject:function(e){if(null==e)throw new TypeError("can't convert "+e+" to object");return i(e)},ToUint32:function(e){return e>>>0}},F=function(){};A(s,{bind:function(t){var n=this;if(!e(n))throw new TypeError("Function.prototype.bind called on incompatible "+n);for(var r,a=h.call(arguments,1),s=function(){if(this instanceof r){var e=v.call(n,this,_.call(a,h.call(arguments)));return i(e)===e?e:this}return v.call(n,t,_.call(a,h.call(arguments)))},l=b(0,n.length-a.length),u=[],d=0;d1&&(n=arguments[1]),!e(t))throw new TypeError("Array.prototype.forEach callback must be a function");for(;++a1&&(r=arguments[1]),!e(t))throw new TypeError("Array.prototype.map callback must be a function");for(var l=0;l1&&(r=arguments[1]),!e(t))throw new TypeError("Array.prototype.filter callback must be a function");for(var l=0;l1&&(n=arguments[1]),!e(t))throw new TypeError("Array.prototype.every callback must be a function");for(var o=0;o1&&(n=arguments[1]),!e(t))throw new TypeError("Array.prototype.some callback must be a function");for(var o=0;o=2)a=arguments[1];else for(;;){if(o in r){a=r[o++];break}if(++o>=i)throw new TypeError("reduce of empty array with no initial value")}for(;o=2)a=arguments[1];else for(;;){if(o in r){a=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}if(o<0)return a;do{o in r&&(a=t(a,r[o],o,n))}while(o--);return a}},!te);var ne=r.indexOf&&-1!==[0,1].indexOf(1,2);A(r,{indexOf:function(e){var t=K&&C(this)?$(this,""):I.ToObject(this),n=I.ToUint32(t.length);if(0===n)return-1;var r=0;for(arguments.length>1&&(r=I.ToInteger(arguments[1])),r=r>=0?r:b(0,n+r);r1&&(r=M(r,I.ToInteger(arguments[1]))),r=r>=0?r:n-Math.abs(r);r>=0;r--)if(r in t&&e===t[r])return r;return-1}},re);var ie=function(){var e=[1,2],t=e.splice();return 2===e.length&&G(t)&&0===t.length}();A(r,{splice:function(e,t){return 0===arguments.length?[]:f.apply(this,arguments)}},!ie);var ae=function(){var e={};return r.splice.call(e,0,0,1),1===e.length}();A(r,{splice:function(e,t){if(0===arguments.length)return[];var n=arguments;return this.length=b(I.ToInteger(this.length),0),arguments.length>0&&"number"!=typeof t&&(n=N(arguments),n.length<2?q(n,this.length-e):n[1]=I.ToInteger(t)),f.apply(this,n)}},!ae);var oe=function(){var e=new n(1e5);return e[8]="x",e.splice(1,1),7===e.indexOf("x")}(),se=function(){var e=[];return e[256]="a",e.splice(257,0,"b"),"a"===e[256]}();A(r,{splice:function(e,t){for(var n,r=I.ToObject(this),i=[],a=I.ToUint32(r.length),o=I.ToInteger(e),s=o<0?b(a+o,0):M(o,a),u=M(b(I.ToInteger(t),0),a-s),d=0;dm;)delete r[d-1],d-=1}else if(f>u)for(d=a-u;d>s;)n=l(d+u-1),c=l(d+f-1),W(r,n)?r[c]=r[n]:delete r[c],d-=1;d=s;for(var _=0;_=0&&!G(t)&&e(t.callee)},Te=De(arguments)?De:Ye;A(i,{keys:function(t){var n=e(t),r=Te(t),i=null!==t&&"object"==typeof t,a=i&&C(t);if(!i&&!n&&!r)throw new TypeError("Object.keys called on a non-object");var o=[],s=ye&&n;if(a&&ve||r)for(var u=0;u11?e+1:e},getMonth:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Fe(this),t=We(this);return e<0&&t>11?0:t},getDate:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Fe(this),t=We(this),n=Re(this);if(e<0&&t>11){if(12===t)return n;return Ze(0,e+1)-n+1}return n},getUTCFullYear:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ne(this);return e<0&&ze(this)>11?e+1:e},getUTCMonth:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ne(this),t=ze(this);return e<0&&t>11?0:t},getUTCDate:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=Ne(this),t=ze(this),n=Be(this);if(e<0&&t>11){if(12===t)return n;return Ze(0,e+1)-n+1}return n}},Ae),A(Date.prototype,{toUTCString:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=$e(this),t=Be(this),n=ze(this),r=Ne(this),i=Ve(this),a=qe(this),o=Ue(this);return Ge[e]+", "+(t<10?"0"+t:t)+" "+Xe[n]+" "+r+" "+(i<10?"0"+i:i)+":"+(a<10?"0"+a:a)+":"+(o<10?"0"+o:o)+" GMT"}},Ae||Ie),A(Date.prototype,{toDateString:function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=this.getDay(),t=this.getDate(),n=this.getMonth(),r=this.getFullYear();return Ge[e]+" "+Xe[n]+" "+(t<10?"0"+t:t)+" "+r}},Ae||He),(Ae||Oe)&&(Date.prototype.toString=function(){if(!(this&&this instanceof Date))throw new TypeError("this is not a Date object.");var e=this.getDay(),t=this.getDate(),n=this.getMonth(),r=this.getFullYear(),i=this.getHours(),a=this.getMinutes(),o=this.getSeconds(),s=this.getTimezoneOffset(),l=Math.floor(Math.abs(s)/60),u=Math.floor(Math.abs(s)%60);return Ge[e]+" "+Xe[n]+" "+(t<10?"0"+t:t)+" "+r+" "+(i<10?"0"+i:i)+":"+(a<10?"0"+a:a)+":"+(o<10?"0"+o:o)+" GMT"+(s>0?"-":"+")+(l<10?"0"+l:l)+(u<10?"0"+u:u)},O&&i.defineProperty(Date.prototype,"toString",{configurable:!0,enumerable:!1,writable:!0}));var Ke=Date.prototype.toISOString&&-1===new Date(-621987552e5).toISOString().indexOf("-000001"),Qe=Date.prototype.toISOString&&"1969-12-31T23:59:59.999Z"!==new Date(-1).toISOString(),et=y.bind(Date.prototype.getTime);A(Date.prototype,{toISOString:function(){if(!isFinite(this)||!isFinite(et(this)))throw new RangeError("Date.prototype.toISOString called on non-finite value.");var e=Ne(this),t=ze(this);e+=Math.floor(t/12),t=(t%12+12)%12;var n=[t+1,Be(this),Ve(this),qe(this),Ue(this)];e=(e<0?"-":e>9999?"+":"")+B("00000"+Math.abs(e),0<=e&&e<=9999?-4:-6);for(var r=0;r=7&&u>rt){var p=Math.floor(u/rt)*rt,m=Math.floor(p/1e3);h+=m,f-=1e3*m}d=1===c&&l(n)===n?new e(t.parse(n)):c>=7?new e(n,r,i,a,o,h,f):c>=6?new e(n,r,i,a,o,h):c>=5?new e(n,r,i,a,o):c>=4?new e(n,r,i,a):c>=3?new e(n,r,i):c>=2?new e(n,r):c>=1?new e(n instanceof e?+n:n):new e}else d=e.apply(this,arguments);return P(d)||A(d,{constructor:t},!0),d},n=new RegExp("^(\\d{4}|[+-]\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:(\\.\\d{1,}))?)?(Z|(?:([-+])(\\d{2}):(\\d{2})))?)?)?)?$"),r=[0,31,59,90,120,151,181,212,243,273,304,334,365],i=function(e,t){var n=t>1?1:0;return r[t]+Math.floor((e-1969+n)/4)-Math.floor((e-1901+n)/100)+Math.floor((e-1601+n)/400)+365*(e-1970)},a=function(t){var n=0,r=t;if(it&&r>rt){var i=Math.floor(r/rt)*rt,a=Math.floor(i/1e3);n+=a,r-=1e3*a}return d(new e(1970,0,1,0,0,n,r))};for(var o in e)W(e,o)&&(t[o]=e[o]);return A(t,{now:e.now,UTC:e.UTC},!0),t.prototype=e.prototype,A(t.prototype,{constructor:t},!0),A(t,{parse:function(t){var r=n.exec(t);if(r){var o,s=d(r[1]),l=d(r[2]||1)-1,u=d(r[3]||1)-1,c=d(r[4]||0),h=d(r[5]||0),f=d(r[6]||0),p=Math.floor(1e3*d(r[7]||0)),m=Boolean(r[4]&&!r[8]),_="-"===r[9]?1:-1,g=d(r[10]||0),y=d(r[11]||0);return c<(h>0||f>0||p>0?24:25)&&h<60&&f<60&&p<1e3&&l>-1&&l<12&&g<24&&y<60&&u>-1&&u=0;)n+=ot.data[t],ot.data[t]=Math.floor(n/e),n=n%e*ot.base},numToString:function(){for(var e=ot.size,t="";--e>=0;)if(""!==t||0===e||0!==ot.data[e]){var n=l(ot.data[e]);""===t?t=n:t+=B("0000000",0,7-n.length)+n}return t},pow:function e(t,n,r){return 0===n?r:n%2==1?e(t,n-1,r*t):e(t*t,n/2,r)},log:function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}};A(c,{toFixed:function(e){var t,n,r,i,a,o,s,u;if(t=d(e),(t=E(t)?0:Math.floor(t))<0||t>20)throw new RangeError("Number.toFixed called with invalid number of decimals");if(n=d(this),E(n))return"NaN";if(n<=-1e21||n>=1e21)return l(n);if(r="",n<0&&(r="-",n=-n),i="0",n>1e-21)if(a=ot.log(n*ot.pow(2,69,1))-69,o=a<0?n*ot.pow(2,-a,1):n/ot.pow(2,a,1),o*=4503599627370496,(a=52-a)>0){for(ot.multiply(0,o),s=t;s>=7;)ot.multiply(1e7,0),s-=7;for(ot.multiply(ot.pow(10,s,1),0),s=a-1;s>=23;)ot.divide(1<<23),s-=23;ot.divide(1<0?(u=i.length,i=u<=t?r+B("0.0000000000000000000",0,t-u+2)+i:r+B(i,0,u-t)+"."+B(i,u-t)):i=r+i,i}},at);var st=function(){try{return"1"===1..toPrecision(void 0)}catch(e){return!0}}(),lt=c.toPrecision;A(c,{toPrecision:function(e){return void 0===e?lt.call(this):lt.call(this,e)}},st),2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||"t"==="tesst".split(/(s)*/)[1]||4!=="test".split(/(?:)/,-1).length||"".split(/.?/).length||".".split(/()()/).length>1?function(){var e=void 0===/()??/.exec("")[1],n=Math.pow(2,32)-1;u.split=function(r,i){var a=String(this);if(void 0===r&&0===i)return[];if(!t(r))return $(this,r,i);var o,s,l,u,d=[],c=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(r.sticky?"y":""),h=0,f=new RegExp(r.source,c+"g");e||(o=new RegExp("^"+f.source+"$(?!\\s)",c));var m=void 0===i?n:I.ToUint32(i);for(s=f.exec(a);s&&!((l=s.index+s[0].length)>h&&(q(d,B(a,h,s.index)),!e&&s.length>1&&s[0].replace(o,function(){for(var e=1;e1&&s.index=m));)f.lastIndex===s.index&&f.lastIndex++,s=f.exec(a);return h===a.length?!u&&f.test("")||q(d,""):q(d,B(a,h)),d.length>m?N(d,0,m):d}}():"0".split(void 0,0).length&&(u.split=function(e,t){return void 0===e&&0===t?[]:$(this,e,t)});var ut=u.replace;(function(){var e=[];return"x".replace(/x(.)?/g,function(t,n){q(e,n)}),1===e.length&&void 0===e[0]})()||(u.replace=function(n,r){var i=e(r),a=t(n)&&/\)[*?]/.test(n.source);if(i&&a){var o=function(e){var t=arguments.length,i=n.lastIndex;n.lastIndex=0;var a=n.exec(e)||[];return n.lastIndex=i,q(a,arguments[t-2],arguments[t-1]),r.apply(this,a)};return ut.call(this,n,o)}return ut.call(this,n,r)});var dt=u.substr,ct="".substr&&"b"!=="0b".substr(-1);A(u,{substr:function(e,t){var n=e;return e<0&&(n=b(this.length+e,0)),dt.call(this,n,t)}},ct);var ht="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff",ft="​",pt="["+ht+"]",mt=new RegExp("^"+pt+pt+"*"),_t=new RegExp(pt+pt+"*$"),gt=u.trim&&(ht.trim()||!ft.trim());A(u,{trim:function(){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");return l(this).replace(mt,"").replace(_t,"")}},gt);var yt=y.bind(String.prototype.trim),vt=u.lastIndexOf&&-1!=="abcあい".lastIndexOf("あい",2);A(u,{lastIndexOf:function(e){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");for(var t=l(this),n=l(e),r=arguments.length>1?d(arguments[1]):NaN,i=E(r)?1/0:I.ToInteger(r),a=M(b(i,0),t.length),o=n.length,s=a+o;s>0;){s=b(0,s-o);var u=V(B(t,s,a+o),n);if(-1!==u)return s+u}return-1}},vt);var bt=u.lastIndexOf;if(A(u,{lastIndexOf:function(e){return bt.apply(this,arguments)}},1!==u.lastIndexOf.length),8===parseInt(ht+"08")&&22===parseInt(ht+"0x16")||(parseInt=function(e){var t=/^[\-+]?0[xX]/;return function(n,r){var i=yt(String(n)),a=d(r)||(t.test(i)?16:10);return e(i,a)}}(parseInt)),1/parseFloat("-0")!=-1/0&&(parseFloat=function(e){return function(t){var n=yt(String(t)),r=e(n);return 0===r&&"-"===B(n,0,1)?-0:r}}(parseFloat)),"RangeError: test"!==String(new RangeError("test"))){var Mt=function(){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");var e=this.name;void 0===e?e="Error":"string"!=typeof e&&(e=l(e));var t=this.message;return void 0===t?t="":"string"!=typeof t&&(t=l(t)),e?t?e+": "+t:e:t};Error.prototype.toString=Mt}if(O){var wt=function(e,t){if(U(e,t)){var n=Object.getOwnPropertyDescriptor(e,t);n.configurable&&(n.enumerable=!1,Object.defineProperty(e,t,n))}};wt(Error.prototype,"message"),""!==Error.prototype.message&&(Error.prototype.message=""),wt(Error.prototype,"name")}if("/a/gim"!==String(/a/gim)){var xt=function(){var e="/"+this.source+"/";return this.global&&(e+="g"),this.ignoreCase&&(e+="i"),this.multiline&&(e+="m"),e};RegExp.prototype.toString=xt}}),function(e,t){"use strict";"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.returnExports=t()}(this,function(){var e,t,n,r,i=Function.call,a=Object.prototype,o=i.bind(a.hasOwnProperty),s=i.bind(a.propertyIsEnumerable),l=i.bind(a.toString),u=o(a,"__defineGetter__");u&&(e=i.bind(a.__defineGetter__),t=i.bind(a.__defineSetter__),n=i.bind(a.__lookupGetter__),r=i.bind(a.__lookupSetter__));var d=function(e){return null==e||"object"!=typeof e&&"function"!=typeof e};Object.getPrototypeOf||(Object.getPrototypeOf=function(e){var t=e.__proto__;return t||null===t?t:"[object Function]"===l(e.constructor)?e.constructor.prototype:e instanceof Object?a:null});var c=function(e){try{return e.sentinel=0,0===Object.getOwnPropertyDescriptor(e,"sentinel").value}catch(e){return!1}};if(Object.defineProperty){var h=c({});if(!("undefined"==typeof document||c(document.createElement("div")))||!h)var f=Object.getOwnPropertyDescriptor}if(!Object.getOwnPropertyDescriptor||f){Object.getOwnPropertyDescriptor=function(e,t){if(d(e))throw new TypeError("Object.getOwnPropertyDescriptor called on a non-object: "+e);if(f)try{return f.call(Object,e,t)}catch(e){}var i;if(!o(e,t))return i;if(i={enumerable:s(e,t),configurable:!0},u){var l=e.__proto__,c=e!==a;c&&(e.__proto__=a);var h=n(e,t),p=r(e,t);if(c&&(e.__proto__=l),h||p)return h&&(i.get=h),p&&(i.set=p),i}return i.value=e[t],i.writable=!0,i}}if(Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)}),!Object.create){var p,m=!({__proto__:null}instanceof Object),_=function(){if(!document.domain)return!1;try{return!!new ActiveXObject("htmlfile")}catch(e){return!1}},g=function(){var e,t;t=new ActiveXObject("htmlfile");return t.write(" diff --git a/resources/assets/js/components/Setup.vue b/resources/assets/js/components/Setup.vue deleted file mode 100644 index 160dc08d..00000000 --- a/resources/assets/js/components/Setup.vue +++ /dev/null @@ -1,54 +0,0 @@ - diff --git a/resources/assets/js/components/dashboard/Dashboard.vue b/resources/assets/js/components/dashboard/Dashboard.vue deleted file mode 100644 index 0d6aa73f..00000000 --- a/resources/assets/js/components/dashboard/Dashboard.vue +++ /dev/null @@ -1,26 +0,0 @@ - diff --git a/resources/assets/js/components/dashboard/InviteTeam.vue b/resources/assets/js/components/dashboard/InviteTeam.vue deleted file mode 100644 index fcfb203d..00000000 --- a/resources/assets/js/components/dashboard/InviteTeam.vue +++ /dev/null @@ -1,31 +0,0 @@ - diff --git a/resources/assets/js/components/dashboard/ReportIncident.vue b/resources/assets/js/components/dashboard/ReportIncident.vue deleted file mode 100644 index 4813d7eb..00000000 --- a/resources/assets/js/components/dashboard/ReportIncident.vue +++ /dev/null @@ -1,45 +0,0 @@ - diff --git a/resources/assets/js/components/dashboard/ReportSchedule.vue b/resources/assets/js/components/dashboard/ReportSchedule.vue deleted file mode 100644 index 406f5a3f..00000000 --- a/resources/assets/js/components/dashboard/ReportSchedule.vue +++ /dev/null @@ -1,30 +0,0 @@ - diff --git a/resources/assets/js/components/dashboard/UpdateIncident.vue b/resources/assets/js/components/dashboard/UpdateIncident.vue deleted file mode 100644 index cc96bcdf..00000000 --- a/resources/assets/js/components/dashboard/UpdateIncident.vue +++ /dev/null @@ -1,30 +0,0 @@ - diff --git a/resources/assets/js/components/status-page/Metric.vue b/resources/assets/js/components/status-page/Metric.vue deleted file mode 100644 index e4452c80..00000000 --- a/resources/assets/js/components/status-page/Metric.vue +++ /dev/null @@ -1,198 +0,0 @@ - - - diff --git a/resources/assets/sass/_errors.scss b/resources/assets/sass/_errors.scss deleted file mode 100644 index 116ea59f..00000000 --- a/resources/assets/sass/_errors.scss +++ /dev/null @@ -1,24 +0,0 @@ -body.error-page { - background-color: #f3f3f4; - - .middle-box { - height: 400px; - width: 400px; - position: absolute; - top: 50%; - left: 50%; - margin-top: -250px; - margin-left: -200px; - z-index: 100; - - h1 { - font-size: 9em; - } - } - - h3 { - &.font-bold { - font-weight: 600; - } - } -} diff --git a/resources/assets/sass/_helpers.scss b/resources/assets/sass/_helpers.scss deleted file mode 100644 index 716ae134..00000000 --- a/resources/assets/sass/_helpers.scss +++ /dev/null @@ -1,20 +0,0 @@ -.uppercase { - text-transform: uppercase; -} - -.margin-top { - margin-top: 20px; -} - -.margin-bottom { - margin-bottom: 20px; -} - -.no-select { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} diff --git a/resources/assets/sass/_palette.scss b/resources/assets/sass/_palette.scss deleted file mode 100644 index 9d67af71..00000000 --- a/resources/assets/sass/_palette.scss +++ /dev/null @@ -1,41 +0,0 @@ -// Theme colours. -$cachet-base-light: #fff; -$cachet-base-medium: #f0f3f4; -$cachet-base-dark: #333; - -$cachet-primary: #7ED321; -$cachet-secondary: #6DB81C; - -$cachet-link: #7ed321; -$cachet-link-hover: #01579b; - -$cachet-gray-light: #e8e8e8; -$cachet-gray: #999; -$cachet-gray-darker: #666; - -$cachet-icons: #5e5e5e; - -// Statuses -$cachet-green: $cachet-primary; -$cachet-dark-green: darken($cachet-green, 10%); - -$cachet-blue: #3498db; -$cachet-dark-blue: darken($cachet-blue, 10%); - -$cachet-red: #ff6f6f; -$cachet-dark-red: darken($cachet-red, 10%); - -$cachet-teal: #0dccc0; -$cachet-dark-teal: darken($cachet-teal, 10%); - -$cachet-yellow: #F7CA18; -$cachet-dark-yellow: darken($cachet-yellow, 10%); - -$cachet-pink: #b23f73; -$cachet-dark-pink: darken($cachet-pink, 10%); - -$cachet-grey: #ecf0f1; -$cachet-dark-grey: darken($cachet-grey, 10%); - -$cachet-orange: #FF8800; -$dark-orange: darken($cachet-orange, 10%); diff --git a/resources/assets/sass/_vendors.scss b/resources/assets/sass/_vendors.scss deleted file mode 100644 index 11049477..00000000 --- a/resources/assets/sass/_vendors.scss +++ /dev/null @@ -1,36 +0,0 @@ -@import "palette"; - -$ionicons-font-path: "../../../fonts" !default; -@import "./node_modules/ionicons/scss/ionicons"; -@import "./node_modules/github-markdown-css/github-markdown"; - -@import "modules/bootstrap"; -@import "plugins/flatpickr"; - -html { - position: relative; - min-height: 100%; - -webkit-font-smoothing: antialiased; - // always show up-down scrollbar to prevent content from jumping left/right - // depending on whether the page is taller than 100% of viewport height - overflow-y: scroll; -} - -body { - margin-bottom: 60px; - padding-bottom: 60px; -} - -@import "helpers"; - -// Module overrides -@import "modules/tabs"; -@import "modules/forms"; -@import "modules/well"; -@import "modules/alerts"; -@import "modules/panels"; -@import "modules/btns"; -@import "modules/pager"; - -// Error pages can have their own overrides. -@import "errors"; diff --git a/resources/assets/sass/app.scss b/resources/assets/sass/app.scss deleted file mode 100644 index fba0d5d4..00000000 --- a/resources/assets/sass/app.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import "vendors"; - -// Styles for plugins -@import "plugins/sweetalert"; - -// Status Page will need to override certain styles. -@import "status-page/status-page"; diff --git a/resources/assets/sass/dashboard.scss b/resources/assets/sass/dashboard.scss deleted file mode 100644 index 56ec6c51..00000000 --- a/resources/assets/sass/dashboard.scss +++ /dev/null @@ -1,26 +0,0 @@ -@import "vendors"; - -// Vendors for sDshboard. -@import "./node_modules/jquery-minicolors/jquery.minicolors"; - -// Styles for partials -@import "dashboard/partials/base"; -@import "dashboard/partials/wrapper"; -@import "dashboard/partials/navbar"; -@import "dashboard/partials/sidebar"; -@import "dashboard/partials/content"; -@import "dashboard/partials/modals"; - -// Styles for specific page -@import "dashboard/pages/login"; -@import "dashboard/pages/setup"; -@import "dashboard/pages/dashboard"; - -// Styles for plugins -/*! purgecss start ignore */ -@import "plugins/jquery.minicolors"; -@import "plugins/sweetalert"; -@import "plugins/messenger"; -@import "plugins/animate"; -@import "plugins/sortable"; -/*! purgecss end ignore */ diff --git a/resources/assets/sass/dashboard/pages/_dashboard.scss b/resources/assets/sass/dashboard/pages/_dashboard.scss deleted file mode 100644 index 018299c9..00000000 --- a/resources/assets/sass/dashboard/pages/_dashboard.scss +++ /dev/null @@ -1,23 +0,0 @@ -.component-inline-update { - @extend .text-right; - padding-top: 8px; - label { - display: initial; - font-weight: normal; - } -} - -.component-group-name{ - font-size: 18px; - padding-left: 10px; -} - -.component-group-other{ - font-size: 18px; -} - -.list-group-item.group-name:hover { - cursor: pointer; -} - -@import "modules/stats"; diff --git a/resources/assets/sass/dashboard/pages/_login.scss b/resources/assets/sass/dashboard/pages/_login.scss deleted file mode 100644 index 6bc72e4b..00000000 --- a/resources/assets/sass/dashboard/pages/_login.scss +++ /dev/null @@ -1,47 +0,0 @@ -body.login { - .form-bg { - border-radius: 10px; - margin: auto; - margin-top: 60px; - padding: 30px; - width: 320px; - border: 1px solid rgba(0,0,0,.1); - box-shadow: 0 20px 30px rgba(0,0,0,.2); - background-color: white; - } - - .logo { - margin-bottom: 30px; - - img { - margin: 0 auto; - } - } - - .login-input { - height: 45px; - } - - i { - font-size: 22px; - } - - .btn { - &.btn-white { - background-color: white; - transition: background-color 0.5s ease; - - &.btn-trans { - background-color: transparent; - border: 1px solid white; - border-radius: 4px; - color: white; - - &:hover { - background-color: white; - color: $cachet-green; - } - } - } - } -} diff --git a/resources/assets/sass/dashboard/pages/_setup.scss b/resources/assets/sass/dashboard/pages/_setup.scss deleted file mode 100644 index 6bf87186..00000000 --- a/resources/assets/sass/dashboard/pages/_setup.scss +++ /dev/null @@ -1,67 +0,0 @@ -.setup-page { - padding-top: 60px; - .logo { - display: block; - margin: 0 auto 30px; - } - .steps { - @extend .row; - margin: 0 auto; - border-radius: 2px 2px 0 0; - margin-bottom: 20px; - .step { - @extend .col-xs-3; - padding: 20px 0; - text-align: center; - position: relative; - font-size: 13px; - &:not(:last-child):after { - content: ''; - position: absolute; - bottom: 31px; - left: 55%; - display: block; - height: 1px; - background: #94A1B8; - width: 100%; - } - span { - width: 23px; - height: 23px; - display: block; - position: relative; - margin: 0 auto; - margin-top: 13px; - border-radius: 25px; - background: $cachet-base-medium; - border: 1px solid #94A1B8; - -webkit-transition: all 0.2s linear; - -moz-transition: all 0.2s linear; - -ms-transition: all 0.2s linear; - -o-transition: all 0.2s linear; - transition: all 0.2s linear; - z-index: 10; - } - - &.active { - span { - background: $cachet-primary; - } - } - } - } - .setup-success { - text-align: center; - i { - font-size: 47px; - } - h3 { - margin-top: 25px; - font-size: 21px; - color: #556579; - } - .btn { - margin-top: 40px; - } - } -} diff --git a/resources/assets/sass/dashboard/partials/_base.scss b/resources/assets/sass/dashboard/partials/_base.scss deleted file mode 100644 index eeae7098..00000000 --- a/resources/assets/sass/dashboard/partials/_base.scss +++ /dev/null @@ -1,60 +0,0 @@ -body.dashboard { - font-family: $base-font-family; - font-weight: $base-font-weight; - font-size: $base-font-size; - // letter-spacing: $base-letter-spacing; - display: table; - width: 100%; - height: 100%; - table-layout: fixed; - line-height: $base-line-height; - -webkit-font-smoothing: antialiased; - - .wrapper { - padding-left: 0; - -webkit-transition: all 0.5s ease; - -moz-transition: all 0.5s ease; - -o-transition: all 0.5s ease; - transition: all 0.5s ease; - } - - .wrapper.toggled { - padding-left: $sidebar-normal-width;; - } - - .wrapper.toggled .sidebar { - width: $sidebar-normal-width;; - } - - .wrapper.toggled .page-content { - position: absolute; - margin-right: -$sidebar-normal-width;; - } - - @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { - .wrapper { - padding-left: 80px; - } - } - - @media (min-width: $screen-sm-max) { - .wrapper { - padding-left: $sidebar-normal-width; - } - - .wrapper.toggled { - padding-left: 0; - } - - .wrapper.toggled .page-content { - position: relative; - margin-right: 0; - } - } - - .alerts { - .alert h5 { - margin-top: 5px; - } - } -} diff --git a/resources/assets/sass/dashboard/partials/_content.scss b/resources/assets/sass/dashboard/partials/_content.scss deleted file mode 100644 index fa7ab4c8..00000000 --- a/resources/assets/sass/dashboard/partials/_content.scss +++ /dev/null @@ -1,122 +0,0 @@ -body.dashboard { - .page-content { - width: 100%; - .content-wrapper { - padding-top: 20px; - padding-left: 40px; - padding-right: 40px; - &.header-fixed { - margin-top: 60px; - } - textarea[name="stylesheet"] { - resize: vertical; - } - } - .header { - position: relative; - top: 0; - left: 0; - color: #333; - background-color: #fff; - padding: 22px 40px; - width: 100%; - height: 70px; - font-size: 1.2em; - border-bottom: 1px solid #eee; - z-index: 99; - &.sub-header { - padding: 8px 2px; - height: 50px; - } - &.fixed { - position: fixed; - padding-left: 270px; - } - input, button, .btn { - position: relative; - top: -4px; - } - input { - width: 20%; - } - - + .row { - margin-top: 23px; - } - - h3 { - color: #444; - margin-top: 0; - text-transform: uppercase; - } - .ion { - margin-right: 2px; - } - } - - .sub-header { - font-weight: 300; - text-transform: uppercase; - a { - text-transform: none; - } - } - - .striped-list { - .striped-list-item { - border-bottom: 1px solid #f0f0f0; - padding: 8px 0; - } - } - - .drag-handle { - cursor: move; - } - - .user-grid { - .user { - img { - border-radius: 5px; - margin-bottom: 15px; - border: 0; - } - - .name { - font-weight: 600; - } - - .email { - color: #444; - margin-top: 4px; - } - } - } - } - - // Header media queries - @media (max-width: $screen-xs-max) { - .page-content { - .content-wrapper { - padding-left: 20px; - padding-right: 20px; - } - .header { - padding-left: 20px; - padding-right: 20px; - &.fixed { - padding-left: 20px; - padding-right: 20px; - } - } - } - } - - @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { - .page-content { - .header.fixed { - padding-left: 120px; - } - } - } - -} diff --git a/resources/assets/sass/dashboard/partials/_modals.scss b/resources/assets/sass/dashboard/partials/_modals.scss deleted file mode 100644 index 5000b730..00000000 --- a/resources/assets/sass/dashboard/partials/_modals.scss +++ /dev/null @@ -1,64 +0,0 @@ -#welcome-modal { - .modal-dialog { - margin-top: 65px; - } - - .modal-content { - .modal-header { - border-bottom: 0; - } - - .modal-body { - padding-bottom: 50px; - - header { - text-align: center; - font-weight: 600; - font-size: 22px; - color: #444; - margin-bottom: 23px; - } - - p { - font-size: 13px; - color: #555; - margin: 0 auto; - width: 80%; - text-align: center; - line-height: 20px; - } - - .go-dashboard { - text-align: center; - display: block; - margin-top: 10px; - } - - .get-started { - margin-top: 40px; - - .col-md-4 { - text-align: center; - padding-bottom: 50px; - a { - i { - font-size: 38px; - color: $cachet-secondary; - display: block; - } - - color: $cachet-gray-darker; - display: block; - margin-top: 12px; - font-size: 13px; - - &:hover { - text-decoration: none; - color: $cachet-gray; - } - } - } - } - } - } -} diff --git a/resources/assets/sass/dashboard/partials/_navbar.scss b/resources/assets/sass/dashboard/partials/_navbar.scss deleted file mode 100644 index 35f55994..00000000 --- a/resources/assets/sass/dashboard/partials/_navbar.scss +++ /dev/null @@ -1,48 +0,0 @@ -body.dashboard { - .navbar { - z-index: 999; - border-radius: 0px; - border: none; - border-bottom: $header-border-color; - background: $header-background-color; - margin: 0; - a, a:active, a:visited { - color: $base-link-color; - &:hover { - color: $base-link-hover-color; - } - } - .navbar-toggle { - margin-top: 15px; - background: transparent; - border-color: transparent; - &.collapsed span { - background-color: $base-link-color; - } - } - .navbar-collapse { - background: $header-background-color; - } - a.navbar-brand { - padding: 34px 21px; - line-height: 0em; - font-size: 1.1em; - letter-spacing: 0.04em; - font-weight: 600; - text-transform: uppercase; - @media (min-width: $screen-sm-max) { - span { - padding-right: 10px; - &:before { - font-family: FontAwesome; - content: "\f060"; - } - } - } - } - .nav li a { - height: 68px; - line-height: 35px; - } - } -} diff --git a/resources/assets/sass/dashboard/partials/_sidebar.scss b/resources/assets/sass/dashboard/partials/_sidebar.scss deleted file mode 100644 index 84f6cff8..00000000 --- a/resources/assets/sass/dashboard/partials/_sidebar.scss +++ /dev/null @@ -1,299 +0,0 @@ -body.dashboard { - .sidebar { - position: fixed; - left: $sidebar-normal-width; - width: 0; - height: 100%; - margin-left: -$sidebar-normal-width; - overflow-y: auto; - background: $cachet-base-dark; - @include box-shadow($sidebar-border-shadow); - z-index: 1000; - -webkit-transition: all 0.5s ease; - -moz-transition: all 0.5s ease; - -o-transition: all 0.5s ease; - transition: all 0.5s ease; - - .sidebar-inner { - position: absolute; - top: 0; - width: $sidebar-normal-width; - margin: 0; - padding: 0; - list-style: none; - padding-bottom: 64px; /* Ensure the sidebar isn't being covered by the bottom links */ - - .profile { - text-align: center; - padding: 20px 10px; - margin-bottom: 0; - .dropdown-toggle { - text-decoration: none; - } - .dropdown-menu { - top: 108%; - } - .avatar { - width: 60px; - img { - border-radius: 50%; - width: 50px; - } - } - .username { - word-break: break-all; - margin-bottom: 0; - } - a { - color: $sidebar-text-color; - text-decoration: none; - } - } - .quick-add-incident { - @extend .text-center; - padding: 10px; - i { - @extend .visible-sm; - } - span { - @extend .hidden-sm; - } - } - ul { - clear: both; - margin: 0; - padding: 0; - list-style: none; - - li { - font-size: $sidebar-text-size; - &:focus, - &:hover { - background: lighten($cachet-base-dark, 5%) !important; - } - &.active { - background: lighten($cachet-base-dark, 10%); - &:hover { - background: lighten($cachet-base-dark, 15%) !important; - } - a { - padding-top: 14px; - padding-bottom: 14px; - border-top: 1px solid $cachet-gray-darker; - border-bottom: 1px solid $cachet-gray-darker; - color: $sidebar-text-active-color; - &:focus, - &:hover { - text-decoration: none; - } - } - } - a { - display: block; - padding: 15px; - color: $sidebar-text-color; - i { - font-size: 18px; - min-width: 17px; - text-align: center; - position: relative; - top: 1px; - margin-right: 5px; - } - &:focus, - &:hover { - text-decoration: none; - } - - span { - &.label { - float: right; - margin: 3px 0; - &.label-info { - background-color: $cachet-secondary; - } - } - } - } - - &.sub-nav-item { - a { - padding-left: 40px; - } - } - } - } - & > ul > li > a { - & > span { - @extend .hidden-sm; - } - } - } - .bottom-menu-sidebar { - @extend .hidden-sm; - position: fixed; - bottom: 0; - width: 235px; - z-index: 999; - ul > li { - float: left; - display: block; - width: 33.333%; - border-right: 1px solid #ddd; - border-top: 1px solid #ddd; - a { - color: #333333; - display: block; - position: relative; - text-align: center; - padding: 6px 0; - background: #fff; - } - } - } - } - - // Sidebar media queries - @media (min-width: $screen-xs-max) { - .sidebar { - width: $sidebar-normal-width; - } - - .wrapper.toggled .sidebar { - width: 0; - } - } - - @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { - .sidebar { - width: 80px; - left: 150px; - margin-left: -150px; - .sidebar-inner { - width: 80px; - .profile .avatar img { - width: 40px; - } - .quick-add-incident { - .btn { - padding: 3px 6px; - } - i { - font-size: 20px; - } - } - & > ul > li > a { - text-align: center; - & > i { - font-size: 25px; - } - } - } - } - } - - .sidebar-toggler { - float: left; - padding: 10px; - position: relative; - top: -15px; - left: -5px; - margin-right: 10px; - cursor: pointer; - i { - font-size: 25px; - } - } - - .sub-sidebar { - left: 0; - top: 0; - bottom: 0; - position: fixed; - margin-left: 228px; - width: 22%; - background: #F0F3F4; - border-right: 1px solid #E8ECF1; - - h3 { - margin: 0; - text-align: center; - font-size: 19px; - padding: 30px 15px 15px 15px; - } - - hr { - margin-top: 5px; - margin-bottom: 5px; - } - - ul.menu { - list-style-type: none; - padding: 0; - margin: 0; - - li { - a { - color: #666; - display: block; - padding: 13px 30px; - font-size: 15px; - transition: all 0.2s linear; - text-decoration: none; - - &.active { - color: $cachet-secondary; - } - - &:hover { - color: $cachet-secondary; - } - } - i { - margin-right: 5px; - } - } - } - - .sidebar-toggler { - position: absolute; - top: 3px; - left: 20px; - font-size: 36px; - cursor: pointer; - } - - + .content-wrapper { - top: 0; - position: relative; - margin-left: 26%; - padding-right: 40px !important; - } - - } - - // Sub-sidebar media queries - @media (max-width: $screen-xs-max) { - .sub-sidebar { - position: relative; - margin-left: 0; - width: 100%; - + .content-wrapper { - margin-left: 0; - padding-left: 40px !important; - width: 100%; - } - } - - } - - @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { - .sub-sidebar { - margin-left: 80px; - width: 25%; - + .content-wrapper { - padding-left: 45px !important; - } - } - } -} diff --git a/resources/assets/sass/dashboard/partials/_wrapper.scss b/resources/assets/sass/dashboard/partials/_wrapper.scss deleted file mode 100644 index a9f90331..00000000 --- a/resources/assets/sass/dashboard/partials/_wrapper.scss +++ /dev/null @@ -1,8 +0,0 @@ -body.dashboard { - .wrapper { - width: 100%; - display: table; - height: 100%; - table-layout: fixed; - } -} diff --git a/resources/assets/sass/modules/_alerts.scss b/resources/assets/sass/modules/_alerts.scss deleted file mode 100644 index d10ff31d..00000000 --- a/resources/assets/sass/modules/_alerts.scss +++ /dev/null @@ -1,38 +0,0 @@ -.alert { - border-radius: 4px; - background: $cachet_yellow; - border: solid 2px $cachet_dark-yellow; - - &.alert-success { - background-color: $cachet_green; - border: solid 2px $cachet_dark-green; - color: white; - - a { - color: white; - font-weight: bold; - } - } - - &.alert-info { - background: $cachet_blue; - border: solid 2px $cachet_dark-blue; - color: white; - - a { - color: white; - font-weight: bold; - } - } - - &.alert-danger { - background: $cachet_red; - border: solid 2px $cachet_dark-red; - color: white; - - a { - color: white; - font-weight: bold; - } - } -} diff --git a/resources/assets/sass/modules/_bootstrap.scss b/resources/assets/sass/modules/_bootstrap.scss deleted file mode 100644 index 5bb97f68..00000000 --- a/resources/assets/sass/modules/_bootstrap.scss +++ /dev/null @@ -1,52 +0,0 @@ -// Bootstrap variable overrides and custom variables -@import "variables"; - -// Core variables and mixins -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/variables"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/mixins"; - -// Reset and dependencies -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/normalize"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/print"; - -// Core CSS -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/scaffolding"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/type"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/code"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/grid"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/tables"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/forms"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/buttons"; - -// Components -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/component-animations"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/dropdowns"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/button-groups"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/input-groups"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/navs"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/navbar"; -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/breadcrumbs"; -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/pagination"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/pager"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/labels"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/badges"; -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/jumbotron"; -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/thumbnails"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/alerts"; -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/progress-bars"; -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/media"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/list-group"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/panels"; -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/responsive-embed"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/wells"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/close"; - -// Components w/ JavaScript -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/modals"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/tooltip"; -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/popovers"; -// @import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/carousel"; - -// Utility classes -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/utilities"; -@import "./node_modules/bootstrap-sass/assets/stylesheets/bootstrap/responsive-utilities"; diff --git a/resources/assets/sass/modules/_btns.scss b/resources/assets/sass/modules/_btns.scss deleted file mode 100644 index 54d28a36..00000000 --- a/resources/assets/sass/modules/_btns.scss +++ /dev/null @@ -1,92 +0,0 @@ -@mixin pretty-buttons($color, $background, $text-shadow: none) { - color: $color; - background: $background; - border: solid 1px darken($background, 10%); - - &:hover, - &:focus, - &:active, - &.active { - background: darken($background, 5%); - border-color: darken($background, 10%); - color: $color; - outline: none; - outline-offset: 0; - } - - &.disabled, - &[disabled], - fieldset[disabled] & { - &, - &:hover, - &:focus, - &:active, - &.active { - background-color: lighten($background, 5%); - border-color: darken($background, 10%); - } - } -} - -.btn { - &.btn-default { - @include pretty-buttons($btn-default-color, $btn-default-bg); - } - &.btn-primary { - @include pretty-buttons($btn-primary-color, $btn-primary-bg); - } - &.btn-success { - @include pretty-buttons($btn-success-color, $btn-success-bg); - } - &.btn-info { - @include pretty-buttons($btn-info-color, $btn-info-bg); - } - &.btn-warning { - @include pretty-buttons($btn-warning-color, $btn-warning-bg); - } - &.btn-danger { - @include pretty-buttons($btn-danger-color, $btn-danger-bg); - } - &.btn-inverse { - @include pretty-buttons(white, #474949); - } -} - -.btn-outline { - background-color: transparent; - background-image: none !important; - color: inherit; - transition: all .5s; -} - -.btn-default.btn-outline { - color: #999; -} - -.btn-primary.btn-outline { - color: #428bca; -} - -.btn-success.btn-outline { - color: #5cb85c; -} - -.btn-info.btn-outline { - color: #5bc0de; -} - -.btn-warning.btn-outline { - color: #f0ad4e; -} - -.btn-danger.btn-outline { - color: #d9534f; -} - -.btn-primary.btn-outline:hover, -.btn-success.btn-outline:hover, -.btn-info.btn-outline:hover, -.btn-warning.btn-outline:hover, -.btn-danger.btn-outline:hover { - color: #fff; -} diff --git a/resources/assets/sass/modules/_forms.scss b/resources/assets/sass/modules/_forms.scss deleted file mode 100644 index 2348fa82..00000000 --- a/resources/assets/sass/modules/_forms.scss +++ /dev/null @@ -1,60 +0,0 @@ -label { - font-size: 14px; -} - -textarea { - resize: none; - overflow: auto; -} - -.markdown-control { - position: relative; - - &:before { - position:absolute; - display:block; - right:0%; - bottom:0%; - width:40px; - height:40px; - font-size: 2em; - font-family: "Ionicons"; - content: "\f4e6"; - } -} - -.form-control { - display: block; - width: 100%; - height: 45px; - padding: 6px 12px; - font-size: 14px; - line-height: 1.42857143; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - @include box-shadow(none !important); - @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s); - - &:focus { - border-color: #66afe9; - } -} - -.component-inline { - @media (max-width: $screen-xs-max) { - .radio-items { - text-align: left; - .radio-inline { - margin-left: 0; - width: 100%; - } - } - } -} - -.minicolors-theme-bootstrap .minicolors-swatch { - top: 9px; - left: 9px; -} diff --git a/resources/assets/sass/modules/_pager.scss b/resources/assets/sass/modules/_pager.scss deleted file mode 100644 index 939e8fa8..00000000 --- a/resources/assets/sass/modules/_pager.scss +++ /dev/null @@ -1,12 +0,0 @@ -// -// Pager pagination -// -------------------------------------------------- - - -.pager { - li { - > a, > span { - border-radius: 3px; - } - } -} diff --git a/resources/assets/sass/modules/_panels.scss b/resources/assets/sass/modules/_panels.scss deleted file mode 100644 index 7c56c444..00000000 --- a/resources/assets/sass/modules/_panels.scss +++ /dev/null @@ -1,15 +0,0 @@ -.panel-danger { - @include panel-variant($cachet_dark-red, white, $cachet-red, $cachet_dark-red); -} - -.panel-success { - @include panel-variant($cachet_dark-green, white, $cachet-green, $cachet_dark-green); -} - -.panel-info { - @include panel-variant($cachet_dark-blue, white, $cachet-blue, $cachet_dark-blue); -} - -.panel-warning { - @include panel-variant($cachet_dark-yellow, $panel-warning-text, $cachet-yellow, $cachet_dark-yellow); -} diff --git a/resources/assets/sass/modules/_stats.scss b/resources/assets/sass/modules/_stats.scss deleted file mode 100644 index da60616f..00000000 --- a/resources/assets/sass/modules/_stats.scss +++ /dev/null @@ -1,92 +0,0 @@ -.stats-widget { - text-align: center; - margin-bottom: 30px; - background-color: #fff; - border: #eee 1px solid; - - &.full-stats-block { - .stats-bottom { - border-top: 0 !important; - color: #fff; - position: relative; - margin-top: -1px; - z-index: 1000; - } - } - - .stats-top { - padding: 20px; - - > span { - display: block; - text-align: center; - - &.stats-value { - font-size: 24px; - font-weight: 400; - } - - &.stats-label { - padding-top: 5px; - font-size: 14px; - font-weight: 300; - color: #777; - } - } - } - - .stats-chart { - margin-top: -20px; - padding-top: 10px; - } - - .stats-body { - margin-top: -20px; - padding-top: 10px; - - .list-group { - border: none; - padding-bottom: 0; - margin-bottom: 0; - - .list-group-item { - border-right: none; - border-left: none; - - border-color: #eee; - - &:last-child { - border-bottom: none; - } - } - } - } - - .stats-bottom { - border-top: #eee 1px solid; - color: #777; - padding: 12px 10px; - text-align: center; - background-color: #f9f9f9; - - &.bg-green { - background-color: $cachet-green; - color: white; - } - - &.bg-blue { - background-color: $cachet-blue; - color: white; - } - - &.bg-red { - background-color: $cachet-red; - color: white; - } - - &.bg-teal { - background-color: $cachet-teal; - color: white; - } - } -} diff --git a/resources/assets/sass/modules/_tabs.scss b/resources/assets/sass/modules/_tabs.scss deleted file mode 100644 index e46b19c6..00000000 --- a/resources/assets/sass/modules/_tabs.scss +++ /dev/null @@ -1,27 +0,0 @@ -div[role=tabpanel] { - ul.nav-tabs { - border-bottom: 1px solid #d5d8d7; - li { - a { - font-weight: 400; - display: inline-block; - padding: 10px 25px; - border-radius: 0; - font-size: 0.9em; - letter-spacing: 0.01em; - } - } - } - - .tab-content { - border: { - left: 1px solid #d5d8d7; - bottom: 1px solid #d5d8d7; - right: 1px solid #d5d8d7; - } - background-color: white; - .tab-pane { - padding: 10px; - } - } -} diff --git a/resources/assets/sass/modules/_variables.scss b/resources/assets/sass/modules/_variables.scss deleted file mode 100644 index 87c774fd..00000000 --- a/resources/assets/sass/modules/_variables.scss +++ /dev/null @@ -1,39 +0,0 @@ -// Brand colours. -$brand-primary: darken(#78909c, 6.5%) !default; -$brand-success: $cachet-primary !default; -$brand-info: $cachet-blue !default; -$brand-warning: $cachet-orange !default; -$brand-danger: $cachet-red !default; - -// Default border radius -$border-radius-base: 3px !default; -$border-radius-large: 4px !default; -$border-radius-small: 2px !default; - -//** Tooltip background color -$tooltip-bg: #333 !default; -$tooltip-opacity: .9 !default; -$base-background-color: #f1f1f1; - -$base-font-family: -apple-system, BlinkMacSystemFont, "Open Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif; -$base-font-weight: 400; -$base-letter-spacing: 0.08em; -$base-font-size: 15px; -$base-line-height: 1.42857143; - -$base-link-color: #ffffff; -$base-link-hover-color: #e9e9e9; - -$header-background-color: lighten(#00695C, 10%); -$header-border-color: 1px solid darken($header-background-color, 10%); - -$sidebar-transition-speed: .2s; -$sidebar-background-color: #78909c; -$sidebar-border-color: 1px solid #6c818c; -$sidebar-border-shadow: inset 0px -2px 3px rgba(0,0,0,0.25); -$sidebar-text-size: 0.9em; -$sidebar-text-color: #ffffff; -$sidebar-text-active-color: #ffffff; -$sidebar-normal-width: 235px; -$sidebar-phone-width: 75%; -$sidebar-active-color: #00695C; diff --git a/resources/assets/sass/modules/_well.scss b/resources/assets/sass/modules/_well.scss deleted file mode 100644 index f1dbd9c5..00000000 --- a/resources/assets/sass/modules/_well.scss +++ /dev/null @@ -1,3 +0,0 @@ -.well { - border-radius: 0; -} diff --git a/resources/assets/sass/plugins/_animate.scss b/resources/assets/sass/plugins/_animate.scss deleted file mode 100644 index ebd61c45..00000000 --- a/resources/assets/sass/plugins/_animate.scss +++ /dev/null @@ -1,13 +0,0 @@ -@import "./node_modules/animate-sass/animate"; - -body { - -webkit-backface-visibility: hidden; // Addresses a small issue in webkit: http://bit.ly/NEdoDq -} -.animated { - @include animate-prefixer(animation-duration, $base-duration); - @include animate-prefixer(animation-fill-mode, both); - - &.hinge { - @include animate-prefixer(animation-duration, $base-duration * 2); - } -} diff --git a/resources/assets/sass/plugins/_flatpickr.scss b/resources/assets/sass/plugins/_flatpickr.scss deleted file mode 100644 index 0ad2ad75..00000000 --- a/resources/assets/sass/plugins/_flatpickr.scss +++ /dev/null @@ -1,63 +0,0 @@ -/*! purgecss start ignore */ -@import "./node_modules/flatpickr/dist/flatpickr"; - -.flatpickr-calendar { - width: auto; - min-width: 293.75px; - padding: rem-calc(10); - &.open { - z-index: 4 !important; - } - .flatpickr-month { - min-height: 30px; - } - .flatpickr-prev-month, - .flatpickr-current-month, - .flatpickr-next-month { - padding: 0; - display: flex !important; - justify-content: center; - align-items: center; - height: 100%; - } - .flatpickr-prev-month, - .flatpickr-next-month { - border-radius: 1rem; - padding: 0.5rem; - &:hover { - background-color: $cachet-gray-light; - svg { - color: rgba(0, 0, 0, 0.9); - fill: rgba(0, 0, 0, 0.9); - } - } - } - .flatpickr-current-month { - .cur-month { - margin-left: 1rem; - &:hover { - background: transparent; - } - } - } - .flatpickr-day { - line-height: 36px; - &:hover { - background-color: $cachet-gray-light; - border-color: $cachet-gray-light; - } - } - .numInputWrapper { - width: 4rem; - margin-left: 0.5rem; - .numInput { - padding: 0; - box-shadow: none; - } - } -} - -.flatpickr-time { - text-align: left; -} -/*! purgecss end ignore */ diff --git a/resources/assets/sass/plugins/_jquery.minicolors.scss b/resources/assets/sass/plugins/_jquery.minicolors.scss deleted file mode 100644 index 47dffa5e..00000000 --- a/resources/assets/sass/plugins/_jquery.minicolors.scss +++ /dev/null @@ -1,278 +0,0 @@ -.minicolors { - position: relative; -} - -.minicolors-sprite { - background-image: url(data:image/png;base64,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); -} - -.minicolors-no-data-uris .minicolors-sprite { - background-image: url(jquery.minicolors.png); -} - -.minicolors-swatch { - position: absolute; - vertical-align: middle; - background-position: -80px 0; - border: solid 1px #ccc; - cursor: text; - padding: 0; - margin: 0; - display: inline-block; -} - -.minicolors-swatch-color { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; -} - -.minicolors input[type=hidden] + .minicolors-swatch { - width: 28px; - position: static; - cursor: pointer; -} - -.minicolors input[type=hidden][disabled] + .minicolors-swatch { - cursor: default; -} - -/* Panel */ -.minicolors-panel { - position: absolute; - width: 173px; - height: 152px; - background: white; - border: solid 1px #CCC; - box-shadow: 0 0 20px rgba(0, 0, 0, .2); - z-index: 99999; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; - display: none; -} - -.minicolors-panel.minicolors-visible { - display: block; -} - -/* Panel positioning */ -.minicolors-position-top .minicolors-panel { - top: -154px; -} - -.minicolors-position-right .minicolors-panel { - right: 0; -} - -.minicolors-position-bottom .minicolors-panel { - top: auto; -} - -.minicolors-position-left .minicolors-panel { - left: 0; -} - -.minicolors-with-opacity .minicolors-panel { - width: 194px; -} - -.minicolors .minicolors-grid { - position: absolute; - top: 1px; - left: 1px; - width: 150px; - height: 150px; - background-position: -120px 0; - cursor: crosshair; -} - -.minicolors .minicolors-grid-inner { - position: absolute; - top: 0; - left: 0; - width: 150px; - height: 150px; -} - -.minicolors-slider-saturation .minicolors-grid { - background-position: -420px 0; -} - -.minicolors-slider-saturation .minicolors-grid-inner { - background-position: -270px 0; - background-image: inherit; -} - -.minicolors-slider-brightness .minicolors-grid { - background-position: -570px 0; -} - -.minicolors-slider-brightness .minicolors-grid-inner { - background-color: black; -} - -.minicolors-slider-wheel .minicolors-grid { - background-position: -720px 0; -} - -.minicolors-slider, -.minicolors-opacity-slider { - position: absolute; - top: 1px; - left: 152px; - width: 20px; - height: 150px; - background-color: white; - background-position: 0 0; - cursor: row-resize; -} - -.minicolors-slider-saturation .minicolors-slider { - background-position: -60px 0; -} - -.minicolors-slider-brightness .minicolors-slider { - background-position: -20px 0; -} - -.minicolors-slider-wheel .minicolors-slider { - background-position: -20px 0; -} - -.minicolors-opacity-slider { - left: 173px; - background-position: -40px 0; - display: none; -} - -.minicolors-with-opacity .minicolors-opacity-slider { - display: block; -} - -/* Pickers */ -.minicolors-grid .minicolors-picker { - position: absolute; - top: 70px; - left: 70px; - width: 12px; - height: 12px; - border: solid 1px black; - border-radius: 10px; - margin-top: -6px; - margin-left: -6px; - background: none; -} - -.minicolors-grid .minicolors-picker > div { - position: absolute; - top: 0; - left: 0; - width: 8px; - height: 8px; - border-radius: 8px; - border: solid 2px white; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} - -.minicolors-picker { - position: absolute; - top: 0; - left: 0; - width: 18px; - height: 2px; - background: white; - border: solid 1px black; - margin-top: -2px; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} - -/* Inline controls */ -.minicolors-inline { - display: inline-block; -} - -.minicolors-inline .minicolors-input { - display: none !important; -} - -.minicolors-inline .minicolors-panel { - position: relative; - top: auto; - left: auto; - box-shadow: none; - z-index: auto; - display: inline-block; -} - -/* Default theme */ -.minicolors-theme-default .minicolors-swatch { - top: 5px; - left: 5px; - width: 18px; - height: 18px; -} -.minicolors-theme-default.minicolors-position-right .minicolors-swatch { - left: auto; - right: 5px; -} -.minicolors-theme-default.minicolors { - width: auto; - display: inline-block; -} -.minicolors-theme-default .minicolors-input { - height: 20px; - width: auto; - display: inline-block; - padding-left: 26px; -} -.minicolors-theme-default.minicolors-position-right .minicolors-input { - padding-right: 26px; - padding-left: inherit; -} - -/* Bootstrap theme */ -.minicolors-theme-bootstrap .minicolors-swatch { - z-index: 2; - top: 3px; - left: 3px; - width: 28px; - height: 28px; - border-radius: 3px; -} -.minicolors-theme-bootstrap .minicolors-swatch-color { - border-radius: inherit; -} -.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch { - left: auto; - right: 3px; -} -.minicolors-theme-bootstrap .minicolors-input { - float: none; - padding-left: 44px; -} -.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input { - padding-right: 44px; - padding-left: 12px; -} -.minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch { - top: 4px; - left: 4px; - width: 37px; - height: 37px; - border-radius: 5px; -} -.minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch { - width: 24px; - height: 24px; -} -.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} diff --git a/resources/assets/sass/plugins/_messenger.scss b/resources/assets/sass/plugins/_messenger.scss deleted file mode 100644 index f0bde3db..00000000 --- a/resources/assets/sass/plugins/_messenger.scss +++ /dev/null @@ -1,457 +0,0 @@ -ul.messenger { - margin: 0; - padding: 0; -} -ul.messenger > li { - list-style: none; - margin: 0; - padding: 0; -} -ul.messenger.messenger-empty { - display: none; -} -ul.messenger .messenger-message { - overflow: hidden; - *zoom: 1; -} -ul.messenger .messenger-message.messenger-hidden { - display: none; -} -ul.messenger .messenger-message .messenger-phrase, ul.messenger .messenger-message .messenger-actions a { - padding-right: 5px; -} -ul.messenger .messenger-message .messenger-actions { - float: right; -} -ul.messenger .messenger-message .messenger-actions a { - cursor: pointer; - text-decoration: underline; -} -ul.messenger .messenger-message ul, ul.messenger .messenger-message ol { - margin: 10px 18px 0; -} -ul.messenger.messenger-fixed { - position: fixed; - z-index: 10000; -} -ul.messenger.messenger-fixed .messenger-message { - min-width: 0; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -ul.messenger.messenger-fixed .message .messenger-actions { - float: left; -} -ul.messenger.messenger-fixed.messenger-on-top { - top: 20px; -} -ul.messenger.messenger-fixed.messenger-on-bottom { - bottom: 20px; -} -ul.messenger.messenger-fixed.messenger-on-top, ul.messenger.messenger-fixed.messenger-on-bottom { - left: 50%; - width: 600px; - margin-left: -300px; -} -@media (max-width: 960px) { - ul.messenger.messenger-fixed.messenger-on-top, ul.messenger.messenger-fixed.messenger-on-bottom { - left: 10%; - width: 80%; - margin-left: 0px; - } -} -ul.messenger.messenger-fixed.messenger-on-top.messenger-on-right, ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-right { - right: 20px; - left: auto; -} -ul.messenger.messenger-fixed.messenger-on-top.messenger-on-left, ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-left { - left: 20px; - margin-left: 0px; -} -ul.messenger.messenger-fixed.messenger-on-right, ul.messenger.messenger-fixed.messenger-on-left { - width: 350px; -} -ul.messenger.messenger-fixed.messenger-on-right .messenger-actions, ul.messenger.messenger-fixed.messenger-on-left .messenger-actions { - float: left; -} -ul.messenger .messenger-spinner { - display: none; -} - -@-webkit-keyframes ui-spinner-rotate-right { - 0% { - -webkit-transform: rotate(0deg); - } - - 25% { - -webkit-transform: rotate(180deg); - } - - 50% { - -webkit-transform: rotate(180deg); - } - - 75% { - -webkit-transform: rotate(360deg); - } - - 100% { - -webkit-transform: rotate(360deg); - } -} - -@-webkit-keyframes ui-spinner-rotate-left { - 0% { - -webkit-transform: rotate(0deg); - } - - 25% { - -webkit-transform: rotate(0deg); - } - - 50% { - -webkit-transform: rotate(180deg); - } - - 75% { - -webkit-transform: rotate(180deg); - } - - 100% { - -webkit-transform: rotate(360deg); - } -} - -@-moz-keyframes ui-spinner-rotate-right { - 0% { - -moz-transform: rotate(0deg); - } - - 25% { - -moz-transform: rotate(180deg); - } - - 50% { - -moz-transform: rotate(180deg); - } - - 75% { - -moz-transform: rotate(360deg); - } - - 100% { - -moz-transform: rotate(360deg); - } -} - -@-moz-keyframes ui-spinner-rotate-left { - 0% { - -moz-transform: rotate(0deg); - } - - 25% { - -moz-transform: rotate(0deg); - } - - 50% { - -moz-transform: rotate(180deg); - } - - 75% { - -moz-transform: rotate(180deg); - } - - 100% { - -moz-transform: rotate(360deg); - } -} - -@keyframes ui-spinner-rotate-right { - 0% { - transform: rotate(0deg); - } - - 25% { - transform: rotate(180deg); - } - - 50% { - transform: rotate(180deg); - } - - 75% { - transform: rotate(360deg); - } - - 100% { - transform: rotate(360deg); - } -} - -@keyframes ui-spinner-rotate-left { - 0% { - transform: rotate(0deg); - } - - 25% { - transform: rotate(0deg); - } - - 50% { - transform: rotate(180deg); - } - - 75% { - transform: rotate(180deg); - } - - 100% { - transform: rotate(360deg); - } -} - -.messenger-spinner { - position: relative; - border-radius: 100%; -} -ul.messenger.messenger-spinner-active .messenger-spinner .messenger-spinner { - display: block; -} -.messenger-spinner .messenger-spinner-side { - width: 50%; - height: 100%; - overflow: hidden; - position: absolute; -} -.messenger-spinner .messenger-spinner-side .messenger-spinner-fill { - border-radius: 999px; - position: absolute; - width: 100%; - height: 100%; - -webkit-animation-iteration-count: infinite; - -moz-animation-iteration-count: infinite; - -ms-animation-iteration-count: infinite; - -o-animation-iteration-count: infinite; - animation-iteration-count: infinite; - -webkit-animation-timing-function: linear; - -moz-animation-timing-function: linear; - -ms-animation-timing-function: linear; - -o-animation-timing-function: linear; - animation-timing-function: linear; -} -.messenger-spinner .messenger-spinner-side-left { - left: 0; -} -.messenger-spinner .messenger-spinner-side-left .messenger-spinner-fill { - left: 100%; - border-top-left-radius: 0; - border-bottom-left-radius: 0; - -webkit-animation-name: ui-spinner-rotate-left; - -moz-animation-name: ui-spinner-rotate-left; - -ms-animation-name: ui-spinner-rotate-left; - -o-animation-name: ui-spinner-rotate-left; - animation-name: ui-spinner-rotate-left; - -webkit-transform-origin: 0 50%; - -moz-transform-origin: 0 50%; - -ms-transform-origin: 0 50%; - -o-transform-origin: 0 50%; - transform-origin: 0 50%; -} -.messenger-spinner .messenger-spinner-side-right { - left: 50%; -} -.messenger-spinner .messenger-spinner-side-right .messenger-spinner-fill { - left: -100%; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - -webkit-animation-name: ui-spinner-rotate-right; - -moz-animation-name: ui-spinner-rotate-right; - -ms-animation-name: ui-spinner-rotate-right; - -o-animation-name: ui-spinner-rotate-right; - animation-name: ui-spinner-rotate-right; - -webkit-transform-origin: 100% 50%; - -moz-transform-origin: 100% 50%; - -ms-transform-origin: 100% 50%; - -o-transform-origin: 100% 50%; - transform-origin: 100% 50%; -} - -ul.messenger-theme-air { - -moz-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - user-select: none; - font-family: "Raleway", sans-serif; -} -ul.messenger-theme-air .messenger-message { - -webkit-transition: background-color 0.4s; - -moz-transition: background-color 0.4s; - -o-transition: background-color 0.4s; - transition: background-color 0.4s; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: inset 0 0 0 1px white, inset 0 2px white, 0 0 0 1px rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.2); - -moz-box-shadow: inset 0 0 0 1px white, inset 0 2px white, 0 0 0 1px rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.2); - box-shadow: inset 0 0 0 1px white, inset 0 2px white, 0 0 0 1px rgba(0, 0, 0, 0.1), 0 1px rgba(0, 0, 0, 0.2); - border: 0px; - background-color: white; - position: relative; - margin-bottom: 1em; - font-size: 13px; - color: #666666; - font-weight: 500; - padding: 10px 30px 11px 46px; -} -ul.messenger-theme-air .messenger-message:hover { - background-color: white; -} -ul.messenger-theme-air .messenger-message .messenger-close { - position: absolute; - top: 0px; - right: 0px; - color: #888888; - opacity: 1; - font-weight: bold; - display: block; - font-size: 20px; - line-height: 20px; - padding: 8px 10px 7px 7px; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -ul.messenger-theme-air .messenger-message .messenger-close:hover { - color: #444444; -} -ul.messenger-theme-air .messenger-message .messenger-close:active { - color: #222222; -} -ul.messenger-theme-air .messenger-message .messenger-actions { - float: none; - margin-top: 10px; -} -ul.messenger-theme-air .messenger-message .messenger-actions a { - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.05); - -moz-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.05); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.05); - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - -ms-border-radius: 4px; - -o-border-radius: 4px; - border-radius: 4px; - text-decoration: none; - display: inline-block; - color: #888888; - margin-right: 10px; - padding: 3px 10px 5px; - text-transform: capitalize; -} -ul.messenger-theme-air .messenger-message .messenger-actions a:hover { - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.15); - -moz-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.15); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.1), inset 0px 1px rgba(255, 255, 255, 0.15); - color: #444444; -} -ul.messenger-theme-air .messenger-message .messenger-actions a:active { - -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.18), inset 0px 1px rgba(0, 0, 0, 0.05); - -moz-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.18), inset 0px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.18), inset 0px 1px rgba(0, 0, 0, 0.05); - background: rgba(0, 0, 0, 0.04); - color: #444444; -} -ul.messenger-theme-air .messenger-message .messenger-actions .messenger-phrase { - display: none; -} -ul.messenger-theme-air .messenger-message .messenger-message-inner:before { - -webkit-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.3); - -moz-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.3); - box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.3); - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - -ms-border-radius: 50%; - -o-border-radius: 50%; - border-radius: 50%; - position: absolute; - left: 17px; - display: block; - content: " "; - top: 50%; - margin-top: -8px; - height: 13px; - width: 13px; - z-index: 20; -} -ul.messenger-theme-air .messenger-message.alert-success .messenger-message-inner:before { - background-color: #5fca4a; -} -ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner { - width: 24px; - height: 24px; - background: transparent; -} -ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner .messenger-spinner-side .messenger-spinner-fill { - background: #dd6a45; - -webkit-animation-duration: 20s; - -moz-animation-duration: 20s; - -ms-animation-duration: 20s; - -o-animation-duration: 20s; - animation-duration: 20s; - opacity: 1; -} -ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-soon .messenger-spinner:after { - content: ""; - background: white; - position: absolute; - width: 19px; - height: 19px; - border-radius: 50%; - top: 2px; - left: 2px; - display: block; -} -ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner { - width: 24px; - height: 24px; - background: transparent; -} -ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner .messenger-spinner-side .messenger-spinner-fill { - background: #dd6a45; - -webkit-animation-duration: 600s; - -moz-animation-duration: 600s; - -ms-animation-duration: 600s; - -o-animation-duration: 600s; - animation-duration: 600s; - opacity: 1; -} -ul.messenger-theme-air .messenger-message.alert-error.messenger-retry-later .messenger-spinner:after { - content: ""; - background: white; - position: absolute; - width: 19px; - height: 19px; - border-radius: 50%; - top: 2px; - left: 2px; - display: block; -} -ul.messenger-theme-air .messenger-message.alert-error .messenger-message-inner:before { - background-color: #dd6a45; -} -ul.messenger-theme-air .messenger-message.alert-info .messenger-message-inner:before { - background-color: #61c4b8; -} -ul.messenger-theme-air .messenger-spinner { - display: block; - position: absolute; - left: 12px; - top: 50%; - margin-top: -13px; - height: 24px; - width: 24px; - z-index: 10; -} diff --git a/resources/assets/sass/plugins/_sortable.scss b/resources/assets/sass/plugins/_sortable.scss deleted file mode 100644 index 8b1091b8..00000000 --- a/resources/assets/sass/plugins/_sortable.scss +++ /dev/null @@ -1,4 +0,0 @@ -.sortable-chosen { - border: 1px solid $cachet-gray-light !important; - background-color: $cachet-base-medium; -} diff --git a/resources/assets/sass/plugins/_sweetalert.scss b/resources/assets/sass/plugins/_sweetalert.scss deleted file mode 100644 index 067e41ae..00000000 --- a/resources/assets/sass/plugins/_sweetalert.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import "./node_modules/sweetalert2/src/sweetalert2"; - -.swal2-modal button { - margin-right: 8px; -} diff --git a/resources/assets/sass/status-page/_status-page.scss b/resources/assets/sass/status-page/_status-page.scss deleted file mode 100644 index 0045eb14..00000000 --- a/resources/assets/sass/status-page/_status-page.scss +++ /dev/null @@ -1,433 +0,0 @@ -body.status-page { - padding-top: 40px; - font-family: $base-font-family; - background-color: #F0F3F4; - color: #333333; - font-size: 1.4em; - font-weight: $base-font-weight; - -webkit-font-smoothing: antialiased; - - &.no-padding { - padding-top: 0 !important; - } - - hr { - margin-top: 10px; - margin-bottom: 10px; - } - - h1, h2, h3, h4, h5 { - margin-bottom: 20px; - } - - img { - box-sizing: border-box; - - &.emoji { - height: 20px; - width: 20px; - vertical-align: middle; - max-width: none; - } - } - - p, strong { - color: $cachet-base-dark; - } - - .tooltip { - background-color: black; - .tooltip-inner { - padding: 8px 12px; - font-size: 14px; - word-wrap: break-word; - } - } - - .help-icon { - cursor: help; - } - - .text-success, .text-component-1 { - color: $cachet_green; - } - - .text-info, .text-component-2 { - color: $cachet_blue; - } - - .text-alert, .text-component-3 { - color: $cachet_yellow; - } - - .text-danger, .text-component-4 { - color: $cachet_red; - } - - .container { - max-width: 960px; - } - - .page-header { - margin-top: 10px; - } - - .app-banner { - margin-bottom: 30px; - } - - .about-app { - margin-bottom: 40px; - p { - font-size: 1.2em; - } - } - - .alert { - font-size: 1.2em; - font-weight: 600; - } - - .timeline { - .content-wrapper { - margin-top: 40px; - margin-bottom: 40px; - } - h3 { - margin-top: 30px; - margin-bottom: 40px; - font-size: 22px; - small { - margin-left: 15px; - } - } - - .panel { - .panel-body { - h1 { - margin-top: 0; - margin-bottom: 4px; - font-size: 2em; - } - h2 { - margin-top: 0; - margin-bottom: 4px; - font-size: 1.8em; - } - h3 { - margin-top: 0; - margin-bottom: 4px; - font-size: 1.6em; - } - h4 { - margin-top: 0; - margin-bottom: 4px; - font-size: 1.4em; - } - h5 { - margin-top: 0; - margin-bottom: 4px; - font-size: 1.2em; - } - p { - margin: 0; - } - } - } - - .moment { - width: 100%; - padding-bottom: 10px; - position: relative; - &.first { - &:before { - // height: 130%; - top: -5px; - } - } - &:before { - content: ''; - position: absolute; - left: 26px; - top: -5px; - width: 2px; - height: 100%; - background: #7266BA; - } - .status-icon { - background: #fff; - width: 35px; - height: 35px; - border-radius: 50%; - border: 1px solid #e8e8e8; - position: absolute; - left: 25px; - top: 14px; - .icon { - position: absolute; - top: 7px; - left: 11px; - - &.ion-alert { - left: 15px; - } - } - &.status-0 { - color: $cachet_pink; - } - &.status-1 { - color: $cachet_orange; - } - &.status-2 { - color: $cachet_yellow; - } - &.status-3 { - color: $cachet_blue; - } - &.status-4 { - color: $cachet_green; - } - } - &.last:before { - background: #fff; - } - .panel { - margin: 0; - border-radius: 2px; - - &.panel-message { - border: 1px solid #e8e8e8; - .date { - color: darken(#c7c7c7, 20%); - } - - &:before { - position: absolute; - top: 16px; - left: 1px; - display: inline-block; - border-top: 15px solid transparent; - border-left: 0 solid #e8e8e8; - border-right: 15px solid #e8e8e8; - border-bottom: 15px solid transparent; - content: " "; - } - - &:after { - position: absolute; - top: 17px; - left: 2px; - display: inline-block; - border-top: 14px solid transparent; - border-left: 0 solid #fff; - border-right: 14px solid #fff; - border-bottom: 14px solid transparent; - content: " "; - } - } - - .panel-heading { - padding-top: 1em; - padding-bottom: 1.4em; - strong { - font-size: 1.1em; - } - } - - .panel-body { - border-top: 1px solid #eee; - p { - &:not(:last-child) { - margin-bottom: 10px; - } - font-size: 1.1em; - } - } - } - } - } - @media (max-width: 767px) { - .timeline .moment .content { - width: 100%; - } - } - - .list-group { - // margin-bottom: 20px; - padding-left: 0; - // border-radius: 0; - - .list-group-item { - border-radius: 0; - background-color: #ffffff; - border: 1px solid $cachet_gray_light; - font-size: 1.1em; - padding: 15px 15px; - - a { - font-weight: 400; - } - - h4 { - margin: 0; - font-weight: 400; - max-width: 90%; - } - - p, time { - &:not(:last-child) { - margin-bottom: 10px; - } - } - - time { - margin-bottom: 0; - } - - i.icon { - font-size: 21px; - line-height: 24px; - text-align: center; - display: inline-block; - min-width: 20px; - } - - &.group-name { - background-color: $cachet_gray_light; - padding: { - top: 0.6em; - bottom: 0.6em; - } - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - - &.break { - padding: 1px; - background-color: $cachet-base-medium; - } - } - - &.components { - @extend .panel; - border-color: $cachet_gray_light; - - &:last-child { - margin-bottom: 30px; - } - - + .components { - margin-top: 5px; - } - - p { - margin-bottom: 10px; - } - .badge { - color: transparent; - } - - a { - color: $cachet-base-dark !important; - } - - } - } - - footer { - position: absolute; - width: 100%; - bottom: 0; - height: 60px; - padding: 30px 0 60px 0; - border-top: 1px solid $cachet_gray_light; - color: $cachet-gray-darker; - font-size: 13px; - line-height: 30px; - text-align: center; - text-shadow: 0 1px 0 rgba(255,255,255,0.5); - - .btn { - text-shadow: none; - } - - .icons { - a.icon-link { - display: inline-block; - min-width: 30px; - height: 30px; - border-radius: 3px; - background-color: $cachet-gray-darker; - text-align: center; - color: $cachet_gray_light; - transition: all 0.15s; - padding: 0 10px 0 10px; - - &.rss { - background-color: $cachet-orange; - } - - &:hover { - text-decoration: none; - background-color: darken($cachet-gray-darker, 10%); - } - } - } - - .list-inline > li { - padding-right: 0; - } - - @media (min-width: 768px) { - text-align: left; - - .list-inline { - text-align: right; - > li { - padding-right: 0; - } - } - - .icons { - margin-top: 0; - text-align: right; - } - } - } - - // Individual section styling. - .section-timeline, .section-components, .section-metrics, .section-scheduled { - margin-top: 40px; - } - - .navbar-custom { - padding-top: 10px; - padding-bottom: 10px; - width: 100%; - border-radius: 0px; - margin-bottom: 10px; - - a.navbar-brand { - font-size: 30px; - font-weight: 600; - } - - .navbar-nav li a { - color: $cachet-base-dark; - font-size: 1.7rem; - - &:hover { - background-color: transparent; - } - } - } - //Display inline the incident update message. - .incident-update-item > p { - display: inline-block; - } -} diff --git a/resources/css/app.css b/resources/css/app.css new file mode 100644 index 00000000..e69de29b diff --git a/resources/js/app.js b/resources/js/app.js new file mode 100644 index 00000000..e59d6a0a --- /dev/null +++ b/resources/js/app.js @@ -0,0 +1 @@ +import './bootstrap'; diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js new file mode 100644 index 00000000..846d3505 --- /dev/null +++ b/resources/js/bootstrap.js @@ -0,0 +1,32 @@ +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ + +import axios from 'axios'; +window.axios = axios; + +window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// import Pusher from 'pusher-js'; +// window.Pusher = Pusher; + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: import.meta.env.VITE_PUSHER_APP_KEY, +// cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', +// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, +// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, +// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', +// enabledTransports: ['ws', 'wss'], +// }); diff --git a/resources/lang/af-ZA/cachet.php b/resources/lang/af-ZA/cachet.php deleted file mode 100644 index df402fad..00000000 --- a/resources/lang/af-ZA/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operasioneel', - 2 => 'Prestasieprobleme', - 3 => 'Gedeeltelike Onderbreking', - 4 => 'Groot Onderbreking', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Hou Dop', - 4 => 'Opgelos', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Afgelope 12 Uur', - 'weekly' => 'Weekliks', - 'monthly' => 'Maandeliks', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Teken aan', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Bestuur Subskripsies', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Teken Aan', - 'username' => 'Username', - 'email' => 'EPos', - 'password' => 'Wagwoord', - 'success' => 'U rekening is geskep.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Maak toe', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Teken aan', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Tuiste', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'Aangaande Hierdie Webwerf', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/af-ZA/dashboard.php b/resources/lang/af-ZA/dashboard.php deleted file mode 100644 index 0171d325..00000000 --- a/resources/lang/af-ZA/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Span', - 'member' => 'Lid', - 'profile' => 'Profiel', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Spanlid bygevoeg.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Instellings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Teken In', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Teken Uit', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/af-ZA/forms.php b/resources/lang/af-ZA/forms.php deleted file mode 100644 index d87c854d..00000000 --- a/resources/lang/af-ZA/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'EPos', - 'username' => 'Username', - 'password' => 'Wagwoord', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Kies taal', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'EPos', - 'password' => 'Wagwoord', - '2fauth' => 'Authentication Code', - 'invalid' => 'Ongeldige gebruikernaam of wagwoord', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Komponente', - 'component_status' => 'Component Status', - 'message' => 'Boodskap', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Templaat', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Boodskap', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Templaat', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Beskrywing', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Beskrywing', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Beskrywing', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'EPos', - 'password' => 'Wagwoord', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Teken Aan', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/af-ZA/notifications.php b/resources/lang/af-ZA/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/af-ZA/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/af-ZA/pagination.php b/resources/lang/af-ZA/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/af-ZA/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/af-ZA/setup.php b/resources/lang/af-ZA/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/af-ZA/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/af-ZA/validation.php b/resources/lang/af-ZA/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/af-ZA/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/af/cachet.php b/resources/lang/af/cachet.php deleted file mode 100644 index b91a62b5..00000000 --- a/resources/lang/af/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Operasioneel', - 2 => 'Prestasieprobleme', - 3 => 'Gedeeltelike Onderbreking', - 4 => 'Groot Onderbreking', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Vorige Voorvalle', - 'previous_week' => 'Vorige Week', - 'next_week' => 'Volgende Week', - 'scheduled' => 'Geskeduleerde Instandhouding', - 'scheduled_at' => ', scheduled :timestamp', - 'status' => [ - 0 => 'Geskeduleerd', // TODO: Hopefully remove this. - 1 => 'Onder die Loep', - 2 => 'Geïdentifiseerd', - 3 => 'Hou Dop', - 4 => 'Opgelos', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Afgelope 12 Uur', - 'weekly' => 'Weekliks', - 'monthly' => 'Maandeliks', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to get the most recent updates', - 'button' => 'Subscribe', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/af/dashboard.php b/resources/lang/af/dashboard.php deleted file mode 100644 index b51c692f..00000000 --- a/resources/lang/af/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Dashboard', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Incidents', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Geskeduleerde Instandhouding', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'Add users', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/af/forms.php b/resources/lang/af/forms.php deleted file mode 100644 index e37dce2d..00000000 --- a/resources/lang/af/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/af/pagination.php b/resources/lang/af/pagination.php deleted file mode 100644 index add1092a..00000000 --- a/resources/lang/af/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/resources/lang/af/setup.php b/resources/lang/af/setup.php deleted file mode 100644 index 044cf2e2..00000000 --- a/resources/lang/af/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/af/validation.php b/resources/lang/af/validation.php deleted file mode 100644 index fb52c2f3..00000000 --- a/resources/lang/af/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ar-SA/cachet.php b/resources/lang/ar-SA/cachet.php deleted file mode 100644 index ee7f1620..00000000 --- a/resources/lang/ar-SA/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1] النظام يواجه مشاكل|[2,Inf] بعض الأنظمة تواجه مشاكل', - 'major' => '[0,1] النظام يواجه مشاكل أساسية|[2,Inf] بعض الأنظمة تواجه مشاكل أساسية', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/ar-SA/dashboard.php b/resources/lang/ar-SA/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/ar-SA/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/ar-SA/forms.php b/resources/lang/ar-SA/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/ar-SA/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/ar-SA/notifications.php b/resources/lang/ar-SA/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/ar-SA/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/ar-SA/pagination.php b/resources/lang/ar-SA/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/ar-SA/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/ar-SA/setup.php b/resources/lang/ar-SA/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/ar-SA/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/ar-SA/validation.php b/resources/lang/ar-SA/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/ar-SA/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ar/cachet.php b/resources/lang/ar/cachet.php deleted file mode 100644 index 0e018fef..00000000 --- a/resources/lang/ar/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'previous_week' => 'Previous', - 'next_week' => 'Next', - 'scheduled' => 'Scheduled Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'status' => [ - 0 => 'Scheduled', // TODO: Hopefully remove this. - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to get the most recent updates', - 'button' => 'Subscribe', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/ar/dashboard.php b/resources/lang/ar/dashboard.php deleted file mode 100644 index b9b8a288..00000000 --- a/resources/lang/ar/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'لوحة التحكم', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Incidents', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Scheduled Maintenance', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'Add users', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/ar/forms.php b/resources/lang/ar/forms.php deleted file mode 100644 index e37dce2d..00000000 --- a/resources/lang/ar/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/ar/pagination.php b/resources/lang/ar/pagination.php deleted file mode 100644 index dff61b92..00000000 --- a/resources/lang/ar/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Previous', - 'next' => 'التالي »', - -]; diff --git a/resources/lang/ar/setup.php b/resources/lang/ar/setup.php deleted file mode 100644 index d420b84d..00000000 --- a/resources/lang/ar/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'تنصيب', - 'title' => 'إعداد Cachet', - 'service_details' => 'تفاصيل الخدمة', - 'env_setup' => 'إعداد البيئة', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'حساب المدير', - 'complete_setup' => 'إكمال الإعداد', - 'completed' => 'تم إعداد Cachet بنجاح!', - 'finish_setup' => 'انتقل إلى لوحة التحكم', -]; diff --git a/resources/lang/ar/validation.php b/resources/lang/ar/validation.php deleted file mode 100644 index fb52c2f3..00000000 --- a/resources/lang/ar/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ca-ES/cachet.php b/resources/lang/ca-ES/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/ca-ES/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/ca-ES/dashboard.php b/resources/lang/ca-ES/dashboard.php deleted file mode 100644 index 0abd74e4..00000000 --- a/resources/lang/ca-ES/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Els membres de l\'equip podran afegir i modificar tant components com incidències.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/ca-ES/forms.php b/resources/lang/ca-ES/forms.php deleted file mode 100644 index a41f0b27..00000000 --- a/resources/lang/ca-ES/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'Heu d\'habilitar les galetes (cookies) per poder iniciar sessió.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Farciment (padding) del banner', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/ca-ES/notifications.php b/resources/lang/ca-ES/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/ca-ES/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/ca-ES/pagination.php b/resources/lang/ca-ES/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/ca-ES/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/ca-ES/setup.php b/resources/lang/ca-ES/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/ca-ES/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/ca-ES/validation.php b/resources/lang/ca-ES/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/ca-ES/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ca/cachet.php b/resources/lang/ca/cachet.php deleted file mode 100644 index c113ee71..00000000 --- a/resources/lang/ca/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Darrera actualització :timestamp', - 'status' => [ - 1 => 'Operatiu', - 2 => 'Problemes de rendiment', - 3 => 'Interrupció parcial', - 4 => 'Interrupció major', - ], - 'group' => [ - 'other' => 'Altres components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No s\'han registrat incidents', - 'past' => 'Incidents anteriors', - 'previous_week' => 'Setmana anterior', - 'next_week' => 'Propera setmana', - 'scheduled' => 'Interrupció programada', - 'scheduled_at' => ', programat', - 'status' => [ - 0 => 'Programat', // TODO: Hopefully remove this. - 1 => 'Investigant', - 2 => 'Identificat', - 3 => 'En observació', - 4 => 'Resolt', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Sistema en funcionament | [2, Inf] Tots els sistemes estan en funcionament', - 'bad' => '[0,1] Actualment el sistema està experimentant problemes| [2, Inf] Alguns sistemes estan experimentant problemes', - 'major' => '[0,1] El servei està experimentant una interrupció major| [2, Inf] Alguns sistemes estan experimentant una interrupció major', - ], - - 'api' => [ - 'regenerate' => 'Regenerau la clau de l\'API', - 'revoke' => 'Revocau la clau de l\'API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Darrera hora', - 'hourly' => 'Darreres 12 hores', - 'weekly' => 'Setmana', - 'monthly' => 'Mes', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscriviu-vos per rebre les darreres actualitzacions', - 'button' => 'Subscriviu-vos', - 'manage' => [ - 'no_subscriptions' => 'Actualment estau subscrits a totes les actualitzacions.', - 'my_subscriptions' => 'Actualment estau subscrits a les següents actualitzacions.', - ], - 'email' => [ - 'subscribe' => 'Subscriviu-vos a les actualitzacions del correu electrònic.', - 'subscribed' => 'Heu estat subscrits a les actualitzacions del correu electrònic. Per favor, consultau el vostre correu electrònic per confirmar la subscripció.', - 'verified' => 'La vostra subscripció al correu electrònic ha estat confirmada. Gràcies!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Des-subscriviu-vos.', - 'unsubscribed' => 'La vostra subscripció del correu electrònic ha estat cancel·lada.', - 'failure' => 'Alguna cosa ha anat malament en el procés de subscripció.', - 'already-subscribed' => 'No pot subscriure\'s :email perquè ja està subscrit.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Actualització de l\'estat del component', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Nom de l\'usuari', - 'email' => 'Correu electrònic', - 'password' => 'Contrasenya', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Tanca', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscriviu-vos', - ], - ], - - // Other - 'home' => 'Inici', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'Sobre aquest lloc', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Estat', - -]; diff --git a/resources/lang/ca/dashboard.php b/resources/lang/ca/dashboard.php deleted file mode 100644 index b2edb11c..00000000 --- a/resources/lang/ca/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Dashboard', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Incidents', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Interrupció programada', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'Add users', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/ca/forms.php b/resources/lang/ca/forms.php deleted file mode 100644 index df729dab..00000000 --- a/resources/lang/ca/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Correu electrònic', - 'username' => 'Nom de l\'usuari', - 'password' => 'Contrasenya', - 'site_name' => 'Nom del lloc', - 'site_domain' => 'Domini del lloc', - 'site_timezone' => 'Seleccionau la vostra zona horària', - 'site_locale' => 'Seleccionau el vostre idioma', - 'enable_google2fa' => 'Habilita l\'autenticació en dos passos de Google', - 'cache_driver' => 'Controlador de memòria cau', - 'session_driver' => 'Controlador de sessió', - ], - - // Login form fields - 'login' => [ - 'login' => 'Usuari o correu electrònic', - 'email' => 'Correu electrònic', - 'password' => 'Contrasenya', - '2fauth' => 'Codi d\'autenticació', - 'invalid' => 'El nom d\'usuari o contrasenya no és vàlid', - 'invalid-token' => 'Token invàlid', - 'cookies' => 'Heu d\'habilitar les galetes (cookies) per poder iniciar sessió.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nom', - 'status' => 'Estat', - 'component' => 'Component', - 'message' => 'Missatge', - 'message-help' => 'També podeu fer servir Markdown.', - 'scheduled_at' => 'Per quan s\'ha de programar el manteniment?', - 'incident_time' => 'Quan va succeir aquest incident?', - 'notify_subscribers' => 'Notificar els subscriptors?', - 'visibility' => 'Visibilitat de l\'incident', - 'public' => 'Visible pel públic', - 'logged_in_only' => 'Visible només per a usuaris registrats', - 'templates' => [ - 'name' => 'Nom', - 'template' => 'Plantilla', - 'twig' => 'Les plantilles d\'incidents poden fer ús del llenguatge de plantilles Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nom', - 'status' => 'Estat', - 'group' => 'Grup', - 'description' => 'Descripció', - 'link' => 'Enllaç', - 'tags' => 'Etiquetes', - 'tags-help' => 'Separat per comes.', - 'enabled' => 'Component habilitat?', - - 'groups' => [ - 'name' => 'Nom', - 'collapsing' => 'Triau la visibilitat del grup', - 'visible' => 'Sempre ampliat', - 'collapsed' => 'Per defecte redueix el grup', - 'collapsed_incident' => 'Per defecte redueix el grup, però amplia\'l si hi ha problemes', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nom', - 'suffix' => 'Sufix', - 'description' => 'Descripció', - 'description-help' => 'També podeu fer servir Markdown.', - 'display-chart' => 'Mostrar gràfica a la pàgina d\'estat?', - 'default-value' => 'Valor per defecte', - 'calc_type' => 'Càlcul d\'indicadors', - 'type_sum' => 'Suma', - 'type_avg' => 'Mitjana', - 'places' => 'Nombre de decimals', - 'default_view' => 'Vista per defecte', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Valor', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Nom del lloc', - 'site-url' => 'URL del lloc', - 'display-graphs' => 'Mostrar gràfics a la pàgina d\'estat?', - 'about-this-page' => 'Sobre aquest lloc', - 'days-of-incidents' => 'Quants de dies d\'incidents voleu veure?', - 'banner' => 'Imatge del banner', - 'banner-help' => "Es recomana que no carregueu arxius més grans de 930 píxels d'ample.", - 'subscribers' => 'Permetre el registre per a notificacions per correu electrònic?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Codi de Google Analytics', - 'analytics_gosquared' => 'Codi de GoSquared Analytics', - 'analytics_piwik_url' => 'URL de la seva instància Piwik (sense http(s)://)', - 'analytics_piwik_siteid' => 'Identificador de lloc del Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Seleccioneu el fus horari', - 'site-locale' => 'Idioma del lloc', - 'date-format' => 'Format de la data', - 'incident-date-format' => 'Format del fus horari dels incidents', - ], - 'security' => [ - 'allowed-domains' => 'Dominis permesos', - 'allowed-domains-help' => 'Separats per comes. El domini especificat a dalt és automàticament permès per defecte.', - ], - 'stylesheet' => [ - 'custom-css' => 'Full d\'estils personalitzats', - ], - 'theme' => [ - 'background-color' => 'Color de fons', - 'background-fills' => 'Elements del fons (components, incidents, peu de pàgina)', - 'banner-background-color' => 'Color de fons del banner', - 'banner-padding' => 'Farciment (padding) del banner', - 'fullwidth-banner' => 'Habilitar la màxima amplada del banner?', - 'text-color' => 'Color del text', - 'dashboard-login' => 'Mostrar el botó del dashboard al peu de pàgina?', - 'reds' => 'Vermell (utilitzat per trobar errors)', - 'blues' => 'Blau (usat per informació)', - 'greens' => 'Verd (utilitzat per l\'èxit)', - 'yellows' => 'Groc (utilitzat per alertes)', - 'oranges' => 'Taronja (utilitzat per a avisos)', - 'metrics' => 'Omplir les mètriques', - 'links' => 'Enllaços', - ], - ], - - 'user' => [ - 'username' => 'Nom de l\'usuari', - 'email' => 'Correu electrònic', - 'password' => 'Contrasenya', - 'api-token' => 'Token de l\'API', - 'api-token-help' => 'Regenerar el seu token de l\'API evitarà a les aplicacions existents accedir al Cachet.', - 'gravatar' => 'Canviau la vostra imatge de perfil a Gravatar.', - 'user_level' => 'Nivell d\'usuari', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'Usuari', - ], - '2fa' => [ - 'help' => 'Habilitar l\'autenticació de dos factor augmenta la seguretat del compte. Necessitareu descarregar Google Authenticator o un app similar al vostre dispositiu mòbil. Quan us identifiqueu haureu de proporcionar el token generat per l\'app.', - ], - 'team' => [ - 'description' => 'Convidau els membres del vostre d\'equip introduint les seves adreces de correu electrònic aquí.', - 'email' => 'Adreça electrònica #:id', - ], - ], - - // Buttons - 'add' => 'Afegeix', - 'save' => 'Desar', - 'update' => 'Actualitzar', - 'create' => 'Crear', - 'edit' => 'Editar', - 'delete' => 'Eliminar', - 'submit' => 'Enviar', - 'cancel' => 'Cancel·lar', - 'remove' => 'Treure', - 'invite' => 'Convidar', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Opcional', -]; diff --git a/resources/lang/ca/pagination.php b/resources/lang/ca/pagination.php deleted file mode 100644 index 56e083ad..00000000 --- a/resources/lang/ca/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Anterior', - 'next' => 'Següent »', - -]; diff --git a/resources/lang/ca/setup.php b/resources/lang/ca/setup.php deleted file mode 100644 index 044cf2e2..00000000 --- a/resources/lang/ca/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/ca/validation.php b/resources/lang/ca/validation.php deleted file mode 100644 index fb52c2f3..00000000 --- a/resources/lang/ca/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/cs-CZ/cachet.php b/resources/lang/cs-CZ/cachet.php deleted file mode 100644 index 6a3d3b46..00000000 --- a/resources/lang/cs-CZ/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Poslední aktualizace :timestamp', - 'status' => [ - 0 => 'Neznámý', - 1 => 'V provozu', - 2 => 'Problémy s výkonem', - 3 => 'Částečný výpadek', - 4 => 'Závažný výpadek', - ], - 'group' => [ - 'other' => 'Ostatní služby', - ], - 'select_all' => 'Označit vše', - 'deselect_all' => 'Odznačit vše', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Nejsou nahlášeny žádné incidenty', - 'past' => 'Minulé incidenty', - 'stickied' => 'Připnuté incidenty', - 'scheduled' => 'Plánovaná odstávka', - 'scheduled_at' => ', plánované na :timestamp', - 'posted' => 'Přidáno :timestamp od :username', - 'posted_at' => 'Publikováno :timestamp', - 'status' => [ - 1 => 'Zkoumání příčiny', - 2 => 'Problém identifikován', - 3 => 'Sledování', - 4 => 'Opraveno', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Blížící se', - 1 => 'Probíhající', - 2 => 'Hotovo', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Služba je v provozu|[2,*]Všechny služby fungují bez problémů', - 'bad' => '[0,1] Služba má problémy|[2,Inf] Některá ze služeb má problémy', - 'major' => '[0,1] Služba má celkový výpadek|[2,Inf] Některé služby mají celkový výpadek', - ], - - 'api' => [ - 'regenerate' => 'Obnovit API klíč', - 'revoke' => 'Zrušit API klíč', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Během poslední hodiny', - 'hourly' => 'Posledních 12 hodin', - 'weekly' => 'Týden', - 'monthly' => 'Měsíc', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Přihlaste se změnám stavu a aktualizacím incidentů', - 'unsubscribe' => 'Odhlásit odběr', - 'button' => 'Přihlásit', - 'manage_subscription' => 'Spravovat odběry', - 'manage' => [ - 'notifications' => 'Oznámení', - 'notifications_for' => 'Spravujte oznámení pro', - 'no_subscriptions' => 'Aktuálně jsi přihlášen(a) ke všem upozorněním.', - 'update_subscription' => 'Aktualizovat odběry', - 'my_subscriptions' => 'Aktuálně jsi přihlášen(a) k následujícím upozorněním.', - 'manage_at_link' => 'Spravovat odběry na :link', - ], - 'email' => [ - 'manage_subscription' => 'Poslali jsme Vám e-mail, prosím klikněte na odkaz pro správu odběru', - 'subscribe' => 'Přihlásit se k zasílání upozornění e-mailem.', - 'subscribed' => 'Proběhlo přihlášení k e-mailovým upozorněním, potvrďte ho prosím na vašem e-mailu.', - 'updated-subscribe' => 'Úspěšně jste aktualizovali své odběry.', - 'verified' => 'E-mail pro zasílání upozornění byl ověřen. Děkujeme!', - 'manage' => 'Spravovat e-mailové odběry', - 'unsubscribe' => 'Odhlásit z odběru e-mailových upozornění.', - 'unsubscribed' => 'Odběr e-mailových upozornění byl zrušen.', - 'failure' => 'Došlo k chybě při nastavení odběru e-mailů.', - 'already-subscribed' => 'Nelze přihlásit k odběru :email, protože je již přihlášen.', - ], - ], - - 'signup' => [ - 'title' => 'Registrovat se', - 'username' => 'Uživatelské jméno', - 'email' => 'E-mail', - 'password' => 'Heslo', - 'success' => 'Tvůj účet byl vytvořen.', - 'failure' => 'Něco je špatně, nelze se registrovat.', - ], - - 'system' => [ - 'update' => 'Je k dispozici nová verze Cachet. Jak provést update najdeš zde!', - ], - - // Modal - 'modal' => [ - 'close' => 'Zavřít', - 'subscribe' => [ - 'title' => 'Přihlásit se k odběru upozornění', - 'body' => 'Zadej svůj email pro odběr upozornění této služby. Pokud již odebíráš upozornění, budeš nadále dostávat emaily pro tuto službu.', - 'button' => 'Přihlásit', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Podrobnosti a aktuální informace o událost :name, ke které došlo :date', - 'schedule' => 'Podrobnosti o plánované údržbě :name od :startDate', - 'subscribe' => 'Přihlaste se k odběru :app, abyste obdrželi aktualizace o událostech a plánované údržbě', - 'overview' => 'Držte krok s nejnovějšími aktualizacemi od: app.', - ], - ], - - // Other - 'home' => 'Hlavní stránka', - 'powered_by' => 'Vytvořeno pomocí Cachet.', - 'timezone' => 'Časová zóna je :timezone.', - 'about_this_site' => 'O tomto webu', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Kanál stavů', - -]; diff --git a/resources/lang/cs-CZ/dashboard.php b/resources/lang/cs-CZ/dashboard.php deleted file mode 100644 index 14b725e1..00000000 --- a/resources/lang/cs-CZ/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Řídicí panel', - 'writeable_settings' => 'Nelze zapisovat do složky nastavení Cachet. Ujistěte se, že web server může zapisovat do ./bootstrap/cachet.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidenty & Plán odstávek', - 'incidents' => 'Incidenty', - 'logged' => '{0}Nejsou hlášeny žádné incidenty, dobrá práce.|[1]Zapsali jste jeden incident.|[2,*]Nahlásili jste :count incidentů.', - 'incident-create-template' => 'Vytvořit šablonu', - 'incident-templates' => 'Šablony incidentů', - 'updates' => [ - 'title' => 'Aktualizace incidentu :incident', - 'count' => '{0}žádné aktualizace |[1]jedna aktualizace |[2]dvě aktualizace | [3, *] Několik aktualizací', - 'add' => [ - 'title' => 'Vytvořit novou zprávu k události', - 'success' => 'Vaše aktualizace incidentu byla vytvořena.', - 'failure' => 'Při aktualizaci incidentu se něco pokazilo.', - ], - 'edit' => [ - 'title' => 'Editovat aktualizace incidentu', - 'success' => 'Událost byla aktualizována.', - 'failure' => 'Při aktualizaci incidentu se něco pokazilo', - ], - ], - 'reported_by' => 'Nahlášeno :timestamp od :user', - 'add' => [ - 'title' => 'Nahlásit incident', - 'success' => 'Incident byl přidán.', - 'failure' => 'Došlo k chybě při přidávání události, opakujte akci.', - ], - 'edit' => [ - 'title' => 'Upravit incident', - 'success' => 'Incident aktualizován.', - 'failure' => 'Došlo k chybě při editaci události, opakujte akci.', - ], - 'delete' => [ - 'success' => 'Událost byla odstraněna a už se nebude zobrazovat na stavové stránce.', - 'failure' => 'Událost se nepodařilo smazat, opakujte akci.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Šablony incidentů', - 'add' => [ - 'title' => 'Vytvořit šablonu incidentu', - 'message' => 'Měli byste přidat šablonu události.', - 'success' => 'Byla vytvořena nová šablona události.', - 'failure' => 'Se šablonou události se něco pokazilo.', - ], - 'edit' => [ - 'title' => 'Upravit šablonu', - 'success' => 'Šablona události byla aktualizována.', - 'failure' => 'Při aktualizaci šablony incidentu se něco pokazilo', - ], - 'delete' => [ - 'success' => 'Šablona události byla smazána.', - 'failure' => 'Šablonu události se nepodařilo smazat, opakujte akci.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Plánovaná odstávka', - 'logged' => '{0}Žádná údržba není v plánu, dobrá práce.|[1]Naplánovali jste jednu údržbu.|[2,*]Jsou v plánu :count údržby.', - 'scheduled_at' => 'Naplánováno na :timestamp', - 'add' => [ - 'title' => 'Přidat plánovanou odstávku', - 'success' => 'Odstávka byla přidána.', - 'failure' => 'Něco se pokazilo při přidávání odstávky, zkus to znova.', - ], - 'edit' => [ - 'title' => 'Upravit naplánovanou odstávku', - 'success' => 'Odstávka byla aktualizovaná!', - 'failure' => 'Něco se pokazilo při úpravě odstávky, zkus to znova.', - ], - 'delete' => [ - 'success' => 'Plánovaná odstávka byla smazána a nebude se zobrazovat na hlavní stránce.', - 'failure' => 'Plánovaná odstávka nemohla být smazána, zkus to znova.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Služby', - 'component_statuses' => 'Stavy služeb', - 'listed_group' => 'Seskupeno podle :name', - 'add' => [ - 'title' => 'Přidat službu', - 'message' => 'Měli byste přidat službu.', - 'success' => 'Služba vytvořena.', - 'failure' => 'Něco se pokazilo se skupinou služby, zkus to znova.', - ], - 'edit' => [ - 'title' => 'Upravit službu', - 'success' => 'Služba byla aktualizována.', - 'failure' => 'Něco se pokazilo se skupinou služby, zkus to znova.', - ], - 'delete' => [ - 'success' => 'Služba byla smazána!', - 'failure' => 'Služba nemůže být odstraněna, opakujte akci.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Skupina služeb|Skupiny služeb', - 'no_components' => 'Můžete přidat skupinu služeb.', - 'add' => [ - 'title' => 'Přidat skupinu služeb', - 'success' => 'Skupina služeb byla přidána.', - 'failure' => 'Něco se pokazilo se skupinou služby, zkus to znova.', - ], - 'edit' => [ - 'title' => 'Upravit skupinu komponent', - 'success' => 'Skupina služeb byla aktualizována.', - 'failure' => 'Něco se pokazilo se skupinou služby, zkus to znova.', - ], - 'delete' => [ - 'success' => 'Skupina služeb byla smazána!', - 'failure' => 'Skupina komponent nemohla být smazána, zkus to znova.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metriky', - 'add' => [ - 'title' => 'Vytvořit metriku', - 'message' => 'Měli byste přidat metriku.', - 'success' => 'Metrika vytvořena.', - 'failure' => 'Něco se pokazilo s metrikou, zkus to znova.', - ], - 'edit' => [ - 'title' => 'Upravit metriku', - 'success' => 'Metrika aktualizována.', - 'failure' => 'Něco se pokazilo s metrikou, zkus to znova.', - ], - 'delete' => [ - 'success' => 'Měření bylo smazáno a už se nebude zobrazovat na stavové stránce.', - 'failure' => 'Měření nemohlo být odstraněno, opakujte akci.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Odběratelé', - 'description' => 'Pokud dojde ke vzniku incidentu nebo služby, odběratelé obdrží aktualizace e-mailem.', - 'description_disabled' => 'Chcete-li použít tuto funkci, potřebujete povolit uživatelům registraci pro oznámení.', - 'verified' => 'Ověřeno', - 'not_verified' => 'Neověřeno', - 'subscriber' => ': e-mail, přihlášen: datum', - 'no_subscriptions' => 'Přihlášeno k zasílání všech aktualizací', - 'global' => 'Globálně odebírané', - 'add' => [ - 'title' => 'Přidat nového odběratele', - 'success' => 'Odběratel přidán.', - 'failure' => 'Něco se pokazilo při přidávání odběratele, opakujte akci.', - 'help' => 'Zadejte každého odběratele na nový řádek.', - ], - 'edit' => [ - 'title' => 'Aktualizovat odeběratele', - 'success' => 'Odběratel aktualizován.', - 'failure' => 'Něco se pokazilo při úpravě odběratele, zkus to znova.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Tým', - 'member' => 'Člen', - 'profile' => 'Profil', - 'description' => 'Členové týmu budou schopni přidat nebo upravit komponenty a incidenty.', - 'add' => [ - 'title' => 'Přidat nového člena týmu', - 'success' => 'Nový člen týmu byl přidán.', - 'failure' => 'Člena týmu se nezdařilo přidat, opakujte akci.', - ], - 'edit' => [ - 'title' => 'Aktualizovat profil', - 'success' => 'Profil byl aktualizován.', - 'failure' => 'Něco se pokazilo při aktualizaci profilu, zkus to znova.', - ], - 'delete' => [ - 'success' => 'Člen týmu byl smazán a již nebude mít přístup do řídícího panelu!', - 'failure' => 'Člena týmu se nezdařilo přidat, opakujte akci.', - ], - 'invite' => [ - 'title' => 'Pozvat nového člena týmu', - 'success' => 'Pozvánka byla odeslána', - 'failure' => 'Pozvánka nemohla být odeslána, zkus to znova.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Nastavení', - 'app-setup' => [ - 'app-setup' => 'Nastavení aplikace', - 'images-only' => 'Nahrány mohou být pouze obrázky.', - 'too-big' => 'Soubor, který nahráváte, je příliš velký. Nahrajte obrázek menší než :velikost', - ], - 'analytics' => [ - 'analytics' => 'Monitoring přístupů', - ], - 'log' => [ - 'log' => 'Záznamy', - ], - 'localization' => [ - 'localization' => 'Lokální nastavení', - ], - 'customization' => [ - 'customization' => 'Vlastní nastavení', - 'header' => 'Vlastní hlavička HTML', - 'footer' => 'Vlastní zápatí HTML', - ], - 'mail' => [ - 'mail' => 'E-Mail', - 'test' => 'Vyzkoušet', - 'email' => [ - 'subject' => 'Testovací oznámení z Cachet', - 'body' => 'Toto je testovací oznámení z Cachet.', - ], - ], - 'security' => [ - 'security' => 'Zabezpečení', - 'two-factor' => 'Uživatelé bez dvoufaktorového ověřování', - ], - 'stylesheet' => [ - 'stylesheet' => 'Šablona stylů', - ], - 'theme' => [ - 'theme' => 'Nastavení vzhledu', - ], - 'edit' => [ - 'success' => 'Nastavení uložena.', - 'failure' => 'Nastavení nelze uložit.', - ], - 'credits' => [ - 'credits' => 'Autoři', - 'contributors' => 'Přispěvatelé', - 'license' => 'Cachet je open-sourcový projekt pod BSD-3-licencí, vydávaný Alt Three Services Limited.', - 'backers-title' => 'Podporovatelé a sponzoři', - 'backers' => 'Pokud chcete podpořit další vývoj aplikace, běžte se podívat na kampaň Cachet Patreon.', - 'thank-you' => 'Děkujeme každému z :count přispěvatelů.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Přihlášení', - 'logged_in' => 'Jste přihlášeni.', - 'welcome' => 'Vítejte zpátky!', - 'two-factor' => 'Zadejte prosím váš token.', - ], - - // Sidebar footer - 'help' => 'Nápověda', - 'status_page' => 'Stavová stránka', - 'logout' => 'Odhlásit', - - // Notifications - 'notifications' => [ - 'notifications' => 'Oznámení', - 'awesome' => 'Vynikající.', - 'whoops' => 'Jejda.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Podpořit Cachet', - 'support_subtitle' => 'Mrkněte na náš Patreon page!', - 'news' => 'Poslední novinky', - 'news_subtitle' => 'Získat nejnovější aktualizace', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Vítej na tvé nové Status stránce, :username!', - 'message' => 'Vaše stavová stránka je téměř připravena! Možná budete chtít upravit další nastavení', - 'close' => 'Přejít rovnou do řídícího panelu', - 'steps' => [ - 'component' => 'Vytvoření komponent', - 'incident' => 'Vytvoření incidentů', - 'customize' => 'Přizpůsobit', - 'team' => 'Přidat uživatele', - 'api' => 'Vygenerovat API token', - 'two-factor' => 'Dvoufaktorové ověření', - ], - ], - -]; diff --git a/resources/lang/cs-CZ/forms.php b/resources/lang/cs-CZ/forms.php deleted file mode 100644 index 5b7165e8..00000000 --- a/resources/lang/cs-CZ/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'E-mail', - 'username' => 'Uživatelské jméno', - 'password' => 'Heslo', - 'site_name' => 'Název webu', - 'site_domain' => 'Doména webu', - 'site_timezone' => 'Vyberte vaše časové pásmo', - 'site_locale' => 'Vyberte svůj jazyk', - 'enable_google2fa' => 'Povolit dvoufaktorové ověřování Google', - 'cache_driver' => 'Ovladač cache', - 'queue_driver' => 'Řadič fronty', - 'session_driver' => 'Ovladač sezení', - 'mail_driver' => 'Ovladač pro e-mail', - 'mail_host' => 'Host pro Mail', - 'mail_address' => 'Adresa Mailu', - 'mail_username' => 'Uživatelské jméno pro Mail účet', - 'mail_password' => 'Heslo pro Mail účet', - ], - - // Login form fields - 'login' => [ - 'login' => 'Uživatelské jméno nebo e-mail', - 'email' => 'E-mail', - 'password' => 'Heslo', - '2fauth' => 'Ověřovací kód', - 'invalid' => 'Nesprávné uživatelské jméno nebo heslo', - 'invalid-token' => 'Neplatný token', - 'cookies' => 'Pro přihlášení je třeba povolit soubory cookie.', - 'rate-limit' => 'Překročen limit.', - 'remember_me' => 'Zůstat přihlášený', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Jméno', - 'status' => 'Stav', - 'component' => 'Komponenta', - 'component_status' => 'Stavy služeb', - 'message' => 'Zpráva', - 'message-help' => 'Můžete také použít Markdown.', - 'occurred_at' => 'Kdy došlo k incidentu?', - 'notify_subscribers' => 'Oznámit odběratelům?', - 'notify_disabled' => 'Z důvodu plánované údržby budou oznámení o tomto incidentu nebo jeho součástech potlačena.', - 'visibility' => 'Viditelnost incidentu', - 'stick_status' => 'Připnout událost', - 'stickied' => 'Připnuté', - 'not_stickied' => 'Nepřipnuté', - 'public' => 'Viditelné veřejnosti', - 'logged_in_only' => 'Viditelné pouze pro přihlášené uživatele', - 'templates' => [ - 'name' => 'Jméno', - 'template' => 'Šablona', - 'twig' => 'Šablony pro incidenty mohou používat šablonovací jazyk Twig.', - ], - ], - - 'schedules' => [ - 'name' => 'Jméno', - 'status' => 'Stav', - 'message' => 'Zpráva', - 'message-help' => 'Můžete také použít Markdown.', - 'scheduled_at' => 'Na kdy je naplánovaná údržba?', - 'completed_at' => 'Kdy bude údržba hotová?', - 'templates' => [ - 'name' => 'Jméno', - 'template' => 'Šablona', - 'twig' => 'Šablony pro incidenty mohou používat šablonovací jazyk Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Jméno', - 'status' => 'Stav', - 'group' => 'Skupina', - 'description' => 'Popis', - 'link' => 'Odkaz', - 'tags' => 'Štítky', - 'tags-help' => 'Oddělené čárkou.', - 'enabled' => 'Je služba povolena?', - - 'groups' => [ - 'name' => 'Jméno', - 'collapsing' => 'Rozbalit nebo sbalit možnosti', - 'visible' => 'Vždy rozbalené', - 'collapsed' => 'Sbalit skupinu ve výchozím nastavení', - 'collapsed_incident' => 'Sbalit skupinu, ale rozšířit, pokud existují problémy', - 'visibility' => 'Viditelnost', - 'visibility_public' => 'Viditelné pro veřejnost', - 'visibility_authenticated' => 'Viditelné pouze pro přihlášené uživatele', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Jméno', - 'description' => 'Popis', - 'start_at' => 'Naplánovat čas spuštění', - 'timezone' => 'Časová zóna', - 'schedule_frequency' => 'Naplánovat frekvenci (ve vteřinách)', - 'completion_latency' => 'Prodleva dokončení (ve vteřinách)', - 'group' => 'Skupina', - 'active' => 'Aktivní?', - 'groups' => [ - 'name' => 'Název skupiny', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Jméno', - 'suffix' => 'Přípona', - 'description' => 'Popis', - 'description-help' => 'Můžete také použít Markdown.', - 'display-chart' => 'Zobrazovat graf na stavové stránce?', - 'default-value' => 'Výchozí hodnota', - 'calc_type' => 'Výpočet metrik', - 'type_sum' => 'Celkem', - 'type_avg' => 'Průměr', - 'places' => 'Počet desetinných míst', - 'default_view' => 'Výchozí zobrazení', - 'threshold' => 'Jak často se mají snímat metrické body?', - 'visibility' => 'Viditelnost', - 'visibility_authenticated' => 'Viditelné přihlášeným uživatelům', - 'visibility_public' => 'Viditelný všem', - 'visibility_hidden' => 'Vždy skrýt', - - 'points' => [ - 'value' => 'Hodnota', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Název webu', - 'site-url' => 'URL adresa webu', - 'display-graphs' => 'Zobrazit grafy na stavové stránce?', - 'about-this-page' => 'O této stránce', - 'days-of-incidents' => 'Kolik dní incidentů zobrazovat?', - 'time_before_refresh' => 'Obnovovací frekvence status stránky (v sekundách)', - 'major_outage_rate' => 'Hlavní doba výpadků (v %)', - 'banner' => 'Obrázek banneru', - 'banner-help' => 'Doručuje se nenahrávat soubory větší než 930 pixelů na šířku', - 'subscribers' => 'Umožnit lidem, aby se přihlašovali k odběru e-mailových upozornění?', - 'suppress_notifications_in_maintenance' => 'Potlačit oznámení dojde-li k události během během času údržby?', - 'skip_subscriber_verification' => 'Přestat ověřovat uživatele? (Pozor na spammery)', - 'automatic_localization' => 'Automaticky lokalizovat stránku do jazyka návštěvníka?', - 'enable_external_dependencies' => 'Povolit závislosti třetích stran (Google písma, Trackery, atd...)', - 'show_timezone' => 'Zobrazit časové pásmo, ve které je zobrazena stavová stránka', - 'only_disrupted_days' => 'Zobrazit na časové ose pouze dny, kdy došlo k incidentu?', - ], - 'analytics' => [ - 'analytics_google' => 'Kód pro Google Analytics', - 'analytics_gosquared' => 'Kód pro GoSquared Analytics', - 'analytics_piwik_url' => 'URL vaší instance Piwik', - 'analytics_piwik_siteid' => 'Id webu Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Časové pásmo webu', - 'site-locale' => 'Jazyk webu', - 'date-format' => 'Formát datumu', - 'incident-date-format' => 'Formát času pro incident', - ], - 'security' => [ - 'allowed-domains' => 'Povolené domény', - 'allowed-domains-help' => 'Oddělené čárkami. Výše uvedené domény jsou ve výchozím nastavení automaticky povoleny.', - 'always-authenticate' => 'Vždy ověřovat', - 'always-authenticate-help' => 'Požadovat přihlášení k zobrazení jakékoli Cachet stránky', - ], - 'stylesheet' => [ - 'custom-css' => 'Vlastní šablona stylů', - ], - 'theme' => [ - 'background-color' => 'Barva pozadí', - 'background-fills' => 'Pozadí výplně (komponenty, incidenty, zápatí)', - 'banner-background-color' => 'Barva pozadí banneru', - 'banner-padding' => 'Odsazení banneru', - 'fullwidth-banner' => 'Povolit banner přes celou obrazovku?', - 'text-color' => 'Barva textu', - 'dashboard-login' => 'Zobrazit tlačítko Řídící panel v zápatí?', - 'reds' => 'Červená (používané pro chyby)', - 'blues' => 'Modrá (používané pro informace)', - 'greens' => 'Zelená (používá se pro vyřešení problémů)', - 'yellows' => 'Žlutá (používá se pro upozornění)', - 'oranges' => 'Oranžová (slouží k oznámení)', - 'metrics' => 'Vyplnění metrik', - 'links' => 'Odkazy', - ], - ], - - 'user' => [ - 'username' => 'Uživatelské jméno', - 'email' => 'E-mail', - 'password' => 'Heslo', - 'api-token' => 'API Token', - 'api-token-help' => 'Přegenerování vašeho API tokenu zabrání současným aplikacím přistupovat ke Cachet.', - 'gravatar' => 'Profilový obrázek si změn na Gravatar.', - 'user_level' => 'Úroveň uživatele', - 'levels' => [ - 'admin' => 'Správce', - 'user' => 'Uživatel', - ], - '2fa' => [ - 'help' => 'Zapnutí dvoufaktorového ověřování zvýší zabezpečení vašeho účtu. Budete muset stáhnout Google Authenticator nebo podobnou aplikaci pro mobilní zařízení. Po přihlášení budete vyzváni k zadání tokenu vygenerovaného aplikací.', - ], - 'team' => [ - 'description' => 'Pozvi uživatele do týmu zadáním emailové adresy.', - 'email' => 'Email #:id', - ], - ], - - 'general' => [ - 'timezone' => 'Vybrat časové pásmo', - ], - - 'seo' => [ - 'title' => 'SEO titulek', - 'description' => 'Popis SEO', - ], - - // Buttons - 'add' => 'Přidat', - 'save' => 'Uložit', - 'update' => 'Aktualizovat', - 'create' => 'Vytvořit', - 'edit' => 'Upravit', - 'delete' => 'Smazat', - 'submit' => 'Potvrdit', - 'cancel' => 'Zrušit', - 'remove' => 'Smazat', - 'invite' => 'Pozvat', - 'signup' => 'Registrovat se', - 'manage_updates' => 'Správa aktualizací', - - // Other - 'optional' => '* Volitelné', -]; diff --git a/resources/lang/cs-CZ/notifications.php b/resources/lang/cs-CZ/notifications.php deleted file mode 100644 index 7da9d880..00000000 --- a/resources/lang/cs-CZ/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Aktualizován stav komponenty', - 'greeting' => 'Stav kompomenty byl aktualizován!', - 'content' => ':name změnil stav z :old_status na :new_status.', - 'action' => 'Zobrazit', - ], - 'slack' => [ - 'title' => 'Aktualizován stav komponenty', - 'content' => ':name změnil stav z :old_status na :new_status.', - ], - 'sms' => [ - 'content' => ':name změnil stav z :old_status na :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Nahlášena nová událost', - 'greeting' => 'Nová událost byla nahlášena v :app_name.', - 'content' => 'Událost :name byla nahlášena', - 'action' => 'Zobrazit', - ], - 'slack' => [ - 'title' => 'Událost :name nahlášena', - 'content' => 'Nová událost byla nahlášena v :app_name', - ], - 'sms' => [ - 'content' => 'Nová událost byla nahlášena v :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Událost aktualizována', - 'content' => ':name byl aktualizován', - 'title' => ':name změnil stav na :new_status', - 'action' => 'Zobrazit', - ], - 'slack' => [ - 'title' => ':name byl aktualizován', - 'content' => ':name změnil stav na :new_status', - ], - 'sms' => [ - 'content' => 'Událost :name byla aktualizována', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Nový plán vytvořen', - 'content' => ':name bylo naplánováno na :date', - 'title' => 'Nová plánovaná údržba byla vytvořena.', - 'action' => 'Zobrazit', - ], - 'slack' => [ - 'title' => 'Nový plán vytvořen!', - 'content' => ':name bylo naplánováno na :date', - ], - 'sms' => [ - 'content' => ':name bylo naplánováno na :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Potvrďte váš odběr', - 'content' => 'Klikněte pro potvrzení odběru stavové stránky :app_name.', - 'title' => 'Potvrďte svůj odběr stavové stránky :app_name.', - 'action' => 'Ověřit', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Spravovat e-mailové odběry', - 'content' => 'Klikněte pro potvrzení odběru stavové stránky :app_name.', - 'title' => 'Klikněte pro potvrzení odběru stavové stránky :app_name.', - 'action' => 'Spravovat odběry', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping z Cachet!', - 'content' => 'Toto je testovací oznámení z Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Uvnitř najdete pozvánku...', - 'content' => 'Byl jste pozván, abyste se připojil ke stavové stránce :app_name.', - 'title' => 'Jste pozváni, abyste se připojili ke stavové stránce :app_name.', - 'action' => 'Potvrdit', - ], - ], - ], -]; diff --git a/resources/lang/cs-CZ/pagination.php b/resources/lang/cs-CZ/pagination.php deleted file mode 100644 index f4f458ea..00000000 --- a/resources/lang/cs-CZ/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Předchozí', - 'next' => 'Další', - -]; diff --git a/resources/lang/cs-CZ/setup.php b/resources/lang/cs-CZ/setup.php deleted file mode 100644 index 311b185c..00000000 --- a/resources/lang/cs-CZ/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Instalace', - 'title' => 'Instalace Cachet', - 'service_details' => 'Podrobnosti o službě', - 'env_setup' => 'Nastavení prostředí', - 'status_page_setup' => 'Nastavení Stavové stránky', - 'show_support' => 'Zobrazit podporu pro Cachet?', - 'admin_account' => 'Účet správce', - 'complete_setup' => 'Dokončení instalace', - 'completed' => 'Cachet byl úspěšně nakonfigurován!', - 'finish_setup' => 'Přejít na dashboard', -]; diff --git a/resources/lang/cs-CZ/validation.php b/resources/lang/cs-CZ/validation.php deleted file mode 100644 index 43d5e772..00000000 --- a/resources/lang/cs-CZ/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'Je potřeba potvrdit :attribute.', - 'active_url' => ':attribute není platná adresa URL.', - 'after' => ':attribute musí být datum po :date.', - 'alpha' => ':attribute může obsahovat pouze písmena.', - 'alpha_dash' => ':attribute může obsahovat pouze písmena, čísla a pomlčky.', - 'alpha_num' => ':attribute může obsahovat pouze písmena a čísla.', - 'array' => ':attribute musí být textové pole.', - 'before' => ':attribute musí být datum před :date.', - 'between' => [ - 'numeric' => ':attribute musí mít hodnou mezi :min a :max.', - 'file' => ':attribute musí mít velikost v rozmezí :min až :max kilobytů.', - 'string' => ':attribute musí mít délku v rozmezí :min a :max znaků.', - 'array' => ':attribute musí mít mezi :min a :max položkami.', - ], - 'boolean' => ':attribute musí mít hodnotu pravda nebo nepravda.', - 'confirmed' => 'Potvrzení :attribute se neshoduje.', - 'date' => ':attribute není platné datum.', - 'date_format' => ':attribute se neshoduje se správným formátem :format.', - 'different' => ':attribute a :other se musí lišit.', - 'digits' => ':attribute musí obsahovat :digits číslice.', - 'digits_between' => ':attribute musí být v rozmezí :min a :max číslic.', - 'email' => ':attribute musí být platná e-mailová adresa.', - 'exists' => 'Vybraný :attribute je neplatný.', - 'distinct' => ':attribute má duplicitní hodnotu.', - 'filled' => 'Pole :attribute je vyžadováno.', - 'image' => ':attribute musí být obrázek.', - 'in' => 'Vybraný :attribute je neplatný.', - 'in_array' => ':attribute není v :other.', - 'integer' => ':attribute musí být celé číslo.', - 'ip' => ':attribute musí být platná IP adresa.', - 'json' => ': attribute musí být ve formátu JSON.', - 'max' => [ - 'numeric' => ':attribute nesmí být větší než :max.', - 'file' => ':attribute nesmí být větší než :max kb.', - 'string' => ':attribute nesmí být delší než :max znaků.', - 'array' => 'Atribut nesmí mít více než :max položek.', - ], - 'mimes' => ':attribute musí být soubor typu: :values.', - 'min' => [ - 'numeric' => ':attribute musí být alespoň :min.', - 'file' => 'Atribut musí mít alespoň :min kB.', - 'string' => ':attribute musí být dlouhý alespoň :min znaků.', - 'array' => ':attribute musí mít alespoň :min položek.', - ], - 'not_in' => 'Vybraný :attribute je neplatný.', - 'numeric' => 'Pole :attribute musí být číslo.', - 'present' => 'Pole :attribute je vyžadováno.', - 'regex' => 'Formát :attribute je neplatný.', - 'required' => 'Pole :attribute je vyžadováno.', - 'required_if' => 'Pole :attribute je požadováno, když :other je :value.', - 'required_unless' => 'Pole :attribute je požadováno, pokud :other není v :value.', - 'required_with' => 'Pole :attribute je požadováno, když je zadané :values.', - 'required_with_all' => 'Pole :attribute je požadováno, když je zadané :values.', - 'required_without' => 'Pole :attribute je požadováno když :values není k dispozici.', - 'required_without_all' => 'Pole :attribute je požadováno když :values není k dispozici.', - 'same' => ':attribute a: :other se musí shodovat.', - 'size' => [ - 'numeric' => ':attribute musí mít velikost: :size.', - 'file' => 'Atribut musí mít :size kB.', - 'string' => 'Atribut musí mít :size znaků.', - 'array' => ':attribute musí obsahovat :size položek.', - ], - 'string' => ':attribute musí být text.', - 'timezone' => ':attribute musí být platná zóna.', - 'unique' => ':attribute byl už použit.', - 'url' => 'Formát :attribute je neplatný.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'vlastní zpráva', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/cs/cachet.php b/resources/lang/cs/cachet.php deleted file mode 100644 index e9fe4560..00000000 --- a/resources/lang/cs/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'V provozu', - 2 => 'Problémy s výkonem', - 3 => 'Částečný výpadek', - 4 => 'Závažný výpadek', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'previous_week' => 'Previous', - 'next_week' => 'Next', - 'scheduled' => 'Plánovaná odstávka', - 'scheduled_at' => ', plánované na :timestamp', - 'status' => [ - 0 => 'Naplánováno', // TODO: Hopefully remove this. - 1 => 'Zkoumání příčiny', - 2 => 'Problém identifikován', - 3 => 'Sledování', - 4 => 'Opraveno', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'Obnovit API klíč', - 'revoke' => 'Zrušit API klíč', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to get the most recent updates', - 'button' => 'Přihlásit', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Přihlásit se k zasílání upozornění e-mailem.', - 'subscribed' => 'Proběhlo přihlášení k e-mailovým upozorněním, potvrďte ho prosím na vašem e-mailu.', - 'verified' => 'E-mail pro zasílání upozornění byl ověřen. Děkujeme!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Odběr e-mailových upozornění byl zrušen.', - 'failure' => 'Došlo k chybě při nastavení odběru e-mailů.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Uživatelské jméno', - 'email' => 'E-mail', - 'password' => 'Heslo', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Přihlásit', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Kanál stavů', - -]; diff --git a/resources/lang/cs/dashboard.php b/resources/lang/cs/dashboard.php deleted file mode 100644 index 0b982ad6..00000000 --- a/resources/lang/cs/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Řídicí panel', - - // Incidents - 'incidents' => [ - 'title' => 'Incidenty & Plán', - 'incidents' => 'Incidenty', - 'logged' => '{0} Nejsou hlášeny žádné incidenty, dobrá práce. | Zapsali jste jeden incident. | Nahlásili jste :count incident(y).', - 'incident-create-template' => 'Vytvořit šablonu', - 'incident-templates' => 'Šablony incidentů', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident aktualizován.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Šablony incidentů', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Plánovaná odstávka', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Naplánováno na :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Služby', - 'component_statuses' => 'Stavy služeb', - 'listed_group' => 'Seskupeno podle :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'Měli byste přidat službu.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Skupina služeb|Skupiny služeb', - 'no_components' => 'Můžete přidat skupinu služeb.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metriky', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Odběratelé', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Ověřeno', - 'not_verified' => 'Neověřeno', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Odběratel přidán.', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Odběratel aktualizován.', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Tým', - 'member' => 'Člen', - 'profile' => 'Profil', - 'description' => 'Členové týmu budou schopni přidat nebo upravit komponenty a incidenty.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Nastavení', - 'app-setup' => [ - 'app-setup' => 'Nastavení aplikace', - 'images-only' => 'Nahrány mohou být pouze obrázky.', - 'too-big' => 'Soubor, který nahráváte, je příliš velký. Nahrajte obrázek menší než :velikost', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Zabezpečení', - 'two-factor' => 'Uživatelé bez dvoufaktorového ověřování', - ], - 'stylesheet' => [ - 'stylesheet' => 'Šablona stylů', - ], - 'theme' => [ - 'theme' => 'Motiv vzhledu', - ], - 'edit' => [ - 'success' => 'Nastavení uložena.', - 'failure' => 'Nastavení nelze uložit.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Přihlášení', - 'logged_in' => 'Jste přihlášeni.', - 'welcome' => 'Vítejte zpátky!', - 'two-factor' => 'Zadejte prosím váš token.', - ], - - // Sidebar footer - 'help' => 'Nápověda', - 'status_page' => 'Stavová stránka', - 'logout' => 'Odhlásit', - - // Notifications - 'notifications' => [ - 'notifications' => 'Ozmámení', - 'awesome' => 'Vynikající.', - 'whoops' => 'Jejda.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Vaše stavová stránka je téměř připravena! Možná budete chtít upravit další nastavení', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Vytvoření komponent', - 'incident' => 'Vytvoření incidentů', - 'customize' => 'Přizpůsobit', - 'team' => 'Přidat uživatele', - 'api' => 'Vygenerovat API token', - 'two-factor' => 'Dvoufaktorové ověření', - ], - ], - -]; diff --git a/resources/lang/cs/forms.php b/resources/lang/cs/forms.php deleted file mode 100644 index fd39862d..00000000 --- a/resources/lang/cs/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'E-mail', - 'username' => 'Uživatelské jméno', - 'password' => 'Heslo', - 'site_name' => 'Název webu', - 'site_domain' => 'Doména webu', - 'site_timezone' => 'Vyberte vaše časové pásmo', - 'site_locale' => 'Vyberte svůj jazyk', - 'enable_google2fa' => 'Povolit dvoufaktorové ověřování Google', - 'cache_driver' => 'Ovladač cache', - 'session_driver' => 'Ovladač sezení', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'E-mail', - 'password' => 'Heslo', - '2fauth' => 'Ověřovací kód', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Neplatný token', - 'cookies' => 'Pro přihlášení je třeba povolit soubory cookie.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Jméno', - 'status' => 'Stav', - 'component' => 'Komponenta', - 'message' => 'Zpráva', - 'message-help' => 'Můžete také použít Markdown.', - 'scheduled_at' => 'Na kdy naplánovat údržbu/výpadek?', - 'incident_time' => 'Kdy k incidentu došlo?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viditelné veřejnosti', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Jméno', - 'template' => 'Šablona', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Jméno', - 'status' => 'Stav', - 'group' => 'Skupina', - 'description' => 'Popis', - 'link' => 'Odkaz', - 'tags' => 'Štítky', - 'tags-help' => 'Oddělené čárkou.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Jméno', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Jméno', - 'suffix' => 'Přípona', - 'description' => 'Popis', - 'description-help' => 'Můžete také použít Markdown.', - 'display-chart' => 'Zobrazovat graf na stavové stránce?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Celkem', - 'type_avg' => 'Průměr', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Hodnota', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Název webu', - 'site-url' => 'URL adresa webu', - 'display-graphs' => 'Zobrazit grafy na stavové stránce?', - 'about-this-page' => 'O této stránce', - 'days-of-incidents' => 'Kolik dní incidentů zobrazovat?', - 'banner' => 'Banner Image', - 'banner-help' => 'Doručuje se nenahrávat soubory větší než 930 pixelů na šířku.', - 'subscribers' => 'Umožnit lidem, aby se přihlašovali k odběru e-mailových upozornění?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Oddělené čárkami. Výše uvedené domény jsou ve výchozím nastavení automaticky povoleny.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Uživatelské jméno', - 'email' => 'E-mail', - 'password' => 'Heslo', - 'api-token' => 'API Token', - 'api-token-help' => 'Přegenerování vašeho API tokenu zabrání současným aplikacím přistupovat ke Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Zapnutí dvoufaktorového ověřování zvýší zabezpečení vašeho účtu. Budete muset stáhnout Google Authenticator nebo podobnou aplikaci pro mobilní zařízení. Po přihlášení budete vyzváni k zadání tokenu vygenerovaného aplikací.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Přidat', - 'save' => 'Uložit', - 'update' => 'Aktualizovat', - 'create' => 'Vytvořit', - 'edit' => 'Upravit', - 'delete' => 'Smazat', - 'submit' => 'Potvrdit', - 'cancel' => 'Zrušit', - 'remove' => 'Smazat', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Volitelné', -]; diff --git a/resources/lang/cs/pagination.php b/resources/lang/cs/pagination.php deleted file mode 100644 index d5a1614f..00000000 --- a/resources/lang/cs/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Předchozí', - 'next' => 'Následuující »', - -]; diff --git a/resources/lang/cs/setup.php b/resources/lang/cs/setup.php deleted file mode 100644 index 7c254245..00000000 --- a/resources/lang/cs/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Instalace', - 'title' => 'Instalace Cachet', - 'service_details' => 'Podrobnosti o službě', - 'env_setup' => 'Nastavení prostředí', - 'status_page_setup' => 'Nastavení Stavové stránky', - 'show_support' => 'Zobrazit podporu pro Cachet?', - 'admin_account' => 'Účet správce', - 'complete_setup' => 'Dokončení instalace', - 'completed' => 'Cachet byl úspěšně nakonfigurován!', - 'finish_setup' => 'Přejít na řídící panel', -]; diff --git a/resources/lang/cs/validation.php b/resources/lang/cs/validation.php deleted file mode 100644 index de938911..00000000 --- a/resources/lang/cs/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'Je potřeba potvrdit :attribute.', - 'active_url' => ':attribute není platná adresa URL.', - 'after' => ':attribute musí být datum po :date.', - 'alpha' => ':attribute může obsahovat pouze písmena.', - 'alpha_dash' => ':attribute může obsahovat pouze písmena, čísla a pomlčky.', - 'alpha_num' => ':attribute může obsahovat pouze písmena a čísla.', - 'array' => ':attribute musí být textové pole.', - 'before' => ':attribute musí být datum před :date.', - 'between' => [ - 'numeric' => ':attribute musí být datum před :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => ':attribute musí mít mezi :min a :max položkami.', - ], - 'boolean' => ':attribute musí mít mezi :min a :max položkami.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'Formát :attribute je neplatný.', - 'image' => ':attribute musí být obrázek.', - 'in' => ':attribute musí být obrázek.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'Atribut nesmí mít více než :max položek.', - ], - 'mimes' => 'Atribut nesmí mít více než :max položek.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'Atribut musí mít alespoň :min kB.', - 'string' => 'Atribut musí mít alespoň :min kB.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'Formát :attribute je neplatný.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'Pole :attribute je požadováno, když je zadané :values.', - 'required_without' => 'Pole :attribute je požadováno, když je zadané :values.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'Atribut musí mít :size kB.', - 'string' => 'Atribut musí mít :size znaků.', - 'array' => 'Atribut musí mít :size znaků.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute musí být platná zóna.', - 'unique' => ':attribute byl už použit.', - 'url' => 'Formát :attribute je neplatný.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'vlastní zpráva', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/da-DK/cachet.php b/resources/lang/da-DK/cachet.php deleted file mode 100644 index 4b93cc66..00000000 --- a/resources/lang/da-DK/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Sidst opdateret :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Normal', - 2 => 'Hastighedsproblemer', - 3 => 'Nogen udfald', - 4 => 'Store problemer', - ], - 'group' => [ - 'other' => 'Andre komponenter', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Ingen hændelser er rapporteret', - 'past' => 'Tidligere hændelser', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', planlagt til :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Undersøger', - 2 => 'Identificeret', - 3 => 'Overvåger', - 4 => 'Rettet', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Generer en ny API nøgle', - 'revoke' => 'Tilbagekald API nøgle', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Sidste time', - 'hourly' => 'Sidste 12 timer', - 'weekly' => 'Ugentlig', - 'monthly' => 'Månedlig', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Abonner', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifikationer', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'Du abonner i øjeblikket på alle opdateringer.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'Du abonnere i øjeblikket på følgende opdateringer.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Abonner på email opdateringer.', - 'subscribed' => 'Du er blevet tilmeldt email notifikationer. Vi har sendt dig en bekræftelse på den indtastede email-adresse.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Din tilmelding er nu blevet bekræftet, tak.', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Afmeld email notifikationer.', - 'unsubscribed' => 'Du er nu blevet frameldt vores emailnotifikationer.', - 'failure' => 'Noget gik galt med bekræftelsen.', - 'already-subscribed' => 'Kan ikke abonnere da :email allerede er tilmeldt.', - ], - ], - - 'signup' => [ - 'title' => 'Tilmeld', - 'username' => 'Brugernavn', - 'email' => 'Email', - 'password' => 'Adgangskode', - 'success' => 'Din konto er nu oprettet.', - 'failure' => 'Noget gik galt under tilmeldingen.', - ], - - 'system' => [ - 'update' => 'Der er en nyere version af Cachet tilgængelig. Du kan læse mere om hvordan du opdatere her!', - ], - - // Modal - 'modal' => [ - 'close' => 'Luk', - 'subscribe' => [ - 'title' => 'Abonner på komponent opdateringer', - 'body' => 'Indtast din email adresse for at abonnere på opdateringer angående dette komponent. Hvis du allerede er tilmeldt, vil du modtage emails angående dette komponent.', - 'button' => 'Abonner', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Hold dig opdateret med de seneste opdateringer fra :app.', - ], - ], - - // Other - 'home' => 'Hjem', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'Om denne side', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/da-DK/dashboard.php b/resources/lang/da-DK/dashboard.php deleted file mode 100644 index 67bb6687..00000000 --- a/resources/lang/da-DK/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Oversigt', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Opret hændelse', - 'success' => 'Hændelse tilføjet.', - 'failure' => 'Der opstod en fejl i forsøget på at tilføje hændelsen. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér hændelse', - 'success' => 'Hændelse opdateret.', - 'failure' => 'Der opstod en fejl under forsøget på at redigere hændelsen. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Hændelsen er blevet slettet og vil ikke blive vist på din statusside.', - 'failure' => 'Hændelsen kunne ikke slettes. Prøv venligst igen.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Opret hændelses skabelon', - 'message' => 'Create your first incident template.', - 'success' => 'Din nye hændelses skabelon er blevet oprettet.', - 'failure' => 'En fejl er opstået med hændelses skabelonen.', - ], - 'edit' => [ - 'title' => 'Redigér skabelon', - 'success' => 'Hændelses skabelonen er blevet opdateret.', - 'failure' => 'Der opstod en fejl under forsøget på at opdatere hændelses skabelonen', - ], - 'delete' => [ - 'success' => 'Hændelses skabelonen er blevet slettet.', - 'failure' => 'Hændelses skabelonen kunne ikke slettes. Prøv venligst igen.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Planlagt til :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Komponentstatus', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Tilføj komponent', - 'message' => 'Du bør tilføje en komponent.', - 'success' => 'Komponent oprettet.', - 'failure' => 'Noget gik galt med komponentet. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér komponent', - 'success' => 'Komponent opdateret.', - 'failure' => 'Noget gik galt med komponentet. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Komponentet er blevet slettet!', - 'failure' => 'Komponentet kunne ikke slettes. Prøv venligst igen.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Komponentgruppe|Komponentgrupper', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Tilføj komponentgruppe', - 'success' => 'Komponent gruppe tilføjet.', - 'failure' => 'Noget gik galt med komponentet. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér komponentgruppe', - 'success' => 'Komponent gruppe opdateret.', - 'failure' => 'Noget gik galt med komponentet. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Komponent gruppen er blevet slettet!', - 'failure' => 'Komponent gruppen kunne ikke slettes. Prøv venligst igen.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Grafer', - 'add' => [ - 'title' => 'Opret graf', - 'message' => 'Du bør tilføje en graf.', - 'success' => 'Graf oprettet.', - 'failure' => 'Noget gik galt med graffen. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér graf', - 'success' => 'Graf opdateret.', - 'failure' => 'Noget gik galt med graffen. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Grafen er blevet slette og vil ikke længere blive vist på din status side.', - 'failure' => 'Grafen kunne ikke slettes. Prøv venligst igen.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Abonnenter vil modtage notifikationer når hændelser oprettes eller komponenter opdateres.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Bekræftet', - 'not_verified' => 'Ej bekræftet', - 'subscriber' => ':email, abonnerede :date', - 'no_subscriptions' => 'Abonnere på alle opdateringer', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Tilføj abonnent', - 'success' => 'Subscriber added.', - 'failure' => 'Noget gik galt under forsøget på at tilføje en abonnent. Prøv venligst igen.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Redigér abonnent', - 'success' => 'Subscriber updated.', - 'failure' => 'Noget gik galt under forsøget på at redigere abonnenten. Prøv venligst igen.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Brugere', - 'member' => 'Bruger', - 'profile' => 'Profile', - 'description' => 'Brugere kan oprette og rette komponenter og hændelser.', - 'add' => [ - 'title' => 'Tilføj bruger', - 'success' => 'Bruger tilføjet.', - 'failure' => 'Brugeren kunne ikke tilføjes. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér profil', - 'success' => 'Profil opdateret.', - 'failure' => 'Noget gik galt under forsøget på at opdatere profilen. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Slet bruger.', - 'failure' => 'Brugeren kunne ikke tilføjes. Prøv venligst igen.', - ], - 'invite' => [ - 'title' => 'Invite a New Team Member', - 'success' => 'The users invited.', - 'failure' => 'Invitationen kunne ikke sendes. Prøv venligst igen.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Applikationssetup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'Filen du prøvede at uploade er for stort, billet skal være mindre end :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Tilpasning', - 'header' => 'Brugerdefineret header HTML', - 'footer' => 'Brugerdefineret footer html', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Sikkerhed', - 'two-factor' => 'Brugere uden totrinsbekræftelse', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Indstillingerne er gemt.', - 'failure' => 'Indstillingerne kunne ikke gemmes.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Log ind', - 'logged_in' => 'Du er logget ind.', - 'welcome' => 'Velkommen tilbage!', - 'two-factor' => 'Indtast venligst din totrins bekræftelses nøgle.', - ], - - // Sidebar footer - 'help' => 'Hjælp', - 'status_page' => 'Status side', - 'logout' => 'Log ud', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifikationer', - 'awesome' => 'Fantastisk.', - 'whoops' => 'Hov.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Velkommen til din statusside!', - 'message' => 'Din status side er næsten klar! Du ønsker måske at konfigurere disse ekstra indstillinger', - 'close' => 'Til oversigtssiden tak.', - 'steps' => [ - 'component' => 'Opret Komponent', - 'incident' => 'Opret hændelser', - 'customize' => 'Tilpas', - 'team' => 'Tilføj bruger', - 'api' => 'Generer API nøgle', - 'two-factor' => 'Totrinsbekræftelse', - ], - ], - -]; diff --git a/resources/lang/da-DK/forms.php b/resources/lang/da-DK/forms.php deleted file mode 100644 index 47501ada..00000000 --- a/resources/lang/da-DK/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Brugernavn', - 'password' => 'Adgangskode', - 'site_name' => 'Sidenavn', - 'site_domain' => 'Sidens domæne', - 'site_timezone' => 'Vælg din tidszone', - 'site_locale' => 'Vælg dit sprog', - 'enable_google2fa' => 'Aktiver Googles to-trins bekræftelse', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Brugernavn eller email', - 'email' => 'Email', - 'password' => 'Adgangskode', - '2fauth' => 'Bekræftelseskode', - 'invalid' => 'Ugyldigt brugernavn eller adgangskode', - 'invalid-token' => 'Ugyldig token', - 'cookies' => 'Du skal tillade cookies for at logge ind.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'component' => 'Komponent', - 'component_status' => 'Component Status', - 'message' => 'Besked', - 'message-help' => 'Du kan benytte Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Underret abonnenter', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Hændelses synlighed', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Kan ses af alle', - 'logged_in_only' => 'Kun synlig for brugere der er logget ind', - 'templates' => [ - 'name' => 'Navn', - 'template' => 'Skabelon', - 'twig' => 'Hændelse skabeloner kan gøre brug af Twigs skabelon sprog.', - ], - ], - - 'schedules' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'message' => 'Besked', - 'message-help' => 'Du kan benytte Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Navn', - 'template' => 'Skabelon', - 'twig' => 'Hændelse skabeloner kan gøre brug af Twigs skabelon sprog.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'group' => 'Gruppe', - 'description' => 'Beskrivelse', - 'link' => 'Link', - 'tags' => 'Mærkat', - 'tags-help' => 'Komma adskilt.', - 'enabled' => 'Komponent er aktivt', - - 'groups' => [ - 'name' => 'Navn', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Altid åben', - 'collapsed' => 'Minimer gruppen som standard', - 'collapsed_incident' => 'Minimer gruppen, men hold den åben hvis der er fejl', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Navn', - 'description' => 'Beskrivelse', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Gruppe', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Navn', - 'suffix' => 'Endelse', - 'description' => 'Beskrivelse', - 'description-help' => 'Du kan benytte Markdown.', - 'display-chart' => 'Vis graf på statussiden?', - 'default-value' => 'Standard værdi', - 'calc_type' => 'Beregning af grafer', - 'type_sum' => 'Sum', - 'type_avg' => 'Gennemsnit', - 'places' => 'Antal decimaler', - 'default_view' => 'Standardvisning', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Værdi', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Sidenavn', - 'site-url' => 'Sidens URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'Om', - 'days-of-incidents' => 'Hvor mange dage skal der vises hændelser for?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner billede', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Tillad folk at tilmelde sig email underretninger?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics kode', - 'analytics_gosquared' => 'GoSquared Analytics kode', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Tidszone', - 'site-locale' => 'Sprog på siden', - 'date-format' => 'Datoformat', - 'incident-date-format' => 'Datoformat for hændelser', - ], - 'security' => [ - 'allowed-domains' => 'Tilladte domæner', - 'allowed-domains-help' => 'Komma adskilt. Domænet ovenfor har automatisk adgang.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Tilpasset CSS', - ], - 'theme' => [ - 'background-color' => 'Baggrundsfarve', - 'background-fills' => 'Baggrundsfyld (Komponenter, hændelser og footer)', - 'banner-background-color' => 'Baggrundsfarve bag banneret', - 'banner-padding' => 'Banner Padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Tekstfarve', - 'dashboard-login' => 'Vis oversigtsside ikon i bunden af siden?', - 'reds' => 'Rød (Brugt til fejl)', - 'blues' => 'Blå (Brugt til information)', - 'greens' => 'Grøn (Brugt til success)', - 'yellows' => 'Gul (Brugt til advarsler)', - 'oranges' => 'Orange (Brugt til noter)', - 'metrics' => 'Graffyld', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Brugernavn', - 'email' => 'Email', - 'password' => 'Adgangskode', - 'api-token' => 'API nøgle', - 'api-token-help' => 'Hvis du regenerere din API nøgle vil eksisterende applikationer ikke kunne tilgå API\'et.', - 'gravatar' => 'Ændre dit profilbillede hos Gravatar.', - 'user_level' => 'Brugertype', - 'levels' => [ - 'admin' => 'Administrator', - 'user' => 'Bruger', - ], - '2fa' => [ - 'help' => 'Brug totrinsbekræftelse for større sikkerhed på din konto. Du skal installere Google Authenticator eller en lignende app på din mobile enhed, for at kunne logge ind med nøgler fra appen.', - ], - 'team' => [ - 'description' => 'Inviter brugere, ved at indtaste dere email adresser her.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Tilføj', - 'save' => 'Gem', - 'update' => 'Opdatér', - 'create' => 'Opret', - 'edit' => 'Rediger', - 'delete' => 'Slet', - 'submit' => 'Send', - 'cancel' => 'Afbryd', - 'remove' => 'Fjern', - 'invite' => 'Inviter', - 'signup' => 'Tilmeld', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* ikke påkrævet', -]; diff --git a/resources/lang/da-DK/notifications.php b/resources/lang/da-DK/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/da-DK/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/da-DK/pagination.php b/resources/lang/da-DK/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/da-DK/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/da-DK/setup.php b/resources/lang/da-DK/setup.php deleted file mode 100644 index 7bf6b18a..00000000 --- a/resources/lang/da-DK/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Opsætning', - 'title' => 'Indstil Cachet', - 'service_details' => 'Tjenestesdetaljer', - 'env_setup' => 'Opsætning af miljø', - 'status_page_setup' => 'Status side opsætning', - 'show_support' => 'Vis støtte til Cachet?', - 'admin_account' => 'Administratorkonto', - 'complete_setup' => 'Gennemfør opsætning', - 'completed' => 'Cachet er nu sat op og er klar til brug!', - 'finish_setup' => 'Gå til oversigtssiden', -]; diff --git a/resources/lang/da-DK/validation.php b/resources/lang/da-DK/validation.php deleted file mode 100644 index 100398e0..00000000 --- a/resources/lang/da-DK/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute skal accepteres.', - 'active_url' => ':attribute er ikke en valid URL.', - 'after' => ':attribute skal være efter den :date.', - 'alpha' => ':attribute må kun indeholde bogstaver.', - 'alpha_dash' => ':attribute må kun indeholde bogstaver, tal og bindestreger.', - 'alpha_num' => ':attribute må kun indeholde tal og bogstaver.', - 'array' => ':attribute skal være et array.', - 'before' => ':attribute skal være før den :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => ':attribute skal have mellem :min og :max emner.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => ':attribute skal være et billede.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => ':attribute skal være en gyldig JSON streng.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => ':attribute må ikke have mere end :max emner.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => ':attribute skal være mindst :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => ':attribute feltet er påkrævet, medmindre :other er i :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => ':attribute skal være :size kilobytes.', - 'string' => ':attribute skal være :size karakterer.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => ':attribute skal være en gyldig zone.', - 'unique' => ':attribute er allerede i brug.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'tilpasset-besked', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/da/cachet.php b/resources/lang/da/cachet.php deleted file mode 100644 index cb3deda2..00000000 --- a/resources/lang/da/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Sidst opdateret :timestamp', - 'status' => [ - 1 => 'Normal', - 2 => 'Hastighedsproblemer', - 3 => 'Nogen udfald', - 4 => 'Store problemer', - ], - 'group' => [ - 'other' => 'Andre komponenter', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Ingen hændelser er rapporteret', - 'past' => 'Tidligere hændelser', - 'previous_week' => 'Forrige uge', - 'next_week' => 'Næste uge', - 'scheduled' => 'Planlagt vedligeholdelse', - 'scheduled_at' => ', planlagt til :timestamp', - 'status' => [ - 0 => 'Planlagt', // TODO: Hopefully remove this. - 1 => 'Undersøger', - 2 => 'Identificeret', - 3 => 'Overvåger', - 4 => 'Rettet', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Systemet virker|[2,Inf] Alle systemer virker', - 'bad' => '[0,1] Systemet har i øjeblikket problemer|[2,Inf] Nogle systemer har i øjeblikket problemer', - 'major' => '[0,1] Systemet har i øjeblikket store problemer|[2,Inf] Nogle systemer har i øjeblikket store problemer', - ], - - 'api' => [ - 'regenerate' => 'Generer en ny API nøgle', - 'revoke' => 'Tilbagekald API nøgle', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Sidste time', - 'hourly' => 'Sidste 12 timer', - 'weekly' => 'Ugentlig', - 'monthly' => 'Månedlig', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Tilmeld dig for at få de seneste opdateringer', - 'button' => 'Abonner', - 'manage' => [ - 'no_subscriptions' => 'Du abonner i øjeblikket på alle opdateringer.', - 'my_subscriptions' => 'Du abonnere i øjeblikket på følgende opdateringer.', - ], - 'email' => [ - 'subscribe' => 'Abonner på email opdateringer.', - 'subscribed' => 'Du er blevet tilmeldt email notifikationer. Vi har sendt dig en bekræftelse på den indtastede email-adresse.', - 'verified' => 'Din tilmelding er nu blevet bekræftet, tak.', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Afmeld email notifikationer.', - 'unsubscribed' => 'Du er nu blevet frameldt vores emailnotifikationer.', - 'failure' => 'Noget gik galt med bekræftelsen.', - 'already-subscribed' => 'Kan ikke abonnere da :email allerede er tilmeldt.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Komponent status opdatering', - 'text' => 'Komponentet :component_name har ændret status. Komponentet er nu :component_human_status.\nTak, :app_name', - 'html' => '

Komponentet :component_name har ændret status. Komponentet er nu :component_human_status.

\nTak, :app_name

', - 'tooltip-title' => 'Abonner på notifikation for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Du er blevet inviteret til :app_name status status side, Klik på linket for at oprette dig.\n:link\nTak, :app_name", - 'html' => '

Du er blevet inviteret til :app_name status side, Klik på linket for at oprette dig.

:link

Tak, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Tilmeld', - 'username' => 'Brugernavn', - 'email' => 'Email', - 'password' => 'Adgangskode', - 'success' => 'Din konto er nu oprettet.', - 'failure' => 'Noget gik galt under tilmeldingen.', - ], - - 'system' => [ - 'update' => 'Der er en nyere version af Cachet tilgængelig. Du kan læse mere om hvordan du opdatere her!', - ], - - // Modal - 'modal' => [ - 'close' => 'Luk', - 'subscribe' => [ - 'title' => 'Abonner på komponent opdateringer', - 'body' => 'Indtast din email adresse for at abonnere på opdateringer angående dette komponent. Hvis du allerede er tilmeldt, vil du modtage emails angående dette komponent.', - 'button' => 'Abonner', - ], - ], - - // Other - 'home' => 'Hjem', - 'description' => 'Hold dig opdateret med de seneste opdateringer fra :app.', - 'powered_by' => 'Drevet af Cachet.', - 'about_this_site' => 'Om denne side', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/da/dashboard.php b/resources/lang/da/dashboard.php deleted file mode 100644 index d0f70702..00000000 --- a/resources/lang/da/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Oversigt', - - // Incidents - 'incidents' => [ - 'title' => 'Hændelser & Planlagte', - 'incidents' => 'Incidents', - 'logged' => '{0} Ingen åbne hændelser.|Der er en åben hændelse.|Der er :count åbne hændelser.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'add' => [ - 'title' => 'Opret hændelse', - 'success' => 'Hændelse tilføjet.', - 'failure' => 'Der opstod en fejl i forsøget på at tilføje hændelsen. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér hændelse', - 'success' => 'Hændelse opdateret.', - 'failure' => 'Der opstod en fejl under forsøget på at redigere hændelsen. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Hændelsen er blevet slettet og vil ikke blive vist på din statusside.', - 'failure' => 'Hændelsen kunne ikke slettes. Prøv venligst igen.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Hændelses skabeloner', - 'add' => [ - 'title' => 'Opret hændelses skabelon', - 'message' => 'Du bør tilføje en hændelses skabelon.', - 'success' => 'Din nye hændelses skabelon er blevet oprettet.', - 'failure' => 'En fejl er opstået med hændelses skabelonen.', - ], - 'edit' => [ - 'title' => 'Redigér skabelon', - 'success' => 'Hændelses skabelonen er blevet opdateret.', - 'failure' => 'Der opstod en fejl under forsøget på at opdatere hændelses skabelonen', - ], - 'delete' => [ - 'success' => 'Hændelses skabelonen er blevet slettet.', - 'failure' => 'Hændelses skabelonen kunne ikke slettes. Prøv venligst igen.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Planlagt vedligeholdelse', - 'logged' => '{0} Der er intet planlagt.|Der er 1 planlagt.|Der er :count planlagte.', - 'scheduled_at' => 'Planlagt til :timestamp', - 'add' => [ - 'title' => 'Tilføj planlagt vedligeholdelse', - 'success' => 'Planlagt vedligeholdelse tilføjet.', - 'failure' => 'Noget gik galt under forsøget på at tilføje planlagt vedligeholdelse. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Rediger planlagt vedligeholdelse', - 'success' => 'Planlagt vedligeholdelse er blevet opdateret!', - 'failure' => 'Noget gik galt under forsøget på at opdatere planlagt vedligeholdelse. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Planlagt vedligeholdelse er blevet slette og vil ikke længere blive vist på din status side.', - 'failure' => 'Den planlagt vedligeholdelse kunne ikke slettes. Prøv venligst igen.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Komponentstatus', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Tilføj komponent', - 'message' => 'Du bør tilføje en komponent.', - 'success' => 'Komponent oprettet.', - 'failure' => 'Noget gik galt med komponentet. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér komponent', - 'success' => 'Komponent opdateret.', - 'failure' => 'Noget gik galt med komponentet. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Komponentet er blevet slettet!', - 'failure' => 'Komponentet kunne ikke slettes. Prøv venligst igen.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Komponentgruppe|Komponentgrupper', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Tilføj komponentgruppe', - 'success' => 'Komponent gruppe tilføjet.', - 'failure' => 'Noget gik galt med komponentet gruppen. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér komponentgruppe', - 'success' => 'Komponent gruppe opdateret.', - 'failure' => 'Noget gik galt med komponentet gruppen. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Komponent gruppen er blevet slettet!', - 'failure' => 'Komponent gruppen kunne ikke slettes. Prøv venligst igen.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Grafer', - 'add' => [ - 'title' => 'Opret graf', - 'message' => 'Du bør tilføje en graf.', - 'success' => 'Graf oprettet.', - 'failure' => 'Noget gik galt med graffen. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér graf', - 'success' => 'Graf opdateret.', - 'failure' => 'Noget gik galt med graffen. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Grafen er blevet slette og vil ikke længere blive vist på din status side.', - 'failure' => 'Grafen kunne ikke slettes. Prøv venligst igen.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Abonnenter vil modtage notifikationer når hændelser oprettes eller komponenter opdateres.', - 'verified' => 'Bekræftet', - 'not_verified' => 'Ej bekræftet', - 'subscriber' => ':email, abonnerede :date', - 'no_subscriptions' => 'Abonnere på alle opdateringer', - 'add' => [ - 'title' => 'Tilføj abonnent', - 'success' => 'Subscriber added.', - 'failure' => 'Noget gik galt under forsøget på at tilføje en abonnent. Prøv venligst igen.', - 'help' => 'Angiv hver abonnent på en ny linje.', - ], - 'edit' => [ - 'title' => 'Redigér abonnent', - 'success' => 'Subscriber updated.', - 'failure' => 'Noget gik galt under forsøget på at redigere abonnenten. Prøv venligst igen.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Brugere', - 'member' => 'Bruger', - 'profile' => 'Profile', - 'description' => 'Brugere kan oprette og rette komponenter og hændelser.', - 'add' => [ - 'title' => 'Tilføj bruger', - 'success' => 'Bruger tilføjet.', - 'failure' => 'Brugeren kunne ikke tilføjes. Prøv venligst igen.', - ], - 'edit' => [ - 'title' => 'Redigér profil', - 'success' => 'Profil opdateret.', - 'failure' => 'Noget gik galt under forsøget på at opdatere profilen. Prøv venligst igen.', - ], - 'delete' => [ - 'success' => 'Slet bruger.', - 'failure' => 'Brugeren kunne ikke tilføjes. Prøv venligst igen.', - ], - 'invite' => [ - 'title' => 'Invite a New Team Member', - 'success' => 'The users invited.', - 'failure' => 'Invitationen kunne ikke sendes. Prøv venligst igen.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Applikationssetup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'Filen du prøvede at uploade er for stort, billet skal være mindre end :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Tilpasning', - 'header' => 'Brugerdefineret header HTML', - 'footer' => 'Brugerdefineret footer html', - ], - 'security' => [ - 'security' => 'Sikkerhed', - 'two-factor' => 'Brugere uden totrinsbekræftelse', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Indstillingerne er gemt.', - 'failure' => 'Indstillingerne kunne ikke gemmes.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Log ind', - 'logged_in' => 'Du er logget ind.', - 'welcome' => 'Velkommen tilbage!', - 'two-factor' => 'Indtast venligst din totrins bekræftelses nøgle.', - ], - - // Sidebar footer - 'help' => 'Hjælp', - 'status_page' => 'Status side', - 'logout' => 'Log ud', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifikationer', - 'awesome' => 'Fantastisk.', - 'whoops' => 'Hov.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Velkommen til din statusside!', - 'message' => 'Din status side er næsten klar! Du ønsker måske at konfigurere disse ekstra indstillinger', - 'close' => 'Til oversigtssiden tak.', - 'steps' => [ - 'component' => 'Opret Komponent', - 'incident' => 'Opret hændelser', - 'customize' => 'Tilpas', - 'team' => 'Tilføj bruger', - 'api' => 'Generer API nøgle', - 'two-factor' => 'Totrinsbekræftelse', - ], - ], - -]; diff --git a/resources/lang/da/forms.php b/resources/lang/da/forms.php deleted file mode 100644 index f9f2e602..00000000 --- a/resources/lang/da/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Brugernavn', - 'password' => 'Adgangskode', - 'site_name' => 'Sidenavn', - 'site_domain' => 'Sidens domæne', - 'site_timezone' => 'Vælg din tidszone', - 'site_locale' => 'Vælg dit sprog', - 'enable_google2fa' => 'Aktiver Googles to-trins bekræftelse', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Brugernavn eller email', - 'email' => 'Email', - 'password' => 'Adgangskode', - '2fauth' => 'Bekræftelseskode', - 'invalid' => 'Ugyldigt brugernavn eller adgangskode', - 'invalid-token' => 'Ugyldig token', - 'cookies' => 'Du skal tillade cookies for at logge ind.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'component' => 'Komponent', - 'message' => 'Besked', - 'message-help' => 'Du kan benytte Markdown.', - 'scheduled_at' => 'Hvornår vil du have vedligeholdelse?', - 'incident_time' => 'Hvornår skete hændelsen?', - 'notify_subscribers' => 'Underret abonnenter', - 'visibility' => 'Hændelses synlighed', - 'public' => 'Kan ses af alle', - 'logged_in_only' => 'Kun synlig for brugere der er logget ind', - 'templates' => [ - 'name' => 'Navn', - 'template' => 'Skabelon', - 'twig' => 'Hændelse skabeloner kan gøre brug af Twigs skabelon sprog.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'group' => 'Gruppe', - 'description' => 'Beskrivelse', - 'link' => 'Link', - 'tags' => 'Mærkat', - 'tags-help' => 'Komma adskilt.', - 'enabled' => 'Komponent er aktivt', - - 'groups' => [ - 'name' => 'Navn', - 'collapsing' => 'Vælg synlighed af gruppen', - 'visible' => 'Altid åben', - 'collapsed' => 'Minimer gruppen som standard', - 'collapsed_incident' => 'Minimer gruppen, men hold den åben hvis der er fejl', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Navn', - 'suffix' => 'Endelse', - 'description' => 'Beskrivelse', - 'description-help' => 'Du kan også bruge Markdown.', - 'display-chart' => 'Vis graf på statussiden?', - 'default-value' => 'Standard værdi', - 'calc_type' => 'Beregning af grafer', - 'type_sum' => 'Sum', - 'type_avg' => 'Gennemsnit', - 'places' => 'Antal decimaler', - 'default_view' => 'Standardvisning', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Værdi', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Sidenavn', - 'site-url' => 'Sidens URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'Om', - 'days-of-incidents' => 'Hvor mange dage skal der vises hændelser for?', - 'banner' => 'Banner billede', - 'banner-help' => 'Det anbefales ikke at uploade billeder bredere end 930px.', - 'subscribers' => 'Tillad folk at tilmelde sig email underretninger?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics kode', - 'analytics_gosquared' => 'GoSquared Analytics kode', - 'analytics_piwik_url' => 'URL til Piwik installation (uden http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Tidszone', - 'site-locale' => 'Sprog på siden', - 'date-format' => 'Datoformat', - 'incident-date-format' => 'Datoformat for hændelser', - ], - 'security' => [ - 'allowed-domains' => 'Tilladte domæner', - 'allowed-domains-help' => 'Komma adskilt. Domænet ovenfor har automatisk adgang.', - ], - 'stylesheet' => [ - 'custom-css' => 'Tilpasset CSS', - ], - 'theme' => [ - 'background-color' => 'Baggrundsfarve', - 'background-fills' => 'Baggrundsfyld (Komponenter, hændelser og footer)', - 'banner-background-color' => 'Baggrundsfarve bag banneret', - 'banner-padding' => 'Banner Padding', - 'fullwidth-banner' => 'Slå fuldbrede bannere til?', - 'text-color' => 'Tekstfarve', - 'dashboard-login' => 'Vis oversigtsside ikon i bunden af siden?', - 'reds' => 'Rød (Brugt til fejl)', - 'blues' => 'Blå (Brugt til information)', - 'greens' => 'Grøn (Brugt til success)', - 'yellows' => 'Gul (Brugt til advarsler)', - 'oranges' => 'Orange (Brugt til noter)', - 'metrics' => 'Graffyld', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Brugernavn', - 'email' => 'Email', - 'password' => 'Adgangskode', - 'api-token' => 'API nøgle', - 'api-token-help' => 'Hvis du regenerere din API nøgle vil eksisterende applikationer ikke kunne tilgå API\'et.', - 'gravatar' => 'Ændre dit profilbillede hos Gravatar.', - 'user_level' => 'Brugertype', - 'levels' => [ - 'admin' => 'Administrator', - 'user' => 'Bruger', - ], - '2fa' => [ - 'help' => 'Brug totrinsbekræftelse for større sikkerhed på din konto. Du skal installere Google Authenticator eller en lignende app på din mobile enhed, for at kunne logge ind med nøgler fra appen.', - ], - 'team' => [ - 'description' => 'Inviter brugere, ved at indtaste dere email adresser her.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Tilføj', - 'save' => 'Gem', - 'update' => 'Opdatér', - 'create' => 'Opret', - 'edit' => 'Rediger', - 'delete' => 'Slet', - 'submit' => 'Send', - 'cancel' => 'Afbryd', - 'remove' => 'Fjern', - 'invite' => 'Inviter', - 'signup' => 'Tilmeld', - - // Other - 'optional' => '* ikke påkrævet', -]; diff --git a/resources/lang/da/pagination.php b/resources/lang/da/pagination.php deleted file mode 100644 index 7d278cbc..00000000 --- a/resources/lang/da/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Forrige', - 'next' => 'Næste »', - -]; diff --git a/resources/lang/da/setup.php b/resources/lang/da/setup.php deleted file mode 100644 index 7bf6b18a..00000000 --- a/resources/lang/da/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Opsætning', - 'title' => 'Indstil Cachet', - 'service_details' => 'Tjenestesdetaljer', - 'env_setup' => 'Opsætning af miljø', - 'status_page_setup' => 'Status side opsætning', - 'show_support' => 'Vis støtte til Cachet?', - 'admin_account' => 'Administratorkonto', - 'complete_setup' => 'Gennemfør opsætning', - 'completed' => 'Cachet er nu sat op og er klar til brug!', - 'finish_setup' => 'Gå til oversigtssiden', -]; diff --git a/resources/lang/da/validation.php b/resources/lang/da/validation.php deleted file mode 100644 index 78324f98..00000000 --- a/resources/lang/da/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute skal accepteres.', - 'active_url' => ':attribute er ikke en valid URL.', - 'after' => ':attribute skal være efter den :date.', - 'alpha' => ':attribute må kun indeholde bogstaver.', - 'alpha_dash' => ':attribute må kun indeholde bogstaver, tal og bindestreger.', - 'alpha_num' => ':attribute må kun indeholde tal og bogstaver.', - 'array' => ':attribute skal være et array.', - 'before' => ':attribute skal være før den :date.', - 'between' => [ - 'numeric' => ':attribute skal være før den :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => ':attribute skal have mellem :min og :max emner.', - ], - 'boolean' => ':attribute skal have mellem :min og :max emner.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'Formatet af :attribute er ugyldigt.', - 'image' => ':attribute skal være et billede.', - 'in' => ':attribute skal være et billede.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => ':attribute skal være en gyldig JSON streng.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => ':attribute må ikke have mere end :max emner.', - ], - 'mimes' => ':attribute må ikke have mere end :max emner.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => ':attribute skal være mindst :min kilobytes.', - 'string' => ':attribute skal være mindst :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'Formatet af :attribute er ugyldigt.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => ':attribute feltet er påkrævet, medmindre :other er i :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'Feltet :attribute er krævet når :values eksisterer.', - 'required_without' => 'Feltet :attribute er krævet når :values eksisterer.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => ':attribute skal være :size kilobytes.', - 'string' => ':attribute skal være :size karakterer.', - 'array' => ':attribute skal være :size karakterer.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute skal være en gyldig zone.', - 'unique' => ':attribute er allerede i brug.', - 'url' => 'Formatet af :attribute er ugyldigt.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'tilpasset-besked', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/de-DE/cachet.php b/resources/lang/de-DE/cachet.php deleted file mode 100644 index de2988fa..00000000 --- a/resources/lang/de-DE/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Letztes Update :timestamp', - 'status' => [ - 0 => 'Unbekannt', - 1 => 'Funktionsfähig', - 2 => 'Leistungsprobleme', - 3 => 'Teilweiser Ausfall', - 4 => 'Schwerer Ausfall', - ], - 'group' => [ - 'other' => 'Andere Komponenten', - ], - 'select_all' => 'Alles auswählen', - 'deselect_all' => 'Alles abwählen', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Es liegen keine Ereignisse vor', - 'past' => 'Vergangene Ereignisse', - 'stickied' => 'Angepinnte Vorfälle', - 'scheduled' => 'Wartungsarbeiten', - 'scheduled_at' => ', geplant :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Veröffentlicht am :timestamp', - 'status' => [ - 1 => 'Untersuchungen laufen', - 2 => 'Identifiziert', - 3 => 'Unter Beobachtung', - 4 => 'Behoben', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Bevorstehend', - 1 => 'In Bearbeitung', - 2 => 'Abgeschlossen', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System funktioniert|[2,*]Alle Systeme funktionieren', - 'bad' => '[0,1] Das System hat momentan Probleme|[2,*] Mehrere Systeme haben momentan Probleme', - 'major' => '[0,1] Das System hat ein schwerwiegendes Problem|[2,*] Mehrere Systeme haben ein schwerwiegendes Problem', - ], - - 'api' => [ - 'regenerate' => 'API-Schlüssel erneuern', - 'revoke' => 'API-Schlüssel widerrufen', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Letzte Stunde', - 'hourly' => 'Letzte 12 Stunden', - 'weekly' => 'Wöchentlich', - 'monthly' => 'Monatlich', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Abonniere Status- und Vorfalländerungen', - 'unsubscribe' => 'Abmelden', - 'button' => 'Abonnieren', - 'manage_subscription' => 'Abonnements verwalten', - 'manage' => [ - 'notifications' => 'Benachrichtigungen', - 'notifications_for' => 'Verwalten von Benachrichtigungen für', - 'no_subscriptions' => 'Du hast im Augenblick alle Updates abonniert.', - 'update_subscription' => 'Update-Abonnement', - 'my_subscriptions' => 'Du hast im Augenblick folgende Updates abonniert.', - 'manage_at_link' => 'Verwalte deine Abonnements unter :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Aktualisierungen per E-Mail abonnieren.', - 'subscribed' => 'Sie haben E-Mail-Benachrichtigungen abonniert, überprüfen Sie bitte Ihre E-Mail, um Ihr Abonnement zu bestätigen.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Ihre E-Mail-Abonnement ist bestätigt worden. Danke!', - 'manage' => 'Verwalte deine Abonnements', - 'unsubscribe' => 'Abonnement widerrufen.', - 'unsubscribed' => 'Ihre E-Mail-Abonnement wurde beendet.', - 'failure' => 'Beim aktivieren des Abonnements ist ein Fehler aufgetreten.', - 'already-subscribed' => 'Abonnement für :email konnte nicht registriert werden, da die E-Mail Adresse schon registriert ist.', - ], - ], - - 'signup' => [ - 'title' => 'Registrieren', - 'username' => 'Benutzername', - 'email' => 'E-Mail', - 'password' => 'Passwort', - 'success' => 'Ihr Konto wurde erfolgreich erstellt.', - 'failure' => 'Mit der Registrierung ist etwas schief gelaufen.', - ], - - 'system' => [ - 'update' => 'Es ist eine neuere Version von Cachet verfügbar. Lerne hier!, wie du updaten kannst!', - ], - - // Modal - 'modal' => [ - 'close' => 'Schließen', - 'subscribe' => [ - 'title' => 'Abonniere die Komponenten-Updates', - 'body' => 'Gib deine E-Mail Adresse ein, um Updates für diesen Komponenten zu erhalten. Wenn du bereits abonniert bist, erhälst du schon Updates für diesen Komponenten.', - 'button' => 'Abonnieren', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details und Aktualisierung über den :name Vorfall, die am :date aufgetreten sind', - 'schedule' => 'Details zu den geplanten Wartungszeitraum :name beginnend ab :startDate', - 'subscribe' => 'Abonniere :app um Updates von Vorfällen und geplanten Wartungszeiten zu erhalten', - 'overview' => 'Bleiben sie auf dem Laufenden mit den neuesten Service-Updates von :app.', - ], - ], - - // Other - 'home' => 'Startseite', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Uhrzeiten werden in :timezone angezeigt.', - 'about_this_site' => 'Über diese Seite', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status-Feed', - -]; diff --git a/resources/lang/de-DE/dashboard.php b/resources/lang/de-DE/dashboard.php deleted file mode 100644 index f1dc0a7d..00000000 --- a/resources/lang/de-DE/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'Das Cachet-Konfigurationsverzeichnis ist nicht beschreibbar. Bitte stellen Sie sicher, dass ./ bootstrap/cachet vom Webserver beschreibbar ist.', - - // Incidents - 'incidents' => [ - 'title' => 'Vorfälle & Wartungsarbeiten', - 'incidents' => 'Ereignisse', - 'logged' => '{0}Es gibt keine Ereignisse, gute Arbeit.|[1]Du hast ein Ereignis gemeldet.|[2,*]Du hast :count Ereignisse gemeldet.', - 'incident-create-template' => 'Vorlage erstellen', - 'incident-templates' => 'Ereignis Vorlagen', - 'updates' => [ - 'title' => 'Vorfall Updates für :incident', - 'count' => '{0}Keine Updates|[1]Ein Update|[2]Zwei Updates|[3,*]Mehrere Updates', - 'add' => [ - 'title' => 'Vorfall-Update erstellen', - 'success' => 'Dein Vorfall Update wurde erstellt.', - 'failure' => 'Etwas ist mit dem Vorfall Update schief gelaufen.', - ], - 'edit' => [ - 'title' => 'Vorfall Update bearbeiten', - 'success' => 'Vorfall wurde aktualisiert.', - 'failure' => 'Etwas ist mit dem Aktualisieren des Vorfall Updates schief gelaufen', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Ereignis hinzufügen', - 'success' => 'Ereignis hinzugefügt.', - 'failure' => 'Es ist ein Fehler beim Hinzufügen der Störung aufgetreten. Bitte erneut versuchen.', - ], - 'edit' => [ - 'title' => 'Ereignis bearbeiten', - 'success' => 'Ereignis aktualisiert.', - 'failure' => 'Es ist ein Fehler beim Editieren der Störung aufgetreten. Bitte erneut versuchen.', - ], - 'delete' => [ - 'success' => 'Das Ereignis wurde gelöscht und wird nicht mehr angezeigt.', - 'failure' => 'Die Störung konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Ereignis Vorlagen', - 'add' => [ - 'title' => 'Ereignisvorlage erstellen', - 'message' => 'Du solltest eine Ereignis-Vorlage hinzufügen.', - 'success' => 'Deine neue Ereignis-Vorlage wurde angelegt.', - 'failure' => 'Etwas ist mit der Ereignis-Vorlage schief gelaufen.', - ], - 'edit' => [ - 'title' => 'Vorlage bearbeiten', - 'success' => 'Die Ereignis-Vorlage wurde aktualisiert.', - 'failure' => 'Etwas ist mit dem Aktualisieren der Ereignis-Vorlage schief gelaufen', - ], - 'delete' => [ - 'success' => 'Die Ereignis-Vorlage wurde gelöscht.', - 'failure' => 'Die Ereignis-Vorlage konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Wartungsarbeiten', - 'logged' => '{0}Es gibt keine geplanten Wartungen, gute Arbeit.|[1]Du hast einen Eintrag erstellt.|[2,*]Du hast :count Einträge erstellt.', - 'scheduled_at' => 'Geplant am :timestamp', - 'add' => [ - 'title' => 'Wartungsarbeiten hinzufügen', - 'success' => 'Wartungsarbeiten hinzugefügt.', - 'failure' => 'Etwas lief schief mit dem Hinzufügen des Zeitplans. Bitte versuchen Sie es erneut.', - ], - 'edit' => [ - 'title' => 'Planmäßige Wartung bearbeiten', - 'success' => 'Wartungsarbeiten wurden aktualisiert!', - 'failure' => 'Etwas lief schief mit dem Editieren des Zeitplans. Bitte versuchen Sie es erneut.', - ], - 'delete' => [ - 'success' => 'Der Zeitplan wurde gelöscht und wird nicht auf Ihrer Statusseite angezeigt.', - 'failure' => 'Der Zeitplan konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Komponenten', - 'component_statuses' => 'Komponentenstatus', - 'listed_group' => 'Gruppenname :name', - 'add' => [ - 'title' => 'Komponente hinzufügen', - 'message' => 'Sie sollten eine Komponente erstellen.', - 'success' => 'Komponente erstellt.', - 'failure' => 'Etwas ist schief gelaufen mit der Komponenten-Gruppe, versuchen sie es erneut.', - ], - 'edit' => [ - 'title' => 'Komponente bearbeiten', - 'success' => 'Komponente aktualisiert.', - 'failure' => 'Etwas ist schief gelaufen mit der Komponenten-Gruppe, versuchen sie es erneut.', - ], - 'delete' => [ - 'success' => 'Die Komponente wurde gelöscht!', - 'failure' => 'Die Komponente konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Komponentengruppe|Komponentengruppen', - 'no_components' => 'Sie sollten eine Komponentengruppe hinzufügen.', - 'add' => [ - 'title' => 'Eine Komponentengruppe hinzufügen', - 'success' => 'Komponentengruppe hinzugefügt.', - 'failure' => 'Etwas ist schief gelaufen mit der Komponenten-Gruppe, versuchen sie es erneut.', - ], - 'edit' => [ - 'title' => 'Komponentengruppe bearbeiten', - 'success' => 'Komponentengruppe aktualisiert.', - 'failure' => 'Etwas ist schief gelaufen mit der Komponenten-Gruppe, versuchen sie es erneut.', - ], - 'delete' => [ - 'success' => 'Die Komponentengruppe wurde gelöscht!', - 'failure' => 'Die Komponentengruppe konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metriken', - 'add' => [ - 'title' => 'Metrik erstellen', - 'message' => 'Du solltest eine Metrik hinzufügen.', - 'success' => 'Metrik erstellt.', - 'failure' => 'Es lieft etwas mit der Metrik schief, bitte nochmal versuchen.', - ], - 'edit' => [ - 'title' => 'Metrik bearbeiten', - 'success' => 'Metrik aktualisiert.', - 'failure' => 'Es lieft etwas mit der Metrik schief, bitte nochmal versuchen.', - ], - 'delete' => [ - 'success' => 'Die Metrik wurde gelöscht und wird nicht mehr angezeigt.', - 'failure' => 'Die Metrik konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonnenten', - 'description' => 'Abonnenten erhalten E-Mail Updates, wenn Vorfälle erstellt oder Komponenten bearbeitet werden.', - 'description_disabled' => 'Um diese Funktion nutzen zu können, musst du zulassen, dass sich Personen für Benachrichtigungen anmelden dürfen.', - 'verified' => 'Bestätigt', - 'not_verified' => 'Nicht Bestätigt', - 'subscriber' => ':email, abonniert am :date', - 'no_subscriptions' => 'Aktualisierungen per E-Mail abonnieren', - 'global' => 'Alles abonniert', - 'add' => [ - 'title' => 'Einen neuen Abonnenten hinzufügen', - 'success' => 'Abonnent hinzugefügt.', - 'failure' => 'Etwas lief schief dem dem Hinzufügen eines Abonnenten. Bitte versuchen Sie es erneut.', - 'help' => 'Gib jeden Abonnenten in eine neue Zeile ein.', - ], - 'edit' => [ - 'title' => 'Abonnent aktualisieren', - 'success' => 'Abonnent aktualisiert.', - 'failure' => 'Etwas lief schief mit dem Bearbeiten eines Abonnenten. Bitte versuchen sie es erneut.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Mitglied', - 'profile' => 'Profil', - 'description' => 'Teammitglieder werden die Möglichkeit haben, Komponente sowie Vorfälle hinzuzufügen und zu verändern.', - 'add' => [ - 'title' => 'Neues Teammitglied hinzufügen', - 'success' => 'Teammitglied hinzugefügt.', - 'failure' => 'Teammitglied konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.', - ], - 'edit' => [ - 'title' => 'Profil aktualisieren', - 'success' => 'Profil aktualisiert.', - 'failure' => 'Etwas lief schief mit dem Aktualisieren des Profils. Bitte versuchen Sie es erneut.', - ], - 'delete' => [ - 'success' => 'Benutzer aktualisiert.', - 'failure' => 'Teammitglied konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.', - ], - 'invite' => [ - 'title' => 'Ein neues Teammitglied einladen', - 'success' => 'Eine Einladung wurde verschickt', - 'failure' => 'Diese Einladung konnte nicht versendet werden. Bitte versuchen Sie es erneut.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Einstellungen', - 'app-setup' => [ - 'app-setup' => 'Anwendungsinstallation', - 'images-only' => 'Es können nur Bilder hochgeladen werden.', - 'too-big' => 'Die von Ihnen hochgeladene Datei ist zu groß. Sie können Dateien bis zu einer Maximalgröße von :size hochladen.', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Verlauf', - ], - 'localization' => [ - 'localization' => 'Standort', - ], - 'customization' => [ - 'customization' => 'Individualisierung', - 'header' => 'Benutzerdefinierter HTML Header', - 'footer' => 'Benutzerdefinierter HTML Footer', - ], - 'mail' => [ - 'mail' => 'E-Mail-Einstellungen', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test-Benachrichtigung von Cachet', - 'body' => 'Dies ist ein Test-Benachrichtigung von Cachet.', - ], - ], - 'security' => [ - 'security' => 'Sicherheit', - 'two-factor' => 'Nutzer ohne Zwei-Faktor-Authentifizierung', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Einstellungen gespeichert.', - 'failure' => 'Einstellungen konnten nicht gespeichert werden.', - ], - 'credits' => [ - 'credits' => 'Danksagungen', - 'contributors' => 'Unterstützer', - 'license' => 'Cachet ist ein BSD-3-lizensiertes Open Source-Projekt, veröffentlicht von Alt Three Services Limited.', - 'backers-title' => 'Unterstützer & Sponsoren', - 'backers' => 'Wenn Du die Entwicklung der Software unterstützen möchtest, kannst Du unter Cachet Patreon einen Beitrag leisten.', - 'thank-you' => 'Vielen Dank an jeden der :count Unterstützer.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Einloggen', - 'logged_in' => 'Sie sind eingeloggt.', - 'welcome' => 'Willkommen zurück!', - 'two-factor' => 'Bitte geben Sie Ihren Token ein.', - ], - - // Sidebar footer - 'help' => 'Hilfe', - 'status_page' => 'Statusseite', - 'logout' => 'Abmelden', - - // Notifications - 'notifications' => [ - 'notifications' => 'Benachrichtigungen', - 'awesome' => 'Großartig.', - 'whoops' => 'Hoppla.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Cachet unterstützen', - 'support_subtitle' => 'Unterstütze uns unter Patreon!', - 'news' => 'Aktuelle Neuigkeiten', - 'news_subtitle' => 'Erhalte die neusten Nachrichten', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Willkommen zu Deiner Status Seite!', - 'message' => 'Ihre Statusseite ist fast fertig! Vielleicht möchten Sie diese zusätzlichen Einstellungen konfigurieren', - 'close' => 'Gehe einfach direkt zu meinem Dashboard', - 'steps' => [ - 'component' => 'Komponenten erstellen', - 'incident' => 'Ereignis erstellen', - 'customize' => 'Seite anpassen', - 'team' => 'Benutzer hinzufügen', - 'api' => 'API Token generieren', - 'two-factor' => 'Zwei-Faktor-Authentifizierung', - ], - ], - -]; diff --git a/resources/lang/de-DE/forms.php b/resources/lang/de-DE/forms.php deleted file mode 100644 index f7034011..00000000 --- a/resources/lang/de-DE/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'E-Mail', - 'username' => 'Benutzername', - 'password' => 'Passwort', - 'site_name' => 'Seitenname', - 'site_domain' => 'Domain ihrer Seite', - 'site_timezone' => 'Wählen Sie Ihre Zeitzone', - 'site_locale' => 'Wählen Sie Ihre Sprache', - 'enable_google2fa' => 'Google Zwei-Faktor-Authentifizierung aktivieren', - 'cache_driver' => 'Cache-Treiber', - 'queue_driver' => 'Queue-Treiber', - 'session_driver' => 'Sitzungs-Treiber', - 'mail_driver' => 'Mail Protokoll', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Absenderadresse', - 'mail_username' => 'Mail Nutzername', - 'mail_password' => 'Mail Passwort', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username oder E-Mail', - 'email' => 'E-Mail', - 'password' => 'Passwort', - '2fauth' => 'Authentifizierungscode', - 'invalid' => 'Benutzername oder Passwort ungültig', - 'invalid-token' => 'Token ist ungültig', - 'cookies' => 'Sie müssen Cookies aktivieren um sich anzumelden.', - 'rate-limit' => 'Maximale Anzahl von Bewertungen erreicht.', - 'remember_me' => 'Eingeloggt bleiben', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Komponente', - 'component_status' => 'Komponentenstatus', - 'message' => 'Nachricht', - 'message-help' => 'Sie können auch Markdown verwenden.', - 'occurred_at' => 'Wann ist dieser Vorfall aufgetreten?', - 'notify_subscribers' => 'Abonnenten benachrichtigen', - 'notify_disabled' => 'Aufgrund von Wartungsarbeiten werden Benachrichtigungen über diesen Vorfall oder seiner Komponenten unterdrückt.', - 'visibility' => 'Ereignis Sichtbarkeit', - 'stick_status' => 'Vorfall anpinnen', - 'stickied' => 'Angepinnt', - 'not_stickied' => 'Nicht angepinnt', - 'public' => 'Öffentlich sichtbar', - 'logged_in_only' => 'Nur für angemeldete Benutzer sichtbar', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Vorlage', - 'twig' => 'Ereignis Vorlagen können den Twig Syntax nutzen.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Nachricht', - 'message-help' => 'Sie können auch Markdown verwenden.', - 'scheduled_at' => 'Für wann ist die Wartungsarbeit geplant?', - 'completed_at' => 'Wann wurde diese Wartungsarbeit abgeschlossen?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Vorlage', - 'twig' => 'Ereignis Vorlagen können den Twig Syntax nutzen.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Gruppe', - 'description' => 'Beschreibung', - 'link' => 'Link', - 'tags' => 'Schlagwörter', - 'tags-help' => 'Durch Kommata trennen.', - 'enabled' => 'Komponente aktiv?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Optionen Anzeigen/Ausblenden', - 'visible' => 'Immer erweitert', - 'collapsed' => 'Die Gruppe standardmäßig ausblenden', - 'collapsed_incident' => 'Die Gruppe standardmäßig ausblenden, aber erweitern wenn es Probleme gibt', - 'visibility' => 'Sichtbarkeit', - 'visibility_public' => 'Öffentlich sichtbar', - 'visibility_authenticated' => 'Nur für angemeldete Benutzer sichtbar', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Beschreibung', - 'start_at' => 'Startzeit festlegen', - 'timezone' => 'Zeitzone', - 'schedule_frequency' => 'Häufigkeit festlegen (in Sekunden)', - 'completion_latency' => 'Wartezeit bis zur Fertigstellung (in Sekunden)', - 'group' => 'Gruppe', - 'active' => 'Aktiv?', - 'groups' => [ - 'name' => 'Gruppen Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Beschreibung', - 'description-help' => 'Sie können auch Markdown verwenden.', - 'display-chart' => 'Diagramm auf der Statusseite anzeigen?', - 'default-value' => 'Standardwert', - 'calc_type' => 'Berechnung der Metrik', - 'type_sum' => 'Summe', - 'type_avg' => 'Durchschnitt', - 'places' => 'Nachkommastellen', - 'default_view' => 'Standardansicht', - 'threshold' => 'Wie viele Minuten soll der Abstand zwischen den Messpunkten sein?', - 'visibility' => 'Sichtbarkeit', - 'visibility_authenticated' => 'Sichtbar für angemeldete Nutzer', - 'visibility_public' => 'Sichtbar für alle', - 'visibility_hidden' => 'Immer ausgeblendet', - - 'points' => [ - 'value' => 'Wert', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Seitenname', - 'site-url' => 'URL ihrer Seite', - 'display-graphs' => 'Graphen auf der Statusseite anzeigen?', - 'about-this-page' => 'Über diese Seite', - 'days-of-incidents' => 'Wie viele Tage mit Vorfällen sollen gezeigt werden?', - 'time_before_refresh' => 'Aktualisierungsrate der Statusseite (in Sekunden)', - 'major_outage_rate' => 'Grenzwert für schwerwiegende Ausfälle (in %)', - 'banner' => 'Banner Bild', - 'banner-help' => 'Es wird empfohlen, dass Sie keine Dateien, die breiter als 930 Pixel sind, hochladen', - 'subscribers' => 'Personen die Anmeldung für E-Mail-Benachrichtigung erlauben?', - 'suppress_notifications_in_maintenance' => 'Möchten Sie Benachrichtigungen über einen Vorfall während des Zeitraumes der Wartungsarbeiten unterdrücken?', - 'skip_subscriber_verification' => 'Verifizierung der Nutzer überspringen? (Warnung, du könntest gespammt werden)', - 'automatic_localization' => 'Die Status-Seite automatisch auf die Sprache deiner Besucher anpassen?', - 'enable_external_dependencies' => 'Drittanbieter Abhängigkeiten erlauben (Google Schriftarten, Tracker, etc...)', - 'show_timezone' => 'Zeitzone in der sich die Status-Seite befindet anzeigen', - 'only_disrupted_days' => 'Im Verlauf nur Tage mit Vorfällen anzeigen?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics Code', - 'analytics_gosquared' => 'GoSquared Analytics Code', - 'analytics_piwik_url' => 'URL der Piwik-Instanz', - 'analytics_piwik_siteid' => 'Piwik\'s Seiten-ID', - ], - 'localization' => [ - 'site-timezone' => 'Zeitzone ihrer Seite', - 'site-locale' => 'Sprache ihrer Seite', - 'date-format' => 'Datumsformat', - 'incident-date-format' => 'Ereignis Uhrzeit Format', - ], - 'security' => [ - 'allowed-domains' => 'Erlaubte Domains', - 'allowed-domains-help' => 'Durch Kommata trennen. Die oben genannte Domain ist standardmäßig erlaubt.', - 'always-authenticate' => 'Immer anmelden', - 'always-authenticate-help' => 'Anmeldung für alle Cachet Seiten erzwingen', - ], - 'stylesheet' => [ - 'custom-css' => 'Benutzerdefiniertes Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Hintergrundfarbe', - 'background-fills' => 'Hintergrunddateien (Komponenten, Vorfälle, Footer)', - 'banner-background-color' => 'Banner Background Color', - 'banner-padding' => 'Banner Padding', - 'fullwidth-banner' => 'Banner über komplette Breite?', - 'text-color' => 'Schriftfarbe', - 'dashboard-login' => 'Dashboard-Button im Footer anzeigen?', - 'reds' => 'Rot (Genutzt für Fehler)', - 'blues' => 'Blau (Genutzt für Informationen)', - 'greens' => 'Grün (Genutzt für Erfolgreich)', - 'yellows' => 'Gelb (Genutzt für Warnungen)', - 'oranges' => 'Orange (Genutzt für Nachrichten)', - 'metrics' => 'Kennzahlen-Füllung', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Benutzername', - 'email' => 'E-Mail', - 'password' => 'Passwort', - 'api-token' => 'API Token', - 'api-token-help' => 'Wenn sie ihren API-Token neu generieren, können bestehende Anwendungen nicht mehr auf Cachet zugreifen.', - 'gravatar' => 'Ändern Sie Ihr Profilbild bei Gravatar.', - 'user_level' => 'Benutzerebene', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'Benutzer', - ], - '2fa' => [ - 'help' => 'Die Zwei-Faktor-Authentifizierung erhöht die Sicherheit Ihres Kontos. Sie benötigen Google Authenticator oder eine ähnliche App auf Ihrem Mobilgerät. Beim Anmelden werden sie aufgefordert, einen Token einzugeben, der von der App generiert wird.', - ], - 'team' => [ - 'description' => 'Laden Sie Ihre Teammitglieder ein, indem Sie deren E-Mail-Adressen hier eingeben.', - 'email' => 'Die E-Mail Adresse des Teammitgliedes', - ], - ], - - 'general' => [ - 'timezone' => 'Zeitzone wählen', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Hinzufügen', - 'save' => 'Speichern', - 'update' => 'Aktualisieren', - 'create' => 'Erstellen', - 'edit' => 'Bearbeiten', - 'delete' => 'Löschen', - 'submit' => 'Abschicken', - 'cancel' => 'Abbrechen', - 'remove' => 'Entfernen', - 'invite' => 'Einladen', - 'signup' => 'Registrieren', - 'manage_updates' => 'Updates verwalten', - - // Other - 'optional' => '* optional', -]; diff --git a/resources/lang/de-DE/notifications.php b/resources/lang/de-DE/notifications.php deleted file mode 100644 index 9ee1d429..00000000 --- a/resources/lang/de-DE/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Status der Komponente aktualisiert', - 'greeting' => 'Ein Komponentenstatus wurde aktualisiert!', - 'content' => ':name Status wurde von :old_status zu :new_status geändert.', - 'action' => 'Anzeigen', - ], - 'slack' => [ - 'title' => 'Status der Komponente aktualisiert', - 'content' => ':name Status wurde von :old_status zu :new_status geändert.', - ], - 'sms' => [ - 'content' => ':name Status wurde von :old_status zu :new_status geändert.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Neuer Vorfall gemeldet', - 'greeting' => 'Ein neuer Vorfall wurde auf der :app_name Status Seite gemeldet.', - 'content' => 'Vorfall :name wurde gemeldet', - 'action' => 'Anzeigen', - ], - 'slack' => [ - 'title' => 'Vorfall :name gemeldet', - 'content' => 'Ein neuer Vorfall wurde auf der :app_name Status Seite gemeldet', - ], - 'sms' => [ - 'content' => 'Ein neuer Vorfall wurde auf der :app_name Status Seite gemeldet.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Vorfall aktualisiert', - 'content' => ':name wurde aktualisiert', - 'title' => ':name wurde auf :new_status aktualisiert', - 'action' => 'Anzeigen', - ], - 'slack' => [ - 'title' => ':name aktualisiert', - 'content' => ':name wurde auf :new_status aktualisiert', - ], - 'sms' => [ - 'content' => 'Vorfall :name wurde aktualisiert', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Neuer Zeitplan erstellt', - 'content' => ':name wurde für :date geplant', - 'title' => 'Eine neue geplante Wartung wurde erstellt.', - 'action' => 'Anzeigen', - ], - 'slack' => [ - 'title' => 'Neuer Zeitplan erstellt!', - 'content' => ':name wurde für :date geplant', - ], - 'sms' => [ - 'content' => ':name wurde für :date geplant', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Bitte bestätigen Sie Ihr Abonnement', - 'content' => 'Klicken Sie, um Ihr Abonnement von :app_name Statusseite zu bestätigen.', - 'title' => 'Bestätigen Sie Ihr Abonnement für die :app_name Statusseite.', - 'action' => 'Bestätigen', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Verwaltung Ihres Abonnements', - 'content' => 'Klicken, um Ihr Abonnement für die Statusseite :app_name zu verwalten.', - 'title' => 'Klicken, um Ihr Abonnement für die Statusseite :app_name zu verwalten.', - 'action' => 'Abonnements verwalten', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping von Cachet!', - 'content' => 'Dies ist eine Test-Benachrichtigung von Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Ihre Einladung wartet auf Sie...', - 'content' => 'Sie wurden eingeladen, um der :app_name Statusseite beizutreten.', - 'title' => 'Sie sind dazu eingeladen, der :app_name Statusseite beizutreten.', - 'action' => 'Akzeptieren', - ], - ], - ], -]; diff --git a/resources/lang/de-DE/pagination.php b/resources/lang/de-DE/pagination.php deleted file mode 100644 index b52dd5ce..00000000 --- a/resources/lang/de-DE/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Vorherige', - 'next' => 'Nächste', - -]; diff --git a/resources/lang/de-DE/setup.php b/resources/lang/de-DE/setup.php deleted file mode 100644 index ccda3bfa..00000000 --- a/resources/lang/de-DE/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Installation', - 'title' => 'Cachet installieren', - 'service_details' => 'Servicedetails', - 'env_setup' => 'Einrichtung der Systemumgebung', - 'status_page_setup' => 'Statusseite einrichten', - 'show_support' => 'Möchten Sie Cachet unterstützen?', - 'admin_account' => 'Administrator Konto', - 'complete_setup' => 'Installation abschließen', - 'completed' => 'Cachet wurde erfolgreich konfiguriert!', - 'finish_setup' => 'Zum Dashboard wechseln', -]; diff --git a/resources/lang/de-DE/validation.php b/resources/lang/de-DE/validation.php deleted file mode 100644 index 9483f418..00000000 --- a/resources/lang/de-DE/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute muss akzeptiert werden.', - 'active_url' => ':attribute ist keine gültige Internet-Adresse.', - 'after' => ':attribute muss ein Datum nach dem :date sein.', - 'alpha' => ':attribute darf nur aus Buchstaben bestehen.', - 'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.', - 'alpha_num' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.', - 'array' => ':attribute muss ein Array sein.', - 'before' => ':attribute muss ein Datum vor dem :date sein.', - 'between' => [ - 'numeric' => ':attribute muss zwischen :min und :max liegen.', - 'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.', - 'string' => ':attribute muss zwischen :min und :max Zeichen lang sein.', - 'array' => ':attribute muss zwischen :min & :max Elemente haben.', - ], - 'boolean' => ':attribute Feld muss true oder false sein.', - 'confirmed' => ':attribute Bestätigung stimmt nicht überein.', - 'date' => ':attribute ist kein gültiges Datum.', - 'date_format' => ':attribute entspricht nicht dem Format :format.', - 'different' => ':attribute und :other dürfen nicht identisch sein.', - 'digits' => ':attribute muss :digits Zeichen lang sein.', - 'digits_between' => ':attribute muss zwischen :min und :max Zeichen lang sein.', - 'email' => ':attribute muss eine gültige E-Mail-Ad­res­se sein.', - 'exists' => 'Das ausgewählte :attribute ist ungültig.', - 'distinct' => ':attribute hat doppelte Werte.', - 'filled' => 'Das Feld :attribute ist erforderlich.', - 'image' => ':attribute muss ein Bild sein.', - 'in' => 'Das ausgewählte :attribute ist ungültig.', - 'in_array' => ':attribute existiert nicht in :other.', - 'integer' => ':attribute muss eine ganze Zahl sein.', - 'ip' => ':attribute muss eine gültige IP-Adresse sein.', - 'json' => ':attribut muss ein gültiger JSON-String sein.', - 'max' => [ - 'numeric' => ':attribute darf nicht größer sein als :max.', - 'file' => ':attribute darf nicht größer sein als :max kilobytes.', - 'string' => ':attribute darf maximal :max Zeichen haben.', - 'array' => ':attribute darf nicht mehr als :max Elemente haben.', - ], - 'mimes' => ':attribute muss einem der Dateitypen: :values entsprechen.', - 'min' => [ - 'numeric' => ':attribute muss mindestens :min sein.', - 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', - 'string' => ':attribute muss mindestens :min Zeichen enthalten.', - 'array' => ':attribute muss mindestens :min Elemente haben.', - ], - 'not_in' => 'Das ausgewählte :attribute ist ungültig.', - 'numeric' => ':attribute muss eine Zahl sein.', - 'present' => ':attribute muss ausgefüllt sein.', - 'regex' => 'Das Format von :attribute ist ungültig.', - 'required' => 'Das Feld :attribute ist erforderlich.', - 'required_if' => ':attribute wird benötigt wenn :other :value entspricht.', - 'required_unless' => 'Das :attribute Feld ist erforderlich außer :other hat den Wert :values.', - 'required_with' => ':attribute muss angegeben werden, wenn :values ausgefüllt wurde.', - 'required_with_all' => ':attribute muss angegeben werden, wenn :values ausgefüllt wurde.', - 'required_without' => ':attribute muss angegeben werden, wenn :values nicht angegeben wurde.', - 'required_without_all' => ':attribute ist erforderlich, wenn keiner von :values vorhanden sind.', - 'same' => ':attribute und :other müssen übereinstimmen.', - 'size' => [ - 'numeric' => ':attribute muss :size sein.', - 'file' => ':attribute muss :size Kilobytes groß sein.', - 'string' => ':attribute muss :size Zeichen lang sein.', - 'array' => ':attribute muss :size Elemente beinhalten.', - ], - 'string' => 'Das :attribute muss eine Zeichenfolge sein.', - 'timezone' => ':attribute muss eine gültige Zeitzone sein.', - 'unique' => ':attribute ist schon vergeben.', - 'url' => 'Das Format von :attribute ist ungültig.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'Individuelle Nachricht', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/de/cachet.php b/resources/lang/de/cachet.php deleted file mode 100644 index 152f8842..00000000 --- a/resources/lang/de/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Letztes Update :timestamp', - 'status' => [ - 1 => 'Funktionsfähig', - 2 => 'Leistungsprobleme', - 3 => 'Teilweiser Ausfall', - 4 => 'Schwerer Ausfall', - ], - 'group' => [ - 'other' => 'Andere Komponenten', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Es liegen keine Vorfälle vor', - 'past' => 'Vergangene Vorfälle', - 'previous_week' => 'Vorherige Woche', - 'next_week' => 'Nächste Woche', - 'scheduled' => 'Geplante Wartungen', - 'scheduled_at' => ', geplant :timestamp', - 'status' => [ - 0 => 'Geplant', // TODO: Hopefully remove this. - 1 => 'Untersuchungen laufen', - 2 => 'Identifiziert', - 3 => 'Unter Beobachtung', - 4 => 'Behoben', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System funktioniert|[2,Inf] Alle Systeme funktionieren', - 'bad' => '[0,1] System hat momentan Probleme|[2,Inf] Mehrere Systeme haben momentan Probleme', - 'major' => '[0,1] System hat ein schwerwiegendes Problem|[2,Inf] Mehrere Systeme haben ein schwerwiegendes Problem', - ], - - 'api' => [ - 'regenerate' => 'API-Schlüssel neu generieren', - 'revoke' => 'API-Schlüssel widerrufen', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Letzte Stunde', - 'hourly' => 'Letzte 12 Stunden', - 'weekly' => 'Wöchentlich', - 'monthly' => 'Monatlich', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Abonnieren Sie um die neuesten Updates zu erhalten.', - 'button' => 'Abonnieren', - 'manage' => [ - 'no_subscriptions' => 'Du hast im Augenblick alle Updates abonniert.', - 'my_subscriptions' => 'Du hast im Augenblick folgende Updates abonniert.', - ], - 'email' => [ - 'subscribe' => 'Aktualisierungen per E-Mail abonnieren.', - 'subscribed' => 'Sie haben E-Mail-Benachrichtigungen abonniert, überprüfen Sie bitte Ihre E-Mail, um Ihr Abonnement zu bestätigen.', - 'verified' => 'Ihre E-Mail-Abonnement ist bestätigt worden. Danke!', - 'manage' => 'Verwalte deine Abonnements', - 'unsubscribe' => 'Von E-Mail-Updates deabonnieren.', - 'unsubscribed' => 'Ihre E-Mail-Abonnement wurde gekündigt.', - 'failure' => 'Etwas ist mit dem Abonnement schief gelaufen.', - 'already-subscribed' => 'Abonnement für :email konnte nicht registriert werden, da die E-Mail Adresse schon registriert ist.', - 'verify' => [ - 'text' => "Bitte bestätige die E-Mail-Benachrichtigungen unter :app_name status updates.\n:link", - 'html' => '

Bitte bestätige deine E-Mail-Benachrichtigung unter :app_name status updates.

', - 'button' => 'Abonnement bestätigen', - ], - 'maintenance' => [ - 'subject' => '[Planmäßige Wartung] :name', - ], - 'incident' => [ - 'subject' => '[Neuer Vorfall] :status: :name', - ], - 'component' => [ - 'subject' => 'Komponent Status Update', - 'text' => 'Der Komponent :component_name hatte eine Status-Änderung. Der Komponent befindet sich nun im :component_human_status.\nDanke, :app_name', - 'html' => '

Der Komponent :component_name hatte eine Status-Änderung. Der Komponent befindet sich nun im :component_human_status.

Danke, :app_name

', - 'tooltip-title' => 'Neuigkeiten für :component_name abonnieren.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Du wurdest in das Team :app_name Status Seite eingeladen. Um dich zu registrieren klicke den Link.\n:link\nDanke, :app_name", - 'html' => '

Du wurdest in das Team :app_name Status Seite eingeladen. Um dich zu registrieren klicke den Link.

:link

Danke, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Registrieren', - 'username' => 'Benutzername', - 'email' => 'E-Mail', - 'password' => 'Passwort', - 'success' => 'Ihr Konto wurde erfolgreich erstellt.', - 'failure' => 'Mit der Registrierung ist etwas schief gelaufen.', - ], - - 'system' => [ - 'update' => 'Es ist eine neuere Version von Cachet verfügbar. Lerne hier!, wie du updaten kannst!', - ], - - // Modal - 'modal' => [ - 'close' => 'Schließen', - 'subscribe' => [ - 'title' => 'Abonniere die Komponenten-Updates', - 'body' => 'Gib deine E-Mail Adresse ein, um Updates für diesen Komponenten zu erhalten. Wenn du bereits abonniert bist, erhälst du schon Updates für diesen Komponenten.', - 'button' => 'Abonnieren', - ], - ], - - // Other - 'home' => 'Startseite', - 'description' => 'Bleiben sie up to date mit den neuesten Service-Updates von: app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'Über diese Seite', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status-Feed', - -]; diff --git a/resources/lang/de/dashboard.php b/resources/lang/de/dashboard.php deleted file mode 100644 index e6bdde15..00000000 --- a/resources/lang/de/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Dashboard', - - // Incidents - 'incidents' => [ - 'title' => 'Ereignisse & Termine', - 'incidents' => 'Vorfälle', - 'logged' => '{0} Es gibt keine Vorfälle, gute Arbeit.|Du hast einen Vorfall gemeldet.|Du hast :count Vorfälle gemeldet.', - 'incident-create-template' => 'Vorlage erstellen', - 'incident-templates' => 'Vorfall Vorlagen', - 'add' => [ - 'title' => 'Vorfall hinzufügen', - 'success' => 'Vorfall hinzugefügt.', - 'failure' => 'Es ist ein Fehler beim Hinzufügen der Störung aufgetreten. Bitte erneut versuchen.', - ], - 'edit' => [ - 'title' => 'Vorfall bearbeiten', - 'success' => 'Vorfall aktualisiert.', - 'failure' => 'Es ist ein Fehler beim Editieren der Störung aufgetreten. Bitte erneut versuchen.', - ], - 'delete' => [ - 'success' => 'Der Vorfall wurde gelöscht und wird nicht mehr angezeigt.', - 'failure' => 'Die Störung konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Vorfall Vorlagen', - 'add' => [ - 'title' => 'Vorfallvorlage erstellen', - 'message' => 'Du solltest eine Vorfall-Vorlage hinzufügen.', - 'success' => 'Deine neue Störungsvorlage wurde angelegt.', - 'failure' => 'Etwas ist mit der Vorfallvorlage schiefgelaufen.', - ], - 'edit' => [ - 'title' => 'Vorlage bearbeiten', - 'success' => 'Die Vorfallvorlage wurde aktualisiert.', - 'failure' => 'Etwas ist mit dem Updaten der Vorfallvorlage schiefgelaufen', - ], - 'delete' => [ - 'success' => 'Die Vorfall-Vorlage wurde gelöscht.', - 'failure' => 'Die Vorfall-Vorlage konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Planmäßige Wartung', - 'logged' => '{0} Es gibt keine Zeitpläne, gute Arbeit.|Du hast einen Zeitplan geloggt.|Du hast :count Zeitpläne gemeldet.', - 'scheduled_at' => 'Geplant am :timestamp', - 'add' => [ - 'title' => 'Planmäßige Wartung hinzufügen', - 'success' => 'Zeitplan hinzugefügt.', - 'failure' => 'Etwas lief schief mit dem Hinzufügen des Zeitplans. Bitte versuchen Sie es erneut.', - ], - 'edit' => [ - 'title' => 'Planmäßige Wartung bearbeiten', - 'success' => 'Zeitplan wurde aktualisiert!', - 'failure' => 'Etwas lief schief mit dem Editieren des Zeitplans. Bitte versuchen Sie es erneut.', - ], - 'delete' => [ - 'success' => 'Der Zeitplan wurde gelöscht und wird nicht auf Ihrer Statusseite angezeigt.', - 'failure' => 'Der Zeitplan konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Komponenten', - 'component_statuses' => 'Komponentenstatus', - 'listed_group' => 'Gruppiert unter :name', - 'add' => [ - 'title' => 'Komponente hinzufügen', - 'message' => 'Sie sollten eine Komponente erstellen.', - 'success' => 'Komponente erstellt.', - 'failure' => 'Etwas ist schief gelaufen mit der Komponente, versuchen sie es erneut.', - ], - 'edit' => [ - 'title' => 'Komponente bearbeiten', - 'success' => 'Komponente aktualisiert.', - 'failure' => 'Etwas ist schief gelaufen mit der Komponente, versuchen sie es erneut.', - ], - 'delete' => [ - 'success' => 'Die Komponente wurde gelöscht!', - 'failure' => 'Die Komponente konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Komponentgruppe|Komponentgruppen', - 'no_components' => 'Sie sollten eine Komponentengruppe hinzufügen.', - 'add' => [ - 'title' => 'Eine Komponentengruppe hinzufügen', - 'success' => 'Komponentengruppe hinzugefügt.', - 'failure' => 'Etwas ist mit der Komponentengruppe schiefgelaufen, versuchen sie es erneut.', - ], - 'edit' => [ - 'title' => 'Komponentengruppe bearbeiten', - 'success' => 'Komponentengruppe aktualisiert.', - 'failure' => 'Etwas ist mit der Komponentengruppe schiefgelaufen, versuchen sie es erneut.', - ], - 'delete' => [ - 'success' => 'Die Komponentengruppe wurde gelöscht!', - 'failure' => 'Die Komponentengruppe konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metriken', - 'add' => [ - 'title' => 'Metrik erstellen', - 'message' => 'Du solltest eine Metrik hinzufügen.', - 'success' => 'Metrik erstellt.', - 'failure' => 'Es lieft etwas mit der Metrik schief, bitte nochmal versuchen.', - ], - 'edit' => [ - 'title' => 'Metrik bearbeiten', - 'success' => 'Metrik aktualisiert.', - 'failure' => 'Es lieft etwas mit der Metrik schief, bitte nochmal versuchen.', - ], - 'delete' => [ - 'success' => 'Die Metrik wurde gelöscht und wird nicht mehr angezeigt.', - 'failure' => 'Die Metrik konnte nicht gelöscht werden. Bitte versuche es erneut.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonnenten', - 'description' => 'Abonnenten erhalten E-Mail Updates, wenn Vorfälle erstellt oder Komponenten bearbeitet werden.', - 'verified' => 'Verifiziert', - 'not_verified' => 'Nicht verifiziert', - 'subscriber' => ':email, abonniert am :date', - 'no_subscriptions' => 'Aktualisierungen per E-Mail abonnieren', - 'add' => [ - 'title' => 'Einen neuen Abonnenten hinzufügen', - 'success' => 'Abonnent hinzugefügt.', - 'failure' => 'Etwas lief schief dem dem Hinzufügen eines Abonnenten. Bitte versuchen Sie es erneut.', - 'help' => 'Gib jeden Abonnenten in eine neue Zeile ein.', - ], - 'edit' => [ - 'title' => 'Abonnent aktualisieren', - 'success' => 'Abonnent aktualisiert.', - 'failure' => 'Etwas lief schief mit dem Bearbeiten eines Abonnenten. Bitte versuchen sie es erneut.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Mitglied', - 'profile' => 'Profil', - 'description' => 'Teammitglieder werden die Möglichkeit haben, Komponente sowie Vorfälle hinzuzufügen und zu verändern.', - 'add' => [ - 'title' => 'Neues Teammitglied hinzufügen', - 'success' => 'Teammitglied hinzugefügt.', - 'failure' => 'Teammitglied konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.', - ], - 'edit' => [ - 'title' => 'Profil aktualisieren', - 'success' => 'Profil aktualisiert.', - 'failure' => 'Etwas lief schief mit dem Aktualisieren des Profils. Bitte versuchen Sie es erneut.', - ], - 'delete' => [ - 'success' => 'Benutzer aktualisiert.', - 'failure' => 'Teammitglied konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.', - ], - 'invite' => [ - 'title' => 'Ein neues Teammitglied einladen', - 'success' => 'Eine Einladung wurde verschickt', - 'failure' => 'Diese Einladung konnte nicht versendet werden. Bitte versuchen Sie es erneut.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Einstellungen', - 'app-setup' => [ - 'app-setup' => 'Anwendungsinstallation', - 'images-only' => 'Es können nur Bilder hochgeladen werden.', - 'too-big' => 'Die von Ihnen hochgeladene Datei ist zu groß. Laden Sie ein Bild welches kleiner als :size ist hoch', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Individualisierung', - 'header' => 'Benutzerdefinierter HTML Header', - 'footer' => 'Benutzerdefinierter HTML Footer', - ], - 'security' => [ - 'security' => 'Sicherheit', - 'two-factor' => 'Nutzer ohne Zwei-Faktor-Authentifizierung', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Einstellungen gespeichert.', - 'failure' => 'Einstellungen konnten nicht gespeichert werden.', - ], - 'credits' => [ - 'credits' => 'Danksagungen', - 'contributors' => 'Unterstützer', - 'license' => 'Cachet ist ein BSD-3-lizensiertes Open Source-Projekt, veröffentlicht von Alt Three Services Limited.', - 'backers-title' => 'Unterstützer & Sponsoren', - 'backers' => 'Wenn Du die Entwicklung der Software unterstützen möchtest, kannst Du unter Cachet Patreon einen Beitrag leisten.', - 'thank-you' => 'Vielen Dank an jeden der :count Unterstützer.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Anmelden', - 'logged_in' => 'Sie sind eingeloggt.', - 'welcome' => 'Willkommen zurück!', - 'two-factor' => 'Bitte geben Sie Ihren Token ein.', - ], - - // Sidebar footer - 'help' => 'Hilfe', - 'status_page' => 'Statusseite', - 'logout' => 'Abmelden', - - // Notifications - 'notifications' => [ - 'notifications' => 'Benachrichtigungen', - 'awesome' => 'Großartig.', - 'whoops' => 'Hoppla.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Cachet unterstützen', - 'support_subtitle' => 'Unterstütze uns unter Patreon!', - 'news' => 'Aktuelle Neuigkeiten', - 'news_subtitle' => 'Erhalte die neusten Nachrichten', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Willkommen zu Deiner Status Seite!', - 'message' => 'Ihre Statusseite ist fast fertig! Vielleicht möchten Sie diese zusätzlichen Einstellungen konfigurieren', - 'close' => 'Gehe einfach direkt zu meinem Dashboard', - 'steps' => [ - 'component' => 'Komponenten erstellen', - 'incident' => 'Vorfälle erstellen', - 'customize' => 'Personalisieren', - 'team' => 'Benutzer hinzufügen', - 'api' => 'API Token generieren', - 'two-factor' => 'Zwei-Faktor-Authentifizierung', - ], - ], - -]; diff --git a/resources/lang/de/forms.php b/resources/lang/de/forms.php deleted file mode 100644 index 26e51de8..00000000 --- a/resources/lang/de/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'E-Mail', - 'username' => 'Benutzername', - 'password' => 'Passwort', - 'site_name' => 'Seitenname', - 'site_domain' => 'Domain ihrer Seite', - 'site_timezone' => 'Wählen Sie Ihre Zeitzone', - 'site_locale' => 'Wählen Sie Ihre Sprache', - 'enable_google2fa' => 'Google Zwei-Faktor-Authentifizierung aktivieren', - 'cache_driver' => 'Cache-Treiber', - 'session_driver' => 'Sitzungs-Treiber', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username oder E-Mail', - 'email' => 'E-Mail', - 'password' => 'Passwort', - '2fauth' => 'Authentifizierungscode', - 'invalid' => 'Ungültiger Benutzername oder Passwort', - 'invalid-token' => 'Token ist ungültig', - 'cookies' => 'Sie müssen Cookies aktivieren um sich anzumelden.', - 'rate-limit' => 'Maximale Anzahl von Bewertungen erreicht.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Komponente', - 'message' => 'Nachricht', - 'message-help' => 'Sie können auch Markdown verwenden.', - 'scheduled_at' => 'Für wann ist die Wartung geplant?', - 'incident_time' => 'Wann ist dieser Vorfall aufgetreten?', - 'notify_subscribers' => 'Abonnenten benachrichtigen', - 'visibility' => 'Vorfall Sichtbarkeit', - 'public' => 'Öffentlich sichtbar', - 'logged_in_only' => 'Nur für angemeldete Benutzer sichtbar', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Vorlage', - 'twig' => 'Vorfall Vorlagen können den Twig Syntax nutzen.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Gruppe', - 'description' => 'Beschreibung', - 'link' => 'Link', - 'tags' => 'Schlagwörter', - 'tags-help' => 'Durch Kommata trennen.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Wähle Sichtbarkeit der Gruppe', - 'visible' => 'Immer erweitert', - 'collapsed' => 'Die Gruppe standardmäßig ausblenden', - 'collapsed_incident' => 'Die Gruppe standardmäßig ausblenden, aber erweitern wenn es Probleme gibt', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Beschreibung', - 'description-help' => 'Sie können auch Markdown benutzen.', - 'display-chart' => 'Diagramm auf der Statusseite anzeigen?', - 'default-value' => 'Standardwert', - 'calc_type' => 'Berechnung der Metrik', - 'type_sum' => 'Summe', - 'type_avg' => 'Durchschnitt', - 'places' => 'Nachkommastellen', - 'default_view' => 'Standardansicht', - 'threshold' => 'Wie viele Minuten soll der Abstand zwischen den Messpunkten sein?', - - 'points' => [ - 'value' => 'Wert', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Seitenname', - 'site-url' => 'URL ihrer Seite', - 'display-graphs' => 'Graphen auf der Statusseite anzeigen?', - 'about-this-page' => 'Über diese Seite', - 'days-of-incidents' => 'Wie viele Tage mit Vorfällen sollen gezeigt werden?', - 'banner' => 'Banner Bild', - 'banner-help' => 'Es wird empfohlen, dass Sie keine Dateien die breiter als 930 Pixel sind hochladen .', - 'subscribers' => 'Personen die Anmeldung für E-Mail-Benachrichtigung erlauben?', - 'automatic_localization' => 'Die Status-Seite automatisch auf die Sprache deiner Besucher anpassen?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics Code', - 'analytics_gosquared' => 'GoSquared Analytics Code', - 'analytics_piwik_url' => 'URL der Piwik-Instanz (ohne http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s Seiten-ID', - ], - 'localization' => [ - 'site-timezone' => 'Zeitzone ihrer Seite', - 'site-locale' => 'Sprache ihrer Seite', - 'date-format' => 'Datumsformat', - 'incident-date-format' => 'Vorfall Zeitstempel-Format', - ], - 'security' => [ - 'allowed-domains' => 'Erlaubte Domains', - 'allowed-domains-help' => 'Durch Kommata trennen. Die oben genannte Domain ist standardmäßig erlaubt.', - ], - 'stylesheet' => [ - 'custom-css' => 'Benutzerdefiniertes Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Hintergrundfarbe', - 'background-fills' => 'Hintergrunddateien (Komponenten, Vorfälle, Footer)', - 'banner-background-color' => 'Banner Background Color', - 'banner-padding' => 'Banner Padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Schriftfarbe', - 'dashboard-login' => 'Dashboard-Button im Footer anzeigen?', - 'reds' => 'Rot (Genutzt für Fehler)', - 'blues' => 'Blau (Genutzt für Informationen)', - 'greens' => 'Grün (Genutzt für Erfolgreich)', - 'yellows' => 'Gelb (Genutzt für Warnungen)', - 'oranges' => 'Orange (Genutzt für Nachrichten)', - 'metrics' => 'Kennzahlen-Füllung', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Benutzername', - 'email' => 'E-Mail', - 'password' => 'Passwort', - 'api-token' => 'API Token', - 'api-token-help' => 'Wenn sie ihren API-Token neu generieren, können bestehende Anwendungen nicht mehr auf Cachet zugreifen.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'Benutzerebene', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'Benutzer', - ], - '2fa' => [ - 'help' => 'Die Zwei-Faktor-Authentifizierung erhöht die Sicherheit Ihres Kontos. Sie benötigen Google Authenticator oder eine ähnliche App auf Ihrem Mobilgerät. Beim Anmelden werden sie aufgefordert, einen Token einzugeben, der von der App generiert wird.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Hinzufügen', - 'save' => 'Speichern', - 'update' => 'Aktualisieren', - 'create' => 'Erstellen', - 'edit' => 'Bearbeiten', - 'delete' => 'Löschen', - 'submit' => 'Abschicken', - 'cancel' => 'Abbrechen', - 'remove' => 'Entfernen', - 'invite' => 'Einladen', - 'signup' => 'Registrieren', - - // Other - 'optional' => '* optional', -]; diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php deleted file mode 100644 index 0ce21e3e..00000000 --- a/resources/lang/de/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Zurück', - 'next' => 'Vor »', - -]; diff --git a/resources/lang/de/setup.php b/resources/lang/de/setup.php deleted file mode 100644 index ccda3bfa..00000000 --- a/resources/lang/de/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Installation', - 'title' => 'Cachet installieren', - 'service_details' => 'Servicedetails', - 'env_setup' => 'Einrichtung der Systemumgebung', - 'status_page_setup' => 'Statusseite einrichten', - 'show_support' => 'Möchten Sie Cachet unterstützen?', - 'admin_account' => 'Administrator Konto', - 'complete_setup' => 'Installation abschließen', - 'completed' => 'Cachet wurde erfolgreich konfiguriert!', - 'finish_setup' => 'Zum Dashboard wechseln', -]; diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php deleted file mode 100644 index 4ccd39da..00000000 --- a/resources/lang/de/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute muss akzeptiert werden.', - 'active_url' => ':attribute ist keine gültige Internet-Adresse.', - 'after' => ':attribute muss ein Datum nach dem :date sein.', - 'alpha' => ':attribute darf nur aus Buchstaben bestehen.', - 'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.', - 'alpha_num' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.', - 'array' => ':attribute muss ein Array sein.', - 'before' => ':attribute muss ein Datum vor dem :date sein.', - 'between' => [ - 'numeric' => ':attribute muss ein Datum vor dem :date sein.', - 'file' => 'Das :attribute muss zwischen :min und :max liegen.', - 'string' => 'Das :attribute muss zwischen :min und :max kilobytes groß sein.', - 'array' => ':attribute muss zwischen :min & :max Elemente haben.', - ], - 'boolean' => ':attribute muss zwischen :min & :max Elemente haben.', - 'confirmed' => ':attribute Feld muss richtig oder falsch sein.', - 'date' => ':attribute stimmt nicht mit der Bestätigung überein.', - 'date_format' => ':attribute ist kein gültiges Datum.', - 'different' => ':attribute entspricht nicht dem gültigen Format :format.', - 'digits' => ':attribute und :other müssen sich unterscheiden.', - 'digits_between' => ':attribute muss :digits Stellen haben.', - 'email' => ':attribute soll mindestens :min und darf maximal :max Stellen haben.', - 'exists' => ':attribute muss eine gültige Emailadresse sein.', - 'distinct' => ':attribute hat doppelte Werte.', - 'filled' => 'Das Format von :attribute ist ungültig.', - 'image' => ':attribute muss ein Bild sein.', - 'in' => ':attribute muss ein Bild sein.', - 'in_array' => ':attribute existiert nicht in :other.', - 'integer' => 'Das ausgewählte :attribute ist ungültig.', - 'ip' => ':attribute muss eine ganze Zahl sein.', - 'json' => ':attribut muss ein gültiger JSON-String sein.', - 'max' => [ - 'numeric' => ':attribute muss eine gültige IP-Adresse sein.', - 'file' => ':attribute darf nicht größer als :max sein.', - 'string' => ':attribute darf nicht größer als :max kb sein.', - 'array' => ':attribute darf nicht mehr als :max Elemente haben.', - ], - 'mimes' => ':attribute darf nicht mehr als :max Elemente haben.', - 'min' => [ - 'numeric' => ':attribute muss eine Datei des Typs :values sein.', - 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', - 'string' => ':attribute muss mindestens :min Kilobytes groß sein.', - 'array' => ':attribute muss mindestens :min Zeichen lang sein.', - ], - 'not_in' => ':attribute muss mindestens :min Elemente haben.', - 'numeric' => 'Das ausgewählte :attribute ist ungültig.', - 'present' => ':attribute muss ausgefüllt sein.', - 'regex' => ':attribute muss eine Zahl sein.', - 'required' => 'Das Format von :attribute ist ungültig.', - 'required_if' => ':attribute muss ausgefüllt sein.', - 'required_unless' => 'Das :attribute Feld ist erforderlich außer :other hat den Wert :values.', - 'required_with' => ':attribute muss angegeben werden, wenn :values ausgefüllt wurde.', - 'required_with_all' => ':attribute muss angegeben werden, wenn :values ausgefüllt wurde.', - 'required_without' => ':attribute muss angegeben werden, wenn :values ausgefüllt wurde.', - 'required_without_all' => ':attribute muss angegeben werden, wenn :values nicht ausgefüllt wurde.', - 'same' => ':attribute ist erforderlich, wenn keines von :values vorhanden ist.', - 'size' => [ - 'numeric' => ':attribute und :other müssen übereinstimmen.', - 'file' => ':attribute muss :size Kilobytes groß sein.', - 'string' => ':attribute muss :size Zeichen lang sein.', - 'array' => ':attribute muss :size Zeichen lang sein.', - ], - 'string' => ':attribute muss :size Elemente beinhalten.', - 'timezone' => ':attribute muss eine gültige Zeitzone sein.', - 'unique' => ':attribute ist schon vergeben.', - 'url' => 'Das Format von :attribute ist ungültig.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'Individuelle Nachricht', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/el-GR/cachet.php b/resources/lang/el-GR/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/el-GR/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/el-GR/dashboard.php b/resources/lang/el-GR/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/el-GR/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/el-GR/forms.php b/resources/lang/el-GR/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/el-GR/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/el-GR/notifications.php b/resources/lang/el-GR/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/el-GR/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/el-GR/pagination.php b/resources/lang/el-GR/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/el-GR/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/el-GR/setup.php b/resources/lang/el-GR/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/el-GR/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/el-GR/validation.php b/resources/lang/el-GR/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/el-GR/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/el/cachet.php b/resources/lang/el/cachet.php deleted file mode 100644 index a1fef4d0..00000000 --- a/resources/lang/el/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Λειτουργικό', - 2 => 'Προβλήματα επιδόσης', - 3 => 'Μερική Διακοπή', - 4 => 'Σημαντική Διακοπή', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Δεν υπάρχουν περιστατικά', - 'past' => 'Προηγούμενα περιστατικά', - 'previous_week' => 'Προηγούμενη εβδομάδα', - 'next_week' => 'Επόμενη εβδομάδα', - 'scheduled' => 'Προγραμματισμένη Συντήρηση', - 'scheduled_at' => ', προγραμματισμένη :timestamp', - 'status' => [ - 0 => 'Προγραμματίστηκε', // TODO: Hopefully remove this. - 1 => 'Διερευνάται', - 2 => 'Προσδιορίστηκε', - 3 => 'Παρακολούθηση', - 4 => 'Διορθωμένο', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Το σύστημα βρίσκεται σε λειτουργία[2,Inf] Όλα τα συστήματα βρίσκονται σε λειτουργία', - 'bad' => '[0,1] Το σύστημα αντιμετωπίζει προβλήματα|[2,Inf] Κάποια συστήματα αντιμετωπίζουν προβλήματα', - 'major' => '[0,1] Η υπηρεσία αντιμετωπίζει μία σημαντική διακοπή|[2,Inf] Κάποια συστήματα αντιμετωπίζουν μία σημαντική διακοπή', - ], - - 'api' => [ - 'regenerate' => 'Αλλαγή κλειδιού API', - 'revoke' => 'Ακύρωση κλειδιού API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Τελευταία ώρα', - 'hourly' => 'Τελευταίες 12 ώρες', - 'weekly' => 'Εβδομάδα', - 'monthly' => 'Μήνας', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Εγγραφείτε για να λάβετε τις τελευταίες ενημερώσεις', - 'button' => 'Εγγραφή', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Εγγραφή στις ενημερώσεις μέσω email.', - 'subscribed' => 'Έχετε εγγραφεί στις ενημερώσεις μέσω email, παρακαλώ ελέγξτε το email σας για να επιβεβαιώσετε την εγγραφή σας.', - 'verified' => 'Η εγγραφή σας έχει επιβεβαιωθεί. Ευχαριστούμε!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Διαγραφή από τις ενημερώσεις μέσω email.', - 'unsubscribed' => 'Η εγγραφή σας έχει ακυρωθεί.', - 'failure' => 'Προέκυψε ένα σφάλμα σχετικά με την εγγραφή.', - 'already-subscribed' => 'Δεν ήταν δυνατή η εγγραφή του :email επειδή είναι ήδη εγγεγραμμένο.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Ενημέρωση κατάστασης στοιχείου', - 'text' => 'Η κατάσταση του στοιχείου :component_name έχει ενημερωθεί. Το στοιχείο είναι πλέον :component_human_status.\nΕυχαριστούμε, :app_name', - 'html' => '

Η κατάσταση του στοιχείου :component_name έχει ενημερωθεί. Το στοιχείο είναι πλέον :component_human_status.

Ευχαριστούμε, :app_name

', - 'tooltip-title' => 'Εγγραφείτε στις ενημερώσεις σχετικά με :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Έχετε προσκληθεί στη σελίδα ενημερώσεων της ομάδας :app_name, εγγραφείτε στον παρακάτω σύνδεσμο.\n:link\nΕυχαριστούμε, :app_name", - 'html' => '

Έχετε προσκληθεί στη σελίδα ενημερώσεων της ομάδας :app_name, εγγραφείτε στον παρακάτω σύνδεσμο.

:link

Ευχαριστούμε, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Εγγραφή', - 'username' => 'Username', - 'email' => 'E-mail', - 'password' => 'Κωδικός πρόσβασης', - 'success' => 'Ο λογαριασμός σας έχει δημιουργηθεί.', - 'failure' => 'Προέκυψε κάποιο σφάλμα σχετικά με την εγγραφή.', - ], - - 'system' => [ - 'update' => 'Μια ενημερωμένη έκδοση του Cache είναι διαθέσιμη. Δείτε πως μπορείτε να αναβαθμίσετε εδώ!', - ], - - // Modal - 'modal' => [ - 'close' => 'Κλείσιμο', - 'subscribe' => [ - 'title' => 'Εγγραφή στις ενημερώσεις στοιχείων', - 'body' => 'Συμπληρώστε το email σας για να εγγραφείτε στις ενημερώσεις αυτού του στοιχείου. Αν είστε ήδη εγγεγραμένος, τότε λαμβάνεται ήδη emails για αυτό το στοιχείο.', - 'button' => 'Εγγραφή', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'Σχετικά με αυτόν τον ιστότοπο', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/el/dashboard.php b/resources/lang/el/dashboard.php deleted file mode 100644 index 33b857e8..00000000 --- a/resources/lang/el/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Πίνακας Ελέγχου', - - // Incidents - 'incidents' => [ - 'title' => 'Περιστατικά & Πρόγραμμα', - 'incidents' => 'Περιστατικά', - 'logged' => '{0} Δεν υπάρχουν περιστατικά, καλλή δουλειά.|Έχετε καταγράψει ένα περιστατικό.|Έχετε ανάφερει :count περιστατικά.', - 'incident-create-template' => 'Δημιουργία προτύπου', - 'incident-templates' => 'Πρότυπα Περιστατικών', - 'add' => [ - 'title' => 'Αναφορά περιστατικού', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Επεξεργασία περιστατικού', - 'success' => 'Επεξεργασία περιστατικού επιτυχής.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'Αυτό το περιστατικό έχει διαγραφεί και δε θα εμφανιστή στη σελίδα κατάστασης.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Πρότυπα Περιστατικών', - 'add' => [ - 'title' => 'Δημιουργήστε ένα πρότυπο περιστατικό', - 'message' => 'Σας προτείνουμε να προσθέσετε ένα πρότυπο περιστατικό.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Επεξεργασία προτύπου', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'Το πρότυπο περιστατικό έχει διαγραφεί.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Προγραμματισμένη Συντήρηση', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Προγραμματισμένη στις :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Ομάδα', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Ρυθμίσεις', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Θέμα', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Σύνδεση', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Βοήθεια', - 'status_page' => 'Σελίδα Κατάστασης', - 'logout' => 'Έξοδος', - - // Notifications - 'notifications' => [ - 'notifications' => 'Ειδοποιήσεις', - 'awesome' => 'Φανταστικό.', - 'whoops' => 'Ούπς.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Η σελίδα κατάστασής σας είναι σχεδόν έτοιμη! Ίσως να θέλετε να κάνετε κάποιες παραμετροποιήσεις', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Δημιουργία συστατικών', - 'incident' => 'Δημιουργία περιστατικών', - 'customize' => 'Προσαρμογή', - 'team' => 'Προσθήκη χρηστών', - 'api' => 'Δημιουργία κλειδιού API', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/el/forms.php b/resources/lang/el/forms.php deleted file mode 100644 index 3eade087..00000000 --- a/resources/lang/el/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'E-mail', - 'username' => 'Username', - 'password' => 'Κωδικός πρόσβασης', - 'site_name' => 'Όνομα ιστοσελίδας', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Επιλέξτε τη ζώνη ώρας σας', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'E-mail', - 'password' => 'Κωδικός πρόσβασης', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Κατάσταση', - 'component' => 'Component', - 'message' => 'Μήνυμα', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Κατάσταση', - 'group' => 'Ομάδα', - 'description' => 'Description', - 'link' => 'Σύνδεσμος', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Μέσος όρος', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Όνομα ιστοσελίδας', - 'site-url' => 'Διεύθυνση URL ιστοσελίδας', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'E-mail', - 'password' => 'Κωδικός πρόσβασης', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Εγγραφή', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/el/pagination.php b/resources/lang/el/pagination.php deleted file mode 100644 index b8df5ddc..00000000 --- a/resources/lang/el/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Προηγούμενο', - 'next' => 'Επόμενο »', - -]; diff --git a/resources/lang/el/setup.php b/resources/lang/el/setup.php deleted file mode 100644 index 076a7dd1..00000000 --- a/resources/lang/el/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Εγκατάσταση', - 'title' => 'Εγκατάσταση του Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Ολοκλήρωση εγκατάστασης', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/el/validation.php b/resources/lang/el/validation.php deleted file mode 100644 index fb52c2f3..00000000 --- a/resources/lang/el/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/en-UD/cachet.php b/resources/lang/en-UD/cachet.php deleted file mode 100644 index 0072aa24..00000000 --- a/resources/lang/en-UD/cachet.php +++ /dev/null @@ -1,140 +0,0 @@ - [ - 'last_updated' => 'crwdns877:0crwdne877:0', - 'status' => [ - 0 => 'crwdns878:0crwdne878:0', - 1 => 'crwdns879:0crwdne879:0', - 2 => 'crwdns880:0crwdne880:0', - 3 => 'crwdns881:0crwdne881:0', - 4 => 'crwdns882:0crwdne882:0', - ], - 'group' => [ - 'other' => 'crwdns883:0crwdne883:0', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'crwdns884:0crwdne884:0', - 'past' => 'crwdns885:0crwdne885:0', - 'stickied' => 'crwdns888:0crwdne888:0', - 'scheduled' => 'crwdns1395:0crwdne1395:0', - 'scheduled_at' => 'crwdns890:0crwdne890:0', - 'posted' => 'crwdns891:0crwdne891:0', - 'posted_at' => 'crwdns1396:0crwdne1396:0', - 'status' => [ - 1 => 'crwdns892:0crwdne892:0', - 2 => 'crwdns893:0crwdne893:0', - 3 => 'crwdns894:0crwdne894:0', - 4 => 'crwdns895:0crwdne895:0', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'crwdns896:0crwdne896:0', - 1 => 'crwdns897:0crwdne897:0', - 2 => 'crwdns898:0crwdne898:0', - ], - ], - - // Service Status - 'service' => [ - 'good' => 'crwdns1437:0crwdne1437:0', - 'bad' => 'crwdns1398:0crwdne1398:0', - 'major' => 'crwdns1399:0crwdne1399:0', - ], - - 'api' => [ - 'regenerate' => 'crwdns902:0crwdne902:0', - 'revoke' => 'crwdns903:0crwdne903:0', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'crwdns904:0crwdne904:0', - 'hourly' => 'crwdns905:0crwdne905:0', - 'weekly' => 'crwdns906:0crwdne906:0', - 'monthly' => 'crwdns907:0crwdne907:0', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'crwdns908:0crwdne908:0', - 'unsubscribe' => 'crwdns1352:0crwdne1352:0', - 'button' => 'crwdns909:0crwdne909:0', - 'manage' => [ - 'no_subscriptions' => 'crwdns910:0crwdne910:0', - 'my_subscriptions' => 'crwdns911:0crwdne911:0', - 'manage_at_link' => 'crwdns1432:0crwdne1432:0', - ], - 'email' => [ - 'subscribe' => 'crwdns912:0crwdne912:0', - 'subscribed' => 'crwdns913:0crwdne913:0', - 'verified' => 'crwdns914:0crwdne914:0', - 'manage' => 'crwdns915:0crwdne915:0', - 'unsubscribe' => 'crwdns916:0crwdne916:0', - 'unsubscribed' => 'crwdns917:0crwdne917:0', - 'failure' => 'crwdns918:0crwdne918:0', - 'already-subscribed' => 'crwdns919:0crwdne919:0', - ], - ], - - 'signup' => [ - 'title' => 'crwdns931:0crwdne931:0', - 'username' => 'crwdns932:0crwdne932:0', - 'email' => 'crwdns933:0crwdne933:0', - 'password' => 'crwdns934:0crwdne934:0', - 'success' => 'crwdns935:0crwdne935:0', - 'failure' => 'crwdns936:0crwdne936:0', - ], - - 'system' => [ - 'update' => 'crwdns937:0crwdne937:0', - ], - - // Modal - 'modal' => [ - 'close' => 'crwdns938:0crwdne938:0', - 'subscribe' => [ - 'title' => 'crwdns939:0crwdne939:0', - 'body' => 'crwdns940:0crwdne940:0', - 'button' => 'crwdns941:0crwdne941:0', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'crwdns1428:0crwdne1428:0', - 'schedule' => 'crwdns1429:0crwdne1429:0', - 'subscribe' => 'crwdns1430:0crwdne1430:0', - 'overview' => 'crwdns1431:0crwdne1431:0', - ], - ], - - // Other - 'home' => 'crwdns942:0crwdne942:0', - 'powered_by' => 'crwdns944:0crwdne944:0', - 'timezone' => 'crwdns945:0crwdne945:0', - 'about_this_site' => 'crwdns946:0crwdne946:0', - 'rss-feed' => 'crwdns947:0crwdne947:0', - 'atom-feed' => 'crwdns948:0crwdne948:0', - 'feed' => 'crwdns949:0crwdne949:0', - -]; diff --git a/resources/lang/en-UD/dashboard.php b/resources/lang/en-UD/dashboard.php deleted file mode 100644 index 46ec0e9a..00000000 --- a/resources/lang/en-UD/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'crwdns950:0crwdne950:0', - 'writeable_settings' => 'crwdns951:0crwdne951:0', - - // Incidents - 'incidents' => [ - 'title' => 'crwdns1400:0crwdne1400:0', - 'incidents' => 'crwdns953:0crwdne953:0', - 'logged' => 'crwdns1441:0{0}crwdnd1441:0[1]crwdne1441:0', - 'incident-create-template' => 'crwdns955:0crwdne955:0', - 'incident-templates' => 'crwdns956:0crwdne956:0', - 'updates' => [ - 'title' => 'crwdns1402:0crwdne1402:0', - 'count' => 'crwdns1439:0{0}crwdnd1439:0[1]crwdnd1439:0[2]crwdne1439:0', - 'add' => [ - 'title' => 'crwdns1404:0crwdne1404:0', - 'success' => 'crwdns1405:0crwdne1405:0', - 'failure' => 'crwdns1406:0crwdne1406:0', - ], - 'edit' => [ - 'title' => 'crwdns1407:0crwdne1407:0', - 'success' => 'crwdns1408:0crwdne1408:0', - 'failure' => 'crwdns1409:0crwdne1409:0', - ], - ], - 'reported_by' => 'crwdns1433:0crwdne1433:0', - 'add' => [ - 'title' => 'crwdns958:0crwdne958:0', - 'success' => 'crwdns959:0crwdne959:0', - 'failure' => 'crwdns960:0crwdne960:0', - ], - 'edit' => [ - 'title' => 'crwdns961:0crwdne961:0', - 'success' => 'crwdns962:0crwdne962:0', - 'failure' => 'crwdns963:0crwdne963:0', - ], - 'delete' => [ - 'success' => 'crwdns964:0crwdne964:0', - 'failure' => 'crwdns965:0crwdne965:0', - ], - - // Incident templates - 'templates' => [ - 'title' => 'crwdns968:0crwdne968:0', - 'add' => [ - 'title' => 'crwdns969:0crwdne969:0', - 'message' => 'crwdns1443:0crwdne1443:0', - 'success' => 'crwdns971:0crwdne971:0', - 'failure' => 'crwdns972:0crwdne972:0', - ], - 'edit' => [ - 'title' => 'crwdns973:0crwdne973:0', - 'success' => 'crwdns974:0crwdne974:0', - 'failure' => 'crwdns975:0crwdne975:0', - ], - 'delete' => [ - 'success' => 'crwdns976:0crwdne976:0', - 'failure' => 'crwdns977:0crwdne977:0', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'crwdns1410:0crwdne1410:0', - 'logged' => 'crwdns1440:0{0}crwdnd1440:0[1]crwdne1440:0', - 'scheduled_at' => 'crwdns980:0crwdne980:0', - 'add' => [ - 'title' => 'crwdns1412:0crwdne1412:0', - 'success' => 'crwdns1413:0crwdne1413:0', - 'failure' => 'crwdns1414:0crwdne1414:0', - ], - 'edit' => [ - 'title' => 'crwdns1415:0crwdne1415:0', - 'success' => 'crwdns1416:0crwdne1416:0', - 'failure' => 'crwdns1417:0crwdne1417:0', - ], - 'delete' => [ - 'success' => 'crwdns1418:0crwdne1418:0', - 'failure' => 'crwdns1419:0crwdne1419:0', - ], - ], - - // Components - 'components' => [ - 'components' => 'crwdns989:0crwdne989:0', - 'component_statuses' => 'crwdns990:0crwdne990:0', - 'listed_group' => 'crwdns991:0crwdne991:0', - 'add' => [ - 'title' => 'crwdns992:0crwdne992:0', - 'message' => 'crwdns993:0crwdne993:0', - 'success' => 'crwdns994:0crwdne994:0', - 'failure' => 'crwdns995:0crwdne995:0', - ], - 'edit' => [ - 'title' => 'crwdns996:0crwdne996:0', - 'success' => 'crwdns997:0crwdne997:0', - 'failure' => 'crwdns998:0crwdne998:0', - ], - 'delete' => [ - 'success' => 'crwdns999:0crwdne999:0', - 'failure' => 'crwdns1000:0crwdne1000:0', - ], - - // Component groups - 'groups' => [ - 'groups' => 'crwdns1001:0crwdne1001:0', - 'no_components' => 'crwdns1002:0crwdne1002:0', - 'add' => [ - 'title' => 'crwdns1003:0crwdne1003:0', - 'success' => 'crwdns1004:0crwdne1004:0', - 'failure' => 'crwdns1005:0crwdne1005:0', - ], - 'edit' => [ - 'title' => 'crwdns1006:0crwdne1006:0', - 'success' => 'crwdns1007:0crwdne1007:0', - 'failure' => 'crwdns1008:0crwdne1008:0', - ], - 'delete' => [ - 'success' => 'crwdns1009:0crwdne1009:0', - 'failure' => 'crwdns1010:0crwdne1010:0', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'crwdns1011:0crwdne1011:0', - 'add' => [ - 'title' => 'crwdns1012:0crwdne1012:0', - 'message' => 'crwdns1013:0crwdne1013:0', - 'success' => 'crwdns1014:0crwdne1014:0', - 'failure' => 'crwdns1015:0crwdne1015:0', - ], - 'edit' => [ - 'title' => 'crwdns1016:0crwdne1016:0', - 'success' => 'crwdns1017:0crwdne1017:0', - 'failure' => 'crwdns1018:0crwdne1018:0', - ], - 'delete' => [ - 'success' => 'crwdns1019:0crwdne1019:0', - 'failure' => 'crwdns1020:0crwdne1020:0', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'crwdns1021:0crwdne1021:0', - 'description' => 'crwdns1022:0crwdne1022:0', - 'description_disabled' => 'crwdns1420:0crwdne1420:0', - 'verified' => 'crwdns1023:0crwdne1023:0', - 'not_verified' => 'crwdns1024:0crwdne1024:0', - 'subscriber' => 'crwdns1025:0crwdne1025:0', - 'no_subscriptions' => 'crwdns1026:0crwdne1026:0', - 'global' => 'crwdns1421:0crwdne1421:0', - 'add' => [ - 'title' => 'crwdns1027:0crwdne1027:0', - 'success' => 'crwdns1028:0crwdne1028:0', - 'failure' => 'crwdns1029:0crwdne1029:0', - 'help' => 'crwdns1030:0crwdne1030:0', - ], - 'edit' => [ - 'title' => 'crwdns1031:0crwdne1031:0', - 'success' => 'crwdns1032:0crwdne1032:0', - 'failure' => 'crwdns1033:0crwdne1033:0', - ], - ], - - // Team - 'team' => [ - 'team' => 'crwdns1034:0crwdne1034:0', - 'member' => 'crwdns1035:0crwdne1035:0', - 'profile' => 'crwdns1036:0crwdne1036:0', - 'description' => 'crwdns1325:0crwdne1325:0', - 'add' => [ - 'title' => 'crwdns1038:0crwdne1038:0', - 'success' => 'crwdns1039:0crwdne1039:0', - 'failure' => 'crwdns1040:0crwdne1040:0', - ], - 'edit' => [ - 'title' => 'crwdns1041:0crwdne1041:0', - 'success' => 'crwdns1042:0crwdne1042:0', - 'failure' => 'crwdns1043:0crwdne1043:0', - ], - 'delete' => [ - 'success' => 'crwdns1044:0crwdne1044:0', - 'failure' => 'crwdns1045:0crwdne1045:0', - ], - 'invite' => [ - 'title' => 'crwdns1046:0crwdne1046:0', - 'success' => 'crwdns1047:0crwdne1047:0', - 'failure' => 'crwdns1048:0crwdne1048:0', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'crwdns1049:0crwdne1049:0', - 'app-setup' => [ - 'app-setup' => 'crwdns1050:0crwdne1050:0', - 'images-only' => 'crwdns1051:0crwdne1051:0', - 'too-big' => 'crwdns1052:0crwdne1052:0', - ], - 'analytics' => [ - 'analytics' => 'crwdns1053:0crwdne1053:0', - ], - 'log' => [ - 'log' => 'crwdns1054:0crwdne1054:0', - ], - 'localization' => [ - 'localization' => 'crwdns1055:0crwdne1055:0', - ], - 'customization' => [ - 'customization' => 'crwdns1056:0crwdne1056:0', - 'header' => 'crwdns1057:0crwdne1057:0', - 'footer' => 'crwdns1058:0crwdne1058:0', - ], - 'mail' => [ - 'mail' => 'crwdns1059:0crwdne1059:0', - 'test' => 'crwdns1060:0crwdne1060:0', - 'email' => [ - 'subject' => 'crwdns1061:0crwdne1061:0', - 'body' => 'crwdns1062:0crwdne1062:0', - ], - ], - 'security' => [ - 'security' => 'crwdns1063:0crwdne1063:0', - 'two-factor' => 'crwdns1064:0crwdne1064:0', - ], - 'stylesheet' => [ - 'stylesheet' => 'crwdns1065:0crwdne1065:0', - ], - 'theme' => [ - 'theme' => 'crwdns1066:0crwdne1066:0', - ], - 'edit' => [ - 'success' => 'crwdns1067:0crwdne1067:0', - 'failure' => 'crwdns1068:0crwdne1068:0', - ], - 'credits' => [ - 'credits' => 'crwdns1069:0crwdne1069:0', - 'contributors' => 'crwdns1070:0crwdne1070:0', - 'license' => 'crwdns1071:0%20Ccrwdnd1071:0%20crwdne1071:0', - 'backers-title' => 'crwdns1072:0crwdne1072:0', - 'backers' => 'crwdns1073:0crwdne1073:0', - 'thank-you' => 'crwdns1074:0crwdne1074:0', - ], - ], - - // Login - 'login' => [ - 'login' => 'crwdns1075:0crwdne1075:0', - 'logged_in' => 'crwdns1076:0crwdne1076:0', - 'welcome' => 'crwdns1077:0crwdne1077:0', - 'two-factor' => 'crwdns1078:0crwdne1078:0', - ], - - // Sidebar footer - 'help' => 'crwdns1079:0crwdne1079:0', - 'status_page' => 'crwdns1080:0crwdne1080:0', - 'logout' => 'crwdns1081:0crwdne1081:0', - - // Notifications - 'notifications' => [ - 'notifications' => 'crwdns1082:0crwdne1082:0', - 'awesome' => 'crwdns1083:0crwdne1083:0', - 'whoops' => 'crwdns1084:0crwdne1084:0', - ], - - // Widgets - 'widgets' => [ - 'support' => 'crwdns1085:0crwdne1085:0', - 'support_subtitle' => 'crwdns1086:0crwdne1086:0', - 'news' => 'crwdns1087:0crwdne1087:0', - 'news_subtitle' => 'crwdns1088:0crwdne1088:0', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'crwdns1089:0crwdne1089:0', - 'message' => 'crwdns1090:0crwdne1090:0', - 'close' => 'crwdns1091:0crwdne1091:0', - 'steps' => [ - 'component' => 'crwdns1092:0crwdne1092:0', - 'incident' => 'crwdns1093:0crwdne1093:0', - 'customize' => 'crwdns1094:0crwdne1094:0', - 'team' => 'crwdns1095:0crwdne1095:0', - 'api' => 'crwdns1096:0crwdne1096:0', - 'two-factor' => 'crwdns1097:0crwdne1097:0', - ], - ], - -]; diff --git a/resources/lang/en-UD/forms.php b/resources/lang/en-UD/forms.php deleted file mode 100644 index 36c814b0..00000000 --- a/resources/lang/en-UD/forms.php +++ /dev/null @@ -1,248 +0,0 @@ - [ - 'email' => 'crwdns1098:0crwdne1098:0', - 'username' => 'crwdns1099:0crwdne1099:0', - 'password' => 'crwdns1100:0crwdne1100:0', - 'site_name' => 'crwdns1101:0crwdne1101:0', - 'site_domain' => 'crwdns1102:0crwdne1102:0', - 'site_timezone' => 'crwdns1103:0crwdne1103:0', - 'site_locale' => 'crwdns1104:0crwdne1104:0', - 'enable_google2fa' => 'crwdns1105:0crwdne1105:0', - 'cache_driver' => 'crwdns1106:0crwdne1106:0', - 'queue_driver' => 'crwdns1107:0crwdne1107:0', - 'session_driver' => 'crwdns1108:0crwdne1108:0', - 'mail_driver' => 'crwdns1109:0crwdne1109:0', - 'mail_host' => 'crwdns1110:0crwdne1110:0', - 'mail_address' => 'crwdns1111:0crwdne1111:0', - 'mail_username' => 'crwdns1112:0crwdne1112:0', - 'mail_password' => 'crwdns1113:0crwdne1113:0', - ], - - // Login form fields - 'login' => [ - 'login' => 'crwdns1114:0crwdne1114:0', - 'email' => 'crwdns1115:0crwdne1115:0', - 'password' => 'crwdns1116:0crwdne1116:0', - '2fauth' => 'crwdns1117:0crwdne1117:0', - 'invalid' => 'crwdns1118:0crwdne1118:0', - 'invalid-token' => 'crwdns1119:0crwdne1119:0', - 'cookies' => 'crwdns1120:0crwdne1120:0', - 'rate-limit' => 'crwdns1121:0crwdne1121:0', - 'remember_me' => 'crwdns1122:0crwdne1122:0', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'crwdns1123:0crwdne1123:0', - 'status' => 'crwdns1124:0crwdne1124:0', - 'component' => 'crwdns1125:0crwdne1125:0', - 'component_status' => 'crwdns1425:0crwdne1425:0', - 'message' => 'crwdns1126:0crwdne1126:0', - 'message-help' => 'crwdns1127:0crwdne1127:0', - 'occurred_at' => 'crwdns1128:0crwdne1128:0', - 'notify_subscribers' => 'crwdns1129:0crwdne1129:0', - 'notify_disabled' => 'crwdns1426:0crwdne1426:0', - 'visibility' => 'crwdns1130:0crwdne1130:0', - 'stick_status' => 'crwdns1131:0crwdne1131:0', - 'stickied' => 'crwdns1132:0crwdne1132:0', - 'not_stickied' => 'crwdns1133:0crwdne1133:0', - 'public' => 'crwdns1134:0crwdne1134:0', - 'logged_in_only' => 'crwdns1135:0crwdne1135:0', - 'templates' => [ - 'name' => 'crwdns1136:0crwdne1136:0', - 'template' => 'crwdns1137:0crwdne1137:0', - 'twig' => 'crwdns1138:0crwdne1138:0', - ], - ], - - 'schedules' => [ - 'name' => 'crwdns1139:0crwdne1139:0', - 'status' => 'crwdns1140:0crwdne1140:0', - 'message' => 'crwdns1141:0crwdne1141:0', - 'message-help' => 'crwdns1142:0crwdne1142:0', - 'scheduled_at' => 'crwdns1143:0crwdne1143:0', - 'completed_at' => 'crwdns1144:0crwdne1144:0', - 'templates' => [ - 'name' => 'crwdns1145:0crwdne1145:0', - 'template' => 'crwdns1146:0crwdne1146:0', - 'twig' => 'crwdns1147:0crwdne1147:0', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'crwdns1148:0crwdne1148:0', - 'status' => 'crwdns1149:0crwdne1149:0', - 'group' => 'crwdns1150:0crwdne1150:0', - 'description' => 'crwdns1151:0crwdne1151:0', - 'link' => 'crwdns1152:0crwdne1152:0', - 'tags' => 'crwdns1153:0crwdne1153:0', - 'tags-help' => 'crwdns1154:0crwdne1154:0', - 'enabled' => 'crwdns1155:0crwdne1155:0', - - 'groups' => [ - 'name' => 'crwdns1156:0crwdne1156:0', - 'collapsing' => 'crwdns1157:0crwdne1157:0', - 'visible' => 'crwdns1158:0crwdne1158:0', - 'collapsed' => 'crwdns1159:0crwdne1159:0', - 'collapsed_incident' => 'crwdns1160:0crwdne1160:0', - 'visibility' => 'crwdns1161:0crwdne1161:0', - 'visibility_public' => 'crwdns1162:0crwdne1162:0', - 'visibility_authenticated' => 'crwdns1163:0crwdne1163:0', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'crwdns1164:0crwdne1164:0', - 'description' => 'crwdns1165:0crwdne1165:0', - 'start_at' => 'crwdns1166:0crwdne1166:0', - 'timezone' => 'crwdns1167:0crwdne1167:0', - 'schedule_frequency' => 'crwdns1168:0crwdne1168:0', - 'completion_latency' => 'crwdns1169:0crwdne1169:0', - 'group' => 'crwdns1170:0crwdne1170:0', - 'active' => 'crwdns1171:0crwdne1171:0', - 'groups' => [ - 'name' => 'crwdns1172:0crwdne1172:0', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'crwdns1173:0crwdne1173:0', - 'suffix' => 'crwdns1174:0crwdne1174:0', - 'description' => 'crwdns1175:0crwdne1175:0', - 'description-help' => 'crwdns1176:0crwdne1176:0', - 'display-chart' => 'crwdns1177:0crwdne1177:0', - 'default-value' => 'crwdns1178:0crwdne1178:0', - 'calc_type' => 'crwdns1179:0crwdne1179:0', - 'type_sum' => 'crwdns1180:0crwdne1180:0', - 'type_avg' => 'crwdns1181:0crwdne1181:0', - 'places' => 'crwdns1182:0crwdne1182:0', - 'default_view' => 'crwdns1183:0crwdne1183:0', - 'threshold' => 'crwdns1184:0crwdne1184:0', - 'visibility' => 'crwdns1185:0crwdne1185:0', - 'visibility_authenticated' => 'crwdns1186:0crwdne1186:0', - 'visibility_public' => 'crwdns1187:0crwdne1187:0', - 'visibility_hidden' => 'crwdns1188:0crwdne1188:0', - - 'points' => [ - 'value' => 'crwdns1189:0crwdne1189:0', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'crwdns1190:0crwdne1190:0', - 'site-url' => 'crwdns1191:0crwdne1191:0', - 'display-graphs' => 'crwdns1192:0crwdne1192:0', - 'about-this-page' => 'crwdns1193:0crwdne1193:0', - 'days-of-incidents' => 'crwdns1194:0crwdne1194:0', - 'time_before_refresh' => 'crwdns1434:0crwdne1434:0', - 'major_outage_rate' => 'crwdns1444:0crwdne1444:0', - 'banner' => 'crwdns1195:0crwdne1195:0', - 'banner-help' => 'crwdns1435:0crwdne1435:0', - 'subscribers' => 'crwdns1197:0crwdne1197:0', - 'suppress_notifications_in_maintenance' => 'crwdns1427:0crwdne1427:0', - 'skip_subscriber_verification' => 'crwdns1198:0crwdne1198:0', - 'automatic_localization' => 'crwdns1199:0crwdne1199:0', - 'enable_external_dependencies' => 'crwdns1200:0crwdne1200:0', - 'show_timezone' => 'crwdns1436:0crwdne1436:0', - 'only_disrupted_days' => 'crwdns1202:0crwdne1202:0', - ], - 'analytics' => [ - 'analytics_google' => 'crwdns1203:0crwdne1203:0', - 'analytics_gosquared' => 'crwdns1204:0crwdne1204:0', - 'analytics_piwik_url' => 'crwdns1205:0crwdne1205:0', - 'analytics_piwik_siteid' => 'crwdns1206:0crwdne1206:0', - ], - 'localization' => [ - 'site-timezone' => 'crwdns1207:0crwdne1207:0', - 'site-locale' => 'crwdns1208:0crwdne1208:0', - 'date-format' => 'crwdns1209:0crwdne1209:0', - 'incident-date-format' => 'crwdns1210:0crwdne1210:0', - ], - 'security' => [ - 'allowed-domains' => 'crwdns1211:0crwdne1211:0', - 'allowed-domains-help' => 'crwdns1212:0crwdne1212:0', - 'always-authenticate' => 'crwdns1445:0crwdne1445:0', - 'always-authenticate-help' => 'crwdns1446:0crwdne1446:0', - ], - 'stylesheet' => [ - 'custom-css' => 'crwdns1213:0crwdne1213:0', - ], - 'theme' => [ - 'background-color' => 'crwdns1214:0crwdne1214:0', - 'background-fills' => 'crwdns1215:0crwdne1215:0', - 'banner-background-color' => 'crwdns1216:0crwdne1216:0', - 'banner-padding' => 'crwdns1217:0crwdne1217:0', - 'fullwidth-banner' => 'crwdns1442:0crwdne1442:0', - 'text-color' => 'crwdns1219:0crwdne1219:0', - 'dashboard-login' => 'crwdns1220:0crwdne1220:0', - 'reds' => 'crwdns1221:0crwdne1221:0', - 'blues' => 'crwdns1222:0crwdne1222:0', - 'greens' => 'crwdns1223:0crwdne1223:0', - 'yellows' => 'crwdns1224:0crwdne1224:0', - 'oranges' => 'crwdns1225:0crwdne1225:0', - 'metrics' => 'crwdns1226:0crwdne1226:0', - 'links' => 'crwdns1227:0crwdne1227:0', - ], - ], - - 'user' => [ - 'username' => 'crwdns1228:0crwdne1228:0', - 'email' => 'crwdns1229:0crwdne1229:0', - 'password' => 'crwdns1230:0crwdne1230:0', - 'api-token' => 'crwdns1231:0crwdne1231:0', - 'api-token-help' => 'crwdns1232:0crwdne1232:0', - 'gravatar' => 'crwdns1233:0crwdne1233:0', - 'user_level' => 'crwdns1234:0crwdne1234:0', - 'levels' => [ - 'admin' => 'crwdns1235:0crwdne1235:0', - 'user' => 'crwdns1236:0crwdne1236:0', - ], - '2fa' => [ - 'help' => 'crwdns1237:0crwdne1237:0', - ], - 'team' => [ - 'description' => 'crwdns1238:0crwdne1238:0', - 'email' => 'crwdns1423:0crwdne1423:0', - ], - ], - - 'general' => [ - 'timezone' => 'crwdns1240:0crwdne1240:0', - ], - - // Buttons - 'add' => 'crwdns1241:0crwdne1241:0', - 'save' => 'crwdns1242:0crwdne1242:0', - 'update' => 'crwdns1243:0crwdne1243:0', - 'create' => 'crwdns1244:0crwdne1244:0', - 'edit' => 'crwdns1245:0crwdne1245:0', - 'delete' => 'crwdns1246:0crwdne1246:0', - 'submit' => 'crwdns1247:0crwdne1247:0', - 'cancel' => 'crwdns1248:0crwdne1248:0', - 'remove' => 'crwdns1249:0crwdne1249:0', - 'invite' => 'crwdns1250:0crwdne1250:0', - 'signup' => 'crwdns1251:0crwdne1251:0', - 'manage_updates' => 'crwdns1424:0crwdne1424:0', - - // Other - 'optional' => 'crwdns1252:0crwdne1252:0', -]; diff --git a/resources/lang/en-UD/notifications.php b/resources/lang/en-UD/notifications.php deleted file mode 100644 index 5bbb05e7..00000000 --- a/resources/lang/en-UD/notifications.php +++ /dev/null @@ -1,108 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'crwdns1354:0crwdne1354:0', - 'greeting' => 'crwdns1355:0crwdne1355:0', - 'content' => 'crwdns1356:0crwdne1356:0', - 'action' => 'crwdns1357:0crwdne1357:0', - ], - 'slack' => [ - 'title' => 'crwdns1358:0crwdne1358:0', - 'content' => 'crwdns1359:0crwdne1359:0', - ], - 'sms' => [ - 'content' => 'crwdns1360:0crwdne1360:0', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'crwdns1361:0crwdne1361:0', - 'greeting' => 'crwdns1362:0crwdne1362:0', - 'content' => 'crwdns1363:0crwdne1363:0', - 'action' => 'crwdns1364:0crwdne1364:0', - ], - 'slack' => [ - 'title' => 'crwdns1365:0crwdne1365:0', - 'content' => 'crwdns1366:0crwdne1366:0', - ], - 'sms' => [ - 'content' => 'crwdns1367:0crwdne1367:0', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'crwdns1368:0crwdne1368:0', - 'content' => 'crwdns1369:0crwdne1369:0', - 'title' => 'crwdns1370:0crwdne1370:0', - 'action' => 'crwdns1371:0crwdne1371:0', - ], - 'slack' => [ - 'title' => 'crwdns1372:0crwdne1372:0', - 'content' => 'crwdns1373:0crwdne1373:0', - ], - 'sms' => [ - 'content' => 'crwdns1374:0crwdne1374:0', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'crwdns1375:0crwdne1375:0', - 'content' => 'crwdns1376:0crwdne1376:0', - 'title' => 'crwdns1377:0crwdne1377:0', - 'action' => 'crwdns1378:0crwdne1378:0', - ], - 'slack' => [ - 'title' => 'crwdns1379:0crwdne1379:0', - 'content' => 'crwdns1380:0crwdne1380:0', - ], - 'sms' => [ - 'content' => 'crwdns1381:0crwdne1381:0', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'crwdns1382:0crwdne1382:0', - 'content' => 'crwdns1383:0crwdne1383:0', - 'title' => 'crwdns1384:0crwdne1384:0', - 'action' => 'crwdns1385:0crwdne1385:0', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'crwdns1386:0crwdne1386:0', - 'content' => 'crwdns1387:0crwdne1387:0', - 'title' => 'crwdns1388:0crwdne1388:0', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'crwdns1389:0crwdne1389:0', - 'content' => 'crwdns1390:0crwdne1390:0', - 'title' => 'crwdns1391:0crwdne1391:0', - 'action' => 'crwdns1392:0crwdne1392:0', - ], - ], - ], -]; diff --git a/resources/lang/en-UD/pagination.php b/resources/lang/en-UD/pagination.php deleted file mode 100644 index 32588206..00000000 --- a/resources/lang/en-UD/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'crwdns1393:0crwdne1393:0', - 'next' => 'crwdns1394:0crwdne1394:0', - -]; diff --git a/resources/lang/en-UD/setup.php b/resources/lang/en-UD/setup.php deleted file mode 100644 index 4f7bbbee..00000000 --- a/resources/lang/en-UD/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'crwdns1255:0crwdne1255:0', - 'title' => 'crwdns1256:0crwdne1256:0', - 'service_details' => 'crwdns1257:0crwdne1257:0', - 'env_setup' => 'crwdns1258:0crwdne1258:0', - 'status_page_setup' => 'crwdns1259:0crwdne1259:0', - 'show_support' => 'crwdns1260:0crwdne1260:0', - 'admin_account' => 'crwdns1261:0crwdne1261:0', - 'complete_setup' => 'crwdns1262:0crwdne1262:0', - 'completed' => 'crwdns1263:0crwdne1263:0', - 'finish_setup' => 'crwdns1264:0crwdne1264:0', -]; diff --git a/resources/lang/en-UD/validation.php b/resources/lang/en-UD/validation.php deleted file mode 100644 index 8a727c38..00000000 --- a/resources/lang/en-UD/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'crwdns1265:0crwdne1265:0', - 'active_url' => 'crwdns1266:0crwdne1266:0', - 'after' => 'crwdns1267:0crwdne1267:0', - 'alpha' => 'crwdns1268:0crwdne1268:0', - 'alpha_dash' => 'crwdns1269:0crwdne1269:0', - 'alpha_num' => 'crwdns1270:0crwdne1270:0', - 'array' => 'crwdns1271:0crwdne1271:0', - 'before' => 'crwdns1272:0crwdne1272:0', - 'between' => [ - 'numeric' => 'crwdns1273:0crwdne1273:0', - 'file' => 'crwdns1274:0crwdne1274:0', - 'string' => 'crwdns1275:0crwdne1275:0', - 'array' => 'crwdns1276:0crwdne1276:0', - ], - 'boolean' => 'crwdns1277:0crwdne1277:0', - 'confirmed' => 'crwdns1278:0crwdne1278:0', - 'date' => 'crwdns1279:0crwdne1279:0', - 'date_format' => 'crwdns1280:0crwdne1280:0', - 'different' => 'crwdns1281:0crwdne1281:0', - 'digits' => 'crwdns1282:0crwdne1282:0', - 'digits_between' => 'crwdns1283:0crwdne1283:0', - 'email' => 'crwdns1284:0crwdne1284:0', - 'exists' => 'crwdns1285:0crwdne1285:0', - 'distinct' => 'crwdns1286:0crwdne1286:0', - 'filled' => 'crwdns1287:0crwdne1287:0', - 'image' => 'crwdns1288:0crwdne1288:0', - 'in' => 'crwdns1289:0crwdne1289:0', - 'in_array' => 'crwdns1290:0crwdne1290:0', - 'integer' => 'crwdns1291:0crwdne1291:0', - 'ip' => 'crwdns1292:0crwdne1292:0', - 'json' => 'crwdns1293:0crwdne1293:0', - 'max' => [ - 'numeric' => 'crwdns1294:0crwdne1294:0', - 'file' => 'crwdns1295:0crwdne1295:0', - 'string' => 'crwdns1296:0crwdne1296:0', - 'array' => 'crwdns1297:0crwdne1297:0', - ], - 'mimes' => 'crwdns1298:0crwdne1298:0', - 'min' => [ - 'numeric' => 'crwdns1299:0crwdne1299:0', - 'file' => 'crwdns1300:0crwdne1300:0', - 'string' => 'crwdns1301:0crwdne1301:0', - 'array' => 'crwdns1302:0crwdne1302:0', - ], - 'not_in' => 'crwdns1303:0crwdne1303:0', - 'numeric' => 'crwdns1304:0crwdne1304:0', - 'present' => 'crwdns1305:0crwdne1305:0', - 'regex' => 'crwdns1306:0crwdne1306:0', - 'required' => 'crwdns1307:0crwdne1307:0', - 'required_if' => 'crwdns1308:0crwdne1308:0', - 'required_unless' => 'crwdns1309:0crwdne1309:0', - 'required_with' => 'crwdns1310:0crwdne1310:0', - 'required_with_all' => 'crwdns1311:0crwdne1311:0', - 'required_without' => 'crwdns1312:0crwdne1312:0', - 'required_without_all' => 'crwdns1313:0crwdne1313:0', - 'same' => 'crwdns1314:0crwdne1314:0', - 'size' => [ - 'numeric' => 'crwdns1315:0crwdne1315:0', - 'file' => 'crwdns1316:0crwdne1316:0', - 'string' => 'crwdns1317:0crwdne1317:0', - 'array' => 'crwdns1318:0crwdne1318:0', - ], - 'string' => 'crwdns1319:0crwdne1319:0', - 'timezone' => 'crwdns1320:0crwdne1320:0', - 'unique' => 'crwdns1321:0crwdne1321:0', - 'url' => 'crwdns1322:0crwdne1322:0', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'crwdns1323:0crwdne1323:0', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/en-US/cachet.php b/resources/lang/en-US/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/en-US/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/en-US/dashboard.php b/resources/lang/en-US/dashboard.php deleted file mode 100644 index a07a2e4a..00000000 --- a/resources/lang/en-US/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new Status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'Add users', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/en-US/forms.php b/resources/lang/en-US/forms.php deleted file mode 100644 index c4ba6688..00000000 --- a/resources/lang/en-US/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/en-US/notifications.php b/resources/lang/en-US/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/en-US/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/en-US/pagination.php b/resources/lang/en-US/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/en-US/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/en-US/setup.php b/resources/lang/en-US/setup.php deleted file mode 100644 index 044cf2e2..00000000 --- a/resources/lang/en-US/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/en-US/validation.php b/resources/lang/en-US/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/en-US/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/en/cachet.php b/resources/lang/en/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/en/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/en/dashboard.php b/resources/lang/en/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/en/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/en/forms.php b/resources/lang/en/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/en/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/en/notifications.php b/resources/lang/en/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/en/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/en/pagination.php b/resources/lang/en/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/en/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/en/setup.php b/resources/lang/en/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/en/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/en/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/es-ES/cachet.php b/resources/lang/es-ES/cachet.php deleted file mode 100644 index 0ff0125d..00000000 --- a/resources/lang/es-ES/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Última actualización :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operacional', - 2 => 'Problemas de rendimiento', - 3 => 'Interrupción parcial', - 4 => 'Interrupción mayor', - ], - 'group' => [ - 'other' => 'Otros componentes', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Ningún incidente reportado', - 'past' => 'Incidencias anteriores', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', programado para :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigando', - 2 => 'Identificado', - 3 => 'Observando', - 4 => 'Corregido', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1] El sistema está actualmente experimentando problemas|[2,Inf] Algunos sistemas están experimentando problemas', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerar API Key', - 'revoke' => 'Revocar API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Última hora', - 'hourly' => 'Últimas 12 horas', - 'weekly' => 'Semana', - 'monthly' => 'Mes', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Suscríbete', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notificaciones', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'Actualmente estás suscrito a todas las actualizaciones.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'Actualmente estás suscrito a las siguientes actualizaciones.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Suscríbete para recibir actualizaciones por correo electrónico.', - 'subscribed' => 'Te has subscrito a las notificaciones por correo electrónico, por favor verifica tu correo electrónico para confirmar tu subscripción.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Tu subscripción por correo electrónico ha sido confirmada. Gracias!', - 'manage' => 'Administre su suscripción', - 'unsubscribe' => 'Darse de baja de alertas.', - 'unsubscribed' => 'Tu subscripción de correo electrónico ha sido cancelada.', - 'failure' => 'Algo salió mal con la subscripción.', - 'already-subscribed' => 'No se puede suscribir :email porque ya esta suscrito.', - ], - ], - - 'signup' => [ - 'title' => 'Registrarse', - 'username' => 'Nombre de usario', - 'email' => 'Correo electrónico', - 'password' => 'Contraseña', - 'success' => 'Tu cuenta ha sido creada.', - 'failure' => 'Hubo algún error al registrarse.', - ], - - 'system' => [ - 'update' => 'Hay disponible una versión de Cachet más nueva. Puedes aprender sobre cómo actualizarla aquí!', - ], - - // Modal - 'modal' => [ - 'close' => 'Cerrar', - 'subscribe' => [ - 'title' => 'Subscribirse a actualizaciones de componentes', - 'body' => 'Introduce tu dirección de correo electrónico para subscribirte a las actualizaciones de este componente. Si ya estás subscrito, ya recibirás los correos electrónicos para este componente.', - 'button' => 'Suscríbete', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Mantente informado con las últimas actualizaciones de servicio de :app.', - ], - ], - - // Other - 'home' => 'Inicio', - 'powered_by' => 'La página de estado de :app está proporcionada por Cachet.', - 'timezone' => 'Los horarios son mostrados en :timezone.', - 'about_this_site' => 'Acerca de este sitio', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Estado del Feed', - -]; diff --git a/resources/lang/es-ES/dashboard.php b/resources/lang/es-ES/dashboard.php deleted file mode 100644 index b41b10f3..00000000 --- a/resources/lang/es-ES/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Panel de Control', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidentes', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Crear plantilla', - 'incident-templates' => 'Plantillas de incidente', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Reportar incidente', - 'success' => 'Incidente agregado.', - 'failure' => 'Hubo un error agregando el incidente, por favor intente de nuevo.', - ], - 'edit' => [ - 'title' => 'Editar un incidente', - 'success' => 'Incidente actualizado.', - 'failure' => 'Hubo un error editando el incidente, por favor intente de nuevo.', - ], - 'delete' => [ - 'success' => 'El incidente se ha eliminado y no se mostrará en tu página de estado.', - 'failure' => 'El incidente no se pudo eliminar, por favor intente de nuevo.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Plantillas de incidente', - 'add' => [ - 'title' => 'Crear una plantilla de incidente', - 'message' => 'Create your first incident template.', - 'success' => 'Su nueva plantilla de incidentes ha sido creada.', - 'failure' => 'Algo salió mal con la plantilla de incidente.', - ], - 'edit' => [ - 'title' => 'Editar plantilla', - 'success' => 'La plantilla de incidente ha sido actualizada.', - 'failure' => 'Algo salió mal actualizando la plantilla de incidente', - ], - 'delete' => [ - 'success' => 'La plantilla de incidente se ha eliminado.', - 'failure' => 'La plantilla de incidente no se pudo eliminar. Por favor, inténtalo de nuevo.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Programado para :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componentes', - 'component_statuses' => 'Estatus de los componentes', - 'listed_group' => 'Agrupado bajo :nombre', - 'add' => [ - 'title' => 'Agregar componente', - 'message' => 'Deberías agregar un componente.', - 'success' => 'Componente creado.', - 'failure' => 'Algo salió mal con el componente, por favor intente de nuevo.', - ], - 'edit' => [ - 'title' => 'Editar componente', - 'success' => 'Componente actualizado.', - 'failure' => 'Algo salió mal con el componente, por favor intente de nuevo.', - ], - 'delete' => [ - 'success' => 'El componente se ha eliminado!', - 'failure' => 'El componente no pudo ser eliminado, por favor, inténtelo de nuevo.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Grupo de componente|Grupos de componente', - 'no_components' => 'Usted debería agregar un grupo de componentes.', - 'add' => [ - 'title' => 'Agregar un grupo de componentes', - 'success' => 'Grupo de componentes agregado.', - 'failure' => 'Algo salió mal con el componente, por favor intente de nuevo.', - ], - 'edit' => [ - 'title' => 'Editar un grupo de componentes', - 'success' => 'Grupo de componentes actualizado.', - 'failure' => 'Algo salió mal con el componente, por favor intente de nuevo.', - ], - 'delete' => [ - 'success' => 'El grupo de componentes se ha eliminado!', - 'failure' => 'El grupo de componentes no pudo ser eliminado, por favor, inténtelo de nuevo.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Métricas', - 'add' => [ - 'title' => 'Crear una métrica o indicador', - 'message' => 'Deberías añadir una métrica.', - 'success' => 'Métrica creada.', - 'failure' => 'Algo salió mal con la métrica, por favor, inténtelo de nuevo.', - ], - 'edit' => [ - 'title' => 'Editar una métrica', - 'success' => 'Métrica actualizada.', - 'failure' => 'Algo salió mal con la métrica, por favor, inténtelo de nuevo.', - ], - 'delete' => [ - 'success' => 'La métrica se ha eliminado y no se mostrará más en tu página de estado.', - 'failure' => 'La métrica no pudo ser eliminada, por favor, inténtelo de nuevo.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Suscriptores', - 'description' => 'Los suscriptores recibirán actualizaciones por correo electrónico cuando se creen incidentes o se actualicen componentes.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verificado', - 'not_verified' => 'No confirmado', - 'subscriber' => ':email, suscrito :date', - 'no_subscriptions' => 'Suscrito a todas las actualizaciones', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Agregar un nuevo subscriptor', - 'success' => 'Subscriptor agregado.', - 'failure' => 'Algo salió mal al agregar el suscriptor, por favor, inténtelo de nuevo.', - 'help' => 'Agregue cada subscriptor en una línea nueva.', - ], - 'edit' => [ - 'title' => 'Actualizar subscriptor', - 'success' => 'Subscriptor actualizado.', - 'failure' => 'Algo salió mal al editar el suscriptor, por favor, inténtelo de nuevo.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Equipo', - 'member' => 'Miembro', - 'profile' => 'Perfil', - 'description' => 'Los miembros del equipo será capaces de añadir, modificar y editar componentes e incidentes.', - 'add' => [ - 'title' => 'Añadir a un nuevo miembro de equipo', - 'success' => 'Miembro del equipo agregado.', - 'failure' => 'No se pudo agregar el miembro del equipo, por favor vuelva a intentarlo.', - ], - 'edit' => [ - 'title' => 'Actualizar perfil', - 'success' => 'Perfil actualizado.', - 'failure' => 'Algo salió mal actualizando el perfil, por favor intente de nuevo.', - ], - 'delete' => [ - 'success' => 'El miembro del equipo ha sido eliminado y ya no tendrán acceso al Pane de Control!', - 'failure' => 'No se pudo agregar el miembro del equipo, por favor vuelva a intentarlo.', - ], - 'invite' => [ - 'title' => 'Invitar a un nuevo miembro al equipo', - 'success' => 'Se ha enviado una invitación', - 'failure' => 'La invitación no pudo ser enviada, por favor intente de nuevo.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Ajustes', - 'app-setup' => [ - 'app-setup' => 'Configuración de aplicación', - 'images-only' => 'Sólo puedes subir imágenes.', - 'too-big' => 'El archivo subido es demasiado grande. Sube una imagen con tamaño menor a: tamaño', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localización', - ], - 'customization' => [ - 'customization' => 'Personalización', - 'header' => 'Cabecera HTML personalizada', - 'footer' => 'Pie HTML personalizado', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Seguridad', - 'two-factor' => 'Usuarios sin autenticación de dos factores', - ], - 'stylesheet' => [ - 'stylesheet' => 'Hoja de estilo', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Configuración guardada.', - 'failure' => 'La configuración no se podido guardar.', - ], - 'credits' => [ - 'credits' => 'Créditos', - 'contributors' => 'Colaboradores', - 'license' => 'Cachet es un proyecto de código libre bajo la licencia BSD-3, liberado por Alt Three Services Limited.', - 'backers-title' => 'Patrocinadores', - 'backers' => 'Si desea apoyar futuros desarrollos, ingrese a la campaña de Cachet Patreon.', - 'thank-you' => 'Gracias a todos y cada uno de los :count colaboradores.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Iniciar Sesión', - 'logged_in' => 'Estás conectado.', - 'welcome' => '¡Bienvenido!', - 'two-factor' => 'Por favor ingresa tu token.', - ], - - // Sidebar footer - 'help' => 'Ayuda', - 'status_page' => 'Página de estado', - 'logout' => 'Salir', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notificaciones', - 'awesome' => 'Excelente.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Apoye Cachet', - 'support_subtitle' => '¡Visite nuestro proyecto en la página de Patreon!', - 'news' => 'Últimas noticias', - 'news_subtitle' => 'Obtener las actualizaciones más recientes', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Bienvenido a tu página de estado!', - 'message' => 'La página de estado está casi lista! Tal vez quieras configurar estos ajustes adicionales', - 'close' => 'Llévame directamente a mi dashboard', - 'steps' => [ - 'component' => 'Crear componentes', - 'incident' => 'Crear incidentes', - 'customize' => 'Personalizar', - 'team' => 'Agregar Usuarios', - 'api' => 'Generar token API', - 'two-factor' => 'Autenticación de dos factores', - ], - ], - -]; diff --git a/resources/lang/es-ES/forms.php b/resources/lang/es-ES/forms.php deleted file mode 100644 index 3a9f11a0..00000000 --- a/resources/lang/es-ES/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Correo electrónico', - 'username' => 'Nombre de usario', - 'password' => 'Contraseña', - 'site_name' => 'Nombre del sitio', - 'site_domain' => 'Dominio de sitio', - 'site_timezone' => 'Selecciona tu zona horaria', - 'site_locale' => 'Selecciona tu idioma', - 'enable_google2fa' => 'Habilitar la verificación en dos pasos de Google', - 'cache_driver' => 'Controlador de Memoria Cache', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Controlador de Sesion', - 'mail_driver' => 'Valora al conductor', - 'mail_host' => 'Host de correo', - 'mail_address' => 'Dirección de Correo Físico', - 'mail_username' => 'Nombre de usuario de correo', - 'mail_password' => 'Contraseña de correo', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nombre de usuario o dirección de correo electrónico', - 'email' => 'Correo electrónico', - 'password' => 'Contraseña', - '2fauth' => 'Código de Autenticación', - 'invalid' => 'Nombre de usuario o contraseña incorrecto', - 'invalid-token' => 'Token inválido', - 'cookies' => 'Usted debe habilitar cookies para logearse o iniciar sesion.', - 'rate-limit' => 'Límite de transferencia excedido.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nombre', - 'status' => 'Estado', - 'component' => 'Componente', - 'component_status' => 'Component Status', - 'message' => 'Mensaje', - 'message-help' => 'También puedes usar Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => '¿Notificar a los suscriptores?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Visibilidad del incidente', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Visible por el público', - 'logged_in_only' => 'Solo visible para usuarios logeados', - 'templates' => [ - 'name' => 'Nombre', - 'template' => 'Plantilla', - 'twig' => 'Las plantillas de incidentes pueden hacer uso del lenguaje de plantillas Twig.', - ], - ], - - 'schedules' => [ - 'name' => 'Nombre', - 'status' => 'Estado', - 'message' => 'Mensaje', - 'message-help' => 'También puedes usar Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Nombre', - 'template' => 'Plantilla', - 'twig' => 'Las plantillas de incidentes pueden hacer uso del lenguaje de plantillas Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nombre', - 'status' => 'Estado', - 'group' => 'Grupo', - 'description' => 'Descripción', - 'link' => 'Enlace', - 'tags' => 'Etiquetas', - 'tags-help' => 'Separado por comas.', - 'enabled' => '¿Componente habilitado?', - - 'groups' => [ - 'name' => 'Nombre', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Siempre expandido', - 'collapsed' => 'Contraer el grupo por defecto', - 'collapsed_incident' => 'Contraer el grupo, pero ampliar si hay problemas', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Nombre', - 'description' => 'Descripción', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Grupo', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nombre', - 'suffix' => 'Sufijo', - 'description' => 'Descripción', - 'description-help' => 'También puedes usar Markdown.', - 'display-chart' => '¿Mostrar gráficas en la pagina de estado?', - 'default-value' => 'Valor predeterminado', - 'calc_type' => 'Cálculo de métricas', - 'type_sum' => 'Suma', - 'type_avg' => 'Promedio', - 'places' => 'Cantidad de decimales', - 'default_view' => 'Vista predeterminada', - 'threshold' => '¿Cuántos minutos de umbral entre púntos de métrica?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Valor', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Nombre del sitio', - 'site-url' => 'URL del sitio', - 'display-graphs' => '¿Mostrar gráficas en la pagina de estado?', - 'about-this-page' => 'Sobre esta página', - 'days-of-incidents' => '¿Cuántos días de incidentes mostrar?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Imagen del banner', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => '¿Permitir a la gente inscribirse mediante noficiacion por correo electronico?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => '¿Traducir automáticamente la página de estado según el lenguaje del visitante?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Código de Google Analytics', - 'analytics_gosquared' => 'Código de GoSquared Analytics', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Id de tu sitio Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Zona horaria del sitio', - 'site-locale' => 'Idioma del sitio', - 'date-format' => 'Formato de la fecha', - 'incident-date-format' => 'Formato de fecha de incidente', - ], - 'security' => [ - 'allowed-domains' => 'Dominios permitidos', - 'allowed-domains-help' => 'Separados por coma. El dominio establecido en la configuración del sitio formará automáticamente parte de los dominios permitidos.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Hoja de estilo personalizada', - ], - 'theme' => [ - 'background-color' => 'Color de fondo', - 'background-fills' => 'Relleno del fondo (componentes, incidentes, pie)', - 'banner-background-color' => 'Color de fondo del banner', - 'banner-padding' => 'Padding del banner', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Color del texto', - 'dashboard-login' => '¿Mostrar el botón de Panel de Control en el pie?', - 'reds' => 'Rojo (usado para errores)', - 'blues' => 'Azul (usado para información)', - 'greens' => 'Verde (usado para operaciones correctas)', - 'yellows' => 'Amarillo (usado para alertas)', - 'oranges' => 'Naranja (usado para avisos)', - 'metrics' => 'Relleno de las métricas', - 'links' => 'Enlaces', - ], - ], - - 'user' => [ - 'username' => 'Nombre de usario', - 'email' => 'Correo electrónico', - 'password' => 'Contraseña', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerando tu token de API evitaras que las aplicaciones existentes puedan acceder a Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'Nivel de usuario', - 'levels' => [ - 'admin' => 'Administrador', - 'user' => 'Usuario', - ], - '2fa' => [ - 'help' => 'Habilitar autenticación de dos pasos aumenta la seguridad de tu cuenta. Necesitarás descargar Google Authenticator o una aplicación similar a su dispositivo móvil. Al iniciar sesión, te pedirá proporcionar un token generado por la aplicación.', - ], - 'team' => [ - 'description' => 'Invita a los miembros de equipo introduciendo sus direcciones de correo electrónico aquí.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Agregar', - 'save' => 'Guardar', - 'update' => 'Actualizar', - 'create' => 'Crear', - 'edit' => 'Editar', - 'delete' => 'Eliminar', - 'submit' => 'Enviar', - 'cancel' => 'Cancelar', - 'remove' => 'Remover', - 'invite' => 'Invitar', - 'signup' => 'Registrarse', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Opcional', -]; diff --git a/resources/lang/es-ES/notifications.php b/resources/lang/es-ES/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/es-ES/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/es-ES/pagination.php b/resources/lang/es-ES/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/es-ES/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/es-ES/setup.php b/resources/lang/es-ES/setup.php deleted file mode 100644 index 1438ce13..00000000 --- a/resources/lang/es-ES/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Configurar', - 'title' => 'Configurar Cachet', - 'service_details' => 'Detalles del servicio', - 'env_setup' => 'Configuracion de entorno', - 'status_page_setup' => 'Configuración de la página de estado', - 'show_support' => '¿Deseas mostrar tu apoyo a Cachet?', - 'admin_account' => 'Cuenta de administrador', - 'complete_setup' => 'Completar configuración', - 'completed' => '¡Cachet se ha configurado correctamente!', - 'finish_setup' => 'Ir a Panel de control', -]; diff --git a/resources/lang/es-ES/validation.php b/resources/lang/es-ES/validation.php deleted file mode 100644 index da4aaf08..00000000 --- a/resources/lang/es-ES/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'El :attribute debe ser aceptado.', - 'active_url' => 'El :attribute no es un enlace válido.', - 'after' => 'El :attribute debe ser una fecha después de :date.', - 'alpha' => 'El :attribute sólo puede contener letras.', - 'alpha_dash' => 'El :attribute sólo puede contener letras, números y guiones.', - 'alpha_num' => 'El :attribute sólo puede contener letras y números.', - 'array' => 'El :attribute debe ser una matriz.', - 'before' => 'El :attribute debe ser una fecha antes de :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'El :attribute debe tener entre :min y :max objetos.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'El campo :attribute tiene un valor duplicado.', - 'filled' => 'The :attribute field is required.', - 'image' => 'El :attribute debe ser una imagen.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'El campo :attribute no existe en :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'El :attribute debe ser una cadena JSON válida.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'El :attribute no puede tener más de :max objetos.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'El :attribute debe tener al menos :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'El campo :attribute debe estar presente.', - 'regex' => 'El formato :attribute es inválido.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'El campo :attribute es obligatorio a no ser que :other se encuentre en :values.', - 'required_with' => 'El campo del :attribute se requiere cuando :values es presente.', - 'required_with_all' => 'El campo del :attribute se requiere cuando :values es presente.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'El :attribute debe ser :size kilobytes.', - 'string' => 'El :attribute debe tener :size caracteres.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'El :attribute debe ser una zona válida.', - 'unique' => 'El :attribute ya ha sido usado.', - 'url' => 'El formato :attribute es inválido.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'mensaje-personalizado', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/es/cachet.php b/resources/lang/es/cachet.php deleted file mode 100644 index b12fb3b8..00000000 --- a/resources/lang/es/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Última actualización :timestamp', - 'status' => [ - 1 => 'Operacional', - 2 => 'Problemas de rendimiento', - 3 => 'Interrupción parcial', - 4 => 'Interrupción mayor', - ], - 'group' => [ - 'other' => 'Otros componentes', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Ningún incidente reportado', - 'past' => 'Incidencias anteriores', - 'previous_week' => 'Semana anterior', - 'next_week' => 'Semana siguiente', - 'scheduled' => 'Mantenimiento programado', - 'scheduled_at' => ', programado para :timestamp', - 'status' => [ - 0 => 'Programado', // TODO: Hopefully remove this. - 1 => 'Investigando', - 2 => 'Identificado', - 3 => 'Observando', - 4 => 'Corregido', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Sistema operativo|[2,Inf] Todos los sistemas están operativos', - 'bad' => '[0,1] El sistema está actualmente experimentando problemas|[2,Inf] Algunos sistemas están experimentando problemas', - 'major' => '[0,1] El servicio está experimentando una interrupción mayor|[2, Inf] Algunos sistemas están experimentando una interrupción mayor', - ], - - 'api' => [ - 'regenerate' => 'Regenerar API Key', - 'revoke' => 'Revocar API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Última hora', - 'hourly' => 'Últimas 12 horas', - 'weekly' => 'Semana', - 'monthly' => 'Mes', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Suscríbete para obtener las actualizaciones más recientes', - 'button' => 'Suscríbete', - 'manage' => [ - 'no_subscriptions' => 'Actualmente estás suscrito a todas las actualizaciones.', - 'my_subscriptions' => 'Actualmente estás suscrito a las siguientes actualizaciones.', - ], - 'email' => [ - 'subscribe' => 'Suscríbete para recibir actualizaciones por correo electrónico.', - 'subscribed' => 'Te has subscrito a las notificaciones por correo electrónico, por favor verifica tu correo electrónico para confirmar tu subscripción.', - 'verified' => 'Tu subscripción por correo electrónico ha sido confirmada. Gracias!', - 'manage' => 'Administre su suscripción', - 'unsubscribe' => 'Darse de baja de alertas.', - 'unsubscribed' => 'Tu subscripción de correo electrónico ha sido cancelada.', - 'failure' => 'Algo salió mal con la subscripción.', - 'already-subscribed' => 'No se puede suscribir :email porque ya esta suscrito.', - 'verify' => [ - 'text' => "Por favor confirme su subscripcion por correo a las actualizaciones de estado de :app_name.\n:link", - 'html' => '

Por favor confirme su suscripción por correo a las actualizaciones de estado de :app_name.

', - 'button' => 'Confirme su suscripción', - ], - 'maintenance' => [ - 'subject' => '[Mantenimiento programado] :name', - ], - 'incident' => [ - 'subject' => '[Nuevo incidente] :status: :name', - ], - 'component' => [ - 'subject' => 'Actualización de estado del componente', - 'text' => 'El componente :component_name ha cambiado de estado. El componente está ahora :component_human_status.\nGracias, :app_name', - 'html' => '

El componente :component_name ha cambiado de estado. El componente ahora está :component_human_status.

Gracias, :app_name

', - 'tooltip-title' => 'Subscribirse a las notificaciones de :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Te han invitado a la página de estado del equipo de :app_name, para registrarte sigue este enlace.\n:link\nGracias, :app_name", - 'html' => '

Has sido invitado a la página de estado del equipo :app_name, para inscribirte sigue el siguiente enlace.

:link

Gracias, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Registrarse', - 'username' => 'Nombre de usario', - 'email' => 'Correo electrónico', - 'password' => 'Contraseña', - 'success' => 'Tu cuenta ha sido creada.', - 'failure' => 'Hubo algún error al registrarse.', - ], - - 'system' => [ - 'update' => 'Hay disponible una versión de Cachet más nueva. Puedes aprender sobre cómo actualizarla aquí!', - ], - - // Modal - 'modal' => [ - 'close' => 'Cerrar', - 'subscribe' => [ - 'title' => 'Subscribirse a actualizaciones de componentes', - 'body' => 'Introduce tu dirección de correo electrónico para subscribirte a las actualizaciones de este componente. Si ya estás subscrito, ya recibirás los correos electrónicos para este componente.', - 'button' => 'Suscríbete', - ], - ], - - // Other - 'home' => 'Inicio', - 'description' => 'Mantente informado con las últimas actualizaciones de servicio de :app.', - 'powered_by' => 'La página de estado de :app está proporcionada por Cachet.', - 'about_this_site' => 'Acerca de este sitio', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Estado del Feed', - -]; diff --git a/resources/lang/es/dashboard.php b/resources/lang/es/dashboard.php deleted file mode 100644 index 1e7fb067..00000000 --- a/resources/lang/es/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Panel de Control', - - // Incidents - 'incidents' => [ - 'title' => 'Incidencias y horario', - 'incidents' => 'Incidentes', - 'logged' => '{0} No hay incidencias, ¡buen trabajo!|Has registrado una incidencia.|Has reportado :count incidencias.', - 'incident-create-template' => 'Crear plantilla', - 'incident-templates' => 'Plantillas de incidente', - 'add' => [ - 'title' => 'Reportar incidente', - 'success' => 'Incidente agregado.', - 'failure' => 'Hubo un error agregando el incidente, por favor intente de nuevo.', - ], - 'edit' => [ - 'title' => 'Editar un incidente', - 'success' => 'Incidente actualizado.', - 'failure' => 'Hubo un error editando el incidente, por favor intente de nuevo.', - ], - 'delete' => [ - 'success' => 'El incidente se ha eliminado y no se mostrará en tu página de estado.', - 'failure' => 'El incidente no se pudo eliminar, por favor intente de nuevo.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Plantillas de incidente', - 'add' => [ - 'title' => 'Crear una plantilla de incidente', - 'message' => 'Deberías añadir una plantilla de incidente.', - 'success' => 'Su nueva plantilla de incidentes ha sido creada.', - 'failure' => 'Algo salió mal con la plantilla de incidente.', - ], - 'edit' => [ - 'title' => 'Editar plantilla', - 'success' => 'La plantilla de incidente ha sido actualizada.', - 'failure' => 'Algo salió mal actualizando la plantilla de incidente', - ], - 'delete' => [ - 'success' => 'La plantilla de incidente se ha eliminado.', - 'failure' => 'La plantilla de incidente no se pudo eliminar. Por favor, inténtalo de nuevo.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Mantenimiento programado', - 'logged' => '{0} No hay planificaciones, buen trabajo.|Has registrado una planificación.|Has registrado :count planificaciones.', - 'scheduled_at' => 'Programado para :timestamp', - 'add' => [ - 'title' => 'Agregar mantenimiento programado', - 'success' => 'Planificación agregada.', - 'failure' => 'Algo salió mal agregando la planificación, por favor intente de nuevo.', - ], - 'edit' => [ - 'title' => 'Editar Mantenimiento Programado', - 'success' => 'La planificación ha sido actualizada!', - 'failure' => 'Algo salió mal editando la planificación, por favor intente de nuevo.', - ], - 'delete' => [ - 'success' => 'La planificación ha sido eliminada y no será mostrada en su página de estado.', - 'failure' => 'El mantenimiento programado no pudo ser eliminado, por favor, inténtelo de nuevo.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componentes', - 'component_statuses' => 'Estatus de los componentes', - 'listed_group' => 'Agrupado bajo :nombre', - 'add' => [ - 'title' => 'Agregar componente', - 'message' => 'Deberías agregar un componente.', - 'success' => 'Componente creado.', - 'failure' => 'Algo salió mal con el componente, por favor intente de nuevo.', - ], - 'edit' => [ - 'title' => 'Editar componente', - 'success' => 'Componente actualizado.', - 'failure' => 'Algo salió mal con el componente, por favor intente de nuevo.', - ], - 'delete' => [ - 'success' => 'El componente se ha eliminado!', - 'failure' => 'El componente no pudo ser eliminado, por favor, inténtelo de nuevo.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Grupo de componente|Grupos de componente', - 'no_components' => 'Usted debería agregar un grupo de componentes.', - 'add' => [ - 'title' => 'Agregar un grupo de componentes', - 'success' => 'Grupo de componentes agregado.', - 'failure' => 'Algo salió mal con el grupo de componentes, por favor vuelva a intentarlo.', - ], - 'edit' => [ - 'title' => 'Editar un grupo de componentes', - 'success' => 'Grupo de componentes actualizado.', - 'failure' => 'Algo salió mal con el grupo de componentes, por favor vuelva a intentarlo.', - ], - 'delete' => [ - 'success' => 'El grupo de componentes se ha eliminado!', - 'failure' => 'El grupo de componentes no pudo ser eliminado, por favor, inténtelo de nuevo.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Métricas', - 'add' => [ - 'title' => 'Crear una métrica o indicador', - 'message' => 'Deberías añadir una métrica.', - 'success' => 'Métrica creada.', - 'failure' => 'Algo salió mal con la métrica, por favor, inténtelo de nuevo.', - ], - 'edit' => [ - 'title' => 'Editar una métrica', - 'success' => 'Métrica actualizada.', - 'failure' => 'Algo salió mal con la métrica, por favor, inténtelo de nuevo.', - ], - 'delete' => [ - 'success' => 'La métrica se ha eliminado y no se mostrará más en tu página de estado.', - 'failure' => 'La métrica no pudo ser eliminada, por favor, inténtelo de nuevo.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Suscriptores', - 'description' => 'Los suscriptores recibirán actualizaciones por correo electrónico cuando se creen incidentes o se actualicen componentes.', - 'verified' => 'Verificado', - 'not_verified' => 'No confirmado', - 'subscriber' => ':email, suscrito :date', - 'no_subscriptions' => 'Suscrito a todas las actualizaciones', - 'add' => [ - 'title' => 'Agregar un nuevo subscriptor', - 'success' => 'Subscriptor agregado.', - 'failure' => 'Algo salió mal al agregar el suscriptor, por favor, inténtelo de nuevo.', - 'help' => 'Agregue cada subscriptor en una línea nueva.', - ], - 'edit' => [ - 'title' => 'Actualizar subscriptor', - 'success' => 'Subscriptor actualizado.', - 'failure' => 'Algo salió mal al editar el suscriptor, por favor, inténtelo de nuevo.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Equipo', - 'member' => 'Miembro', - 'profile' => 'Perfil', - 'description' => 'Los miembros del equipo será capaces de añadir, modificar y editar componentes e incidentes.', - 'add' => [ - 'title' => 'Añadir a un nuevo miembro de equipo', - 'success' => 'Miembro del equipo agregado.', - 'failure' => 'No se pudo agregar el miembro del equipo, por favor vuelva a intentarlo.', - ], - 'edit' => [ - 'title' => 'Actualizar perfil', - 'success' => 'Perfil actualizado.', - 'failure' => 'Algo salió mal actualizando el perfil, por favor intente de nuevo.', - ], - 'delete' => [ - 'success' => 'El miembro del equipo ha sido eliminado y ya no tendrán acceso al Pane de Control!', - 'failure' => 'No se pudo agregar el miembro del equipo, por favor vuelva a intentarlo.', - ], - 'invite' => [ - 'title' => 'Invitar a un nuevo miembro al equipo', - 'success' => 'Se ha enviado una invitación', - 'failure' => 'La invitación no pudo ser enviada, por favor intente de nuevo.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Ajustes', - 'app-setup' => [ - 'app-setup' => 'Configuración de aplicación', - 'images-only' => 'Sólo puedes subir imágenes.', - 'too-big' => 'El archivo subido es demasiado grande. Sube una imagen con tamaño menor a: tamaño', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localización', - ], - 'customization' => [ - 'customization' => 'Personalización', - 'header' => 'Cabecera HTML personalizada', - 'footer' => 'Pie HTML personalizado', - ], - 'security' => [ - 'security' => 'Seguridad', - 'two-factor' => 'Usuarios sin autenticación de dos factores', - ], - 'stylesheet' => [ - 'stylesheet' => 'Hoja de estilo', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Configuración guardada.', - 'failure' => 'La configuración no se podido guardar.', - ], - 'credits' => [ - 'credits' => 'Créditos', - 'contributors' => 'Colaboradores', - 'license' => 'Cachet es un proyecto de código libre bajo la licencia BSD-3, liberado por Alt Three Services Limited.', - 'backers-title' => 'Patrocinadores', - 'backers' => 'Si desea apoyar futuros desarrollos, ingrese a la campaña de Cachet Patreon.', - 'thank-you' => 'Gracias a todos y cada uno de los :count colaboradores.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Iniciar Sesión', - 'logged_in' => 'Estás conectado.', - 'welcome' => '¡Bienvenido!', - 'two-factor' => 'Por favor ingresa tu token.', - ], - - // Sidebar footer - 'help' => 'Ayuda', - 'status_page' => 'Página de estado', - 'logout' => 'Salir', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notificaciones', - 'awesome' => 'Excelente.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Apoye Cachet', - 'support_subtitle' => '¡Visite nuestro proyecto en la página de Patreon!', - 'news' => 'Últimas noticias', - 'news_subtitle' => 'Obtener las actualizaciones más recientes', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Bienvenido a tu página de estado!', - 'message' => 'La página de estado está casi lista! Tal vez quieras configurar estos ajustes adicionales', - 'close' => 'Llévame directamente a mi dashboard', - 'steps' => [ - 'component' => 'Crear componentes', - 'incident' => 'Crear incidentes', - 'customize' => 'Personalizar', - 'team' => 'Agregar Usuarios', - 'api' => 'Generar token API', - 'two-factor' => 'Autenticación de dos factores', - ], - ], - -]; diff --git a/resources/lang/es/forms.php b/resources/lang/es/forms.php deleted file mode 100644 index 8525a5dd..00000000 --- a/resources/lang/es/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Correo electrónico', - 'username' => 'Nombre de usario', - 'password' => 'Contraseña', - 'site_name' => 'Nombre del sitio', - 'site_domain' => 'Dominio de sitio', - 'site_timezone' => 'Selecciona tu zona horaria', - 'site_locale' => 'Selecciona tu idioma', - 'enable_google2fa' => 'Habilitar la verificación en dos pasos de Google', - 'cache_driver' => 'Controlador de Memoria Cache', - 'session_driver' => 'Controlador de Sesion', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nombre de usuario o dirección de correo electrónico', - 'email' => 'Correo electrónico', - 'password' => 'Contraseña', - '2fauth' => 'Código de Autenticación', - 'invalid' => 'Nombre de usuario o contraseña incorrecto', - 'invalid-token' => 'Token inválido', - 'cookies' => 'Usted debe habilitar cookies para logearse o iniciar sesion.', - 'rate-limit' => 'Límite de transferencia excedido.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nombre', - 'status' => 'Estado', - 'component' => 'Componente', - 'message' => 'Mensaje', - 'message-help' => 'También puedes usar Markdown.', - 'scheduled_at' => '¿Cuando planificar el mantenimiento de?', - 'incident_time' => '¿Cuando ocurrió este incidente?', - 'notify_subscribers' => '¿Notificar a los suscriptores?', - 'visibility' => 'Visibilidad del incidente', - 'public' => 'Visible por el público', - 'logged_in_only' => 'Solo visible para usuarios logeados', - 'templates' => [ - 'name' => 'Nombre', - 'template' => 'Plantilla', - 'twig' => 'Las plantillas de incidentes pueden hacer uso del lenguaje de plantillas Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nombre', - 'status' => 'Estatus', - 'group' => 'Grupo', - 'description' => 'Descripción', - 'link' => 'Enlace', - 'tags' => 'Etiquetas', - 'tags-help' => 'Separado por comas.', - 'enabled' => '¿Componente habilitado?', - - 'groups' => [ - 'name' => 'Nombre', - 'collapsing' => 'Elegir la visibilidad del grupo', - 'visible' => 'Siempre expandido', - 'collapsed' => 'Contraer el grupo por defecto', - 'collapsed_incident' => 'Contraer el grupo, pero ampliar si hay problemas', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nombre', - 'suffix' => 'Sufijo', - 'description' => 'Descripción', - 'description-help' => 'También puedes usar Markdown.', - 'display-chart' => '¿Mostrar gráficas en la pagina de estado?', - 'default-value' => 'Valor predeterminado', - 'calc_type' => 'Cálculo de métricas', - 'type_sum' => 'Suma', - 'type_avg' => 'Promedio', - 'places' => 'Cantidad de decimales', - 'default_view' => 'Vista predeterminada', - 'threshold' => '¿Cuántos minutos de umbral entre púntos de métrica?', - - 'points' => [ - 'value' => 'Valor', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Nombre del sitio', - 'site-url' => 'URL del sitio', - 'display-graphs' => '¿Mostrar gráficas en la pagina de estado?', - 'about-this-page' => 'Sobre esta página', - 'days-of-incidents' => '¿Cuántos días de incidentes mostrar?', - 'banner' => 'Imagen del banner', - 'banner-help' => 'Se recomienda subir una imagen no más grande de 930px de ancho .', - 'subscribers' => '¿Permitir a la gente inscribirse mediante noficiacion por correo electronico?', - 'automatic_localization' => '¿Traducir automáticamente la página de estado según el lenguaje del visitante?', - ], - 'analytics' => [ - 'analytics_google' => 'Código de Google Analytics', - 'analytics_gosquared' => 'Código de GoSquared Analytics', - 'analytics_piwik_url' => 'URL de tu instancia Piwik (sin el http(s)://)', - 'analytics_piwik_siteid' => 'Id de tu sitio Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Zona horaria del sitio', - 'site-locale' => 'Idioma del sitio', - 'date-format' => 'Formato de la fecha', - 'incident-date-format' => 'Formato de fecha de incidente', - ], - 'security' => [ - 'allowed-domains' => 'Dominios permitidos', - 'allowed-domains-help' => 'Separados por coma. El dominio establecido en la configuración del sitio formará automáticamente parte de los dominios permitidos.', - ], - 'stylesheet' => [ - 'custom-css' => 'Hoja de estilo personalizada', - ], - 'theme' => [ - 'background-color' => 'Color de fondo', - 'background-fills' => 'Relleno del fondo (componentes, incidentes, pie)', - 'banner-background-color' => 'Color de fondo del banner', - 'banner-padding' => 'Padding del banner', - 'fullwidth-banner' => '¿Habilitar banner de ancho completo?', - 'text-color' => 'Color del texto', - 'dashboard-login' => '¿Mostrar el botón de Panel de Control en el pie?', - 'reds' => 'Rojo (usado para errores)', - 'blues' => 'Azul (usado para información)', - 'greens' => 'Verde (usado para operaciones correctas)', - 'yellows' => 'Amarillo (usado para alertas)', - 'oranges' => 'Naranja (usado para avisos)', - 'metrics' => 'Relleno de las métricas', - 'links' => 'Enlaces', - ], - ], - - 'user' => [ - 'username' => 'Nombre de usario', - 'email' => 'Correo electrónico', - 'password' => 'Contraseña', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerando tu token de API evitaras que las aplicaciones existentes puedan acceder a Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'Nivel de usuario', - 'levels' => [ - 'admin' => 'Administrador', - 'user' => 'Usuario', - ], - '2fa' => [ - 'help' => 'Habilitar autenticación de dos pasos aumenta la seguridad de tu cuenta. Necesitarás descargar Google Authenticator o una aplicación similar a su dispositivo móvil. Al iniciar sesión, te pedirá proporcionar un token generado por la aplicación.', - ], - 'team' => [ - 'description' => 'Invita a los miembros de equipo introduciendo sus direcciones de correo electrónico aquí.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Agregar', - 'save' => 'Guardar', - 'update' => 'Actualizar', - 'create' => 'Crear', - 'edit' => 'Editar', - 'delete' => 'Eliminar', - 'submit' => 'Enviar', - 'cancel' => 'Cancelar', - 'remove' => 'Remover', - 'invite' => 'Invitar', - 'signup' => 'Registrarse', - - // Other - 'optional' => '* Opcional', -]; diff --git a/resources/lang/es/pagination.php b/resources/lang/es/pagination.php deleted file mode 100644 index c508cde1..00000000 --- a/resources/lang/es/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Anterior', - 'next' => 'Siguiente »', - -]; diff --git a/resources/lang/es/setup.php b/resources/lang/es/setup.php deleted file mode 100644 index 1438ce13..00000000 --- a/resources/lang/es/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Configurar', - 'title' => 'Configurar Cachet', - 'service_details' => 'Detalles del servicio', - 'env_setup' => 'Configuracion de entorno', - 'status_page_setup' => 'Configuración de la página de estado', - 'show_support' => '¿Deseas mostrar tu apoyo a Cachet?', - 'admin_account' => 'Cuenta de administrador', - 'complete_setup' => 'Completar configuración', - 'completed' => '¡Cachet se ha configurado correctamente!', - 'finish_setup' => 'Ir a Panel de control', -]; diff --git a/resources/lang/es/validation.php b/resources/lang/es/validation.php deleted file mode 100644 index 6e5f85e9..00000000 --- a/resources/lang/es/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'El :attribute debe ser aceptado.', - 'active_url' => 'El :attribute no es un enlace válido.', - 'after' => 'El :attribute debe ser una fecha después de :date.', - 'alpha' => 'El :attribute sólo puede contener letras.', - 'alpha_dash' => 'El :attribute sólo puede contener letras, números y guiones.', - 'alpha_num' => 'El :attribute sólo puede contener letras y números.', - 'array' => 'El :attribute debe ser una matriz.', - 'before' => 'El :attribute debe ser una fecha antes de :date.', - 'between' => [ - 'numeric' => 'El :attribute debe ser una fecha antes de :date.', - 'file' => 'El atributo :attribute debe estar entre :min y :max.', - 'string' => 'El :attribute debe estar entre :min y :max kilobytes.', - 'array' => 'El :attribute debe tener entre :min y :max objetos.', - ], - 'boolean' => 'El :attribute debe tener entre :min y :max objetos.', - 'confirmed' => 'El campo :attribute debe ser verdadero o falso.', - 'date' => 'La confirmación del :attribute no coincide.', - 'date_format' => 'El :attribute no es una fecha válida.', - 'different' => 'El :attribute no cumple el formato :format.', - 'digits' => 'El atributo :attribute y :other deben ser diferentes.', - 'digits_between' => 'El :attribute debe tener :digits dígitos.', - 'email' => 'El :attribute debe tener entre: min y :max dígitos.', - 'exists' => 'El :attribute debe ser una dirección válida de correo electrónico.', - 'distinct' => 'El campo :attribute tiene un valor duplicado.', - 'filled' => 'El formato :attribute es inválido.', - 'image' => 'El :attribute debe ser una imagen.', - 'in' => 'El :attribute debe ser una imagen.', - 'in_array' => 'El campo :attribute no existe en :other.', - 'integer' => 'El :attribute seleccionado es inválido.', - 'ip' => 'El :attribute debe ser un número entero.', - 'json' => 'El :attribute debe ser una cadena JSON válida.', - 'max' => [ - 'numeric' => 'El :attribute debe ser una dirección IP válida.', - 'file' => 'El atributo :attribute no puede ser mayor que :max.', - 'string' => 'El atributo :attribute no puede ser mayor :max de kilobytes.', - 'array' => 'El :attribute no puede tener más de :max objetos.', - ], - 'mimes' => 'El :attribute no puede tener más de :max objetos.', - 'min' => [ - 'numeric' => 'El :attribute debe ser un archivo de tipo: :values.', - 'file' => 'El :attribute debe tener al menos :min kilobytes.', - 'string' => 'El :attribute debe tener al menos :min kilobytes.', - 'array' => 'El atributo :attribute debe ser de al menos :min caracteres.', - ], - 'not_in' => 'El :attribute debe tener al menos :min objetos.', - 'numeric' => 'El :attribute seleccionado es inválido.', - 'present' => 'El campo :attribute debe estar presente.', - 'regex' => 'El :attribute sebe ser un número.', - 'required' => 'El formato :attribute es inválido.', - 'required_if' => 'El campo :attribute es requerido.', - 'required_unless' => 'El campo :attribute es obligatorio a no ser que :other se encuentre en :values.', - 'required_with' => 'El campo :attribute es obligatorio cuando el campo :other es :value.', - 'required_with_all' => 'El campo del :attribute se requiere cuando :values es presente.', - 'required_without' => 'El campo del :attribute se requiere cuando :values es presente.', - 'required_without_all' => 'El campo :attribute es obligatorio cuando :values no está presente.', - 'same' => 'El campo :attribute es obligatorio cuando ninguno de :values estén presentes.', - 'size' => [ - 'numeric' => 'Los :attribute y :other deben coincidir.', - 'file' => 'El :attribute debe ser :size kilobytes.', - 'string' => 'El :attribute debe tener :size caracteres.', - 'array' => 'El :attribute debe tener :size caracteres.', - ], - 'string' => 'El :attribute debe contener :size objetos.', - 'timezone' => 'El :attribute debe ser una zona válida.', - 'unique' => 'El :attribute ya ha sido usado.', - 'url' => 'El formato :attribute es inválido.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'mensaje-personalizado', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/et-EE/cachet.php b/resources/lang/et-EE/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/et-EE/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/et-EE/dashboard.php b/resources/lang/et-EE/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/et-EE/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/et-EE/forms.php b/resources/lang/et-EE/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/et-EE/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/et-EE/notifications.php b/resources/lang/et-EE/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/et-EE/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/et-EE/pagination.php b/resources/lang/et-EE/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/et-EE/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/et-EE/setup.php b/resources/lang/et-EE/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/et-EE/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/et-EE/validation.php b/resources/lang/et-EE/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/et-EE/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/fa-IR/cachet.php b/resources/lang/fa-IR/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/fa-IR/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/fa-IR/dashboard.php b/resources/lang/fa-IR/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/fa-IR/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/fa-IR/forms.php b/resources/lang/fa-IR/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/fa-IR/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/fa-IR/notifications.php b/resources/lang/fa-IR/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/fa-IR/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/fa-IR/pagination.php b/resources/lang/fa-IR/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/fa-IR/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/fa-IR/setup.php b/resources/lang/fa-IR/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/fa-IR/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/fa-IR/validation.php b/resources/lang/fa-IR/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/fa-IR/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/fa/cachet.php b/resources/lang/fa/cachet.php deleted file mode 100644 index f520dc42..00000000 --- a/resources/lang/fa/cachet.php +++ /dev/null @@ -1,145 +0,0 @@ - [ - 'last_updated' => 'آخرین بروز رسانی :timestamp', - 'status' => [ - 1 => 'عملیاتی', - 2 => 'مسائل مربوط به عملکرد', - 3 => 'قطعی جزیی', - 4 => 'قطعی بزرگ', - ], - 'group' => [ - 'other' => 'کامپوننت‌های دیگر', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'هیچ حادثه ای گزارش نشده است', - 'past' => 'حوادث گذشته', - 'previous_week' => 'هفته گذشته', - 'next_week' => 'هفته ی آتی', - 'scheduled' => 'تعمیرات زمان‌بندی شده', - 'scheduled_at' => '، برنامه ریزی شده :timestamp', - 'status' => [ - 0 => 'برنامه ریزی شده', // TODO: Hopefully remove this. - 1 => 'در دست بررسی', - 2 => 'شناسایی شده', - 3 => 'در دست بررسی تغييرات', - 4 => 'برطرف شده', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'ساخت مجدد کلید API', - 'revoke' => 'غیرفعال نمودن کلید API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'ساعت گذشته', - 'hourly' => '12 ساعت گذشته', - 'weekly' => 'هفته', - 'monthly' => 'ماه', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'مشترک شوید تا از آخرین به‌روزرسانی‌ها آگاه شوید', - 'button' => 'اشتراک اطلاع‌رسانی', - 'manage' => [ - 'no_subscriptions' => 'در حال حاضر شما برای همه به‌روزرسانی‌ها مشترک هستید.', - 'my_subscriptions' => 'در حال حاضر شما برای این به‌روزرسانی‌ها مشترک هستید.', - ], - 'email' => [ - 'subscribe' => 'اشتراک در به‌روزرسانی‌های ایمیلی.', - 'subscribed' => 'شما در اطلاع‌رسانی‌های ایمیلی مشترک هستید، لطفا ایمیل خود را جهت تایید اشتراک، کنترل نمایید.', - 'verified' => 'ایمیل اشتراک شما با موفقیت تایید شد. با تشکر!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'لغو اشتراک ایمیلی برای به‌روزرسانی‌ها.', - 'unsubscribed' => 'اشتراک ایمیلی شما لغو گردید.', - 'failure' => 'هنگام عضویت اشتراک خطایی رخ داد.', - 'already-subscribed' => 'امکان مشترک شدن :email وجود ندارد، زیرا در حال حاضر این ایمیل مشترک می‌باشد.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'به‌روزرسانی وضعیت کامپوننت', - 'text' => 'کامپوننت :component یک تغییر وضعیت دارد. این کامپوننت هم‌اکنون در حالت :component_human_status قرار دارد.\n -با تشکر، :app_name', - 'html' => '

کامپوننت با نام :component_name یک تغییر وضعیت دارد. کامپوننت هم‌اکنون در حالت :component_human_status قرار دارد.

با تشکر :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'نام‌نویسی', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'حساب کاربری شما ایجاد گردید.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'بستن', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'اشتراک اطلاع‌رسانی', - ], - ], - - // Other - 'home' => 'خانه', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'درباره این سایت', - 'rss-feed' => 'خوراک (RSS)', - 'atom-feed' => 'خوراک (Atom)', - 'feed' => 'فید (خوراک) وضعیت', - -]; diff --git a/resources/lang/fa/dashboard.php b/resources/lang/fa/dashboard.php deleted file mode 100644 index 23c95af7..00000000 --- a/resources/lang/fa/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'داشبورد', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Incidents', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'تعمیرات زمان‌بندی شده', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'تنظیمات ذخیره گردید.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'ورود به سیستم', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'راهنما', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'Add users', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/fa/forms.php b/resources/lang/fa/forms.php deleted file mode 100644 index b4d8f997..00000000 --- a/resources/lang/fa/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'نام‌نویسی', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/fa/pagination.php b/resources/lang/fa/pagination.php deleted file mode 100644 index add1092a..00000000 --- a/resources/lang/fa/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/resources/lang/fa/setup.php b/resources/lang/fa/setup.php deleted file mode 100644 index 044cf2e2..00000000 --- a/resources/lang/fa/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/fa/validation.php b/resources/lang/fa/validation.php deleted file mode 100644 index fb52c2f3..00000000 --- a/resources/lang/fa/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/fi-FI/cachet.php b/resources/lang/fi-FI/cachet.php deleted file mode 100644 index 7c1d6ccd..00000000 --- a/resources/lang/fi-FI/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/fi-FI/dashboard.php b/resources/lang/fi-FI/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/fi-FI/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/fi-FI/forms.php b/resources/lang/fi-FI/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/fi-FI/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/fi-FI/notifications.php b/resources/lang/fi-FI/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/fi-FI/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/fi-FI/pagination.php b/resources/lang/fi-FI/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/fi-FI/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/fi-FI/setup.php b/resources/lang/fi-FI/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/fi-FI/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/fi-FI/validation.php b/resources/lang/fi-FI/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/fi-FI/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/fi/cachet.php b/resources/lang/fi/cachet.php deleted file mode 100644 index 4a6f8207..00000000 --- a/resources/lang/fi/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Viimeksi päivitetty :timestamp', - 'status' => [ - 1 => 'Toiminnassa', - 2 => 'Suorituskykyyn liittyviä ongelmia', - 3 => 'Osittainen katkos', - 4 => 'Merkittävä katkos', - ], - 'group' => [ - 'other' => 'Muut komponentit', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Ei raportoitavia tapauksia', - 'past' => 'Aikaisemmat tapahtumat', - 'previous_week' => 'Edellinen viikko', - 'next_week' => 'Seuraava viikko', - 'scheduled' => 'Määräaikaishuolto', - 'scheduled_at' => ', ajoitettu :timestamp', - 'status' => [ - 0 => 'Ajoitettu', // TODO: Hopefully remove this. - 1 => 'Tutkitaan', - 2 => 'Tunnistettu', - 3 => 'Valvotaan', - 4 => 'Korjattu', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] järjestelmät ovat toiminnassa| [2, Inf] Kaikki järjestelmät ovat toiminnassa', - 'bad' => '[0,1] järjestelmä on tällä hetkellä ongelmia| [2, Inf] Joissakin järjestelmissä on ongelmia', - 'major' => '[0,1] Palveluissa on katkoksia| [2, Inf] Joissakin järjestelmissä on merkittävä katkoksia', - ], - - 'api' => [ - 'regenerate' => 'Luo API-avain', - 'revoke' => 'Peruuttaa API avain', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Viimeisen tunnin', - 'hourly' => 'Viimeisen 12 tunnin', - 'weekly' => 'Viikko', - 'monthly' => 'Kuukausi', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Tilaa uusimmat päivitykset', - 'button' => 'Tilaa', - 'manage' => [ - 'no_subscriptions' => 'Olet tällä hetkellä tilannut kaikki ilmoitukset.', - 'my_subscriptions' => 'Olet tällä hetkellä tilannut seuraavat ilmoitukset.', - ], - 'email' => [ - 'subscribe' => 'Tilaa sähköpostiin päivitykset.', - 'subscribed' => 'Olet tilannut sähköposti-ilmoitukset, tarkista sähköpostisi vahvistaaksesi tilauksen.', - 'verified' => 'Sinun sähköposti tilaus on vahvistettu. Kiitos!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Poista sähköposti tilauksesi.', - 'unsubscribed' => 'Sähköpostitilauksesi on peruuttu.', - 'failure' => 'Jokin meni vikaan sähköpostitilauksen käsittelyssä.', - 'already-subscribed' => 'Ei voida tilata ilmoituksia sähköpostilla :email koska on jo tilattu.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Vahvista tilaus', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Komponentin tilan päivitys', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Tilaa ilmoitukset :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Sinut on kutsuttu ryhmään :app_name tila sivulle, rekisteröi tästä: \n:link\n. Kiitos, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Rekisteröidy', - 'username' => 'Käyttäjätunnus', - 'email' => 'Sähköposti', - 'password' => 'Salasana', - 'success' => 'Tilisi on luotu.', - 'failure' => 'Jokin meni vikaan sähköpostitilauksen käsittelyssä.', - ], - - 'system' => [ - 'update' => 'Cachetistä on saatavilla uudempi versio. Katso miten päivitetään uudempaan versioon täältä!', - ], - - // Modal - 'modal' => [ - 'close' => 'Sulje', - 'subscribe' => [ - 'title' => 'Tilaa sähköpostiin ilmoituksia komponenttien tilasta', - 'body' => 'Kirjoita sähköpostiosoitteesi tilaaksesi päivitykset tästä komponetista. Jos olet jo tilaaja, saat jo sähköposti ilmoituksia tästä komponetista.', - 'button' => 'Tilaa', - ], - ], - - // Other - 'home' => 'Etusivu', - 'description' => 'Pysy ajan tasalla tilaamalla uusimmat päivitykset :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'Tietoa sivustosta', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/fi/dashboard.php b/resources/lang/fi/dashboard.php deleted file mode 100644 index a1096431..00000000 --- a/resources/lang/fi/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Hallintanäkymä', - - // Incidents - 'incidents' => [ - 'title' => 'Tapahtumat & ajastaminen', - 'incidents' => 'Tapahtumat', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Luo mallipohja', - 'incident-templates' => 'Tapahtuma pohja', - 'add' => [ - 'title' => 'Ilmoita tapahtuma', - 'success' => 'Tapahtuma lisätty.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Muokkaa tapahtumaa', - 'success' => 'Tapahtuma päivitetty.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'Tapaus on poistettu ja ei näytetä tila-sivulla.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Tapahtuma pohja', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Ajastettu huolto', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Ajastettu :timestamp alkaen', - 'add' => [ - 'title' => 'Lisää ajastettu huolto', - 'success' => 'Ajastus lisätty.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Muokkaa ajastettua huoltoa', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Komponentit', - 'component_statuses' => 'Komponenttien tilat', - 'listed_group' => 'Ryhmitetään :name alle', - 'add' => [ - 'title' => 'Lisää komponentti', - 'message' => 'You should add a component.', - 'success' => 'Komponentti on luotu.', - 'failure' => 'Jokin meni vikaa luodessa komponenttia, ole hyvä ja yritä uudelleen.', - ], - 'edit' => [ - 'title' => 'Muokkaa komponenttia', - 'success' => 'Komponentti päivitetty.', - 'failure' => 'Jokin meni vikaa luodessa komponenttia, ole hyvä ja yritä uudelleen.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'Komponenttia ei voitu poistaa, ole hyvä ja yritä uudelleen.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'Sinun tulisi lisätä komponentti ryhmä.', - 'add' => [ - 'title' => 'Lisää komponentti-ryhmä', - 'success' => 'Komponenti ryhmä lisätty.', - 'failure' => 'Jokin meni vikaan luodessa komponenttiryhmää, ole hyvä ja yritä uudelleen.', - ], - 'edit' => [ - 'title' => 'Muokkaa komponentti ryhmää', - 'success' => 'Komponentti ryhmä päivitetty.', - 'failure' => 'Jokin meni vikaan luodessa komponenttiryhmää, ole hyvä ja yritä uudelleen.', - ], - 'delete' => [ - 'success' => 'Komponentti ryhmä poistettu!', - 'failure' => 'Komponenttiryhmää ei voitu poistaa, ole hyvä ja yritä uudelleen.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Mittarit', - 'add' => [ - 'title' => 'Luo kaavio', - 'message' => 'Sinun tulisi lisätä kaavio.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Muokkaa kaaviota', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Tilaajat', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Vahvistettu', - 'not_verified' => 'Not verified', - 'subscriber' => ': sähköposti, tilannut: päivämäärä', - 'no_subscriptions' => 'Tilaa kaikki päivitykset', - 'add' => [ - 'title' => 'Lisää uusi tilaaja', - 'success' => 'Tilaaja lisätty.', - 'failure' => 'Jotakin meni vikaan lisäessä uutta tilaajaa, ole hyvä ja yritä uudelleen.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Päivitä tilaaja', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Ryhmä', - 'member' => 'Jäsen', - 'profile' => 'Profiili', - 'description' => 'Käyttäjäjä voi luoda, muokata & komponentteja ja tapahtumia.', - 'add' => [ - 'title' => 'Lisää uusi käyttäjä', - 'success' => 'Käyttäjä on lisätty.', - 'failure' => 'Käyttäjää ei voitu luoda, ole hyvä ja yritä uudelleen.', - ], - 'edit' => [ - 'title' => 'Päivitä profiili', - 'success' => 'Profiili on päivitetty.', - 'failure' => 'Jokin meni vikaan päivittäessä profiilia, ole hyvä ja yritä uudelleen.', - ], - 'delete' => [ - 'success' => 'Käyttäjä on poistettu ja ei ole enään pääsyä hallintapaneeliin!', - 'failure' => 'Käyttäjää ei voitu luoda, ole hyvä ja yritä uudelleen.', - ], - 'invite' => [ - 'title' => 'Kutsu uusi käyttäjä', - 'success' => 'Kutsu on lähetetty', - 'failure' => 'Kutsua ei voitu lähettää, ole hyvä ja yritä uudelleen.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Asetukset', - 'app-setup' => [ - 'app-setup' => 'Sovelluksen asetukset', - 'images-only' => 'Vain kuvia voi lähettää.', - 'too-big' => 'Lähettämäsi tiedosto on liian suuri. Lähetä pienempi kuva kuin :size', - ], - 'analytics' => [ - 'analytics' => 'Analytiikka', - ], - 'localization' => [ - 'localization' => 'Sijainti', - ], - 'customization' => [ - 'customization' => 'Mukauttaminen', - 'header' => 'Mukautettu ylätunniste HTML', - 'footer' => 'Mukautettu alatunniste HTML', - ], - 'security' => [ - 'security' => 'Turvallisuus', - 'two-factor' => 'Käyttäjät ilman kaksivaiheista todennusta', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Teema', - ], - 'edit' => [ - 'success' => 'Asetukset tallennettu.', - 'failure' => 'Asetuksia ei voitu tallentaa.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Kirjaudu', - 'logged_in' => 'Olet kirjautunut sisään.', - 'welcome' => 'Tervetuloa takaisin!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Tuki', - 'status_page' => 'Tila-sivu', - 'logout' => 'Kirjaudu ulos', - - // Notifications - 'notifications' => [ - 'notifications' => 'Ilmoitukset', - 'awesome' => 'Mahtavaa.', - 'whoops' => 'Hupsis.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Tervetuloa tila-sivulle!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Siirry suoraan hallintapaneeliin', - 'steps' => [ - 'component' => 'Luo uusi komponentti', - 'incident' => 'Luo uusi tapahtuma', - 'customize' => 'Muokkaa', - 'team' => 'Lisää käyttäjä', - 'api' => 'Luo API tunnus', - 'two-factor' => 'Kaksivaiheinen todennus', - ], - ], - -]; diff --git a/resources/lang/fi/forms.php b/resources/lang/fi/forms.php deleted file mode 100644 index 24953e27..00000000 --- a/resources/lang/fi/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Sähköposti', - 'username' => 'Käyttäjätunnus', - 'password' => 'Salasana', - 'site_name' => 'Sivuston Nimi', - 'site_domain' => 'Sivuston verkkotunnus', - 'site_timezone' => 'Valitse aikavyöhykkeesi', - 'site_locale' => 'Valitse kielesi', - 'enable_google2fa' => 'Ota käyttöön Googlen kaksivaiheisen todennuksen', - 'cache_driver' => 'Välimuistin ajuri', - 'session_driver' => 'Istunnon ajuri', - ], - - // Login form fields - 'login' => [ - 'login' => 'Käyttäjänimi tai sähköpostiosoite', - 'email' => 'Sähköposti', - 'password' => 'Salasana', - '2fauth' => 'Todennuskoodi', - 'invalid' => 'Virheellinen käyttäjätunnus tai salasana', - 'invalid-token' => 'Invalid token', - 'cookies' => 'Ota käyttöön evästeet kirjautuaksesi.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nimi', - 'status' => 'Tila', - 'component' => 'Komponentti', - 'message' => 'Vesti', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'Milloin huolto aika alkaa?', - 'incident_time' => 'Milloin tämä tapaus tapahtui?', - 'notify_subscribers' => 'Ilmoita tilaajille?', - 'visibility' => 'Tapahtuman näkyvyys', - 'public' => 'Näytetään julkisesti', - 'logged_in_only' => 'Näytetään vain kirjautuneille käyttäjille', - 'templates' => [ - 'name' => 'Nimi', - 'template' => 'Malli', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nimi', - 'status' => 'Tila', - 'group' => 'Ryhmä', - 'description' => 'Kuvaus', - 'link' => 'Linkki', - 'tags' => 'Tunnisteet', - 'tags-help' => 'Erottele pilkuilla.', - 'enabled' => 'Komponentti käytössä?', - - 'groups' => [ - 'name' => 'Nimi', - 'collapsing' => 'Valitse ryhmän näkyvyys tilasivulla', - 'visible' => 'Aina laajennettu', - 'collapsed' => 'Tiivistä ryhmä oletuksena', - 'collapsed_incident' => 'Tiivistä ryhmä, mutta laajenna kun on tapahtumia', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nimi', - 'suffix' => 'Pääte', - 'description' => 'Kuvaus', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Näytetäänkö kaaviot tila-sivulla?', - 'default-value' => 'Oletusarvo', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Summa', - 'type_avg' => 'Keskiarvo', - 'places' => 'Desimaalipilkun paikka', - 'default_view' => 'Oletusnäkymä', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Arvo', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Sivuston Nimi', - 'site-url' => 'Sivuston URL-osoite', - 'display-graphs' => 'Näyttää kaaviot tila-sivulla?', - 'about-this-page' => 'Tietoa tästä sivustosta', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Bannerikuva', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Salli käyttäjien tilata sähköpostitilaukset?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics seurantakoodi', - 'analytics_gosquared' => 'GoSquared Analytics-koodi', - 'analytics_piwik_url' => 'URL Piwik hallintaan (ilman http(s)://)', - 'analytics_piwik_siteid' => 'Piwik sivun tunnus', - ], - 'localization' => [ - 'site-timezone' => 'Sivuston aikavyöhyke', - 'site-locale' => 'Sivuston kieli', - 'date-format' => 'Päivämäärän muoto', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Sallittu toimialueet', - 'allowed-domains-help' => 'Pilkulla erotettuna. Edellä olevat toimialueet sallitaan automaattisesti oletuksena.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Taustaväri', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Bannerin taustaväri', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Tekstin väri', - 'dashboard-login' => 'Näytetäänkö hallintanäkymän painike alatunnisteessa?', - 'reds' => 'Punainen (virheilmoituksia varten)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Linkit', - ], - ], - - 'user' => [ - 'username' => 'Käyttäjätunnus', - 'email' => 'Sähköposti', - 'password' => 'Salasana', - 'api-token' => 'API tunnus', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Muuta profiilikuvaa Gravatar palvelussa.', - 'user_level' => 'Käyttäjätaso', - 'levels' => [ - 'admin' => 'Ylläpito', - 'user' => 'Käyttäjä', - ], - '2fa' => [ - 'help' => 'Ottamalla kaksivaiheisen todennuksen käyttöön parantaaksesi turvallisuutta käyttäjätilillesi. Sinun tulee ladata Google Authenticator sovellus tai vastaava puhelimeesi. Kun kirjaudut, sinua pyydetään antamaan koodi sovelluksesta.', - ], - 'team' => [ - 'description' => 'Kutsu ryhmääsi jäseniä antamalla heidän sähköpostiosoitteensa täällä.', - 'email' => 'Sähköposti #:id', - ], - ], - - // Buttons - 'add' => 'Lisää', - 'save' => 'Tallenna', - 'update' => 'Päivitä', - 'create' => 'Luo', - 'edit' => 'Muokkaa', - 'delete' => 'Poista', - 'submit' => 'Lähetä', - 'cancel' => 'Peruuta', - 'remove' => 'Poista', - 'invite' => 'Kutsu', - 'signup' => 'Rekisteröidy', - - // Other - 'optional' => '* Valinnainen', -]; diff --git a/resources/lang/fi/pagination.php b/resources/lang/fi/pagination.php deleted file mode 100644 index 7122b4d3..00000000 --- a/resources/lang/fi/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Edellinen', - 'next' => 'Seuraava »', - -]; diff --git a/resources/lang/fi/setup.php b/resources/lang/fi/setup.php deleted file mode 100644 index e1ec8a24..00000000 --- a/resources/lang/fi/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Asetukset', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Sivun asetukset', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Järjestelmänvalvojantili', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Välimuisti on konfiguroitu onnistuneesti!', - 'finish_setup' => 'Siirry hallintapaneeliin', -]; diff --git a/resources/lang/fi/validation.php b/resources/lang/fi/validation.php deleted file mode 100644 index 18381470..00000000 --- a/resources/lang/fi/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => ':attribute ei ole oikea URL-osoite.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => ':attribute voi sisältää vain kirjaimia.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'Määritteen :attribute muoto on virheellinen.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => ':attribute tulee olla kelvollinen JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'Määritteen :attribute muoto on virheellinen.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'Määrite :attribute on jo käytetty.', - 'url' => 'Määritteen :attribute muoto on virheellinen.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'mukautettu viesti', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/fr-FR/cachet.php b/resources/lang/fr-FR/cachet.php deleted file mode 100644 index 37d3dc63..00000000 --- a/resources/lang/fr-FR/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Dernière mise à jour :timestamp', - 'status' => [ - 0 => 'Inconnu', - 1 => 'Opérationnel', - 2 => 'Problèmes de performances', - 3 => 'Panne partielle', - 4 => 'Panne majeure', - ], - 'group' => [ - 'other' => 'Autres composants', - ], - 'select_all' => 'Tout sélectionner', - 'deselect_all' => 'Tout désélectionner', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Aucun incident signalé', - 'past' => 'Incidents antérieurs', - 'stickied' => 'Incidents épinglés', - 'scheduled' => 'Maintenance Planifiée', - 'scheduled_at' => ', planifé à :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Enquête en cours', - 2 => 'Identifié', - 3 => 'Sous surveillance', - 4 => 'Corrigé', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Imminent', - 1 => 'En cours', - 2 => 'Terminé', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Système opérationnel|[2,*] Tous les systèmes sont opérationnels', - 'bad' => '[0,1] Le système rencontre actuellement des problèmes|[2,Inf] Certains systèmes rencontrent des problèmes', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Régénérer la clé API', - 'revoke' => 'Révoquer la clé API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Dernière heure', - 'hourly' => 'Les 12 dernières heures', - 'weekly' => 'Semaine', - 'monthly' => 'Mois', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Se désabonner', - 'button' => 'S\'abonner', - 'manage_subscription' => 'Gérer l\'abonnement', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Gérer les notifications pour', - 'no_subscriptions' => 'Vous êtes actuellement abonné à toutes les mises à jour.', - 'update_subscription' => 'Mettre à jour l’abonnement', - 'my_subscriptions' => 'Vous êtes actuellement abonné aux mises à jour suivantes.', - 'manage_at_link' => 'Gérer vos abonnements à :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'S\'abonner aux notifications par email.', - 'subscribed' => 'Vous êtes abonné aux notifications par email, veuillez vérifier votre messagerie pour confirmer votre adresse.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Votre abonnement aux notifications par email a été confirmé. Merci !', - 'manage' => 'Gérer votre abonnement', - 'unsubscribe' => 'Désinscription des mises à jour par courriel.', - 'unsubscribed' => 'Votre abonnement aux notifications par email a été annulé.', - 'failure' => 'Une erreur est survenue lors de l\'abonnement.', - 'already-subscribed' => 'Impossible de s\'abonner avec l\'adresse e-mail :email car celle-ci est déjà abonnée.', - ], - ], - - 'signup' => [ - 'title' => 'Inscription', - 'username' => 'Nom d\'utilisateur', - 'email' => 'Adresse e-mail', - 'password' => 'Mot de passe', - 'success' => 'Votre compte a été créé.', - 'failure' => 'Un problème est survenu lors de votre inscription.', - ], - - 'system' => [ - 'update' => 'Il y a une nouvelle version de Cachet disponible. Vous pouvez trouver des renseignements concernant la procédure de mise à jour ici!', - ], - - // Modal - 'modal' => [ - 'close' => 'Fermer', - 'subscribe' => [ - 'title' => 'S\'abonner aux mises à jour du status du composant', - 'body' => 'Entrez votre adresse e-mail pour vous abonner aux mises à jour de ce composant. Si vous êtes déjà abonné, vous recevez déjà des notifications pour ce composant.', - 'button' => 'S\'abonner', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Détails et mises à jour sur l\'incident :name qui a eu lieu le :date', - 'schedule' => 'Détails sur la période de maintenance planifiée :name débutant le :startDate', - 'subscribe' => 'S’abonner à :app afin de recevoir les mises à jour des incidents et des périodes de maintenance planifiée', - 'overview' => 'Restez à jour avec les dernières mises à jour de :app.', - ], - ], - - // Other - 'home' => 'Accueil', - 'powered_by' => 'Propulsé par Cachet.', - 'timezone' => 'Les heures sont affichées avec le fuseau horaire :timezone.', - 'about_this_site' => 'À propos du site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Flux des statuts', - -]; diff --git a/resources/lang/fr-FR/dashboard.php b/resources/lang/fr-FR/dashboard.php deleted file mode 100644 index 1a2420ae..00000000 --- a/resources/lang/fr-FR/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Tableau de bord', - 'writeable_settings' => 'Le dossier des paramètres de Cachet n\'est pas accessible en écriture. Veuillez vous assurer que le serveur web peut écrire dans ./bootstrap/cachet.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Créer un modèle', - 'incident-templates' => 'Modèles d\'incident', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Créer une mise à jour d\'incident', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Ajouter un incident', - 'success' => 'Incident ajouté.', - 'failure' => 'Une erreur s\'est produite en ajoutant l\'incident, veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Modifier un incident', - 'success' => 'Incident mis à jour.', - 'failure' => 'Une erreur s\'est produite en modifiant l\'incident, veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'L\'incident a été supprimé et ne sera pas affiché sur votre page de statut.', - 'failure' => 'L\'incident n\'a pas pu être supprimé. Veuillez réessayer.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Modèles d\'incident', - 'add' => [ - 'title' => 'Créer un modèle d\'incident', - 'message' => 'Create your first incident template.', - 'success' => 'Votre nouveau modèle d\'incident a été créé.', - 'failure' => 'Une erreur est survenue avec le modèle d\'incident.', - ], - 'edit' => [ - 'title' => 'Éditer le modèle', - 'success' => 'Le modèle d\'incident a été mis à jour.', - 'failure' => 'Une erreur est survenue lors de la mise à jour du modèle d\'incident', - ], - 'delete' => [ - 'success' => 'Le modèle d\'incident a été supprimé.', - 'failure' => 'Le modèle d\'incident n\'a pas pu être supprimé. Veuillez réessayer.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance Planifiée', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Planifiée à :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Composants', - 'component_statuses' => 'Statut des composants', - 'listed_group' => 'Groupés par :nom', - 'add' => [ - 'title' => 'Ajouter un composant', - 'message' => 'Vous devez ajouter un composant.', - 'success' => 'Composant créé.', - 'failure' => 'Un problème est survenu avec le composant. Veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Modifier un composant', - 'success' => 'Composant mis à jour.', - 'failure' => 'Un problème est survenu avec le composant. Veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'Le composant a été supprimé !', - 'failure' => 'Le composant n\'a pas pu être supprimé. Veuillez réessayer.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Groupe de composants|Groupes de composants', - 'no_components' => 'Vous devez ajouter un groupe de composants.', - 'add' => [ - 'title' => 'Ajouter un groupe de composants', - 'success' => 'Groupe de composants ajouté.', - 'failure' => 'Un problème est survenu avec le composant. Veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Modifier un groupe de composants', - 'success' => 'Groupe de composants mis à jour.', - 'failure' => 'Un problème est survenu avec le composant. Veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'Le groupe de composants a été supprimé !', - 'failure' => 'Le groupe de composants n\'a pas pu être supprimé. Veuillez réessayer.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Indicateur', - 'add' => [ - 'title' => 'Créer une métrique', - 'message' => 'Vous devez ajouter un indicateur.', - 'success' => 'Indicateur créé.', - 'failure' => 'Une erreur est survenue avec l\'indicateur. Veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Modifier une métrique', - 'success' => 'Indicateur mise à jour.', - 'failure' => 'Une erreur est survenue avec l\'indicateur. Veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'La métrique a été supprimé et ne sera plus visible sur votre page de statut.', - 'failure' => 'L\'indicateur n\'a pas pu être supprimé. Veuillez réessayer.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonnés', - 'description' => 'Les abonnés recevront des notifications par e-mail lorsque des incidents sont créés ou des composants sont mis à jour.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Vérifié', - 'not_verified' => 'Non vérifié', - 'subscriber' => ':email, abonné à :date', - 'no_subscriptions' => 'Souscrire à toutes les mises à jour', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Ajouter un abonné', - 'success' => 'L\'abonné a été ajouté !', - 'failure' => 'Une erreur s\'est produite lors de l\'ajout de l\'abonné. Veuillez réessayer.', - 'help' => 'Saisissez un abonné par ligne.', - ], - 'edit' => [ - 'title' => 'Mettre à jour l\'abonné', - 'success' => 'L\'abonné a été mis à jour !', - 'failure' => 'Une erreur s\'est produite lors de la modification de l\'abonné. Veuillez réessayer.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Équipe', - 'member' => 'Membre', - 'profile' => 'Profil utilisateur', - 'description' => 'Les membres de l\'équipe pourront ajouter & modifier les composants et les incidents.', - 'add' => [ - 'title' => 'Ajouter un nouveau membre de l\'équipe', - 'success' => 'Membre de l\'équipe a ajouté.', - 'failure' => 'Le membre de l\'équipe n\'a pas pu être ajouté. Veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Mettre le profil à jour', - 'success' => 'Profil mis à jour.', - 'failure' => 'Une erreur s\'est produite lors de la mise à jour du profil. Veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'Le membre de l\'équipe a été supprimé et n\'aura plus l\'accès au tableau de bord !', - 'failure' => 'Le membre de l\'équipe n\'a pas pu être ajouté. Veuillez réessayer.', - ], - 'invite' => [ - 'title' => 'Inviter un nouveau membre de l\'équipe', - 'success' => 'Nouveau membre invité.', - 'failure' => 'L\'invitation n\'a pas pu être envoyé. Veuillez réessayer.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Paramètres', - 'app-setup' => [ - 'app-setup' => 'Configuration de l\'application', - 'images-only' => 'Seules les images peuvent être envoyées.', - 'too-big' => 'Le fichier envoyé est trop grand. Envoyer une image d\'une taille inférieur à :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localisation', - ], - 'customization' => [ - 'customization' => 'Personnalisation', - 'header' => 'Entête HTML personnalisé', - 'footer' => 'Pied de page HTML personnalisé', - ], - 'mail' => [ - 'mail' => 'Courriel', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Tester la notification depuis Cachet', - 'body' => 'Ceci est une notification de test depuis Cachet.', - ], - ], - 'security' => [ - 'security' => 'Sécurité', - 'two-factor' => 'Utilisateurs sans authentification à deux facteurs', - ], - 'stylesheet' => [ - 'stylesheet' => 'Feuille de style', - ], - 'theme' => [ - 'theme' => 'Thème', - ], - 'edit' => [ - 'success' => 'Paramètres sauvegardés.', - 'failure' => 'Les paramètres n\'ont pas pu être sauvegardés.', - ], - 'credits' => [ - 'credits' => 'Crédits', - 'contributors' => 'Contributeurs', - 'license' => 'Cachet est un logiciel libre sous licence BSD-3 édité par Alt Three Services Limited.', - 'backers-title' => 'Partenaires financiers et sponsors', - 'backers' => 'Si vous souhaitez aider des développements futurs jetez un œil à la campagne Cachet Patreon.', - 'thank-you' => 'Merci à chacun des :count contributeurs.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Connexion', - 'logged_in' => 'Vous êtes connecté.', - 'welcome' => 'Re-bonjour !', - 'two-factor' => 'Veuillez entrer votre jeton.', - ], - - // Sidebar footer - 'help' => 'Aide', - 'status_page' => 'Page de statut', - 'logout' => 'Déconnexion', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Fantastique.', - 'whoops' => 'Oups.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Supportez Cachet', - 'support_subtitle' => 'Jetez un œil à la page Patreon!', - 'news' => 'Dernières actualités', - 'news_subtitle' => 'Obtenez les dernières mises à jour', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Bienvenue sur votre page de statut !', - 'message' => 'Votre page de statut est presque prête ! Vous voudrez peut-être configurer ces paramètres supplémentaires', - 'close' => 'Aller directement à mon tableau de bord', - 'steps' => [ - 'component' => 'Créer des composants', - 'incident' => 'Créer des incidents', - 'customize' => 'Personnaliser', - 'team' => 'Ajouter des utilisateurs', - 'api' => 'Générer un jeton API', - 'two-factor' => 'Authentification à deux facteurs', - ], - ], - -]; diff --git a/resources/lang/fr-FR/forms.php b/resources/lang/fr-FR/forms.php deleted file mode 100644 index a0769bd4..00000000 --- a/resources/lang/fr-FR/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Adresse e-mail', - 'username' => 'Nom d\'utilisateur', - 'password' => 'Mot de passe', - 'site_name' => 'Nom du site', - 'site_domain' => 'Nom de domaine du site', - 'site_timezone' => 'Choisissez votre fuseau horaire', - 'site_locale' => 'Sélectionner votre langue', - 'enable_google2fa' => 'Activer l\'authentification à deux facteurs de Google', - 'cache_driver' => 'Gestionnaire de cache', - 'queue_driver' => 'Pilote de fil', - 'session_driver' => 'Gestionnaire de session', - 'mail_driver' => 'Gestionnaire de mail', - 'mail_host' => 'Serveur de mail', - 'mail_address' => 'Adresse de l\'expéditeur du mail', - 'mail_username' => 'Nom d\'utilisateur de mail', - 'mail_password' => 'Mot de passe du serveur de mail', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nom d\'utilisateur ou e-mail', - 'email' => 'Adresse e-mail', - 'password' => 'Mot de passe', - '2fauth' => 'Code d\'authentification', - 'invalid' => 'Nom d\'utilisateur ou mot de passe incorrect', - 'invalid-token' => 'Jeton invalide', - 'cookies' => 'Vous devez activer les cookies pour vous connecter.', - 'rate-limit' => 'Limite de tentatives atteinte.', - 'remember_me' => 'Se souvenir de moi', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nom', - 'status' => 'Statut', - 'component' => 'Composant', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'Vous pouvez également utiliser le format Markdown.', - 'occurred_at' => 'Quand s\'est produit cet incident ?', - 'notify_subscribers' => 'Notifier les abonnés ?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Visibilité de l\'incident', - 'stick_status' => 'Incident épinglé', - 'stickied' => 'Épinglé', - 'not_stickied' => 'Non épinglé', - 'public' => 'Visible par le public', - 'logged_in_only' => 'Uniquement visible par les utilisateurs enregistrés', - 'templates' => [ - 'name' => 'Nom', - 'template' => 'Modèle', - 'twig' => 'Vous pouvez utiliser Twig pour créer des modèles par langues pour les modèles d\'incidents.', - ], - ], - - 'schedules' => [ - 'name' => 'Nom', - 'status' => 'Statut', - 'message' => 'Message', - 'message-help' => 'Vous pouvez également utiliser le format Markdown.', - 'scheduled_at' => 'Pour quand la maintenance est-elle planifiée ?', - 'completed_at' => 'Quand est-ce que cette maintenance sera terminée ?', - 'templates' => [ - 'name' => 'Nom', - 'template' => 'Modèle', - 'twig' => 'Vous pouvez utiliser Twig pour créer des modèles par langues pour les modèles d\'incidents.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nom', - 'status' => 'Statut', - 'group' => 'Groupe', - 'description' => 'Description', - 'link' => 'Lien', - 'tags' => 'Mots-clés', - 'tags-help' => 'Séparés par des virgules.', - 'enabled' => 'Activer le composant ?', - - 'groups' => [ - 'name' => 'Nom', - 'collapsing' => 'Afficher/Cacher les options', - 'visible' => 'Toujours déplier', - 'collapsed' => 'Réduire le groupe par défaut', - 'collapsed_incident' => 'Réduire le groupe par défaut, mais déplier s\'il y a des incidents', - 'visibility' => 'Visibilité', - 'visibility_public' => 'Visible au public', - 'visibility_authenticated' => 'Visible uniquement aux utilisateurs connectés', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Nom', - 'description' => 'Description', - 'start_at' => 'Heure de début planifiée', - 'timezone' => 'Fuseau horaire', - 'schedule_frequency' => 'Fréquence de planification (en secondes)', - 'completion_latency' => 'Délai d’achèvement (en secondes)', - 'group' => 'Groupe', - 'active' => 'Actif ?', - 'groups' => [ - 'name' => 'Nom du groupe', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nom', - 'suffix' => 'Suffixe', - 'description' => 'Description', - 'description-help' => 'Vous pouvez également utiliser le format Markdown.', - 'display-chart' => 'Afficher le graphique sur la page de statut ?', - 'default-value' => 'Valeur par défaut', - 'calc_type' => 'Calcul des données', - 'type_sum' => 'Somme', - 'type_avg' => 'Moyenne', - 'places' => 'Nombre de chiffres après la virgule', - 'default_view' => 'Vue par défaut', - 'threshold' => 'Quel intervalle en minutes entre chaque point de métrique ?', - 'visibility' => 'Visibilité', - 'visibility_authenticated' => 'Visible aux utilisateurs authentifiés', - 'visibility_public' => 'Visible à tous', - 'visibility_hidden' => 'Toujours caché', - - 'points' => [ - 'value' => 'Valeur', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Nom du site', - 'site-url' => 'URL du site', - 'display-graphs' => 'Afficher les graphiques sur la page de statut ?', - 'about-this-page' => 'À propos de cette page', - 'days-of-incidents' => 'Combien de jours d\'incidents à montrer ?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Image d\'en-tête', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Permettre aux personnes de s\'inscrire aux notifications par e-mail ?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Ne pas vérifier les utilisateurs ? (Attention, vous pourriez être spammé)', - 'automatic_localization' => 'Traduire automatiquement votre page de statut dans la langue du visiteur ?', - 'enable_external_dependencies' => 'Activer les dépendances tierces (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Afficher uniquement les jours contenant des incidents dans la timeline ?', - ], - 'analytics' => [ - 'analytics_google' => 'Code de Google Analytics', - 'analytics_gosquared' => 'Code de GoSquared Analytics', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Id du site de Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Fuseau horaire du site', - 'site-locale' => 'Langue du site', - 'date-format' => 'Format de la date', - 'incident-date-format' => 'Format de la date de l\'incident', - ], - 'security' => [ - 'allowed-domains' => 'Domaines autorisés', - 'allowed-domains-help' => 'Séparés par des virgules. Le domaine défini ci-dessus est automatiquement autorisé par défaut.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Feuille de style personnalisée', - ], - 'theme' => [ - 'background-color' => 'Couleur de fond', - 'background-fills' => 'Couleur de remplissage de l\'arrière-plan (composants, incidents, pied de page)', - 'banner-background-color' => 'Couleur d\'arrière-plan de l\'en-tête', - 'banner-padding' => 'Marge de l\'en-tête', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Couleur du texte', - 'dashboard-login' => 'Afficher le bouton "Tableau de bord" dans le pied de page ?', - 'reds' => 'Rouge (utilisé pour les erreurs)', - 'blues' => 'Bleu (utilisé pour les informations)', - 'greens' => 'Vert (utilisé pour les succès)', - 'yellows' => 'Jaune (utilisé pour les alertes)', - 'oranges' => 'Orange (utilisé pour les informations)', - 'metrics' => 'Remplissage des données', - 'links' => 'Liens', - ], - ], - - 'user' => [ - 'username' => 'Nom d\'utilisateur', - 'email' => 'Adresse e-mail', - 'password' => 'Mot de passe', - 'api-token' => 'Jeton de l\'API', - 'api-token-help' => 'Régénérer votre jeton API empêchera les applications existantes d\'accéder à Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'Niveau de l\'utilisateur', - 'levels' => [ - 'admin' => 'Administrateur', - 'user' => 'Utilisateur', - ], - '2fa' => [ - 'help' => 'Activer l\'authentification à deux facteurs augmente la sécurité de votre compte. Vous aurez besoin de télécharger Google Authenticator ou une application similaire sur votre appareil mobile. Lorsque vous vous connectez, il vous sera demandé de fournir un jeton généré par l\'application.', - ], - 'team' => [ - 'description' => 'Invitez les membres de votre équipe en entrant leurs adresses e-mail ici.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Sélection du fuseau horaire', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Ajouter', - 'save' => 'Enregistrer', - 'update' => 'Mettre à jour', - 'create' => 'Créer', - 'edit' => 'Modifier', - 'delete' => 'Supprimer', - 'submit' => 'Envoyer', - 'cancel' => 'Annuler', - 'remove' => 'Enlever', - 'invite' => 'Inviter', - 'signup' => 'Inscription', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optionnel', -]; diff --git a/resources/lang/fr-FR/notifications.php b/resources/lang/fr-FR/notifications.php deleted file mode 100644 index ac88817d..00000000 --- a/resources/lang/fr-FR/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Gérer l\'abonnement', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/fr-FR/pagination.php b/resources/lang/fr-FR/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/fr-FR/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/fr-FR/setup.php b/resources/lang/fr-FR/setup.php deleted file mode 100644 index 8319d732..00000000 --- a/resources/lang/fr-FR/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Installation', - 'title' => 'Configuration de Cachet', - 'service_details' => 'Détails du service', - 'env_setup' => 'Configuration de l\'environnement', - 'status_page_setup' => 'Configuration de la page de statut', - 'show_support' => 'Afficher votre soutien à Cachet ?', - 'admin_account' => 'Compte administrateur', - 'complete_setup' => 'Terminer la configuration', - 'completed' => 'Cachet a été configuré avec succès !', - 'finish_setup' => 'Aller au tableau de bord', -]; diff --git a/resources/lang/fr-FR/validation.php b/resources/lang/fr-FR/validation.php deleted file mode 100644 index f9227317..00000000 --- a/resources/lang/fr-FR/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute doit être accepté.', - 'active_url' => ':attribute n\'est pas une URL valide.', - 'after' => ':attribute doit être une date supérieure à :date.', - 'alpha' => ':attribute ne doit contenir que des lettres.', - 'alpha_dash' => ':attribute doit contenir seulement des lettres, nombres et des tirets.', - 'alpha_num' => ':attribute ne doit contenir que des lettres et des nombres.', - 'array' => ':attribute doit être un tableau.', - 'before' => ':attribute doit être une date inférieur à :date.', - 'between' => [ - 'numeric' => ':attribute doit être compris entre :min et :max.', - 'file' => ':attribute doit être compris entre :min et :max kilo-octets.', - 'string' => ':attribute doit être entre :min et :max caractères.', - 'array' => 'attribute doit être entre :min et :max éléments.', - ], - 'boolean' => 'Le champ :attribute doit être vrai ou faux.', - 'confirmed' => 'La confirmation de :attribute ne correspond pas.', - 'date' => ':attribute n\'est pas une date valide.', - 'date_format' => ':attribute ne correspond pas au format :format.', - 'different' => ':attribute et :other doivent être différents.', - 'digits' => ':attribute doit avoir :digits chiffres.', - 'digits_between' => ':attribute doit être entre :min et :max chiffres.', - 'email' => ':attribute doit être une adresse courriel valide.', - 'exists' => 'Le :attribute sélectionné est invalide.', - 'distinct' => ':attribute possède une valeur en double.', - 'filled' => 'Le champ :attribute est requis.', - 'image' => ':attribute doit être une image.', - 'in' => 'Le :attribute sélectionné est invalide.', - 'in_array' => 'Le champ :attribute n\'existe pas dans :other.', - 'integer' => ':attribute doit être un nombre entier.', - 'ip' => ':attribute doit être une adresse IP valide.', - 'json' => ':attribut doit être une chaîne JSON valide.', - 'max' => [ - 'numeric' => ':attribute ne doit pas dépasser :max.', - 'file' => ':attribute ne peut être plus grand que :max kilo-octets.', - 'string' => ':attribute ne doit pas dépasser :max caractères.', - 'array' => ':attribute ne doit dépasser :max éléments.', - ], - 'mimes' => ':attribute doit être un fichier de type: :values.', - 'min' => [ - 'numeric' => ':attribute doit être au moins de :min.', - 'file' => ':attribute doit être au moins de :min kilo-octets.', - 'string' => ':attribute doit comporter au minimum :min caractères.', - 'array' => ':attribute doit contenir au moins :min éléments.', - ], - 'not_in' => 'Le :attribute sélectionné est invalide.', - 'numeric' => ':attribute doit être un nombre.', - 'present' => 'Le champs :attribute doit être rempli.', - 'regex' => 'Le format de :attribute n\'est pas valide.', - 'required' => 'Le champ :attribute est requis.', - 'required_if' => 'Le champ :attribute est requis lorsque :other est :value.', - 'required_unless' => 'Le champ :attribute est requis sauf si :other est dans :values.', - 'required_with' => 'Le champ :attribute est requis lorsque :values est présent.', - 'required_with_all' => 'Le champ :attribute est requis lorsque :values est présent.', - 'required_without' => 'Le champ :attribute est nécessaire quand :values n\'est pas présent.', - 'required_without_all' => 'Le champ :attribute est requis lorsque aucune des :values sont présentes.', - 'same' => 'Le :attribute et :other doivent correspondre.', - 'size' => [ - 'numeric' => ':attribute doit faire :size.', - 'file' => 'attribute doit être de :size kilo-octets.', - 'string' => 'L\'attribut ":attribute" doit faire :size caractères.', - 'array' => ':attribute doit contenir :size éléments.', - ], - 'string' => ':attribut doit être une chaîne de caractères.', - 'timezone' => ':attribute doit être une zone valide.', - 'unique' => ':attribute a déjà été pris.', - 'url' => 'Le format de :attribute n\'est pas valide.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'Message personnalisé', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/fr/cachet.php b/resources/lang/fr/cachet.php deleted file mode 100644 index ee6aa08f..00000000 --- a/resources/lang/fr/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Dernière mise à jour :timestamp', - 'status' => [ - 1 => 'Opérationnel', - 2 => 'Problèmes de performances', - 3 => 'Panne partielle', - 4 => 'Panne majeure', - ], - 'group' => [ - 'other' => 'Autres composants', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Aucun incident signalé', - 'past' => 'Incidents antérieurs', - 'previous_week' => 'Semaine précédente', - 'next_week' => 'Semaine suivante', - 'scheduled' => 'Maintenance Planifiée', - 'scheduled_at' => ', planifé à :timestamp', - 'status' => [ - 0 => 'Planifié', // TODO: Hopefully remove this. - 1 => 'Enquête en cours', - 2 => 'Identifié', - 3 => 'Sous surveillance', - 4 => 'Corrigé', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Système opérationnel|[2,Inf] Tous les systèmes sont opérationnels', - 'bad' => '[0,1] Le système rencontre actuellement des problèmes|[2,Inf] Certains systèmes rencontrent des problèmes', - 'major' => '[0,1] Le service rencontre une panne majeure|[2,Inf] Certains systèmes rencontrent une panne majeure', - ], - - 'api' => [ - 'regenerate' => 'Régénérer la clé API', - 'revoke' => 'Révoquer la clé API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Dernière heure', - 'hourly' => 'Les 12 dernières heures', - 'weekly' => 'Semaine', - 'monthly' => 'Mois', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Abonnez-vous pour obtenir les dernières mises à jour.', - 'button' => 'S\'abonner', - 'manage' => [ - 'no_subscriptions' => 'Vous êtes actuellement abonné à toutes les mises à jour.', - 'my_subscriptions' => 'Vous êtes actuellement abonné aux mises à jour suivantes.', - ], - 'email' => [ - 'subscribe' => 'S\'abonner aux notifications par email.', - 'subscribed' => 'Vous êtes abonné aux notifications par email, veuillez vérifier votre messagerie pour confirmer votre adresse.', - 'verified' => 'Votre abonnement aux notifications par email a été confirmé. Merci !', - 'manage' => 'Gérer votre abonnement', - 'unsubscribe' => 'Désinscription des mises à jour par courriel.', - 'unsubscribed' => 'Votre abonnement aux notifications par email a été annulé.', - 'failure' => 'Une erreur est survenue lors de l\'abonnement.', - 'already-subscribed' => 'Impossible de s\'abonner avec l\'adresse e-mail :email car celle-ci est déjà abonnée.', - 'verify' => [ - 'text' => "Veuillez confirmer votre abonnement par courriel aux changements de statut de :app_name.\n:link", - 'html' => '

Veuillez confirmer votre abonnement par courriel aux changements de statut de :app_name.

', - 'button' => 'Confirmer l\'abonnement', - ], - 'maintenance' => [ - 'subject' => '[Maintenance planifiée] :name', - ], - 'incident' => [ - 'subject' => '[Nouvel incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Mise à jour du statut d\'un composant', - 'text' => 'Le statut du composant :component_name a été mis à jour. Il est maintenant :component_human_status.\nMerci, :app_name', - 'html' => '

Le statut du composant :component_name a été mis à jour. Il est maintenant :component_human_status.

Merci, :app_name

', - 'tooltip-title' => 'S\'abonner aux notifications pour :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Vous avez été invité à la page de statut de l'équipe :app_name , veuillez suivre le lien suivant pour vous inscire \n:link\nMerci, :app_name", - 'html' => '

Vous avez été invité à la page de statut de l\'équipe :app_name, veuillez suivre le lien suivant pour vous inscrire.

:link

Merci, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Inscription', - 'username' => 'Nom d\'utilisateur', - 'email' => 'Adresse e-mail', - 'password' => 'Mot de passe ', - 'success' => 'Votre compte a été créé.', - 'failure' => 'Un problème est survenu lors de votre inscription.', - ], - - 'system' => [ - 'update' => 'Il y a une nouvelle version de Cachet disponible. Vous pouvez trouver des renseignements concernant la procédure de mise à jour ici!', - ], - - // Modal - 'modal' => [ - 'close' => 'Fermer', - 'subscribe' => [ - 'title' => 'S\'abonner aux mises à jour du status du composant', - 'body' => 'Entrez votre adresse e-mail pour vous abonner aux mises à jour de ce composant. Si vous êtes déjà abonné, vous recevez déjà des notifications pour ce composant.', - 'button' => 'S\'abonner', - ], - ], - - // Other - 'home' => 'Accueil', - 'description' => 'Restez à jour avec les dernières mises à jour de :app.', - 'powered_by' => 'Propulsé par Cachet.', - 'about_this_site' => 'À propos du site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Flux des statuts', - -]; diff --git a/resources/lang/fr/dashboard.php b/resources/lang/fr/dashboard.php deleted file mode 100644 index b9f2a379..00000000 --- a/resources/lang/fr/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Tableau de bord', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Planification', - 'incidents' => 'Incidents', - 'logged' => '{0} Aucun incident, bon travail.|Vous avez un incident signalé.|Vous avez :count incidents signalés.', - 'incident-create-template' => 'Créer un modèle', - 'incident-templates' => 'Modèles d\'incident', - 'add' => [ - 'title' => 'Ajouter un incident', - 'success' => 'Incident ajouté.', - 'failure' => 'Une erreur s\'est produite en ajoutant l\'incident, veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Modifier un incident', - 'success' => 'Incident mis à jour.', - 'failure' => 'Une erreur s\'est produite en modifiant l\'incident, veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'L\'incident a été supprimé et ne sera pas affiché sur votre page de statut.', - 'failure' => 'L\'incident n\'a pas pu être supprimé. Veuillez réessayer.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Modèles d\'incident', - 'add' => [ - 'title' => 'Créer un modèle d\'incident', - 'message' => 'Vous devriez ajouter un modèle d\'incident.', - 'success' => 'Votre nouveau modèle d\'incident a été créé.', - 'failure' => 'Une erreur est survenue avec le modèle d\'incident.', - ], - 'edit' => [ - 'title' => 'Éditer le modèle', - 'success' => 'Le modèle d\'incident a été mis à jour.', - 'failure' => 'Une erreur est survenue lors de la mise à jour du modèle d\'incident', - ], - 'delete' => [ - 'success' => 'Le modèle d\'incident a été supprimé.', - 'failure' => 'Le modèle d\'incident n\'a pas pu être supprimé. Veuillez réessayer.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance planifiée', - 'logged' => '{0} Aucune maintenance en cours, félicitations.|Vous avez une maintenance planifiée.|Vous avez :count maintenances planifiées.', - 'scheduled_at' => 'Planifiée à :timestamp', - 'add' => [ - 'title' => 'Ajouter une maintenance planifiée', - 'success' => 'Planification ajoutée.', - 'failure' => 'Une erreur est survenue lors de l\'ajout de la planification, veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Modifier la maintenance planifiée', - 'success' => 'La planification a été mise à jour !', - 'failure' => 'Une erreur est survenue lors de l\'édition de la planification.', - ], - 'delete' => [ - 'success' => 'La planification a été supprimée et ne sera pas affichée sur votre page de statut.', - 'failure' => 'La maintenance planifiée n\'a pas pu être supprimée. Veuillez réessayer.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Composants', - 'component_statuses' => 'Statut des composants', - 'listed_group' => 'Groupés par :nom', - 'add' => [ - 'title' => 'Ajouter un composant', - 'message' => 'Vous devez ajouter un composant.', - 'success' => 'Composant créé.', - 'failure' => 'Un problème est survenu avec le composant. Veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Modifier un composant', - 'success' => 'Composant mis à jour.', - 'failure' => 'Un problème est survenu avec le composant. Veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'Le composant a été supprimé !', - 'failure' => 'Le composant n\'a pas pu être supprimé. Veuillez réessayer.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Groupe de composants|Groupes de composants', - 'no_components' => 'Vous devez ajouter un groupe de composants.', - 'add' => [ - 'title' => 'Ajouter un groupe de composants', - 'success' => 'Groupe de composants ajouté.', - 'failure' => 'Un problème est survenu avec le groupe de composants. Veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Modifier un groupe de composants', - 'success' => 'Groupe de composants mis à jour.', - 'failure' => 'Un problème est survenu avec le groupe de composants. Veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'Le groupe de composants a été supprimé !', - 'failure' => 'Le groupe de composants n\'a pas pu être supprimé. Veuillez réessayer.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Indicateur', - 'add' => [ - 'title' => 'Créer une métrique', - 'message' => 'Vous devez ajouter un indicateur.', - 'success' => 'Indicateur créé.', - 'failure' => 'Une erreur est survenue avec l\'indicateur. Veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Modifier une métrique', - 'success' => 'Indicateur mise à jour.', - 'failure' => 'Une erreur est survenue avec l\'indicateur. Veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'La métrique a été supprimé et ne sera plus visible sur votre page de statut.', - 'failure' => 'L\'indicateur n\'a pas pu être supprimé. Veuillez réessayer.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonnés', - 'description' => 'Les abonnés recevront des notifications par e-mail lorsque des incidents sont créés ou des composants sont mis à jour.', - 'verified' => 'Vérifié', - 'not_verified' => 'Non vérifié', - 'subscriber' => ':email, abonné à :date', - 'no_subscriptions' => 'Souscrire à toutes les mises à jour', - 'add' => [ - 'title' => 'Ajouter un abonné', - 'success' => 'L\'abonné a été ajouté !', - 'failure' => 'Une erreur s\'est produite lors de l\'ajout de l\'abonné. Veuillez réessayer.', - 'help' => 'Saisissez un abonné par ligne.', - ], - 'edit' => [ - 'title' => 'Mettre à jour l\'abonné', - 'success' => 'L\'abonné a été mis à jour !', - 'failure' => 'Une erreur s\'est produite lors de la modification de l\'abonné. Veuillez réessayer.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Équipe', - 'member' => 'Membre', - 'profile' => 'Profil utilisateur', - 'description' => 'Les membres de l\'équipe pourront ajouter & modifier les composants et les incidents.', - 'add' => [ - 'title' => 'Ajouter un nouveau membre de l\'équipe', - 'success' => 'Membre de l\'équipe a ajouté.', - 'failure' => 'Le membre de l\'équipe n\'a pas pu être ajouté. Veuillez réessayer.', - ], - 'edit' => [ - 'title' => 'Mettre le profil à jour', - 'success' => 'Profil mis à jour.', - 'failure' => 'Une erreur s\'est produite lors de la mise à jour du profil. Veuillez réessayer.', - ], - 'delete' => [ - 'success' => 'Le membre de l\'équipe a été supprimé et n\'aura plus l\'accès au tableau de bord !', - 'failure' => 'Le membre de l\'équipe n\'a pas pu être ajouté. Veuillez réessayer.', - ], - 'invite' => [ - 'title' => 'Inviter un nouveau membre de l\'équipe', - 'success' => 'Nouveau membre invité.', - 'failure' => 'L\'invitation n\'a pas pu être envoyé. Veuillez réessayer.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Paramètres', - 'app-setup' => [ - 'app-setup' => 'Configuration de l\'application', - 'images-only' => 'Seules les images peuvent être envoyées.', - 'too-big' => 'Le fichier envoyé est trop grand. Envoyer une image d\'une taille inférieur à :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localisation', - ], - 'customization' => [ - 'customization' => 'Personnalisation', - 'header' => 'Entête HTML personnalisé', - 'footer' => 'Pied de page HTML personnalisé', - ], - 'security' => [ - 'security' => 'Sécurité', - 'two-factor' => 'Utilisateurs sans authentification à deux facteurs', - ], - 'stylesheet' => [ - 'stylesheet' => 'Feuille de style', - ], - 'theme' => [ - 'theme' => 'Thème', - ], - 'edit' => [ - 'success' => 'Paramètres sauvegardés.', - 'failure' => 'Les paramètres n\'ont pas pu être sauvegardés.', - ], - 'credits' => [ - 'credits' => 'Crédits', - 'contributors' => 'Contributeurs', - 'license' => 'Cachet est un logiciel libre sous licence BSD-3 édité par Alt Three Services Limited.', - 'backers-title' => 'Partenaires financiers et sponsors', - 'backers' => 'Si vous souhaitez aider des développements futurs jetez un œil à la campagne Cachet Patreon.', - 'thank-you' => 'Merci à chacun des :count contributeurs.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Connexion', - 'logged_in' => 'Vous êtes connecté.', - 'welcome' => 'Re-bonjour !', - 'two-factor' => 'Veuillez entrer votre jeton.', - ], - - // Sidebar footer - 'help' => 'Aide', - 'status_page' => 'Page de statut', - 'logout' => 'Déconnexion', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Fantastique.', - 'whoops' => 'Oups.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Supportez Cachet', - 'support_subtitle' => 'Jetez un œil à la page Patreon!', - 'news' => 'Dernières actualités', - 'news_subtitle' => 'Obtenez les dernières mises à jour', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Bienvenue sur votre page de statut !', - 'message' => 'Votre page de statut est presque prête ! Vous voudrez peut-être configurer ces paramètres supplémentaires', - 'close' => 'Aller directement à mon tableau de bord', - 'steps' => [ - 'component' => 'Créer des composants', - 'incident' => 'Créer des incidents', - 'customize' => 'Personnaliser', - 'team' => 'Ajouter des utilisateurs', - 'api' => 'Générer un jeton API', - 'two-factor' => 'Authentification à deux facteurs', - ], - ], - -]; diff --git a/resources/lang/fr/forms.php b/resources/lang/fr/forms.php deleted file mode 100644 index a590a54d..00000000 --- a/resources/lang/fr/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Adresse e-mail', - 'username' => 'Nom d\'utilisateur', - 'password' => 'Mot de passe ', - 'site_name' => 'Nom du site', - 'site_domain' => 'Nom de domaine du site', - 'site_timezone' => 'Choisissez votre fuseau horaire', - 'site_locale' => 'Sélectionner votre langue', - 'enable_google2fa' => 'Activer l\'authentification à deux facteurs de Google', - 'cache_driver' => 'Gestionnaire de cache', - 'session_driver' => 'Gestionnaire de session', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nom d\'utilisateur ou e-mail', - 'email' => 'Email', - 'password' => 'Mot de passe ', - '2fauth' => 'Code d\'authentification', - 'invalid' => 'Nom d\'utilisateur ou mot de passe incorrect', - 'invalid-token' => 'Jeton invalide', - 'cookies' => 'Vous devez activer les cookies pour vous connecter.', - 'rate-limit' => 'Limite de tentatives atteinte.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nom', - 'status' => 'Statut', - 'component' => 'Composant', - 'message' => 'Message', - 'message-help' => 'Vous pouvez également utiliser le format Markdown.', - 'scheduled_at' => 'Quand planifier la maintenance ?', - 'incident_time' => 'Quand s\'est produit cet incident ?', - 'notify_subscribers' => 'Notifier les abonnés ?', - 'visibility' => 'Visibilité de l\'incident', - 'public' => 'Visible par le public', - 'logged_in_only' => 'Uniquement visible par les utilisateurs enregistrés', - 'templates' => [ - 'name' => 'Nom', - 'template' => 'Modèle', - 'twig' => 'Vous pouvez utiliser Twig pour créer des modèles par langues pour les modèles d\'incidents.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nom', - 'status' => 'Etat', - 'group' => 'Groupe', - 'description' => 'Description', - 'link' => 'Lien', - 'tags' => 'Mots-clés', - 'tags-help' => 'Séparés par des virgules.', - 'enabled' => 'Activer le composant ?', - - 'groups' => [ - 'name' => 'Nom', - 'collapsing' => 'Choisir la visibilité du groupe', - 'visible' => 'Toujours déplier', - 'collapsed' => 'Réduire le groupe par défaut', - 'collapsed_incident' => 'Réduire le groupe par défaut, mais déplier s\'il y a des incidents', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nom', - 'suffix' => 'Suffixe', - 'description' => 'Description', - 'description-help' => 'Vous pouvez également utiliser le format Markdown.', - 'display-chart' => 'Afficher le graphique sur la page de statut ?', - 'default-value' => 'Valeur par défaut', - 'calc_type' => 'Calcul des données', - 'type_sum' => 'Somme', - 'type_avg' => 'Moyenne', - 'places' => 'Nombre de chiffres après la virgule', - 'default_view' => 'Vue par défaut', - 'threshold' => 'Quel intervalle en minutes entre chaque point de métrique ?', - - 'points' => [ - 'value' => 'Valeur', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Nom du site', - 'site-url' => 'URL du site', - 'display-graphs' => 'Afficher les graphiques sur la page de statut ?', - 'about-this-page' => 'À propos de cette page', - 'days-of-incidents' => 'Combien de jours d\'incidents à montrer ?', - 'banner' => 'Image d\'en-tête', - 'banner-help' => 'Il est recommandé de téléchargez un fichier ne dépassant pas 930px de large .', - 'subscribers' => 'Permettre aux personnes de s\'inscrire aux notifications par e-mail ?', - 'automatic_localization' => 'Traduire automatiquement votre page de statut dans la langue du visiteur ?', - ], - 'analytics' => [ - 'analytics_google' => 'Code de Google Analytics', - 'analytics_gosquared' => 'Code de GoSquared Analytics', - 'analytics_piwik_url' => 'URL de votre instance de Piwik (sans http(s)://)', - 'analytics_piwik_siteid' => 'Id du site de Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Fuseau horaire du site', - 'site-locale' => 'Langue du site', - 'date-format' => 'Format de la date', - 'incident-date-format' => 'Format de la date de l\'incident', - ], - 'security' => [ - 'allowed-domains' => 'Domaines autorisés', - 'allowed-domains-help' => 'Séparés par des virgules. Le domaine défini ci-dessus est automatiquement autorisé par défaut.', - ], - 'stylesheet' => [ - 'custom-css' => 'Feuille de style personnalisée', - ], - 'theme' => [ - 'background-color' => 'Couleur de fond', - 'background-fills' => 'Couleur de remplissage de l\'arrière-plan (composants, incidents, pied de page)', - 'banner-background-color' => 'Couleur d\'arrière-plan de l\'en-tête', - 'banner-padding' => 'Marge de l\'en-tête', - 'fullwidth-banner' => 'Activer l\'en-tête en pleine largeur ?', - 'text-color' => 'Couleur du texte', - 'dashboard-login' => 'Afficher le bouton "Tableau de bord" dans le pied de page ?', - 'reds' => 'Rouge (utilisé pour les erreurs)', - 'blues' => 'Bleu (utilisé pour les informations)', - 'greens' => 'Vert (utilisé pour les succès)', - 'yellows' => 'Jaune (utilisé pour les alertes)', - 'oranges' => 'Orange (utilisé pour les informations)', - 'metrics' => 'Remplissage des données', - 'links' => 'Liens', - ], - ], - - 'user' => [ - 'username' => 'Nom d\'utilisateur', - 'email' => 'Email', - 'password' => 'Mot de passe ', - 'api-token' => 'Jeton de l\'API', - 'api-token-help' => 'Régénérer votre jeton API empêchera les applications existantes d\'accéder à Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'Niveau de l\'utilisateur', - 'levels' => [ - 'admin' => 'Administrateur', - 'user' => 'Utilisateur', - ], - '2fa' => [ - 'help' => 'Activer l\'authentification à deux facteurs augmente la sécurité de votre compte. Vous aurez besoin de télécharger Google Authenticator ou une application similaire sur votre appareil mobile. Lorsque vous vous connectez, il vous sera demandé de fournir un jeton généré par l\'application.', - ], - 'team' => [ - 'description' => 'Invitez les membres de votre équipe en entrant leurs adresses e-mail ici.', - 'email' => 'E-mail #:id', - ], - ], - - // Buttons - 'add' => 'Ajouter', - 'save' => 'Enregistrer', - 'update' => 'Mettre à jour', - 'create' => 'Créer', - 'edit' => 'Modifier', - 'delete' => 'Supprimer', - 'submit' => 'Envoyer', - 'cancel' => 'Annuler', - 'remove' => 'Enlever', - 'invite' => 'Inviter', - 'signup' => 'Inscription', - - // Other - 'optional' => '* Optionnel', -]; diff --git a/resources/lang/fr/pagination.php b/resources/lang/fr/pagination.php deleted file mode 100644 index 21a2f594..00000000 --- a/resources/lang/fr/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Précédent', - 'next' => 'Suivant »', - -]; diff --git a/resources/lang/fr/setup.php b/resources/lang/fr/setup.php deleted file mode 100644 index 8319d732..00000000 --- a/resources/lang/fr/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Installation', - 'title' => 'Configuration de Cachet', - 'service_details' => 'Détails du service', - 'env_setup' => 'Configuration de l\'environnement', - 'status_page_setup' => 'Configuration de la page de statut', - 'show_support' => 'Afficher votre soutien à Cachet ?', - 'admin_account' => 'Compte administrateur', - 'complete_setup' => 'Terminer la configuration', - 'completed' => 'Cachet a été configuré avec succès !', - 'finish_setup' => 'Aller au tableau de bord', -]; diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php deleted file mode 100644 index fc6417dc..00000000 --- a/resources/lang/fr/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute doit être accepté.', - 'active_url' => ':attribute n\'est pas une URL valide.', - 'after' => ':attribute doit être une date supérieure à :date.', - 'alpha' => ':attribute ne doit contenir que des lettres.', - 'alpha_dash' => ':attribute doit contenir seulement des lettres, nombres et des tirets.', - 'alpha_num' => ':attribute ne doit contenir que des lettres et des nombres.', - 'array' => ':attribute doit être un tableau.', - 'before' => ':attribute doit être une date inférieur à :date.', - 'between' => [ - 'numeric' => ':attribute doit être une date inférieur à :date.', - 'file' => 'La valeur de :attribute doit être comprise entre :min et :max.', - 'string' => 'La valeur :attribute doit être comprise entre :min et :max kilobytes.', - 'array' => 'attribute doit être entre :min et :max éléments.', - ], - 'boolean' => 'attribute doit être entre :min et :max éléments.', - 'confirmed' => 'Le champ :attribute doit être vrai ou faux.', - 'date' => 'La confirmation de :attribute ne correspond pas.', - 'date_format' => ':attribute n\'est pas une date valide.', - 'different' => ':attribute ne correspond pas au format :format.', - 'digits' => ':attribute et :other doivent être différents.', - 'digits_between' => ':attribute doit contenir :digits chiffres.', - 'email' => 'La valeur de :attribute doit être comprise entre :min et :max chiffres.', - 'exists' => ':attribute doit être une adresse électronique valide.', - 'distinct' => ':attribute possède une valeur en double.', - 'filled' => 'Le format de :attribute n\'est pas valide.', - 'image' => ':attribute doit être une image.', - 'in' => ':attribute doit être une image.', - 'in_array' => 'Le champ :attribute n\'existe pas dans :other.', - 'integer' => 'Le sélection :attribute n\'est pas valide.', - 'ip' => ':attribute doit être un entier.', - 'json' => ':attribut doit être une chaîne JSON valide.', - 'max' => [ - 'numeric' => ':attribute doit être une adresse IP valide.', - 'file' => ':attribute ne doit pas être plus grand que :max.', - 'string' => ':attribute ne doit pas dépasser :max kilo-octets.', - 'array' => ':attribute ne doit dépasser :max éléments.', - ], - 'mimes' => ':attribute ne doit dépasser :max éléments.', - 'min' => [ - 'numeric' => ':attribute doit être un fichier de type: :values.', - 'file' => ':attribute doit être au moins de :min kilo-octets.', - 'string' => ':attribute doit être au moins de :min kilo-octets.', - 'array' => ':attribute doit avoir au moins :min caractères.', - ], - 'not_in' => ':attribute doit avoir au moins :min éléments.', - 'numeric' => 'Le sélection :attribute n\'est pas valide.', - 'present' => 'Le champs :attribute doit être rempli.', - 'regex' => ':attribute doit être un nombre.', - 'required' => 'Le format de :attribute n\'est pas valide.', - 'required_if' => 'Le champ :attribute est requis.', - 'required_unless' => 'Le champ :attribute est requis sauf si :other est dans :values.', - 'required_with' => 'Le champ :attribute est requis lorsque :other est :value.', - 'required_with_all' => 'Le champ :attribute est requis lorsque :values est présent.', - 'required_without' => 'Le champ :attribute est requis lorsque :values est présent.', - 'required_without_all' => 'Le champ :attribute est requis lorsque :values n\'est pas présent.', - 'same' => 'Le champ :attribute est requis lorsque rien de :values n\'est présent.', - 'size' => [ - 'numeric' => ':attribute et :other doivent correspondre.', - 'file' => 'attribute doit être de :size kilo-octets.', - 'string' => 'L\'attribut ":attribute" doit faire :size caractères.', - 'array' => 'L\'attribut ":attribute" doit faire :size caractères.', - ], - 'string' => ':attribute doit contenir :size éléments.', - 'timezone' => ':attribute doit être une zone valide.', - 'unique' => ':attribute a déjà été pris.', - 'url' => 'Le format de :attribute n\'est pas valide.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'Message personnalisé', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/he-IL/cachet.php b/resources/lang/he-IL/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/he-IL/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/he-IL/dashboard.php b/resources/lang/he-IL/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/he-IL/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/he-IL/forms.php b/resources/lang/he-IL/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/he-IL/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/he-IL/notifications.php b/resources/lang/he-IL/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/he-IL/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/he-IL/pagination.php b/resources/lang/he-IL/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/he-IL/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/he-IL/setup.php b/resources/lang/he-IL/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/he-IL/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/he-IL/validation.php b/resources/lang/he-IL/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/he-IL/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/he/cachet.php b/resources/lang/he/cachet.php deleted file mode 100644 index d7561f01..00000000 --- a/resources/lang/he/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Operational', - 2 => 'בעיות ביצועים', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'previous_week' => 'Previous', - 'next_week' => 'Next', - 'scheduled' => 'תחזוקה מתוזמנת', - 'scheduled_at' => ', scheduled :timestamp', - 'status' => [ - 0 => 'מתוזמן', // TODO: Hopefully remove this. - 1 => 'Investigating', - 2 => 'מזוהה', - 3 => 'צופה', - 4 => 'תוקן', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'צור מפתח API', - 'revoke' => 'לבטל את מפתח ה-API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to get the most recent updates', - 'button' => 'Subscribe', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'כתובת דוא"ל', - 'password' => 'סיסמא', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/he/dashboard.php b/resources/lang/he/dashboard.php deleted file mode 100644 index 481fb781..00000000 --- a/resources/lang/he/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Dashboard', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'אירועים', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'תחזוקה מתוזמנת', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'רכיבים', - 'component_statuses' => 'רכיב סטטוסים', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'מדדים', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'אבטחה', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'ערכת נושא', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'התחברות למערכת', - 'logged_in' => 'אתה מחובר.', - 'welcome' => 'ברוך הבא!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'עזרה', - 'status_page' => 'Status Page', - 'logout' => 'יציאה', - - // Notifications - 'notifications' => [ - 'notifications' => 'התראות', - 'awesome' => 'נהדר.', - 'whoops' => 'אופס.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'הוסף משתמשים', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/he/forms.php b/resources/lang/he/forms.php deleted file mode 100644 index abf82eb9..00000000 --- a/resources/lang/he/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'כתובת דוא"ל', - 'username' => 'שם משתמש', - 'password' => 'סיסמא', - 'site_name' => 'שם האתר', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'בחר איזור זמן', - 'site_locale' => 'בחר שפה', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'כתובת דוא"ל', - 'password' => 'סיסמא', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'שם', - 'status' => 'סטטוס', - 'component' => 'Component', - 'message' => 'הודעה', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'למתי לתזמן את התחזוקה?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'שם', - 'template' => 'תבנית', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'שם', - 'status' => 'סטטוס', - 'group' => 'קבוצה', - 'description' => 'הגדרה', - 'link' => 'קישור', - 'tags' => 'טאגים', - 'tags-help' => 'מופרד באמצעות פסיקים.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'שם', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'שם', - 'suffix' => 'סיומת', - 'description' => 'הגדרה', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'ערך', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'שם האתר', - 'site-url' => 'כתובת url של האתר', - 'display-graphs' => 'להציג גרפים בדף של סטטוס?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'כמה ימים של אירועים להראות?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'כתובת דוא"ל', - 'password' => 'סיסמא', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/he/pagination.php b/resources/lang/he/pagination.php deleted file mode 100644 index 3d774e3f..00000000 --- a/resources/lang/he/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'קודם', - 'next' => 'הבא', - -]; diff --git a/resources/lang/he/setup.php b/resources/lang/he/setup.php deleted file mode 100644 index a281bb1d..00000000 --- a/resources/lang/he/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'הגדרות', - 'title' => 'התקנת Cachet', - 'service_details' => 'פרטי שרות', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'הגדרת עמוד מצב', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'חשבון מנהל המערכת', - 'complete_setup' => 'התקנה הסתיימה', - 'completed' => 'Cachet הוגדר בהצלחה!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/he/validation.php b/resources/lang/he/validation.php deleted file mode 100644 index ed280d39..00000000 --- a/resources/lang/he/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'attribute: אינו כתובת URL חוקית.', - 'after' => 'attribute: חייב להיות תאריך אחרי date:', - 'alpha' => 'attribute: יכולים להכיל רק אותיות.', - 'alpha_dash' => 'attribute: יכולה להכיל רק אותיות, מספרים, מקפים.', - 'alpha_num' => 'attribute: יכולים להכיל רק אותיות ומספרים.', - 'array' => 'attribute: חייב להיות מערך.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'attribute: חייב להיות תמונה.', - 'in' => 'attribute: חייב להיות תמונה.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/hu-HU/cachet.php b/resources/lang/hu-HU/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/hu-HU/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/hu-HU/dashboard.php b/resources/lang/hu-HU/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/hu-HU/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/hu-HU/forms.php b/resources/lang/hu-HU/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/hu-HU/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/hu-HU/notifications.php b/resources/lang/hu-HU/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/hu-HU/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/hu-HU/pagination.php b/resources/lang/hu-HU/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/hu-HU/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/hu-HU/setup.php b/resources/lang/hu-HU/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/hu-HU/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/hu-HU/validation.php b/resources/lang/hu-HU/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/hu-HU/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/hu/cachet.php b/resources/lang/hu/cachet.php deleted file mode 100644 index 9105d39e..00000000 --- a/resources/lang/hu/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Működik', - 2 => 'Teljesítmény problémák', - 3 => 'Részleges leállás', - 4 => 'Teljes leállás', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'previous_week' => 'Previous', - 'next_week' => 'Next', - 'scheduled' => 'Ütemezett karbantartás', - 'scheduled_at' => ', ütemezett :timestamp', - 'status' => [ - 0 => 'Ütemezett', // TODO: Hopefully remove this. - 1 => 'Kivizsgálás', - 2 => 'Azonosítva', - 3 => 'Megfigyelés', - 4 => 'Javítva', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'API kulcs újragenerálása', - 'revoke' => 'API kulcs visszavonása', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to get the most recent updates', - 'button' => 'Feliratkozás', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Feliratkozás e-mail értesítésekre.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Felhasználónév', - 'email' => 'E-mail cím', - 'password' => 'Jelszó', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Feliratkozás', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Státusz Feed', - -]; diff --git a/resources/lang/hu/dashboard.php b/resources/lang/hu/dashboard.php deleted file mode 100644 index 3b4d248d..00000000 --- a/resources/lang/hu/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Műszerfal', - - // Incidents - 'incidents' => [ - 'title' => 'Incidensek & Ütemezés', - 'incidents' => 'Incidensek', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Sablon létrehozása', - 'incident-templates' => 'Incidens Sablonok', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incidens frissítve.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incidens Sablonok', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Ütemezett Karbantartás', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'Add users', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/hu/forms.php b/resources/lang/hu/forms.php deleted file mode 100644 index 9cf7d893..00000000 --- a/resources/lang/hu/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'E-mail cím', - 'username' => 'Felhasználónév', - 'password' => 'Jelszó', - 'site_name' => 'Webhely neve', - 'site_domain' => 'Webhely címe', - 'site_timezone' => 'Időzóna kiválasztása', - 'site_locale' => 'Nyelv kiválasztása', - 'enable_google2fa' => 'Google Two Factor Authentication engedélyezése', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'E-mail cím', - 'password' => 'Jelszó', - '2fauth' => 'Hitelesítési kód', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Érvénytelen kulcs', - 'cookies' => 'A bejelentkezéshez engedélyezni kell a sütiket.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Név', - 'status' => 'Státusz', - 'component' => 'Komponens', - 'message' => 'Üzenet', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Név', - 'template' => 'Sablon', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Név', - 'status' => 'Státusz', - 'group' => 'Csoport', - 'description' => 'Leírás', - 'link' => 'Link', - 'tags' => 'Cimkék', - 'tags-help' => 'Vesszővel elválasztva.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Név', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Név', - 'suffix' => 'Szuffixum', - 'description' => 'Leírás', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Összeg', - 'type_avg' => 'Átlag', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Érték', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Webhely neve', - 'site-url' => 'Webhely címe', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Felhasználónév', - 'email' => 'E-mail cím', - 'password' => 'Jelszó', - 'api-token' => 'API Kulcs', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Hozzáadás', - 'save' => 'Mentés', - 'update' => 'Módosít', - 'create' => 'Létrehoz', - 'edit' => 'Szerkeszt', - 'delete' => 'Törlés', - 'submit' => 'Elküld', - 'cancel' => 'Mégsem', - 'remove' => 'Törlés', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Opcionális', -]; diff --git a/resources/lang/hu/pagination.php b/resources/lang/hu/pagination.php deleted file mode 100644 index 97574427..00000000 --- a/resources/lang/hu/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '«Előző', - 'next' => 'Következő »', - -]; diff --git a/resources/lang/hu/setup.php b/resources/lang/hu/setup.php deleted file mode 100644 index 0afb9c63..00000000 --- a/resources/lang/hu/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Telepítés', - 'title' => 'Cachet telepítése', - 'service_details' => 'A szolgáltatás részletei', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Állapotoldal beállítás', - 'show_support' => 'Cachet támogató link megjelenítése?', - 'admin_account' => 'Adminisztrátori fiók', - 'complete_setup' => 'Telepítés befejezése', - 'completed' => 'A Cachet telepítése sikeresen befejeződött!', - 'finish_setup' => 'Használat megkezdése', -]; diff --git a/resources/lang/hu/validation.php b/resources/lang/hu/validation.php deleted file mode 100644 index fe219578..00000000 --- a/resources/lang/hu/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute el kell fogadni.', - 'active_url' => ':attribute nem érvényes URL.', - 'after' => ':attribute csak :date utáni dátum lehet.', - 'alpha' => ':attribute csak betűket tartalmazhat.', - 'alpha_dash' => ':attribute csak betűket, számokat és kötőjelet tartalmazhat.', - 'alpha_num' => ':attribute csak betűket és számokat tartalmazhat.', - 'array' => ':attribute csak tömb típusú lehet.', - 'before' => ':attribute csak :date előtti dátum lehet.', - 'between' => [ - 'numeric' => ':attribute csak :date előtti dátum lehet.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => ':attribute csak :min és :max elem közötti lehet.', - ], - 'boolean' => ':attribute csak :min és :max elem közötti lehet.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => ':attribute formátuma érvénytelen.', - 'image' => ':attribute csak kép lehet.', - 'in' => ':attribute csak kép lehet.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'A :attribute -nak érvényes JSON stringnek kell lennie.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => ':attribute nem lehet több, mint :max elem.', - ], - 'mimes' => ':attribute nem lehet több, mint :max elem.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => ':attribute nem lehet kevesebb, mint :min kilobyte.', - 'string' => ':attribute nem lehet kevesebb, mint :min kilobyte.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => ':attribute formátuma érvénytelen.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => ':attribute mező kitöltése kötelező, ha az értéke :values.', - 'required_without' => ':attribute mező kitöltése kötelező, ha az értéke :values.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => ':attribute csak :size kilobyte méretű lehet.', - 'string' => ':attribute csak :size karakter lehet.', - 'array' => ':attribute csak :size karakter lehet.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute csak érvényes zóna lehet.', - 'unique' => ':attribute már létezik.', - 'url' => ':attribute formátuma érvénytelen.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'Egyéni üzenet', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/id-ID/cachet.php b/resources/lang/id-ID/cachet.php deleted file mode 100644 index 6559e751..00000000 --- a/resources/lang/id-ID/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Update terakhir :timestamp', - 'status' => [ - 0 => 'Tidak diketahui', - 1 => 'Operasional', - 2 => 'Masalah Kinerja', - 3 => 'Gagal Sebagian', - 4 => 'Kegagalan Sistem', - ], - 'group' => [ - 'other' => 'Komponen Lain', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Tidak ada insiden yang dilaporkan', - 'past' => 'Insiden sebelumnya', - 'stickied' => 'Insiden sticky', - 'scheduled' => 'Pemeliharaan', - 'scheduled_at' => ', dijadwalkan pada :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Dikirim: :timestamp', - 'status' => [ - 1 => 'Investigasi', - 2 => 'Teridentifikasi', - 3 => 'Dimonitor', - 4 => 'Selesai', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Mendatang', - 1 => 'Sedang berlangsung', - 2 => 'Selesai', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]Sistem ini sedang mengalami masalah|[2,*]Beberapa sistem mengalami masalah', - 'major' => '[0,1]Sistem mengalami masalah besar|[2,*]Beberapa sistem mengalami masalah besar', - ], - - 'api' => [ - 'regenerate' => 'Buat ulang API Key', - 'revoke' => 'Cabut API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Jam terakhir', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Daftar', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifikasi', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'Anda saat ini terdaftar untuk semua update.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'Anda saat ini berlangganan update berikut.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Langganan update email.', - 'subscribed' => 'Anda berhasil terdaftar pada notifikasi email, mohon periksa email anda untuk mengkonfirmasi pendaftaran ini.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Pendaftaran newsletter anda berhasil dikonfirmasi. Terima kasih!', - 'manage' => 'Mengelola langganan Anda', - 'unsubscribe' => 'Hapus saya dari update email.', - 'unsubscribed' => 'Langganan email anda sudah dihentikan.', - 'failure' => 'Ada yang salah dengan sistem langganan email.', - 'already-subscribed' => 'Tidak bisa mendaftarkan :email karena sudah berlangganan.', - ], - ], - - 'signup' => [ - 'title' => 'Daftar', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Akun anda berhasil dibuat.', - 'failure' => 'Ada masalah dalam pendaftaran.', - ], - - 'system' => [ - 'update' => 'Ada versi terbaru Cachet yang tersedia. Anda dapat mempelajari cara update di sini!', - ], - - // Modal - 'modal' => [ - 'close' => 'Tutup', - 'subscribe' => [ - 'title' => 'Berlangganan update komponen', - 'body' => 'Masukkan alamat email Anda untuk berlangganan update komponen ini. Jika sudah berlangganan, Anda akan menerima email untuk komponen ini.', - 'button' => 'Daftar', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Rincian dan update tentang insiden :name yang terjadi pada :date', - 'schedule' => 'Rincian tentang jadwal pemeliharaan :name mulai :startDate', - 'subscribe' => 'Berlangganan :app untuk menerima update insiden dan jadwal pemeliharaan', - 'overview' => 'Tetap up to date dengan layanan terbaru dari :app.', - ], - ], - - // Other - 'home' => 'Depan', - 'powered_by' => 'Ditenagai oleh Cachet.', - 'timezone' => 'Waktu dalam :timezone.', - 'about_this_site' => 'Tentang situs ini', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Pasokan Status', - -]; diff --git a/resources/lang/id-ID/dashboard.php b/resources/lang/id-ID/dashboard.php deleted file mode 100644 index 8fc4d62a..00000000 --- a/resources/lang/id-ID/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Insiden & Penjadwalan', - 'incidents' => 'Insiden', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Buat Template', - 'incident-templates' => 'Template Insiden', - 'updates' => [ - 'title' => 'Update insiden untuk :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Buat update insiden baru', - 'success' => 'Update baru insiden anda berhasil dibuat.', - 'failure' => 'Ada masalah dengan update insiden ini.', - ], - 'edit' => [ - 'title' => 'Edit update insiden', - 'success' => 'Update insiden berhasil diupdate.', - 'failure' => 'Ada masalah saat memperbarui update insiden', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Tambahkan Insiden', - 'success' => 'Insiden sudah ditambahkan.', - 'failure' => 'Ada kesalahan saat menambahkan insiden, silakan coba lagi.', - ], - 'edit' => [ - 'title' => 'Edit insiden', - 'success' => 'Insiden sudah diperbarui.', - 'failure' => 'Ada kesalahan sat mengedit insiden, silakan coba lagi.', - ], - 'delete' => [ - 'success' => 'Insiden sudah dihapus dan tidak akan ditampilkan pada halaman status anda.', - 'failure' => 'Insiden tidak dapat dihapus, silakan coba lagi.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Template Insiden', - 'add' => [ - 'title' => 'Buat template insiden', - 'message' => 'Create your first incident template.', - 'success' => 'Template insiden baru telah dibuat.', - 'failure' => 'Ada masalah dengan template insiden ini.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'Template insiden telah diperbarui.', - 'failure' => 'Ada masalah saat memperbarui template insiden ini', - ], - 'delete' => [ - 'success' => 'Template insiden telah dihapus.', - 'failure' => 'Template insiden tidak dapat dihapus, silakan coba lagi.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Pemeliharaan', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Dijadwalkan pada :timestamp', - 'add' => [ - 'title' => 'Tambahkan Jadwal Pemeliharaan', - 'success' => 'Jadwal sudah ditambahkan.', - 'failure' => 'Ada masalah saat menambahkan jadwal, silakan coba lagi.', - ], - 'edit' => [ - 'title' => 'Edit Jadwal Pemeliharaan', - 'success' => 'Jadwal sudah diperbarui!', - 'failure' => 'Ada masalah saat mengedit jadwal, silakan coba lagi.', - ], - 'delete' => [ - 'success' => 'Pemeliharaan terjadwal telah dihapus dan tidak akan ditampilkan pada halaman status anda.', - 'failure' => 'Pemeliharaan terjadwal tidak bisa dihapus, silakan coba lagi.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Komponen', - 'component_statuses' => 'Status Komponen', - 'listed_group' => 'Dikelompokkan dalam :name', - 'add' => [ - 'title' => 'Tambahkan Komponen', - 'message' => 'Anda perlu menambahkan komponen.', - 'success' => 'Komponen sudah dibuat.', - 'failure' => 'Ada masalah dalam grup komponen, silakan coba lagi.', - ], - 'edit' => [ - 'title' => 'Edit komponen', - 'success' => 'Komponen sudah diperbarui.', - 'failure' => 'Ada masalah dalam grup komponen, silakan coba lagi.', - ], - 'delete' => [ - 'success' => 'Komponen sudah dihapus!', - 'failure' => 'Komponen tidak bisa dihapus, silakan coba lagi.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Grup komponen|Grup komponen', - 'no_components' => 'Anda perlu menambahkan grup komponen.', - 'add' => [ - 'title' => 'Tambahkan grup komponen', - 'success' => 'Grup komponen sudah ditambahkan.', - 'failure' => 'Ada masalah dalam grup komponen, silakan coba lagi.', - ], - 'edit' => [ - 'title' => 'Edit grup komponen', - 'success' => 'Grup komponen sudah diperbarui.', - 'failure' => 'Ada masalah dalam grup komponen, silakan coba lagi.', - ], - 'delete' => [ - 'success' => 'Grup komponen sudah dihapus!', - 'failure' => 'Grup komponen tidak bisa dihapus, silakan coba lagi.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrik', - 'add' => [ - 'title' => 'Buat metrik', - 'message' => 'Anda harus menambahkan metrik.', - 'success' => 'Metrik sudah dibuat.', - 'failure' => 'Ada masalah dalam metrik, silakan coba lagi.', - ], - 'edit' => [ - 'title' => 'Edit metrik', - 'success' => 'Metrik sudah diperbarui.', - 'failure' => 'Ada masalah dalam metrik, silakan coba lagi.', - ], - 'delete' => [ - 'success' => 'Metrik sudah dihapus dan tidak akan ditampilkan pada halaman status anda.', - 'failure' => 'Metrik tidak bisa dihapus, silakan coba lagi.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Berlangganan', - 'description' => 'Pelanggan akan menerima update email ketika insiden dibuat atau komponen diperbarui.', - 'description_disabled' => 'Untuk menggunakan fitur ini, Anda perlu mengizinkan orang untuk mendaftar notifikasi.', - 'verified' => 'Terverifikasi', - 'not_verified' => 'Belum Diverifikasi', - 'subscriber' => ':email, berlangganan :date', - 'no_subscriptions' => 'Berlangganan semua update', - 'global' => 'Berlangganan secara global', - 'add' => [ - 'title' => 'Tambah Pelanggan Baru', - 'success' => 'Pelanggan sudah ditambahkan.', - 'failure' => 'Ada masalah saat menambah langganan, silakan coba lagi.', - 'help' => 'Masukkan setiap pelanggan pada baris baru.', - ], - 'edit' => [ - 'title' => 'Perbarui Pelanggan', - 'success' => 'Pelanggan sudah diupdate.', - 'failure' => 'Ada masalah saat mengedit langganan, silakan coba lagi.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Tim', - 'member' => 'Anggota', - 'profile' => 'Profil', - 'description' => 'Anggota Tim akan bisa menambahkan, mengubah & mengedit komponen dan insiden.', - 'add' => [ - 'title' => 'Tambahkan Anggota Tim', - 'success' => 'Anggota Tim sudah ditambahkan.', - 'failure' => 'Anggota Tim tidak bisa ditambahkan, silakan coba lagi.', - ], - 'edit' => [ - 'title' => 'Perbarui profil', - 'success' => 'Profil sudah diperbarui.', - 'failure' => 'Ada masalah saat memperbarui profil, silakan coba lagi.', - ], - 'delete' => [ - 'success' => 'Pengguna sudah dihapus.', - 'failure' => 'Anggota Tim tidak bisa ditambahkan, silakan coba lagi.', - ], - 'invite' => [ - 'title' => 'Undang Anggota Tim Baru', - 'success' => 'Pengguna sudah diundang.', - 'failure' => 'Undangan tidak terkirim, silakan coba lagi.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Pengaturan', - 'app-setup' => [ - 'app-setup' => 'Pengaturan Aplikasi', - 'images-only' => 'Hanya gambar yang bisa diunggah.', - 'too-big' => 'Berkas yang anda unggah terlalu besar. Mohon unggah gambar dengan ukuran tidak lebih dari :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Kustomisasi', - 'header' => 'Header HTML Kustom', - 'footer' => 'Footer HTML Kustom', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Keamanan', - 'two-factor' => 'User tanpa otentikasi dua-faktor', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Pengaturan sudah disimpan.', - 'failure' => 'Pengaturan tidak bisa disimpan.', - ], - 'credits' => [ - 'credits' => 'Kredit', - 'contributors' => 'Kontributor', - 'license' => 'Cachet adalah proyek open source berlisensi BSD, dirilis oleh Alt Three Services Limited.', - 'backers-title' => 'Pendukung & Sponsor', - 'backers' => 'Jika anda ingin mendukung pengembangan selanjutnya, silakan kunjungi kampanye Cachet di Patreon.', - 'thank-you' => 'Terima kasih pada seluruh :count kontributor.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Masuk', - 'logged_in' => 'Anda sudah login.', - 'welcome' => 'Halo!', - 'two-factor' => 'Silakan masukkan token anda.', - ], - - // Sidebar footer - 'help' => 'Panduan', - 'status_page' => 'Halaman Status', - 'logout' => 'Keluar', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifikasi', - 'awesome' => 'Keren.', - 'whoops' => 'Waduh.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Dukung Cachet', - 'support_subtitle' => 'Lihat halaman Patreon kami!', - 'news' => 'Berita Terbaru', - 'news_subtitle' => 'Dapatkan update terbaru', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Selamat datang di halaman status baru anda :username!', - 'message' => 'Halaman status anda hampir siap! Anda masih perlu mengkonfigurasi beberapa pengaturan', - 'close' => 'Terima kasih!', - 'steps' => [ - 'component' => 'Buat komponen', - 'incident' => 'Buat insiden', - 'customize' => 'Kustomisasi', - 'team' => 'Tambah user', - 'api' => 'Buat token API', - 'two-factor' => 'Otentikasi Dua Faktor', - ], - ], - -]; diff --git a/resources/lang/id-ID/forms.php b/resources/lang/id-ID/forms.php deleted file mode 100644 index ff9df2e9..00000000 --- a/resources/lang/id-ID/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Nama Situs', - 'site_domain' => 'Domain', - 'site_timezone' => 'Pilih Zona Waktu', - 'site_locale' => 'Pilih Bahasa', - 'enable_google2fa' => 'Aktifkan Otentikasi Dua Faktor dengan Google', - 'cache_driver' => 'Driver Cache', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Driver Sesi', - 'mail_driver' => 'Driver Email', - 'mail_host' => 'Host Email', - 'mail_address' => 'Alamat Email Pengirim', - 'mail_username' => 'Username Email', - 'mail_password' => 'Password Email', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username atau Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Kode Otentikasi', - 'invalid' => 'Username atau password tidak benar', - 'invalid-token' => 'Token tidak benar', - 'cookies' => 'Mohon aktifkan cookies untuk login.', - 'rate-limit' => 'Melebihi batas.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nama', - 'status' => 'Status', - 'component' => 'Komponen', - 'component_status' => 'Status Komponen', - 'message' => 'Pesan', - 'message-help' => 'Anda juga bisa menggunakan Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Beritahu subscriber', - 'notify_disabled' => 'Karena adanya pemeliharaan, notifikasi insiden ini atau komponennya akan diprioritaskan.', - 'visibility' => 'Tampilan Insiden', - 'stick_status' => 'Buat Insiden Sticky', - 'stickied' => 'Sticky', - 'not_stickied' => 'Tidak Sticky', - 'public' => 'Bisa dilihat oleh publik', - 'logged_in_only' => 'Hanya bisa dilihat oleh yang login', - 'templates' => [ - 'name' => 'Nama', - 'template' => 'Template', - 'twig' => 'Template Insiden ini bisa menggunakan bahasa template Twig.', - ], - ], - - 'schedules' => [ - 'name' => 'Nama', - 'status' => 'Status', - 'message' => 'Pesan', - 'message-help' => 'Anda juga bisa menggunakan Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Nama', - 'template' => 'Template', - 'twig' => 'Template Insiden ini bisa menggunakan bahasa template Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nama', - 'status' => 'Status', - 'group' => 'Grup', - 'description' => 'Deskripsi', - 'link' => 'Link', - 'tags' => 'Tag', - 'tags-help' => 'Pisahkan dengan koma.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Nama', - 'collapsing' => 'Buka/Tutup opsi', - 'visible' => 'Selalu buka', - 'collapsed' => 'Standarnya tutup grup', - 'collapsed_incident' => 'Tutup grup, tetapi buka jika ada masalah', - 'visibility' => 'Visibilitas', - 'visibility_public' => 'Terlihat bagi publik', - 'visibility_authenticated' => 'Terlihat hanya untuk yang sudah login', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Nama', - 'description' => 'Deskripsi', - 'start_at' => 'Waktu mulai jadwal', - 'timezone' => 'Zona waktu', - 'schedule_frequency' => 'Frekuensi jadwal (dalam detik)', - 'completion_latency' => 'Latensi penyelesaian (dalam detik)', - 'group' => 'Grup', - 'active' => 'Aktif?', - 'groups' => [ - 'name' => 'Nama Grup', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nama', - 'suffix' => 'Akhiran', - 'description' => 'Deskripsi', - 'description-help' => 'Anda juga bisa menggunakan Markdown.', - 'display-chart' => 'Tampilkan grafik di halaman status?', - 'default-value' => 'Nilai default', - 'calc_type' => 'Kalkulasi metrik', - 'type_sum' => 'Jumlah', - 'type_avg' => 'Rata-rata', - 'places' => 'Digit Desimal', - 'default_view' => 'Tampilan default', - 'threshold' => 'Dalam rentang berapa menit antara poin metrik?', - 'visibility' => 'Visibilitas', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Nilai', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Nama Situs', - 'site-url' => 'URL', - 'display-graphs' => 'Tampilkan grafik di halaman status?', - 'about-this-page' => 'Tentang halaman ini', - 'days-of-incidents' => 'Berapa hari insiden akan ditampilkan?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Gambar Banner', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Bolehkan pengunjung mendaftar notifikasi email?', - 'suppress_notifications_in_maintenance' => 'Paksa munculnya notifikasi ketika insiden terjadi saat periode pemeliharaan?', - 'skip_subscriber_verification' => 'Lewatkan verifikasi user? (Hati-hati, anda bisa kena spam)', - 'automatic_localization' => 'Otomatis ganti bahasa halaman status anda ke bahasa pengunjung?', - 'enable_external_dependencies' => 'Aktifkan Dependensi Pihak Ketiga (Font Google, Trackers, dll...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Hanya tampilkan hari yang berisi insiden dalam linimasa?', - ], - 'analytics' => [ - 'analytics_google' => 'Kode Google Analytics', - 'analytics_gosquared' => 'Kode GoSquared Analytics', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'ID situs Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Zona Waktu', - 'site-locale' => 'Bahasa', - 'date-format' => 'Format Tanggal', - 'incident-date-format' => 'Format Waktu Insiden', - ], - 'security' => [ - 'allowed-domains' => 'Domain yang dibolehkan', - 'allowed-domains-help' => 'Pisahkan dengan koma. Domain yang ada di atas otomatis akan dibolehkan.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Stylesheet Kustom', - ], - 'theme' => [ - 'background-color' => 'Warna latar belakang', - 'background-fills' => 'Isian latar belakang (Komponen, Insiden, Footer)', - 'banner-background-color' => 'Banner Background Color', - 'banner-padding' => 'Banner Padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Warna teks', - 'dashboard-login' => 'Tampilkan tombol dashboard di footer?', - 'reds' => 'Merah (Digunakan jika ada kesalahan)', - 'blues' => 'Biru (Digunakan jika ada informasi)', - 'greens' => 'Hijau (Digunakan saat operasi berhasil)', - 'yellows' => 'Kuning (Digunakan sebagai peringatan)', - 'oranges' => 'Jingga (Digunakan sebagai pemberitahuan)', - 'metrics' => 'Isian metrik', - 'links' => 'Tautan', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'Token API', - 'api-token-help' => 'Pembuatan ulang token API akan bermasalah jika sudah ada aplikasi lain yang mengakses Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'Tingkatan pengguna', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Mengaktifkan otentikasi dua faktor akan memperkuat keamanan akun anda. Anda perlu mengunduh Google Authenticator atau app sejenis di gadget anda. Saat login anda akan ditanyakan untuk mengisi token yang dibuat oleh app tersebut.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Alamat Email Anggota Tim Anda', - ], - ], - - 'general' => [ - 'timezone' => 'Pilih zona waktu', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Tambah', - 'save' => 'Simpan', - 'update' => 'Perbarui', - 'create' => 'Buat', - 'edit' => 'Edit', - 'delete' => 'Hapus', - 'submit' => 'Kirim', - 'cancel' => 'Batalkan', - 'remove' => 'Buang', - 'invite' => 'Undang', - 'signup' => 'Daftar', - 'manage_updates' => 'Kelola Update', - - // Other - 'optional' => '* Tidak wajib', -]; diff --git a/resources/lang/id-ID/notifications.php b/resources/lang/id-ID/notifications.php deleted file mode 100644 index 62533cbb..00000000 --- a/resources/lang/id-ID/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Status Komponen Telah Diperbarui', - 'greeting' => 'Sebuah status komponen telah diperbarui!', - 'content' => 'Status :name telah berubah dari :old_status ke :new_status.', - 'action' => 'Lihat', - ], - 'slack' => [ - 'title' => 'Status Komponen Telah Diperbarui', - 'content' => 'Status :name telah berubah dari :old_status ke :new_status.', - ], - 'sms' => [ - 'content' => 'Status :name telah berubah dari :old_status ke :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Insiden baru telah dilaporkan', - 'greeting' => 'Sebuah insiden baru dilaporkan di :app_name.', - 'content' => 'Insiden :name dilaporkan', - 'action' => 'Lihat', - ], - 'slack' => [ - 'title' => 'Insiden :name Dilaporkan', - 'content' => 'Sebuah insiden baru dilaporkan di :app_name', - ], - 'sms' => [ - 'content' => 'Sebuah insiden baru dilaporkan di :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Insiden Diperbarui', - 'content' => ':name telah diperbarui', - 'title' => ':name telah diperbarui menjadi :new_status', - 'action' => 'Lihat', - ], - 'slack' => [ - 'title' => ':name Diperbarui', - 'content' => ':name telah diperbarui menjadi :new_status', - ], - 'sms' => [ - 'content' => 'Insiden :name telah diperbarui', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Jadwal Baru Sudah Dibuat', - 'content' => ':name dijadwalkan pada :date', - 'title' => 'Pemeliharaan terjadwal baru telah dibuat.', - 'action' => 'Lihat', - ], - 'slack' => [ - 'title' => 'Jadwal Baru Sudah Dibuat!', - 'content' => ':name dijadwalkan pada :date', - ], - 'sms' => [ - 'content' => ':name dijadwalkan pada :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verifikasi Langganan Anda', - 'content' => 'Klik untuk memverifikasi langganan Anda ke halaman status :app_name.', - 'title' => 'Verifikasi langganan Anda ke status halaman :app_name.', - 'action' => 'Verifikasi', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping dari Cachet!', - 'content' => 'Ini adalah test notifikasi dari Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Undangan kamu ada di dalamnya...', - 'content' => 'Anda diundang untuk bergabung dalam halaman status :app_name.', - 'title' => 'Anda diundang untuk bergabung halaman status :app_name.', - 'action' => 'Terima', - ], - ], - ], -]; diff --git a/resources/lang/id-ID/pagination.php b/resources/lang/id-ID/pagination.php deleted file mode 100644 index ce3d9917..00000000 --- a/resources/lang/id-ID/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Sebelumnya', - 'next' => 'Berikutnya', - -]; diff --git a/resources/lang/id-ID/setup.php b/resources/lang/id-ID/setup.php deleted file mode 100644 index 7a044deb..00000000 --- a/resources/lang/id-ID/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Instalasi', - 'title' => 'Instalasi Cachet', - 'service_details' => 'Detail Layanan', - 'env_setup' => 'Setup lingkungan', - 'status_page_setup' => 'Penyiapan Halaman Status', - 'show_support' => 'Tunjukkan dukungan untuk Cachet? Tampilkan catatan di bawah halaman yang bertaut ke situs Cachet.', - 'admin_account' => 'Akun Administrator', - 'complete_setup' => 'Selesaikan Instalasi', - 'completed' => 'Cachet berhasil dikonfigurasi!', - 'finish_setup' => 'Ke dashboard', -]; diff --git a/resources/lang/id-ID/validation.php b/resources/lang/id-ID/validation.php deleted file mode 100644 index 0a30f4a5..00000000 --- a/resources/lang/id-ID/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'Anda harus menerima :attribute .', - 'active_url' => ':attribute bukan merupakan URL yang benar.', - 'after' => ':attribute harus merupakan tanggal setelah :date.', - 'alpha' => ':attribute hanya boleh berisi huruf.', - 'alpha_dash' => ':attribute hanya boleh berisi huruf, angka dan tanda minus.', - 'alpha_num' => ':attribute hanya boleh berisi huruf dan angka.', - 'array' => ':attribute harus merupakan array.', - 'before' => ':attribute harus merupakan tanngga sebelum :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => ':attribute harus antara :min dan :max item.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => ':attribute memiliki nilai duplikasi.', - 'filled' => 'The :attribute field is required.', - 'image' => ':attribute harus merupakan gambar.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => ':attribute tidak ada dalam :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => ':attribute harus merupakan string JSON yang valid.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => ':attribute tidak boleh lebih dari :max item.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => ':attribute minimal harus :min kilobyte.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => ':attribute harus ada.', - 'regex' => 'Format :attribute tidak benar.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'Bagian :attribute harus diisi kecuali :other :values.', - 'required_with' => ':attribute harus diisi jika ada :values.', - 'required_with_all' => ':attribute harus diisi jika ada :values.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => ':attribute harus :size kilobyte.', - 'string' => ':attribute harus :size karakter.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => ':attribute harus merupakan zona yang benar.', - 'unique' => ':attribute sudah ada.', - 'url' => 'Format :attribute tidak benar.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/id/cachet.php b/resources/lang/id/cachet.php deleted file mode 100644 index 1e366f9f..00000000 --- a/resources/lang/id/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Operasional', - 2 => 'Masalah Kinerja', - 3 => 'Gagal Sebagian', - 4 => 'Kegagalan Sistem', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Insiden sebelumnya', - 'previous_week' => 'Pekan sebelumnya', - 'next_week' => 'Pekan selanjutnya', - 'scheduled' => 'Jadwal Pemeliharaan', - 'scheduled_at' => ', dijadwalkan pada :timestamp', - 'status' => [ - 0 => 'Dijadwalkan', // TODO: Hopefully remove this. - 1 => 'Investigasi', - 2 => 'Teridentifikasi', - 3 => 'Dimonitor', - 4 => 'Selesai', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'Buat ulang API Key', - 'revoke' => 'Cabut API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Ikuti newsletter untuk mendapat update terbaru.', - 'button' => 'Daftar', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Langganan update email.', - 'subscribed' => 'Anda berhasil terdaftar pada notifikasi email, mohon periksa email anda untuk mengkonfirmasi pendaftaran ini.', - 'verified' => 'Pendaftaran newsletter anda berhasil dikonfirmasi. Terima kasih!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Hapus saya dari update email.', - 'unsubscribed' => 'Langganan email anda sudah dihentikan.', - 'failure' => 'Ada yang salah dengan sistem langganan email.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Anda diundang dalam tim Halaman Status :app_name, untuk mendaftar silakan klik tautan berikut \n:link\nTerima kasih, :app_name", - 'html' => '

Anda diundang dalam tim Halaman Status :app_name, untuk mendaftar silakan klik tautan berikut.

:link

Terima kasih, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Daftar', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Akun anda berhasil dibuat.', - 'failure' => 'Ada masalah dalam pendaftaran.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Daftar', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'Tentang situs ini', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Pasokan Status', - -]; diff --git a/resources/lang/id/dashboard.php b/resources/lang/id/dashboard.php deleted file mode 100644 index a429f928..00000000 --- a/resources/lang/id/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Dashboard', - - // Incidents - 'incidents' => [ - 'title' => 'Insiden & Penjadwalan', - 'incidents' => 'Insiden', - 'logged' => '{0} Tidak ada insiden, bagus.|Anda mencatat satu insiden.|Anda sudah melaporkan :count insiden.', - 'incident-create-template' => 'Buat Template', - 'incident-templates' => 'Template Insiden', - 'add' => [ - 'title' => 'Tambahkan Insiden', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit insiden', - 'success' => 'Insiden sudah diperbarui.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Template Insiden', - 'add' => [ - 'title' => 'Buat template insiden', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Jadwal Pemeliharaan', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Dijadwalkan pada :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Komponen', - 'component_statuses' => 'Status Komponen', - 'listed_group' => 'Dikelompokkan dalam :name', - 'add' => [ - 'title' => 'Tambahkan Komponen', - 'message' => 'Anda perlu menambahkan komponen.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit komponen', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Grup komponen|Grup komponen', - 'no_components' => 'Anda perlu menambahkan grup komponen.', - 'add' => [ - 'title' => 'Tambahkan grup komponen', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit grup komponen', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrik', - 'add' => [ - 'title' => 'Buat metrik', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit metrik', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Berlangganan', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Terverifikasi', - 'not_verified' => 'Belum Diverifikasi', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Tambah Pelanggan Baru', - 'success' => 'Pelanggan sudah ditambahkan.', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Perbarui Pelanggan', - 'success' => 'Pelanggan sudah diupdate.', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Tim', - 'member' => 'Anggota', - 'profile' => 'Profil', - 'description' => 'Anggota Tim akan bisa menambahkan, mengubah & mengedit komponen dan insiden.', - 'add' => [ - 'title' => 'Tambahkan Anggota Tim', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Perbarui profil', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Pengguna sudah dihapus.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Undang Anggota Tim Baru', - 'success' => 'Pengguna sudah diundang.', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Pengaturan', - 'app-setup' => [ - 'app-setup' => 'Pengaturan Aplikasi', - 'images-only' => 'Hanya gambar yang bisa diunggah.', - 'too-big' => 'Berkas yang anda unggah terlalu besar. Mohon unggah gambar dengan ukuran tidak lebih dari :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Keamanan', - 'two-factor' => 'User tanpa otentikasi dua-faktor', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Pengaturan sudah disimpan.', - 'failure' => 'Pengaturan tidak bisa disimpan.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Masuk', - 'logged_in' => 'Anda sudah login.', - 'welcome' => 'Halo!', - 'two-factor' => 'Silakan masukkan token anda.', - ], - - // Sidebar footer - 'help' => 'Panduan', - 'status_page' => 'Halaman Status', - 'logout' => 'Keluar', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifikasi', - 'awesome' => 'Keren.', - 'whoops' => 'Waduh.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Halaman status anda hampir siap! Anda masih perlu mengkonfigurasi beberapa pengaturan', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Buat komponen', - 'incident' => 'Buat insiden', - 'customize' => 'Kustomisasi', - 'team' => 'Tambah user', - 'api' => 'Buat token API', - 'two-factor' => 'Otentikasi Dua Faktor', - ], - ], - -]; diff --git a/resources/lang/id/forms.php b/resources/lang/id/forms.php deleted file mode 100644 index a6ebd428..00000000 --- a/resources/lang/id/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Nama Situs', - 'site_domain' => 'Domain', - 'site_timezone' => 'Pilih Zona Waktu', - 'site_locale' => 'Pilih Bahasa', - 'enable_google2fa' => 'Aktifkan Otentikasi Dua Faktor dengan Google', - 'cache_driver' => 'Driver Cache', - 'session_driver' => 'Driver Sesi', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Kode Otentikasi', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Token tidak benar', - 'cookies' => 'Mohon aktifkan cookies untuk login.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nama', - 'status' => 'Status', - 'component' => 'Komponen', - 'message' => 'Pesan', - 'message-help' => 'Anda juga bisa menggunakan Markdown.', - 'scheduled_at' => 'Berapa lama pemeliharaan ini dijadwalkan?', - 'incident_time' => 'Kapan insiden ini terjadi?', - 'notify_subscribers' => 'Beritahu subscriber', - 'visibility' => 'Incident Visibility', - 'public' => 'Bisa dilihat oleh publik', - 'logged_in_only' => 'Hanya bisa dilihat oleh yang login', - 'templates' => [ - 'name' => 'Nama', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nama', - 'status' => 'Status', - 'group' => 'Grup', - 'description' => 'Deskripsi', - 'link' => 'Link', - 'tags' => 'Tag', - 'tags-help' => 'Pisahkan dengan koma.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Nama', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nama', - 'suffix' => 'Akhiran', - 'description' => 'Deskripsi', - 'description-help' => 'Anda juga bisa menggunakan Markdown.', - 'display-chart' => 'Tampilkan grafik di halaman status?', - 'default-value' => 'Nilai default', - 'calc_type' => 'Kalkulasi metrik', - 'type_sum' => 'Jumlah', - 'type_avg' => 'Rata-rata', - 'places' => 'Digit Desimal', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Nilai', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Nama Situs', - 'site-url' => 'URL', - 'display-graphs' => 'Tampilkan grafik di halaman status?', - 'about-this-page' => 'Tentang halaman ini', - 'days-of-incidents' => 'Berapa hari insiden akan ditampilkan?', - 'banner' => 'Banner Image', - 'banner-help' => 'Disarankan gambar yang anda unggah tidak lebih lebar dari 930px.', - 'subscribers' => 'Bolehkan pengunjung mendaftar notifikasi email?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Kode Google Analytics', - 'analytics_gosquared' => 'Kode GoSquared Analytics', - 'analytics_piwik_url' => 'URL Piwik anda (tanpa http(s)://)', - 'analytics_piwik_siteid' => 'ID situs Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Zona Waktu', - 'site-locale' => 'Bahasa', - 'date-format' => 'Format Tanggal', - 'incident-date-format' => 'Format Waktu Insiden', - ], - 'security' => [ - 'allowed-domains' => 'Domain yang dibolehkan', - 'allowed-domains-help' => 'Pisahkan dengan koma. Domain yang ada di atas otomatis akan dibolehkan.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Isian latar belakang (Komponen, Insiden, Footer)', - 'banner-background-color' => 'Banner Background Color', - 'banner-padding' => 'Banner Padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Tampilkan tombol dashboard di footer?', - 'reds' => 'Merah (Digunakan jika ada kesalahan)', - 'blues' => 'Biru (Digunakan jika ada informasi)', - 'greens' => 'Hijau (Digunakan saat operasi berhasil)', - 'yellows' => 'Kuning (Digunakan sebagai peringatan)', - 'oranges' => 'Jingga (Digunakan sebagai pemberitahuan)', - 'metrics' => 'Isian metrik', - 'links' => 'Tautan', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'Token API', - 'api-token-help' => 'Pembuatan ulang token API akan bermasalah jika sudah ada aplikasi lain yang mengakses Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'Tingkatan pengguna', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Mengaktifkan otentikasi dua faktor akan memperkuat keamanan akun anda. Anda perlu mengunduh Google Authenticator atau app sejenis di gadget anda. Saat login anda akan ditanyakan untuk mengisi token yang dibuat oleh app tersebut.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Tambah', - 'save' => 'Simpan', - 'update' => 'Perbarui', - 'create' => 'Buat', - 'edit' => 'Edit', - 'delete' => 'Hapus', - 'submit' => 'Kirim', - 'cancel' => 'Batalkan', - 'remove' => 'Buang', - 'invite' => 'Undang', - 'signup' => 'Daftar', - - // Other - 'optional' => '* Tidak wajib', -]; diff --git a/resources/lang/id/pagination.php b/resources/lang/id/pagination.php deleted file mode 100644 index 7d4bba4b..00000000 --- a/resources/lang/id/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Sebelumnya', - 'next' => 'Selanjutnya »', - -]; diff --git a/resources/lang/id/setup.php b/resources/lang/id/setup.php deleted file mode 100644 index 7a044deb..00000000 --- a/resources/lang/id/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Instalasi', - 'title' => 'Instalasi Cachet', - 'service_details' => 'Detail Layanan', - 'env_setup' => 'Setup lingkungan', - 'status_page_setup' => 'Penyiapan Halaman Status', - 'show_support' => 'Tunjukkan dukungan untuk Cachet? Tampilkan catatan di bawah halaman yang bertaut ke situs Cachet.', - 'admin_account' => 'Akun Administrator', - 'complete_setup' => 'Selesaikan Instalasi', - 'completed' => 'Cachet berhasil dikonfigurasi!', - 'finish_setup' => 'Ke dashboard', -]; diff --git a/resources/lang/id/validation.php b/resources/lang/id/validation.php deleted file mode 100644 index de981621..00000000 --- a/resources/lang/id/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'Anda harus menerima :attribute .', - 'active_url' => ':attribute bukan merupakan URL yang benar.', - 'after' => ':attribute harus merupakan tanggal setelah :date.', - 'alpha' => ':attribute hanya boleh berisi huruf.', - 'alpha_dash' => ':attribute hanya boleh berisi huruf, angka dan tanda minus.', - 'alpha_num' => ':attribute hanya boleh berisi huruf dan angka.', - 'array' => ':attribute harus merupakan array.', - 'before' => ':attribute harus merupakan tanngga sebelum :date.', - 'between' => [ - 'numeric' => ':attribute harus merupakan tanngga sebelum :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => ':attribute harus antara :min dan :max item.', - ], - 'boolean' => ':attribute harus antara :min dan :max item.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'Format :attribute tidak benar.', - 'image' => ':attribute harus merupakan gambar.', - 'in' => ':attribute harus merupakan gambar.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => ':attribute harus merupakan string JSON yang valid.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => ':attribute tidak boleh lebih dari :max item.', - ], - 'mimes' => ':attribute tidak boleh lebih dari :max item.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => ':attribute minimal harus :min kilobyte.', - 'string' => ':attribute minimal harus :min kilobyte.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'Format :attribute tidak benar.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => ':attribute harus diisi jika ada :values.', - 'required_without' => ':attribute harus diisi jika ada :values.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => ':attribute harus :size kilobyte.', - 'string' => ':attribute harus :size karakter.', - 'array' => ':attribute harus :size karakter.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute harus merupakan zona yang benar.', - 'unique' => ':attribute sudah ada.', - 'url' => 'Format :attribute tidak benar.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/it-IT/cachet.php b/resources/lang/it-IT/cachet.php deleted file mode 100644 index 1bfd09cb..00000000 --- a/resources/lang/it-IT/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Ultimo aggiornamento :timestamp', - 'status' => [ - 0 => 'Sconosciuto', - 1 => 'Operativo', - 2 => 'Problemi sulle prestazioni', - 3 => 'Disservizio parziale', - 4 => 'Interruzione del servizio', - ], - 'group' => [ - 'other' => 'Altri componenti', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Nessun incidente segnalato', - 'past' => 'Problemi passati', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', programmata il :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Analisi', - 2 => 'Identificato', - 3 => 'Osservazione', - 4 => 'Risolto', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In corso', - 2 => 'Completato', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Rigenera API Key', - 'revoke' => 'Revoca API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Ultima Ora', - 'hourly' => 'Ultime 12 Ore', - 'weekly' => 'Settimana', - 'monthly' => 'Mese', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Iscriviti', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifiche', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'Sei attualmente iscritto a tutti gli aggiornamenti.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'Sei attualmente iscritto ai seguenti suggerimenti.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Iscriviti agli aggiornamenti via email.', - 'subscribed' => 'Ti sei appena iscritto agli aggiornamenti email, controlla la tua casella per confermare la sottoscrizione', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'La tua iscrizione è stata confermata. Grazie!', - 'manage' => 'Gestisci la tua iscrizione', - 'unsubscribe' => 'Annulla l\'iscrizione agli aggiornamenti email.', - 'unsubscribed' => 'La tua iscrizione è stata rimossa.', - 'failure' => 'Qualcosa è andato storto con l\'iscrizione.', - 'already-subscribed' => 'Non è possibile iscrivere :email perchè risulta già iscritto.', - ], - ], - - 'signup' => [ - 'title' => 'Registrati', - 'username' => 'Nome Utente', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Il tuo account è stato creato.', - 'failure' => 'Qualcosa non ha funzionato durante la procedura d\'iscrizione.', - ], - - 'system' => [ - 'update' => 'E\' disponibile una nuova versione di Cachet. Scopri come fare qui!', - ], - - // Modal - 'modal' => [ - 'close' => 'Chiudi', - 'subscribe' => [ - 'title' => 'Iscriviti agli aggiornamenti dei componenti', - 'body' => 'Inserisci il tuo indirizzo e-mail per iscriverti agli aggiornamenti di questo componente. Se sei già iscritto, riceverai già email relative a questo componente.', - 'button' => 'Iscriviti', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Resta informato sugli ultimi aggiornamenti dei servizi di :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'Informazioni sul sito', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/it-IT/dashboard.php b/resources/lang/it-IT/dashboard.php deleted file mode 100644 index 188d9a18..00000000 --- a/resources/lang/it-IT/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Pannello amministrativo', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidenti', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Crea Modello', - 'incident-templates' => 'Modelli di segnalazione', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Riporta un problema', - 'success' => 'Segnalazione aggiunta.', - 'failure' => 'C\'è stato un problema con l\'aggiunta dela segnalazione, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Modifica una segnalazione', - 'success' => 'Segnalazione aggiornata.', - 'failure' => 'C\'è stato un problema con la modifica della segnalazione, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'La segnalazione è stata eliminata e non verrà visualizzata sulla tua pagina di stato.', - 'failure' => 'Non è stato possibile eliminare la segnalazione, si prega di riprovare.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Modelli di segnalazione', - 'add' => [ - 'title' => 'Crea un modello di segnalazione', - 'message' => 'Create your first incident template.', - 'success' => 'Il tuo nuovo modello di segnalazione è stato creato.', - 'failure' => 'Qualcosa è andato storto con il modello di segnalazione.', - ], - 'edit' => [ - 'title' => 'Modifica Modello', - 'success' => 'Il modello di segnalazione è stato aggiornato.', - 'failure' => 'Qualcosa è andato storto con l\'aggiornamento del modello di segnalazione', - ], - 'delete' => [ - 'success' => 'Il modello di segnalazione è stato eliminato.', - 'failure' => 'Non è stato possibile eliminare il modello di segnalazione, si prega di riprovare.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Pianificato alle :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componenti', - 'component_statuses' => 'Stati del componente', - 'listed_group' => 'Raggruppati sotto :name', - 'add' => [ - 'title' => 'Aggiungi un componente', - 'message' => 'È necessario aggiungere un componente.', - 'success' => 'Componente creato.', - 'failure' => 'Qualcosa è andato storto con il componente, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Modifica un componente', - 'success' => 'Componente aggiornato.', - 'failure' => 'Qualcosa è andato storto con il componente, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'Il componente è stato eliminato!', - 'failure' => 'Non è stato possibile eliminare il componente, si prega di riprovare.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Gruppo del componente | Gruppi del componente', - 'no_components' => 'È necessario aggiungere un gruppo di componenti.', - 'add' => [ - 'title' => 'Aggiungi un gruppo di componenti', - 'success' => 'Gruppo di componenti aggiunto.', - 'failure' => 'Qualcosa è andato storto con il componente, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Modifica un gruppo di componenti', - 'success' => 'Gruppo di componenti aggiornato.', - 'failure' => 'Qualcosa è andato storto con il componente, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'Il gruppo di componenti è stato eliminato!', - 'failure' => 'Non è stato possibile eliminare il gruppo di componenti, si prega di riprovare.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metriche', - 'add' => [ - 'title' => 'Crea una metrica', - 'message' => 'Si dovrebbe aggiungere un metodo di misura.', - 'success' => 'Metrica creata.', - 'failure' => 'Qualcosa è andato storto con il metodo di misura, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Modifica un metodo di misura', - 'success' => 'Metodo di misura aggiornato.', - 'failure' => 'Qualcosa è andato storto con il metodo di misura, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'Il metodo di misura è stato eliminato e non verrà più visualizzato nella tua pagina di stato.', - 'failure' => 'Non è stato possibile eliminare il metodo di misura, si prega di riprovare.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Iscritti', - 'description' => 'Gli iscritti riceveranno aggiornamenti via email quando vengono create le segnalazioni o vengono aggiornati i componenti vengono.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verificato', - 'not_verified' => 'Non Verificato', - 'subscriber' => ': email, iscritta :date', - 'no_subscriptions' => 'Iscritto a tutti gli aggiornamenti', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Aggiungi un nuovo iscritto', - 'success' => 'L\'iscritto è stato aggiunto!', - 'failure' => 'Qualcosa è andato storto con l\'aggiunta dell\'iscritto, si prega di riprovare.', - 'help' => 'Immettere ogni iscritto su una nuova riga.', - ], - 'edit' => [ - 'title' => 'Aggiorna l\'iscritto', - 'success' => 'L\'iscritto è stato aggiornato!', - 'failure' => 'Qualcosa è andato storto con la modifica dell\'iscritto, si prega di riprovare.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Gruppo', - 'member' => 'Membro', - 'profile' => 'Profilo', - 'description' => 'I membri del gruppo potranno aggiungere, modificare ed editare componenti e segnalazioni.', - 'add' => [ - 'title' => 'Aggiungi un nuovo membro del gruppo', - 'success' => 'Membro del gruppo aggiunto.', - 'failure' => 'Non è stato possibile aggiungere il membro del gruppo, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Aggiorna il profilo', - 'success' => 'Profilo aggiornato.', - 'failure' => 'Qualcosa è andato storto con l\'aggiornamento del profilo, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'Il membro del gruppo è stato eliminato e non avrà più accesso al pannello amministrativo!', - 'failure' => 'Non è stato possibile aggiungere il membro del gruppo, si prega di riprovare.', - ], - 'invite' => [ - 'title' => 'Invita un nuovo membro del gruppo', - 'success' => 'Un invito è stato inviato', - 'failure' => 'Non è stato possibile inviare l\'invito, si prega di riprovare.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Impostazioni', - 'app-setup' => [ - 'app-setup' => 'Installazione dell\'applicazione', - 'images-only' => 'Possono essere caricate solo le immagini.', - 'too-big' => 'Il file che hai caricato è troppo grande. Caricare un\'immagine più piccola di :size', - ], - 'analytics' => [ - 'analytics' => 'Statistiche', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localizzazione', - ], - 'customization' => [ - 'customization' => 'Personalizzazione', - 'header' => 'Header HTML personalizzato', - 'footer' => 'Footer HTML personalizzato', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Sicurezza', - 'two-factor' => 'Utenti senza autenticazione in due passaggi', - ], - 'stylesheet' => [ - 'stylesheet' => 'Foglio di stile', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Impostazioni salvate.', - 'failure' => 'Le impostazioni non possono essere salvate.', - ], - 'credits' => [ - 'credits' => 'Riconoscimenti', - 'contributors' => 'Collaboratori', - 'license' => 'Cachet è un progetto open source con licenza BSD-3, rilasciato da Alt tre Services Limited.', - 'backers-title' => 'Sostenitori e sponsor', - 'backers' => 'Se si desidera sostenere lo sviluppo futuro, scopri la campagna Cachet Patreon.', - 'thank-you' => 'Grazie a tutti i :count contributori.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Accedi', - 'logged_in' => 'Sei connesso.', - 'welcome' => 'Bentornato!', - 'two-factor' => 'Inserisci il tuo token.', - ], - - // Sidebar footer - 'help' => 'Aiuto', - 'status_page' => 'Pagina di Stato', - 'logout' => 'Disconnetti', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifiche', - 'awesome' => 'Meraviglioso.', - 'whoops' => 'Ops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Supporta Cachet', - 'support_subtitle' => 'Visita la nostra pagina Patreon!', - 'news' => 'Utime notizie', - 'news_subtitle' => 'Ottieni l\'aggiornamento più recente', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Benvenuto nella tua nuova pagina di stato!', - 'message' => 'La pagina di stato è quasi pronta! È possibile configurare queste impostazioni supplementari', - 'close' => 'Portami direttamente al mio pannello amministrativo', - 'steps' => [ - 'component' => 'Crea componenti', - 'incident' => 'Crea segnalazioni', - 'customize' => 'Personalizza', - 'team' => 'Aggiungi utenti', - 'api' => 'Genera un API token', - 'two-factor' => 'Autenticazione con verifica in due passaggi', - ], - ], - -]; diff --git a/resources/lang/it-IT/forms.php b/resources/lang/it-IT/forms.php deleted file mode 100644 index 5688056f..00000000 --- a/resources/lang/it-IT/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Nome Utente', - 'password' => 'Password', - 'site_name' => 'Nome del sito', - 'site_domain' => 'Dominio del sito', - 'site_timezone' => 'Seleziona il tuo fuso orario', - 'site_locale' => 'Seleziona la lingua', - 'enable_google2fa' => 'Abilita la Verifica in Due Passaggi di Google', - 'cache_driver' => 'Driver per la cache', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Driver per la sessione', - 'mail_driver' => 'Driver di posta elettronica', - 'mail_host' => 'Host di posta elettronica', - 'mail_address' => 'Posta dall\'indirizzo', - 'mail_username' => 'Nome utente di posta', - 'mail_password' => 'Password di posta elettronica', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nome Utente o Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Codice di Autenticazione', - 'invalid' => 'Il nome utente o la password non sono validi', - 'invalid-token' => 'Token non valido', - 'cookies' => 'È necessario abilitare i cookie per effettuare l\'accesso.', - 'rate-limit' => 'Sei troppo veloce.', - 'remember_me' => 'Ricordami', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nome', - 'status' => 'Stato', - 'component' => 'Componente', - 'component_status' => 'Component Status', - 'message' => 'Messaggio', - 'message-help' => 'Si può anche utilizzare il linguaggio di Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notificare gli iscritti?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Visibilità segnalazione', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Visibile al pubblico', - 'logged_in_only' => 'Visibile solo agli utenti registrati', - 'templates' => [ - 'name' => 'Nome', - 'template' => 'Modello', - 'twig' => 'I modelli di segnalazione possono usare il linguaggio di templating Twig.', - ], - ], - - 'schedules' => [ - 'name' => 'Nome', - 'status' => 'Stato', - 'message' => 'Messaggio', - 'message-help' => 'Si può anche utilizzare il linguaggio di Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Nome', - 'template' => 'Modello', - 'twig' => 'I modelli di segnalazione possono usare il linguaggio di templating Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nome', - 'status' => 'Stato', - 'group' => 'Gruppo', - 'description' => 'Descrizione', - 'link' => 'Collegamento', - 'tags' => 'Etichette', - 'tags-help' => 'Separati da virgole.', - 'enabled' => 'Componente abilitato?', - - 'groups' => [ - 'name' => 'Nome', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Sempre espanso', - 'collapsed' => 'Comprimere il gruppo come impostazione predefinita', - 'collapsed_incident' => 'Comprimere il gruppo, ma espandere se ci sono problemi', - 'visibility' => 'Visibilità', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Nome', - 'description' => 'Descrizione', - 'start_at' => 'Schedule start time', - 'timezone' => 'Fuso orario', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Gruppo', - 'active' => 'Attivo?', - 'groups' => [ - 'name' => 'Nome del Gruppo', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nome', - 'suffix' => 'Suffisso', - 'description' => 'Descrizione', - 'description-help' => 'Si può anche utilizzare il linguaggio di Markdown.', - 'display-chart' => 'Visualizzare il grafico nella pagina di stato?', - 'default-value' => 'Valore predefinito', - 'calc_type' => 'Calcolo del metodo di misura', - 'type_sum' => 'Somma', - 'type_avg' => 'Media', - 'places' => 'Cifre decimali', - 'default_view' => 'Vista predefinita', - 'threshold' => 'Quanti minuti di soglia tra metriche punti?', - 'visibility' => 'Visibilità', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Sempre nascosto', - - 'points' => [ - 'value' => 'Valore', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Nome del sito', - 'site-url' => 'URL del Sito', - 'display-graphs' => 'Visualizzare i grafici nella pagina di stato?', - 'about-this-page' => 'Informazioni sulla pagina', - 'days-of-incidents' => 'Quanti giorni di segnalazioni mostrare?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Immagine del banner', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Permettere alle persone di iscriversi alle notifiche via email?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Tradurre automaticamente la tua pagina di stato nella lingua del visitatore?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Codice Google Analytics', - 'analytics_gosquared' => 'Codice GoSquared Analytics', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Id del sito Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Fuso orario del sito', - 'site-locale' => 'Lingua del sito', - 'date-format' => 'Formato della data', - 'incident-date-format' => 'Formato timestamp della segnalazione', - ], - 'security' => [ - 'allowed-domains' => 'Domini consentiti', - 'allowed-domains-help' => 'Separati da virgola. Il dominio impostato sopra è automaticamente consentito per impostazione predefinita.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Foglio di stile personalizzato', - ], - 'theme' => [ - 'background-color' => 'Colore di sfondo', - 'background-fills' => 'Riempimento sfondo (componenti, segnalazioni, footer)', - 'banner-background-color' => 'Colore di sfondo del banner', - 'banner-padding' => 'Padding del banner', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Colore del testo', - 'dashboard-login' => 'Mostrare pulsante del pannello amministrativo nel footer?', - 'reds' => 'Rosso (utilizzato per gli errori)', - 'blues' => 'Blu (usato per le informazioni)', - 'greens' => 'Verde (usato per operazioni andate a buon fine)', - 'yellows' => 'Giallo (utilizzato per gli avvisi)', - 'oranges' => 'Orange (usato per notifiche)', - 'metrics' => 'Riempimento di metriche', - 'links' => 'Collegamenti', - ], - ], - - 'user' => [ - 'username' => 'Nome Utente', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Rigenerare il tuo API token impedirà alle applicazioni esistenti di accedere a Cachet.', - 'gravatar' => 'Cambia la tua immagine del profilo presso Gravatar.', - 'user_level' => 'Livello utente', - 'levels' => [ - 'admin' => 'Amministratore', - 'user' => 'Utente', - ], - '2fa' => [ - 'help' => 'L\'attivazione dell\'autenticazione in due passaggi aumenta la sicurezza del tuo account. Sarà necessario scaricare Google Authenticator o un\'app simile sul tuo dispositivo mobile. Quando si effettua l\'accesso dovrai fornire un token generato dall\'applicazione.', - ], - 'team' => [ - 'description' => 'Invita i membri del gruppo inserendo qui i loro indirizzi e-mail.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Aggiungi', - 'save' => 'Salva', - 'update' => 'Aggiorna', - 'create' => 'Crea', - 'edit' => 'Modifica', - 'delete' => 'Elimina', - 'submit' => 'Invia', - 'cancel' => 'Cancella', - 'remove' => 'Rimuovi', - 'invite' => 'Invita', - 'signup' => 'Registrati', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Opzionale', -]; diff --git a/resources/lang/it-IT/notifications.php b/resources/lang/it-IT/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/it-IT/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/it-IT/pagination.php b/resources/lang/it-IT/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/it-IT/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/it-IT/setup.php b/resources/lang/it-IT/setup.php deleted file mode 100644 index 2808e173..00000000 --- a/resources/lang/it-IT/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Installazione', - 'title' => 'Installa Cachet', - 'service_details' => 'Dettagli del Servizio', - 'env_setup' => 'Configurazione dell\'Ambiente', - 'status_page_setup' => 'Installazione della Pagina di Stato', - 'show_support' => 'Mostrare supporto per Cachet?', - 'admin_account' => 'Account Amministratore', - 'complete_setup' => 'Installazione Completata', - 'completed' => 'Cachet è stato configurato con successo!', - 'finish_setup' => 'Vai alla bacheca', -]; diff --git a/resources/lang/it-IT/validation.php b/resources/lang/it-IT/validation.php deleted file mode 100644 index 5fccb3f3..00000000 --- a/resources/lang/it-IT/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute deve essere accettato.', - 'active_url' => ':attribute non è un URL valido.', - 'after' => ':attribute deve essere una data successiva al :date.', - 'alpha' => ':attribute può contenere solo lettere.', - 'alpha_dash' => ':attribute può contenere solo lettere, numeri e trattini.', - 'alpha_num' => ':attribute può contenere solo lettere e numeri.', - 'array' => ':attribute deve essere un array.', - 'before' => ':attribute deve contenere una data precedente al :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => ':attributo deve avere tra :min e :max elementi.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'Il campo :attribute ha un valore duplicato.', - 'filled' => 'The :attribute field is required.', - 'image' => ':attribute deve contenere un\'immagine.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'Il campo :attribute non esiste in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => ':attribute deve essere una stringa JSON valida.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => ':attribute non può avere più di :max elementi.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => ':attribute deve essere almeno :min kilobyte.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'Il campo :attribute deve essere presente.', - 'regex' => 'Il formato di :attribute non è valido.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'Il campo :attribute è obbligatorio a meno che :other è presente in :values.', - 'required_with' => 'Il campo :attribute è obbligatorio quando :values è presente.', - 'required_with_all' => 'Il campo :attribute è obbligatorio quando :values è presente.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => ':attribute deve essere di :size kilobytes.', - 'string' => ':attribute deve essere di :size caratteri.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => ':attribute deve essere una zona valida.', - 'unique' => 'Il valore del campo :attribute è già stato preso.', - 'url' => 'Il formato di :attribute non è valido.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'messaggio personalizzato', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/it/cachet.php b/resources/lang/it/cachet.php deleted file mode 100644 index 954fdf51..00000000 --- a/resources/lang/it/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Ultimo aggiornamento :timestamp', - 'status' => [ - 1 => 'Operativo', - 2 => 'Problemi sulle prestazioni', - 3 => 'Disservizio parziale', - 4 => 'Interruzione del servizio', - ], - 'group' => [ - 'other' => 'Altri Componenti', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Nessun incidente segnalato', - 'past' => 'Problemi passati', - 'previous_week' => 'Settimana Precedente', - 'next_week' => 'Prossima Settimana', - 'scheduled' => 'Manutenzione programmata', - 'scheduled_at' => ', programmata il :timestamp', - 'status' => [ - 0 => 'Programmata', // TODO: Hopefully remove this. - 1 => 'Analisi', - 2 => 'Identificato', - 3 => 'Osservazione', - 4 => 'Risolto', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Sistema operativo|[2,Inf] Tutti i sistemi sono operativi', - 'bad' => '[0,1] Il sistema al momento presenta problemi|[2,Inf] Alcuni sistemi presentano problemi', - 'major' => '[0,1] Il servizio presenta presenta un grave problema|[2,Inf] Alcuni sistemi presentano un grave problema', - ], - - 'api' => [ - 'regenerate' => 'Rigenera API Key', - 'revoke' => 'Revoca API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Ultima Ora', - 'hourly' => 'Ultime 12 Ore', - 'weekly' => 'Settimana', - 'monthly' => 'Mese', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Iscriviti per ricevere gli aggiornamenti più recenti', - 'button' => 'Iscriviti', - 'manage' => [ - 'no_subscriptions' => 'Sei attualmente iscritto a tutti gli aggiornamenti.', - 'my_subscriptions' => 'Sei attualmente iscritto ai seguenti suggerimenti.', - ], - 'email' => [ - 'subscribe' => 'Iscriviti agli aggiornamenti via email.', - 'subscribed' => 'Ti sei appena iscritto agli aggiornamenti email, controlla la tua casella per confermare la sottoscrizione', - 'verified' => 'La tua iscrizione è stata confermata. Grazie!', - 'manage' => 'Gestisci la tua iscrizione', - 'unsubscribe' => 'Annulla l\'iscrizione agli aggiornamenti email.', - 'unsubscribed' => 'La tua iscrizione è stata rimossa.', - 'failure' => 'Qualcosa è andato storto con l\'iscrizione.', - 'already-subscribed' => 'Non è possibile iscrivere :email perchè risulta già iscritto.', - 'verify' => [ - 'text' => "Conferma l'iscrizione a :app_name. \n:link", - 'html' => 'Per favore conferma la tua iscrizione tramite email su :app_name', - 'button' => 'Conferma iscrizione', - ], - 'maintenance' => [ - 'subject' => '[Manutenzione programmata] :name', - ], - 'incident' => [ - 'subject' => '[Nuova segnalazione] :status: :name', - ], - 'component' => [ - 'subject' => 'Aggiornamento di stato del componente', - 'text' => 'Lo stato del componente: :component_name è cambiato. Il nuovo stato del componente è :component_human_status.\nGrazie, :app_name', - 'html' => '

Lo stato del componente :component_name è cambiato. Il nuovo stato del componente è :component_human_status.

Grazie, :app_name

', - 'tooltip-title' => 'Iscriviti alle notifiche di :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Sei stato invitato nel team :app_name status page, per iscriverti segui il prossimo link.\n:link\nGrazie, :app_name", - 'html' => '

Sei stato invitato nel team :app_name status page, per iscriverti segui il prossimo link.

:link

Grazie, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Registrati', - 'username' => 'Nome Utente', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Il tuo account è stato creato.', - 'failure' => 'Qualcosa non ha funzionato durante la procedura d\'iscrizione.', - ], - - 'system' => [ - 'update' => 'E\' disponibile una nuova versione di Cachet. Scopri come fare qui!', - ], - - // Modal - 'modal' => [ - 'close' => 'Chiudi', - 'subscribe' => [ - 'title' => 'Iscriviti agli aggiornamenti dei componenti', - 'body' => 'Inserisci il tuo indirizzo e-mail per iscriverti agli aggiornamenti di questo componente. Se sei già iscritto, riceverai già email relative a questo componente.', - 'button' => 'Iscriviti', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Resta informato sugli ultimi aggiornamenti dei servizi di :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'Informazioni sul sito', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/it/dashboard.php b/resources/lang/it/dashboard.php deleted file mode 100644 index 79801f4a..00000000 --- a/resources/lang/it/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Pannello amministrativo', - - // Incidents - 'incidents' => [ - 'title' => 'Segnalazioni & Pianificazione', - 'incidents' => 'Segnalazioni', - 'logged' => '{0} Non ci sono segnalazioni, ottimo lavoro.|Hai notificato una segnalazione.|Hai notificato :count segnalazioni.', - 'incident-create-template' => 'Crea Modello', - 'incident-templates' => 'Modelli di segnalazione', - 'add' => [ - 'title' => 'Riporta un problema', - 'success' => 'Segnalazione aggiunta.', - 'failure' => 'C\'è stato un problema con l\'aggiunta dela segnalazione, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Modifica una segnalazione', - 'success' => 'Segnalazione aggiornata.', - 'failure' => 'C\'è stato un problema con la modifica della segnalazione, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'La segnalazione è stata eliminata e non verrà visualizzata sulla tua pagina di stato.', - 'failure' => 'Non è stato possibile eliminare la segnalazione, si prega di riprovare.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Modelli di segnalazione', - 'add' => [ - 'title' => 'Crea un modello di segnalazione', - 'message' => 'È necessario aggiungere un modello di segnalazione.', - 'success' => 'Il tuo nuovo modello di segnalazione è stato creato.', - 'failure' => 'Qualcosa è andato storto con il modello di segnalazione.', - ], - 'edit' => [ - 'title' => 'Modifica Modello', - 'success' => 'Il modello di segnalazione è stato aggiornato.', - 'failure' => 'Qualcosa è andato storto con l\'aggiornamento del modello di segnalazione', - ], - 'delete' => [ - 'success' => 'Il modello di segnalazione è stato eliminato.', - 'failure' => 'Non è stato possibile eliminare il modello di segnalazione, si prega di riprovare.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Manutenzione programmata', - 'logged' => '{0} non ci sono pianificazioni, buon lavoro. | Hai annotato una pianificazione. | Hai riportato :count pianificazioni.', - 'scheduled_at' => 'Pianificato alle :timestamp', - 'add' => [ - 'title' => 'Aggiungi manutenzione programmata', - 'success' => 'Pianificazione aggiunta.', - 'failure' => 'Qualcosa è andato storto aggiungendo la pianificazione, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Modifica la manutenzione programmata', - 'success' => 'La pianificazione è stata aggiornata!', - 'failure' => 'Qualcosa è andato storto con la modifica della pianificazione, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'La manutenzione programmata è stata eliminata e non verrà visualizzata nella tua pagina di stato.', - 'failure' => 'Non è stato possibile eliminare la manutenzione programmata, si prega di riprovare.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componenti', - 'component_statuses' => 'Stati del componente', - 'listed_group' => 'Raggruppati sotto :name', - 'add' => [ - 'title' => 'Aggiungi un componente', - 'message' => 'È necessario aggiungere un componente.', - 'success' => 'Componente creato.', - 'failure' => 'Qualcosa è andato storto con il componente, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Modifica un componente', - 'success' => 'Componente aggiornato.', - 'failure' => 'Qualcosa è andato storto con il componente, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'Il componente è stato eliminato!', - 'failure' => 'Non è stato possibile eliminare il componente, si prega di riprovare.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Gruppo del componente | Gruppi del componente', - 'no_components' => 'È necessario aggiungere un gruppo di componenti.', - 'add' => [ - 'title' => 'Aggiungi un gruppo di componenti', - 'success' => 'Gruppo di componenti aggiunto.', - 'failure' => 'Qualcosa è andato storto con il gruppo di componenti, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Modifica un gruppo di componenti', - 'success' => 'Gruppo di componenti aggiornato.', - 'failure' => 'Qualcosa è andato storto con il gruppo di componenti, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'Il gruppo di componenti è stato eliminato!', - 'failure' => 'Non è stato possibile eliminare il gruppo di componenti, si prega di riprovare.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metriche', - 'add' => [ - 'title' => 'Crea una metrica', - 'message' => 'Si dovrebbe aggiungere un metodo di misura.', - 'success' => 'Metrica creata.', - 'failure' => 'Qualcosa è andato storto con il metodo di misura, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Modifica un metodo di misura', - 'success' => 'Metodo di misura aggiornato.', - 'failure' => 'Qualcosa è andato storto con il metodo di misura, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'Il metodo di misura è stato eliminato e non verrà più visualizzato nella tua pagina di stato.', - 'failure' => 'Non è stato possibile eliminare il metodo di misura, si prega di riprovare.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Iscritti', - 'description' => 'Gli iscritti riceveranno aggiornamenti via email quando vengono create le segnalazioni o vengono aggiornati i componenti vengono.', - 'verified' => 'Verificato', - 'not_verified' => 'Non Verificato', - 'subscriber' => ': email, iscritta :date', - 'no_subscriptions' => 'Iscritto a tutti gli aggiornamenti', - 'add' => [ - 'title' => 'Aggiungi un nuovo iscritto', - 'success' => 'L\'iscritto è stato aggiunto!', - 'failure' => 'Qualcosa è andato storto con l\'aggiunta dell\'iscritto, si prega di riprovare.', - 'help' => 'Immettere ogni iscritto su una nuova riga.', - ], - 'edit' => [ - 'title' => 'Aggiorna l\'iscritto', - 'success' => 'L\'iscritto è stato aggiornato!', - 'failure' => 'Qualcosa è andato storto con la modifica dell\'iscritto, si prega di riprovare.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Gruppo', - 'member' => 'Membro', - 'profile' => 'Profilo', - 'description' => 'I membri del gruppo potranno aggiungere, modificare ed editare componenti e segnalazioni.', - 'add' => [ - 'title' => 'Aggiungi un nuovo membro del gruppo', - 'success' => 'Membro del gruppo aggiunto.', - 'failure' => 'Non è stato possibile aggiungere il membro del gruppo, si prega di riprovare.', - ], - 'edit' => [ - 'title' => 'Aggiorna il profilo', - 'success' => 'Profilo aggiornato.', - 'failure' => 'Qualcosa è andato storto con l\'aggiornamento del profilo, si prega di riprovare.', - ], - 'delete' => [ - 'success' => 'Il membro del gruppo è stato eliminato e non avrà più accesso al pannello amministrativo!', - 'failure' => 'Non è stato possibile aggiungere il membro del gruppo, si prega di riprovare.', - ], - 'invite' => [ - 'title' => 'Invita un nuovo membro del gruppo', - 'success' => 'Un invito è stato inviato', - 'failure' => 'Non è stato possibile inviare l\'invito, si prega di riprovare.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Impostazioni', - 'app-setup' => [ - 'app-setup' => 'Installazione dell\'applicazione', - 'images-only' => 'Possono essere caricate solo le immagini.', - 'too-big' => 'Il file che hai caricato è troppo grande. Caricare un\'immagine più piccola di :size', - ], - 'analytics' => [ - 'analytics' => 'Statistiche', - ], - 'localization' => [ - 'localization' => 'Localizzazione', - ], - 'customization' => [ - 'customization' => 'Personalizzazione', - 'header' => 'Header HTML personalizzato', - 'footer' => 'Footer HTML personalizzato', - ], - 'security' => [ - 'security' => 'Sicurezza', - 'two-factor' => 'Utenti senza autenticazione in due passaggi', - ], - 'stylesheet' => [ - 'stylesheet' => 'Foglio di stile', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Impostazioni salvate.', - 'failure' => 'Le impostazioni non possono essere salvate.', - ], - 'credits' => [ - 'credits' => 'Riconoscimenti', - 'contributors' => 'Collaboratori', - 'license' => 'Cachet è un progetto open source con licenza BSD-3, rilasciato da Alt tre Services Limited.', - 'backers-title' => 'Sostenitori e sponsor', - 'backers' => 'Se si desidera sostenere lo sviluppo futuro, scopri la campagna Cachet Patreon.', - 'thank-you' => 'Grazie a tutti i :count contributori.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Accedi', - 'logged_in' => 'Sei connesso.', - 'welcome' => 'Bentornato!', - 'two-factor' => 'Inserisci il tuo token.', - ], - - // Sidebar footer - 'help' => 'Aiuto', - 'status_page' => 'Pagina di Stato', - 'logout' => 'Disconnetti', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifiche', - 'awesome' => 'Meraviglioso.', - 'whoops' => 'Ops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Supporta Cachet', - 'support_subtitle' => 'Visita la nostra pagina Patreon!', - 'news' => 'Utime notizie', - 'news_subtitle' => 'Ottieni l\'aggiornamento più recente', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Benvenuto nella tua nuova pagina di stato!', - 'message' => 'La pagina di stato è quasi pronta! È possibile configurare queste impostazioni supplementari', - 'close' => 'Portami direttamente al mio pannello amministrativo', - 'steps' => [ - 'component' => 'Crea componenti', - 'incident' => 'Crea segnalazioni', - 'customize' => 'Personalizza', - 'team' => 'Aggiungi utenti', - 'api' => 'Genera un API token', - 'two-factor' => 'Autenticazione con verifica in due passaggi', - ], - ], - -]; diff --git a/resources/lang/it/forms.php b/resources/lang/it/forms.php deleted file mode 100644 index 9144d580..00000000 --- a/resources/lang/it/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Nome Utente', - 'password' => 'Password', - 'site_name' => 'Nome del sito', - 'site_domain' => 'Dominio del sito', - 'site_timezone' => 'Seleziona il tuo fuso orario', - 'site_locale' => 'Seleziona la lingua', - 'enable_google2fa' => 'Abilita la Verifica in Due Passaggi di Google', - 'cache_driver' => 'Driver per la cache', - 'session_driver' => 'Driver per la sessione', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nome Utente o Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Codice di Autenticazione', - 'invalid' => 'Il nome utente o la password non sono validi', - 'invalid-token' => 'Token non valido', - 'cookies' => 'È necessario abilitare i cookie per effettuare l\'accesso.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nome', - 'status' => 'Stato', - 'component' => 'Componente', - 'message' => 'Messaggio', - 'message-help' => 'Si può anche utilizzare il linguaggio di Markdown.', - 'scheduled_at' => 'Per quando si deve pianificare la manutenzione?', - 'incident_time' => 'Quando è accaduto questo incidente?', - 'notify_subscribers' => 'Notificare gli iscritti?', - 'visibility' => 'Visibilità segnalazione', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Visibile solo agli utenti registrati', - 'templates' => [ - 'name' => 'Nome', - 'template' => 'Modello', - 'twig' => 'I modelli di segnalazione possono usare il linguaggio di templating Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nome', - 'status' => 'Stato', - 'group' => 'Gruppo', - 'description' => 'Descrizione', - 'link' => 'Collegamento', - 'tags' => 'Etichette', - 'tags-help' => 'Separati da virgole.', - 'enabled' => 'Componente abilitato?', - - 'groups' => [ - 'name' => 'Nome', - 'collapsing' => 'Scegli la visibilità del gruppo', - 'visible' => 'Sempre espanso', - 'collapsed' => 'Comprimere il gruppo come impostazione predefinita', - 'collapsed_incident' => 'Comprimere il gruppo, ma espandere se ci sono problemi', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nome', - 'suffix' => 'Suffisso', - 'description' => 'Descrizione', - 'description-help' => 'Si può anche utilizzare il linguaggio di Markdown.', - 'display-chart' => 'Visualizzare il grafico nella pagina di stato?', - 'default-value' => 'Valore predefinito', - 'calc_type' => 'Calcolo del metodo di misura', - 'type_sum' => 'Somma', - 'type_avg' => 'Media', - 'places' => 'Cifre decimali', - 'default_view' => 'Vista predefinita', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Valore', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Nome del sito', - 'site-url' => 'URL del Sito', - 'display-graphs' => 'Visualizzare i grafici nella pagina di stato?', - 'about-this-page' => 'Informazioni sulla pagina', - 'days-of-incidents' => 'Quanti giorni di segnalazioni mostrare?', - 'banner' => 'Immagine del banner', - 'banner-help' => 'È consigliabile caricare file larghi non più di 930px.', - 'subscribers' => 'Permettere alle persone di iscriversi alle notifiche via email?', - 'automatic_localization' => 'Tradurre automaticamente la tua pagina di stato nella lingua del visitatore?', - ], - 'analytics' => [ - 'analytics_google' => 'Codice Google Analytics', - 'analytics_gosquared' => 'Codice GoSquared Analytics', - 'analytics_piwik_url' => 'URL dell\'istanza Piwik (senza http(s)://)', - 'analytics_piwik_siteid' => 'Id del sito Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Fuso orario del sito', - 'site-locale' => 'Lingua del sito', - 'date-format' => 'Formato della data', - 'incident-date-format' => 'Formato timestamp della segnalazione', - ], - 'security' => [ - 'allowed-domains' => 'Domini consentiti', - 'allowed-domains-help' => 'Separati da virgola. Il dominio impostato sopra è automaticamente consentito per impostazione predefinita.', - ], - 'stylesheet' => [ - 'custom-css' => 'Foglio di stile personalizzato', - ], - 'theme' => [ - 'background-color' => 'Colore di sfondo', - 'background-fills' => 'Riempimento sfondo (componenti, segnalazioni, footer)', - 'banner-background-color' => 'Colore di sfondo del banner', - 'banner-padding' => 'Padding del banner', - 'fullwidth-banner' => 'Abilitare banner a piena larghezza?', - 'text-color' => 'Colore del testo', - 'dashboard-login' => 'Mostrare pulsante del pannello amministrativo nel footer?', - 'reds' => 'Rosso (utilizzato per gli errori)', - 'blues' => 'Blu (usato per le informazioni)', - 'greens' => 'Verde (usato per operazioni andate a buon fine)', - 'yellows' => 'Giallo (utilizzato per gli avvisi)', - 'oranges' => 'Orange (usato per notifiche)', - 'metrics' => 'Metrics fill', - 'links' => 'Collegamenti', - ], - ], - - 'user' => [ - 'username' => 'Nome Utente', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Rigenerare il tuo API token impedirà alle applicazioni esistenti di accedere a Cachet.', - 'gravatar' => 'Cambia la tua immagine del profilo presso Gravatar.', - 'user_level' => 'Livello utente', - 'levels' => [ - 'admin' => 'Amministratore', - 'user' => 'Utente', - ], - '2fa' => [ - 'help' => 'L\'attivazione dell\'autenticazione in due passaggi aumenta la sicurezza del tuo account. Sarà necessario scaricare Google Authenticator o un\'app simile sul tuo dispositivo mobile. Quando si effettua l\'accesso dovrai fornire un token generato dall\'applicazione.', - ], - 'team' => [ - 'description' => 'Invita i membri del gruppo inserendo qui i loro indirizzi e-mail.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Aggiungi', - 'save' => 'Salva', - 'update' => 'Aggiorna', - 'create' => 'Crea', - 'edit' => 'Modifica', - 'delete' => 'Elimina', - 'submit' => 'Invia', - 'cancel' => 'Cancella', - 'remove' => 'Rimuovi', - 'invite' => 'Invita', - 'signup' => 'Registrati', - - // Other - 'optional' => '* Opzionale', -]; diff --git a/resources/lang/it/pagination.php b/resources/lang/it/pagination.php deleted file mode 100644 index 3db29aff..00000000 --- a/resources/lang/it/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Precedente', - 'next' => 'Successiva »', - -]; diff --git a/resources/lang/it/setup.php b/resources/lang/it/setup.php deleted file mode 100644 index 2808e173..00000000 --- a/resources/lang/it/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Installazione', - 'title' => 'Installa Cachet', - 'service_details' => 'Dettagli del Servizio', - 'env_setup' => 'Configurazione dell\'Ambiente', - 'status_page_setup' => 'Installazione della Pagina di Stato', - 'show_support' => 'Mostrare supporto per Cachet?', - 'admin_account' => 'Account Amministratore', - 'complete_setup' => 'Installazione Completata', - 'completed' => 'Cachet è stato configurato con successo!', - 'finish_setup' => 'Vai alla bacheca', -]; diff --git a/resources/lang/it/validation.php b/resources/lang/it/validation.php deleted file mode 100644 index 8681b571..00000000 --- a/resources/lang/it/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute deve essere accettato.', - 'active_url' => ':attribute non è un URL valido.', - 'after' => ':attribute deve essere una data successiva al :date.', - 'alpha' => ':attribute può contenere solo lettere.', - 'alpha_dash' => ':attribute può contenere solo lettere, numeri e trattini.', - 'alpha_num' => ':attribute può contenere solo lettere e numeri.', - 'array' => ':attribute deve essere un array.', - 'before' => ':attribute deve contenere una data precedente al :date.', - 'between' => [ - 'numeric' => ':attribute deve contenere una data precedente al :date.', - 'file' => 'Il campo :attribute deve essere compreso tra :min e :max.', - 'string' => 'Il campo :attribute deve essere compreso tra :min e :max kilobytes.', - 'array' => ':attributo deve avere tra :min e :max elementi.', - ], - 'boolean' => ':attributo deve avere tra :min e :max elementi.', - 'confirmed' => 'Il campo :attribute deve essere vero o falso.', - 'date' => 'Il campo :attribute non coincide.', - 'date_format' => 'Il campo :attribute non contiene una data valida.', - 'different' => 'Il campo :attribute non corrisponde al formato :format.', - 'digits' => 'I campi :attribute e :other devono contenere valori diversi.', - 'digits_between' => 'Il campo :attribute deve contenere :digits cifre.', - 'email' => 'Il campo :attribute deve contenere dalle :min alle :max cifre.', - 'exists' => 'Il campo :attribute deve essere un indirizzo email valido.', - 'distinct' => 'Il campo :attribute ha un valore duplicato.', - 'filled' => 'Il formato di :attribute non è valido.', - 'image' => ':attribute deve contenere un\'immagine.', - 'in' => ':attribute deve contenere un\'immagine.', - 'in_array' => 'Il campo :attribute non esiste in :other.', - 'integer' => ':attribute selezionato non è valido.', - 'ip' => ':attribute deve essere un numero intero.', - 'json' => ':attribute deve essere una stringa JSON valida.', - 'max' => [ - 'numeric' => ':attribute deve essere un indirizzo IP valido.', - 'file' => ':attribute non può essere superiore a :max.', - 'string' => ':attribute non può essere maggiore di :max kilobytes.', - 'array' => ':attribute non può avere più di :max elementi.', - ], - 'mimes' => ':attribute non può avere più di :max elementi.', - 'min' => [ - 'numeric' => ':attribute deve essere un file di tipo :values.', - 'file' => ':attribute deve essere almeno :min kilobyte.', - 'string' => ':attribute deve essere almeno :min kilobyte.', - 'array' => ':attribute deve essere di almeno :min caratteri.', - ], - 'not_in' => ':attribute deve avere almeno :min elementi.', - 'numeric' => ':attribute selezionato non è valido.', - 'present' => 'Il campo :attribute deve essere presente.', - 'regex' => ':attribute deve essere un numero.', - 'required' => 'Il formato di :attribute non è valido.', - 'required_if' => 'Il campo :attribute è obbligatorio.', - 'required_unless' => 'Il campo :attribute è obbligatorio a meno che :other è presente in :values.', - 'required_with' => 'Il campo :attribute è obbligatorio quando :other è :values.', - 'required_with_all' => 'Il campo :attribute è obbligatorio quando :values è presente.', - 'required_without' => 'Il campo :attribute è obbligatorio quando :values è presente.', - 'required_without_all' => 'Il campo :attribute è obbligatorio quando :values non è presente.', - 'same' => 'Il campo :attribute è obbligatorio quando nessuno dei :values è presente.', - 'size' => [ - 'numeric' => ':attribute e :other devono coincidere.', - 'file' => ':attribute deve essere di :size kilobytes.', - 'string' => ':attribute deve essere di :size caratteri.', - 'array' => ':attribute deve essere di :size caratteri.', - ], - 'string' => ':attribute deve contenere :size elementi.', - 'timezone' => ':attribute deve essere una zona valida.', - 'unique' => 'Il valore del campo :attribute è già stato preso.', - 'url' => 'Il formato di :attribute non è valido.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'messaggio personalizzato', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ja-JP/cachet.php b/resources/lang/ja-JP/cachet.php deleted file mode 100644 index 4240b90f..00000000 --- a/resources/lang/ja-JP/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => '最終更新 :timestamp', - 'status' => [ - 0 => '不明', - 1 => '稼働中', - 2 => 'パフォーマンスに関する問題あり', - 3 => '一部停止中', - 4 => '大規模な停止中', - ], - 'group' => [ - 'other' => 'その他のコンポーネント', - ], - 'select_all' => '全て選択', - 'deselect_all' => '全て選択解除', - ], - - // Incidents - 'incidents' => [ - 'none' => 'インシデントはありません', - 'past' => 'インシデント履歴', - 'stickied' => '固定している障害情報', - 'scheduled' => '計画メンテナンス', - 'scheduled_at' => ', 予定日時 :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => '掲載日時 :timestamp', - 'status' => [ - 1 => '調査中', - 2 => '特定済み', - 3 => '監視中', - 4 => '修正済み', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => '近日中', - 1 => '進行中', - 2 => '完了', - ], - ], - - // Service Status - 'service' => [ - 'good' => '全システムが正常に稼働しています', - 'bad' => '一部のシステムに問題が発生しています', - 'major' => 'システムに深刻な問題が発生しています', - ], - - 'api' => [ - 'regenerate' => 'APIキーの再生成', - 'revoke' => 'APIキーの削除', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => '過去1時間', - 'hourly' => '過去12時間', - 'weekly' => '週', - 'monthly' => '月', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => '購読の解除', - 'button' => '購読', - 'manage_subscription' => '購読の管理', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => '通知の管理', - 'no_subscriptions' => '現在、すべてのアップデートを購読しています。', - 'update_subscription' => '購読の管理', - 'my_subscriptions' => '現在、以下のアップデートを購読しています。', - 'manage_at_link' => '購読の管理', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'メールによるアップデート情報の購読', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'あなたのメール購読を確認しました。ありがとうございます!', - 'manage' => '購読の管理', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'メールの購読が取り消されました。', - 'failure' => '購読に失敗しました。', - 'already-subscribed' => '既に購読しているので :email の購読ができません。', - ], - ], - - 'signup' => [ - 'title' => '新規登録', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'アカウントが作成されました。', - 'failure' => '新規登録に失敗しました。', - ], - - 'system' => [ - 'update' => 'Cachetの新しいバージョンがあります。アップデートの方法についてはこちらを参照して下さい!', - ], - - // Modal - 'modal' => [ - 'close' => '閉じる', - 'subscribe' => [ - 'title' => 'コンポーネントのアップデート情報を購読する', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => '購読', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => ':date に発生した:nameの障害情報', - 'schedule' => ':startDate に予定している:name のメンテナンスの詳細', - 'subscribe' => ':app の障害情報とメンテナンス情報を購読する', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'ホーム', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'このサイトについて', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'ステータスフィード', - -]; diff --git a/resources/lang/ja-JP/dashboard.php b/resources/lang/ja-JP/dashboard.php deleted file mode 100644 index 1c90b57b..00000000 --- a/resources/lang/ja-JP/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => '計画メンテナンス', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/ja-JP/forms.php b/resources/lang/ja-JP/forms.php deleted file mode 100644 index 4d5208c8..00000000 --- a/resources/lang/ja-JP/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => '新規登録', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/ja-JP/notifications.php b/resources/lang/ja-JP/notifications.php deleted file mode 100644 index d0165184..00000000 --- a/resources/lang/ja-JP/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => '購読の管理', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/ja-JP/pagination.php b/resources/lang/ja-JP/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/ja-JP/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/ja-JP/setup.php b/resources/lang/ja-JP/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/ja-JP/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/ja-JP/validation.php b/resources/lang/ja-JP/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/ja-JP/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ja/cachet.php b/resources/lang/ja/cachet.php deleted file mode 100644 index a4e1c132..00000000 --- a/resources/lang/ja/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => '最終更新 :timestamp', - 'status' => [ - 1 => '稼働中', - 2 => 'パフォーマンスに関する問題あり', - 3 => '一部停止中', - 4 => '大規模な停止中', - ], - 'group' => [ - 'other' => 'その他のコンポーネント', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'インシデントはありません', - 'past' => '過去のインシデント', - 'previous_week' => '前の週', - 'next_week' => '次の週', - 'scheduled' => '計画メンテナンス', - 'scheduled_at' => ', 予定日時 :timestamp', - 'status' => [ - 0 => 'Scheduled', // TODO: Hopefully remove this. - 1 => '調査中', - 2 => '特定済み', - 3 => '監視中', - 4 => '修正済み', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'APIキーの再生成', - 'revoke' => 'APIキーの削除', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => '過去1時間', - 'hourly' => '過去12時間', - 'weekly' => '週', - 'monthly' => '月', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => '最新のアップデート情報を購読する', - 'button' => '購読', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'メールによるアップデート情報の購読', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => '新規登録', - 'username' => 'ユーザー名', - 'email' => 'メールアドレス', - 'password' => 'パスワード', - 'success' => 'アカウントが作成されました。', - 'failure' => '新規登録に失敗しました。', - ], - - 'system' => [ - 'update' => 'Cachetの新しいバージョンがあります。アップデートの方法についてはこちらを参照して下さい!', - ], - - // Modal - 'modal' => [ - 'close' => '閉じる', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => '購読', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'このサイトについて', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'ステータスフィード', - -]; diff --git a/resources/lang/ja/dashboard.php b/resources/lang/ja/dashboard.php deleted file mode 100644 index 1ad09373..00000000 --- a/resources/lang/ja/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'ダッシュボード', - - // Incidents - 'incidents' => [ - 'title' => 'インシデント & スケジュール', - 'incidents' => 'インシデント', - 'logged' => '{0} 良いですね。インシデントはありません。|インシデントを1件登録しました。|あなたはインシデントを :count 件 報告しています。', - 'incident-create-template' => 'テンプレートの作成', - 'incident-templates' => 'インシデント・テンプレート', - 'add' => [ - 'title' => 'インシデントの報告', - 'success' => 'インシデントが追加されました。', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'インシデントの編集', - 'success' => 'インシデントが更新されました。', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'インシデント・テンプレート', - 'add' => [ - 'title' => 'インシデントテンプレートの作成', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'テンプレートの編集', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => '計画メンテナンス', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'コンポーネント', - 'component_statuses' => 'コンポーネントのステータス', - 'listed_group' => ':name グループに所属', - 'add' => [ - 'title' => 'コンポーネントの追加', - 'message' => 'コンポーネントを追加してください。', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'コンポーネントの編集', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'コンポーネントが削除されました!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'コンポーネントグループ', - 'no_components' => 'コンポーネントグループを追加して下さい', - 'add' => [ - 'title' => 'コンポーネントグループの追加', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'コンポーネントグループの編集', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'コンポーネントグループが削除されました!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'メトリクス', - 'add' => [ - 'title' => 'メトリクスの作成', - 'message' => 'メトリクスを追加してください。', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'メトリクスの編集', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => '購読者', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => '認証済', - 'not_verified' => '未確認', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => '購読者の追加', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => '購読者の更新', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'チーム', - 'member' => 'メンバー', - 'profile' => 'プロフィール', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => '新しいチームメンバーを追加する', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'プロフィールの更新', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => '新しいチームメンバーを招待する', - 'success' => '招待メールが送信されました', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => '設定', - 'app-setup' => [ - 'app-setup' => 'アプリケーションのセットアップ', - 'images-only' => '画像のみアップロード可能です。', - 'too-big' => 'ファイルサイズが大きすぎます。:size 以下の画像をアップロードしてください。', - ], - 'analytics' => [ - 'analytics' => 'アナリティクス', - ], - 'localization' => [ - 'localization' => 'ローカライズ', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'セキュリティ', - 'two-factor' => '二要素認証が無効になっているユーザー', - ], - 'stylesheet' => [ - 'stylesheet' => 'スタイルシート', - ], - 'theme' => [ - 'theme' => 'テーマ', - ], - 'edit' => [ - 'success' => '設定が保存されました。', - 'failure' => '設定が保存できませんでした。', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'ログイン', - 'logged_in' => 'ログインしました。', - 'welcome' => 'おかえりなさい!', - 'two-factor' => 'トークンを入力して下さい。', - ], - - // Sidebar footer - 'help' => 'ヘルプ', - 'status_page' => 'ステータスページ', - 'logout' => 'ログアウト', - - // Notifications - 'notifications' => [ - 'notifications' => '通知', - 'awesome' => 'Awesome.', - 'whoops' => 'おおっと', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'ステータスページにようこそ!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'コンポーネントの作成', - 'incident' => 'インシデントの作成', - 'customize' => 'カスタム設定', - 'team' => 'ユーザーの追加', - 'api' => 'APIトークンの生成', - 'two-factor' => '二要素認証', - ], - ], - -]; diff --git a/resources/lang/ja/forms.php b/resources/lang/ja/forms.php deleted file mode 100644 index d7ab525b..00000000 --- a/resources/lang/ja/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'メールアドレス', - 'username' => 'ユーザー名', - 'password' => 'パスワード', - 'site_name' => 'サイト名', - 'site_domain' => 'サイトのドメイン', - 'site_timezone' => 'タイムゾーンの選択', - 'site_locale' => '言語選択', - 'enable_google2fa' => 'Googleの2段階認証を有効にする', - 'cache_driver' => 'キャッシュドライバー', - 'session_driver' => 'セッションドライバー', - ], - - // Login form fields - 'login' => [ - 'login' => 'ユーザー名またはメールアドレス', - 'email' => 'メールアドレス', - 'password' => 'パスワード', - '2fauth' => 'Authentication Code', - 'invalid' => 'ユーザ名またはパスワードが違います', - 'invalid-token' => '無効なトークン', - 'cookies' => 'ログインするにはクッキーを有効にする必要があります。', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => '名前', - 'status' => '状況', - 'component' => 'コンポーネント', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => '名前', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => '名前', - 'status' => '状況', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => '名前', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => '名前', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => '合計', - 'type_avg' => '平均', - 'places' => 'Decimal places', - 'default_view' => 'デフォルトのビュー', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => '値', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'サイト名', - 'site-url' => 'サイトのURL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'このページについて', - 'days-of-incidents' => '何日間のインシデントを表示しますか?', - 'banner' => 'Banner Image', - 'banner-help' => '横幅が930px以内の画像をアップロードしてください。', - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'ダッシュボードページへのリンクをフッター部分に表示しますか?', - 'reds' => 'レッド(エラー表示に使用されます)', - 'blues' => 'ブルー(インフォメーション表示に使用されます)', - 'greens' => 'グリーン(成功の表示に使用されます)', - 'yellows' => 'イエロー(アラート表示に使用されます)', - 'oranges' => 'オレンジ(通知表示に使用されます)', - 'metrics' => 'Metrics fill', - 'links' => 'リンク', - ], - ], - - 'user' => [ - 'username' => 'ユーザー名', - 'email' => 'メールアドレス', - 'password' => 'パスワード', - 'api-token' => 'APIトークン', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'ユーザーレベル', - 'levels' => [ - 'admin' => '管理者', - 'user' => 'ユーザー', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => '追加', - 'save' => '保存', - 'update' => '更新', - 'create' => '作成', - 'edit' => '編集', - 'delete' => '削除', - 'submit' => '送信', - 'cancel' => 'キャンセル', - 'remove' => 'Remove', - 'invite' => '招待', - 'signup' => '新規登録', - - // Other - 'optional' => '※ 任意', -]; diff --git a/resources/lang/ja/pagination.php b/resources/lang/ja/pagination.php deleted file mode 100644 index 3580e925..00000000 --- a/resources/lang/ja/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« 前へ', - 'next' => '次へ »', - -]; diff --git a/resources/lang/ja/setup.php b/resources/lang/ja/setup.php deleted file mode 100644 index 9af6bf62..00000000 --- a/resources/lang/ja/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'セットアップ', - 'title' => 'Cachetのセットアップ', - 'service_details' => 'サービスの詳細情報', - 'env_setup' => '環境設定', - 'status_page_setup' => 'ステータスページのセットアップ', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => '管理者アカウント', - 'complete_setup' => 'セットアップの完了', - 'completed' => 'Cachetの設定が正常に終わりました!', - 'finish_setup' => 'ダッシュボード画面に移動', -]; diff --git a/resources/lang/ja/validation.php b/resources/lang/ja/validation.php deleted file mode 100644 index d489464b..00000000 --- a/resources/lang/ja/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => ':attribute は無効なURLです。', - 'after' => ':attribute は :date よりも後の日付にして下さい。', - 'alpha' => ':attribute は、文字が含まれている必要があります。', - 'alpha_dash' => ':attribute は英文字、数字、ダッシュ(-)のみ含めることが出来ます。', - 'alpha_num' => ':attribute は英数字のみ含めることが出来ます。', - 'array' => 'The :attribute must be an array.', - 'before' => ':attribute は :date よりも前の日付にして下さい。', - 'between' => [ - 'numeric' => ':attribute は :date よりも前の日付にして下さい。', - 'file' => ':attribute は :min - :max の範囲内にして下さい。', - 'string' => ':attribute は :min - :max キロバイトの範囲内にして下さい。', - 'array' => ':attribute は :min から :max の範囲内にして下さい。', - ], - 'boolean' => ':attribute は :min から :max の範囲内にして下さい。', - 'confirmed' => ':attribute はtrueもしくはfalseである必要があります。', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => ':attribute は無効な日付です。', - 'different' => ':attribute はフォーマット :format に一致しません。', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => ':attribute は :digits 桁にして下さい。', - 'email' => ':attribute は :min - :max 桁の数値にして下さい。', - 'exists' => ':attribute は有効なメールアドレスにして下さい。', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => ':attribute は画像にして下さい。', - 'in' => ':attribute は画像にして下さい。', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => '選択された :attribute は有効ではありません。', - 'ip' => 'The :attribute must be an integer.', - 'json' => ':attribute は有効なJSON文字列にして下さい。', - 'max' => [ - 'numeric' => ':attribute は有効なIPアドレスにして下さい。', - 'file' => ':attribute は :max 以上にして下さい。', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => '選択された :attribute は有効ではありません。', - 'present' => 'The :attribute field must be present.', - 'regex' => ':attribute は数字にして下さい。', - 'required' => 'The :attribute format is invalid.', - 'required_if' => ':attribute フィールドは必須です。', - 'required_unless' => ':other が :values に含まれない場合、:attribute フィールドは必須です。', - 'required_with' => ':other が :value の場合、:attribute フィールドは必須です。', - 'required_with_all' => ':value が存在する場合、:attribute フィールドは必須です。', - 'required_without' => ':value が存在する場合、:attribute フィールドは必須です。', - 'required_without_all' => ':value が存在しな場合、:attribute フィールドは必須です。', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => ':attribute と :other は、一致しなければなりません。', - 'file' => ':attribute は :size キロバイトにして下さい。', - 'string' => ':attribute は :size 文字にして下さい。', - 'array' => ':attribute は :size 文字にして下さい。', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'カスタムメッセージ', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ko-KR/cachet.php b/resources/lang/ko-KR/cachet.php deleted file mode 100644 index e55e925f..00000000 --- a/resources/lang/ko-KR/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => '이전 문제', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', :timestamp 에 예정됨', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => '확인됨', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => '구독', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => '이메일 구독 신청.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => '이메일 구독 취소', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => '구독', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => '이 사이트에 대해', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => '상태 ', - -]; diff --git a/resources/lang/ko-KR/dashboard.php b/resources/lang/ko-KR/dashboard.php deleted file mode 100644 index fd083517..00000000 --- a/resources/lang/ko-KR/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => '문제 추가', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => '문제 수정', - 'success' => '문제가 수정되었습니다.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => '문제 템플릿 생성하기', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => '문제 템플릿 수정', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => '구성요소 추가', - 'message' => '구성요소를 추가해야 합니다.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => '구성요소 수정', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => '구성요소 그룹 추가', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => '구성요소 그룹 수정', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => '통계', - 'add' => [ - 'title' => '통계 추가', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => '통계 수정', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => '팀 멤버는 구성요소와 문제를 추가하고 수정 할 수 있습니다.', - 'add' => [ - 'title' => '새 팀 멤버 추가', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => '프로필 수정', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => '애플리케이션 설정', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => '좋아요.', - 'whoops' => '이런...', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => '상태 페이지는 거의 다 준비 되었습니다! 추가 설정을 해보세요', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/ko-KR/forms.php b/resources/lang/ko-KR/forms.php deleted file mode 100644 index 8d6e9877..00000000 --- a/resources/lang/ko-KR/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => '잘못된 토큰n', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => '구성요소', - 'component_status' => 'Component Status', - 'message' => '메시지', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => '구독자에게 알림', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => '로그인한 사용자만 볼 수 있음', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => '메시지', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => '쉼표로 구분.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => '상태 페이지에 차트 보이기', - 'default-value' => '기본값', - 'calc_type' => '통계 계산', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => '상태 페이지에 그래프 보이기', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => '이메일 알림을 받기 위한 회원가입 허용', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics 코드', - 'analytics_gosquared' => 'GoSquared Analytics 코드', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik 사이트 id', - ], - 'localization' => [ - 'site-timezone' => '사이트 시간대', - 'site-locale' => '사이트 언어', - 'date-format' => '날짜 형식', - 'incident-date-format' => '문제 Timestamp 형식', - ], - 'security' => [ - 'allowed-domains' => '허용된 도메인', - 'allowed-domains-help' => '쉼표로 구분. 위에 설정된 도메인은 기본적으로 자동 허용 됩니다.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner Background Color', - 'banner-padding' => 'Banner Padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => '수정', - 'create' => '생성', - 'edit' => '수정', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* 선택사항', -]; diff --git a/resources/lang/ko-KR/notifications.php b/resources/lang/ko-KR/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/ko-KR/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/ko-KR/pagination.php b/resources/lang/ko-KR/pagination.php deleted file mode 100644 index 6c89ecad..00000000 --- a/resources/lang/ko-KR/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '이전', - 'next' => '다음', - -]; diff --git a/resources/lang/ko-KR/setup.php b/resources/lang/ko-KR/setup.php deleted file mode 100644 index 8b940c6d..00000000 --- a/resources/lang/ko-KR/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - '설치', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Cachet 에 대한 지원을 표시', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/ko-KR/validation.php b/resources/lang/ko-KR/validation.php deleted file mode 100644 index 3c1b6e1e..00000000 --- a/resources/lang/ko-KR/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => ':attribute 는 문자, 숫자, -만 포함할 수 있습니다.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => ':attribute 는 :date 이전의 날짜 여야 합니다.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ko/cachet.php b/resources/lang/ko/cachet.php deleted file mode 100644 index fb971012..00000000 --- a/resources/lang/ko/cachet.php +++ /dev/null @@ -1,145 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => '정상', - 2 => '성능 이슈', - 3 => '부분 중단', - 4 => '주요 중단', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => '이전 문제', - 'previous_week' => '전 주', - 'next_week' => '다음 주', - 'scheduled' => '예정된 유지 보수', - 'scheduled_at' => ', :timestamp 에 예정됨', - 'status' => [ - 0 => '예정됨', // TODO: Hopefully remove this. - 1 => '파악 중', - 2 => '확인됨', - 3 => '주시하는 중', - 4 => '수정됨', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'API Key 재생성', - 'revoke' => 'API Key 폐지', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => '최신 업데이트를 받아 보기 위한 구독신청.', - 'button' => '구독', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => '이메일 구독 신청.', - 'subscribed' => '이메일 구독 신청이 완료되었습니다. 구독 신청 확인을 위한 이메일을 확인해주세요.', - 'verified' => '이메일 구독이 확인 되었습니다. 감사합니다!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => '이메일 구독 취소', - 'unsubscribed' => '이메일 구독이 취소 되었습니다.', - 'failure' => '구독 신청 중에 문제가 발생했습니다.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => ":app_name 팀의 상태페이지에 초대되었습니다. 가입하시려면 다음 링크를 눌러주세요.\n:link\n감사합니다, :app_name", - 'html' => '

:app_name 팀의 상태페이지에 초대되었습니다. 가입하시려면 다음 링크를 눌러주세요.

-

:link

감사합니다, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => '가입', - 'username' => '사용자이름', - 'email' => '이메일', - 'password' => '비밀번호', - 'success' => '계정이 생성되었습니다.', - 'failure' => '가입 중에 문제가 생겼습니다.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => '구독', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => '이 사이트에 대해', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => '상태 ', - -]; diff --git a/resources/lang/ko/dashboard.php b/resources/lang/ko/dashboard.php deleted file mode 100644 index abb34a6d..00000000 --- a/resources/lang/ko/dashboard.php +++ /dev/null @@ -1,292 +0,0 @@ - '대시보드', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => '문제', - 'logged' => '{0} 아무 문제가 없습니다, 잘하고 있어요.|하나의 문제에 대한 로깅이 있습니다.|:count 개의 문제가 리포트 되었습니다.', - 'incident-create-template' => '템플릿 생성', - 'incident-templates' => '문제 템플릿', - 'updates' => '{0} Zero Updates|One Update|:count Updates', - 'add' => [ - 'title' => '문제 추가', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => '문제 수정', - 'success' => '문제가 수정되었습니다.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - 'update' => [ - 'title' => 'Create new incident update', - 'subtitle' => 'Add an update to :incident', - ], - - // Incident templates - 'templates' => [ - 'title' => '문제 템플릿', - 'add' => [ - 'title' => '문제 템플릿 생성하기', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => '문제 템플릿 수정', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => '예정된 유지 보수', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => ':timestamp 에 예정됨', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => '일정이 추가되었습니다.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => '일정이 업데이트 되었습니다!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => '구성 요소', - 'component_statuses' => '구성요소 상태', - 'listed_group' => ':name 그룹', - 'add' => [ - 'title' => '구성요소 추가', - 'message' => '구성요소를 추가해야 합니다.', - 'success' => '구성요소가 생성되었습니다.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => '구성요소 수정', - 'success' => '구성요소가 수정되었습니다.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => '구성요소 그룹|구성요소 그룹', - 'no_components' => '구성 요소 그룹을 추가 해야 합니다.', - 'add' => [ - 'title' => '구성요소 그룹 추가', - 'success' => '구성요소 그룹이 추가되었습니다.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => '구성요소 그룹 수정', - 'success' => '구성요소 그룹이 수정되었습니다.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => '구성 요소 그룹이 삭제 되었습니다!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => '통계', - 'add' => [ - 'title' => '통계 추가', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => '통계 수정', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => '구독자', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => '인증됨', - 'not_verified' => '인증되지 않음', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => '구독자 추가', - 'success' => '구독자가 추가됨.', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => '구독자 업데이트', - 'success' => '구독자가 업데이트됨.', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => '팀', - 'member' => '멤버', - 'profile' => '프로필', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => '새 팀 멤버 추가', - 'success' => '팀 멤버가 추가되었습니다', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => '프로필 수정', - 'success' => '프로필이 수정되었습니다.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => '사용자 삭제', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => '새 팀 멤버 초대하기', - 'success' => '사용자가 초대되었습니다.', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => '설정', - 'app-setup' => [ - 'app-setup' => '애플리케이션 설정', - 'images-only' => '이미지만 업로드 할 수 있습니다.', - 'too-big' => '업로드 한 파일이 너무 큽니다. :size 보다 작은 이미지를 올려주세요.', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => '사용자 설정', - 'header' => '사용자 지정 헤더 HTML', - 'footer' => '사용자 지정 바닥글 HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => '보안', - 'two-factor' => '2단계 인증을 사용하지 않는 사용자', - ], - 'stylesheet' => [ - 'stylesheet' => '스타일시트', - ], - 'theme' => [ - 'theme' => '테마', - ], - 'edit' => [ - 'success' => '설정이 저장되었습니다.', - 'failure' => '설정을 저장할 수 없습니다.', - ], - 'credits' => [ - 'credits' => '제작진', - 'contributors' => '도움 주신 분들', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => '로그인', - 'logged_in' => '로그인 되었습니다.', - 'welcome' => '안녕하세요!', - 'two-factor' => '토큰을 입력해주세요.', - ], - - // Sidebar footer - 'help' => '도움말', - 'status_page' => '상태 페이지', - 'logout' => '로그아웃', - - // Notifications - 'notifications' => [ - 'notifications' => '알림', - 'awesome' => '좋아요.', - 'whoops' => '이런...', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => '상태 페이지는 거의 다 준비 되었습니다! 추가 설정을 해보세요', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => '구성요소 만들기', - 'incident' => '문제 만들기', - 'customize' => '사용자 지정', - 'team' => '사용자 추가', - 'api' => 'API 토큰 생성', - 'two-factor' => '2단계 인증', - ], - ], - -]; diff --git a/resources/lang/ko/forms.php b/resources/lang/ko/forms.php deleted file mode 100644 index 8f5f960e..00000000 --- a/resources/lang/ko/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => '이메일', - 'username' => '사용자이름', - 'password' => '비밀번호', - 'site_name' => '사이트 이름', - 'site_domain' => '사이트 도메인', - 'site_timezone' => '시간대 선택', - 'site_locale' => '언어 선택', - 'enable_google2fa' => '구글 2단계 인증 활성화', - 'cache_driver' => '캐시 드라이버', - 'session_driver' => '세션 드라이버', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => '이메일', - 'password' => '비밀번호', - '2fauth' => '인증 코드', - 'invalid' => 'Invalid username or password', - 'invalid-token' => '잘못된 토큰n', - 'cookies' => '로그인 하려면 쿠키를 활성화 해야 합니다.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => '이름', - 'status' => '상태', - 'component' => '구성요소', - 'message' => '메시지', - 'message-help' => 'Markdown을 사용할 수 있습니다.', - 'scheduled_at' => '언제 작업을 예약하시겠습니까?', - 'incident_time' => '이 문제는 언제 발생 했습니까??', - 'notify_subscribers' => '구독자에게 알림', - 'visibility' => 'Incident Visibility', - 'public' => '전체 공개', - 'logged_in_only' => '로그인한 사용자만 볼 수 있음', - 'templates' => [ - 'name' => '이름', - 'template' => '템플릿', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => '이름', - 'status' => '상태', - 'group' => '그룹', - 'description' => '설명', - 'link' => '링크', - 'tags' => '태그', - 'tags-help' => '쉼표로 구분.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => '이름', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => '이름', - 'suffix' => '접미사', - 'description' => '설명', - 'description-help' => 'Markdown을 사용할 수 있습니다.', - 'display-chart' => '상태 페이지에 차트 보이기', - 'default-value' => '기본값', - 'calc_type' => '통계 계산', - 'type_sum' => '합계', - 'type_avg' => '평균', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => '값', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => '사이트 이름', - 'site-url' => '사이트 URL', - 'display-graphs' => '상태 페이지에 그래프 보이기', - 'about-this-page' => '이 페이지에 대하여', - 'days-of-incidents' => '몇 일 동안 사건을 표시하시겠습니까?', - 'banner' => 'Banner Image', - 'banner-help' => '가로가 930 픽셀보다 작은 이미지를 업로드 하는 것을 권장합니다.', - 'subscribers' => '이메일 알림을 받기 위한 회원가입 허용', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics 코드', - 'analytics_gosquared' => 'GoSquared Analytics 코드', - 'analytics_piwik_url' => 'Piwik 인스턴스의 URL ( "http(s)://" 제외 )', - 'analytics_piwik_siteid' => 'Piwik 사이트 id', - ], - 'localization' => [ - 'site-timezone' => '사이트 시간대', - 'site-locale' => '사이트 언어', - 'date-format' => '날짜 형식', - 'incident-date-format' => '문제 Timestamp 형식', - ], - 'security' => [ - 'allowed-domains' => '허용된 도메인', - 'allowed-domains-help' => '쉼표로 구분. 위에 설정된 도메인은 기본적으로 자동 허용 됩니다.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner Background Color', - 'banner-padding' => 'Banner Padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => '빨강 (에러에 사용됨)', - 'blues' => '파랑 (정보에 사용됨)', - 'greens' => '초록 (성공에 사용됨)', - 'yellows' => '노랑 (알림에 사용됨)', - 'oranges' => '주황 (공지에 사용됨)', - 'metrics' => 'Metrics fill', - 'links' => '링크', - ], - ], - - 'user' => [ - 'username' => '사용자이름', - 'email' => '이메일', - 'password' => '비밀번호', - 'api-token' => 'API 토큰', - 'api-token-help' => '기존의 프로그램이 Cachet에 접근하는 것을 막기 위해, API token 을 재성성합니다.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => '사용자 레벨', - 'levels' => [ - 'admin' => '관리자', - 'user' => '사용자', - ], - '2fa' => [ - 'help' => '2단계 인증을 활성화하면 계정 보안이 강화됩니다. Google Authenticator 또는 유사한 앱을 모바일 기기에 다운로드 받아야 합니다. 로그인 할 때, 해당 앱에서 생성된 토큰을 입력해야합니다.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => '추가', - 'save' => '저장', - 'update' => '수정', - 'create' => '생성', - 'edit' => '수정', - 'delete' => '삭제', - 'submit' => '전송', - 'cancel' => '취소', - 'remove' => '삭제', - 'invite' => '초대', - 'signup' => '가입', - - // Other - 'optional' => '* 선택사항', -]; diff --git a/resources/lang/ko/pagination.php b/resources/lang/ko/pagination.php deleted file mode 100644 index 9d8c0351..00000000 --- a/resources/lang/ko/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« 이전', - 'next' => '다음 »', - -]; diff --git a/resources/lang/ko/setup.php b/resources/lang/ko/setup.php deleted file mode 100644 index 173aa648..00000000 --- a/resources/lang/ko/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - '설치', - 'title' => 'Cachet 설치', - 'service_details' => '서비스 상세정보', - 'env_setup' => '환경 설정', - 'status_page_setup' => '상태 페이지 설정', - 'show_support' => 'Cachet 에 대한 지원을 표시', - 'admin_account' => '관리자 계정', - 'complete_setup' => '설치 완료', - 'completed' => 'Cachet 이 성공적으로 설정되었습니다.', - 'finish_setup' => '대시보드로 이동', -]; diff --git a/resources/lang/ko/validation.php b/resources/lang/ko/validation.php deleted file mode 100644 index fe0567d5..00000000 --- a/resources/lang/ko/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute 는 허용되어야 합니다.', - 'active_url' => ':attribute 는 올바른 URL이 아닙니다.', - 'after' => ':attribute 는 :date 이후의 날짜 여야 합니다.', - 'alpha' => ':attribute 는 문자만 포함할 수 있습니다.', - 'alpha_dash' => ':attribute 는 문자, 숫자, -만 포함할 수 있습니다.', - 'alpha_num' => ':attribute 는 문자와 숫자만 포함할 수 있습니다.', - 'array' => ':attribute 는 배열이어야 합니다.', - 'before' => ':attribute 는 :date 이전의 날짜 여야 합니다.', - 'between' => [ - 'numeric' => ':attribute 는 :date 이전의 날짜 여야 합니다.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => ':attribute 는 :min 과 :max 사이의 항목을 가져야 합니다.', - ], - 'boolean' => ':attribute 는 :min 과 :max 사이의 항목을 가져야 합니다.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => ':attribute 형식이 올바르지 않습니다.', - 'image' => ':attribute 는 이미지여야 합니다.', - 'in' => ':attribute 는 이미지여야 합니다.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => ':attribute 는 유효한 JSON 문자열이어야 합니다.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => ':attribute 는 :max 개 이상의 항목을 가질 수 없습니다.', - ], - 'mimes' => ':attribute 는 :max 개 이상의 항목을 가질 수 없습니다.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => ':attribute 는 최소 :min kilobytes 여야 합니다.', - 'string' => ':attribute 는 최소 :min kilobytes 여야 합니다.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => ':attribute 형식이 올바르지 않습니다.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => ':attribute 는 :values 가 존재할 때 필요합니다.', - 'required_without' => ':attribute 는 :values 가 존재할 때 필요합니다.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => ':attribute 는 :size kilobytes 여야 합니다.', - 'string' => ':attribute 는 :size 자의 문자여야 합니다.', - 'array' => ':attribute 는 :size 자의 문자여야 합니다.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute 는 유효한 영역이어야 합니다.', - 'unique' => ':attribute 는 이미 사용되었습니다.', - 'url' => ':attribute 형식이 올바르지 않습니다.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => '사용자 정의 메세지', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/mn-MN/cachet.php b/resources/lang/mn-MN/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/mn-MN/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/mn-MN/dashboard.php b/resources/lang/mn-MN/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/mn-MN/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/mn-MN/forms.php b/resources/lang/mn-MN/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/mn-MN/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/mn-MN/notifications.php b/resources/lang/mn-MN/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/mn-MN/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/mn-MN/pagination.php b/resources/lang/mn-MN/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/mn-MN/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/mn-MN/setup.php b/resources/lang/mn-MN/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/mn-MN/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/mn-MN/validation.php b/resources/lang/mn-MN/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/mn-MN/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/nl-NL/cachet.php b/resources/lang/nl-NL/cachet.php deleted file mode 100644 index 1e1377ac..00000000 --- a/resources/lang/nl-NL/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Laatst bijgewerkt :timestamp', - 'status' => [ - 0 => 'Onbekend', - 1 => 'Operationeel', - 2 => 'Prestatieproblemen', - 3 => 'Gedeeltelijke Storing', - 4 => 'Grote Storing', - ], - 'group' => [ - 'other' => 'Andere componenten', - ], - 'select_all' => 'Alles selecteren', - 'deselect_all' => 'Alles deselecteren', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Geen incidenten gemeld', - 'past' => 'Oude incidenten', - 'stickied' => 'Vastgezette incidenten', - 'scheduled' => 'Gepland onderhoud', - 'scheduled_at' => ', gepland :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Geplaatst op :timestamp', - 'status' => [ - 1 => 'In onderzoek', - 2 => 'Geïdentificeerd', - 3 => 'Aan het opvolgen', - 4 => 'Opgelost', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Aankomend', - 1 => 'In Behandeling', - 2 => 'Voltooid', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]Systeem operationeel|[2,*]Alle systemen zijn operationeel', - 'bad' => '[0,1] Het systeem ondervindt momenteel problemen |[2,Inf] Sommige systemen ondervinden momenteel problemen', - 'major' => '[0,1] Het systeem ondervindt momenteel een grote storing|[2,Inf] Sommige systemen ondervinden momenteel een grote storing', - ], - - 'api' => [ - 'regenerate' => 'Hergenereer API-sleutel', - 'revoke' => 'API-sleutel Intrekken', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Laatste uur', - 'hourly' => 'Laatste 12 uur', - 'weekly' => 'Wekelijks', - 'monthly' => 'Maandelijks', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Abonneer je op statuswijzigingen en incident updates', - 'unsubscribe' => 'Abonnement opzeggen', - 'button' => 'Abonneren', - 'manage_subscription' => 'Abonnement beheren', - 'manage' => [ - 'notifications' => 'Notificaties', - 'notifications_for' => 'Beheer meldingen voor', - 'no_subscriptions' => 'Je bent momenteel geabonneerd op alle updates.', - 'update_subscription' => 'Abonnement bijwerken', - 'my_subscriptions' => 'Je bent momenteel geabonneerd op de volgende updates.', - 'manage_at_link' => 'Beheer uw abonnementen op: link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Abonneren op e-mail updates.', - 'subscribed' => 'U bent geabonneerd op e-mail notificaties, controleer uw e-mail om uw abonnement te bevestigen.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Uw e-mail abonnement is bevestigd. Bedankt!', - 'manage' => 'Beheer je abonnement', - 'unsubscribe' => 'Afmelden voor e-mail updates.', - 'unsubscribed' => 'Uw e-mail abonnement is opgezegd.', - 'failure' => 'Er ging iets fout tijdens het aanmelden.', - 'already-subscribed' => 'Kan niet aanmelden voor :email omdat deze momenteel al is aangemeld.', - ], - ], - - 'signup' => [ - 'title' => 'Registreer', - 'username' => 'Gebruikersnaam', - 'email' => 'E-mail', - 'password' => 'Wachtwoord', - 'success' => 'Uw account is aangemaakt.', - 'failure' => 'Er is iets misgegaan met het inschrijven.', - ], - - 'system' => [ - 'update' => 'Er is een nieuwere versie van Cachet beschikbaar. Kijk hoe je moet updaten hier!', - ], - - // Modal - 'modal' => [ - 'close' => 'Sluiten', - 'subscribe' => [ - 'title' => 'Abonneren voor component updates', - 'body' => 'Vul uw e-mailadres in om updates te krijgen voor dit component. Als u al ingeschreven bent, krijgt u al emails voor dit component.', - 'button' => 'Abonneren', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Informatie en updates over het :name incident van :date', - 'schedule' => 'Informatie over het :name onderhoud gepland op :startDate', - 'subscribe' => 'Abonneer je op :app om updates te ontvangen van incidenten en geplande onderhoudsperioden', - 'overview' => 'Blijf op de hoogte van de laatste service updates over :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Mogelijk gemaakt door Cachet.', - 'timezone' => 'Tijden worden getoond in :timezone.', - 'about_this_site' => 'Over deze website', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/nl-NL/dashboard.php b/resources/lang/nl-NL/dashboard.php deleted file mode 100644 index 7faeb6b6..00000000 --- a/resources/lang/nl-NL/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'De Cachet instellingen-map is niet schrijfbaar. Zorg er voor dat ./bootstrap/cachet schrijfbaar is voor de webserver.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidenten & Onderhoud', - 'incidents' => 'Incidenten', - 'logged' => '{0}Top, er zijn geen incidenten.|[1]Je hebt één incident gerapporteerd.|[2,*]Je hebt :count incidenten gerapporteerd.', - 'incident-create-template' => 'Maak template', - 'incident-templates' => 'Incident Sjablonen', - 'updates' => [ - 'title' => 'Incident updates voor :incident', - 'count' => '{0}Geen updates|[1]Één update|[2]Twee updates|[3,*]Meerdere updates', - 'add' => [ - 'title' => 'Maak een nieuwe incident update', - 'success' => 'Je nieuwe incident update is aangemaakt.', - 'failure' => 'Er is iets misgegaan met de incident update.', - ], - 'edit' => [ - 'title' => 'Incident update bewerken', - 'success' => 'De incident update is bijgewerkt.', - 'failure' => 'Er is een fout opgetreden bij het wijzigen van de incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Meld een incident', - 'success' => 'Incident toegevoegd.', - 'failure' => 'Er is een fout opgetreden tijdens het toevoegen van het incident, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Wijzig een incident', - 'success' => 'Incident bijgewerkt.', - 'failure' => 'Er is een fout opgetreden bij het wijzigen van het incident, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'Het incident is verwijderd en zal niet meer worden weergegeven op de statuspagina.', - 'failure' => 'Het incident kon niet worden verwijderd, probeer het opnieuw.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Sjablonen', - 'add' => [ - 'title' => 'Creëer een incident template', - 'message' => 'Voeg een incident template toe.', - 'success' => 'Je nieuwe incident template is aangemaakt.', - 'failure' => 'Er is iets misgegaan met de incident template.', - ], - 'edit' => [ - 'title' => 'Wijzig template', - 'success' => 'De incident template is bijgewerkt.', - 'failure' => 'Er is een fout opgetreden bij het wijzigen van het incident template', - ], - 'delete' => [ - 'success' => 'De incident template is verwijderd.', - 'failure' => 'De incident template kon niet worden verwijderd, probeer het opnieuw.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Gepland onderhoud', - 'logged' => '{0}Er zijn geen geplande onderhoudsmomenten.|[1]Er is één onderhoudsmoment gepland.|[2,*]Er zijn :count geplande onderhoudsmomenten.', - 'scheduled_at' => 'Gepland op :timestamp', - 'add' => [ - 'title' => 'Gepland onderhoud toevoegen', - 'success' => 'Onderhoud toegevoegd.', - 'failure' => 'Er ging iets mis met het toevoegen van het geplande onderhoud, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Gepland onderhoud bewerken', - 'success' => 'Gepland onderhoud is bijgewerkt!', - 'failure' => 'Er ging iets mis met het wijzigen van het geplande onderhoud, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'Het geplande onderhoud is verwijderd en zal niet worden getoond op de statuspagina.', - 'failure' => 'Het geplande onderhoud kon niet worden verwijderd, probeer het opnieuw.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componenten', - 'component_statuses' => 'Onderdeel statussen', - 'listed_group' => 'Gegroepeerd onder :name', - 'add' => [ - 'title' => 'Voeg een component toe', - 'message' => 'Gelieve een onderdeel toe te voegen.', - 'success' => 'Onderdeel aangemaakt.', - 'failure' => 'Er ging iets mis met de component group, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Wijzig een component', - 'success' => 'Onderdeel bijgewerkt.', - 'failure' => 'Er ging iets mis met de component group, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'Het component is verwijderd!', - 'failure' => 'Het component kon niet worden verwijderd, probeer het opnieuw.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Onderdeel groep|Onderdeel groepen', - 'no_components' => 'U moet een componentgroep toevoegen.', - 'add' => [ - 'title' => 'Componentgroep toevoegen', - 'success' => 'Componentengroep toegevoegd.', - 'failure' => 'Er ging iets mis met de component group, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Componentgroep bewerken', - 'success' => 'Componentengroep bijgewerkt.', - 'failure' => 'Er ging iets mis met de component group, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'De componentgroep is verwijderd!', - 'failure' => 'De componentengroep kon niet worden verwijderd, probeer het opnieuw.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Statistieken', - 'add' => [ - 'title' => 'Meting aanmaken', - 'message' => 'Voeg een meting toe.', - 'success' => 'Meting aangemaakt.', - 'failure' => 'Er ging iets mis met de metingen, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Meting bewerken', - 'success' => 'Meting bijgewerkt.', - 'failure' => 'Er ging iets mis met de metingen, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'De meting is verwijderd en zal niet meer worden weergegeven op de statuspagina.', - 'failure' => 'De meting kon niet verwijderd worden, probeer het opnieuw.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonnees', - 'description' => 'Abonnees ontvangen een email update wanneer er incidenten zijn gemaakt of componenten worden bijgewerkt.', - 'description_disabled' => 'Om deze functie te gebruiken, moet u mensen aanmelden voor meldingen toestaan.', - 'verified' => 'Geverifiëerd', - 'not_verified' => 'Niet geverifiëerd', - 'subscriber' => ':email, geabonneerd op :date', - 'no_subscriptions' => 'Geabonneerd op alle updates', - 'global' => 'Globaal geabonneerd', - 'add' => [ - 'title' => 'Voeg een nieuwe abonnee toe', - 'success' => 'Abonnee is toegevoegd!', - 'failure' => 'Er ging iets mis met het toevoegen van de abonnee, probeer het opnieuw.', - 'help' => 'Vul elke abonnee in op een nieuwe regel.', - ], - 'edit' => [ - 'title' => 'Abonnee bijwerken', - 'success' => 'Abonnee is gewijzigd!', - 'failure' => 'Er ging iets verkeerd met bewerken van de abonnee, probeer het opnieuw.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Lid', - 'profile' => 'Profiel', - 'description' => 'Teamleden zullen onderdelen en incidenten kunnen aanpassen & toevoegen.', - 'add' => [ - 'title' => 'Voeg een nieuw teamlid toe', - 'success' => 'Teamlid toegevoegd.', - 'failure' => 'Het teamlid kon niet worden toegevoegd, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Profiel bijwerken', - 'success' => 'Profiel bijgewerkt.', - 'failure' => 'Er ging iets mis met het bijwerken van het profiel, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'Het teamlid is verwijderd en heeft geen toegang meer tot het dashboard!', - 'failure' => 'Het teamlid kon niet worden toegevoegd, probeer het opnieuw.', - ], - 'invite' => [ - 'title' => 'Nodig een nieuw teamlid uit', - 'success' => 'De uitnodiging is verzonden', - 'failure' => 'De uitnodiging kon niet verzonden worden, probeer het opnieuw.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Instellingen', - 'app-setup' => [ - 'app-setup' => 'Applicatie Installatie', - 'images-only' => 'Alleen afbeeldingen kunnen worden geüpload.', - 'too-big' => 'Het bestand dat u heeft geüpload is te groot. Upload een afbeelding kleiner dan :size', - ], - 'analytics' => [ - 'analytics' => 'Analyses', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Lokalisatie', - ], - 'customization' => [ - 'customization' => 'Aanpassing', - 'header' => 'Aangepaste Header HTML', - 'footer' => 'Aangepaste voettekst HTML', - ], - 'mail' => [ - 'mail' => 'E-mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notificatie van Cachet', - 'body' => 'Dit is een test notificatie van Cachet.', - ], - ], - 'security' => [ - 'security' => 'Beveiliging', - 'two-factor' => 'Gebruikers zonder authenticatie in twee stappen', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Thema', - ], - 'edit' => [ - 'success' => 'Instellingen bewaard.', - 'failure' => 'Instellingen kunnen niet worden opgeslagen.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Bijdragers', - 'license' => 'Cachet is een open source product onder de BSD-3 licentie, uitgebracht door Alt Three Services Limited.', - 'backers-title' => 'Donateurs & Sponsoren', - 'backers' => 'Als u de toekomstige ontwikkeling wilt ondersteunen, bezoek de Cachet Patreon campagne.', - 'thank-you' => 'Onze dank gaat uit naar elk van de :count verschillende bijdragers.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'U bent ingelogd.', - 'welcome' => 'Welkom Terug!', - 'two-factor' => 'Voer uw token in.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Pagina', - 'logout' => 'Uitloggen', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notificaties', - 'awesome' => 'Geweldig.', - 'whoops' => 'Oepsie.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Steun Cachet', - 'support_subtitle' => 'Bekijk onze Patreon pagina!', - 'news' => 'Laatste nieuws', - 'news_subtitle' => 'Ontvang de laatste updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welkom op je statuspagina!', - 'message' => 'Uw statuspagina is bijna klaar! U kunt deze extra instellingen configureren', - 'close' => 'Stuur me direct naar mijn dashboard', - 'steps' => [ - 'component' => 'Onderdelen maken', - 'incident' => 'Incidenten aanmaken', - 'customize' => 'Aanpassen', - 'team' => 'Gebruikers toevoegen', - 'api' => 'API-token genereren', - 'two-factor' => 'Authenticatie in twee stappen', - ], - ], - -]; diff --git a/resources/lang/nl-NL/forms.php b/resources/lang/nl-NL/forms.php deleted file mode 100644 index ac1f72e8..00000000 --- a/resources/lang/nl-NL/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'E-mail', - 'username' => 'Gebruikersnaam', - 'password' => 'Wachtwoord', - 'site_name' => 'Site naam', - 'site_domain' => 'Site Domein', - 'site_timezone' => 'Selecteer uw tijdzone', - 'site_locale' => 'Selecteer uw taal', - 'enable_google2fa' => 'Schakel Google twee factor authenticatie in', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Sessie Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Server', - 'mail_address' => 'Mail Van-Adres', - 'mail_username' => 'Mail Gebruikersnaam', - 'mail_password' => 'Mail Wachtwoord', - ], - - // Login form fields - 'login' => [ - 'login' => 'Gebruikersnaam of e-mail', - 'email' => 'E-mail', - 'password' => 'Wachtwoord', - '2fauth' => 'Authenticatie Code', - 'invalid' => 'Ongeldige gebruikersnaam of wachtwoord', - 'invalid-token' => 'Ongeldig token', - 'cookies' => 'U moet cookies inschakelen om in te loggen.', - 'rate-limit' => 'Snelheids limiet overschreden.', - 'remember_me' => 'Blijf ingelogd', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Naam', - 'status' => 'Status', - 'component' => 'Onderdeel', - 'component_status' => 'Onderdeel status', - 'message' => 'Boodschap', - 'message-help' => 'U kan ook gebruik maken van Markdown.', - 'occurred_at' => 'Wanneer heeft dit incident plaatsgevonden?', - 'notify_subscribers' => 'Houd abonnees op de hoogte?', - 'notify_disabled' => 'Vanwege geplande onderhoudswerken zullen meldingen over dit incident of onderdelen hiervan worden onderdrukt.', - 'visibility' => 'Incident Zichtbaarheid', - 'stick_status' => 'Incident Vastzetten', - 'stickied' => 'Vastgezet', - 'not_stickied' => 'Niet Vastgezet', - 'public' => 'Zichtbaar voor publiek', - 'logged_in_only' => 'Alleen zichtbaar voor ingelogde gebruikers', - 'templates' => [ - 'name' => 'Naam', - 'template' => 'Sjabloon', - 'twig' => 'Incident Templates kunnen gebruik maken van de Twig template taal.', - ], - ], - - 'schedules' => [ - 'name' => 'Naam', - 'status' => 'Status', - 'message' => 'Boodschap', - 'message-help' => 'U kan ook gebruik maken van Markdown.', - 'scheduled_at' => 'Voor wanneer is dit onderhoudsschema bedoeld?', - 'completed_at' => 'Wanneer was dit onderhoud voltooid?', - 'templates' => [ - 'name' => 'Naam', - 'template' => 'Sjabloon', - 'twig' => 'Incident Templates kunnen gebruik maken van de Twig template taal.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Naam', - 'status' => 'Status', - 'group' => 'Groep', - 'description' => 'Omschrijving', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Komma gescheiden.', - 'enabled' => 'Component ingeschakeld?', - - 'groups' => [ - 'name' => 'Naam', - 'collapsing' => 'Opties uitklappen/inklappen', - 'visible' => 'Altijd uitgevouwen', - 'collapsed' => 'Vouw de groep standaard samen', - 'collapsed_incident' => 'De groep samenvouwen, maar uitklappen als er problemen zijn.', - 'visibility' => 'Zichtbaarheid', - 'visibility_public' => 'Zichtbaar voor iedereen', - 'visibility_authenticated' => 'Alleen zichtbaar voor ingelogde gebruikers', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Naam', - 'description' => 'Omschrijving', - 'start_at' => 'Geplande starttijd', - 'timezone' => 'Tijdzone', - 'schedule_frequency' => 'Geplande frequentie (in seconden)', - 'completion_latency' => 'Oplostijd (in seconden)', - 'group' => 'Groep', - 'active' => 'Actief?', - 'groups' => [ - 'name' => 'Groepsnaam', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Naam', - 'suffix' => 'Achtervoegsel', - 'description' => 'Omschrijving', - 'description-help' => 'U kan ook gebruik maken van Markdown.', - 'display-chart' => 'Grafiek tonen op statuspagina?', - 'default-value' => 'Standaardwaarde', - 'calc_type' => 'Berekening van de metingen', - 'type_sum' => 'Som', - 'type_avg' => 'Gemiddelde', - 'places' => 'Decimalen', - 'default_view' => 'Standaardweergave', - 'threshold' => 'Hoeveel minuten tussen de metrische punten?', - 'visibility' => 'Zichtbaarheid', - 'visibility_authenticated' => 'Zichtbaar voor ingelogde gebruikers', - 'visibility_public' => 'Zichtbaar voor iedereen', - 'visibility_hidden' => 'Altijd verborgen', - - 'points' => [ - 'value' => 'Waarde', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site naam', - 'site-url' => 'Site URL', - 'display-graphs' => 'Grafieken tonen op statuspagina?', - 'about-this-page' => 'Over deze pagina', - 'days-of-incidents' => 'Hoeveel dagen moeten incidenten getoond worden?', - 'time_before_refresh' => 'Statuspagina verversingssnelheid (in seconden)', - 'major_outage_rate' => 'Drempelwaarde voor grote onderbreking (in %)', - 'banner' => 'Banner afbeelding', - 'banner-help' => 'Bij voorkeur geen afbeeldingen breder dan 930 pixels uploaden', - 'subscribers' => 'Bezoekers toestaan om te abonneren op e-mail notificaties?', - 'suppress_notifications_in_maintenance' => 'Onderdruk meldingen wanneer incident tijdens de onderhoudingsperiode voordoet?', - 'skip_subscriber_verification' => 'Verificatie van gebruikers overslaan? (Let op, je kunt gespamd worden)', - 'automatic_localization' => 'Stel de taal van de bezoeker in als standaardtaal voor deze bezoeker?', - 'enable_external_dependencies' => 'Schakel afhankelijkheden van derden in (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Toon de tijdzone op de statuspagina', - 'only_disrupted_days' => 'Alleen dagen met incidenten op de tijdlijn tonen?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics-code', - 'analytics_gosquared' => 'GoSquared Analytics-code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Site-id van Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Website tijdzone', - 'site-locale' => 'Taal van de site', - 'date-format' => 'Datum formaat', - 'incident-date-format' => 'Incident tijdsaanduiding', - ], - 'security' => [ - 'allowed-domains' => 'Toegestane domeinen', - 'allowed-domains-help' => 'Door komma\'s gescheiden. Het hierboven ingestelde domein is automatisch standaard toegelaten.', - 'always-authenticate' => 'Altijd aanmelden', - 'always-authenticate-help' => 'Aanmelding vereist om ieder Cachet pagina te bekijken', - ], - 'stylesheet' => [ - 'custom-css' => 'Aangepaste Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Achtergrondkleur', - 'background-fills' => 'Achtergrond opvulling (components, incidents, footer)', - 'banner-background-color' => 'Banner achtergrond kleur', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Banner op volledige breedte tonen?', - 'text-color' => 'Tekstkleur', - 'dashboard-login' => 'Laat dashboard knop zien in de footer?', - 'reds' => 'Rood (voor errors)', - 'blues' => 'Blauw (voor informatie)', - 'greens' => 'Groen (voor succes)', - 'yellows' => 'Geel (voor waarschuwingen)', - 'oranges' => 'Oranje (voor notificaties)', - 'metrics' => 'Metrics opvulling', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Gebruikersnaam', - 'email' => 'E-mail', - 'password' => 'Wachtwoord', - 'api-token' => 'API-token', - 'api-token-help' => 'Het opnieuw genereren van je API-token zorgt ervoor dat bestaande applicaties geen toegang meer hebben tot Cachet.', - 'gravatar' => 'Verander je profielfoto op Gravatar.', - 'user_level' => 'Gebruikersniveau', - 'levels' => [ - 'admin' => 'Beheerder', - 'user' => 'Gebruiker', - ], - '2fa' => [ - 'help' => 'Het inschakelen van two-factor authenticatie verhoogt de veiligheid van uw account. U zult een applicatie zoals Google Authenticator of een vergelijkbare applicatie moeten downloaden op uw mobiele apparaat. Wanneer u inlogt wordt u gevraagd om een token in te voeren welke door de applicatie wordt gegenereerd.', - ], - 'team' => [ - 'description' => 'Nodig je teamleden uit door hier hun e-mailadres in te vullen.', - 'email' => 'Mailadres van uw teamleden', - ], - ], - - 'general' => [ - 'timezone' => 'Selecteer Tijdzone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Toevoegen', - 'save' => 'Opslaan', - 'update' => 'Bijwerken', - 'create' => 'Aanmaken', - 'edit' => 'Bewerken', - 'delete' => 'Verwijderen', - 'submit' => 'Versturen', - 'cancel' => 'Annuleren', - 'remove' => 'Verwijderen', - 'invite' => 'Uitnodigen', - 'signup' => 'Registreer', - 'manage_updates' => 'Updates beheren', - - // Other - 'optional' => '* Optioneel', -]; diff --git a/resources/lang/nl-NL/notifications.php b/resources/lang/nl-NL/notifications.php deleted file mode 100644 index f163b799..00000000 --- a/resources/lang/nl-NL/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component status bijgewerkt', - 'greeting' => 'De status van een component is bijgewerkt!', - 'content' => ':name status is veranderd van :old_status naar :new_status.', - 'action' => 'Tonen', - ], - 'slack' => [ - 'title' => 'Component status bijgewerkt', - 'content' => ':name status is veranderd van :old_status naar :new_status.', - ], - 'sms' => [ - 'content' => ':name status is veranderd van :old_status naar :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Nieuw incident gemeld', - 'greeting' => 'Er is een nieuw incident gemeld voor :app_name.', - 'content' => 'Incident :name is gerapporteerd', - 'action' => 'Tonen', - ], - 'slack' => [ - 'title' => 'Incident :name is gerapporteerd', - 'content' => 'Er is een nieuw incident gemeld voor :app_name', - ], - 'sms' => [ - 'content' => 'Er is een nieuw incident gemeld voor :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident bijgewerkt', - 'content' => ':name is bijgewerkt', - 'title' => ':name is bijgewerkt naar :new_status', - 'action' => 'Tonen', - ], - 'slack' => [ - 'title' => ':name is bijgewerkt', - 'content' => ':name is bijgewerkt naar :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name is bijgewerkt', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Nieuw tijdschema aangemaakt', - 'content' => ':name is ingepland voor :date', - 'title' => 'Nieuw gepland onderhoud aangemaakt.', - 'action' => 'Tonen', - ], - 'slack' => [ - 'title' => 'Nieuw tijdschema aangemaakt!', - 'content' => ':name is ingepland voor :date', - ], - 'sms' => [ - 'content' => ':name is ingepland voor :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Bevestig je inschrijving', - 'content' => 'Klik om je inschrijving op :app_name statuspagina te bevestigen.', - 'title' => 'Bevestig je inschrijving voor de :app_name statuspagina.', - 'action' => 'Verifiëren', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Abonnement beheren', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping van Cachet!', - 'content' => 'Dit is een testnotificatie van Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Je uitnodiging zit in deze e-mail...', - 'content' => 'Je bent uitgenodigd voor de :app_name statuspagina.', - 'title' => 'Je bent uitgenodigd voor :app_name statuspagina.', - 'action' => 'Accepteer', - ], - ], - ], -]; diff --git a/resources/lang/nl-NL/pagination.php b/resources/lang/nl-NL/pagination.php deleted file mode 100644 index 7810e8a7..00000000 --- a/resources/lang/nl-NL/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Vorige', - 'next' => 'Volgende', - -]; diff --git a/resources/lang/nl-NL/setup.php b/resources/lang/nl-NL/setup.php deleted file mode 100644 index ccd67677..00000000 --- a/resources/lang/nl-NL/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Installatie', - 'title' => 'Installeer Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Omgevingsconfiguratie', - 'status_page_setup' => 'Installatie statuspagina', - 'show_support' => 'Steun voor Cachet tonen?', - 'admin_account' => 'Beheerdersaccount', - 'complete_setup' => 'Voltooi Installatie', - 'completed' => 'Cachet is succesvol geconfigureerd!', - 'finish_setup' => 'Ga naar het dashboard', -]; diff --git a/resources/lang/nl-NL/validation.php b/resources/lang/nl-NL/validation.php deleted file mode 100644 index 55541862..00000000 --- a/resources/lang/nl-NL/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute moet worden aanvaard.', - 'active_url' => ':attribute is geen correcte URL.', - 'after' => ':attribute moet een datum later dan :date zijn.', - 'alpha' => ':attribute mag alleen letters bevatten.', - 'alpha_dash' => ':attribute mag alleen letters, cijfers, en streepjes bevatten.', - 'alpha_num' => ':attribute mag enkel letters en nummers bevatten.', - 'array' => ':attribute moet een reeks zijn.', - 'before' => ':attribute moet een datum vóór :date zijn.', - 'between' => [ - 'numeric' => ':attribute moet tussen :min en de :max zijn.', - 'file' => ':attribute moet tussen de :min en de :max aantal kilobytes zijn.', - 'string' => ':attribute moet tussen de :min en :max karakters lang zijn.', - 'array' => ':attribute moet tussen :min en :max items hebben.', - ], - 'boolean' => 'Het :attribute veld moet waar of onwaar zijn.', - 'confirmed' => 'De :attribute bevestiging komt niet overeen.', - 'date' => ':attribute is geen geldige datum.', - 'date_format' => ':attribute komt niet overeen met het volgende formaat :format.', - 'different' => ':attribute en :other mogen niet hetzelfde zijn.', - 'digits' => ':attribute moet uit :digits cijfers bestaan.', - 'digits_between' => ':attribute moet tussen de :min en :max cijfers zijn.', - 'email' => ':attribute moet een geldig e-mail adres zijn.', - 'exists' => 'Het geselecteerde :attribute is ongeldig.', - 'distinct' => 'Het :attribute veld heeft een dubbele waarde.', - 'filled' => 'Het :attribute veld is verplicht.', - 'image' => ':attribute moet een afbeelding zijn.', - 'in' => 'Het geselecteerde :attribute is ongeldig.', - 'in_array' => 'Het :attribute veld bestaat niet in :other.', - 'integer' => ':attribute moet een geheel getal zijn.', - 'ip' => 'Het :attribute moet een geldig IP-adres zijn.', - 'json' => ':attribute moet een valide JSON tekst zijn.', - 'max' => [ - 'numeric' => ':attribute mag niet groter zijn dan :max.', - 'file' => ':attribute mag niet groter zijn dan :max kilobytes.', - 'string' => ':attribute mag niet groter zijn dan :max tekens.', - 'array' => ':attribute mag niet meer dan :max items hebben.', - ], - 'mimes' => ':attribute moet een :values bestand zijn.', - 'min' => [ - 'numeric' => ':attribute moet tenminste :min zijn.', - 'file' => ':attribute moet minstens :min kilobytes groot zijn.', - 'string' => ':attribute moet minimaal :min tekens zijn.', - 'array' => ':attribute moet tenminste :min onderdelen hebben.', - ], - 'not_in' => 'Het geselecteerde :attribute is ongeldig.', - 'numeric' => ':attribute moet een getal zijn.', - 'present' => 'Het :attribute veld moet aanwezig zijn.', - 'regex' => 'Het :attribute-formaat is ongeldig.', - 'required' => 'Het :attribute veld is verplicht.', - 'required_if' => 'Het :attribute veld is verplicht als :other :value is.', - 'required_unless' => 'Het :attribute veld is verplicht tenzij :other is in :values.', - 'required_with' => ':attribute veld is verplicht wanneer :values aanwezig zijn.', - 'required_with_all' => ':attribute veld is verplicht wanneer :values aanwezig zijn.', - 'required_without' => 'Het :attribute veld is verplicht als er geen :values zijn.', - 'required_without_all' => 'Het :attribute veld is verplicht als geen van :values aanwezig zijn.', - 'same' => ':attribute en :other moeten overeenkomen.', - 'size' => [ - 'numeric' => ':attribute moet :size zijn.', - 'file' => ':attribute moet :size kilobytes groot zijn.', - 'string' => ':attribute moet :size karakters zijn.', - 'array' => ':attribute moet :size onderdelen bevatten.', - ], - 'string' => ':attribute moet een woord zijn.', - 'timezone' => ':attribute moet een geldige zone zijn.', - 'unique' => ':attribute is reeds in gebruik.', - 'url' => 'Het :attribute-formaat is ongeldig.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/nl/cachet.php b/resources/lang/nl/cachet.php deleted file mode 100644 index 75ec21b8..00000000 --- a/resources/lang/nl/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Laatst bijgewerkt :timestamp', - 'status' => [ - 1 => 'Operationeel', - 2 => 'Prestatieproblemen', - 3 => 'Gedeeltelijke Storing', - 4 => 'Grote Storing', - ], - 'group' => [ - 'other' => 'Andere componenten', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Geen incidenten gemeld', - 'past' => 'Oude incidenten', - 'previous_week' => 'Vorige week', - 'next_week' => 'Volgende week', - 'scheduled' => 'Gepland onderhoud', - 'scheduled_at' => ', gepland :timestamp', - 'status' => [ - 0 => 'Gepland', // TODO: Hopefully remove this. - 1 => 'In onderzoek', - 2 => 'Geïdentificeerd', - 3 => 'Aan het opvolgen', - 4 => 'Opgelost', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Systeem operationeel|[2,Inf] Alle systemen zijn operationeel', - 'bad' => '[0,1] Het systeem ondervind momenteel problemen |[2,Inf] Sommige systemen ondervinden momenteel problemen', - 'major' => '[0,1] De service ondervind momenteel a grote storing|[2,Inf] Sommige systemen ondervinden momenteel een grote storing', - ], - - 'api' => [ - 'regenerate' => 'Hergenereer API-sleutel', - 'revoke' => 'API-sleutel Intrekken', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Laatste uur', - 'hourly' => 'Laatste 12 uur', - 'weekly' => 'Wekelijks', - 'monthly' => 'Maandelijks', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Abonneer voor de meest recente updates', - 'button' => 'Abonneren', - 'manage' => [ - 'no_subscriptions' => 'Je bent momenteel geabonneerd op alle updates.', - 'my_subscriptions' => 'Je bent momenteel geabonneerd op de volgende updates.', - ], - 'email' => [ - 'subscribe' => 'Abonneren op e-mail updates.', - 'subscribed' => 'U bent geabonneerd op e-mail notificaties, controleer uw e-mail om uw abonnement te bevestigen.', - 'verified' => 'Uw e-mail abonnement is bevestigd. Bedankt!', - 'manage' => 'Beheer je abonnement', - 'unsubscribe' => 'Afmelden voor e-mail updates.', - 'unsubscribed' => 'Uw e-mail abonnement is opgezegd.', - 'failure' => 'Er ging iets fout tijdens het aanmelden.', - 'already-subscribed' => 'Kan niet aanmelden voor :email omdat deze momenteel al is aangemeld.', - 'verify' => [ - 'text' => "Verifeer je email abbonement op :app_name status updates.\n:link", - 'html' => '

Verifeer je email abonnement op :app_name status updates.

', - 'button' => 'Bevestig uw abbonement', - ], - 'maintenance' => [ - 'subject' => '[Onderhoud gepland] :name', - ], - 'incident' => [ - 'subject' => '[Nieuw Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component status update', - 'text' => 'Component :component_name heeft een gewijzigde status. De component status is nu :component_human_status.\nBedankt, :app_name', - 'html' => '

Component :component_name heeft een gewijzigde status. De component status is nu :component_human_status.

Bedankt, :app_name

', - 'tooltip-title' => 'Abonneren voor notificaties van :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "U bent uitgenodigd voor team :app_name status pagina, om u in te schrijven klik op de volgende link.\n:link\nBedankt, :app_name", - 'html' => '

U bent uitgenodigd voor team :app_name status pagina, om u in te schrijven klik op de volgende link.

:link

Bedankt, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Registreer', - 'username' => 'Gebruikersnaam', - 'email' => 'E-mail', - 'password' => 'Wachtwoord', - 'success' => 'Uw account is aangemaakt.', - 'failure' => 'Er is iets misgegaan met het inschrijven.', - ], - - 'system' => [ - 'update' => 'Er is een nieuwere versie van Cachet beschikbaar. Kijk hoe je moet updaten hier!', - ], - - // Modal - 'modal' => [ - 'close' => 'Sluiten', - 'subscribe' => [ - 'title' => 'Abonneren voor component updates', - 'body' => 'Vul uw e-mailadres in om updates te krijgen voor dit component. Als u al ingeschreven bent, krijgt u al emails voor dit component.', - 'button' => 'Abonneren', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Blijf op de hoogte van de laatste service updates over :app.', - 'powered_by' => 'Mogelijk gemaakt door Cachet.', - 'about_this_site' => 'Over deze website', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/nl/dashboard.php b/resources/lang/nl/dashboard.php deleted file mode 100644 index d492d1b5..00000000 --- a/resources/lang/nl/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Dashboard', - - // Incidents - 'incidents' => [ - 'title' => 'Incidenten & planning', - 'incidents' => 'Incidenten', - 'logged' => '{0} Proficiat, er zijn geen incidenten.|Er heeft zich één incident voorgedaan.|Er zijn :count incidenten gerapporteerd.', - 'incident-create-template' => 'Maak template', - 'incident-templates' => 'Incident Sjablonen', - 'add' => [ - 'title' => 'Meld een incident', - 'success' => 'Incident toegevoegd.', - 'failure' => 'Er is een fout opgetreden tijdens het toevoegen van het incident, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Wijzig een incident', - 'success' => 'Incident bijgewerkt.', - 'failure' => 'Er is een fout opgetreden bij het wijzigen van het incident, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'Het incident is verwijderd en zal niet meer worden weergegeven op de statuspagina.', - 'failure' => 'Het incident kon niet worden verwijderd, probeer het opnieuw.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Sjablonen', - 'add' => [ - 'title' => 'Creëer een incident template', - 'message' => 'Voeg een incident template toe.', - 'success' => 'Je nieuwe incident template is aangemaakt.', - 'failure' => 'Er is iets misgegaan met de incident template.', - ], - 'edit' => [ - 'title' => 'Wijzig template', - 'success' => 'De incident template is bijgewerkt.', - 'failure' => 'Er is een fout opgetreden bij het wijzigen van het incident template', - ], - 'delete' => [ - 'success' => 'De incident template is verwijderd.', - 'failure' => 'De incident template kon niet worden verwijderd, probeer het opnieuw.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Gepland onderhoud', - 'logged' => '{0} Er zijn geen schema\'s, goed werk.|Je hebt één schema aangemaakt.|Je hebt :count schema\'s aangegeven.', - 'scheduled_at' => 'Gepland op :timestamp', - 'add' => [ - 'title' => 'Gepland onderhoud toevoegen', - 'success' => 'Planning toegevoegd.', - 'failure' => 'Er ging iets mis met het toevoegen van het geplande onderhoud, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Gepland onderhoud bewerken', - 'success' => 'Planning is bijgewerkt!', - 'failure' => 'Er ging iets mis met het wijzigen van het geplande onderhoud, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'De planning is verwijderd en zal niet worden getoond op jouw statuspagina.', - 'failure' => 'De planning kon niet worden verwijderd, probeer het opnieuw.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componenten', - 'component_statuses' => 'Onderdeel statussen', - 'listed_group' => 'Gegroepeerd onder :name', - 'add' => [ - 'title' => 'Voeg een component toe', - 'message' => 'Gelieve een onderdeel toe te voegen.', - 'success' => 'Onderdeel aangemaakt.', - 'failure' => 'Er ging iets mis met de component group, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Wijzig een component', - 'success' => 'Onderdeel bijgewerkt.', - 'failure' => 'Er ging iets mis met de component group, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'Het component is verwijderd!', - 'failure' => 'Het component kon niet worden verwijderd, probeer het opnieuw.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Onderdeel groep|Onderdeel groepen', - 'no_components' => 'U moet een componentgroep toevoegen.', - 'add' => [ - 'title' => 'Componentgroep toevoegen', - 'success' => 'Componentengroep toegevoegd.', - 'failure' => 'Er ging iets mis met de componentengroep, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Componentgroep bewerken', - 'success' => 'Componentengroep bijgewerkt.', - 'failure' => 'Er ging iets mis met de componentengroep, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'De component groep is verwijderd!', - 'failure' => 'De componentengroep kon niet worden verwijderd, probeer het opnieuw.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Statistieken', - 'add' => [ - 'title' => 'Meting aanmaken', - 'message' => 'Voeg een meting toe.', - 'success' => 'Meting aangemaakt.', - 'failure' => 'Er ging iets mis met de metingen, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Meting bewerken', - 'success' => 'Meting bijgewerkt.', - 'failure' => 'Er ging iets mis met de metingen, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'De meting is verwijderd en zal niet meer worden weergegeven op de statuspagina.', - 'failure' => 'De meting kon niet verwijderd worden, probeer het opnieuw.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonnees', - 'description' => 'Abonnees ontvangen een email update wanneer er incidenten zijn gemaakt of componenten worden bijgewerkt.', - 'verified' => 'Geverifiëerd', - 'not_verified' => 'Niet geverifiëerd', - 'subscriber' => ':email, geabonneerd op :date', - 'no_subscriptions' => 'Geabonneerd op alle updates', - 'add' => [ - 'title' => 'Voeg een nieuwe abonnee toe', - 'success' => 'Abonnee is toegevoegd!', - 'failure' => 'Er ging iets mis met het toevoegen van de abonnee, probeer het opnieuw.', - 'help' => 'Vul elke abonnee in op een nieuwe regel', - ], - 'edit' => [ - 'title' => 'Abonnee bijwerken', - 'success' => 'Abonnee is gewijzigd!', - 'failure' => 'Er ging iets verkeerd met bewerken van de abonnee, probeer het opnieuw.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Lid', - 'profile' => 'Profiel', - 'description' => 'Teamleden zullen onderdelen en incidenten kunnen aanpassen & toevoegen.', - 'add' => [ - 'title' => 'Voeg een nieuw teamlid toe', - 'success' => 'Teamlid toegevoegd.', - 'failure' => 'Het teamlid kon niet worden toegevoegd, probeer het opnieuw.', - ], - 'edit' => [ - 'title' => 'Profiel bijwerken', - 'success' => 'Profiel bijgewerkt.', - 'failure' => 'Er ging iets mis met het bijwerken van het profiel, probeer het opnieuw.', - ], - 'delete' => [ - 'success' => 'Het teamlid is verwijderd en heeft geen toegang meer tot het dashboard!', - 'failure' => 'Het teamlid kon niet worden toegevoegd, probeer het opnieuw.', - ], - 'invite' => [ - 'title' => 'Nodig een nieuw teamlid uit', - 'success' => 'De uitnodiging is verzonden', - 'failure' => 'De uitnodiging kon niet verzonden worden, probeer het opnieuw.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Instellingen', - 'app-setup' => [ - 'app-setup' => 'Applicatie Installatie', - 'images-only' => 'Alleen afbeeldingen kunnen worden geüpload.', - 'too-big' => 'Het bestand dat u heeft geüpload is te groot. Upload een afbeelding kleiner dan :size', - ], - 'analytics' => [ - 'analytics' => 'Analyses', - ], - 'localization' => [ - 'localization' => 'Lokalisatie', - ], - 'customization' => [ - 'customization' => 'Aanpassing', - 'header' => 'Aangepaste Header HTML', - 'footer' => 'Aangepaste voettekst HTML', - ], - 'security' => [ - 'security' => 'Beveiliging', - 'two-factor' => 'Gebruikers zonder authenticatie in twee stappen', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Thema', - ], - 'edit' => [ - 'success' => 'Instellingen bewaard.', - 'failure' => 'Instellingen kunnen niet worden opgeslagen.', - ], - 'credits' => [ - 'credits' => 'Erkenningen', - 'contributors' => 'Bijdragers', - 'license' => 'Cachet is een BSD-3-gelicentieerd opensourceproject, uitgebracht door Alt Three Services Limited.', - 'backers-title' => 'Donateurs & Sponsoren', - 'backers' => 'Als u de toekomstige ontwikkeling wilt ondersteunen, bezoek de Cachet Patreon-campagne.', - 'thank-you' => 'Dank aan de :count verschillende medewerkers.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'U bent ingelogd.', - 'welcome' => 'Welkom Terug!', - 'two-factor' => 'Voer uw token in.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Pagina', - 'logout' => 'Uitloggen', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notificaties', - 'awesome' => 'Geweldig.', - 'whoops' => 'Oepsie.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Ondersteuning Cachet', - 'support_subtitle' => 'Kijk op onze Patreon pagina!', - 'news' => 'Laatste nieuws', - 'news_subtitle' => 'Ontvang de nieuwste updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welkom op je statuspagina!', - 'message' => 'Uw statuspagina is bijna klaar! U kunt deze extra instellingen configureren', - 'close' => 'Stuur me direct naar mijn dashboard', - 'steps' => [ - 'component' => 'Onderdelen maken', - 'incident' => 'Incidenten aanmaken', - 'customize' => 'Aanpassen', - 'team' => 'Gebruikers toevoegen', - 'api' => 'API-token genereren', - 'two-factor' => 'Authenticatie in twee stappen', - ], - ], - -]; diff --git a/resources/lang/nl/forms.php b/resources/lang/nl/forms.php deleted file mode 100644 index 6d8aa4a0..00000000 --- a/resources/lang/nl/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'E-mail', - 'username' => 'Gebruikersnaam', - 'password' => 'Wachtwoord', - 'site_name' => 'Site naam', - 'site_domain' => 'Site Domein', - 'site_timezone' => 'Selecteer uw tijdzone', - 'site_locale' => 'Selecteer uw taal', - 'enable_google2fa' => 'Schakel Google twee factor authenticatie in', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Sessie Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Gebruikersnaam of e-mail', - 'email' => 'E-mail', - 'password' => 'Wachtwoord', - '2fauth' => 'Authenticatie Code', - 'invalid' => 'Ongeldige gebruikersnaam of wachtwoord', - 'invalid-token' => 'Ongeldig token', - 'cookies' => 'U moet cookies inschakelen om in te loggen.', - 'rate-limit' => 'Snelheids limiet overschreden.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Naam', - 'status' => 'Status', - 'component' => 'Onderdeel', - 'message' => 'Boodschap', - 'message-help' => 'U kan ook gebruik maken van Markdown.', - 'scheduled_at' => 'Voor wanneer is het onderhoud gepland?', - 'incident_time' => 'Wanneer heeft dit incident plaatsgevonden?', - 'notify_subscribers' => 'Houd abonnees op de hoogte?', - 'visibility' => 'Incident Zichtbaarheid', - 'public' => 'Zichtbaar voor publiek', - 'logged_in_only' => 'Alleen zichtbaar voor ingelogde gebruikers', - 'templates' => [ - 'name' => 'Naam', - 'template' => 'Sjabloon', - 'twig' => 'Incident Templates kunnen gebruik maken van de Twig template taal.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Naam', - 'status' => 'Status', - 'group' => 'Groep', - 'description' => 'Omschrijving', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Komma gescheiden.', - 'enabled' => 'Component ingeschakeld?', - - 'groups' => [ - 'name' => 'Naam', - 'collapsing' => 'Kies de zichtbaarheid van de groep', - 'visible' => 'Altijd uitgevouwen', - 'collapsed' => 'Vouw de groep standaard samen', - 'collapsed_incident' => 'De groep samenvouwen, maar uitklappen als er problemen zijn.', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Naam', - 'suffix' => 'Achtervoegsel', - 'description' => 'Beschrijving', - 'description-help' => 'Je mag ook Markdown gebruiken.', - 'display-chart' => 'Grafiek tonen op statuspagina?', - 'default-value' => 'Standaardwaarde', - 'calc_type' => 'Berekening van de metingen', - 'type_sum' => 'Som', - 'type_avg' => 'Gemiddelde', - 'places' => 'Decimalen', - 'default_view' => 'Standaardweergave', - 'threshold' => 'Hoeveel minuten tussen de metrische punten?', - - 'points' => [ - 'value' => 'Waarde', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Site naam', - 'site-url' => 'Site URL', - 'display-graphs' => 'Grafieken tonen op statuspagina?', - 'about-this-page' => 'Over deze pagina', - 'days-of-incidents' => 'Hoeveel dagen moeten incidenten getoond worden?', - 'banner' => 'Banner afbeelding', - 'banner-help' => 'Het wordt aanbevolen dat u geen bestanden upload die breeder zijn dan 930px.', - 'subscribers' => 'Bezoekers toestaan om te abonneren op e-mail notificaties?', - 'automatic_localization' => 'Stel de taal van de bezoeker in als standaardtaal voor deze bezoeker?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics-code', - 'analytics_gosquared' => 'GoSquared Analytics-code', - 'analytics_piwik_url' => 'URL van je Piwik installatie (zonder http(s)://)', - 'analytics_piwik_siteid' => 'Site-id van Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Website tijdzone', - 'site-locale' => 'Taal van de site', - 'date-format' => 'Datum formaat', - 'incident-date-format' => 'Incident tijdsaanduiding', - ], - 'security' => [ - 'allowed-domains' => 'Toegestane domeinen', - 'allowed-domains-help' => 'Door komma\'s gescheiden. Het hierboven ingestelde domein is automatisch standaard toegelaten.', - ], - 'stylesheet' => [ - 'custom-css' => 'Aangepaste Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Achtergrondkleur', - 'background-fills' => 'Achtergrond opvulling (components, incidents, footer)', - 'banner-background-color' => 'Banner achtergrond kleur', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Volledige breedte van de banner aanzetten?', - 'text-color' => 'Tekstkleur', - 'dashboard-login' => 'Laat dashboard knop zien in de footer?', - 'reds' => 'Rood (voor errors)', - 'blues' => 'Blauw (voor informatie)', - 'greens' => 'Groen (voor succes)', - 'yellows' => 'Geel (voor waarschuwingen)', - 'oranges' => 'Oranje (voor notificaties)', - 'metrics' => 'Metrics opvulling', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Gebruikersnaam', - 'email' => 'E-mail', - 'password' => 'Wachtwoord', - 'api-token' => 'API-token', - 'api-token-help' => 'Het opnieuw genereren van je API-token zorgt ervoor dat bestaande applicaties geen toegang meer hebben tot Cachet.', - 'gravatar' => 'Verander je profielfoto op Gravatar.', - 'user_level' => 'Gebruikersniveau', - 'levels' => [ - 'admin' => 'Beheerder', - 'user' => 'Gebruiker', - ], - '2fa' => [ - 'help' => 'Het inschakelen van two-factor authenticatie verhoogt de veiligheid van uw account. U zult een applicatie zoals Google Authenticator of een vergelijkbare applicatie moeten downloaden op uw mobiele apparaat. Wanneer u inlogt wordt u gevraagd om een token in te voeren welke door de applicatie wordt gegenereerd.', - ], - 'team' => [ - 'description' => 'Nodig je teamleden uit door hier hun e-mailadres in te vullen.', - 'email' => 'E-mail #:id', - ], - ], - - // Buttons - 'add' => 'Toevoegen', - 'save' => 'Opslaan', - 'update' => 'Bijwerken', - 'create' => 'Aanmaken', - 'edit' => 'Bewerken', - 'delete' => 'Verwijderen', - 'submit' => 'Versturen', - 'cancel' => 'Annuleren', - 'remove' => 'Verwijderen', - 'invite' => 'Uitnodigen', - 'signup' => 'Registreer', - - // Other - 'optional' => '* Optioneel', -]; diff --git a/resources/lang/nl/pagination.php b/resources/lang/nl/pagination.php deleted file mode 100644 index 4863de06..00000000 --- a/resources/lang/nl/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Vorige', - 'next' => 'Volgende »', - -]; diff --git a/resources/lang/nl/setup.php b/resources/lang/nl/setup.php deleted file mode 100644 index ccd67677..00000000 --- a/resources/lang/nl/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Installatie', - 'title' => 'Installeer Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Omgevingsconfiguratie', - 'status_page_setup' => 'Installatie statuspagina', - 'show_support' => 'Steun voor Cachet tonen?', - 'admin_account' => 'Beheerdersaccount', - 'complete_setup' => 'Voltooi Installatie', - 'completed' => 'Cachet is succesvol geconfigureerd!', - 'finish_setup' => 'Ga naar het dashboard', -]; diff --git a/resources/lang/nl/validation.php b/resources/lang/nl/validation.php deleted file mode 100644 index 7d3c3dc1..00000000 --- a/resources/lang/nl/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute moet worden aanvaard.', - 'active_url' => ':attribute is geen correcte URL.', - 'after' => ':attribute moet een datum later dan :date zijn.', - 'alpha' => ':attribute mag alleen letters bevatten.', - 'alpha_dash' => ':attribute mag alleen letters, cijfers, en streepjes bevatten.', - 'alpha_num' => ':attribute mag enkel letters en nummers bevatten.', - 'array' => ':attribute moet een reeks zijn.', - 'before' => ':attribute moet een datum vóór :date zijn.', - 'between' => [ - 'numeric' => ':attribute moet een datum vóór :date zijn.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => ':attribute moet tussen :min en :max items hebben.', - ], - 'boolean' => ':attribute moet tussen :min en :max items hebben.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'Het :attribute-formaat is ongeldig.', - 'image' => ':attribute moet een afbeelding zijn.', - 'in' => ':attribute moet een afbeelding zijn.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => ':attribute moet een valide JSON tekst zijn.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => ':attribute mag niet meer dan :max items hebben.', - ], - 'mimes' => ':attribute mag niet meer dan :max items hebben.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => ':attribute moet minstens :min kilobytes groot zijn.', - 'string' => ':attribute moet minstens :min kilobytes groot zijn.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'Het :attribute-formaat is ongeldig.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'Het :attribute veld is verplicht tenzij :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => ':attribute veld is verplicht wanneer :values aanwezig zijn.', - 'required_without' => ':attribute veld is verplicht wanneer :values aanwezig zijn.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => ':attribute moet :size kilobytes groot zijn.', - 'string' => ':attribute moet :size karakters zijn.', - 'array' => ':attribute moet :size karakters zijn.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute moet een geldige zone zijn.', - 'unique' => ':attribute is reeds in gebruik.', - 'url' => 'Het :attribute-formaat is ongeldig.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/no-NO/cachet.php b/resources/lang/no-NO/cachet.php deleted file mode 100644 index 99285831..00000000 --- a/resources/lang/no-NO/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Sist oppdatert :timestamp', - 'status' => [ - 0 => 'Ukjent', - 1 => 'Ingen problemer', - 2 => 'Ytelsesproblemer', - 3 => 'Delvis brudd', - 4 => 'Større brudd', - ], - 'group' => [ - 'other' => 'Andre komponenter', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Ingen hendelser rapportert', - 'past' => 'Tidligere hendelser', - 'stickied' => 'Festede hendelser', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', planlagt :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Undersøkes', - 2 => 'Identifisert', - 3 => 'Observerer', - 4 => 'Løst', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Kommende', - 1 => 'Pågår', - 2 => 'Fullført', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerer API-nøkkel', - 'revoke' => 'Tilbakekall API-nøkkel', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Siste time', - 'hourly' => 'Siste 12 timer', - 'weekly' => 'Uke', - 'monthly' => 'Måned', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Abonner', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'Du abonnerer for øyeblikket på alle oppdateringer.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'Du abonnerer for øyeblikket på følgende oppdateringer.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Abonner på e-postoppdateringer.', - 'subscribed' => 'Du abonnerer nå på e-postvarslinger, sjekk din e-post for å bekrefte abonneringen.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Ditt epost abonnement er bekreftet!', - 'manage' => 'Administrer ditt abonnement', - 'unsubscribe' => 'Meld av e-postvarsling.', - 'unsubscribed' => 'Ditt e-postabonnement har blitt kansellert.', - 'failure' => 'Noe gikk galt med abonneringen.', - 'already-subscribed' => 'Kan ikke abonnere: email fordi de allerede er abonnenter.', - ], - ], - - 'signup' => [ - 'title' => 'Registerer deg', - 'username' => 'Brukernavn', - 'email' => 'E-post', - 'password' => 'Passord', - 'success' => 'Din konto er opprettet.', - 'failure' => 'Noe gikk galt med registreringsprosessen.', - ], - - 'system' => [ - 'update' => 'Det finnes en nyere versjon av Cachet. Du kan lære hvordan å oppdatere her!', - ], - - // Modal - 'modal' => [ - 'close' => 'Lukk', - 'subscribe' => [ - 'title' => 'Abonner for å motta varslinger for komponenten på e-post', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Abonner', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Hold deg oppdatert med de nyeste service-oppdateringene fra :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Tider vises i :timezone.', - 'about_this_site' => 'Om denne siden', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/no-NO/dashboard.php b/resources/lang/no-NO/dashboard.php deleted file mode 100644 index 3fbb64f1..00000000 --- a/resources/lang/no-NO/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashbord', - 'writeable_settings' => 'Mappen for Cachet instillinger er ikke skrivbar. Kontroller at ./bootstrap/cachet er skrivbar av webserveren.', - - // Incidents - 'incidents' => [ - 'title' => 'Hendelser & vedlikehold', - 'incidents' => 'Incidents', - 'logged' => '{0}Det er ingen hendelser, godt jobbet.|[1]Du har logget en hendelse.|[2,*]Du har rapportert :count hendelser.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Hendelseoppdateringer for :incident', - 'count' => '{0}Ingen Oppdateringer|[1]Èn Oppdatering|[2]To Oppdateringer|[3,*]Flere Oppdateringer', - 'add' => [ - 'title' => 'Opprett ny hendelseoppdatering', - 'success' => 'Din nye hendelsesoppdatering ble opprettet.', - 'failure' => 'Noe gikk galt med hendelsesoppdateringen.', - ], - 'edit' => [ - 'title' => 'Rediger hendelsesoppdatering', - 'success' => 'Hendelsesoppdateringen har blitt oppdatert.', - 'failure' => 'Noe gikk galt ved oppdatering av hendelsesoppdateringen', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Opprett din første hendelsesmal.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}Det har ikke vært noe vedlikehold, godtjobbet.|[1]Du har logget èn tidsplan.|[2,*]Du har rapportert :count planlagte vedlikehold.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Legg til planlagt vedlikehold', - 'success' => 'Vedlikehold lagt til.', - 'failure' => 'Noe gikk galt med å legge til vedlikeholdet, vennligst prøv igjen.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Noe gikk galt med å redigere vedlikeholdet, vennligst prøv igjen.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'Hvis du vil bruke denne funksjonen, må du tillate folk å melde seg på for varsler.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globalt abonnert', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Logg', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'E-post', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Testnotifikasjon fra Cachet', - 'body' => 'Dette er en testnotifikasjon fra Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Velkommen tilbake!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Støtt Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/no-NO/forms.php b/resources/lang/no-NO/forms.php deleted file mode 100644 index c7a5add2..00000000 --- a/resources/lang/no-NO/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'E-post', - 'username' => 'Brukernavn', - 'password' => 'Passord', - 'site_name' => 'Nettstedsnavn', - 'site_domain' => 'Nettstedsdomene', - 'site_timezone' => 'Velg din tidssone', - 'site_locale' => 'Velg ditt språk', - 'enable_google2fa' => 'Aktiver Google to-faktor autentisering', - 'cache_driver' => 'Cache-Driver', - 'queue_driver' => 'Kø-Driver', - 'session_driver' => 'Økt Driver', - 'mail_driver' => 'E-post driver', - 'mail_host' => 'E-post tjener', - 'mail_address' => 'E-post-fra adresse', - 'mail_username' => 'E-post brukernavn', - 'mail_password' => 'E-post passord', - ], - - // Login form fields - 'login' => [ - 'login' => 'Brukernavn eller e-post', - 'email' => 'E-post', - 'password' => 'Passord', - '2fauth' => 'Autentiseringskode', - 'invalid' => 'Ugyldig brukernavn eller passord', - 'invalid-token' => 'Ugyldig token', - 'cookies' => 'Du må aktivere informasjonskapsler for å logge inn.', - 'rate-limit' => 'Hyppighetsgrense overskredet.', - 'remember_me' => 'Husk meg', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'component' => 'Komponent', - 'component_status' => 'Komponentstatus', - 'message' => 'Melding', - 'message-help' => 'Du kan også bruke Markdown.', - 'occurred_at' => 'Når inntraff denne hendelsen?', - 'notify_subscribers' => 'Varsle abonnenter?', - 'notify_disabled' => 'På grunn av planlagt vedlikehold vil meldinger om denne hendelsen eller komponentene bli utelatt.', - 'visibility' => 'Hendelsens synlighet', - 'stick_status' => 'Fest hendelsen', - 'stickied' => 'Festet', - 'not_stickied' => 'Ikke festet', - 'public' => 'Offentlig synlig', - 'logged_in_only' => 'Bare synlig for innloggede brukere', - 'templates' => [ - 'name' => 'Navn', - 'template' => 'Mal', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'message' => 'Melding', - 'message-help' => 'Du kan også bruke Markdown.', - 'scheduled_at' => 'Når er dette vedlikeholdet planlagt for?', - 'completed_at' => 'Når er dette vedlikeholdet fullført?', - 'templates' => [ - 'name' => 'Navn', - 'template' => 'Mal', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'group' => 'Gruppe', - 'description' => 'Beskrivelse', - 'link' => 'Lenke', - 'tags' => 'Etiketter', - 'tags-help' => 'Atskilt med komma.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Navn', - 'collapsing' => 'Vis/skjul alternativer', - 'visible' => 'Always expanded', - 'collapsed' => 'Skjul gruppen som standard', - 'collapsed_incident' => 'Skjul gruppen, men utvid hvis det er problemer', - 'visibility' => 'Synlighet', - 'visibility_public' => 'Synlig for offentligheten', - 'visibility_authenticated' => 'Vises bare for påloggede brukere', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Navn', - 'description' => 'Beskrivelse', - 'start_at' => 'Planlagte starttidspunkt', - 'timezone' => 'Tidssone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Gruppe', - 'active' => 'Aktiv?', - 'groups' => [ - 'name' => 'Gruppenavn', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Navn', - 'suffix' => 'Suffiks', - 'description' => 'Beskrivelse', - 'description-help' => 'Du kan også bruke Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Standardverdi', - 'calc_type' => 'Kalkulering av beregninger', - 'type_sum' => 'Sum', - 'type_avg' => 'Gjennomsnittlig', - 'places' => 'Decimal places', - 'default_view' => 'Standardvisning', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Synlighet', - 'visibility_authenticated' => 'Synlig for innloggede brukere', - 'visibility_public' => 'Synlig for alle', - 'visibility_hidden' => 'Alltid skjult', - - 'points' => [ - 'value' => 'Verdi', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Nettstedsnavn', - 'site-url' => 'Site URL', - 'display-graphs' => 'Vis grafer på statussiden?', - 'about-this-page' => 'Om denne siden', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Statusside oppdateringsfrekvens (i sekunder)', - 'major_outage_rate' => 'Større brudd terskel (i %)', - 'banner' => 'Bannerbilde', - 'banner-help' => 'Det anbefales at du ikke laster opp bilder bredere enn 930 piksler', - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Utelat notifikasjoner når hendelse inntreffer under vedlikeholdsperiode?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Vis tidssonen statussiden kjører med', - 'only_disrupted_days' => 'Bare vis dager som inneholder hendelser i tidslinjen?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Alltid autentiser', - 'always-authenticate-help' => 'Krev innlogging for å vise alle Cachet sider', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Bakgrunnsfarge', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Aktivere fullbredde banner?', - 'text-color' => 'Tekstfarge', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Brukernavn', - 'email' => 'E-post', - 'password' => 'Passord', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'Bruker', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Velg tidssone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Registerer deg', - 'manage_updates' => 'Administrer oppdateringer', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/no-NO/notifications.php b/resources/lang/no-NO/notifications.php deleted file mode 100644 index 473b8930..00000000 --- a/resources/lang/no-NO/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Komponentstatus oppdatert', - 'greeting' => 'En komponents status ble oppdatert!', - 'content' => ':name status endret fra :old_status til :new_status.', - 'action' => 'Vis', - ], - 'slack' => [ - 'title' => 'Komponentstatus oppdatert', - 'content' => ':name status endret fra :old_status til :new_status.', - ], - 'sms' => [ - 'content' => ':name status endret fra :old_status til :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Ny hendelse rapportert', - 'greeting' => 'En ny hendelse ble rapportert på :app_name.', - 'content' => 'Hendelsen :name ble rapportert', - 'action' => 'Vis', - ], - 'slack' => [ - 'title' => 'Hendelse :name rapportert', - 'content' => 'En ny hendelse ble rapportert på :app_name', - ], - 'sms' => [ - 'content' => 'En ny hendelse ble rapportert på :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Hendelse oppdatert', - 'content' => ':name ble oppdatert', - 'title' => ':name ble oppdatert til :new_status', - 'action' => 'Vis', - ], - 'slack' => [ - 'title' => ':name oppdatert', - 'content' => ':name ble oppdatert til :new_status', - ], - 'sms' => [ - 'content' => 'Hendelse :name ble oppdatert', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Ny tidsplan opprettet', - 'content' => ':name ble planlagt for :dato', - 'title' => 'En ny planlagt vedlikehold ble opprettet.', - 'action' => 'Vis', - ], - 'slack' => [ - 'title' => 'Ny tidsplan opprettet!', - 'content' => ':name ble planlagt for :dato', - ], - 'sms' => [ - 'content' => ':name ble planlagt for :dato', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Bekreft ditt abonnement', - 'content' => 'Klikk for å bekrefte abonnementet til :app_name statussiden.', - 'title' => 'Bekreft abonnementet til :app_name statussiden.', - 'action' => 'Bekreft', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping fra Cachet!', - 'content' => 'Dette er en testnotifikasjon fra Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Din invitasjon er her...', - 'content' => 'Du har blitt invitert til å ta del i :app_name statussiden.', - 'title' => 'Du er invitert til å ta del i :app_name statussiden.', - 'action' => 'Aksepter', - ], - ], - ], -]; diff --git a/resources/lang/no-NO/pagination.php b/resources/lang/no-NO/pagination.php deleted file mode 100644 index 466ef5db..00000000 --- a/resources/lang/no-NO/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Forrige', - 'next' => 'Neste', - -]; diff --git a/resources/lang/no-NO/setup.php b/resources/lang/no-NO/setup.php deleted file mode 100644 index dc75a6dc..00000000 --- a/resources/lang/no-NO/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Oppsett', - 'title' => 'Installer Cachet', - 'service_details' => 'Tjenestedetaljer', - 'env_setup' => 'Miljøoppsett', - 'status_page_setup' => 'Statusside-oppsett', - 'show_support' => 'Vis at du støtter Cachet?', - 'admin_account' => 'Administratorkonto', - 'complete_setup' => 'Fullfør oppsett', - 'completed' => 'Konfigurering av Cachet var vellykket!', - 'finish_setup' => 'Gå til dashbord', -]; diff --git a/resources/lang/no-NO/validation.php b/resources/lang/no-NO/validation.php deleted file mode 100644 index bcf3ccdc..00000000 --- a/resources/lang/no-NO/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute må være godkjent.', - 'active_url' => ':attribute er ikke en gyldig URL.', - 'after' => ':attribute må være en dato etter :date.', - 'alpha' => ':attribute kan kun inneholde bokstaver.', - 'alpha_dash' => ':attribute kan kun inneholde bokstaver, tall og bindestreker.', - 'alpha_num' => ':attribute kan bare inneholde bokstaver og tall.', - 'array' => 'The :attribute must be an array.', - 'before' => ':attribute må være en dato før :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => ':attribute må være mellom :min og :max kilobyte.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => ':attribute bekreftelsen samsvarer ikke.', - 'date' => ':attribute er ikke en gyldig dato.', - 'date_format' => ':attribute passer ikke med formatet :format.', - 'different' => ':attribute og :other må være forskjellige.', - 'digits' => ':attribute må være :digits sifre.', - 'digits_between' => ':attribute må være mellom :min og :max sifre.', - 'email' => ':attribute må være en gyldig e-postadresse.', - 'exists' => 'Valgte :attribute er ugyldig.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'Feltet :attribute er påkrevd.', - 'image' => ':attribute må være et bilde.', - 'in' => 'Valgte :attribute er ugyldig.', - 'in_array' => ':attribute feltet finnes ikke i :other.', - 'integer' => ':attribute må være et heltall.', - 'ip' => ':attribute må være en gyldig IP-adresse.', - 'json' => ':attribute må være en gyldig JSON streng.', - 'max' => [ - 'numeric' => ':attribute kan ikke være større enn :max.', - 'file' => ':attribute kan ikke være større enn :max kilobyte.', - 'string' => ':attribute kan ikke være større enn :max tegn.', - 'array' => ':attribute kan ikke har mer enn :max elementer.', - ], - 'mimes' => ':attribute må være en fil av typen: :values.', - 'min' => [ - 'numeric' => ':attribute må være minst :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => ':attribute må ha minst :min tegn.', - 'array' => ':attribute må ha minst :min elementer.', - ], - 'not_in' => 'Valgte :attribute er ugyldig.', - 'numeric' => ':attribute må være et nummer.', - 'present' => ':attribute må finnes.', - 'regex' => ':attribute formatet er ugyldig.', - 'required' => 'Feltet :attribute er påkrevd.', - 'required_if' => ':attribute er påkrevd når :other er :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => ':attribute feltet kreves når :values er til stede.', - 'required_with_all' => ':attribute feltet kreves når :values er til stede.', - 'required_without' => ':attribute er påkrevd når :values ikke er tilstede.', - 'required_without_all' => ':attribute kreves når ingen av :values er tilstede.', - 'same' => ':attribute og :other må være like.', - 'size' => [ - 'numeric' => ':attribute må være :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => ':attribute må være :size tegn.', - 'array' => ':attribute må inneholde :size elementer.', - ], - 'string' => ':attribute må være en tekst.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => ':attribute formatet er ugyldig.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/no/cachet.php b/resources/lang/no/cachet.php deleted file mode 100644 index 82260a14..00000000 --- a/resources/lang/no/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Sist oppdatert :timestamp', - 'status' => [ - 1 => 'Ingen problemer', - 2 => 'Ytelsesproblemer', - 3 => 'Delvis brudd', - 4 => 'Større brudd', - ], - 'group' => [ - 'other' => 'Andre komponenter', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Ingen hendelser å rapportere', - 'past' => 'Tidligere hendelser', - 'previous_week' => 'Forrige uke', - 'next_week' => 'Neste uke', - 'scheduled' => 'Planlagt vedlikehold', - 'scheduled_at' => ', planlagt :timestamp', - 'status' => [ - 0 => 'Planlagt', // TODO: Hopefully remove this. - 1 => 'Undersøkes', - 2 => 'Identifisert', - 3 => 'Observerer', - 4 => 'Løst', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Systemet er operativt| [2, Inf] Alle systemer er operative', - 'bad' => '[0,1] Systemet har problemer| [2, Inf] Noen systemer har problemer', - 'major' => '[0,1] Det er et større brudd i systemet| [2, Inf] Noen systemer har større brudd', - ], - - 'api' => [ - 'regenerate' => 'Regenerer API-nøkkel', - 'revoke' => 'Tilbakekall API-nøkkel', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Siste time', - 'hourly' => 'Siste 12 timer', - 'weekly' => 'Uke', - 'monthly' => 'Måned', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Abonner for å få de siste oppdateringene', - 'button' => 'Abonner', - 'manage' => [ - 'no_subscriptions' => 'Du abonnerer for øyeblikket på alle oppdateringer.', - 'my_subscriptions' => 'Du abonnerer for øyeblikket på følgende oppdateringer.', - ], - 'email' => [ - 'subscribe' => 'Abonner for å motta varslinger på e-post.', - 'subscribed' => 'Du har abbonerer nå på epostvarslinger, sjekk din e-post for å bekrefte abboneringen.', - 'verified' => 'Ditt epost abonnement er bekreftet!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Meld av epostvarsling.', - 'unsubscribed' => 'Din epostvarsling har blitt kansellert.', - 'failure' => 'Noe gikk galt med abonneringen.', - 'already-subscribed' => 'Kan ikke abonnere: email fordi de allerede er abonnenter.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Status-oppdatering for komponent', - 'text' => 'Komponenten :component_name har fått oppdatert status. Komponenten er nå på: component_human_status.\nTakk,: app_name', - 'html' => '

Komponenten :component_name har fått oppdatert status. Komponenten er nå på: component_human_status.

Takk,: app_name

', - 'tooltip-title' => 'Abonner på varsler for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Epost', - 'password' => 'Passord', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Lukk', - 'subscribe' => [ - 'title' => 'Abonner for å motta varslinger for komponenten på e-post', - 'body' => 'Skriv inn epostadressen din for å abonnere på varslinger for denne komponenten. Hvis du allerede er abonnent vil alt fortsette som før.', - 'button' => 'Abonner', - ], - ], - - // Other - 'home' => 'Forsiden', - 'description' => 'Hold deg oppdatert med de nyeste service-oppdateringene fra :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'Om denne siden', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/no/dashboard.php b/resources/lang/no/dashboard.php deleted file mode 100644 index 7935f2b4..00000000 --- a/resources/lang/no/dashboard.php +++ /dev/null @@ -1,292 +0,0 @@ - 'Dashbord', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Hendelser', - 'logged' => '{0} Det er ingen hendelser, bra jobbet.|Du har en logget hendelse.|Du har rapportert :count hendelser.', - 'incident-create-template' => 'Opprett mal', - 'incident-templates' => 'Hendelsesmaler', - 'updates' => '{0} null oppdateringer | Én oppdatering |: telle oppdateringer', - 'add' => [ - 'title' => 'Rapportere en hendelse', - 'success' => 'Hendelse lagt til.', - 'failure' => 'Det oppstod en feil når du la til til hendelsen, prøv igjen.', - ], - 'edit' => [ - 'title' => 'Rediger en hendelse', - 'success' => 'Hendelse oppdatert.', - 'failure' => 'Det oppstod en feil under redigering av hendelsen, prøv igjen.', - ], - 'delete' => [ - 'success' => 'Hendelsen er slettet og vil ikke vises på statussiden din.', - 'failure' => 'Hendelsen kunne ikke slettes, prøv igjen.', - ], - 'update' => [ - 'title' => 'Opprett ny hendelseoppdatering', - 'subtitle' => 'Legge til oppdatering av : hendelsen', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Hendelsesmaler', - 'add' => [ - 'title' => 'Lag en hendelsesmal', - 'message' => 'Du bør legge til en hendelsesmal.', - 'success' => 'Din nye hendelsesmal er opprettet.', - 'failure' => 'Noe gikk galt med hendelsesmalen.', - ], - 'edit' => [ - 'title' => 'Rediger mal', - 'success' => 'Hendelsensmalen er oppdatert.', - 'failure' => 'Noe gikk galt under oppdatering av hendelsesmalen', - ], - 'delete' => [ - 'success' => 'Hendelsesmalen er slettet.', - 'failure' => 'Hendelsesmalen kunne ikke slettes, prøv igjen.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Planlagt vedlikehold', - 'logged' => '{0} Det er ingen tidsplaner, bra jobbet. | Du har logget en hendelse. | Du har rapportert : antall tidsplaner.', - 'scheduled_at' => 'Planlagt til :timestamp', - 'add' => [ - 'title' => 'Legg til planlagt vedlikehold', - 'success' => 'Tidsplan lagt til.', - 'failure' => 'Noe gikk galt med å legge til tidsplanen, prøv igjen.', - ], - 'edit' => [ - 'title' => 'Redigere planlagt vedlikehold', - 'success' => 'Tidsplanen er oppdatert!', - 'failure' => 'Noe gikk galt med å redigere tidsplanen, prøv igjen.', - ], - 'delete' => [ - 'success' => 'Planlagt vedlikehold er slettet og vil ikke vises på statussiden din.', - 'failure' => 'Planlagt vedlikehold kunne ikke slettes, prøv igjen.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Komponenter', - 'component_statuses' => 'Komponentstatus', - 'listed_group' => 'Gruppert under :name', - 'add' => [ - 'title' => 'Legg til komponent', - 'message' => 'Du burde legge til en komponent.', - 'success' => 'Komponent lagt til.', - 'failure' => 'Noe gikk galt med komponentgruppen, prøv igjen.', - ], - 'edit' => [ - 'title' => 'Redigere en komponent', - 'success' => 'Komponent oppdatert.', - 'failure' => 'Noe gikk galt med komponentgruppen, prøv igjen.', - ], - 'delete' => [ - 'success' => 'Komponenten har blitt slettet!', - 'failure' => 'Komponenten kunne ikke slettes, prøv igjen.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Komponentgruppe | Komponentgrupper', - 'no_components' => 'Du burde legge til en komponentgruppe.', - 'add' => [ - 'title' => 'Legg til en komponentgruppe', - 'success' => 'Komponentgruppe lagt til.', - 'failure' => 'Noe gikk galt med komponentgruppen, prøv igjen.', - ], - 'edit' => [ - 'title' => 'Rediger komponentgruppe', - 'success' => 'Komponentgruppe oppdatert.', - 'failure' => 'Noe gikk galt med komponentgruppen, prøv igjen.', - ], - 'delete' => [ - 'success' => 'Komponentgruppen har blitt slettet!', - 'failure' => 'Komponentgruppen kunne ikke slettes, prøv igjen.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Beregninger', - 'add' => [ - 'title' => 'Opprett en beregning', - 'message' => 'Du bør legge til en beregning.', - 'success' => 'Beregning opprettet.', - 'failure' => 'Noe gikk galt med beregningen, prøv igjen.', - ], - 'edit' => [ - 'title' => 'Rediger en beregning', - 'success' => 'Beregning oppdatert.', - 'failure' => 'Noe gikk galt med beregningen, prøv igjen.', - ], - 'delete' => [ - 'success' => 'Beregningen er slettet og vises ikke lenger på statussiden.', - 'failure' => 'Beregningen kunne ikke slettes, prøv igjen.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonnenter', - 'description' => 'Abonnenter mottar e-postoppdateringer når hendelser opprettes eller komponenter er oppdatert.', - 'verified' => 'Verifisert', - 'not_verified' => 'Ikke verifisert', - 'subscriber' => ': e-post, abonnert: dato', - 'no_subscriptions' => 'Abonnerer på alle oppdateringer', - 'add' => [ - 'title' => 'Legge til en ny abonnent', - 'success' => 'Abonnenten er lagt til!', - 'failure' => 'Noe gikk galt med å legge til abonnenten, prøv igjen.', - 'help' => 'Angi hver enkelt abonnent på en ny linje.', - ], - 'edit' => [ - 'title' => 'Oppdatering abonnent', - 'success' => 'Abonnenten er oppdatert!', - 'failure' => 'Noe gikk galt med å redigere abonnenten, prøv igjen.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Bruker', - 'profile' => 'Profil', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Legge til nytt gruppemedlem', - 'success' => 'Gruppemedlem lagt til.', - 'failure' => 'Gruppemedlemmet kunne ikke legges til, prøv på nytt.', - ], - 'edit' => [ - 'title' => 'Oppdater profil', - 'success' => 'Profilen oppdatert.', - 'failure' => 'Noe gikk galt med å oppdatere profilen, prøv igjen.', - ], - 'delete' => [ - 'success' => 'Gruppemedlemmet er slettet og vil ikke lenger ha tilgang til oversikten!', - 'failure' => 'Gruppemedlemmet kunne ikke legges til, prøv på nytt.', - ], - 'invite' => [ - 'title' => 'Inviter en ny medarbeider', - 'success' => 'Invitasjon er sendt', - 'failure' => 'Invitasjonen kunne ikke sendes, vennligst prøv igjen.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Innstillinger', - 'app-setup' => [ - 'app-setup' => 'Applikasjonsoppsett', - 'images-only' => 'Bare bilder kan lastes opp.', - 'too-big' => 'Filen du lastet opp er for stor. Last opp et bilde som er mindre enn :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Logg', - ], - 'localization' => [ - 'localization' => 'Regioninnstillinger', - ], - 'customization' => [ - 'customization' => 'Tilpasninger', - 'header' => 'Egendefinert topptekst HTML', - 'footer' => 'Egendefinert bunntekst HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Sikkerhet', - 'two-factor' => 'Brukere uten to-faktor autentifisering', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stilark', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Innstillinger lagret.', - 'failure' => 'Kan ikke lagre innstillingene.', - ], - 'credits' => [ - 'credits' => 'Medvirkende', - 'contributors' => 'Bidragsytere', - 'license' => 'Cachet er en BSD-3-lisensiert åpen kildekode-prosjekt, utgitt av Alt tre Services Limited.', - 'backers-title' => 'Støttespillere & sponsorer', - 'backers' => 'Hvis du ønsker å støtte fremtidig utvikling, sjekk ut Cachet Patreon kampanjen.', - 'thank-you' => 'Takk til hver og en av de :count bidragsytere.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Logg inn', - 'logged_in' => 'Du er logget inn.', - 'welcome' => 'Velkommen tilbake!', - 'two-factor' => 'Skriv inn din token.', - ], - - // Sidebar footer - 'help' => 'Hjelp', - 'status_page' => 'Statusside', - 'logout' => 'Logg ut', - - // Notifications - 'notifications' => [ - 'notifications' => 'Varslinger', - 'awesome' => 'Fantastisk.', - 'whoops' => 'Uff da.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Støtt Cachet', - 'support_subtitle' => 'Sjekk ut vår Patreon side!', - 'news' => 'Siste nyheter', - 'news_subtitle' => 'Hent nyeste oppdatering', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Velkommen til den nye statussiden, :username!', - 'message' => 'Du er nesten klar, men du vil kanskje konfigurere disse ekstra innstillingene først...', - 'close' => 'Jeg har det bra takk!', - 'steps' => [ - 'component' => 'Legg til dine komponenter', - 'incident' => 'Opprette en hendelse', - 'customize' => 'Tilpass siden din', - 'team' => 'Legg til gruppen din', - 'api' => 'Generere et API-token', - 'two-factor' => 'Sett opp to-faktor autentisering', - ], - ], - -]; diff --git a/resources/lang/no/forms.php b/resources/lang/no/forms.php deleted file mode 100644 index ccc6feb9..00000000 --- a/resources/lang/no/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Epost', - 'username' => 'Brukernavn', - 'password' => 'Passord', - 'site_name' => 'Nettstedsnavn', - 'site_domain' => 'Nettstedet domene', - 'site_timezone' => 'Velg tidssone', - 'site_locale' => 'Velg språk', - 'enable_google2fa' => 'Aktiver Google Two Factor Authentication', - 'cache_driver' => 'Cache-Driver', - 'session_driver' => 'Økt Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Epost', - 'password' => 'Passord', - '2fauth' => 'Godkjenningskode', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Ugyldig token', - 'cookies' => 'Du må aktivere informasjonskapsler for å logge inn.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'component' => 'Komponent', - 'message' => 'Melding', - 'message-help' => 'Du kan også bruke Markdown.', - 'scheduled_at' => 'Når ønsker du å planlegge vedlikeholdet?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Navn', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Navn', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Navn', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Navn', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'Du kan også bruke Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Nettstedsnavn', - 'site-url' => 'Nettsteds-URL', - 'display-graphs' => 'Vis grafer på statussiden?', - 'about-this-page' => 'Om denne siden', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => 'Det anbefales at du ikke laster opp bilder bredere enn 930 piksler.', - 'subscribers' => 'Tillatt brukere å melde seg inn for epostvarslinger?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Epost', - 'password' => 'Passord', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Lagre', - 'update' => 'Update', - 'create' => 'Opprett', - 'edit' => 'Rediger', - 'delete' => 'Slett', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Fjern', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/no/pagination.php b/resources/lang/no/pagination.php deleted file mode 100644 index 6e925d16..00000000 --- a/resources/lang/no/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Forrige', - 'next' => 'Neste »', - -]; diff --git a/resources/lang/no/setup.php b/resources/lang/no/setup.php deleted file mode 100644 index b98b9ddf..00000000 --- a/resources/lang/no/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Vis at du støtter Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/no/validation.php b/resources/lang/no/validation.php deleted file mode 100644 index 7ccaf7fd..00000000 --- a/resources/lang/no/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute må være godkjent.', - 'active_url' => ':attribute er ikke en gyldig URL.', - 'after' => ':attribute må være en dato etter :date.', - 'alpha' => ':attribute kan kun inneholde bokstaver.', - 'alpha_dash' => ':attribute kan kun inneholde bokstaver, tall og bindestreker.', - 'alpha_num' => ':attribute kan bare inneholde bokstaver og tall.', - 'array' => ':attribute må være en matrise.', - 'before' => ':attribute må være en dato før :date.', - 'between' => [ - 'numeric' => ':attribute må være en dato før :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => ':attribute formatet er ugyldig.', - 'image' => ':attribute må være et bilde.', - 'in' => ':attribute må være et bilde.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => ':attribute formatet er ugyldig.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => ':attribute feltet kreves når :values er til stede.', - 'required_without' => ':attribute feltet kreves når :values er til stede.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute må være en gyldig tidssone.', - 'unique' => ':attribute er allerede tatt.', - 'url' => ':attribute formatet er ugyldig.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'tilpasset melding', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/pl-PL/cachet.php b/resources/lang/pl-PL/cachet.php deleted file mode 100644 index b46c6ed4..00000000 --- a/resources/lang/pl-PL/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Ostatnia aktualizacja :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Funktionsfähig', - 2 => 'Leistungsprobleme', - 3 => 'Teilweiser Ausfall', - 4 => 'Schwerer Ausfall', - ], - 'group' => [ - 'other' => 'Pozostałe komponenty', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Brak zgłoszonych incydentów', - 'past' => 'Vergangene Vorfälle', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', geplant :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Untersuchungen laufen', - 2 => 'Identifiziert', - 3 => 'Unter Beobachtung', - 4 => 'Behoben', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'API-Schlüssel neu generieren', - 'revoke' => 'API-Schlüssel widerrufen', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Ostatnia godzina', - 'hourly' => 'Letzte 12 Stunden', - 'weekly' => 'Wöchentlich', - 'monthly' => 'Monatlich', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Abonnieren', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Benachrichtigungen', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'Jesteś obecnie zapisany na wszystkie aktualizacje.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'Jesteś obecnie zapisany na poniższe aktualizacje.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Aktualisierungen per E-Mail abonnieren.', - 'subscribed' => 'Sie haben E-Mail-Benachrichtigungen abonniert, überprüfen Sie bitte Ihre E-Mail, um Ihr Abonnement zu bestätigen.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Ihre E-Mail-Abonnement ist bestätigt worden. Danke!', - 'manage' => 'Zarządzanie subskrypcją', - 'unsubscribe' => 'Von E-Mail-Updates deabonnieren.', - 'unsubscribed' => 'Ihre E-Mail-Abonnement wurde gekündigt.', - 'failure' => 'Etwas ist mit dem Abonnement schief gelaufen.', - 'already-subscribed' => 'Subskrypcja niemożliwa, :email jest już zapisany.', - ], - ], - - 'signup' => [ - 'title' => 'Zarejestruj się', - 'username' => 'Nazwa Użytkownika', - 'email' => 'E-Mail', - 'password' => 'Hasło', - 'success' => 'Twoje konto zostało utworzone.', - 'failure' => 'Coś poszło nie tak w trakcje rejestracji.', - ], - - 'system' => [ - 'update' => 'Nowsza wersja Cachet\'a jest dostępna. Kliknij tutaj, aby dowiedzieć się jak dokonać aktualizacji!', - ], - - // Modal - 'modal' => [ - 'close' => 'Zamknij', - 'subscribe' => [ - 'title' => 'Subskrybuj aktualizacje komponentu', - 'body' => 'Podaj swój adres email w celu subskrypcji aktualizacji dla tego komponentu. Jeśli byłeś już zapisany, otrzymujesz aktualizacje dla tego komponentu.', - 'button' => 'Abonnieren', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Bądź na bieżąco z aktualizacjami z :app.', - ], - ], - - // Other - 'home' => 'Strona Główna', - 'powered_by' => 'Obsługiwany przez Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'Über diese Seite', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status-Feed', - -]; diff --git a/resources/lang/pl-PL/dashboard.php b/resources/lang/pl-PL/dashboard.php deleted file mode 100644 index 2de72d14..00000000 --- a/resources/lang/pl-PL/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'Nie można zapisać zmian w pliku konfiguracyjnym Cachet. Proszę sprawdzić uprawnienia do katalogu ./bootstrap/cachet, serwer www musi mieć możliwość zapisu w tym katalogu.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Vorfälle', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Vorlage erstellen', - 'incident-templates' => 'Vorfall Vorlagen', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Utwórz nową aktualizację zdarzenia', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Vorfall hinzufügen', - 'success' => 'Dodano zdarzenie.', - 'failure' => 'Wystąpił błąd podczas dodawania wydarzenia, proszę spróbować ponownie.', - ], - 'edit' => [ - 'title' => 'Vorfall bearbeiten', - 'success' => 'Vorfall aktualisiert.', - 'failure' => 'Wystąpił błąd podczas edytowania wydarzenia, proszę spróbować ponownie.', - ], - 'delete' => [ - 'success' => 'Wydarzenie zostało usunięte i nie będzie widoczne na stronie statusu.', - 'failure' => 'Wydarzenie nie mogło zostać usunięte, proszę spróbować ponownie.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Vorfall Vorlagen', - 'add' => [ - 'title' => 'Vorfallvorlage erstellen', - 'message' => 'Create your first incident template.', - 'success' => 'Twój nowy szablon wydarzenia został utworzony.', - 'failure' => 'Coś poszło nie tak z szablonem wydarzenia.', - ], - 'edit' => [ - 'title' => 'Vorlage bearbeiten', - 'success' => 'Szablon wydarzenia został zaktualizowany.', - 'failure' => 'Coś poszło nie tak podczas aktualizacji szablonu wydarzenia', - ], - 'delete' => [ - 'success' => 'Szablon wydarzenia został usunięty.', - 'failure' => 'Szablon wydarzenia nie mógł zostać usunięty, proszę spróbować ponownie.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Geplant am :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Komponenten', - 'component_statuses' => 'Komponentenstatus', - 'listed_group' => 'Gruppiert unter :name', - 'add' => [ - 'title' => 'Komponente hinzufügen', - 'message' => 'Sie sollten eine Komponente erstellen.', - 'success' => 'Utworzono komponent.', - 'failure' => 'Coś poszło nie tak z komponentem, proszę spróbować ponownie.', - ], - 'edit' => [ - 'title' => 'Komponente bearbeiten', - 'success' => 'Zaktualizowano komponent.', - 'failure' => 'Coś poszło nie tak z komponentem, proszę spróbować ponownie.', - ], - 'delete' => [ - 'success' => 'Komponent został usunięty!', - 'failure' => 'Komponent nie mógł zostać usunięty, proszę spróbować ponownie.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Komponentgruppe|Komponentgruppen', - 'no_components' => 'Sie sollten eine Komponentengruppe hinzufügen.', - 'add' => [ - 'title' => 'Eine Komponentengruppe hinzufügen', - 'success' => 'Dodano grupę komponentów.', - 'failure' => 'Coś poszło nie tak z komponentem, proszę spróbować ponownie.', - ], - 'edit' => [ - 'title' => 'Komponentengruppe bearbeiten', - 'success' => 'Zaktualizowano grupę komponentów.', - 'failure' => 'Coś poszło nie tak z komponentem, proszę spróbować ponownie.', - ], - 'delete' => [ - 'success' => 'Grupa komponentów została usunięta!', - 'failure' => 'Grupa komponentów nie mogła zostać usunięta, proszę spróbować ponownie.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metriken', - 'add' => [ - 'title' => 'Metrik erstellen', - 'message' => 'Powinieneś dodać metrykę.', - 'success' => 'Utworzono metrykę.', - 'failure' => 'Coś poszło nie tak z metryką, proszę próbować ponownie.', - ], - 'edit' => [ - 'title' => 'Metrik bearbeiten', - 'success' => 'Zaktualizowano metrykę.', - 'failure' => 'Coś poszło nie tak z metryką, proszę próbować ponownie.', - ], - 'delete' => [ - 'success' => 'Metryka została usunięta i nie będzie wyświetlana na stronie statusu.', - 'failure' => 'Metryka nie mogła zostać usunięta, proszę spróbować ponownie.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonnenten', - 'description' => 'Subskrybenci będą otrzymywać powiadomienia, gdy wydarzenia zostaną utworzone lub komponenty zaktualizowane.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verifiziert', - 'not_verified' => 'Nicht verifiziert', - 'subscriber' => ':email, subskrybowany :data', - 'no_subscriptions' => 'Zapisano do wszystkich aktualizacji', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Einen neuen Abonnenten hinzufügen', - 'success' => 'Abonnent hinzugefügt.', - 'failure' => 'Coś poszło nie tak podczas dodawania subskrybenta, proszę spróbować ponownie.', - 'help' => 'Wpisz każdego subskrybenta w nowym wierszu.', - ], - 'edit' => [ - 'title' => 'Abonnent aktualisieren', - 'success' => 'Abonnent aktualisiert.', - 'failure' => 'Coś poszło nie tak podczas edytowania subskrybenta, proszę spróbować ponownie.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Mitglied', - 'profile' => 'Profil', - 'description' => 'Teammitglieder werden die Möglichkeit haben, Komponente sowie Vorfälle hinzuzufügen und zu verändern.', - 'add' => [ - 'title' => 'Neues Teammitglied hinzufügen', - 'success' => 'Dodano członka zespołu.', - 'failure' => 'Członek zespołu nie mógł zostać dodany, proszę spróbować ponownie.', - ], - 'edit' => [ - 'title' => 'Profil aktualisieren', - 'success' => 'Zaktualizowano profil.', - 'failure' => 'Coś poszło nie tak podczas aktualizacji profilu, proszę spróbować ponownie.', - ], - 'delete' => [ - 'success' => 'Benutzer aktualisiert.', - 'failure' => 'Członek zespołu nie mógł zostać dodany, proszę spróbować ponownie.', - ], - 'invite' => [ - 'title' => 'Zaproś nowego członka zespołu', - 'success' => 'Zaproszenie zostało wysłane', - 'failure' => 'Zaproszenie nie mogło zostać wysłane, proszę spróbować ponownie.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Einstellungen', - 'app-setup' => [ - 'app-setup' => 'Anwendungsinstallation', - 'images-only' => 'Es können nur Bilder hochgeladen werden.', - 'too-big' => 'Die von Ihnen hochgeladene Datei ist zu groß. Laden Sie ein Bild welches kleiner als :size ist hoch', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Logi', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Dostosowywanie', - 'header' => 'Niestandardowy nagłówek HTML', - 'footer' => 'Niestandardowa stopka HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Sicherheit', - 'two-factor' => 'Nutzer ohne Zwei-Faktor-Authentifizierung', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Einstellungen gespeichert.', - 'failure' => 'Einstellungen konnten nicht gespeichert werden.', - ], - 'credits' => [ - 'credits' => 'Autorzy', - 'contributors' => 'Współtwórcy', - 'license' => 'Catchet jest otwartym źródłem z licencją BSD utworzonym przez Alt Three Services Limited.', - 'backers-title' => 'Patronaci i sponsorzy', - 'backers' => 'Jeśli chciałbyś wspomóc przyszły rozwój sprawdź kampanię Cachet Patreon.', - 'thank-you' => 'Dziękujemy każdemu :count współtwórcy.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Anmelden', - 'logged_in' => 'Sie sind angemeldet.', - 'welcome' => 'Willkommen zurück!', - 'two-factor' => 'Bitte geben Sie Ihren Token ein.', - ], - - // Sidebar footer - 'help' => 'Hilfe', - 'status_page' => 'Statusseite', - 'logout' => 'Abmelden', - - // Notifications - 'notifications' => [ - 'notifications' => 'Benachrichtigungen', - 'awesome' => 'Großartig.', - 'whoops' => 'Hoppla.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Wspomóż Cachet', - 'support_subtitle' => 'Sprawdź również naszą stronę na Patreon!', - 'news' => 'Aktualności', - 'news_subtitle' => 'Pobierz najnowszą aktualizację', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Witamy w nowym statusie strony!', - 'message' => 'Ihre Statusseite ist fast fertig! Vielleicht möchten Sie diese zusätzlichen Einstellungen konfigurieren', - 'close' => 'Przejdź prosto do panelu głównego', - 'steps' => [ - 'component' => 'Komponenten erstellen', - 'incident' => 'Vorfälle erstellen', - 'customize' => 'Personalisieren', - 'team' => 'Benutzer hinzufügen', - 'api' => 'API Token generieren', - 'two-factor' => 'Zwei-Faktor-Authentifizierung', - ], - ], - -]; diff --git a/resources/lang/pl-PL/forms.php b/resources/lang/pl-PL/forms.php deleted file mode 100644 index 69132950..00000000 --- a/resources/lang/pl-PL/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'E-Mail', - 'username' => 'Nazwa Użytkownika', - 'password' => 'Hasło', - 'site_name' => 'Nazwa strony', - 'site_domain' => 'Domena', - 'site_timezone' => 'Wybierz swoją strefę czasową', - 'site_locale' => 'Wybierz swój język', - 'enable_google2fa' => 'Włącz weryfikację dwuetapową Google Authenticator', - 'cache_driver' => 'Sposób przechowywania cache', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Sposób przechowywania sesji', - 'mail_driver' => 'Sposób wysyłania wiadomości e-mail', - 'mail_host' => 'Adres hosta poczty', - 'mail_address' => 'Nadawca wiadomości', - 'mail_username' => 'Nazwa użytkownika poczty', - 'mail_password' => 'Hasło użytkownika poczty', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nazwa użytkownika lub e-mail', - 'email' => 'E-Mail', - 'password' => 'Hasło', - '2fauth' => 'Kod autoryzacyjny', - 'invalid' => 'Nieprawidłowa nazwa użytkownika lub hasło', - 'invalid-token' => 'Nieprawidłowy token', - 'cookies' => 'Musisz włączyć obsługę cookies, aby móc się zalogować.', - 'rate-limit' => 'Przekroczono limit.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nazwa', - 'status' => 'Status', - 'component' => 'Komponent', - 'component_status' => 'Component Status', - 'message' => 'Nachricht', - 'message-help' => 'Można użyć również języka znaczników.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Powiadomić subskrybentów?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Widoczność zdarzenia', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Widoczne publicznie', - 'logged_in_only' => 'Widoczne tylko dla zalogowanych użytkowników', - 'templates' => [ - 'name' => 'Nazwa', - 'template' => 'Szablon', - 'twig' => 'Szablony wydarzeń mogą korzystać z języka szablonów Twig.', - ], - ], - - 'schedules' => [ - 'name' => 'Nazwa', - 'status' => 'Status', - 'message' => 'Nachricht', - 'message-help' => 'Można użyć również języka znaczników.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Nazwa', - 'template' => 'Szablon', - 'twig' => 'Szablony wydarzeń mogą korzystać z języka szablonów Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nazwa', - 'status' => 'Status', - 'group' => 'Gruppe', - 'description' => 'Beschreibung', - 'link' => 'Link', - 'tags' => 'Schlagwörter', - 'tags-help' => 'Durch Kommata trennen.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Nazwa', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Zawsze rozwinięte', - 'collapsed' => 'Domyślnie zwiń grupę', - 'collapsed_incident' => 'Zwiń grupę, ale rozwiń ją w razie problemów', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Nazwa', - 'description' => 'Beschreibung', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Gruppe', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nazwa', - 'suffix' => 'Przyrostek', - 'description' => 'Beschreibung', - 'description-help' => 'Można użyć również języka znaczników.', - 'display-chart' => 'Pokazać diagram na stronie statusu?', - 'default-value' => 'Warość domyślna', - 'calc_type' => 'Obliczanie metryk', - 'type_sum' => 'Suma', - 'type_avg' => 'Średnia', - 'places' => 'Miejsca dziesiętne', - 'default_view' => 'Domyślny widok', - 'threshold' => 'Ile minut przerwy między punktami metrycznymi?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Wartość', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Nazwa strony', - 'site-url' => 'Adres URL strony', - 'display-graphs' => 'Pokazać wykresy na stronie statusu?', - 'about-this-page' => 'Informacje o tej stronie', - 'days-of-incidents' => 'Z ilu ostatnich dni pokazywać incydenty?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Baner', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Czy zezwolić użytkownikom na subskrypcje e-mail w celu otrzymywania powiadomień?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatycznie tłumaczyć twoją stronę statusu na język odwiedzającego?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Kod Google Analytics', - 'analytics_gosquared' => 'Kod GoSquared Analytics', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'ID strony Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Strefa czasowa strony', - 'site-locale' => 'Język strony', - 'date-format' => 'Format daty', - 'incident-date-format' => 'Format daty przy zdarzeniach', - ], - 'security' => [ - 'allowed-domains' => 'Dozwolone domeny', - 'allowed-domains-help' => 'Oddzielone przecinkami. Domena jest automatycznie ustawiona wyżej domyślnie, jako dozwolona.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Niestandardowy arkusz stylów', - ], - 'theme' => [ - 'background-color' => 'Kolor tła', - 'background-fills' => 'Wypełnianie tła (komponenty, zdarzenia, stopka)', - 'banner-background-color' => 'Kolor tła pod banerem', - 'banner-padding' => 'Odstęp banera', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Kolor tekstu', - 'dashboard-login' => 'Pokazywać przycisk panelu głównego w stopce?', - 'reds' => 'Czerwony (używany przy błędach)', - 'blues' => 'Niebieski (używany przy informacjach)', - 'greens' => 'Zielony (używany przy powodzeniu)', - 'yellows' => 'Żółty (używany przy ostrzeżeniach)', - 'oranges' => 'Pomarańczowy (używany przy ogłoszeniach)', - 'metrics' => 'Wypełnienie metryki', - 'links' => 'Łącza', - ], - ], - - 'user' => [ - 'username' => 'Nazwa Użytkownika', - 'email' => 'E-Mail', - 'password' => 'Hasło', - 'api-token' => 'Token API', - 'api-token-help' => 'Ponowne wygenerowanie nowego tokenu API spowoduje, że aplikacje korzystające obecnie z Cachet utracą do niego dostęp.', - 'gravatar' => 'Zmień swój awatar na Gravatar.', - 'user_level' => 'Poziom użytkownika', - 'levels' => [ - 'admin' => 'Administrator', - 'user' => 'Użytkownik', - ], - '2fa' => [ - 'help' => 'Włączenie weryfikacji dwuetapowej zwiększa bezpieczeństwo. Pobierz Google Authenticator lub podobną aplikację. Po zalogowaniu zostaniesz poproszony o podanie kodu wygenerowanego przez aplikację.', - ], - 'team' => [ - 'description' => 'Zaproś nowych członków do swojego zespołu. Wpisz ich adresy e-mail tutaj.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Dodaj', - 'save' => 'Zapisz', - 'update' => 'Zaktualizuj', - 'create' => 'Utwórz', - 'edit' => 'Edytuj', - 'delete' => 'Usuń', - 'submit' => 'Prześlij', - 'cancel' => 'Anuluj', - 'remove' => 'Skasuj', - 'invite' => 'Zaproś', - 'signup' => 'Zarejestruj się', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Opcjonalnie', -]; diff --git a/resources/lang/pl-PL/notifications.php b/resources/lang/pl-PL/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/pl-PL/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/pl-PL/pagination.php b/resources/lang/pl-PL/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/pl-PL/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/pl-PL/setup.php b/resources/lang/pl-PL/setup.php deleted file mode 100644 index a2981178..00000000 --- a/resources/lang/pl-PL/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Instalacja', - 'title' => 'Skonfiguruj Cachet', - 'service_details' => 'Szczegóły usługi', - 'env_setup' => 'Konfiguracja środowiska', - 'status_page_setup' => 'Skonfiguruj stronę statusu', - 'show_support' => 'Pokazać wsparcie dla Cachet?', - 'admin_account' => 'Konto Administratora', - 'complete_setup' => 'Zakończ instalację', - 'completed' => 'Cachet został pomyślnie skonfigurowany!', - 'finish_setup' => 'Przejdź do pulpitu', -]; diff --git a/resources/lang/pl-PL/validation.php b/resources/lang/pl-PL/validation.php deleted file mode 100644 index 27272da7..00000000 --- a/resources/lang/pl-PL/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute muss akzeptiert werden.', - 'active_url' => ':attribute ist keine gültige Internet-Adresse.', - 'after' => ':attribute muss ein Datum nach dem :date sein.', - 'alpha' => ':attribute darf nur aus Buchstaben bestehen.', - 'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.', - 'alpha_num' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.', - 'array' => ':attribute muss ein Array sein.', - 'before' => ':attribute muss ein Datum vor dem :date sein.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => ':attribute muss zwischen :min & :max Elemente haben.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'Pole :attribute zawiera podwójną wartość.', - 'filled' => 'The :attribute field is required.', - 'image' => ':attribute muss ein Bild sein.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'Pole :attribute nie istnieje w :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => ':attribute musi być prawidłowym węzłem JSON.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => ':attribute darf nicht mehr als :max Elemente haben.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'Pole :attribute musi być obecne.', - 'regex' => 'Format atrybutu ":attribute" jest nieprawidłowy.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'Pole :attribute jest wymagane, chyba że :other jest w :values.', - 'required_with' => 'Pole :attribute jest wymagane kiedy obecne jest :values.', - 'required_with_all' => 'Pole :attribute jest wymagane kiedy obecne jest :values.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => ':attribute muss :size Kilobytes groß sein.', - 'string' => ':attribute muss :size Zeichen lang sein.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => ':attribute muss eine gültige Zeitzone sein.', - 'unique' => ':attribute ist schon vergeben.', - 'url' => 'Format atrybutu ":attribute" jest nieprawidłowy.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'Individuelle Nachricht', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/pl/cachet.php b/resources/lang/pl/cachet.php deleted file mode 100644 index 5c0879ba..00000000 --- a/resources/lang/pl/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Ostatnia aktualizacja :timestamp', - 'status' => [ - 1 => 'Funktionsfähig', - 2 => 'Leistungsprobleme', - 3 => 'Teilweiser Ausfall', - 4 => 'Schwerer Ausfall', - ], - 'group' => [ - 'other' => 'Pozostałe komponenty', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Brak zgłoszonych incydentów', - 'past' => 'Vergangene Vorfälle', - 'previous_week' => 'Vorherige Woche', - 'next_week' => 'Nächste Woche', - 'scheduled' => 'Geplante Wartungen', - 'scheduled_at' => ', geplant :timestamp', - 'status' => [ - 0 => 'Geplant', // TODO: Hopefully remove this. - 1 => 'Untersuchungen laufen', - 2 => 'Identifiziert', - 3 => 'Unter Beobachtung', - 4 => 'Behoben', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System działa poprawnie|[2,Inf] Wszystkie systemy działają poprawnie', - 'bad' => '[0,1] W systemie obecnie występują problemy|[2,Inf] W niektórych systemach występują problemy', - 'major' => '[0,1] Usługa jest poważnie przeciążona|[2,Inf] Niektóre systemy są poważnie przeciążone', - ], - - 'api' => [ - 'regenerate' => 'API-Schlüssel neu generieren', - 'revoke' => 'API-Schlüssel widerrufen', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Ostatnia godzina', - 'hourly' => 'Letzte 12 Stunden', - 'weekly' => 'Wöchentlich', - 'monthly' => 'Monatlich', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Abonnieren Sie um die neuesten Updates zu erhalten.', - 'button' => 'Abonnieren', - 'manage' => [ - 'no_subscriptions' => 'Jesteś obecnie zapisany na wszystkie aktualizacje.', - 'my_subscriptions' => 'Jesteś obecnie zapisany na poniższe aktualizacje.', - ], - 'email' => [ - 'subscribe' => 'Aktualisierungen per E-Mail abonnieren.', - 'subscribed' => 'Sie haben E-Mail-Benachrichtigungen abonniert, überprüfen Sie bitte Ihre E-Mail, um Ihr Abonnement zu bestätigen.', - 'verified' => 'Ihre E-Mail-Abonnement ist bestätigt worden. Danke!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Von E-Mail-Updates deabonnieren.', - 'unsubscribed' => 'Ihre E-Mail-Abonnement wurde gekündigt.', - 'failure' => 'Etwas ist mit dem Abonnement schief gelaufen.', - 'already-subscribed' => 'Subskrypcja niemożliwa, :email jest już zapisany.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Aktualizacje komponentu', - 'text' => 'Komponent :component_name zmienił status. Aktualnie jest w :component_human_status.\nDziękujemy, :app_name', - 'html' => '

Komponent :component_name zmienił status. Aktualnie jest w :component_human_status.

Dziękujemy, :app_name

', - 'tooltip-title' => 'Subskrybuj powiadomienia dla :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Zostałeś zaproszony do strony statusowej zespołu :app_name. Aby się zapisać, kliknij na link umieszczony dalej.\n:link\nDziękujemy, :app_name", - 'html' => '

Zostałeś zaproszony do strony statusowej zespołu :app_name. Aby się zapisać, kliknij na link umieszczony dalej.

:link

Dziękujemy, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Zarejestruj się', - 'username' => 'Benutzername', - 'email' => 'E-Mail', - 'password' => 'Passwort', - 'success' => 'Twoje konto zostało utworzone.', - 'failure' => 'Coś poszło nie tak w trakcje rejestracji.', - ], - - 'system' => [ - 'update' => 'Nowsza wersja Cachet\'a jest dostępna. Kliknij tutaj, aby dowiedzieć się jak dokonać aktualizacji!', - ], - - // Modal - 'modal' => [ - 'close' => 'Zamknij', - 'subscribe' => [ - 'title' => 'Subskrybuj aktualizacje komponentu', - 'body' => 'Podaj swój adres email w celu subskrypcji aktualizacji dla tego komponentu. Jeśli byłeś już zapisany, otrzymujesz aktualizacje dla tego komponentu.', - 'button' => 'Abonnieren', - ], - ], - - // Other - 'home' => 'Strona Główna', - 'description' => 'Bądź na bieżąco z aktualizacjami z :app.', - 'powered_by' => 'Obsługiwany przez Cachet.', - 'about_this_site' => 'Über diese Seite', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status-Feed', - -]; diff --git a/resources/lang/pl/dashboard.php b/resources/lang/pl/dashboard.php deleted file mode 100644 index 28bc7e99..00000000 --- a/resources/lang/pl/dashboard.php +++ /dev/null @@ -1,292 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Vorfälle', - 'logged' => '{0} Es gibt keine Vorfälle, gute Arbeit.|Du hast einen Vorfall gemeldet.|Du hast :count Vorfälle gemeldet.', - 'incident-create-template' => 'Vorlage erstellen', - 'incident-templates' => 'Vorfall Vorlagen', - 'updates' => '{0} Zero aktualizacji|Jedna aktualizacja|:count aktualizacji', - 'add' => [ - 'title' => 'Vorfall hinzufügen', - 'success' => 'Dodano zdarzenie.', - 'failure' => 'Wystąpił błąd podczas dodawania wydarzenia, proszę spróbować ponownie.', - ], - 'edit' => [ - 'title' => 'Vorfall bearbeiten', - 'success' => 'Vorfall aktualisiert.', - 'failure' => 'Wystąpił błąd podczas edytowania wydarzenia, proszę spróbować ponownie.', - ], - 'delete' => [ - 'success' => 'Wydarzenie zostało usunięte i nie będzie widoczne na stronie statusu.', - 'failure' => 'Wydarzenie nie mogło zostać usunięte, proszę spróbować ponownie.', - ], - 'update' => [ - 'title' => 'Utwórz nową aktualizację zdarzenia', - 'subtitle' => 'Dodaj aktualizację do :incident', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Vorfall Vorlagen', - 'add' => [ - 'title' => 'Vorfallvorlage erstellen', - 'message' => 'Powinieneś dodać szablon wydarzenia.', - 'success' => 'Twój nowy szablon wydarzenia został utworzony.', - 'failure' => 'Coś poszło nie tak z szablonem wydarzenia.', - ], - 'edit' => [ - 'title' => 'Vorlage bearbeiten', - 'success' => 'Szablon wydarzenia został zaktualizowany.', - 'failure' => 'Coś poszło nie tak podczas aktualizacji szablonu wydarzenia', - ], - 'delete' => [ - 'success' => 'Szablon wydarzenia został usunięty.', - 'failure' => 'Szablon wydarzenia nie mógł zostać usunięty, proszę spróbować ponownie.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Geplante Wartungen', - 'logged' => '{0} Nie ma żadnych harmonogramów, dobra robota.|Posiadasz jeden harmonogram.|Zgłoszono :count harmonogramów.', - 'scheduled_at' => 'Geplant am :timestamp', - 'add' => [ - 'title' => 'Zaplanuj prace konserwatorskie', - 'success' => 'Dodano harmonogram.', - 'failure' => 'Coś poszło nie tak podczas planowania, proszę spróbować ponownie.', - ], - 'edit' => [ - 'title' => 'Edytuj prace konserwatorskie', - 'success' => 'Harmonogram został zaktualizowany!', - 'failure' => 'Coś poszło nie tak podczas edytowania harmonogramu, proszę spróbować ponownie.', - ], - 'delete' => [ - 'success' => 'Zaplanowane prace konserwatorskie zostały usunięte i nie będą wyświetlane na stronie statusu.', - 'failure' => 'Zaplanowane prace konserwatorskie nie mogły zostać usunięte, proszę spróbować ponownie.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Komponenten', - 'component_statuses' => 'Komponentenstatus', - 'listed_group' => 'Gruppiert unter :name', - 'add' => [ - 'title' => 'Komponente hinzufügen', - 'message' => 'Sie sollten eine Komponente erstellen.', - 'success' => 'Utworzono komponent.', - 'failure' => 'Coś poszło nie tak z komponentem, proszę spróbować ponownie.', - ], - 'edit' => [ - 'title' => 'Komponente bearbeiten', - 'success' => 'Zaktualizowano komponent.', - 'failure' => 'Coś poszło nie tak z komponentem, proszę spróbować ponownie.', - ], - 'delete' => [ - 'success' => 'Komponent został usunięty!', - 'failure' => 'Komponent nie mógł zostać usunięty, proszę spróbować ponownie.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Komponentgruppe|Komponentgruppen', - 'no_components' => 'Sie sollten eine Komponentengruppe hinzufügen.', - 'add' => [ - 'title' => 'Eine Komponentengruppe hinzufügen', - 'success' => 'Dodano grupę komponentów.', - 'failure' => 'Coś poszło nie tak z komponentem, proszę spróbować ponownie.', - ], - 'edit' => [ - 'title' => 'Komponentengruppe bearbeiten', - 'success' => 'Zaktualizowano grupę komponentów.', - 'failure' => 'Coś poszło nie tak z komponentem, proszę spróbować ponownie.', - ], - 'delete' => [ - 'success' => 'Grupa komponentów została usunięta!', - 'failure' => 'Grupa komponentów nie mogła zostać usunięta, proszę spróbować ponownie.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metriken', - 'add' => [ - 'title' => 'Metrik erstellen', - 'message' => 'Powinieneś dodać metrykę.', - 'success' => 'Utworzono metrykę.', - 'failure' => 'Coś poszło nie tak z metryką, proszę próbować ponownie.', - ], - 'edit' => [ - 'title' => 'Metrik bearbeiten', - 'success' => 'Zaktualizowano metrykę.', - 'failure' => 'Coś poszło nie tak z metryką, proszę próbować ponownie.', - ], - 'delete' => [ - 'success' => 'Metryka została usunięta i nie będzie wyświetlana na stronie statusu.', - 'failure' => 'Metryka nie mogła zostać usunięta, proszę spróbować ponownie.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonnenten', - 'description' => 'Subskrybenci będą otrzymywać powiadomienia, gdy wydarzenia zostaną utworzone lub komponenty zaktualizowane.', - 'verified' => 'Verifiziert', - 'not_verified' => 'Nicht verifiziert', - 'subscriber' => ':email, subskrybowany :data', - 'no_subscriptions' => 'Zapisano do wszystkich aktualizacji', - 'add' => [ - 'title' => 'Einen neuen Abonnenten hinzufügen', - 'success' => 'Abonnent hinzugefügt.', - 'failure' => 'Coś poszło nie tak podczas dodawania subskrybenta, proszę spróbować ponownie.', - 'help' => 'Wpisz każdego subskrybenta w nowym wierszu.', - ], - 'edit' => [ - 'title' => 'Abonnent aktualisieren', - 'success' => 'Abonnent aktualisiert.', - 'failure' => 'Coś poszło nie tak podczas edytowania subskrybenta, proszę spróbować ponownie.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Mitglied', - 'profile' => 'Profil', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Neues Teammitglied hinzufügen', - 'success' => 'Dodano członka zespołu.', - 'failure' => 'Członek zespołu nie mógł zostać dodany, proszę spróbować ponownie.', - ], - 'edit' => [ - 'title' => 'Profil aktualisieren', - 'success' => 'Zaktualizowano profil.', - 'failure' => 'Coś poszło nie tak podczas aktualizacji profilu, proszę spróbować ponownie.', - ], - 'delete' => [ - 'success' => 'Benutzer aktualisiert.', - 'failure' => 'Członek zespołu nie mógł zostać dodany, proszę spróbować ponownie.', - ], - 'invite' => [ - 'title' => 'Zaproś nowego członka zespołu', - 'success' => 'Zaproszenie zostało wysłane', - 'failure' => 'Zaproszenie nie mogło zostać wysłane, proszę spróbować ponownie.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Einstellungen', - 'app-setup' => [ - 'app-setup' => 'Anwendungsinstallation', - 'images-only' => 'Es können nur Bilder hochgeladen werden.', - 'too-big' => 'Die von Ihnen hochgeladene Datei ist zu groß. Laden Sie ein Bild welches kleiner als :size ist hoch', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Logi', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Dostosowywanie', - 'header' => 'Niestandardowy nagłówek HTML', - 'footer' => 'Niestandardowa stopka HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Sicherheit', - 'two-factor' => 'Nutzer ohne Zwei-Faktor-Authentifizierung', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Einstellungen gespeichert.', - 'failure' => 'Einstellungen konnten nicht gespeichert werden.', - ], - 'credits' => [ - 'credits' => 'Autorzy', - 'contributors' => 'Współtwórcy', - 'license' => 'Catchet jest otwartym źródłem z licencją BSD utworzonym przez Alt Three Services Limited.', - 'backers-title' => 'Patronaci i sponsorzy', - 'backers' => 'Jeśli chciałbyś wspomóc przyszły rozwój sprawdź kampanię Cachet Patreon.', - 'thank-you' => 'Dziękujemy każdemu :count współtwórcy.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Anmelden', - 'logged_in' => 'Sie sind angemeldet.', - 'welcome' => 'Willkommen zurück!', - 'two-factor' => 'Bitte geben Sie Ihren Token ein.', - ], - - // Sidebar footer - 'help' => 'Hilfe', - 'status_page' => 'Statusseite', - 'logout' => 'Abmelden', - - // Notifications - 'notifications' => [ - 'notifications' => 'Benachrichtigungen', - 'awesome' => 'Großartig.', - 'whoops' => 'Hoppla.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Wspomóż Cachet', - 'support_subtitle' => 'Sprawdź również naszą stronę na Patreon!', - 'news' => 'Aktualności', - 'news_subtitle' => 'Pobierz najnowszą aktualizację', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Witamy w nowym statusie strony!', - 'message' => 'Ihre Statusseite ist fast fertig! Vielleicht möchten Sie diese zusätzlichen Einstellungen konfigurieren', - 'close' => 'Przejdź prosto do panelu głównego', - 'steps' => [ - 'component' => 'Komponenten erstellen', - 'incident' => 'Vorfälle erstellen', - 'customize' => 'Personalisieren', - 'team' => 'Benutzer hinzufügen', - 'api' => 'API Token generieren', - 'two-factor' => 'Zwei-Faktor-Authentifizierung', - ], - ], - -]; diff --git a/resources/lang/pl/forms.php b/resources/lang/pl/forms.php deleted file mode 100644 index 9c0c1f7f..00000000 --- a/resources/lang/pl/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'E-Mail', - 'username' => 'Benutzername', - 'password' => 'Passwort', - 'site_name' => 'Seitenname', - 'site_domain' => 'Domain ihrer Seite', - 'site_timezone' => 'Wählen Sie Ihre Zeitzone', - 'site_locale' => 'Wählen Sie Ihre Sprache', - 'enable_google2fa' => 'Google Zwei-Faktor-Authentifizierung aktivieren', - 'cache_driver' => 'Cache-Treiber', - 'session_driver' => 'Sitzungs-Treiber', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nazwa użytkownika lub e-mail', - 'email' => 'E-Mail', - 'password' => 'Passwort', - '2fauth' => 'Authentifizierungscode', - 'invalid' => 'Nieprawidłowa nazwa użytkownika lub hasło', - 'invalid-token' => 'Token ist ungültig', - 'cookies' => 'Sie müssen Cookies aktivieren um sich anzumelden.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Komponente', - 'message' => 'Nachricht', - 'message-help' => 'Sie können auch Markdown verwenden.', - 'scheduled_at' => 'Für wann ist die Wartung geplant?', - 'incident_time' => 'Wann ist dieser Vorfall aufgetreten?', - 'notify_subscribers' => 'Abonnenten benachrichtigen', - 'visibility' => 'Widoczność zdarzenia', - 'public' => 'Öffentlich sichtbar', - 'logged_in_only' => 'Nur für angemeldete Benutzer sichtbar', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Vorlage', - 'twig' => 'Szablony wydarzeń mogą korzystać z języka szablonów Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Gruppe', - 'description' => 'Beschreibung', - 'link' => 'Link', - 'tags' => 'Schlagwörter', - 'tags-help' => 'Durch Kommata trennen.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Wybierz widoczność grupy', - 'visible' => 'Zawsze rozwinięte', - 'collapsed' => 'Domyślnie zwiń grupę', - 'collapsed_incident' => 'Zwiń grupę, ale rozwiń ją w razie problemów', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Beschreibung', - 'description-help' => 'Sie können auch Markdown verwenden.', - 'display-chart' => 'Diagramm auf der Statusseite anzeigen?', - 'default-value' => 'Standardwert', - 'calc_type' => 'Berechnung der Metrik', - 'type_sum' => 'Summe', - 'type_avg' => 'Durchschnitt', - 'places' => 'Miejsca dziesiętne', - 'default_view' => 'Domyślny widok', - 'threshold' => 'Ile minut przerwy między punktami metrycznymi?', - - 'points' => [ - 'value' => 'Wert', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Seitenname', - 'site-url' => 'URL ihrer Seite', - 'display-graphs' => 'Graphen auf der Statusseite anzeigen?', - 'about-this-page' => 'Über diese Seite', - 'days-of-incidents' => 'Wie viele Tage mit Vorfällen sollen gezeigt werden?', - 'banner' => 'Banner', - 'banner-help' => 'Es wird empfohlen, dass Sie keine Dateien die breiter als 930 Pixel sind hochladen .', - 'subscribers' => 'Personen die Anmeldung für E-Mail-Benachrichtigung erlauben?', - 'automatic_localization' => 'Automatycznie tłumaczyć twoją stronę statusu na język odwiedzającego?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics Code', - 'analytics_gosquared' => 'GoSquared Analytics Code', - 'analytics_piwik_url' => 'URL der Piwik-Instanz (ohne http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s Seiten-ID', - ], - 'localization' => [ - 'site-timezone' => 'Zeitzone ihrer Seite', - 'site-locale' => 'Sprache ihrer Seite', - 'date-format' => 'Datumsformat', - 'incident-date-format' => 'Vorfall Zeitstempel-Format', - ], - 'security' => [ - 'allowed-domains' => 'Erlaubte Domains', - 'allowed-domains-help' => 'Durch Kommata trennen. Die oben genannte Domain ist standardmäßig erlaubt.', - ], - 'stylesheet' => [ - 'custom-css' => 'Niestandardowy arkusz stylów', - ], - 'theme' => [ - 'background-color' => 'Kolor tła', - 'background-fills' => 'Wypełnianie tła (komponenty, wydarzenia, stopka)', - 'banner-background-color' => 'Banner Background Color', - 'banner-padding' => 'Banner Padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Kolor tekstu', - 'dashboard-login' => 'Pokazywać przycisk panelu głównego w stopce?', - 'reds' => 'Czerwony (używany przy błędach)', - 'blues' => 'Niebieski (używany przy informacjach)', - 'greens' => 'Zielony (używany przy powodzeniu)', - 'yellows' => 'Żółty (używany przy ostrzeżeniach)', - 'oranges' => 'Pomarańczowy (używany przy ogłoszeniach)', - 'metrics' => 'Wypełnienie metryki', - 'links' => 'Łącza', - ], - ], - - 'user' => [ - 'username' => 'Benutzername', - 'email' => 'E-Mail', - 'password' => 'Passwort', - 'api-token' => 'API Token', - 'api-token-help' => 'Wenn sie ihren API-Token neu generieren, können bestehende Anwendungen nicht mehr auf Cachet zugreifen.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'Poziom użytkownika', - 'levels' => [ - 'admin' => 'Administrator', - 'user' => 'Użytkownik', - ], - '2fa' => [ - 'help' => 'Die Zwei-Faktor-Authentifizierung erhöht die Sicherheit Ihres Kontos. Sie benötigen Google Authenticator oder eine ähnliche App auf Ihrem Mobilgerät. Beim Anmelden werden sie aufgefordert, einen Token einzugeben, der von der App generiert wird.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Hinzufügen', - 'save' => 'Speichern', - 'update' => 'Aktualisieren', - 'create' => 'Erstellen', - 'edit' => 'Bearbeiten', - 'delete' => 'Löschen', - 'submit' => 'Abschicken', - 'cancel' => 'Abbrechen', - 'remove' => 'Entfernen', - 'invite' => 'Zaproś', - 'signup' => 'Zarejestruj się', - - // Other - 'optional' => '* optional', -]; diff --git a/resources/lang/pl/pagination.php b/resources/lang/pl/pagination.php deleted file mode 100644 index 3006cb19..00000000 --- a/resources/lang/pl/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Poprzednia', - 'next' => 'Następna »', - -]; diff --git a/resources/lang/pl/setup.php b/resources/lang/pl/setup.php deleted file mode 100644 index a2981178..00000000 --- a/resources/lang/pl/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Instalacja', - 'title' => 'Skonfiguruj Cachet', - 'service_details' => 'Szczegóły usługi', - 'env_setup' => 'Konfiguracja środowiska', - 'status_page_setup' => 'Skonfiguruj stronę statusu', - 'show_support' => 'Pokazać wsparcie dla Cachet?', - 'admin_account' => 'Konto Administratora', - 'complete_setup' => 'Zakończ instalację', - 'completed' => 'Cachet został pomyślnie skonfigurowany!', - 'finish_setup' => 'Przejdź do pulpitu', -]; diff --git a/resources/lang/pl/validation.php b/resources/lang/pl/validation.php deleted file mode 100644 index 5e378029..00000000 --- a/resources/lang/pl/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute muss akzeptiert werden.', - 'active_url' => ':attribute ist keine gültige Internet-Adresse.', - 'after' => ':attribute muss ein Datum nach dem :date sein.', - 'alpha' => ':attribute darf nur aus Buchstaben bestehen.', - 'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.', - 'alpha_num' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen. Umlaute (ä, ö, ü) und Eszett (ß) sind nicht erlaubt.', - 'array' => ':attribute muss ein Array sein.', - 'before' => ':attribute muss ein Datum vor dem :date sein.', - 'between' => [ - 'numeric' => ':attribute muss ein Datum vor dem :date sein.', - 'file' => ':attribute musi być między :min i :max.', - 'string' => ':attribute musi ważyć od :min do :max kilobajtów.', - 'array' => ':attribute muss zwischen :min & :max Elemente haben.', - ], - 'boolean' => ':attribute muss zwischen :min & :max Elemente haben.', - 'confirmed' => 'Pole :attribute musi być prawdą albo fałszem.', - 'date' => 'Potwierdzenie :attribute nie pasuje.', - 'date_format' => ':attribute nie jest prawidłową datą.', - 'different' => ':attribute nie pasuje do formatu :format.', - 'digits' => ':attribute i :other muszą być różne.', - 'digits_between' => ':attribute musi zawierać cyfry :digits.', - 'email' => ':attribute musi mieć od :min do :max cyfer.', - 'exists' => ':attribute musi być prawidłowym adresem email.', - 'distinct' => 'Pole :attribute zawiera podwójną wartość.', - 'filled' => 'Format atrybutu ":attribute" jest nieprawidłowy.', - 'image' => ':attribute muss ein Bild sein.', - 'in' => ':attribute muss ein Bild sein.', - 'in_array' => 'Pole :attribute nie istnieje w :other.', - 'integer' => 'Wybrany :attribute jest nieprawidłowy.', - 'ip' => ':attribute musi być liczbą całkowitą.', - 'json' => ':attribute musi być prawidłowym węzłem JSON.', - 'max' => [ - 'numeric' => ':attribute musi być prawidłowym adresem IP.', - 'file' => ':attribute nie może być większy niż :max.', - 'string' => ':attribute nie może ważyć więcej niż :max kilobajtów.', - 'array' => ':attribute darf nicht mehr als :max Elemente haben.', - ], - 'mimes' => ':attribute darf nicht mehr als :max Elemente haben.', - 'min' => [ - 'numeric' => ':attribute musi być typem pliku: :values.', - 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', - 'string' => ':attribute muss mindestens :min Kilobytes groß sein.', - 'array' => ':attribute musi mieć przynajmniej :min znaków.', - ], - 'not_in' => ':attribute musi zawierać przynajmniej :min elementów.', - 'numeric' => 'Wybrany :attribute jest nieprawidłowy.', - 'present' => 'Pole :attribute musi być obecne.', - 'regex' => ':attribute musi być liczbą.', - 'required' => 'Format atrybutu ":attribute" jest nieprawidłowy.', - 'required_if' => 'Pole :attribute jest wymagane.', - 'required_unless' => 'Pole :attribute jest wymagane, chyba że :other jest w :values.', - 'required_with' => 'Pole :attribute jest wymagane, kiedy :other jest :value.', - 'required_with_all' => 'Pole :attribute jest wymagane kiedy obecne jest :values.', - 'required_without' => 'Pole :attribute jest wymagane kiedy obecne jest :values.', - 'required_without_all' => 'Pole :attribute jest wymagane, kiedy :values nie jest dostępny.', - 'same' => 'Pole :attribute jest wymagane, kiedy żaden :values nie jest obecny.', - 'size' => [ - 'numeric' => ':attribute i :other muszą pasować.', - 'file' => ':attribute muss :size Kilobytes groß sein.', - 'string' => ':attribute muss :size Zeichen lang sein.', - 'array' => ':attribute muss :size Zeichen lang sein.', - ], - 'string' => ':attribute musi zawierać :size elementów.', - 'timezone' => ':attribute muss eine gültige Zeitzone sein.', - 'unique' => ':attribute ist schon vergeben.', - 'url' => 'Format atrybutu ":attribute" jest nieprawidłowy.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'Individuelle Nachricht', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/pt-BR/cachet.php b/resources/lang/pt-BR/cachet.php deleted file mode 100644 index b43dc750..00000000 --- a/resources/lang/pt-BR/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Última atualização :timestamp', - 'status' => [ - 0 => 'Desconhecido', - 1 => 'Operacional', - 2 => 'Problemas de performance', - 3 => 'Indisponibilidade parcial', - 4 => 'Indisponibilidade total', - ], - 'group' => [ - 'other' => 'Outros componentes', - ], - 'select_all' => 'Marcar todos', - 'deselect_all' => 'Desmarcar todos', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Nenhum incidente reportado', - 'past' => 'Incidentes anteriores', - 'stickied' => 'Incidentes Fixados', - 'scheduled' => 'Manutenção', - 'scheduled_at' => ', agendada :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Postado em :timestamp', - 'status' => [ - 1 => 'Investigando', - 2 => 'Identificado', - 3 => 'Observando', - 4 => 'Resolvido', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Em breve', - 1 => 'Em Progresso', - 2 => 'Concluído', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Sistema operacional | [2, *] Todos os sistemas estão operacionais', - 'bad' => '[0,1] O sistema apresenta falhas|[2,*] Alguns sistemas apresentam falhas', - 'major' => '[0,1] O sistema apresenta falhas críticas|[2,Inf] Alguns sistemas apresentam falhas críticas', - ], - - 'api' => [ - 'regenerate' => 'Gerar nova chave de API', - 'revoke' => 'Revogar a chave de API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Última Hora', - 'hourly' => 'Últimas 12 horas', - 'weekly' => 'Semana', - 'monthly' => 'Mês', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Inscreva-se para mudanças de status e atualizações de incidentes', - 'unsubscribe' => 'Cancelar inscrição', - 'button' => 'Inscreva-se', - 'manage_subscription' => 'Gerenciar inscrição', - 'manage' => [ - 'notifications' => 'Notificações', - 'notifications_for' => 'Gerenciar notificações', - 'no_subscriptions' => 'Você está atualmente inscrito a todas as atualizações.', - 'update_subscription' => 'Atualizar inscrição', - 'my_subscriptions' => 'Você está atualmente inscrito para as seguintes atualizações.', - 'manage_at_link' => 'Gerencie suas inscrições aqui :link', - ], - 'email' => [ - 'manage_subscription' => 'Enviamos um e-mail para você, por favor clique no link para gerenciar sua assinatura', - 'subscribe' => 'Inscreva-se para atualizações via e-mail.', - 'subscribed' => 'Inscrição realizada com sucesso! Por favor verifique o e-mail que enviamos à você para confirmar sua inscrição.', - 'updated-subscribe' => 'Suas assinaturas foram atualizadas com sucesso.', - 'verified' => 'Sua inscrição foi confirmada! Obrigado!', - 'manage' => 'Gerencie sua assinatura', - 'unsubscribe' => 'Não desejo mais receber notificações via e-mail.', - 'unsubscribed' => 'Sua inscrição foi cancelada.', - 'failure' => 'Ocorreu um problema na sua inscrição.', - 'already-subscribed' => 'Impossível inscrever :email pois já se encontra inscrito.', - ], - ], - - 'signup' => [ - 'title' => 'Cadastrar-se', - 'username' => 'Usuário', - 'email' => 'Email', - 'password' => 'Senha', - 'success' => 'A sua conta foi criada.', - 'failure' => 'Algo deu errado com o seu cadastro.', - ], - - 'system' => [ - 'update' => 'Existe uma versão mais recente do Cachet disponivel. Você pode saber mais sobre como atualizar aqui!', - ], - - // Modal - 'modal' => [ - 'close' => 'Fechar', - 'subscribe' => [ - 'title' => 'Assine as atualizações do componente', - 'body' => 'Digite seu endereço de e-mail para se inscrever em atualizações para este componente. Se você já está inscrito, você já recebe e-mails para este componente.', - 'button' => 'Inscreva-se', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Detalhes e atualizações sobre o ​​incidente :name ocorrido em :date', - 'schedule' => 'Detalhes sobre o período de manutenção agendada :name que começa em :startDate', - 'subscribe' => 'Inscreva-se para o :app e receba atualizações de incidentes e períodos de manutenção agendada', - 'overview' => 'Mantenha-se atualizado com as últimas atualizações de serviço de: app.', - ], - ], - - // Other - 'home' => 'Início', - 'powered_by' => 'Desenvolvido por Cachet.', - 'timezone' => 'Horários são exibidos em :timezone.', - 'about_this_site' => 'Sobre este Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/pt-BR/dashboard.php b/resources/lang/pt-BR/dashboard.php deleted file mode 100644 index 2a8796aa..00000000 --- a/resources/lang/pt-BR/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'O diretório de configurações do Cachet não é gravável. Certifique-se de que ./bootstrap/cachet é gravável pelo servidor web.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidentes & Agendamentos', - 'incidents' => 'Incidentes', - 'logged' => '{0}Não existem incidentes, bom trabalho.|[1]Você adicionou um incidente.|[2,*]Você reportou :count incidentes.', - 'incident-create-template' => 'Criar template', - 'incident-templates' => 'Template de incidentes', - 'updates' => [ - 'title' => 'Atualizações para o incidente :incident', - 'count' => '{0}Nenhuma atualização|[1]Uma atualização|[2]Duas atualizações|[3,*]Várias atualizações', - 'add' => [ - 'title' => 'Crie uma nova atualização de incidente', - 'success' => 'Sua atualização de incidente foi criada.', - 'failure' => 'Algo deu errado com a atualização do incidente.', - ], - 'edit' => [ - 'title' => 'Editar atualização do incidente', - 'success' => 'Sua atualização de incidente foi atualizada.', - 'failure' => 'Algo deu errado ao atualizar as informações do incidente', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Relatar um incidente', - 'success' => 'Incidente adicionado.', - 'failure' => 'Houve um erro ao adicionar o incidente, por favor tente novamente.', - ], - 'edit' => [ - 'title' => 'Editar um incidente', - 'success' => 'Incidente atualizado.', - 'failure' => 'Houve um erro na edição do incidente, por favor tente novamente.', - ], - 'delete' => [ - 'success' => 'O incidente foi excluído e não aparecerá na sua página de status.', - 'failure' => 'O incidente não pode ser excluído, por favor tente novamente.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Template de incidentes', - 'add' => [ - 'title' => 'Criar um modelo de incidente', - 'message' => 'Crie seu primeiro template de incidente.', - 'success' => 'Seu novo modelo de incidente foi criado.', - 'failure' => 'Algo deu errado com o modelo de incidente.', - ], - 'edit' => [ - 'title' => 'Editar modelo', - 'success' => 'O modelo de incidente foi atualizado.', - 'failure' => 'Algo deu errado ao atualizar o modelo de incidente', - ], - 'delete' => [ - 'success' => 'O modelo de incidente foi excluído.', - 'failure' => 'O modelo de incidente não pode ser excluído, por favor tente novamente.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Manutenção', - 'logged' => '{0}Ainda não ocorreu nenhuma manuteção, bom trabalho. |[1]Você agendou uma manuteção. | [2, *] Você adicionou : manutenções.', - 'scheduled_at' => 'Agendada em :timestamp', - 'add' => [ - 'title' => 'Adicionar manutenção agendada', - 'success' => 'Manutenção adicionada.', - 'failure' => 'Algo deu errado ao adicionar a Manutenção, por favor tente novamente.', - ], - 'edit' => [ - 'title' => 'Editar Manutenção', - 'success' => 'Manutenção atualizada!', - 'failure' => 'Algo deu errado ao editar a Manutenção, por favor tente novamente.', - ], - 'delete' => [ - 'success' => 'A manutenção programada foi excluída e não aparecerá na sua página de status.', - 'failure' => 'A Manutenção não pôde ser excluída, por favor tente novamente.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componentes', - 'component_statuses' => 'Status do componente', - 'listed_group' => 'Agrupados sob :name', - 'add' => [ - 'title' => 'Adicionar componente', - 'message' => 'Você deve adicionar um componente.', - 'success' => 'Componente criado.', - 'failure' => 'Algo deu errado com o componente, por favor tente novamente.', - ], - 'edit' => [ - 'title' => 'Editar um componente', - 'success' => 'Componente atualizado.', - 'failure' => 'Algo deu errado com o componente, por favor tente novamente.', - ], - 'delete' => [ - 'success' => 'O componente foi excluído!', - 'failure' => 'O componente não pode ser excluído. Por favor tente de novo.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Grupo de componente|Grupos de componente', - 'no_components' => 'Você deve adicionar um componente à um grupo.', - 'add' => [ - 'title' => 'Adicionar um grupo de componentes', - 'success' => 'Grupo de componentes adicionado.', - 'failure' => 'Algo deu errado com o componente, por favor tente novamente.', - ], - 'edit' => [ - 'title' => 'Editar um grupo de componentes', - 'success' => 'Grupo de componentes atualizado.', - 'failure' => 'Algo deu errado com o componente, por favor tente novamente.', - ], - 'delete' => [ - 'success' => 'O grupo de componentes foi excluído!', - 'failure' => 'O grupo de componentes não pode ser excluído, por favor tente novamente.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metricas', - 'add' => [ - 'title' => 'Criar uma métrica', - 'message' => 'Você deveria adicionar uma métrica.', - 'success' => 'Métrica criada.', - 'failure' => 'Algo deu errado com a métrica, por favor tente novamente.', - ], - 'edit' => [ - 'title' => 'Editar uma métrica', - 'success' => 'Métrica atualizada.', - 'failure' => 'Algo deu errado com a métrica, por favor tente novamente.', - ], - 'delete' => [ - 'success' => 'A métrica foi excluída e não será mais exibida na sua página de status.', - 'failure' => 'A métrica não pode ser excluída, por favor tente novamente.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Assinantes', - 'description' => 'Assinantes vão receber atualizações de e-mail quando incidentes criados ou componentes atualizados.', - 'description_disabled' => 'Para utilizar esse recurso, você precisa permitir que as pessoas se cadastrem para notificações.', - 'verified' => 'Verificado', - 'not_verified' => 'Não verificado', - 'subscriber' => ':email, inscreveu-se em :date', - 'no_subscriptions' => 'Inscrito em todas as atualizações', - 'global' => 'Inscrito globalmente', - 'add' => [ - 'title' => 'Adicionar um novo assinante', - 'success' => 'Inscrito adicionado.', - 'failure' => 'Algo deu errado adicionando o assinante, por favor tente novamente.', - 'help' => 'Insira cada assinante em uma nova linha.', - ], - 'edit' => [ - 'title' => 'Atualizar assinante', - 'success' => 'Inscrito atualizado.', - 'failure' => 'Algo deu errado editando o assinante, por favor tente novamente.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Equipe', - 'member' => 'Membro', - 'profile' => 'Perfil ', - 'description' => 'Membros da equipe serão capazes de adicionar, modificar & editar componentes e incidentes.', - 'add' => [ - 'title' => 'Adicionar um novo membro da equipe', - 'success' => 'Membro da equipe adicionado.', - 'failure' => 'Membro da equipe não pôde ser adicionado, por favor tente novamente.', - ], - 'edit' => [ - 'title' => 'Atualizar perfil', - 'success' => 'Perfil atualizado.', - 'failure' => 'Algo deu errado atualizando o perfil, por favor tente novamente.', - ], - 'delete' => [ - 'success' => 'O membro da equipe foi excluído e não conseguirá mais acessar o painel de controle!', - 'failure' => 'Membro da equipe não pôde ser adicionado, por favor tente novamente.', - ], - 'invite' => [ - 'title' => 'Convidar um novo membro para a equipe', - 'success' => 'Convite enviado', - 'failure' => 'O convite não pôde ser enviado, por favor tente novamente.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Configurações', - 'app-setup' => [ - 'app-setup' => 'Instalação do aplicativo', - 'images-only' => 'Somente imagens podem ser carregadas.', - 'too-big' => 'O arquivo que você carregou é muito grande. Envie uma imagem inferior à :size', - ], - 'analytics' => [ - 'analytics' => 'Estatísticas', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Idioma', - ], - 'customization' => [ - 'customization' => 'Personalização', - 'header' => 'HTML de cabeçalho personalizado', - 'footer' => 'HTML de rodapé personalizado', - ], - 'mail' => [ - 'mail' => 'E-Mail', - 'test' => 'Teste', - 'email' => [ - 'subject' => 'Notificação de teste do Cachet', - 'body' => 'Esta é uma notificação de teste do Cachet.', - ], - ], - 'security' => [ - 'security' => 'Segurança', - 'two-factor' => 'Usuários sem autenticação de dois fatores', - ], - 'stylesheet' => [ - 'stylesheet' => 'Folha de estilo', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Configurações salvas.', - 'failure' => 'Não foi possível salvar as configurações.', - ], - 'credits' => [ - 'credits' => 'Créditos', - 'contributors' => 'Colaboradores', - 'license' => 'Cachet é um projeto de código aberto com licença BSD-3, lançado pela Alt Three Services Limited.', - 'backers-title' => 'Apoiadores e Patrocinadores', - 'backers' => 'Se você deseja apoiar o desenvolvimento, confira a campanha do Cachet no Pantreon.', - 'thank-you' => 'Agradeço a cada um dos :count colaboradores.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'Você está logado.', - 'welcome' => 'Bem-vindo de volta!', - 'two-factor' => 'Por favor insira o seu token.', - ], - - // Sidebar footer - 'help' => 'Ajuda', - 'status_page' => 'Página de status', - 'logout' => 'Sair', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notificações', - 'awesome' => 'Excelente.', - 'whoops' => 'Opa.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Ajude o Cachet', - 'support_subtitle' => 'Confira nossa campanha no Patreon!', - 'news' => 'Últimas Notícias', - 'news_subtitle' => 'Receba as últimas atualizações', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Bem-vindo à sua nova página de status!', - 'message' => 'Sua página de status está quase pronta! Tavez vocë queira checar essas configurações extras', - 'close' => 'Me leve direto para o meu painel de controle', - 'steps' => [ - 'component' => 'Criar componentes', - 'incident' => 'Criar incidentes', - 'customize' => 'Personalizar', - 'team' => 'Adicionar usuários', - 'api' => 'Gerar token de API', - 'two-factor' => 'Autenticação em duas etapas', - ], - ], - -]; diff --git a/resources/lang/pt-BR/forms.php b/resources/lang/pt-BR/forms.php deleted file mode 100644 index 217018b2..00000000 --- a/resources/lang/pt-BR/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Usuário', - 'password' => 'Senha', - 'site_name' => 'Nome do site', - 'site_domain' => 'Domínio do site', - 'site_timezone' => 'Selecione o seu fuso horário', - 'site_locale' => 'Selecione seu idioma', - 'enable_google2fa' => 'Habilitar a autenticação de dois fatores do Google', - 'cache_driver' => 'Driver de Cache', - 'queue_driver' => 'Driver na fila', - 'session_driver' => 'Driver de Sessão', - 'mail_driver' => 'Driver de correio', - 'mail_host' => 'Host de correio', - 'mail_address' => 'Correio do endereço', - 'mail_username' => 'Nome de usuário de email', - 'mail_password' => 'Senha de email', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nome de utilizador ou E-mail', - 'email' => 'Email', - 'password' => 'Senha', - '2fauth' => 'Código de autenticação', - 'invalid' => 'Nome de usuário ou senha incorretos', - 'invalid-token' => 'Token inválido', - 'cookies' => 'Você deve habilitar os cookies do navegador para logar.', - 'rate-limit' => 'Limite de acesso excedido.', - 'remember_me' => 'Lembrar-me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nome', - 'status' => 'Status', - 'component' => 'Componente', - 'component_status' => 'Status do componente', - 'message' => 'Mensagem', - 'message-help' => 'Você também pode usar o Markdown.', - 'occurred_at' => 'Quando este incidente ocorreu?', - 'notify_subscribers' => 'Notificar os assinantes?', - 'notify_disabled' => 'Devido a manutenção programada, notificações sobre este incidente ou seus componentes não serão feitas.', - 'visibility' => 'Visibilidade do incidente', - 'stick_status' => 'Incidente fixado', - 'stickied' => 'Fixado', - 'not_stickied' => 'Não Fixado', - 'public' => 'Visível para todos', - 'logged_in_only' => 'Visível somente para usuários logados', - 'templates' => [ - 'name' => 'Nome', - 'template' => 'Template', - 'twig' => 'Esboços de incidentes podem fazer uso da linguagem de template Twig.', - ], - ], - - 'schedules' => [ - 'name' => 'Nome', - 'status' => 'Status', - 'message' => 'Mensagem', - 'message-help' => 'Você também pode usar o Markdown.', - 'scheduled_at' => 'Esta manutenção foi programada para quando?', - 'completed_at' => 'Quando esta manutenção foi concluída?', - 'templates' => [ - 'name' => 'Nome', - 'template' => 'Template', - 'twig' => 'Esboços de incidentes podem fazer uso da linguagem de template Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nome', - 'status' => 'Status', - 'group' => 'Grupo', - 'description' => 'Descrição', - 'link' => 'Link', - 'tags' => 'Marcações', - 'tags-help' => 'Separados por vírgulas.', - 'enabled' => 'Componente activado?', - - 'groups' => [ - 'name' => 'Nome', - 'collapsing' => 'Expandir/recolher opções', - 'visible' => 'Sempre expandido', - 'collapsed' => 'Colapsar o grupo por padrão', - 'collapsed_incident' => 'Colapsar o grupo, mas expandir se ocorrer algum problema', - 'visibility' => 'Visibilidade', - 'visibility_public' => 'Visível ao Público', - 'visibility_authenticated' => 'Visível apenas para usuários autenticados', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Nome', - 'description' => 'Descrição', - 'start_at' => 'Agendar horário de início', - 'timezone' => 'Fuso horário', - 'schedule_frequency' => 'Agendar frequência (em segundos)', - 'completion_latency' => 'Latência de conclusão (em segundos)', - 'group' => 'Grupo', - 'active' => 'Ativado?', - 'groups' => [ - 'name' => 'Nome do Grupo', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nome', - 'suffix' => 'Sufixo', - 'description' => 'Descrição', - 'description-help' => 'Você também pode usar o Markdown.', - 'display-chart' => 'Exibir o gráfico na página de status?', - 'default-value' => 'Valor padrão', - 'calc_type' => 'Cálculo de métricas', - 'type_sum' => 'Soma', - 'type_avg' => 'Média', - 'places' => 'Casas decimais', - 'default_view' => 'Visualização padrão', - 'threshold' => 'Quantos minutos de limite entre os pontos das métricas?', - 'visibility' => 'Visibilidade', - 'visibility_authenticated' => 'Visível para usuários autenticados', - 'visibility_public' => 'Visível para todos', - 'visibility_hidden' => 'Sempre oculto', - - 'points' => [ - 'value' => 'Valor', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Nome do site', - 'site-url' => 'URL do site', - 'display-graphs' => 'Exibir gráficos na página de status?', - 'about-this-page' => 'Sobre esta página', - 'days-of-incidents' => 'Quantos dias de incidentes para mostrar?', - 'time_before_refresh' => 'Frequência de atualização da página de status (em segundos)', - 'major_outage_rate' => 'Limite de indisponibilidade (em %)', - 'banner' => 'Imagem do banner', - 'banner-help' => 'Recomenda-se que você envie arquivos com até 930 pixels de largura', - 'subscribers' => 'Permitir que outras pessoas se cadastrem para notificações via e-mail?', - 'suppress_notifications_in_maintenance' => 'Não enviar notificações quando o incidente ocorrer durante o período de manutenção?', - 'skip_subscriber_verification' => 'Ignorar verificação de usuários? (Cuidado, você pode sofrer com spam)', - 'automatic_localization' => 'Localizar sua página de status de acordo com o idioma do visitante automaticamente?', - 'enable_external_dependencies' => 'Ativar dependências de terceiros (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Mostrar o fuso horário no qual a página de status está sendo executada', - 'only_disrupted_days' => 'Mostrar apenas os dias que contenham incidentes na linha do tempo?', - ], - 'analytics' => [ - 'analytics_google' => 'Código do Google Analytics', - 'analytics_gosquared' => 'Código do GoSquared Analytics', - 'analytics_piwik_url' => 'URL da sua instância Piwik', - 'analytics_piwik_siteid' => 'Id do site no Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Fuso horário do site', - 'site-locale' => 'Idioma do site', - 'date-format' => 'Formato da data', - 'incident-date-format' => 'Formato de Hora do Incidente', - ], - 'security' => [ - 'allowed-domains' => 'Domínios permitidos', - 'allowed-domains-help' => 'Separados por vírgula. O domínio definido acima é permitido automaticamente por padrão.', - 'always-authenticate' => 'Autenticar sempre', - 'always-authenticate-help' => 'Exigir login para ver qualquer página do sistema', - ], - 'stylesheet' => [ - 'custom-css' => 'Folha de estilos personalizada', - ], - 'theme' => [ - 'background-color' => 'Cor de fundo', - 'background-fills' => 'Preenchimento de Fundo (Componentes, Incidentes, Rodapé)', - 'banner-background-color' => 'Cor de Fundo do banner', - 'banner-padding' => 'Margem interna', - 'fullwidth-banner' => 'Habilitar banner com largura total?', - 'text-color' => 'Cor do Texto', - 'dashboard-login' => 'Mostrar botão para painel no rodapé?', - 'reds' => 'Vermelho (Usado para erros)', - 'blues' => 'Azul (usado para informações)', - 'greens' => 'Verde (Usado para sucesso)', - 'yellows' => 'Amarelo (Usado para alertas)', - 'oranges' => 'Laranga (Usado para avisos)', - 'metrics' => 'Preenchimento de Métricas', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Usuário', - 'email' => 'Email', - 'password' => 'Senha', - 'api-token' => 'Token da API', - 'api-token-help' => 'Regenerar a chave da API impedirá que aplicativos existentes acessem o Cachet.', - 'gravatar' => 'Altere a foto de perfil no Gravatar.', - 'user_level' => 'Nível do Utilizador', - 'levels' => [ - 'admin' => 'Administrador', - 'user' => 'Usuário', - ], - '2fa' => [ - 'help' => 'Ativando autenticação de dois fatores aumenta a segurança de sua conta. Você vai precisar baixar Google Authenticator ou um app similar em seu dispositivo móvel. Quando você entrar você será solicitado um token gerado pelo app.', - ], - 'team' => [ - 'description' => 'Convide membros da sua equipe através do endereço de e-mail aqui.', - 'email' => 'Endereço de e-mail dos membros da sua equipe', - ], - ], - - 'general' => [ - 'timezone' => 'Selecione o fuso horário', - ], - - 'seo' => [ - 'title' => 'Título para SEO', - 'description' => 'Descrição para SEO', - ], - - // Buttons - 'add' => 'Adicionar', - 'save' => 'Salvar', - 'update' => 'Atualizar', - 'create' => 'Criar', - 'edit' => 'Editar', - 'delete' => 'Apagar', - 'submit' => 'Enviar', - 'cancel' => 'Cancelar', - 'remove' => 'Remover', - 'invite' => 'Convite', - 'signup' => 'Cadastrar-se', - 'manage_updates' => 'Gerenciar atualizações', - - // Other - 'optional' => '* Opcional', -]; diff --git a/resources/lang/pt-BR/notifications.php b/resources/lang/pt-BR/notifications.php deleted file mode 100644 index a4fb2098..00000000 --- a/resources/lang/pt-BR/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Status do Componente Atualizado', - 'greeting' => 'O status de um componente foi atualizado!', - 'content' => 'O status de :name mudou de :old_status para :new_status.', - 'action' => 'Visualizar', - ], - 'slack' => [ - 'title' => 'Status do Componente Atualizado', - 'content' => 'O status de :name mudou de :old_status para :new_status.', - ], - 'sms' => [ - 'content' => 'O status de :name mudou de :old_status para :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Novo incidente reportado', - 'greeting' => 'Um novo incidente foi reportado em :app_name.', - 'content' => 'O Incidente :name foi reportado', - 'action' => 'Visualizar', - ], - 'slack' => [ - 'title' => 'Incidente :name reportado', - 'content' => 'Um novo incidente foi relatado em :app_name', - ], - 'sms' => [ - 'content' => 'Um novo incidente foi reportado em :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incidente Atualizado', - 'content' => ':name foi atualizado', - 'title' => ':name foi atualizado para :new_status', - 'action' => 'Visualizar', - ], - 'slack' => [ - 'title' => ':name atualizado', - 'content' => ':name foi atualizado para :new_status', - ], - 'sms' => [ - 'content' => 'Incidente :name foi atualizado', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'Novo Agendamento Criado', - 'content' => ':name foi agendado para :date', - 'title' => 'Uma nova manutenção agendada foi criada.', - 'action' => 'Visualizar', - ], - 'slack' => [ - 'title' => 'Novo Agendamento Criado!', - 'content' => ':name foi agendado para :date', - ], - 'sms' => [ - 'content' => ':name foi agendado para :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verifique a sua inscrição', - 'content' => 'Clique para verificar sua inscrição na página de status :app_name.', - 'title' => 'Verifique sua inscrição na página de status de :app_name.', - 'action' => 'Verifique', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Gerenciar inscrição', - 'content' => 'Clique para gerenciar sua inscrição na página de status de :app_name.', - 'title' => 'Clique para gerenciar sua inscrição na página de status de :app_name.', - 'action' => 'Gerenciar inscrição', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping do Cachet!', - 'content' => 'Esta é uma notificação de teste do Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Seu convite está aqui dentro...', - 'content' => 'Você foi convidado para fazer parte da página de status :app_name.', - 'title' => 'Você foi convidado para fazer parte da página de status :app_name.', - 'action' => 'Aceitar', - ], - ], - ], -]; diff --git a/resources/lang/pt-BR/pagination.php b/resources/lang/pt-BR/pagination.php deleted file mode 100644 index 2eccd922..00000000 --- a/resources/lang/pt-BR/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Anterior', - 'next' => 'Próxima', - -]; diff --git a/resources/lang/pt-BR/setup.php b/resources/lang/pt-BR/setup.php deleted file mode 100644 index 87c3265a..00000000 --- a/resources/lang/pt-BR/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Configuração', - 'title' => 'Configurar o Cachet', - 'service_details' => 'Detalhes do serviço', - 'env_setup' => 'Configurações do Ambiente', - 'status_page_setup' => 'Configuração da página de status', - 'show_support' => 'Exibir mensagem de "Feito por Cachet"?', - 'admin_account' => 'Conta de administrador', - 'complete_setup' => 'Configuração completa', - 'completed' => 'Cachet foi configurado com sucesso!', - 'finish_setup' => 'Ir para o painel de controle', -]; diff --git a/resources/lang/pt-BR/validation.php b/resources/lang/pt-BR/validation.php deleted file mode 100644 index 37dfb385..00000000 --- a/resources/lang/pt-BR/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'O campo :attribute deve ser aceito.', - 'active_url' => 'O campo :attribute não contém uma URL válida.', - 'after' => 'O campo :attribute deverá conter uma data posterior a :date.', - 'alpha' => 'O campo :attribute deverá conter apenas letras.', - 'alpha_dash' => 'O campo :attribute só pode conter letras, números, e hifens.', - 'alpha_num' => 'O campo :attribute só pode conter letras e números.', - 'array' => 'O campo :attribute deve ser um vetor.', - 'before' => 'O campo :attribute deverá conter uma data anterior a :date.', - 'between' => [ - 'numeric' => 'O campo :attribute deverá ter um valor entre :min - :max.', - 'file' => 'O campo :attribute deve estar entre :min e :max kilobytes.', - 'string' => 'O campo :attribute deve ter entre :min e :max caracteres.', - 'array' => 'O campo :attribute deve ter entre :min e :max itens.', - ], - 'boolean' => 'O campo :attribute deve ser verdadeiro ou falso.', - 'confirmed' => 'A confirmação do campo :attribute não corresponde.', - 'date' => 'O campo :attribute não é uma data válida.', - 'date_format' => 'O campo :attribute não corresponde ao formato :format.', - 'different' => 'O campo :attribute e :other devem ser diferentes.', - 'digits' => 'O campo :attribute deve ter :digits dígitos.', - 'digits_between' => 'O campo :attribute deve ter entre :min e :max dígitos.', - 'email' => 'O campo :attribute deve ser um endereço de email válido.', - 'exists' => 'O campo :attribute é inválido.', - 'distinct' => 'O campo :attribute tem um valor duplicado.', - 'filled' => 'O campo :attribute é obrigatório.', - 'image' => 'O :attribute deve ser uma imagem.', - 'in' => 'O campo :attribute é inválido.', - 'in_array' => 'O campo :attribute não existe em :other.', - 'integer' => 'O campo :attribute deve ser um número inteiro.', - 'ip' => 'O campo :attribute deve ser um endereço de IP válido.', - 'json' => 'O :attribute tem que ser uma string JSON válida.', - 'max' => [ - 'numeric' => 'O campo :attribute não deve ser maior que :max.', - 'file' => 'O campo :attribute não deve ser maior que :max kilobytes.', - 'string' => 'O campo :attribute não deve ser maior que :max caracteres.', - 'array' => 'A: atributo não pode ter mais de que :max itens.', - ], - 'mimes' => 'O campo :attribute deve ser um arquivo do tipo: :values.', - 'min' => [ - 'numeric' => 'O campo :attribute deve ter no mínimo :min.', - 'file' => 'O :attribute deve ter pelo menos :min kilobytes.', - 'string' => 'O campo :attribute deve ter no mínimo :min caracteres.', - 'array' => 'O campo :attribute deve ter no mínimo :min itens.', - ], - 'not_in' => 'O campo :attribute é inválido.', - 'numeric' => 'O campo :attribute deve ser um número.', - 'present' => 'O campo :attribute deve estar presente.', - 'regex' => 'O formato de :attribute é inválido.', - 'required' => 'O campo :attribute é obrigatório.', - 'required_if' => 'O campo :attribute é obrigatório quando :other é :value.', - 'required_unless' => 'O campo :attribute é obrigatório a não ser que :other esteja entre :values.', - 'required_with' => 'O campo :attribute é obrigatório quando :values está presente.', - 'required_with_all' => 'O campo :attribute é obrigatório quando :values está presente.', - 'required_without' => 'O campo :attribute é obrigatório quando :values não está presente.', - 'required_without_all' => 'O campo :attribute é obrigatório quando nenhum dos :values está presente.', - 'same' => 'O campo :attribute e :other devem ser iguais.', - 'size' => [ - 'numeric' => 'O campo :attribute deve ter :size caracteres.', - 'file' => 'O :attribute deve ter :size kilobytes.', - 'string' => 'O :attribute deve ter :size caracteres.', - 'array' => 'O campo :attribute deve ter :size itens.', - ], - 'string' => 'O campo :attribute deve ser uma string.', - 'timezone' => 'O :attribute deve ser uma zona válida.', - 'unique' => 'O :attribute já existe.', - 'url' => 'O formato de :attribute é inválido.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'Mensagem-personalizada', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/pt-PT/cachet.php b/resources/lang/pt-PT/cachet.php deleted file mode 100644 index 8c50a99d..00000000 --- a/resources/lang/pt-PT/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operacional', - 2 => 'Problemas de performance', - 3 => 'Indisponibilidade parcial', - 4 => 'Indisponibilidade total', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Nenhum incidente reportado', - 'past' => 'Incidentes anteriores', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', agendada :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigando', - 2 => 'Identificado', - 3 => 'Observando', - 4 => 'Resolvido', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Gerar nova chave de API', - 'revoke' => 'Revogar a chave de API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Ultima Hora', - 'hourly' => 'Últimas 12 horas', - 'weekly' => 'Semana', - 'monthly' => 'Mês', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscrever', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notificações', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscrever actualizações via email.', - 'subscribed' => 'Subscreveu as notificações por e-mail, por favor verifique o seu e-mail para confirmar a subscrição.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'A sua subscrição por e-mail foi confirmada. Obrigado!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Remover subscrição de e-mail.', - 'unsubscribed' => 'A sua subscrição de e-mail foi cancelada.', - 'failure' => 'Algo correu mal com a sua subscrição.', - 'already-subscribed' => 'Não posso subscrever :email pois já se encontra subscrito.', - ], - ], - - 'signup' => [ - 'title' => 'Registrar', - 'username' => 'Usuário', - 'email' => 'E-mail', - 'password' => 'Senha', - 'success' => 'A sua conta foi criada.', - 'failure' => 'Aconteceu algo de errado com a inscrição.', - ], - - 'system' => [ - 'update' => 'Existe uma versão mais recente do Cachet disponivel. Pode saber mais como actualizar aqui!', - ], - - // Modal - 'modal' => [ - 'close' => 'Fechar', - 'subscribe' => [ - 'title' => 'Subscrever a atualizações de componente', - 'body' => 'Introduza o seu endereço de email para subscrever a atualizações deste componente. Se já estiver subscrito então já recebe emails para este componente.', - 'button' => 'Subscrever', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'Sobre este Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Feed de Estado', - -]; diff --git a/resources/lang/pt-PT/dashboard.php b/resources/lang/pt-PT/dashboard.php deleted file mode 100644 index 353828fc..00000000 --- a/resources/lang/pt-PT/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Ocorrências', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Criar template', - 'incident-templates' => 'Template de incidentes', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Adicionar um incidente', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Editar um incidente', - 'success' => 'Incidente atualizado.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'O incidente foi apagado e não será mais mostrado na sua página de estado.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Template de incidentes', - 'add' => [ - 'title' => 'Criar um modelo de incidente', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Editar Modelo', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'O esboço de incidente foi apagado.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Agendada em :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componentes', - 'component_statuses' => 'Status do componente', - 'listed_group' => 'Agrupado em :name', - 'add' => [ - 'title' => 'Adicionar um Componente', - 'message' => 'Você deve adicionar um componente.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Editar um Componente', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'O componente foi apagado!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Grupo de componente|Grupos de componente', - 'no_components' => 'Deverá adicionar um grupo de componente.', - 'add' => [ - 'title' => 'Adicionar um grupo de componentes', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Editar um grupo de Componentes', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'O grupo de componentes foi apagado!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metricas', - 'add' => [ - 'title' => 'Criar uma métrica', - 'message' => 'Adicione uma métrica.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Editar uma métrica', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'A métrica foi apagada e não será mais mostrada na sua página de estado.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Assinantes', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verificado', - 'not_verified' => 'Não Verificado', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Adicionar um novo assinante', - 'success' => 'Assinante adicionado.', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Actualizar Assinante', - 'success' => 'Assinante atualizado.', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Equipe', - 'member' => 'Membro', - 'profile' => 'Perfil ', - 'description' => 'Membros da equipe serão capazes de adicionar, modificar & editar componentes e incidentes.', - 'add' => [ - 'title' => 'Adicionar um novo membro de equipa', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Atualizar Perfil', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Utilizador apagado.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Convidar um novo membro de equipa', - 'success' => 'Os utilizadores convidados.', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Configurações', - 'app-setup' => [ - 'app-setup' => 'Instalação do aplicativo', - 'images-only' => 'Somente imagens podem ser carregadas.', - 'too-big' => 'O arquivo que você carregou é muito grande. Envie uma imagem inferior à :size', - ], - 'analytics' => [ - 'analytics' => 'Analítica', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localização', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Segurança', - 'two-factor' => 'Utilizados sem factor de dupla autenticação', - ], - 'stylesheet' => [ - 'stylesheet' => 'Folha de estilo', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Configurações salvas.', - 'failure' => 'Não foi possível salvar as configurações.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Entrar', - 'logged_in' => 'Você está logado.', - 'welcome' => 'Bem-vindo de volta!', - 'two-factor' => 'Por favor insira o seu token.', - ], - - // Sidebar footer - 'help' => 'Ajuda', - 'status_page' => 'Página de status', - 'logout' => 'Sair', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notificações', - 'awesome' => 'Excelente.', - 'whoops' => 'Opa.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Bem vindo à sua página de estado!', - 'message' => 'Sua página de status está quase pronta! Tavez vocë queira checar essas configurações extras', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Criar componentes', - 'incident' => 'Criar incidentes', - 'customize' => 'Personalizar', - 'team' => 'Adicionar usuários', - 'api' => 'Gerar token de API', - 'two-factor' => 'Autenticação de 2 Factores', - ], - ], - -]; diff --git a/resources/lang/pt-PT/forms.php b/resources/lang/pt-PT/forms.php deleted file mode 100644 index 5184ca6e..00000000 --- a/resources/lang/pt-PT/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'E-mail', - 'username' => 'Usuário', - 'password' => 'Senha', - 'site_name' => 'Nome do site', - 'site_domain' => 'Domínio do site', - 'site_timezone' => 'Selecione o seu fuso horário', - 'site_locale' => 'Selecione seu idioma', - 'enable_google2fa' => 'Habilitar a autenticação de dois fatores do Google', - 'cache_driver' => 'Driver de Cache', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Driver de Sessão', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Nome de utilizador ou E-mail', - 'email' => 'E-mail', - 'password' => 'Senha', - '2fauth' => 'Código de autenticação', - 'invalid' => 'Nome de utilizador ou palavra-passe inválidos', - 'invalid-token' => 'Token inválido', - 'cookies' => 'Deverá activar cookies para efectuar autenticação.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nome', - 'status' => 'Estado', - 'component' => 'Componente', - 'component_status' => 'Component Status', - 'message' => 'Mensagem', - 'message-help' => 'Você também pode usar o Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notificar subscritores?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Visível ao Publico', - 'logged_in_only' => 'Apenas visível para users autenticados', - 'templates' => [ - 'name' => 'Nome', - 'template' => 'Template', - 'twig' => 'Esboços de incidentes podem fazer uso da linguagem de template Twig.', - ], - ], - - 'schedules' => [ - 'name' => 'Nome', - 'status' => 'Estado', - 'message' => 'Mensagem', - 'message-help' => 'Você também pode usar o Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Nome', - 'template' => 'Template', - 'twig' => 'Esboços de incidentes podem fazer uso da linguagem de template Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nome', - 'status' => 'Estado', - 'group' => 'Grupo', - 'description' => 'Descrição', - 'link' => 'Link', - 'tags' => 'Marcações', - 'tags-help' => 'Separados por vírgulas.', - 'enabled' => 'Componente activado?', - - 'groups' => [ - 'name' => 'Nome', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Nome', - 'description' => 'Descrição', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Grupo', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nome', - 'suffix' => 'Sufixo', - 'description' => 'Descrição', - 'description-help' => 'Você também pode usar o Markdown.', - 'display-chart' => 'Mostrar gráfico na página de estado?', - 'default-value' => 'Valor Padrão', - 'calc_type' => 'Cálculo de Métricas', - 'type_sum' => 'Soma', - 'type_avg' => 'Média', - 'places' => 'Casas Decimais', - 'default_view' => 'Vista por defeito', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Valor', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Nome do site', - 'site-url' => 'URL do site', - 'display-graphs' => 'Mostrar gráficos na página de estado?', - 'about-this-page' => 'Sobre esta página', - 'days-of-incidents' => 'Quantos dias de incidentes para mostrar?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Permitir que as pessoas subscrevam as notificações?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Código do Google Analytics', - 'analytics_gosquared' => 'Código do GoSquared Analytics', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'ID do site Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Fuso horário do site', - 'site-locale' => 'Idioma do site', - 'date-format' => 'Formato da Data', - 'incident-date-format' => 'Formato da Hora do Incidente', - ], - 'security' => [ - 'allowed-domains' => 'Domínios permitidos', - 'allowed-domains-help' => 'Separados por vírgula. O domínio definido acima é permitido automaticamente por padrão.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Preenchimento de Fundo (Componentes, Incidentes, Rodapé)', - 'banner-background-color' => 'Cor de Fundo do banner', - 'banner-padding' => 'Espaçamento do Banner', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Mostrar botão para painel no rodapé?', - 'reds' => 'Vermelho (Usado para erros)', - 'blues' => 'Azul (usado para informações)', - 'greens' => 'Verde (Usado para sucesso)', - 'yellows' => 'Amarelo (Usado para alertas)', - 'oranges' => 'Laranga (Usado para avisos)', - 'metrics' => 'Preenchimento de Métricas', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Usuário', - 'email' => 'E-mail', - 'password' => 'Senha', - 'api-token' => 'Token da API', - 'api-token-help' => 'Regenerar a chave da API impedirá que aplicativos existentes acessem o Cachet.', - 'gravatar' => 'Altere a foto de perfil no Gravatar.', - 'user_level' => 'Nível do Utilizador', - 'levels' => [ - 'admin' => 'Administrador', - 'user' => 'Utilizador', - ], - '2fa' => [ - 'help' => 'Ativando autenticação de dois fatores aumenta a segurança de sua conta. Você vai precisar baixar Google Authenticator ou um app similar em seu dispositivo móvel. Quando você entrar você será solicitado um token gerado pelo app.', - ], - 'team' => [ - 'description' => 'Convide membros da sua equipa através do endereço de e-mail aqui.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Adicionar', - 'save' => 'Salvar', - 'update' => 'Atualizar', - 'create' => 'Criar', - 'edit' => 'Editar', - 'delete' => 'Apagar', - 'submit' => 'Enviar', - 'cancel' => 'Cancelar', - 'remove' => 'Remover', - 'invite' => 'Convite', - 'signup' => 'Registrar', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Opcional', -]; diff --git a/resources/lang/pt-PT/notifications.php b/resources/lang/pt-PT/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/pt-PT/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/pt-PT/pagination.php b/resources/lang/pt-PT/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/pt-PT/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/pt-PT/setup.php b/resources/lang/pt-PT/setup.php deleted file mode 100644 index 85ea795e..00000000 --- a/resources/lang/pt-PT/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Configuração', - 'title' => 'Configurar o Cachet', - 'service_details' => 'Detalhes do serviço', - 'env_setup' => 'Configuração de Ambiente', - 'status_page_setup' => 'Configuração da página de status', - 'show_support' => 'Mostrar apoio ao Cachet?', - 'admin_account' => 'Conta de administrador', - 'complete_setup' => 'Configuração completa', - 'completed' => 'Cachet foi configurado com sucesso!', - 'finish_setup' => 'Ir para o painel de controle', -]; diff --git a/resources/lang/pt-PT/validation.php b/resources/lang/pt-PT/validation.php deleted file mode 100644 index c6f650c7..00000000 --- a/resources/lang/pt-PT/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'O :attribute tem de ser aceite.', - 'active_url' => 'O :attribute não é um URL válido.', - 'after' => 'O :attribute deverá ser uma data posterior a :date.', - 'alpha' => 'O campo :attribute deverá conter apenas letras.', - 'alpha_dash' => 'O :attribute deverá apenas conter letras, números e hífens.', - 'alpha_num' => 'O campo :attribute só pode conter letras e números.', - 'array' => 'O campo :attribute deve ser um vetor.', - 'before' => 'O campo :attribute deverá conter uma data anterior a :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'O campo :attribute deve ter entre :min e :max itens.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'O :attribute deve ser uma imagem.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'O :attribute tem que ser uma string JSON válida.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'A: atributo não pode ter mais de que :max itens.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'O :attribute deve ter pelo menos :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'O formato de :attribute é inválido.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'O campo :attribute é obrigatório a não ser que :other estiver em :values.', - 'required_with' => 'O campo :attribute é obrigatório quando :values está presente.', - 'required_with_all' => 'O campo :attribute é obrigatório quando :values está presente.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'O :attribute deve ter :size kilobytes.', - 'string' => 'O :attribute deve ter :size caracteres.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'O :attribute deve ser uma zona válida.', - 'unique' => 'O :attribute já existe.', - 'url' => 'O formato de :attribute é inválido.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'Mensagem-personalizada', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ro-RO/cachet.php b/resources/lang/ro-RO/cachet.php deleted file mode 100644 index 52c20a09..00000000 --- a/resources/lang/ro-RO/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Ultima actualizare :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operaţional', - 2 => 'Probleme de performanţă', - 3 => 'Ȋntrerupere parțială', - 4 => 'Ȋntrerupere gravă', - ], - 'group' => [ - 'other' => 'Alte Componente', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Nici un incident raportat', - 'past' => 'Incidente anterioare', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', programată: timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Sub investigație', - 2 => 'Identificat', - 3 => 'Sub observație', - 4 => 'Remediat', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerează cheia API', - 'revoke' => 'Revocă cheia API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Ultima Oră', - 'hourly' => 'Ultimele 12 ore', - 'weekly' => 'Săptămână', - 'monthly' => 'Lună', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Abonează-te', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notificări', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'Acum eşti abonat la toate actualizările.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'Acum eşti abonat la următoarele actualizări.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Abonează-te la actualizări prin email.', - 'subscribed' => 'Te-ai abonat la actualizări prin email, te rugăm să îți verifici adresa email și să confirmi abonarea.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Abonarea prin email a fost confirmată. Mulțumim!', - 'manage' => 'Gestionează-ţi abonările', - 'unsubscribe' => 'Dezabonare de la actualizări prin email.', - 'unsubscribed' => 'Actualizările prin email au fost anulate.', - 'failure' => 'Ceva nu a funcționat în legătură cu abonarea.', - 'already-subscribed' => 'Adresa :email nu poate fi folosită deoarece este deja abonată.', - ], - ], - - 'signup' => [ - 'title' => 'Înregistrează-te', - 'username' => 'Utilizator', - 'email' => 'Email', - 'password' => 'Parolă', - 'success' => 'Contul tău a fost creat.', - 'failure' => 'Ceva a mers greșit cu procesul de înregistrare.', - ], - - 'system' => [ - 'update' => 'O nouă versiune a Cachet este disponibilă. Află cum să o actualizezi aici!', - ], - - // Modal - 'modal' => [ - 'close' => 'Închide', - 'subscribe' => [ - 'title' => 'Abonează-te la actualizările componentei', - 'body' => 'Introdu adresa ta de email pentru a te abona la actualizări pentru această componentă. Dacă ești deja abonat, vei primi deja emailuri pentru această componentă.', - 'button' => 'Abonează-te', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Fii la curent cu cele mai recente actualizări ale serviciilor pentru :app.', - ], - ], - - // Other - 'home' => 'Acasă', - 'powered_by' => 'Cu sprijinul Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'Despre acest Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Feed Stare', - -]; diff --git a/resources/lang/ro-RO/dashboard.php b/resources/lang/ro-RO/dashboard.php deleted file mode 100644 index d5506b97..00000000 --- a/resources/lang/ro-RO/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Panou de control', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidente', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Crează şablon', - 'incident-templates' => 'Şabloane incident', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Raportează un incident', - 'success' => 'Incidentul a fost adăugat.', - 'failure' => 'A avut loc o eroare la adăugarea incidentului, vă rugăm să încercaţi din nou.', - ], - 'edit' => [ - 'title' => 'Editează un incident', - 'success' => 'Incidentul a fost actualizat.', - 'failure' => 'A avut loc o eroare la actualizarea incidentului, vă rugăm să încercaţi din nou.', - ], - 'delete' => [ - 'success' => 'Incidentul a fost şters şi nu va mai apărea pe pagina de status.', - 'failure' => 'Incidentul nu a putut fi şters, vă rugăm încercaţi din nou.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Şabloane incident', - 'add' => [ - 'title' => 'Adaugă un nou şablon pentru incident', - 'message' => 'Create your first incident template.', - 'success' => 'Noul şablon pentru incident a fost creat.', - 'failure' => 'Ceva nu a funcționat legat de șablonul incidentului.', - ], - 'edit' => [ - 'title' => 'Editare Şablon', - 'success' => 'Şablonul incidentului a fost actualizat.', - 'failure' => 'Ceva nu a funcționat legat de actualizarea șablonului incidentului', - ], - 'delete' => [ - 'success' => 'Şablonul incidentului a fost şters.', - 'failure' => 'Şablonul incidentului nu a putut fi şters, vă rugăm încercaţi din nou.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Programat la :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componente', - 'component_statuses' => 'Stările Componentei', - 'listed_group' => 'Grupat ca :name', - 'add' => [ - 'title' => 'Adăugați o componentă', - 'message' => 'Ar trebui să adăugați o componentă.', - 'success' => 'Componenta a fost creată.', - 'failure' => 'Ceva nu a funcționat legat de grupul de componente, vă rugăm încercați din nou.', - ], - 'edit' => [ - 'title' => 'Modificați o componentă', - 'success' => 'Componenta a fost actualizată.', - 'failure' => 'Ceva nu a funcționat legat de grupul de componente, vă rugăm încercați din nou.', - ], - 'delete' => [ - 'success' => 'Componenta a fost ștearsă!', - 'failure' => 'Component nu a putut fi ștearsă, vă rugăm încercați din nou.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Group de componente|Grupuri de componente', - 'no_components' => 'Ar trebui să adăugați un grup de componente.', - 'add' => [ - 'title' => 'Adăugați un grup de componente', - 'success' => 'Grupul de componente a fost adăugat.', - 'failure' => 'Ceva nu a funcționat legat de grupul de componente, vă rugăm încercați din nou.', - ], - 'edit' => [ - 'title' => 'Modificați un grup de componente', - 'success' => 'Grupul de componente a fost actualizat.', - 'failure' => 'Ceva nu a funcționat legat de grupul de componente, vă rugăm încercați din nou.', - ], - 'delete' => [ - 'success' => 'Grupul de componente a fost șters!', - 'failure' => 'Grupul de componente nu a putut fi șters, vă rugăm încercați din nou.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Măsurători', - 'add' => [ - 'title' => 'Adaugă o măsurătoare', - 'message' => 'Ar trebui să adaugi o măsurătoare.', - 'success' => 'Măsurătoarea a fost creată.', - 'failure' => 'Ceva nu a funcționat legat de măsurătoare, vă rugăm încercați din nou.', - ], - 'edit' => [ - 'title' => 'Modificați o măsurătoare', - 'success' => 'Măsurătoarea a fost actualizată.', - 'failure' => 'Ceva nu a funcționat legat de măsurătoare, vă rugăm încercați din nou.', - ], - 'delete' => [ - 'success' => 'Măsurătoarea a fost ștearsă și nu va mai apărea pe pagina dvs. de stare.', - 'failure' => 'Măsurătoarea nu a putut fi ștearsă, vă rugăm încercați din nou.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonați', - 'description' => 'Abonații vor primi actualizări prin email când incidente noi sunt adăugate sau componentele sunt actualizate.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verificat', - 'not_verified' => 'Neverificat', - 'subscriber' => ':email, abonat la :date', - 'no_subscriptions' => 'Ați fost abonat la toate actualizările', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Adaugă un nou abonat', - 'success' => 'Abonatul a fost adăugat!', - 'failure' => 'Ceva nu a funcționat legat de adăugarea abonatului, vă rugăm încercați din nou.', - 'help' => 'Introduceți fiecare abonat pe o nouă linie.', - ], - 'edit' => [ - 'title' => 'Actualizează abonatul', - 'success' => 'Abonatul a fost actualizat!', - 'failure' => 'Ceva nu a funcționat legat de modificarea abonatului, vă rugăm încercați din nou.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Echipa', - 'member' => 'Membru', - 'profile' => 'Profil', - 'description' => 'Membrii echipei vor avea posibilitatea să adauge, modifice & actualiza componentele și incidentele.', - 'add' => [ - 'title' => 'Adaugă un nou membru la echipă', - 'success' => 'Un nou membru a fost adăugat la echipă.', - 'failure' => 'Un nou membru nu a putut fi adăugat la echipă, vă rugăm încercați din nou.', - ], - 'edit' => [ - 'title' => 'Actualizați profilul', - 'success' => 'Profilul a fost actualizat.', - 'failure' => 'Ceva nu a funcționat legat de actualizarea profilului, vă rugăm încercați din nou.', - ], - 'delete' => [ - 'success' => 'Membrul echipei a fost șters și nu va mai avea acces la panoul de control!', - 'failure' => 'Un nou membru nu a putut fi adăugat la echipă, vă rugăm încercați din nou.', - ], - 'invite' => [ - 'title' => 'Invită un nou membru în echipă', - 'success' => 'Invitația a fost trimisă', - 'failure' => 'Invitația nu a putut fi trimisă, vă rugăm încercați din nou.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Setări', - 'app-setup' => [ - 'app-setup' => 'Instalarea Aplicației', - 'images-only' => 'Puteți urca doar imagini.', - 'too-big' => 'Fișierul urcat este prea mare. Urcați o imagine mai mică de :size', - ], - 'analytics' => [ - 'analytics' => 'Analize', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localizare', - ], - 'customization' => [ - 'customization' => 'Personalizare', - 'header' => 'Header HTML Personalizat', - 'footer' => 'Footer HTML Personalizat', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Securitate', - 'two-factor' => 'Utilizatori care nu folosesc autentificare two-factor', - ], - 'stylesheet' => [ - 'stylesheet' => 'Listă de stiluri', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Setările au fost salvate.', - 'failure' => 'Setările nu au putut fi salvate.', - ], - 'credits' => [ - 'credits' => 'Autori', - 'contributors' => 'Contribuitori', - 'license' => 'Cachet este un proiect open source cu licență BSD-3, realizat de Alt Three Services Limited.', - 'backers-title' => 'Susținători & Sponsori', - 'backers' => 'Dacă vreți să susțineți dezvoltarea proiectului, vizitați pagina de campanie Cachet Patreon.', - 'thank-you' => 'Mulțumim tuturor celor :count contribuitori.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Autentificare', - 'logged_in' => 'Ești autentificat.', - 'welcome' => 'Bine ai revenit!', - 'two-factor' => 'Te rog introdu token-ul tău.', - ], - - // Sidebar footer - 'help' => 'Ajutor', - 'status_page' => 'Pagina de Stare', - 'logout' => 'Deconectează-te', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notificări', - 'awesome' => 'Minunat.', - 'whoops' => 'Hopa.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Susțineți Cachet', - 'support_subtitle' => 'Vizitați pagina noastră pe Patreon!', - 'news' => 'Ultimele Știri', - 'news_subtitle' => 'Obţineţi cea mai recentă actualizare', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Bun venit pe noua pagină de Stare!', - 'message' => 'Pagina de stare este aproape gata! S-ar putea să doriți să configurați aceste setări suplimentare', - 'close' => 'Du-mă direct la panoul de control', - 'steps' => [ - 'component' => 'Creează componente', - 'incident' => 'Creează incidente', - 'customize' => 'Personalizează', - 'team' => 'Adaugă utilizatori', - 'api' => 'Generează un token pentru API', - 'two-factor' => 'Autentificare Two Factor', - ], - ], - -]; diff --git a/resources/lang/ro-RO/forms.php b/resources/lang/ro-RO/forms.php deleted file mode 100644 index e1422ff5..00000000 --- a/resources/lang/ro-RO/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Utilizator', - 'password' => 'Parolă', - 'site_name' => 'Numele site-ului', - 'site_domain' => 'Domeniu Site', - 'site_timezone' => 'Selectaţi fusul orar', - 'site_locale' => 'Selectaţi limba dumneavoastră', - 'enable_google2fa' => 'Activaţi Google Two Factor Authentication', - 'cache_driver' => 'Driver Cache', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Driver Sesiune', - 'mail_driver' => 'Driver Mail', - 'mail_host' => 'Gazdă Mail', - 'mail_address' => 'Adresa Email Expeditor', - 'mail_username' => 'Utilizator Mail', - 'mail_password' => 'Parolă Mail', - ], - - // Login form fields - 'login' => [ - 'login' => 'Utilizator sau Email', - 'email' => 'Email', - 'password' => 'Parolă', - '2fauth' => 'Cod de Autentificare', - 'invalid' => 'Utilizator sau parolă incorecte', - 'invalid-token' => 'Token incorect', - 'cookies' => 'Trebuie să activaţi cookies pentru a vă putea autentifica.', - 'rate-limit' => 'Limita de folosire a fost depăşită.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Nume', - 'status' => 'Stare', - 'component' => 'Componentă', - 'component_status' => 'Component Status', - 'message' => 'Mesaj', - 'message-help' => 'Puteţi utiliza şi Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notificaţi abonaţii?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Vizibilitatea Incidentului', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Vizibilă public', - 'logged_in_only' => 'Vizibilă numai pentru utilizatorii autentificaţi', - 'templates' => [ - 'name' => 'Nume', - 'template' => 'Șablon', - 'twig' => 'Şabloanele pentru incidente pot folosi limbajul Twig.', - ], - ], - - 'schedules' => [ - 'name' => 'Nume', - 'status' => 'Stare', - 'message' => 'Mesaj', - 'message-help' => 'Puteţi utiliza şi Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Nume', - 'template' => 'Șablon', - 'twig' => 'Şabloanele pentru incidente pot folosi limbajul Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Nume', - 'status' => 'Stare', - 'group' => 'Grup', - 'description' => 'Descriere', - 'link' => 'Legătură', - 'tags' => 'Etichete', - 'tags-help' => 'Separate prin virgulă.', - 'enabled' => 'Componentă activată?', - - 'groups' => [ - 'name' => 'Nume', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Întotdeauna extins', - 'collapsed' => 'Restrânge grupul implicit', - 'collapsed_incident' => 'Restrânge grupul, dar extinde în cazul în care sunt probleme', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Nume', - 'description' => 'Descriere', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Grup', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Nume', - 'suffix' => 'Sufix', - 'description' => 'Descriere', - 'description-help' => 'Puteţi utiliza şi Markdown.', - 'display-chart' => 'Afişaţi graficul pe pagina de stare?', - 'default-value' => 'Valoare implicită', - 'calc_type' => 'Calculul măsurătorilor', - 'type_sum' => 'Sumă', - 'type_avg' => 'Medie', - 'places' => 'Zecimale', - 'default_view' => 'Opţiunea implicită', - 'threshold' => 'Ce interval de timp(în minute) doriţi între măsurători?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Valoarea', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Numele site-ului', - 'site-url' => 'URL-ul site-ului', - 'display-graphs' => 'Afişaţi grafice pe pagina stare?', - 'about-this-page' => 'Despre această pagină', - 'days-of-incidents' => 'Câte zile de incidente vreţi să fie afişate?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Imagine Banner', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Permiteţi vizitatorilor să se aboneze la notificări prin email?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Schimbaţi automat limba pentru pagina de stare în funcţie de limba vizitatorului?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Cod Google Analytics', - 'analytics_gosquared' => 'Cod GoSquared Analytics', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Id site Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Fusul orar al site-ului', - 'site-locale' => 'Limba site-ului', - 'date-format' => 'Formatul datei', - 'incident-date-format' => 'Formatul de timp al incidentului', - ], - 'security' => [ - 'allowed-domains' => 'Domenii permise', - 'allowed-domains-help' => 'Separate prin virgulă. Domeniul configurat mai sus este automat permis implicit.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Personalizează Stilurile', - ], - 'theme' => [ - 'background-color' => 'Culoarea de fundal', - 'background-fills' => 'Gradient Fundal (componente, incidente, subsol)', - 'banner-background-color' => 'Culoarea de fundal pentru banner', - 'banner-padding' => 'Spaţiere banner', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Culoare Text', - 'dashboard-login' => 'Arătaţi butonul Dashboard în subsol?', - 'reds' => 'Roşu (utilizat pentru mesaje de eroare)', - 'blues' => 'Albastru (utilizat pentru mesaje de informare)', - 'greens' => 'Verde (folosit pentru mesaje de succes)', - 'yellows' => 'Galben (folosit pentru alerte)', - 'oranges' => 'Orange (folosit pentru mesaje de notificare)', - 'metrics' => 'Măsurători de umplere', - 'links' => 'Legături', - ], - ], - - 'user' => [ - 'username' => 'Utilizator', - 'email' => 'Email', - 'password' => 'Parolă', - 'api-token' => 'Token API', - 'api-token-help' => 'Regenerarea token-ului API va împiedica aplicaţiile existente să acceseze Cachet.', - 'gravatar' => 'Schimbaţi poza de profil pe Gravatar.', - 'user_level' => 'Nivel utilizator', - 'levels' => [ - 'admin' => 'Administator', - 'user' => 'Utilizator', - ], - '2fa' => [ - 'help' => 'Activând autentificarea two factor securitatea contului dvs. este mult îmbunătăţită. Trebuie să descărcaţi Google Authenticator sau o aplicaţie similară pe telefonul dvs. Când vă autentificaţi, vi se va cere token-ul generat de aplicaţie.', - ], - 'team' => [ - 'description' => 'Invităţi membrii echipei introducând aici adresele lor de email.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Adaugă', - 'save' => 'Salvează', - 'update' => 'Actualizează', - 'create' => 'Creează', - 'edit' => 'Modifică', - 'delete' => 'Şterge', - 'submit' => 'Trimite', - 'cancel' => 'Renunță', - 'remove' => 'Elimină', - 'invite' => 'Invită', - 'signup' => 'Înregistrează-te', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Opţional', -]; diff --git a/resources/lang/ro-RO/notifications.php b/resources/lang/ro-RO/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/ro-RO/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/ro-RO/pagination.php b/resources/lang/ro-RO/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/ro-RO/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/ro-RO/setup.php b/resources/lang/ro-RO/setup.php deleted file mode 100644 index 73337a74..00000000 --- a/resources/lang/ro-RO/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Instalare', - 'title' => 'Instalare Cachet', - 'service_details' => 'Detalii Serviciu', - 'env_setup' => 'Instalare Mediu', - 'status_page_setup' => 'Instalare Pagină de Status', - 'show_support' => 'Vrei să contribui la proiectul Cachet?', - 'admin_account' => 'Cont Administrator', - 'complete_setup' => 'Completaţi Instalarea', - 'completed' => 'Cachet a fost configurat cu succes!', - 'finish_setup' => 'Mergi la panoul de comenzi', -]; diff --git a/resources/lang/ro-RO/validation.php b/resources/lang/ro-RO/validation.php deleted file mode 100644 index d5082e01..00000000 --- a/resources/lang/ro-RO/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute trebuie să fie acceptat.', - 'active_url' => ':attribute nu este un URL valid.', - 'after' => ':attribute trebuie să fie o dată după :date.', - 'alpha' => ':attribute poate să conțină numai litere.', - 'alpha_dash' => ':attribute poate să conțină numai litere, cifre şi semne de punctuație.', - 'alpha_num' => ':attribute poate să conțină numai litere şi cifre.', - 'array' => ':attribute trebuie să fie o matrice.', - 'before' => ':attribute trebuie să fie o dată înainte de :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => ':attribute trebuie să aibă între :min şi :max elemente.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => ':attribute are o valoare duplicată.', - 'filled' => 'The :attribute field is required.', - 'image' => ':attribute trebuie să fie o imagine.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'Câmpul :attribute nu există în :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => ':attribute trebuie să fie un şir JSON valid.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => ':attribute nu poate avea mai mult de :max elemente.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => ':attribute trebuie să aibă cel puţin :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'Câmpul :attribute trebuie să fie prezent.', - 'regex' => 'Formatul :attribute nu este valid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'Câmpul :attribute este necesar dacă :other nu există în :values.', - 'required_with' => 'Câmpul :attribute este obligatoriu atunci când :values este prezent.', - 'required_with_all' => 'Câmpul :attribute este obligatoriu atunci când :values este prezent.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => ':attribute trebuie să aibă :size kilobytes.', - 'string' => ':attribute trebuie să aibă :size caractere.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => ':attribute trebuie să fie o zonă validă.', - 'unique' => ':attribute este deja folosit.', - 'url' => 'Formatul :attribute nu este valid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'mesaj-personalizat', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ro/cachet.php b/resources/lang/ro/cachet.php deleted file mode 100644 index 3b60a085..00000000 --- a/resources/lang/ro/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Operaţional', - 2 => 'Probleme de performanţă', - 3 => 'Ȋntrerupere parțială', - 4 => 'Ȋntrerupere gravă', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Incidente anterioare', - 'previous_week' => 'Săptămâna anterioară', - 'next_week' => 'Săptămâna viitoare', - 'scheduled' => 'Întreținere programată', - 'scheduled_at' => ', programată: timestamp', - 'status' => [ - 0 => 'Programată', // TODO: Hopefully remove this. - 1 => 'Sub investigație', - 2 => 'Identificat', - 3 => 'Sub observație', - 4 => 'Remediat', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'Regenerează cheia API', - 'revoke' => 'Revocă cheia API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Ultimele 12 ore', - 'weekly' => 'Săptămână', - 'monthly' => 'Lună', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Abonează-te pentru a primi cele mai recente actualizări', - 'button' => 'Abonează-te', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Abonează-te la actualizări prin email.', - 'subscribed' => 'Te-ai abonat la actualizări prin email, te rugăm să îți verifici adresa email și să confirmi abonarea.', - 'verified' => 'Abonarea prin email a fost confirmată. Mulțumim!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Dezabonare de la actualizări prin email.', - 'unsubscribed' => 'Actualizările prin email au fost anulate.', - 'failure' => 'Ceva nu a funcționat în legătură cu abonarea.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Abonează-te', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/ro/dashboard.php b/resources/lang/ro/dashboard.php deleted file mode 100644 index 59e4e591..00000000 --- a/resources/lang/ro/dashboard.php +++ /dev/null @@ -1,292 +0,0 @@ - 'Panou de control', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Incidente', - 'logged' => '{0} Nu sunt incidente, bravo! | Ai adăugat un incident. | Ai raportat :count incidente.', - 'incident-create-template' => 'Crează şablon', - 'incident-templates' => 'Şabloane incident', - 'updates' => '{0} Nicio actualizare|O actualizare|:count Actualizări', - 'add' => [ - 'title' => 'Raportează un incident', - 'success' => 'Incidentul a fost adăugat.', - 'failure' => 'A avut loc o eroare la adăugarea incidentului, vă rugăm să încercaţi din nou.', - ], - 'edit' => [ - 'title' => 'Editează un incident', - 'success' => 'Incidentul a fost actualizat.', - 'failure' => 'A avut loc o eroare la actualizarea incidentului, vă rugăm să încercaţi din nou.', - ], - 'delete' => [ - 'success' => 'Incidentul a fost şters şi nu va mai apărea pe pagina de status.', - 'failure' => 'Incidentul nu a putut fi şters, vă rugăm încercaţi din nou.', - ], - 'update' => [ - 'title' => 'Adaugă o nouă actualizare a incidentului', - 'subtitle' => 'Adaugă o actualizare la :incident', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Şabloane incident', - 'add' => [ - 'title' => 'Adaugă un nou şablon pentru incident', - 'message' => 'Trebuie să adaugi un şablon pentru incident.', - 'success' => 'Noul şablon pentru incident a fost creat.', - 'failure' => 'Ceva nu a funcționat legat de șablonul incidentului.', - ], - 'edit' => [ - 'title' => 'Editare Şablon', - 'success' => 'Şablonul incidentului a fost actualizat.', - 'failure' => 'Ceva nu a funcționat legat de actualizarea șablonului incidentului', - ], - 'delete' => [ - 'success' => 'Şablonul incidentului a fost şters.', - 'failure' => 'Şablonul incidentului nu a putut fi şters, vă rugăm încercaţi din nou.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Întreținere programată', - 'logged' => '{0} Nu există programări, bravo.|Ai o singură programare.|Ai :count programări.', - 'scheduled_at' => 'Programat la :timestamp', - 'add' => [ - 'title' => 'Adăugaţi Programare Mentenanţă', - 'success' => 'Programare adăugată.', - 'failure' => 'Ceva nu a funcționat legat de adăugarea unei programări, vă rugăm încercați din nou.', - ], - 'edit' => [ - 'title' => 'Modificați Programarea Mentenanței', - 'success' => 'Programarea a fost actualizată!', - 'failure' => 'Ceva nu a funcționat legat de modificarea programării, vă rugăm încercați din nou.', - ], - 'delete' => [ - 'success' => 'Programarea mentenanței a fost ștearsă și nu va mai apărea pe pagina dvs. de stare.', - 'failure' => 'Programarea mentenanței nu a putut fi ștearsă, vă rugăm încercați din nou.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Componente', - 'component_statuses' => 'Stările Componentei', - 'listed_group' => 'Grupat ca :name', - 'add' => [ - 'title' => 'Adăugați o componentă', - 'message' => 'Ar trebui să adăugați o componentă.', - 'success' => 'Componenta a fost creată.', - 'failure' => 'Ceva nu a funcționat legat de grupul de componente, vă rugăm încercați din nou.', - ], - 'edit' => [ - 'title' => 'Modificați o componentă', - 'success' => 'Componenta a fost actualizată.', - 'failure' => 'Ceva nu a funcționat legat de grupul de componente, vă rugăm încercați din nou.', - ], - 'delete' => [ - 'success' => 'Componenta a fost ștearsă!', - 'failure' => 'Component nu a putut fi ștearsă, vă rugăm încercați din nou.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Group de componente|Grupuri de componente', - 'no_components' => 'Ar trebui să adăugați un grup de componente.', - 'add' => [ - 'title' => 'Adăugați un grup de componente', - 'success' => 'Grupul de componente a fost adăugat.', - 'failure' => 'Ceva nu a funcționat legat de grupul de componente, vă rugăm încercați din nou.', - ], - 'edit' => [ - 'title' => 'Modificați un grup de componente', - 'success' => 'Grupul de componente a fost actualizat.', - 'failure' => 'Ceva nu a funcționat legat de grupul de componente, vă rugăm încercați din nou.', - ], - 'delete' => [ - 'success' => 'Grupul de componente a fost șters!', - 'failure' => 'Grupul de componente nu a putut fi șters, vă rugăm încercați din nou.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Măsurători', - 'add' => [ - 'title' => 'Adaugă o măsurătoare', - 'message' => 'Ar trebui să adaugi o măsurătoare.', - 'success' => 'Măsurătoarea a fost creată.', - 'failure' => 'Ceva nu a funcționat legat de măsurătoare, vă rugăm încercați din nou.', - ], - 'edit' => [ - 'title' => 'Modificați o măsurătoare', - 'success' => 'Măsurătoarea a fost actualizată.', - 'failure' => 'Ceva nu a funcționat legat de măsurătoare, vă rugăm încercați din nou.', - ], - 'delete' => [ - 'success' => 'Măsurătoarea a fost ștearsă și nu va mai apărea pe pagina dvs. de stare.', - 'failure' => 'Măsurătoarea nu a putut fi ștearsă, vă rugăm încercați din nou.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Abonați', - 'description' => 'Abonații vor primi actualizări prin email când incidente noi sunt adăugate sau componentele sunt actualizate.', - 'verified' => 'Verificat', - 'not_verified' => 'Neverificat', - 'subscriber' => ':email, abonat la :date', - 'no_subscriptions' => 'Ați fost abonat la toate actualizările', - 'add' => [ - 'title' => 'Adaugă un nou abonat', - 'success' => 'Abonatul a fost adăugat!', - 'failure' => 'Ceva nu a funcționat legat de adăugarea abonatului, vă rugăm încercați din nou.', - 'help' => 'Introduceți fiecare abonat pe o nouă linie.', - ], - 'edit' => [ - 'title' => 'Actualizează abonatul', - 'success' => 'Abonatul a fost actualizat!', - 'failure' => 'Ceva nu a funcționat legat de modificarea abonatului, vă rugăm încercați din nou.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Echipa', - 'member' => 'Membru', - 'profile' => 'Profil', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Adaugă un nou membru la echipă', - 'success' => 'Un nou membru a fost adăugat la echipă.', - 'failure' => 'Un nou membru nu a putut fi adăugat la echipă, vă rugăm încercați din nou.', - ], - 'edit' => [ - 'title' => 'Actualizați profilul', - 'success' => 'Profilul a fost actualizat.', - 'failure' => 'Ceva nu a funcționat legat de actualizarea profilului, vă rugăm încercați din nou.', - ], - 'delete' => [ - 'success' => 'Membrul echipei a fost șters și nu va mai avea acces la panoul de control!', - 'failure' => 'Un nou membru nu a putut fi adăugat la echipă, vă rugăm încercați din nou.', - ], - 'invite' => [ - 'title' => 'Invită un nou membru în echipă', - 'success' => 'Invitația a fost trimisă', - 'failure' => 'Invitația nu a putut fi trimisă, vă rugăm încercați din nou.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Setări', - 'app-setup' => [ - 'app-setup' => 'Instalarea Aplicației', - 'images-only' => 'Puteți urca doar imagini.', - 'too-big' => 'Fișierul urcat este prea mare. Urcați o imagine mai mică de :size', - ], - 'analytics' => [ - 'analytics' => 'Analize', - ], - 'log' => [ - 'log' => 'Jurnal', - ], - 'localization' => [ - 'localization' => 'Localizare', - ], - 'customization' => [ - 'customization' => 'Personalizare', - 'header' => 'Header HTML Personalizat', - 'footer' => 'Footer HTML Personalizat', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Securitate', - 'two-factor' => 'Utilizatori care nu folosesc autentificare two-factor', - ], - 'stylesheet' => [ - 'stylesheet' => 'Listă de stiluri', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Setările au fost salvate.', - 'failure' => 'Setările nu au putut fi salvate.', - ], - 'credits' => [ - 'credits' => 'Autori', - 'contributors' => 'Contribuitori', - 'license' => 'Cachet este un proiect open source cu licență BSD-3, realizat de Alt Three Services Limited.', - 'backers-title' => 'Susținători & Sponsori', - 'backers' => 'Dacă vreți să susțineți dezvoltarea proiectului, vizitați pagina de campanie Cachet Patreon.', - 'thank-you' => 'Mulțumim tuturor celor :count contribuitori.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Autentificare', - 'logged_in' => 'Ești autentificat.', - 'welcome' => 'Bine ai revenit!', - 'two-factor' => 'Te rog introdu token-ul tău.', - ], - - // Sidebar footer - 'help' => 'Ajutor', - 'status_page' => 'Pagina de Stare', - 'logout' => 'Deconectează-te', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notificări', - 'awesome' => 'Minunat.', - 'whoops' => 'Hopa.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Susțineți Cachet', - 'support_subtitle' => 'Vizitați pagina noastră pe Patreon!', - 'news' => 'Ultimele Știri', - 'news_subtitle' => 'Obţineţi cea mai recentă actualizare', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Bun venit pe noua pagină de Stare!', - 'message' => 'Pagina de stare este aproape gata! S-ar putea să doriți să configurați aceste setări suplimentare', - 'close' => 'Du-mă direct la panoul de control', - 'steps' => [ - 'component' => 'Creează componente', - 'incident' => 'Creează incidente', - 'customize' => 'Personalizează', - 'team' => 'Adaugă utilizatori', - 'api' => 'Generează un token pentru API', - 'two-factor' => 'Autentificare Two Factor', - ], - ], - -]; diff --git a/resources/lang/ro/forms.php b/resources/lang/ro/forms.php deleted file mode 100644 index e37dce2d..00000000 --- a/resources/lang/ro/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/ro/pagination.php b/resources/lang/ro/pagination.php deleted file mode 100644 index e6277229..00000000 --- a/resources/lang/ro/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Anterior', - 'next' => 'Următorul »', - -]; diff --git a/resources/lang/ro/setup.php b/resources/lang/ro/setup.php deleted file mode 100644 index 044cf2e2..00000000 --- a/resources/lang/ro/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/ro/validation.php b/resources/lang/ro/validation.php deleted file mode 100644 index 9bc9d48d..00000000 --- a/resources/lang/ro/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute trebuie să fie acceptat.', - 'active_url' => ':attribute nu este un URL valid.', - 'after' => ':attribute trebuie să fie o dată după :date.', - 'alpha' => ':attribute poate să conțină numai litere.', - 'alpha_dash' => ':attribute poate să conțină numai litere, cifre şi semne de punctuație.', - 'alpha_num' => ':attribute poate să conțină numai litere şi cifre.', - 'array' => ':attribute trebuie să fie o matrice.', - 'before' => ':attribute trebuie să fie o dată înainte de :date.', - 'between' => [ - 'numeric' => ':attribute trebuie să fie o dată înainte de :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'Formatul :attribute nu este valid.', - 'image' => ':attribute trebuie să fie o imagine.', - 'in' => ':attribute trebuie să fie o imagine.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'Formatul :attribute nu este valid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'Câmpul :attribute este obligatoriu atunci când :values este prezent.', - 'required_without' => 'Câmpul :attribute este obligatoriu atunci când :values este prezent.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute trebuie să fie o zonă validă.', - 'unique' => ':attribute este deja folosit.', - 'url' => 'Formatul :attribute nu este valid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'mesaj-personalizat', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ru-RU/cachet.php b/resources/lang/ru-RU/cachet.php deleted file mode 100644 index 08dcc521..00000000 --- a/resources/lang/ru-RU/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Последнее обновление :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Работает', - 2 => 'Падение производительности', - 3 => 'Перебои в работе', - 4 => 'Значительные неполадки', - ], - 'group' => [ - 'other' => 'Другие компоненты', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Без происшествий', - 'past' => 'Последние инциденты', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', запланированы :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Проводим анализ проблемы', - 2 => 'Причина определена', - 3 => 'Под наблюдением', - 4 => 'Исправлено', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Сгенерировать ключ API заново', - 'revoke' => 'Отозвать ключ API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Последний час', - 'hourly' => 'Последние 12 часов', - 'weekly' => 'Неделя', - 'monthly' => 'Месяц', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Подписаться', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Уведомления', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'Вы подписаны на все изменения.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'Вы подписаны на следующие изменения.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Подписка на рассылку об изменениях.', - 'subscribed' => 'Вы подписались на рассылку email уведомлений. Проверьте вашу почту, чтобы подтвердить подписку.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Ваша подписка подтверждена. Спасибо!', - 'manage' => 'Управление подпиской', - 'unsubscribe' => 'Отписаться от рассылки.', - 'unsubscribed' => 'Ваша подписка отменена.', - 'failure' => 'Произошла ошибка при подписке на рассылку.', - 'already-subscribed' => 'Невозможно оформить подписку на :email, т.к. на него уже оформлена подписка.', - ], - ], - - 'signup' => [ - 'title' => 'Зарегистрироваться', - 'username' => 'Имя пользователя', - 'email' => 'Email', - 'password' => 'Пароль', - 'success' => 'Ваша учетная запись создана.', - 'failure' => 'Что-то пошло не так при регистрации.', - ], - - 'system' => [ - 'update' => 'Доступна новая версия Cachet. Инструкции по обновлению можно получить здесь!', - ], - - // Modal - 'modal' => [ - 'close' => 'Закрыть', - 'subscribe' => [ - 'title' => 'Подписка на изменения статуса компонента', - 'body' => 'Введите ваш email, чтобы подписаться на изменения статуса этого компонента. Если вы уже подписаны на обновления, значит сообщения об этом компоненте вам должны приходить.', - 'button' => 'Подписаться', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Будьте в курсе последних новостей о состоянии сервиса от :app.', - ], - ], - - // Other - 'home' => 'Главный экран', - 'powered_by' => 'Работает на Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'Об этом сайте', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Статусная лента', - -]; diff --git a/resources/lang/ru-RU/dashboard.php b/resources/lang/ru-RU/dashboard.php deleted file mode 100644 index 09489190..00000000 --- a/resources/lang/ru-RU/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Панель управления', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Инциденты', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Создать шаблон', - 'incident-templates' => 'Шаблоны инцидентов', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Добавить инцидент', - 'success' => 'Инцидент добавлен.', - 'failure' => 'При добавлении инцидента произошла ошибка, пожалуйста, попробуйте ещё раз.', - ], - 'edit' => [ - 'title' => 'Изменить инцидент', - 'success' => 'Инцидент обновлен.', - 'failure' => 'При редактировании инцидента произошла ошибка, пожалуйста, попробуйте ещё раз.', - ], - 'delete' => [ - 'success' => 'Инцидент удалён и больше не будет отображаться на статусной странице.', - 'failure' => 'Инцидент не может быть уделён, пожалуйста, попробуйте ещё раз.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Шаблоны инцидентов', - 'add' => [ - 'title' => 'Создать шаблон инцидента', - 'message' => 'Create your first incident template.', - 'success' => 'Новый шаблон инцидента создан.', - 'failure' => 'С шаблоном инцидента что-то не так.', - ], - 'edit' => [ - 'title' => 'Изменить шаблон', - 'success' => 'Шаблон инцидента обновлён.', - 'failure' => 'Что-то пошло не так при изменении шаблона инцидента', - ], - 'delete' => [ - 'success' => 'Шаблон инцидента удалён.', - 'failure' => 'Шаблон инцидента не может быть уделён, пожалуйста, попробуйте ещё раз.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Запланировано на :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Компоненты', - 'component_statuses' => ' Статусы компонентов', - 'listed_group' => 'В группе :name', - 'add' => [ - 'title' => 'Добавить компонент', - 'message' => 'Необходимо добавить компонент.', - 'success' => 'Компонент создан.', - 'failure' => 'Что-то не так с компонентом, пожалуйста, повторите ещё раз.', - ], - 'edit' => [ - 'title' => 'Изменить компонент', - 'success' => 'Компонент обновлён.', - 'failure' => 'Что-то не так с компонентом, пожалуйста, повторите ещё раз.', - ], - 'delete' => [ - 'success' => 'Компонент удалён!', - 'failure' => 'Компонент не может быть удалён, пожалуйста, повторите ещё раз.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Группа компонентов|Группы компонентов', - 'no_components' => 'Необходимо добавить группу компонентов.', - 'add' => [ - 'title' => 'Добавить группу компонентов', - 'success' => 'Группа компонентов добавлена.', - 'failure' => 'Что-то не так с компонентом, пожалуйста, повторите ещё раз.', - ], - 'edit' => [ - 'title' => 'Изменить группу компонентов', - 'success' => 'Группа компонентов обновлена.', - 'failure' => 'Что-то не так с компонентом, пожалуйста, повторите ещё раз.', - ], - 'delete' => [ - 'success' => 'Группа компонентов удалена!', - 'failure' => 'Группа компонентов не может быть удалена, пожалуйста, повторите ещё раз.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Метрики', - 'add' => [ - 'title' => 'Создать метрику', - 'message' => 'Необходимо добавить метрику.', - 'success' => 'Метрика создана.', - 'failure' => 'С метрикой что-то пошло не так, пожалуйста, повторите ещё раз.', - ], - 'edit' => [ - 'title' => 'Изменить метрику', - 'success' => 'Метрика обновлена.', - 'failure' => 'С метрикой что-то пошло не так, пожалуйста, повторите ещё раз.', - ], - 'delete' => [ - 'success' => 'Метрика удалена и больше не будет отображаться на статусной странице.', - 'failure' => 'Метрика не может быть удалена, пожалуйста, повторите ещё раз.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Подписчики', - 'description' => 'Подписчики будут получать уведомления по электронной почте при добавлении инцидентов или изменении статусов компонентов.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Подтверждён', - 'not_verified' => 'Не подтверждён', - 'subscriber' => ':email, подписан :date', - 'no_subscriptions' => 'Подписан на все обновления', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Добавить нового подписчика', - 'success' => 'Подписчик добавлен!', - 'failure' => 'Что-то пошло не так при добавлении подписчика, пожалуйста, повторите ещё раз.', - 'help' => 'Введите каждого подписчика с новой строки.', - ], - 'edit' => [ - 'title' => 'Обновить подписчика', - 'success' => 'Подписчик обновлён!', - 'failure' => 'Что-то пошло не так при изменении подписчика, пожалуйста, попробуйте ещё раз.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Команда', - 'member' => 'Участник', - 'profile' => 'Профиль', - 'description' => 'Участники команды смогут добавлять и изменять компоненты и инциденты.', - 'add' => [ - 'title' => 'Добавить нового участника команды', - 'success' => 'Участник команды добавлен.', - 'failure' => 'Участник команды не может быть добавлен, пожалуйста, повторите ещё раз.', - ], - 'edit' => [ - 'title' => 'Обновить профиль', - 'success' => 'Профиль обновлён.', - 'failure' => 'Что-то пошло не так при обновлении профиля, пожалуйста, повторите ещё раз.', - ], - 'delete' => [ - 'success' => 'Участник команды удалён и больше не сможет получить доступ к панели управления!', - 'failure' => 'Участник команды не может быть добавлен, пожалуйста, повторите ещё раз.', - ], - 'invite' => [ - 'title' => 'Пригласить нового участника команды', - 'success' => 'Приглашение отправлено', - 'failure' => 'Не получается отправить приглашение, пожалуйста, попробуйте ещё раз.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Настройки', - 'app-setup' => [ - 'app-setup' => 'Настройки приложения', - 'images-only' => 'Можно загружать только изображения.', - 'too-big' => 'Загруженный вами файл слишком большой. Загрузите картинку меньше чем :size', - ], - 'analytics' => [ - 'analytics' => 'Аналитика', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Региональные настройки', - ], - 'customization' => [ - 'customization' => 'Пользовательские настройки', - 'header' => 'Верхний колонтитул HTML', - 'footer' => 'Нижний колонтитул HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Безопасность', - 'two-factor' => 'Пользователи без двухфакторной аутентификации', - ], - 'stylesheet' => [ - 'stylesheet' => 'Таблица стилей', - ], - 'theme' => [ - 'theme' => 'Тема', - ], - 'edit' => [ - 'success' => 'Настройки сохранены.', - 'failure' => 'Не удаётся сохранить настройки.', - ], - 'credits' => [ - 'credits' => 'Разработчики', - 'contributors' => 'Контрибьюторы', - 'license' => 'Cachet - это проект с открытым исходным кодом по лицензии BSD-3, разрабатываемый компанией Alt Three Services Limited.', - 'backers-title' => 'Партнеры и спонсоры', - 'backers' => 'Если вы хотите поддержать будущую разработку, присоединяйтесь к сбору средств в Cachet Patreon.', - 'thank-you' => 'Спасибо всем нашим :count контрибьюторам.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Войти', - 'logged_in' => 'Вы вошли в систему.', - 'welcome' => 'С возвращением!', - 'two-factor' => 'Пожалуйста, введите ваш токен.', - ], - - // Sidebar footer - 'help' => 'Помощь', - 'status_page' => 'Статусная страница', - 'logout' => 'Выйти', - - // Notifications - 'notifications' => [ - 'notifications' => 'Уведомления', - 'awesome' => 'Отлично.', - 'whoops' => 'Ой-ой!', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Поддержать Cachet', - 'support_subtitle' => 'Посетите нашу страницу на Patreon!', - 'news' => 'Последние новости', - 'news_subtitle' => 'Проверить обновления', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Добро пожаловать на вашу статусную страницу!', - 'message' => 'Ваша статусная страница почти готова! Возможно, вы захотите настроить дополнительные параметры', - 'close' => 'Закрыть и перейти к панели управления', - 'steps' => [ - 'component' => 'Создание компонентов', - 'incident' => 'Создание инцидентов', - 'customize' => 'Настройка', - 'team' => 'Добавление пользователей', - 'api' => 'Создание API токена', - 'two-factor' => 'Двухфакторная аутентификация', - ], - ], - -]; diff --git a/resources/lang/ru-RU/forms.php b/resources/lang/ru-RU/forms.php deleted file mode 100644 index 20cf46eb..00000000 --- a/resources/lang/ru-RU/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Имя пользователя', - 'password' => 'Пароль', - 'site_name' => 'Название сайта', - 'site_domain' => 'Домен сайта', - 'site_timezone' => 'Часовой пояс', - 'site_locale' => 'Язык интерфейса', - 'enable_google2fa' => 'Включить двухфакторную аутентификацию Google', - 'cache_driver' => 'Хранилище кеша', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Хранилище сессий', - 'mail_driver' => 'Водитель почты', - 'mail_host' => 'Почтовый хост', - 'mail_address' => 'Почту с адреса', - 'mail_username' => 'Имя пользователя электронной почты', - 'mail_password' => 'Почтовый пароль', - ], - - // Login form fields - 'login' => [ - 'login' => 'Имя пользователя или Email', - 'email' => 'Email', - 'password' => 'Пароль', - '2fauth' => 'Код аутентификации', - 'invalid' => 'Неверное имя пользователя или пароль', - 'invalid-token' => 'Неверный токен', - 'cookies' => 'Необходимо включить cookies для входа.', - 'rate-limit' => 'Превышено ограничение скорости.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Название', - 'status' => 'Статус', - 'component' => 'Компонент', - 'component_status' => 'Component Status', - 'message' => 'Сообщение', - 'message-help' => 'Вы также можете использовать Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Уведомить подписчиков?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Отображение инцидента', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Доступен публично', - 'logged_in_only' => 'Показывать только авторизованным пользователям', - 'templates' => [ - 'name' => 'Название', - 'template' => 'Шаблон', - 'twig' => 'В шаблонах инцидентов можно использовать Twig.', - ], - ], - - 'schedules' => [ - 'name' => 'Название', - 'status' => 'Статус', - 'message' => 'Сообщение', - 'message-help' => 'Вы также можете использовать Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Название', - 'template' => 'Шаблон', - 'twig' => 'В шаблонах инцидентов можно использовать Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Название', - 'status' => 'Статус', - 'group' => 'Группа', - 'description' => 'Описание', - 'link' => 'Ссылка', - 'tags' => 'Теги', - 'tags-help' => 'Разделяйте запятыми.', - 'enabled' => 'Компонент включен?', - - 'groups' => [ - 'name' => 'Название', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Всегда развернута', - 'collapsed' => 'Свернута по умолчанию', - 'collapsed_incident' => 'Свернута, но разворачивать, если есть проблема', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Название', - 'description' => 'Описание', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Группа', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Название', - 'suffix' => 'Суффикс', - 'description' => 'Описание', - 'description-help' => 'Вы также можете использовать Markdown.', - 'display-chart' => 'Отображать график на статусной странице?', - 'default-value' => 'Значение по умолчанию', - 'calc_type' => 'Расчет метрики', - 'type_sum' => 'Сумма', - 'type_avg' => 'Среднее значение', - 'places' => 'Количество цифр после точки', - 'default_view' => 'Представление по умолчанию', - 'threshold' => 'Количество минут между снятием метрик?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Значение', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Название сайта', - 'site-url' => 'URL сайта', - 'display-graphs' => 'Отображать графики на статусной странице?', - 'about-this-page' => 'Об этой странице', - 'days-of-incidents' => 'За сколько дней показывать инциденты?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Картинка-баннер', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Разрешить посетителям подписываться на email-уведомления?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Автоматически переводить вашу статусную страницу на язык посетителя?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Код Google Analytics', - 'analytics_gosquared' => 'Код GoSquared Analytics', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Идентификатор сайта в Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Часовой пояс сайта', - 'site-locale' => 'Язык сайта', - 'date-format' => 'Формат даты', - 'incident-date-format' => 'Формат даты и времени для инцидента', - ], - 'security' => [ - 'allowed-domains' => 'Разрешённые домены', - 'allowed-domains-help' => 'Разделяйте запятыми. Домен, установленный в настройках, разрешен по умолчанию.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Код пользовательских стилей (CSS)', - ], - 'theme' => [ - 'background-color' => 'Цвет фона', - 'background-fills' => 'Заливка фона (компоненты, инциденты, «подвал»)', - 'banner-background-color' => 'Цвет фона для баннера', - 'banner-padding' => 'Отступы баннера', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Цвет текста', - 'dashboard-login' => 'Отображать кнопку панели управления в «подвале»?', - 'reds' => 'Красный (для ошибок)', - 'blues' => 'Синий (для информации)', - 'greens' => 'Зеленый (для сообщений о выполнении)', - 'yellows' => 'Желтый (для тревожных сообщений)', - 'oranges' => 'Оранжевый (для предупреждений)', - 'metrics' => 'Заливка метрик', - 'links' => 'Ссылки', - ], - ], - - 'user' => [ - 'username' => 'Имя пользователя', - 'email' => 'Email', - 'password' => 'Пароль', - 'api-token' => 'API токен', - 'api-token-help' => 'Обновление вашего API токена заблокирует существующим приложениям доступ в Cachet. Вам будет необходимо прописать в них новый токен.', - 'gravatar' => 'Изменить своё изображение на Gravatar.', - 'user_level' => 'Тип пользователя', - 'levels' => [ - 'admin' => 'Администратор', - 'user' => 'Пользователь', - ], - '2fa' => [ - 'help' => 'Включение двухфакторной аутентификации увеличивает безопасность вашей учетной записи. Вам понадобится скачать Google Authenticator или аналогичное приложение на свой смартфон. Для входа в панель управления, вам понадобится код, выданный этим приложением.', - ], - 'team' => [ - 'description' => 'Пригласите своих коллег введя их адреса электронной почты.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Добавить', - 'save' => 'Сохранить', - 'update' => 'Обновить', - 'create' => 'Создать', - 'edit' => 'Изменить', - 'delete' => 'Удалить', - 'submit' => 'Отправить', - 'cancel' => 'Отменить', - 'remove' => 'Удалить', - 'invite' => 'Пригласить', - 'signup' => 'Зарегистрироваться', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Необязательно', -]; diff --git a/resources/lang/ru-RU/notifications.php b/resources/lang/ru-RU/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/ru-RU/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/ru-RU/pagination.php b/resources/lang/ru-RU/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/ru-RU/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/ru-RU/setup.php b/resources/lang/ru-RU/setup.php deleted file mode 100644 index 4a80ab49..00000000 --- a/resources/lang/ru-RU/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Установка', - 'title' => 'Установка Cachet', - 'service_details' => 'Параметры сервиса', - 'env_setup' => 'Настройка окружения', - 'status_page_setup' => 'Настройки статусной страницы', - 'show_support' => 'Показывать, что статусная страница создана на Cachet?', - 'admin_account' => 'Учетная запись администратора', - 'complete_setup' => 'Завершить установку', - 'completed' => 'Вы успешно настроили Cachet!', - 'finish_setup' => 'Перейти в панель управления', -]; diff --git a/resources/lang/ru-RU/validation.php b/resources/lang/ru-RU/validation.php deleted file mode 100644 index 851af2f8..00000000 --- a/resources/lang/ru-RU/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute должен быть принят.', - 'active_url' => ':attribute не является допустимым URL.', - 'after' => ':attribute должно быть датой после :date.', - 'alpha' => ':attribute может содержать только буквы.', - 'alpha_dash' => ':attribute может содержать только латинские буквы, цифры и дефис.', - 'alpha_num' => ':attribute может содержать только буквы и цифры.', - 'array' => ': attribute должно быть массивом.', - 'before' => ':attribute должно быть датой до :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => ':attribute должно содержать от :min до :max элементов.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'Поле :attribute содержит дублирующееся значение.', - 'filled' => 'The :attribute field is required.', - 'image' => ':attribute должно быть изображением.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'Поле :attribute не существует в :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => ':attribute должен быть в JSON формате.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => ':attribute не может содержать больше чем :max элементов.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => ':attribute должно быть не меньше :min килобайт.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'Поле :attribute должно быть заполнено.', - 'regex' => 'Неправильный формат :attribute.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'Поле :attribute обязательно, если :other не из :values.', - 'required_with' => 'Поле :attribute является обязательным, если все :values заполнены.', - 'required_with_all' => 'Поле :attribute является обязательным, если все :values заполнены.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => ':attribute должно быть объемом :size килобайт.', - 'string' => 'Поле :attribute должно содержать :size символов.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => ':attribute должно быть корректным часовым поясом.', - 'unique' => ':attribute уже занято.', - 'url' => 'Неправильный формат :attribute.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'настраиваемое сообщение', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/ru/cachet.php b/resources/lang/ru/cachet.php deleted file mode 100644 index 870cbc95..00000000 --- a/resources/lang/ru/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Последнее обновление :timestamp', - 'status' => [ - 1 => 'Работает', - 2 => 'Падение производительности', - 3 => 'Перебои в работе', - 4 => 'Значительные неполадки', - ], - 'group' => [ - 'other' => 'Другие компоненты', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Без происшествий', - 'past' => 'Последние инциденты', - 'previous_week' => 'Предыдущая неделя', - 'next_week' => 'Следующая неделя', - 'scheduled' => 'Плановые работы', - 'scheduled_at' => ', запланированы :timestamp', - 'status' => [ - 0 => 'Запланировано', // TODO: Hopefully remove this. - 1 => 'Проводим анализ проблемы', - 2 => 'Причина определена', - 3 => 'Под наблюдением', - 4 => 'Исправлено', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Система работает исправно|[2,Inf] Все системы работают исправно', - 'bad' => '[0,1] В системе есть неполадки|[2,Inf] В некоторых системах есть неполадки', - 'major' => '[0,1] Система не работает|[2,Inf] Некоторые системы не работают', - ], - - 'api' => [ - 'regenerate' => 'Сгенерировать ключ API заново', - 'revoke' => 'Отозвать ключ API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Последний час', - 'hourly' => 'Последние 12 часов', - 'weekly' => 'Неделя', - 'monthly' => 'Месяц', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Подпишитесь, чтобы получать информацию об изменениях', - 'button' => 'Подписаться', - 'manage' => [ - 'no_subscriptions' => 'Вы подписаны на все изменения.', - 'my_subscriptions' => 'Вы подписаны на следующие изменения.', - ], - 'email' => [ - 'subscribe' => 'Подписка на рассылку об изменениях.', - 'subscribed' => 'Вы подписались на рассылку email уведомлений. Проверьте вашу почту, чтобы подтвердить подписку.', - 'verified' => 'Ваша подписка подтверждена. Спасибо!', - 'manage' => 'Управление подпиской', - 'unsubscribe' => 'Отписаться от рассылки.', - 'unsubscribed' => 'Ваша подписка отменена.', - 'failure' => 'Произошла ошибка при подписке на рассылку.', - 'already-subscribed' => 'Невозможно оформить подписку на :email, т.к. на него уже оформлена подписка.', - 'verify' => [ - 'text' => "Пожалуйста, подтвердите подписку на уведомления от «:app_name».\n:link", - 'html' => '

Пожалуйста, подтвердите подписку на уведомления от «:app_name»

', - 'button' => 'Подтвердить подписку', - ], - 'maintenance' => [ - 'subject' => '[Обслуживание по расписанию] :name', - ], - 'incident' => [ - 'subject' => '[Новый инцидент] :status: :name', - ], - 'component' => [ - 'subject' => 'Статус компонента изменился', - 'text' => 'Изменился статус компонента :component_name. Текущее состояние компонента: :component_human_status.\nБлагодарим за внимание, :app_name', - 'html' => '

Изменился статус компонента :component_name. Текущее состояние компонента: :component_human_status.

Благодарим за внимание, :app_name

', - 'tooltip-title' => 'Подписаться на уведомления по компоненту :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "Вас пригласили в команду управления статусной страницей :app_name, перейдите по следующей ссылке, чтобы зарегистрироваться.\n:link\nБлагодарим за внимание, :app_name", - 'html' => '

Вас пригласили в команду управления статусной страницей :app_name, перейдите по следующей ссылке, чтобы зарегистрироваться.

:link

Благодарим за внимание, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Зарегистрироваться', - 'username' => 'Имя пользователя', - 'email' => 'Email', - 'password' => 'Пароль', - 'success' => 'Ваша учетная запись создана.', - 'failure' => 'Что-то пошло не так при регистрации.', - ], - - 'system' => [ - 'update' => 'Доступна новая версия Cachet. Инструкции по обновлению можно получить здесь!', - ], - - // Modal - 'modal' => [ - 'close' => 'Закрыть', - 'subscribe' => [ - 'title' => 'Подписка на изменения статуса компонента', - 'body' => 'Введите ваш email, чтобы подписаться на изменения статуса этого компонента. Если вы уже подписаны на обновления, значит сообщения об этом компоненте вам должны приходить.', - 'button' => 'Подписаться', - ], - ], - - // Other - 'home' => 'Главный экран', - 'description' => 'Будьте в курсе последних новостей о состоянии сервиса от :app.', - 'powered_by' => 'Работает на Cachet.', - 'about_this_site' => 'Об этом сайте', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Статусная лента', - -]; diff --git a/resources/lang/ru/dashboard.php b/resources/lang/ru/dashboard.php deleted file mode 100644 index 44fd4adb..00000000 --- a/resources/lang/ru/dashboard.php +++ /dev/null @@ -1,292 +0,0 @@ - 'Панель управления', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Инциденты', - 'logged' => '{0} Нет инцидентов, отличная работа!|У вас зарегистрирован :count инцидент.|У вас зарегистрировано :count инцидента.|У вас зарегистрировано :count инцидентов.', - 'incident-create-template' => 'Создать шаблон', - 'incident-templates' => 'Шаблоны инцидентов', - 'updates' => '{0} Zero Updates|One Update|:count Updates', - 'add' => [ - 'title' => 'Добавить инцидент', - 'success' => 'Инцидент добавлен.', - 'failure' => 'При добавлении инцидента произошла ошибка, пожалуйста, попробуйте ещё раз.', - ], - 'edit' => [ - 'title' => 'Изменить инцидент', - 'success' => 'Инцидент обновлен.', - 'failure' => 'При редактировании инцидента произошла ошибка, пожалуйста, попробуйте ещё раз.', - ], - 'delete' => [ - 'success' => 'Инцидент удалён и больше не будет отображаться на статусной странице.', - 'failure' => 'Инцидент не может быть уделён, пожалуйста, попробуйте ещё раз.', - ], - 'update' => [ - 'title' => 'Create new incident update', - 'subtitle' => 'Добавить обновление к :incident', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Шаблоны инцидентов', - 'add' => [ - 'title' => 'Создать шаблон инцидента', - 'message' => 'Необходимо добавить шаблон инцидента.', - 'success' => 'Новый шаблон инцидента создан.', - 'failure' => 'С шаблоном инцидента что-то не так.', - ], - 'edit' => [ - 'title' => 'Изменить шаблон', - 'success' => 'Шаблон инцидента обновлён.', - 'failure' => 'Что-то пошло не так при изменении шаблона инцидента', - ], - 'delete' => [ - 'success' => 'Шаблон инцидента удалён.', - 'failure' => 'Шаблон инцидента не может быть уделён, пожалуйста, попробуйте ещё раз.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Плановые работы', - 'logged' => '{0} Ни одного планового обслуживания не зарегистрировано.|У вас зарегистрировано :count плановое обслуживание.|У вас зарегистрировано :count плановых обслуживания.|У вас зарегистрировано :count плановых обслуживаний.', - 'scheduled_at' => 'Запланировано на :timestamp', - 'add' => [ - 'title' => 'Добавить плановые работы', - 'success' => 'Плановые работы добавлены.', - 'failure' => 'Что-то пошло не так при добавлении плановых работ, пожалуйста, попробуйте ещё раз.', - ], - 'edit' => [ - 'title' => 'Изменить плановые работы', - 'success' => 'Плановые работы обновлены!', - 'failure' => 'Что-то пошло не так при изменении плановых работ, пожалуйста, попробуйте ещё раз.', - ], - 'delete' => [ - 'success' => 'Плановые работы удалены и больше не будут отображаться на статусной странице.', - 'failure' => 'Плановые работы не могут быть уделены, пожалуйста, попробуйте ещё раз.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Компоненты', - 'component_statuses' => ' Статусы компонентов', - 'listed_group' => 'В группе :name', - 'add' => [ - 'title' => 'Добавить компонент', - 'message' => 'Необходимо добавить компонент.', - 'success' => 'Компонент создан.', - 'failure' => 'Что-то не так с компонентом, пожалуйста, повторите ещё раз.', - ], - 'edit' => [ - 'title' => 'Изменить компонент', - 'success' => 'Компонент обновлён.', - 'failure' => 'Что-то не так с компонентом, пожалуйста, повторите ещё раз.', - ], - 'delete' => [ - 'success' => 'Компонент удалён!', - 'failure' => 'Компонент не может быть удалён, пожалуйста, повторите ещё раз.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Группа компонентов|Группы компонентов', - 'no_components' => 'Необходимо добавить группу компонентов.', - 'add' => [ - 'title' => 'Добавить группу компонентов', - 'success' => 'Группа компонентов добавлена.', - 'failure' => 'Что-то не так с компонентом, пожалуйста, повторите ещё раз.', - ], - 'edit' => [ - 'title' => 'Изменить группу компонентов', - 'success' => 'Группа компонентов обновлена.', - 'failure' => 'Что-то не так с компонентом, пожалуйста, повторите ещё раз.', - ], - 'delete' => [ - 'success' => 'Группа компонентов удалена!', - 'failure' => 'Группа компонентов не может быть удалена, пожалуйста, повторите ещё раз.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Метрики', - 'add' => [ - 'title' => 'Создать метрику', - 'message' => 'Необходимо добавить метрику.', - 'success' => 'Метрика создана.', - 'failure' => 'С метрикой что-то пошло не так, пожалуйста, повторите ещё раз.', - ], - 'edit' => [ - 'title' => 'Изменить метрику', - 'success' => 'Метрика обновлена.', - 'failure' => 'С метрикой что-то пошло не так, пожалуйста, повторите ещё раз.', - ], - 'delete' => [ - 'success' => 'Метрика удалена и больше не будет отображаться на статусной странице.', - 'failure' => 'Метрика не может быть удалена, пожалуйста, повторите ещё раз.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Подписчики', - 'description' => 'Подписчики будут получать уведомления по электронной почте при добавлении инцидентов или изменении статусов компонентов.', - 'verified' => 'Подтверждён', - 'not_verified' => 'Не подтверждён', - 'subscriber' => ':email, подписан :date', - 'no_subscriptions' => 'Подписан на все обновления', - 'add' => [ - 'title' => 'Добавить нового подписчика', - 'success' => 'Подписчик добавлен!', - 'failure' => 'Что-то пошло не так при добавлении подписчика, пожалуйста, повторите ещё раз.', - 'help' => 'Введите каждого подписчика с новой строки.', - ], - 'edit' => [ - 'title' => 'Обновить подписчика', - 'success' => 'Подписчик обновлён!', - 'failure' => 'Что-то пошло не так при изменении подписчика, пожалуйста, попробуйте ещё раз.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Команда', - 'member' => 'Участник', - 'profile' => 'Профиль', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Добавить нового участника команды', - 'success' => 'Участник команды добавлен.', - 'failure' => 'Участник команды не может быть добавлен, пожалуйста, повторите ещё раз.', - ], - 'edit' => [ - 'title' => 'Обновить профиль', - 'success' => 'Профиль обновлён.', - 'failure' => 'Что-то пошло не так при обновлении профиля, пожалуйста, повторите ещё раз.', - ], - 'delete' => [ - 'success' => 'Участник команды удалён и больше не сможет получить доступ к панели управления!', - 'failure' => 'Участник команды не может быть добавлен, пожалуйста, повторите ещё раз.', - ], - 'invite' => [ - 'title' => 'Пригласить нового участника команды', - 'success' => 'Приглашение отправлено', - 'failure' => 'Не получается отправить приглашение, пожалуйста, попробуйте ещё раз.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Настройки', - 'app-setup' => [ - 'app-setup' => 'Настройки приложения', - 'images-only' => 'Можно загружать только изображения.', - 'too-big' => 'Загруженный вами файл слишком большой. Загрузите картинку меньше чем :size', - ], - 'analytics' => [ - 'analytics' => 'Аналитика', - ], - 'log' => [ - 'log' => 'Журнал', - ], - 'localization' => [ - 'localization' => 'Региональные настройки', - ], - 'customization' => [ - 'customization' => 'Пользовательские настройки', - 'header' => 'Верхний колонтитул HTML', - 'footer' => 'Нижний колонтитул HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Безопасность', - 'two-factor' => 'Пользователи без двухфакторной аутентификации', - ], - 'stylesheet' => [ - 'stylesheet' => 'Таблица стилей', - ], - 'theme' => [ - 'theme' => 'Тема', - ], - 'edit' => [ - 'success' => 'Настройки сохранены.', - 'failure' => 'Не удаётся сохранить настройки.', - ], - 'credits' => [ - 'credits' => 'Разработчики', - 'contributors' => 'Контрибьюторы', - 'license' => 'Cachet - это проект с открытым исходным кодом по лицензии BSD-3, разрабатываемый компанией Alt Three Services Limited.', - 'backers-title' => 'Партнеры и спонсоры', - 'backers' => 'Если вы хотите поддержать будущую разработку, присоединяйтесь к сбору средств в Cachet Patreon.', - 'thank-you' => 'Спасибо всем нашим :count контрибьюторам.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Войти', - 'logged_in' => 'Вы вошли в систему.', - 'welcome' => 'С возвращением!', - 'two-factor' => 'Пожалуйста, введите ваш токен.', - ], - - // Sidebar footer - 'help' => 'Помощь', - 'status_page' => 'Статусная страница', - 'logout' => 'Выйти', - - // Notifications - 'notifications' => [ - 'notifications' => 'Уведомления', - 'awesome' => 'Отлично.', - 'whoops' => 'Ой-ой!', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Поддержать Cachet', - 'support_subtitle' => 'Посетите нашу страницу на Patreon!', - 'news' => 'Последние новости', - 'news_subtitle' => 'Проверить обновления', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Добро пожаловать на вашу статусную страницу!', - 'message' => 'Ваша статусная страница почти готова! Возможно, вы захотите настроить дополнительные параметры', - 'close' => 'Закрыть и перейти к панели управления', - 'steps' => [ - 'component' => 'Создание компонентов', - 'incident' => 'Создание инцидентов', - 'customize' => 'Настройка', - 'team' => 'Добавление пользователей', - 'api' => 'Создание API токена', - 'two-factor' => 'Двухфакторная аутентификация', - ], - ], - -]; diff --git a/resources/lang/ru/forms.php b/resources/lang/ru/forms.php deleted file mode 100644 index f8db14d2..00000000 --- a/resources/lang/ru/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Имя пользователя', - 'password' => 'Пароль', - 'site_name' => 'Название сайта', - 'site_domain' => 'Домен сайта', - 'site_timezone' => 'Часовой пояс', - 'site_locale' => 'Язык интерфейса', - 'enable_google2fa' => 'Включить двухфакторную аутентификацию Google', - 'cache_driver' => 'Хранилище кеша', - 'session_driver' => 'Хранилище сессий', - ], - - // Login form fields - 'login' => [ - 'login' => 'Имя пользователя или Email', - 'email' => 'Email', - 'password' => 'Пароль', - '2fauth' => 'Код аутентификации', - 'invalid' => 'Неверное имя пользователя или пароль', - 'invalid-token' => 'Неверный токен', - 'cookies' => 'Необходимо включить cookies для входа.', - 'rate-limit' => 'Ограничение скорости превышено.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Название', - 'status' => 'Статус', - 'component' => 'Компонент', - 'message' => 'Сообщение', - 'message-help' => 'Вы также можете использовать Markdown.', - 'scheduled_at' => 'Когда запланированы работы?', - 'incident_time' => 'Когда произошел инцидент?', - 'notify_subscribers' => 'Уведомить подписчиков?', - 'visibility' => 'Отображение инцидента', - 'public' => 'Доступен публично', - 'logged_in_only' => 'Показывать только авторизованным пользователям', - 'templates' => [ - 'name' => 'Название', - 'template' => 'Шаблон', - 'twig' => 'В шаблонах инцидентов можно использовать Twig.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Название', - 'status' => 'Статус', - 'group' => 'Группа', - 'description' => 'Описание', - 'link' => 'Ссылка', - 'tags' => 'Теги', - 'tags-help' => 'Разделяйте запятыми.', - 'enabled' => 'Компонент включен?', - - 'groups' => [ - 'name' => 'Название', - 'collapsing' => 'Отображение группы', - 'visible' => 'Всегда развернута', - 'collapsed' => 'Свернута по умолчанию', - 'collapsed_incident' => 'Свернута, но разворачивать, если есть проблема', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Название', - 'suffix' => 'Суффикс', - 'description' => 'Описание', - 'description-help' => 'Вы также можете использовать Markdown.', - 'display-chart' => 'Отображать график на статусной странице?', - 'default-value' => 'Значение по умолчанию', - 'calc_type' => 'Расчет метрики', - 'type_sum' => 'Сумма', - 'type_avg' => 'Среднее значение', - 'places' => 'Количество цифр после точки', - 'default_view' => 'Представление по умолчанию', - 'threshold' => 'Количество минут между метрическими точками?', - - 'points' => [ - 'value' => 'Значение', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Название сайта', - 'site-url' => 'URL сайта', - 'display-graphs' => 'Отображать графики на статусной странице?', - 'about-this-page' => 'Об этой странице', - 'days-of-incidents' => 'За сколько дней показывать инциденты?', - 'banner' => 'Картинка-баннер', - 'banner-help' => 'Рекомендуется загружать картинки не больше 930 пикс. в ширину.', - 'subscribers' => 'Разрешить посетителям подписываться на email-уведомления?', - 'automatic_localization' => 'Автоматически переводить сайт на язык посетителя?', - ], - 'analytics' => [ - 'analytics_google' => 'Код Google Analytics', - 'analytics_gosquared' => 'Код GoSquared Analytics', - 'analytics_piwik_url' => 'URL Piwik сайта (без http(s)://)', - 'analytics_piwik_siteid' => 'Идентификатор сайта в Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Часовой пояс сайта', - 'site-locale' => 'Язык сайта', - 'date-format' => 'Формат даты', - 'incident-date-format' => 'Формат даты и времени для инцидента', - ], - 'security' => [ - 'allowed-domains' => 'Разрешённые домены', - 'allowed-domains-help' => 'Разделяйте запятыми. Домен, установленный в настройках, разрешен по умолчанию.', - ], - 'stylesheet' => [ - 'custom-css' => 'Код пользовательских стилей (CSS)', - ], - 'theme' => [ - 'background-color' => 'Цвет фона', - 'background-fills' => 'Заливка фона (компоненты, инциденты, «подвал»)', - 'banner-background-color' => 'Цвет фона для баннера', - 'banner-padding' => 'Отступы баннера', - 'fullwidth-banner' => 'Включить баннер на всю ширину?', - 'text-color' => 'Цвет текста', - 'dashboard-login' => 'Отображать кнопку панели управления в «подвале»?', - 'reds' => 'Красный (для ошибок)', - 'blues' => 'Синий (для информации)', - 'greens' => 'Зеленый (для сообщений о выполнении)', - 'yellows' => 'Желтый (для тревожных сообщений)', - 'oranges' => 'Оранжевый (для предупреждений)', - 'metrics' => 'Заливка метрик', - 'links' => 'Ссылки', - ], - ], - - 'user' => [ - 'username' => 'Имя пользователя', - 'email' => 'E-mail', - 'password' => 'Пароль', - 'api-token' => 'API токен', - 'api-token-help' => 'Обновление вашего API токена заблокирует существующим приложениям доступ в Cachet. Вам будет необходимо прописать в них новый токен.', - 'gravatar' => 'Изменить своё изображение на Gravatar.', - 'user_level' => 'Тип пользователя', - 'levels' => [ - 'admin' => 'Администратор', - 'user' => 'Пользователь', - ], - '2fa' => [ - 'help' => 'Включение двухфакторной аутентификации увеличивает безопасность вашей учетной записи. Вам понадобится скачать Google Authenticator или аналогичное приложение на свой смартфон. Для входа в панель управления, вам понадобится код, выданный этим приложением.', - ], - 'team' => [ - 'description' => 'Пригласите своих коллег введя их адреса электронной почты.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Добавить', - 'save' => 'Сохранить', - 'update' => 'Обновить', - 'create' => 'Создать', - 'edit' => 'Изменить', - 'delete' => 'Удалить', - 'submit' => 'Отправить', - 'cancel' => 'Отменить', - 'remove' => 'Удалить', - 'invite' => 'Пригласить', - 'signup' => 'Зарегистрироваться', - - // Other - 'optional' => '* Необязательно', -]; diff --git a/resources/lang/ru/pagination.php b/resources/lang/ru/pagination.php deleted file mode 100644 index 06a7e1a0..00000000 --- a/resources/lang/ru/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Назад', - 'next' => 'Вперёд »', - -]; diff --git a/resources/lang/ru/setup.php b/resources/lang/ru/setup.php deleted file mode 100644 index 4a80ab49..00000000 --- a/resources/lang/ru/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Установка', - 'title' => 'Установка Cachet', - 'service_details' => 'Параметры сервиса', - 'env_setup' => 'Настройка окружения', - 'status_page_setup' => 'Настройки статусной страницы', - 'show_support' => 'Показывать, что статусная страница создана на Cachet?', - 'admin_account' => 'Учетная запись администратора', - 'complete_setup' => 'Завершить установку', - 'completed' => 'Вы успешно настроили Cachet!', - 'finish_setup' => 'Перейти в панель управления', -]; diff --git a/resources/lang/ru/validation.php b/resources/lang/ru/validation.php deleted file mode 100644 index 40217a4d..00000000 --- a/resources/lang/ru/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute должен быть принят.', - 'active_url' => ':attribute не является допустимым URL.', - 'after' => ':attribute должно быть датой после :date.', - 'alpha' => ':attribute может содержать только буквы.', - 'alpha_dash' => ':attribute может содержать только латинские буквы, цифры и дефис.', - 'alpha_num' => ':attribute может содержать только буквы и цифры.', - 'array' => ': attribute должно быть массивом.', - 'before' => ':attribute должно быть датой до :date.', - 'between' => [ - 'numeric' => ':attribute должно быть датой до :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => ':attribute должно содержать от :min до :max элементов.', - ], - 'boolean' => ':attribute должно содержать от :min до :max элементов.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'Неправильный формат :attribute.', - 'image' => ':attribute должно быть изображением.', - 'in' => ':attribute должно быть изображением.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => ':attribute должен быть в JSON формате.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => ':attribute не может содержать больше чем :max элементов.', - ], - 'mimes' => ':attribute не может содержать больше чем :max элементов.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => ':attribute должно быть не меньше :min килобайт.', - 'string' => ':attribute должно быть не меньше :min килобайт.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'Неправильный формат :attribute.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'Поле :attribute обязательно, если :other не из :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'Поле :attribute является обязательным, если все :values заполнены.', - 'required_without' => 'Поле :attribute является обязательным, если все :values заполнены.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => ':attribute должно быть объемом :size килобайт.', - 'string' => 'Поле :attribute должно содержать :size символов.', - 'array' => 'Поле :attribute должно содержать :size символов.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute должно быть корректным часовым поясом.', - 'unique' => ':attribute уже занято.', - 'url' => 'Неправильный формат :attribute.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'настраиваемое сообщение', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/sl-SI/cachet.php b/resources/lang/sl-SI/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/sl-SI/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/sl-SI/dashboard.php b/resources/lang/sl-SI/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/sl-SI/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/sl-SI/forms.php b/resources/lang/sl-SI/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/sl-SI/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/sl-SI/notifications.php b/resources/lang/sl-SI/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/sl-SI/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/sl-SI/pagination.php b/resources/lang/sl-SI/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/sl-SI/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/sl-SI/setup.php b/resources/lang/sl-SI/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/sl-SI/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/sl-SI/validation.php b/resources/lang/sl-SI/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/sl-SI/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/sq-AL/cachet.php b/resources/lang/sq-AL/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/sq-AL/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/sq-AL/dashboard.php b/resources/lang/sq-AL/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/sq-AL/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/sq-AL/forms.php b/resources/lang/sq-AL/forms.php deleted file mode 100644 index a8b9c348..00000000 --- a/resources/lang/sq-AL/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => ' Përditëso', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/sq-AL/notifications.php b/resources/lang/sq-AL/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/sq-AL/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/sq-AL/pagination.php b/resources/lang/sq-AL/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/sq-AL/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/sq-AL/setup.php b/resources/lang/sq-AL/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/sq-AL/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/sq-AL/validation.php b/resources/lang/sq-AL/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/sq-AL/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/sq/cachet.php b/resources/lang/sq/cachet.php deleted file mode 100644 index ad61104f..00000000 --- a/resources/lang/sq/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Funksionim', - 2 => 'Çështje të performancës', - 3 => 'Ndërprerje e pjesshëm', - 4 => 'Ndërprerje Kryesore', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'previous_week' => 'Previous', - 'next_week' => 'Next', - 'scheduled' => 'Mirëmbajtje planifikuar', - 'scheduled_at' => ', planifiko :timestamp', - 'status' => [ - 0 => 'Planifikuar', // TODO: Hopefully remove this. - 1 => 'Hetimin', - 2 => 'Identifikohet', - 3 => 'Shikim', - 4 => 'Rregulluar', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'Rikrijo çelësin e API-t', - 'revoke' => 'Refuzo çelësin e API-t', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to get the most recent updates', - 'button' => 'Subscribe', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Emri i përdoruesit', - 'email' => 'Email', - 'password' => 'Fjalëkalimi', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/sq/dashboard.php b/resources/lang/sq/dashboard.php deleted file mode 100644 index f5b1642f..00000000 --- a/resources/lang/sq/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Paneli', - - // Incidents - 'incidents' => [ - 'title' => 'Incidenti & Planifikuar', - 'incidents' => 'Incidents', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Mirëmbajtje planifikuar', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'Add users', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/sq/forms.php b/resources/lang/sq/forms.php deleted file mode 100644 index 6b01fff9..00000000 --- a/resources/lang/sq/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Emri i përdoruesit', - 'password' => 'Fjalëkalimi', - 'site_name' => 'Emri Faqes', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Zgjidh orën e zonës tuaj', - 'site_locale' => 'Zgjidhni gjuhën tuaj', - 'enable_google2fa' => 'Aktivizo Dy-Faktorin e identifikimit te Google', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Fjalëkalimi', - '2fauth' => 'Kodi i identifikimit', - 'invalid' => 'Invalid username or password', - 'invalid-token' => '"Token" i pavlefshëm', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Emri', - 'status' => 'Statusi', - 'component' => 'Përbërësit', - 'message' => 'Mesazhi', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Emri', - 'template' => 'Paraqitja', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Emri', - 'status' => 'Statusi', - 'group' => 'Group', - 'description' => 'Përshkrimi', - 'link' => 'Nderlidhja', - 'tags' => 'Etiketa', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Emri', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Emri', - 'suffix' => 'Suffix', - 'description' => 'Përshkrimi', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Emri Faqes', - 'site-url' => 'Nderlidhja Faqes', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'Rreth faqes', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Emri i përdoruesit', - 'email' => 'Email', - 'password' => 'Fjalëkalimi', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Shto', - 'save' => 'Ruaj', - 'update' => ' Përditëso', - 'create' => 'Krijo', - 'edit' => 'Ndrysho', - 'delete' => 'Fshije', - 'submit' => 'Parashtroje', - 'cancel' => 'Anulloje', - 'remove' => 'Hiqe', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/sq/pagination.php b/resources/lang/sq/pagination.php deleted file mode 100644 index 67af4811..00000000 --- a/resources/lang/sq/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Mbrapa', - 'next' => 'Para »', - -]; diff --git a/resources/lang/sq/setup.php b/resources/lang/sq/setup.php deleted file mode 100644 index 3c9d7e95..00000000 --- a/resources/lang/sq/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Instalimi', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator i llogarisë', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Shko tek paneli', -]; diff --git a/resources/lang/sq/validation.php b/resources/lang/sq/validation.php deleted file mode 100644 index fb52c2f3..00000000 --- a/resources/lang/sq/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/sr/cachet.php b/resources/lang/sr/cachet.php deleted file mode 100644 index 0e018fef..00000000 --- a/resources/lang/sr/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'previous_week' => 'Previous', - 'next_week' => 'Next', - 'scheduled' => 'Scheduled Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'status' => [ - 0 => 'Scheduled', // TODO: Hopefully remove this. - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to get the most recent updates', - 'button' => 'Subscribe', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/sr/dashboard.php b/resources/lang/sr/dashboard.php deleted file mode 100644 index 0078d64f..00000000 --- a/resources/lang/sr/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Dashboard', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Incidents', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Scheduled Maintenance', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'Add users', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/sr/forms.php b/resources/lang/sr/forms.php deleted file mode 100644 index e37dce2d..00000000 --- a/resources/lang/sr/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/sr/pagination.php b/resources/lang/sr/pagination.php deleted file mode 100644 index add1092a..00000000 --- a/resources/lang/sr/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/resources/lang/sr/setup.php b/resources/lang/sr/setup.php deleted file mode 100644 index 044cf2e2..00000000 --- a/resources/lang/sr/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/sr/validation.php b/resources/lang/sr/validation.php deleted file mode 100644 index fb52c2f3..00000000 --- a/resources/lang/sr/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/sv-SE/cachet.php b/resources/lang/sv-SE/cachet.php deleted file mode 100644 index 319cdda9..00000000 --- a/resources/lang/sv-SE/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Senast uppdaterad :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Fungerar', - 2 => 'Prestandaproblem', - 3 => 'Mindre avbrott', - 4 => 'Större avbrott', - ], - 'group' => [ - 'other' => 'Andra komponenter', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'Inga händelser har rapporterats', - 'past' => 'Tidigare händelser', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Planerat underhåll', - 'scheduled_at' => ', schemalagda: tidsstämpel', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Undersöker', - 2 => 'Identifierat', - 3 => 'Bevakar', - 4 => 'Löst', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Generera om API-nyckel', - 'revoke' => 'Återkalla API-nyckel', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Senaste timmen', - 'hourly' => 'Senaste 12 timmarna', - 'weekly' => 'Vecka', - 'monthly' => 'Månad', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Prenumerera', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifieringar', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'Du prenumererar på alla uppdateringar.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'Du prenumererar på följande uppdateringar.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Prenumerera på epost-uppdateringar.', - 'subscribed' => 'Du har börjat prenumerera på e-postmeddelanden, vänligen kontrollera din e-post för att bekräfta din prenumeration.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Din epost-prenumeration har bekräftats. Tack!', - 'manage' => 'Hantera din prenumeration', - 'unsubscribe' => 'Avbeställ epost-uppdateringar.', - 'unsubscribed' => 'Din epost-prenumeration har avbrutits.', - 'failure' => 'Något blev fel med prenumerationen.', - 'already-subscribed' => 'Kan inte skapa en prenumeration för :email eftersom den redan prenumererar.', - ], - ], - - 'signup' => [ - 'title' => 'Registrera dig', - 'username' => 'Användarnamn', - 'email' => 'E-post', - 'password' => 'Lösenord', - 'success' => 'Ditt konto har skapats.', - 'failure' => 'Något gick fel med registreringen.', - ], - - 'system' => [ - 'update' => 'Det finns en nyare version av Cachet tillgänglig. Du kan lära dig hur du uppdaterar här!', - ], - - // Modal - 'modal' => [ - 'close' => 'Stäng', - 'subscribe' => [ - 'title' => 'Prenumerera på komponentuppdateringar', - 'body' => 'Fyll i din epostadress för att prenumerera på uppdateringar för den här kompontenten. Om du redan prenumererar, får du redan epost om den här komponenten.', - 'button' => 'Prenumerera', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Håll dig uppdaterad med de senaste uppdateringarna från :app.', - ], - ], - - // Other - 'home' => 'Hem', - 'powered_by' => 'Drivs av Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'Om sidan', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Statusflöde', - -]; diff --git a/resources/lang/sv-SE/dashboard.php b/resources/lang/sv-SE/dashboard.php deleted file mode 100644 index 49427ace..00000000 --- a/resources/lang/sv-SE/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Översiktspanel', - 'writeable_settings' => 'Cachets inställningskatalog är inte skrivbar. Kontrollera att ./bootstrap/cachet är skrivbar av webbservern.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Händelser', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Skapa mall', - 'incident-templates' => 'Händelsemallar', - 'updates' => [ - 'title' => 'Uppdateringar för :incident', - 'count' => '{0}Inga uppdateringar|[1]En uppdatering|[2]Två uppdateringar|[3,*]Flera uppdateringar', - 'add' => [ - 'title' => 'Skapa en ny incidentuppdatering', - 'success' => 'Din nya incidentuppdatering har skapats.', - 'failure' => 'Något gick fel under uppdatering av incidenten.', - ], - 'edit' => [ - 'title' => 'Redigera incidentuppdatering', - 'success' => 'Incidentuppdateringen har uppdaterats.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Lägg till händelse', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Redigera en händelse', - 'success' => 'Händelse uppdaterad.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'Händelsen har tagits bort och kommer inte visas på din statussida.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Händelsemallar', - 'add' => [ - 'title' => 'Skapa en händelsemall', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Redigera mall', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'Händelsen har tagits bort.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Planerat underhåll', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Schemalagd till: tidsstämpel', - 'add' => [ - 'title' => 'Lägg till planerat underhåll', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Komponenter', - 'component_statuses' => 'Komponentstatus', - 'listed_group' => 'Grupperade under: namn', - 'add' => [ - 'title' => 'Lägg till en komponent', - 'message' => 'Du borde lägga till en komponent.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Redigera komponent', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Komponenten har tagits bort!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Komponentgrupp|Komponentgrupper', - 'no_components' => 'Du borde lägga till en komponentgrupp.', - 'add' => [ - 'title' => 'Lägg till en komponentgrupp', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Redigera komponentgrupp', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Komponentgruppen har tagits bort!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Mätvärden', - 'add' => [ - 'title' => 'Skapa ett mätetal', - 'message' => 'Du borde lägga till ett mätetal.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Redigera ett mätetal', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'Mätetalet har tagits bort och kommer inte längre visas på din statussida.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Prenumeranter', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Bekräftad', - 'not_verified' => 'Inte bekräftad', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Lägg till en prenumerant', - 'success' => 'Prenumerant tillagd!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Uppdatera prenumerant', - 'success' => 'Prenumerant uppdaterad!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Medlem', - 'profile' => 'Profil', - 'description' => 'Teammedlemmar kommer kunna lägga till, ändra & redigera komponenter och händelser.', - 'add' => [ - 'title' => 'Lägg till en ny teammedlem', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Uppdatera profil', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Teammedlemen har tagits bort och kommer inte längre ha tillgång till översiktspanelen!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Bjud in en ny teammedlem', - 'success' => 'Inbjudan har skickats', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Inställningar', - 'app-setup' => [ - 'app-setup' => 'Applikationsinstallation', - 'images-only' => 'Endast bilder kan laddas upp.', - 'too-big' => 'Filen du försöker ladda upp är för stor. Ladda upp en bild som är mindre än :size', - ], - 'analytics' => [ - 'analytics' => 'Analys', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Platsanpassning', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Säkerhet', - 'two-factor' => 'Användare utan tvåfaktorsautentisering', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stilmall', - ], - 'theme' => [ - 'theme' => 'Tema', - ], - 'edit' => [ - 'success' => 'Inställningar sparade.', - 'failure' => 'Inställningarna kunde inte sparas.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Logga in', - 'logged_in' => 'Du är inloggad.', - 'welcome' => 'Välkommen tillbaka!', - 'two-factor' => 'Vänligen ange din kod.', - ], - - // Sidebar footer - 'help' => 'Hjälp', - 'status_page' => 'Statussida', - 'logout' => 'Logga ut', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifieringar', - 'awesome' => 'Enastående.', - 'whoops' => 'Hoppsan.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Välkommen till din statussida!', - 'message' => 'Din statussida är nästan redo. Du kan vilja konfigerara de här extra inställningarna', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Skapa komponenter', - 'incident' => 'Skapa händelser', - 'customize' => 'Anpassa', - 'team' => 'Lägg till användare', - 'api' => 'Skapa API-nyckel', - 'two-factor' => 'Tvåfaktorsautensiering', - ], - ], - -]; diff --git a/resources/lang/sv-SE/forms.php b/resources/lang/sv-SE/forms.php deleted file mode 100644 index 5413ad1d..00000000 --- a/resources/lang/sv-SE/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'E-post', - 'username' => 'Användarnamn', - 'password' => 'Lösenord', - 'site_name' => 'Webbplatsens namn', - 'site_domain' => 'Webbplatsens domän', - 'site_timezone' => 'Välj din tidzon', - 'site_locale' => 'Välj ditt språk', - 'enable_google2fa' => 'Aktivera Google tvåfaktorsautentisering', - 'cache_driver' => 'Cachedrivrutin', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Sessionsdrivrutin', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Användarnamn eller e-postadress', - 'email' => 'E-post', - 'password' => 'Lösenord', - '2fauth' => 'Autentiseringskod', - 'invalid' => 'Ogiltigt användarnamn eller lösenord', - 'invalid-token' => 'Ogiltig nyckel', - 'cookies' => 'Du måste aktivera cookies för att kunna logga in.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Namn', - 'status' => 'Status', - 'component' => 'Komponent', - 'component_status' => 'Component Status', - 'message' => 'Meddelande', - 'message-help' => 'Du kan även använda Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Meddela prenumeranter?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Kan ses av allmänheten', - 'logged_in_only' => 'Endast synlig för inloggade användare', - 'templates' => [ - 'name' => 'Namn', - 'template' => 'Mall', - 'twig' => 'Händelsmallar kan använda Twig-mallspråk.', - ], - ], - - 'schedules' => [ - 'name' => 'Namn', - 'status' => 'Status', - 'message' => 'Meddelande', - 'message-help' => 'Du kan även använda Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Namn', - 'template' => 'Mall', - 'twig' => 'Händelsmallar kan använda Twig-mallspråk.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Namn', - 'status' => 'Status', - 'group' => 'Grupp', - 'description' => 'Beskrivning', - 'link' => 'Länk', - 'tags' => 'Etiketter', - 'tags-help' => 'Kommaseparerade.', - 'enabled' => 'Komponent aktiverad?', - - 'groups' => [ - 'name' => 'Namn', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Namn', - 'description' => 'Beskrivning', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Grupp', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Namn', - 'suffix' => 'Suffix', - 'description' => 'Beskrivning', - 'description-help' => 'Du kan även använda Markdown.', - 'display-chart' => 'Visa diagram på statussidan?', - 'default-value' => 'Standardvärde', - 'calc_type' => 'Beräkning av mätetal', - 'type_sum' => 'Summa', - 'type_avg' => 'Medelvärde', - 'places' => 'Decimalplatser', - 'default_view' => 'Standardvy', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Värde', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Webbplatsens namn', - 'site-url' => 'Webbplatsens URL', - 'display-graphs' => 'Visa grafer på statussidan?', - 'about-this-page' => 'Om den här sidan', - 'days-of-incidents' => 'Hur många dagar av händelser ska visas?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Tillåt att registrera sig för notifikationer via e-post?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics-kod', - 'analytics_gosquared' => 'GoSquared Analytics-code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s sajt-id', - ], - 'localization' => [ - 'site-timezone' => 'Webbplatsens tidszon', - 'site-locale' => 'Webbplatsspråk', - 'date-format' => 'Datumformat', - 'incident-date-format' => 'Händelsens tidsstämpelformat', - ], - 'security' => [ - 'allowed-domains' => 'Tillåtna domäner', - 'allowed-domains-help' => 'Kommaseparerad. Domänerna ovan tillåts automatiskt som standard.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Bakgrundsfärg (komponenter, händelser, sidfot)', - 'banner-background-color' => 'Bakgrundsfärg för banner', - 'banner-padding' => 'Bannerutfyllnad', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Visa länk till översiktspanelen i sidfoten?', - 'reds' => 'Röd (används för fel)', - 'blues' => 'Blå (används för information)', - 'greens' => 'Grön (används för lyckanden)', - 'yellows' => 'Gul (används för varningar)', - 'oranges' => 'Orange (används för notiser)', - 'metrics' => 'Mätetälsfyllnad', - 'links' => 'Länkar', - ], - ], - - 'user' => [ - 'username' => 'Användarnamn', - 'email' => 'E-post', - 'password' => 'Lösenord', - 'api-token' => 'API-nyckel', - 'api-token-help' => 'Att återskapa din API-nyckel kommer hindra existerande applikationer från att komma åt Cachet.', - 'gravatar' => 'Ändra din profilbild hos Gravatar.', - 'user_level' => 'Användarnivå', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'Användare', - ], - '2fa' => [ - 'help' => 'Tvåfaktorsautentisering ökar säkerheten på ditt konto. Du behöver ladda ner Google Authenticator eller någon liknande app på din mobila enhet. När du loggar in kommer du få ange en kod som genereras av appen.', - ], - 'team' => [ - 'description' => 'Bjud in dina teammedlemmar genom att fylla i deras epostadresser här.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Lägg till', - 'save' => 'Spara', - 'update' => 'Uppdatera', - 'create' => 'Skapa', - 'edit' => 'Redigera', - 'delete' => 'Radera', - 'submit' => 'Skicka', - 'cancel' => 'Avbryt', - 'remove' => 'Ta bort', - 'invite' => 'Bjud In', - 'signup' => 'Registrera dig', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => 'Valfri', -]; diff --git a/resources/lang/sv-SE/notifications.php b/resources/lang/sv-SE/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/sv-SE/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/sv-SE/pagination.php b/resources/lang/sv-SE/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/sv-SE/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/sv-SE/setup.php b/resources/lang/sv-SE/setup.php deleted file mode 100644 index d4182074..00000000 --- a/resources/lang/sv-SE/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Installation', - 'title' => 'Installera Cachet', - 'service_details' => 'Servicedetaljer', - 'env_setup' => 'Miljöinställningar', - 'status_page_setup' => 'Inställningar för statussida', - 'show_support' => 'Visa ditt stöd för Cachet?', - 'admin_account' => 'Administrationskonto', - 'complete_setup' => 'Färdigställ installationen', - 'completed' => 'Cachet är färdigkonfigurerat!', - 'finish_setup' => 'Gå till intrumentpanelen', -]; diff --git a/resources/lang/sv-SE/validation.php b/resources/lang/sv-SE/validation.php deleted file mode 100644 index 89e504e7..00000000 --- a/resources/lang/sv-SE/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute måste accepteras.', - 'active_url' => ':attribute är inte en giltig URL.', - 'after' => ':attribute måste vara ett datum efter :datum.', - 'alpha' => ':attribute får endast innehålla bokstäver.', - 'alpha_dash' => ':attribute får endast innehålla bokstäver, siffror och bindestreck.', - 'alpha_num' => ':attribute får endast innehålla bokstäver och siffror.', - 'array' => '.attribute måste vara en lista med värden.', - 'before' => ':attribute måste vara ett datum före :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => ':attribute måste ha mellan :min och :max föremål.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => ':attribute måste vara en bild.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => ':attribute måste vara en giltig JSON-sträng.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => ':attribute får inte innehålla mer än :max föremål.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => ':attribute måste vara större än :min kilobyte.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => ':attribute-formatet är ogiltigt.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => ':attribute-fältet är obligatoriskt om inte :other är :value.', - 'required_with' => ':attribute fältet är obligatoriskt när :values är valda.', - 'required_with_all' => ':attribute fältet är obligatoriskt när :values är valda.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => ':attribute måste vara :size kilobyte.', - 'string' => ':attribute måste vara :size tecken.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => ':attribute måste vara en giltig zon.', - 'unique' => ':attribute är upptaget.', - 'url' => ':attribute-formatet är ogiltigt.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'valfritt-meddelande', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/th-TH/cachet.php b/resources/lang/th-TH/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/th-TH/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/th-TH/dashboard.php b/resources/lang/th-TH/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/th-TH/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/th-TH/forms.php b/resources/lang/th-TH/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/th-TH/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/th-TH/notifications.php b/resources/lang/th-TH/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/th-TH/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/th-TH/pagination.php b/resources/lang/th-TH/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/th-TH/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/th-TH/setup.php b/resources/lang/th-TH/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/th-TH/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/th-TH/validation.php b/resources/lang/th-TH/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/th-TH/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/tr-TR/cachet.php b/resources/lang/tr-TR/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/tr-TR/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/tr-TR/dashboard.php b/resources/lang/tr-TR/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/tr-TR/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/tr-TR/forms.php b/resources/lang/tr-TR/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/tr-TR/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/tr-TR/notifications.php b/resources/lang/tr-TR/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/tr-TR/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/tr-TR/pagination.php b/resources/lang/tr-TR/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/tr-TR/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/tr-TR/setup.php b/resources/lang/tr-TR/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/tr-TR/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/tr-TR/validation.php b/resources/lang/tr-TR/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/tr-TR/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/tr/cachet.php b/resources/lang/tr/cachet.php deleted file mode 100644 index 5caccfd8..00000000 --- a/resources/lang/tr/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Son Güncelleme: zaman tipi', - 'status' => [ - 1 => 'Çalışıyor', - 2 => 'Performans Problemleri', - 3 => 'Kısmi Kesinti', - 4 => 'Ana Kesinti', - ], - 'group' => [ - 'other' => 'Diğer Bileşenler', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Hiçbir olay raporlanmadı', - 'past' => 'Geçmiş Olaylar', - 'previous_week' => 'Geçen Hafta', - 'next_week' => 'Gelecek Hafta', - 'scheduled' => 'Zamanlanmış bakım', - 'scheduled_at' => ',zamanlanmış :zamandilimi', - 'status' => [ - 0 => 'Zamanlanmış', // TODO: Hopefully remove this. - 1 => 'İnceleniyor', - 2 => 'Tanımlandı', - 3 => 'İzleniyor', - 4 => 'Düzeltildi', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] Sistem çalışır durumda| [2, Inf] Tüm sistemler çalışır durumda', - 'bad' => '[0,1] Sistemde şu anda sorunlar yaşanıyor [2, Inf] Bazı sistemlerde sorunlar yaşanıyor', - 'major' => '[0,1] Bu serviste büyük bir kesinti yaşıyoruz [2, Inf] Bazı sistemlerde büyük bir kesintisi yaşıyoruz', - ], - - 'api' => [ - 'regenerate' => 'API Key\'i yeniden oluştur', - 'revoke' => 'API Anahtarı geçersiz kıl', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Son 1 saat', - 'hourly' => 'Son 12 saat', - 'weekly' => 'Hafta', - 'monthly' => 'Ay', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'En son güncelleştirmeleri almak için abone olun', - 'button' => 'Abone Ol', - 'manage' => [ - 'no_subscriptions' => 'Şu anda tüm güncellemeleri abone oldunuz.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Güncellemeler için abone ol.', - 'subscribed' => 'Bir email bildirimi almış olmalısın, lütfen aboneliğini onaylamak için kontrol et.', - 'verified' => 'E mail aboneliğin kabul edildi. Teşekkürler!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'E-posta aboneliğinden çık.', - 'unsubscribed' => 'Email aboneliğin iptal edildi.', - 'failure' => 'Bazı şeyler yanlış gitti.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Kayıt Ol', - 'username' => 'Kullanıcı adı', - 'email' => 'E-posta', - 'password' => 'Parola', - 'success' => 'Hesabınız oluşturuldu.', - 'failure' => 'Kayıt esnasında bir sorun oluştu.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Kapat', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Abone Ol', - ], - ], - - // Other - 'home' => 'Ana Sayfa', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'Bu Site hakkında', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/tr/dashboard.php b/resources/lang/tr/dashboard.php deleted file mode 100644 index 679542a8..00000000 --- a/resources/lang/tr/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Kontrol paneli', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Olaylar', - 'logged' => '{0} Hiç olay yok, tebrikler. |Bir olay rapor ettiniz.|:count olay rapor ettiniz.', - 'incident-create-template' => 'Şablon Oluştur', - 'incident-templates' => 'Olay Şablonları', - 'add' => [ - 'title' => 'Olay Ekle', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Olay Düzenle', - 'success' => 'Olay güncellendi.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Olay Şablonları', - 'add' => [ - 'title' => 'Olay Şablonu Oluştur', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Şablonu Düzenle', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Zamanlanmış bakım', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => ':timestamp zamanı için kaydedildi', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome Back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Your status page is almost ready! You might want to configure these extra settings', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Create components', - 'incident' => 'Create incidents', - 'customize' => 'Customize', - 'team' => 'Add users', - 'api' => 'Generate API token', - 'two-factor' => 'Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/tr/forms.php b/resources/lang/tr/forms.php deleted file mode 100644 index f4fde2e5..00000000 --- a/resources/lang/tr/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'E-posta', - 'username' => 'Kullanıcı adı', - 'password' => 'Parola', - 'site_name' => 'Site Adı', - 'site_domain' => 'Site Alan Adı', - 'site_timezone' => 'Zaman dilimi seçin', - 'site_locale' => 'Dil seçin', - 'enable_google2fa' => 'Google İki Faktor Doğrulamayı etkinleştir', - 'cache_driver' => 'Önbellek Sürücüsü', - 'session_driver' => 'Oturum Sürücüsü', - ], - - // Login form fields - 'login' => [ - 'login' => 'Kullanıcı Adı veya E-Posta', - 'email' => 'E-posta', - 'password' => 'Parola', - '2fauth' => 'Onaylama Kodu', - 'invalid' => 'Kullanıcı adı veya parola hatalı', - 'invalid-token' => 'Geçersiz jeton', - 'cookies' => 'Oturum açabilmek yapabilmek için çerezleri açmalısınız.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'İsim', - 'status' => 'Durum', - 'component' => 'Bileşen', - 'message' => 'Mesaj', - 'message-help' => 'Markdown işaretleri kullanabilirsiniz.', - 'scheduled_at' => 'Bakım ne zaman?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Herkese açık', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'İsim', - 'template' => 'Tema', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'İsim', - 'status' => 'Durum', - 'group' => 'Grup', - 'description' => 'Açıklama', - 'link' => 'Bağlantı', - 'tags' => 'Etiketler', - 'tags-help' => 'Virgül ile ayrılmış.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'İsim', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'İsim', - 'suffix' => 'Suffix', - 'description' => 'Açıklama', - 'description-help' => 'Markdown işaretleri kullanabilirsiniz.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Varsayılan değer', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Toplam', - 'type_avg' => 'Ortalama', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Değer', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Site Adı', - 'site-url' => 'Site url adresi', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'Hakkında', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Kullanıcı adı', - 'email' => 'E-posta', - 'password' => 'Parola', - 'api-token' => 'API jetonu', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'Kullanıcı', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'E-posta adreslerini buraya girerek ekip üyelerini davet edin.', - 'email' => 'E-posta #:id', - ], - ], - - // Buttons - 'add' => 'Ekle', - 'save' => 'Kaydet', - 'update' => 'Güncelle', - 'create' => 'Oluştur', - 'edit' => 'Düzenle', - 'delete' => 'Sil', - 'submit' => 'Gönder', - 'cancel' => 'İptal', - 'remove' => 'Kaldır', - 'invite' => 'Davet et', - 'signup' => 'Kayıt Ol', - - // Other - 'optional' => '* İsteğe bağlı', -]; diff --git a/resources/lang/tr/pagination.php b/resources/lang/tr/pagination.php deleted file mode 100644 index 31366d29..00000000 --- a/resources/lang/tr/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Önceki', - 'next' => 'Sonraki »', - -]; diff --git a/resources/lang/tr/setup.php b/resources/lang/tr/setup.php deleted file mode 100644 index acea2caa..00000000 --- a/resources/lang/tr/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Kurulum', - 'title' => 'Cachet\'i Kur', - 'service_details' => 'Hizmet detayları', - 'env_setup' => 'Ortam kurulumu', - 'status_page_setup' => 'Durum sayfası kurulumu', - 'show_support' => 'Cachet için destek ister misiniz?', - 'admin_account' => 'Yönetici Hesabı', - 'complete_setup' => 'Kurulumu tamamla', - 'completed' => 'Cachet başarı ile ayarlandı!', - 'finish_setup' => 'Gösterge paneline git', -]; diff --git a/resources/lang/tr/validation.php b/resources/lang/tr/validation.php deleted file mode 100644 index fb52c2f3..00000000 --- a/resources/lang/tr/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/uk-UA/cachet.php b/resources/lang/uk-UA/cachet.php deleted file mode 100644 index cb24fc10..00000000 --- a/resources/lang/uk-UA/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Operational', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/uk-UA/dashboard.php b/resources/lang/uk-UA/dashboard.php deleted file mode 100644 index 7dc9af66..00000000 --- a/resources/lang/uk-UA/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/uk-UA/forms.php b/resources/lang/uk-UA/forms.php deleted file mode 100644 index 5c5a41a9..00000000 --- a/resources/lang/uk-UA/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Password', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Password', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Password', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/uk-UA/notifications.php b/resources/lang/uk-UA/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/uk-UA/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/uk-UA/pagination.php b/resources/lang/uk-UA/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/uk-UA/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/uk-UA/setup.php b/resources/lang/uk-UA/setup.php deleted file mode 100644 index bdc2a457..00000000 --- a/resources/lang/uk-UA/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/uk-UA/validation.php b/resources/lang/uk-UA/validation.php deleted file mode 100644 index 7d196d98..00000000 --- a/resources/lang/uk-UA/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/uk/cachet.php b/resources/lang/uk/cachet.php deleted file mode 100644 index fb9f180a..00000000 --- a/resources/lang/uk/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 1 => 'Працює', - 2 => 'Проблеми з продуктивністю', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'previous_week' => 'Previous', - 'next_week' => 'Next', - 'scheduled' => 'Scheduled Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'status' => [ - 0 => 'Scheduled', // TODO: Hopefully remove this. - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to get the most recent updates', - 'button' => 'Subscribe', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Ім’я користувача', - 'email' => 'Електронна пошта', - 'password' => 'Пароль', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/uk/dashboard.php b/resources/lang/uk/dashboard.php deleted file mode 100644 index 335952b7..00000000 --- a/resources/lang/uk/dashboard.php +++ /dev/null @@ -1,292 +0,0 @@ - 'Dashboard', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Schedule', - 'incidents' => 'Incidents', - 'logged' => '{0} There are no incidents, good work.|You have logged one incident.|You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => '{0} Zero Updates|One Update|:count Updates', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - 'update' => [ - 'title' => 'Create new incident update', - 'subtitle' => 'Add an update to :incident', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Scheduled Maintenance', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/uk/forms.php b/resources/lang/uk/forms.php deleted file mode 100644 index 84db8f65..00000000 --- a/resources/lang/uk/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Електронна пошта', - 'username' => 'Ім’я користувача', - 'password' => 'Пароль', - 'site_name' => 'Назва сайту', - 'site_domain' => 'Назва домену', - 'site_timezone' => 'Оберіть Ваш часовий пояс', - 'site_locale' => 'Оберіть свою мову', - 'enable_google2fa' => 'Ввімкнути двофакторну автентифікацію Google', - 'cache_driver' => 'Драйвер кешування', - 'session_driver' => 'Сессія драйверу', - ], - - // Login form fields - 'login' => [ - 'login' => 'Ім\'я користувача або електронна пошта', - 'email' => 'Електронна пошта', - 'password' => 'Пароль', - '2fauth' => 'Код автентифікації', - 'invalid' => 'Невірний логін чи пароль', - 'invalid-token' => 'Invalid token', - 'cookies' => 'Ви повинні увімкнути куки щоб увійти.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Ім’я', - 'status' => 'Статус', - 'component' => 'Компонент', - 'message' => 'Повідомлення', - 'message-help' => 'Ви також можете використовувати Markdown.', - 'scheduled_at' => 'When to schedule the maintenance for?', - 'incident_time' => 'Коли цей інцидент відбувся?', - 'notify_subscribers' => 'Повідомити підписників?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Ім’я', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Ім’я', - 'status' => 'Статус', - 'group' => 'Group', - 'description' => 'Опис', - 'link' => 'Посилання', - 'tags' => 'Теги', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Ім’я', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Ім’я', - 'suffix' => 'Suffix', - 'description' => 'Опис', - 'description-help' => 'Ви також можете використовувати Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Сума', - 'type_avg' => 'В середньому', - 'places' => 'Decimal places', - 'default_view' => 'Типовий вигляд', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Значення', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Назва сайту', - 'site-url' => 'URL сайту', - 'display-graphs' => 'Відображати графіки на сторінці статусу?', - 'about-this-page' => 'Інформація про цю сторінку', - 'days-of-incidents' => 'How many days of incidents to show?', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide .", - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Код Google Analytics', - 'analytics_gosquared' => 'Код GoSquared Analytics', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'id сайту Piwik', - ], - 'localization' => [ - 'site-timezone' => 'Часовий пояс сайту', - 'site-locale' => 'Мова сайту', - 'date-format' => 'формат дати', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Колір тексту', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Ім’я користувача', - 'email' => 'Електронна пошта', - 'password' => 'Пароль', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Адміністратор', - 'user' => 'Користувач', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'додати', - 'save' => 'Зберегти', - 'update' => 'Update', - 'create' => 'Створити', - 'edit' => 'Edit', - 'delete' => 'Видалити', - 'submit' => 'Submit', - 'cancel' => 'Скасувати', - 'remove' => 'Remove', - 'invite' => 'Запросити', - 'signup' => 'Sign Up', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/uk/pagination.php b/resources/lang/uk/pagination.php deleted file mode 100644 index add1092a..00000000 --- a/resources/lang/uk/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Previous', - 'next' => 'Next »', - -]; diff --git a/resources/lang/uk/setup.php b/resources/lang/uk/setup.php deleted file mode 100644 index 044cf2e2..00000000 --- a/resources/lang/uk/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Setup', - 'title' => 'Setup Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/uk/validation.php b/resources/lang/uk/validation.php deleted file mode 100644 index fb52c2f3..00000000 --- a/resources/lang/uk/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'The :attribute must be accepted.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be a date before :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute must have between :min and :max items.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute format is invalid.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The :attribute must be an image.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute may not have more than :max items.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'The :attribute format is invalid.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is present.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must be :size characters.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/vi-VN/cachet.php b/resources/lang/vi-VN/cachet.php deleted file mode 100644 index 71eaee2c..00000000 --- a/resources/lang/vi-VN/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => 'Hoạt động', - 2 => 'Performance Issues', - 3 => 'Partial Outage', - 4 => 'Major Outage', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ', scheduled :timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => 'Investigating', - 2 => 'Identified', - 3 => 'Watching', - 4 => 'Fixed', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => 'Regenerate API Key', - 'revoke' => 'Revoke API Key', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => 'Notifications', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Mật khẩu', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/vi-VN/dashboard.php b/resources/lang/vi-VN/dashboard.php deleted file mode 100644 index 270a50b1..00000000 --- a/resources/lang/vi-VN/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'Bảng điều khiển', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => 'Incidents', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => 'Create Template', - 'incident-templates' => 'Incident Templates', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => 'Incident updated.', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Incident Templates', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => 'Scheduled at :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Add a component', - 'message' => 'You should add a component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Metrics', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Team', - 'member' => 'Member', - 'profile' => 'Profile', - 'description' => 'Team Members will be able to add, modify & edit components and incidents.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Settings', - 'app-setup' => [ - 'app-setup' => 'Application Setup', - 'images-only' => 'Only images may be uploaded.', - 'too-big' => 'The file you uploaded is too big. Upload an image smaller than :size', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => 'Security', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Settings saved.', - 'failure' => 'Settings could not be saved.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Login', - 'logged_in' => 'You\'re logged in.', - 'welcome' => 'Welcome back!', - 'two-factor' => 'Please enter your token.', - ], - - // Sidebar footer - 'help' => 'Help', - 'status_page' => 'Status Page', - 'logout' => 'Logout', - - // Notifications - 'notifications' => [ - 'notifications' => 'Notifications', - 'awesome' => 'Awesome.', - 'whoops' => 'Whoops.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => 'You\'re almost ready but you might want to configure these extra settings first...', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => 'Add your components', - 'incident' => 'Create an incident', - 'customize' => 'Customize your page', - 'team' => 'Add your team', - 'api' => 'Generate an API token', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/vi-VN/forms.php b/resources/lang/vi-VN/forms.php deleted file mode 100644 index 45642b96..00000000 --- a/resources/lang/vi-VN/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Username', - 'password' => 'Mật khẩu', - 'site_name' => 'Site Name', - 'site_domain' => 'Site Domain', - 'site_timezone' => 'Select your timezone', - 'site_locale' => 'Select your language', - 'enable_google2fa' => 'Enable Google Two Factor Authentication', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => 'Email', - 'password' => 'Mật khẩu', - '2fauth' => 'Authentication Code', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Invalid token', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Name', - 'status' => 'Status', - 'component' => 'Component', - 'component_status' => 'Component Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => 'Name', - 'status' => 'Status', - 'message' => 'Message', - 'message-help' => 'You may also use Markdown.', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => 'Name', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Name', - 'status' => 'Status', - 'group' => 'Group', - 'description' => 'Description', - 'link' => 'Link', - 'tags' => 'Tags', - 'tags-help' => 'Comma separated.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Name', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'Name', - 'description' => 'Description', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => 'Group', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Name', - 'suffix' => 'Suffix', - 'description' => 'Description', - 'description-help' => 'You may also use Markdown.', - 'display-chart' => 'Display chart on status page?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Sum', - 'type_avg' => 'Average', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => 'Value', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'Site Name', - 'site-url' => 'Site URL', - 'display-graphs' => 'Display graphs on status page?', - 'about-this-page' => 'About this page', - 'days-of-incidents' => 'How many days of incidents to show?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Comma separated. The domain set above is automatically allowed by default.', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => 'Username', - 'email' => 'Email', - 'password' => 'Mật khẩu', - 'api-token' => 'API Token', - 'api-token-help' => 'Regenerating your API token will prevent existing applications from accessing Cachet.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => 'Enabling two factor authentication increases security of your account. You will need to download Google Authenticator or a similar app on to your mobile device. When you login you will be asked to provide a token generated by the app.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => 'Add', - 'save' => 'Save', - 'update' => 'Update', - 'create' => 'Create', - 'edit' => 'Edit', - 'delete' => 'Delete', - 'submit' => 'Submit', - 'cancel' => 'Cancel', - 'remove' => 'Remove', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* Optional', -]; diff --git a/resources/lang/vi-VN/notifications.php b/resources/lang/vi-VN/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/vi-VN/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/vi-VN/pagination.php b/resources/lang/vi-VN/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/vi-VN/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/vi-VN/setup.php b/resources/lang/vi-VN/setup.php deleted file mode 100644 index 2293c30d..00000000 --- a/resources/lang/vi-VN/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Cài đặt', - 'title' => 'Install Cachet', - 'service_details' => 'Service Details', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => 'Status Page Setup', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => 'Administrator Account', - 'complete_setup' => 'Complete Setup', - 'completed' => 'Cachet has been configured successfully!', - 'finish_setup' => 'Go to dashboard', -]; diff --git a/resources/lang/vi-VN/validation.php b/resources/lang/vi-VN/validation.php deleted file mode 100644 index c29028eb..00000000 --- a/resources/lang/vi-VN/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute phải được chấp nhận.', - 'active_url' => 'The :attribute is not a valid URL.', - 'after' => 'The :attribute must be a date after :date.', - 'alpha' => 'The :attribute may only contain letters.', - 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.', - 'alpha_num' => 'The :attribute may only contain letters and numbers.', - 'array' => 'The :attribute must be an array.', - 'before' => 'The :attribute must be a date before :date.', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => 'The :attribute must be an image.', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute format is invalid.', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :values is present.', - 'required_with_all' => 'The :attribute field is required when :values is present.', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => 'The :attribute must be a valid zone.', - 'unique' => 'The :attribute has already been taken.', - 'url' => 'The :attribute format is invalid.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/vi/cachet.php b/resources/lang/vi/cachet.php deleted file mode 100644 index 23f39d86..00000000 --- a/resources/lang/vi/cachet.php +++ /dev/null @@ -1,144 +0,0 @@ - [ - 'last_updated' => 'Lần cập nhật cuối :timestamp', - 'status' => [ - 1 => 'Hoạt động', - 2 => 'Vấn đề hiệu suất', - 3 => 'Ngưng hoạt động một phần', - 4 => 'Ngừng hoạt động toàn bộ', - ], - 'group' => [ - 'other' => 'Các thành phần khác', - ], - ], - - // Incidents - 'incidents' => [ - 'none' => 'Không có báo cáo về sự số nào', - 'past' => 'Sự số trong quá khứ', - 'previous_week' => 'Tuần trước', - 'next_week' => 'Tuần sau', - 'scheduled' => 'Bảo trì định kỳ', - 'scheduled_at' => ', định kỳ :timestamp', - 'status' => [ - 0 => 'Đã xếp lịch', // TODO: Hopefully remove this. - 1 => 'Đang điều tra', - 2 => 'Xác định', - 3 => 'Đang xem', - 4 => 'Đã sửa', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] System operational|[2,Inf] All systems are operational', - 'bad' => '[0,1] The system is currently experiencing issues|[2,Inf] Some systems are experiencing issues', - 'major' => '[0,1] The service is experiencing a major outage|[2,Inf] Some systems are experiencing a major outage', - ], - - 'api' => [ - 'regenerate' => 'Tạo lại Khóa API', - 'revoke' => 'Thu hồi Khóa API', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Tuần', - 'monthly' => 'Tháng', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to get the most recent updates', - 'button' => 'Đăng ký', - 'manage' => [ - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - ], - 'email' => [ - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - 'verify' => [ - 'text' => "Please confirm your email subscription to :app_name status updates.\n:link", - 'html' => '

Please confirm your email subscription to :app_name status updates.

', - 'button' => 'Confirm Subscription', - ], - 'maintenance' => [ - 'subject' => '[Maintenance Scheduled] :name', - ], - 'incident' => [ - 'subject' => '[New Incident] :status: :name', - ], - 'component' => [ - 'subject' => 'Component Status Update', - 'text' => 'The component :component_name has seen a status change. The component is now at :component_human_status.\nThank you, :app_name', - 'html' => '

The component :component_name has seen a status change. The component is now at :component_human_status.

Thank you, :app_name

', - 'tooltip-title' => 'Subscribe to notifications for :component_name.', - ], - ], - ], - - 'users' => [ - 'email' => [ - 'invite' => [ - 'text' => "You have been invited to the team :app_name status page, to sign up follow the next link.\n:link\nThank you, :app_name", - 'html' => '

You have been invited to the team :app_name status page, to sign up follow the next link.

:link

Thank you, :app_name

', - ], - ], - ], - - 'signup' => [ - 'title' => 'Đăng ký', - 'username' => 'Tên người dùng', - 'email' => 'Email', - 'password' => 'Mật khẩu', - 'success' => 'Tài khoản của bạn đã được tạo.', - 'failure' => 'Có lỗi xảy ra khi đăng ký.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Đăng ký', - ], - ], - - // Other - 'home' => 'Home', - 'description' => 'Stay up to date with the latest service updates from :app.', - 'powered_by' => 'Powered by Cachet.', - 'about_this_site' => 'Về trang web này', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status Feed', - -]; diff --git a/resources/lang/vi/dashboard.php b/resources/lang/vi/dashboard.php deleted file mode 100644 index 719e6478..00000000 --- a/resources/lang/vi/dashboard.php +++ /dev/null @@ -1,275 +0,0 @@ - 'Bảng điều khiển', - - // Incidents - 'incidents' => [ - 'title' => 'Sự cố & Lịch trình', - 'incidents' => 'Các sự cố', - 'logged' => '{0} Không có sự cố nào, làm việc tốt.|Bạn có một sự cố được ghi nhận.|Bạn có :count sự cố được báo cáo.', - 'incident-create-template' => 'Tạo template', - 'incident-templates' => 'Mẫu sự cố', - 'add' => [ - 'title' => 'Thêm một sự cố', - 'success' => 'Sự cố đã được thêm.', - 'failure' => 'Có một lỗi xảy ra khi đang lưu Sự Cố, xin vui lòng thử lại.', - ], - 'edit' => [ - 'title' => 'Chỉnh sửa một sự cố', - 'success' => 'Sự cố đã được cập nhật.', - 'failure' => 'Có một lỗi xảy ra khi đang lưu Sự Cố, xin vui lòng thử lại.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => 'Mẫu sự cố', - 'add' => [ - 'title' => 'Tạo ra một khuôn mẫu khi gặp sự cố', - 'message' => 'You should add an incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Sửa mẫu', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Bảo trì định kỳ', - 'logged' => '{0} There are no schedules, good work.|You have logged one schedule.|You have reported :count schedules.', - 'scheduled_at' => 'Định kỳ lúc :timestamp', - 'add' => [ - 'title' => 'Add Scheduled Maintenance', - 'success' => 'Schedule added.', - 'failure' => 'Something went wrong adding the schedule, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Scheduled Maintenance', - 'success' => 'Schedule has been updated!', - 'failure' => 'Something went wrong editing the schedule, please try again.', - ], - 'delete' => [ - 'success' => 'The scheduled maintenance has been deleted and will not show on your status page.', - 'failure' => 'The scheduled maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => 'Components', - 'component_statuses' => 'Component Statuses', - 'listed_group' => 'Grouped under :name', - 'add' => [ - 'title' => 'Thêm một thành phần', - 'message' => 'Bạn cần thêm một component.', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'edit' => [ - 'title' => 'Chỉnh sửa một thành phần', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => 'Component group|Component groups', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'Các số liệu', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'verified' => 'Đã xác nhận', - 'not_verified' => 'Chưa xác nhận', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => 'Nhóm', - 'member' => 'Thành viên', - 'profile' => 'Hồ sơ cá nhân', - 'description' => 'Thành viên trong đội sẽ có thể để thêm, sửa đổi và chỉnh sửa các thành phần và sự cố.', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'Thiết lập', - 'app-setup' => [ - 'app-setup' => 'Thiết lập ứng dụng', - 'images-only' => 'Chỉ có thể upload ảnh.', - 'too-big' => 'File bạn vừa upload có kích thước quá lớn, hãy upload ảnh có kích thước nhỏ hơn :size', - ], - 'analytics' => [ - 'analytics' => 'Thống kê', - ], - 'localization' => [ - 'localization' => 'Bản địa hoá', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'security' => [ - 'security' => 'Bảo mật', - 'two-factor' => 'Users without two-factor authentication', - ], - 'stylesheet' => [ - 'stylesheet' => 'Stylesheet', - ], - 'theme' => [ - 'theme' => 'Theme', - ], - 'edit' => [ - 'success' => 'Các setting đã được lưu.', - 'failure' => 'Không thể lưu các settings.', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => 'Đăng nhập', - 'logged_in' => 'Bạn đang đăng nhập.', - 'welcome' => 'Chào mừng Quay trở lại!', - 'two-factor' => 'Vui lòng nhập mã token của bạn', - ], - - // Sidebar footer - 'help' => 'Trợ giúp', - 'status_page' => 'Trang trang thái', - 'logout' => 'Đăng xuất', - - // Notifications - 'notifications' => [ - 'notifications' => 'Thông báo', - 'awesome' => 'Tuyệt vời.', - 'whoops' => 'Ôi.', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest updates', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page!', - 'message' => 'Trang trái thái cảu bạn gần như đã sẵn sàng. Bạn có thể muốn cấu hình mình vài thiết lập phụ', - 'close' => 'Take me straight to my dashboard', - 'steps' => [ - 'component' => 'Tạo thành phần', - 'incident' => 'Tạo sự cố', - 'customize' => 'Tùy chỉnh', - 'team' => 'Thêm người dùng', - 'api' => 'Tạo API token', - 'two-factor' => 'Xác minh 2 bước', - ], - ], - -]; diff --git a/resources/lang/vi/forms.php b/resources/lang/vi/forms.php deleted file mode 100644 index 60215709..00000000 --- a/resources/lang/vi/forms.php +++ /dev/null @@ -1,187 +0,0 @@ - [ - 'email' => 'Email', - 'username' => 'Tên đăng nhập', - 'password' => 'Mật khẩu', - 'site_name' => 'Tến site', - 'site_domain' => 'Domain', - 'site_timezone' => 'Chọn timezone', - 'site_locale' => 'Chọn ngôn ngữ', - 'enable_google2fa' => 'Bật tính năng xác thực 2 bước của google', - 'cache_driver' => 'Cache Driver', - 'session_driver' => 'Session Driver', - ], - - // Login form fields - 'login' => [ - 'login' => 'Tên đăng nhập hoặc Email', - 'email' => 'Email', - 'password' => 'Mật khẩu', - '2fauth' => 'Mã số xác thực', - 'invalid' => 'Invalid username or password', - 'invalid-token' => 'Token không hợp lệ', - 'cookies' => 'Bạn phải bật cookie để đăng nhập.', - 'rate-limit' => 'Rate limit exceeded.', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'Tên', - 'status' => 'Trạng thái', - 'component' => 'Component', - 'message' => 'Tin nhắn', - 'message-help' => 'Bạn cũng có thể sử dụng Markdown.', - 'scheduled_at' => 'Khi nào bảo trì định kỳ?', - 'incident_time' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'visibility' => 'Incident Visibility', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => 'Tên', - 'template' => 'Template', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'Tên', - 'status' => 'Trạng thái', - 'group' => 'nhóm', - 'description' => 'Miêu tả', - 'link' => 'Liên kết', - 'tags' => 'Thẻ Tag', - 'tags-help' => 'Ngăn cách bởi dấu phẩy.', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => 'Tên', - 'collapsing' => 'Choose visibility of the group', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'Tên', - 'suffix' => 'Hậu tố', - 'description' => 'Miêu tả', - 'description-help' => 'Bạn cũng có thể sử dụng Markdown.', - 'display-chart' => 'Hiển thị các biểu đồ trên trang trạng thái?', - 'default-value' => 'Giá trị mặc định', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => 'Tổng hợp', - 'type_avg' => 'Trung bình', - 'places' => 'Chữ số thập phân', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - - 'points' => [ - 'value' => 'Giá trị', - ], - ], - - // Settings - 'settings' => [ - /// Application setup - 'app-setup' => [ - 'site-name' => 'Tến site', - 'site-url' => 'URL trang web', - 'display-graphs' => 'Hiển thị các biểu đồ trên trang trạng thái?', - 'about-this-page' => 'Về trang này', - 'days-of-incidents' => 'Sự cố này sẽ hiển thị mấy ngày ?', - 'banner' => 'Banner Image', - 'banner-help' => 'Bạn nên upload ảnh có chiều rộng lớn hơn 930px', - 'subscribers' => 'Allow people to signup to email notifications?', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - ], - 'analytics' => [ - 'analytics_google' => 'Mã Google Analytics', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance (without http(s)://)', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Múi giờ', - 'site-locale' => 'Ngôn ngữ', - 'date-format' => 'Định dạng ngày', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => 'Ngăn cách bằng dấu phẩy. Những domain dưới đây được cho phép một cách tự động.', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background Color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable fullwidth banner?', - 'text-color' => 'Text Color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => 'Red (used for errors)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Liên kết', - ], - ], - - 'user' => [ - 'username' => 'Tên người dùng', - 'email' => 'Email', - 'password' => 'Mật khẩu', - 'api-token' => 'API Token', - 'api-token-help' => 'Khi tạo API token mới, các API token cũ sẽ không sử dụng được nữa.', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Quản trị', - 'user' => 'Người dùng', - ], - '2fa' => [ - 'help' => 'Khi enable chức năng xác minh hai lớp ( two factor authentication ) sẽ tăng độ bảo mật cho account của bạn. Bạn cần phải tải Google Authenticator hoặc các ứng dụng tương tự cho điện thoại của bạn. Mỗi khi login, bạn sẽ phải sử dụng phần mềm này để tạo mã, và nhập vào khung đăng nhập.', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Email #:id', - ], - ], - - // Buttons - 'add' => 'Thêm', - 'save' => 'Lưu thay đổi', - 'update' => 'Cập nhật', - 'create' => 'Tạo mới', - 'edit' => 'Chỉnh sửa', - 'delete' => 'Xoá', - 'submit' => 'Gửi', - 'cancel' => 'Hủy', - 'remove' => 'Xoá', - 'invite' => 'Mời', - 'signup' => 'Đăng ký', - - // Other - 'optional' => '* Tùy chọn', -]; diff --git a/resources/lang/vi/pagination.php b/resources/lang/vi/pagination.php deleted file mode 100644 index e58379b8..00000000 --- a/resources/lang/vi/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '« Trước', - 'next' => 'Tiếp theo »', - -]; diff --git a/resources/lang/vi/setup.php b/resources/lang/vi/setup.php deleted file mode 100644 index ef7308d9..00000000 --- a/resources/lang/vi/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Cài đặt', - 'title' => 'Cài đặt Cachet', - 'service_details' => 'Chi tiết DỊch vụ', - 'env_setup' => 'Thiết lập môi trường', - 'status_page_setup' => 'Cài đặt Trang Trạng thái', - 'show_support' => 'Hiển thị hỗ trợ cho Cachet?', - 'admin_account' => 'Tài khoản người quản trị', - 'complete_setup' => 'Hoàn tất cài đặt', - 'completed' => 'Cachet đã được cấu hình thành công!', - 'finish_setup' => 'Đi đến bảng điều khiển', -]; diff --git a/resources/lang/vi/validation.php b/resources/lang/vi/validation.php deleted file mode 100644 index edc6151c..00000000 --- a/resources/lang/vi/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - ':attribute phải được chấp nhận.', - 'active_url' => ':attribute không phải một URL hợp lệ.', - 'after' => ':attribute phải là một ngày sau :date.', - 'alpha' => ':attribute chỉ có thể chứa các chữ cái.', - 'alpha_dash' => ':attribute chỉ có thể chứa các chữ cái, số, và dấu gạch ngang.', - 'alpha_num' => ':attribute chỉ có thể chứa các chữ cái và số.', - 'array' => ':attribute phải là một mảng.', - 'before' => ':attribute phải là một ngày trước :date.', - 'between' => [ - 'numeric' => ':attribute phải là một ngày trước :date.', - 'file' => 'The :attribute must be between :min and :max.', - 'string' => 'The :attribute must be between :min and :max kilobytes.', - 'array' => ':attribute phải trong khoảng :min và :max mục.', - ], - 'boolean' => ':attribute phải trong khoảng :min và :max mục.', - 'confirmed' => 'The :attribute field must be true or false.', - 'date' => 'The :attribute confirmation does not match.', - 'date_format' => 'The :attribute is not a valid date.', - 'different' => 'The :attribute does not match the format :format.', - 'digits' => 'The :attribute and :other must be different.', - 'digits_between' => 'The :attribute must be :digits digits.', - 'email' => 'The :attribute must be between :min and :max digits.', - 'exists' => 'The :attribute must be a valid email address.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'Định dạng :attribute không hợp lệ.', - 'image' => 'Thuộc tính :attribute phải là một file ảnh.', - 'in' => 'Thuộc tính :attribute phải là một file ảnh.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The selected :attribute is invalid.', - 'ip' => 'The :attribute must be an integer.', - 'json' => ':attribute phải là một chuỗi JSON hợp lệ.', - 'max' => [ - 'numeric' => 'The :attribute must be a valid IP address.', - 'file' => 'The :attribute may not be greater than :max.', - 'string' => 'The :attribute may not be greater than :max kilobytes.', - 'array' => ':attribute có thể không có nhiều hơn :max mục.', - ], - 'mimes' => ':attribute có thể không có nhiều hơn :max mục.', - 'min' => [ - 'numeric' => 'The :attribute must be a file of type: :values.', - 'file' => ':attribute phải tối thiểu :min kilobytes.', - 'string' => ':attribute phải tối thiểu :min kilobytes.', - 'array' => 'The :attribute must be at least :min characters.', - ], - 'not_in' => 'The :attribute must have at least :min items.', - 'numeric' => 'The selected :attribute is invalid.', - 'present' => 'The :attribute field must be present.', - 'regex' => 'The :attribute must be a number.', - 'required' => 'Định dạng :attribute không hợp lệ.', - 'required_if' => 'The :attribute field is required.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => 'The :attribute field is required when :other is :value.', - 'required_with_all' => 'Trường :attribute là bắt buộc khi :values là hiện tại.', - 'required_without' => 'Trường :attribute là bắt buộc khi :values là hiện tại.', - 'required_without_all' => 'The :attribute field is required when :values is not present.', - 'same' => 'The :attribute field is required when none of :values are present.', - 'size' => [ - 'numeric' => 'The :attribute and :other must match.', - 'file' => ':attribute phải là :size kilobytes.', - 'string' => ':attribute phải là :size ký tự.', - 'array' => ':attribute phải là :size ký tự.', - ], - 'string' => 'The :attribute must contain :size items.', - 'timezone' => ':attribute phải là một khu vực hợp lệ.', - 'unique' => ':attribute đã được dùng.', - 'url' => 'Định dạng :attribute không hợp lệ.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/zh-CN/cachet.php b/resources/lang/zh-CN/cachet.php deleted file mode 100644 index 47d5e6e4..00000000 --- a/resources/lang/zh-CN/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => '最后更新于 :timestamp', - 'status' => [ - 0 => '未知', - 1 => '运行正常', - 2 => '性能问题', - 3 => '部分中断', - 4 => '严重中断', - ], - 'group' => [ - 'other' => '其他组件', - ], - 'select_all' => '全选', - 'deselect_all' => '反选所有', - ], - - // Incidents - 'incidents' => [ - 'none' => '无故障报告', - 'past' => '历史状态', - 'stickied' => '已关注的故障', - 'scheduled' => '计划维护', - 'scheduled_at' => ',计划于 :timestamp', - 'posted' => '在 :timestamp 由 :username 发布', - 'posted_at' => '发布于 :timestamp', - 'status' => [ - 1 => '确认中', - 2 => '修复中', - 3 => '已更新', - 4 => '已解决', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => '即将进行', - 1 => '正在进行', - 2 => '已完成', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1] 系统工作正常|[2,*] 所有系统工作正常', - 'bad' => '[0,1] 系统出现了问题|[2,*] 一些系统出现了问题', - 'major' => '[0,1] 系统出现重大故障|[2,*] 一些系统出现重大故障', - ], - - 'api' => [ - 'regenerate' => '重新生成 API 密钥', - 'revoke' => '注销 API 密钥', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => '上个小时', - 'hourly' => '最近12小时', - 'weekly' => '周', - 'monthly' => '月', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => '关注状态更改和更新', - 'unsubscribe' => '取消订阅', - 'button' => '订阅', - 'manage_subscription' => '管理订阅', - 'manage' => [ - 'notifications' => '通知', - 'notifications_for' => '管理通知给', - 'no_subscriptions' => '您当前已订阅所有更新。', - 'update_subscription' => '更新订阅', - 'my_subscriptions' => '您当前已订阅下列更新', - 'manage_at_link' => '在 :link 管理你的订阅', - ], - 'email' => [ - 'manage_subscription' => '我们已经给您发送了一封电子邮件,请点击链接来管理您的订阅', - 'subscribe' => '订阅电子邮件更新。', - 'subscribed' => '您已经订阅电子邮件通知,请检查您的电子邮件进行确认。', - 'updated-subscribe' => '您已成功更新您的订阅。', - 'verified' => '您的电子邮件订阅已确认。谢谢!', - 'manage' => '管理您的订阅', - 'unsubscribe' => '取消电子邮件订阅。', - 'unsubscribed' => '您的电子邮件订阅已被取消。', - 'failure' => '邮件订阅失败。', - 'already-subscribed' => '无法订阅,因为这个邮箱地址 ( :email ) 已经在订阅列表中了。', - ], - ], - - 'signup' => [ - 'title' => '注册', - 'username' => '用户名', - 'email' => '电子邮箱', - 'password' => '密码', - 'success' => '您的账号已注册成功。', - 'failure' => '注册失败。', - ], - - 'system' => [ - 'update' => '有新版的Cachet可用,您可以点击这里获取更新咨询', - ], - - // Modal - 'modal' => [ - 'close' => '关闭', - 'subscribe' => [ - 'title' => '订阅组件状态更新', - 'body' => '请输入您用于接收订阅该组件更新通知的电子邮箱。如果您已经订阅,您应已收到关于这个组件的一系列电子邮件。', - 'button' => '订阅', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => '有关于发生在 :date 的 :name 事件的细节与更新', - 'schedule' => '有关于计划维护时段 :name ,开始于 :startDate,的细节说明', - 'subscribe' => '订阅 :app 以接收故障更新和定期维护信息', - 'overview' => '始终保持对 :app 服务状态的关注。', - ], - ], - - // Other - 'home' => '主屏幕', - 'powered_by' => '由 Cachet 驱动。', - 'timezone' => '时间将以 :timezone 时区显示。', - 'about_this_site' => '关于本站', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => '状态源', - -]; diff --git a/resources/lang/zh-CN/dashboard.php b/resources/lang/zh-CN/dashboard.php deleted file mode 100644 index 7a8007d2..00000000 --- a/resources/lang/zh-CN/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - '控制台', - 'writeable_settings' => 'Cachet 设置目录无法写入。请确认 ./bootstrap/cachet 文件夹可被服务器写入。', - - // Incidents - 'incidents' => [ - 'title' => '故障和维护计划', - 'incidents' => '事件', - 'logged' => '{0} 当前没有故障信息|[1]您已经记录了一个故障.|[2,*]您已经报告了 :count 个故障', - 'incident-create-template' => '创建模板', - 'incident-templates' => '故障模板', - 'updates' => [ - 'title' => '关于 :incident 事件的更新', - 'count' => '{0} 无更新|[1] 一个更新|[2] 2个更新|[3,*] 多个更新', - 'add' => [ - 'title' => '添加故障更新', - 'success' => '您已创建新的故障更新。', - 'failure' => '创建故障更新时出现了问题。', - ], - 'edit' => [ - 'title' => '编辑故障更新', - 'success' => '成功更新故障。', - 'failure' => '修改故障更新时出现问题', - ], - ], - 'reported_by' => '在 :timestamp 由 :user 报告', - 'add' => [ - 'title' => '添加故障', - 'success' => '故障已添加', - 'failure' => '添加故障时出错,请稍后再试。', - ], - 'edit' => [ - 'title' => '编辑故障', - 'success' => '故障已更新。', - 'failure' => '编辑故障时出错,请稍后再试。', - ], - 'delete' => [ - 'success' => '故障已删除并将不会出现在状态页中', - 'failure' => '无法删除该故障,请再试一次。', - ], - - // Incident templates - 'templates' => [ - 'title' => '故障模板', - 'add' => [ - 'title' => '添加故障模板', - 'message' => '创建你的第一个故障模板', - 'success' => '成功创建新的故障模板。', - 'failure' => '创建模板失败。', - ], - 'edit' => [ - 'title' => '编辑模板', - 'success' => '成功更新故障模板。', - 'failure' => '模板修改失败', - ], - 'delete' => [ - 'success' => '模板已删除。', - 'failure' => '无法删除该模板,请再试一次。', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => '计划维护', - 'logged' => '{0}目前没有任何维护信息,很棒!|[1]你已经记录下1个维护计划.|[2,*]你已经报告了 :count 个维护计划.', - 'scheduled_at' => '计划在 :timestamp', - 'add' => [ - 'title' => '添加维护计划', - 'success' => '维护计划已添加。', - 'failure' => '添加维护计划时出错了,请再试一次。', - ], - 'edit' => [ - 'title' => '编辑维护计划', - 'success' => '维护计划已更新!', - 'failure' => '编辑计划时出错了,请再试一次。', - ], - 'delete' => [ - 'success' => '该维护计划已被删除,它将从您的状态页上消失。', - 'failure' => '无法删除该维护计划。请再试一次。', - ], - ], - - // Components - 'components' => [ - 'components' => '组件', - 'component_statuses' => '组件状态', - 'listed_group' => '根据 :name 分组', - 'add' => [ - 'title' => '添加组件', - 'message' => '没有组件,马上添加一个吧', - 'success' => '组件已添加。', - 'failure' => '组件更新失败,请稍后再试。', - ], - 'edit' => [ - 'title' => '编辑组件', - 'success' => '组件已更新。', - 'failure' => '组件更新失败,请稍后再试。', - ], - 'delete' => [ - 'success' => '组件已删除。', - 'failure' => '无法删除组件,请稍后再试。', - ], - - // Component groups - 'groups' => [ - 'groups' => '组件分组|组件分组', - 'no_components' => '没有组件分组,马上添加一个吧', - 'add' => [ - 'title' => '添加组件分组', - 'success' => '分组已添加。', - 'failure' => '组件更新失败,请稍后再试。', - ], - 'edit' => [ - 'title' => '编辑组件分组', - 'success' => '分组已更新。', - 'failure' => '组件更新失败,请稍后再试。', - ], - 'delete' => [ - 'success' => '组建分组已删除。', - 'failure' => '无法删除组件分组,请稍后再试。', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => '图表', - 'add' => [ - 'title' => '创建图表', - 'message' => '你应该添加一个图表。', - 'success' => '图表已创建。', - 'failure' => '添加图表时出错了,请再试一次。', - ], - 'edit' => [ - 'title' => '编辑图表', - 'success' => '图表已更新。', - 'failure' => '添加图表时出错了,请再试一次。', - ], - 'delete' => [ - 'success' => '图表已删除并将不会出现在状态页中', - 'failure' => '无法删除图表,请稍后再试。', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => '通知', - 'description' => '有新增故障或有组件更新时,订阅者将会收到邮件提醒。', - 'description_disabled' => '要使用此功能,您需要允许通知订阅。', - 'verified' => '已认证', - 'not_verified' => '未认证', - 'subscriber' => ':email, 订阅于 :date', - 'no_subscriptions' => '已订阅全部更新', - 'global' => '全局订阅', - 'add' => [ - 'title' => '添加邮件订阅', - 'success' => '邮件订阅已添加成功。', - 'failure' => '无法添加订阅者,请稍后再试。', - 'help' => '每行输入一位订阅者', - ], - 'edit' => [ - 'title' => '更新订阅者', - 'success' => '订阅者信息已更新.', - 'failure' => '无法编辑订阅者,请稍后再试。', - ], - ], - - // Team - 'team' => [ - 'team' => '团队', - 'member' => '成员', - 'profile' => '用户信息', - 'description' => '团队成员可维护组件和故障信息。', - 'add' => [ - 'title' => '添加团队成员', - 'success' => '团队成员已添加', - 'failure' => '无法添加团队成员,请稍后再试。', - ], - 'edit' => [ - 'title' => '更新配置文件', - 'success' => '个人资料已更新', - 'failure' => '更新档案时发生错误,请稍后再试。', - ], - 'delete' => [ - 'success' => '团队成员已删除.', - 'failure' => '无法添加团队成员,请稍后再试。', - ], - 'invite' => [ - 'title' => '邀请团队成员', - 'success' => '团队成员已邀请成功.', - 'failure' => '邀请无法发送,请稍后再试。', - ], - ], - - // Settings - 'settings' => [ - 'settings' => '系统设置', - 'app-setup' => [ - 'app-setup' => '常规选项', - 'images-only' => '只能上传图像。', - 'too-big' => '您上传的文件太大了。上传的图像大小应小于:size', - ], - 'analytics' => [ - 'analytics' => '第三方统计', - ], - 'log' => [ - 'log' => '日志', - ], - 'localization' => [ - 'localization' => '时间和语言', - ], - 'customization' => [ - 'customization' => '个性定制', - 'header' => '自定义页眉 HTML', - 'footer' => '自定义页脚 HTML', - ], - 'mail' => [ - 'mail' => '邮件', - 'test' => '测试', - 'email' => [ - 'subject' => 'Cachet 通知测试', - 'body' => '这是来自 Cachet 的测试通知邮件。', - ], - ], - 'security' => [ - 'security' => '安全设置', - 'two-factor' => '没有启用双因素身份验证的用户', - ], - 'stylesheet' => [ - 'stylesheet' => '附加样式', - ], - 'theme' => [ - 'theme' => '主题外观', - ], - 'edit' => [ - 'success' => '设置已保存。', - 'failure' => '无法保存设置。', - ], - 'credits' => [ - 'credits' => '关于开发团队', - 'contributors' => '贡献者', - 'license' => 'Cachet 是 Alt Three Services Limited 开发的一个开源项目,使用 BSD-3 授权。', - 'backers-title' => '后勤力量和赞助商', - 'backers' => '如果您想为后续的开发提供支持,请查看 Cachet Patreon。', - 'thank-you' => '感谢您和 :count 位贡献者们', - ], - ], - - // Login - 'login' => [ - 'login' => '登录', - 'logged_in' => '您已登录', - 'welcome' => '欢迎回来!', - 'two-factor' => '请输入您的双重验证码。', - ], - - // Sidebar footer - 'help' => '帮助', - 'status_page' => '状态页', - 'logout' => '退出', - - // Notifications - 'notifications' => [ - 'notifications' => '通知', - 'awesome' => '太棒了!', - 'whoops' => '抱歉,', - ], - - // Widgets - 'widgets' => [ - 'support' => '支持 Cachet', - 'support_subtitle' => '查看我们的 Patreon 页面!', - 'news' => '最新消息', - 'news_subtitle' => '获取最近的更新', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => '欢迎来到你的状态页!', - 'message' => '您的状态页面即将准备好了!您可能想要配置这些额外的设置', - 'close' => '带我直接进入控制台', - 'steps' => [ - 'component' => '添加组件', - 'incident' => '添加故障', - 'customize' => '主题设置', - 'team' => '添加用户', - 'api' => '生成 API Token', - 'two-factor' => '双因素身份验证', - ], - ], - -]; diff --git a/resources/lang/zh-CN/forms.php b/resources/lang/zh-CN/forms.php deleted file mode 100644 index 7d67b502..00000000 --- a/resources/lang/zh-CN/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => '电子邮箱', - 'username' => '用户名', - 'password' => '密码', - 'site_name' => '站点标题', - 'site_domain' => '域名', - 'site_timezone' => '选择时区', - 'site_locale' => '选择您的语言', - 'enable_google2fa' => '启用谷歌两步身份验证', - 'cache_driver' => '缓存驱动', - 'queue_driver' => '队列存储方式', - 'session_driver' => '会话数据存储驱动', - 'mail_driver' => '邮件发送方式', - 'mail_host' => '电子邮件服务器', - 'mail_address' => '发件人', - 'mail_username' => '邮箱用户名', - 'mail_password' => '邮箱密码', - ], - - // Login form fields - 'login' => [ - 'login' => '用户名或者邮箱地址', - 'email' => '电子邮箱', - 'password' => '密码', - '2fauth' => '两步验证代码', - 'invalid' => '无效的用户名或密码', - 'invalid-token' => '无效的代码。', - 'cookies' => '您必须启用 cookies 来进行登录。', - 'rate-limit' => '已超出登陆次数限制。', - 'remember_me' => '记住我', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => '名称', - 'status' => '状态', - 'component' => '组件', - 'component_status' => '组件状态', - 'message' => '描述', - 'message-help' => '您可以使用Markdown语言。', - 'occurred_at' => '这次故障是什么时候发生的?', - 'notify_subscribers' => '通知订阅者', - 'notify_disabled' => '由于计划维护,关于此事件或此部件的通知将被静默处理。', - 'visibility' => '故障的可见性', - 'stick_status' => '关注故障', - 'stickied' => '已关注', - 'not_stickied' => '未关注', - 'public' => '公共可见', - 'logged_in_only' => '仅登录用户可见', - 'templates' => [ - 'name' => '名称', - 'template' => '模板', - 'twig' => '故障模板可以使用 Twig 模板语言', - ], - ], - - 'schedules' => [ - 'name' => '名称', - 'status' => '状态', - 'message' => '描述', - 'message-help' => '您可以使用Markdown语言。', - 'scheduled_at' => '这次维护将在何时进行?', - 'completed_at' => '这次维护将在何时结束?', - 'templates' => [ - 'name' => '名称', - 'template' => '模板', - 'twig' => '故障模板可以使用 Twig 模板语言', - ], - ], - - // Components form fields - 'components' => [ - 'name' => '名称', - 'status' => '状态', - 'group' => '组件分组', - 'description' => '组件描述', - 'link' => '链接', - 'tags' => '标签', - 'tags-help' => '以逗号分隔。', - 'enabled' => '启用', - - 'groups' => [ - 'name' => '名称', - 'collapsing' => '展开/折叠选项', - 'visible' => '总是展开', - 'collapsed' => '默认折叠', - 'collapsed_incident' => '折叠分组,但当有故障时展开', - 'visibility' => '可见性', - 'visibility_public' => '对所有人可见', - 'visibility_authenticated' => '只对已登录用户可见', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => '名称', - 'description' => '组件描述', - 'start_at' => '计划开始时间', - 'timezone' => '时区', - 'schedule_frequency' => '计划间隔 (秒)', - 'completion_latency' => '延误时长 (秒)', - 'group' => '组件分组', - 'active' => '活跃?', - 'groups' => [ - 'name' => '组名', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => '名称', - 'suffix' => '后缀', - 'description' => '组件描述', - 'description-help' => '您可以使用Markdown语言。', - 'display-chart' => '是否在状态页上显示图表?', - 'default-value' => '默认值', - 'calc_type' => '图表计算方法', - 'type_sum' => '求和', - 'type_avg' => '求平均', - 'places' => '小数点位数', - 'default_view' => '默认视图', - 'threshold' => '每个度量点之间应当间隔多少分钟?', - 'visibility' => '可见性', - 'visibility_authenticated' => '只对已登录用户可见', - 'visibility_public' => '对所有人可见', - 'visibility_hidden' => '总是隐藏', - - 'points' => [ - 'value' => '数值', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => '站点标题', - 'site-url' => '站点地址(URL)', - 'display-graphs' => '在状态页上显示图表', - 'about-this-page' => '关于本页', - 'days-of-incidents' => '每页最多显示故障天数', - 'time_before_refresh' => '状态页刷新速度(秒)', - 'major_outage_rate' => '重大故障阈值 (%)', - 'banner' => '横幅图像', - 'banner-help' => '建议上传文件宽度不大于 930 像素。', - 'subscribers' => '允许用户订阅邮件通知', - 'suppress_notifications_in_maintenance' => '当计划维护发生时静默处理事件通知?', - 'skip_subscriber_verification' => '是否跳过用户邮件验证?(小心,这可能会被滥用)', - 'automatic_localization' => '根据访客的系统语言自动本地化状态页面', - 'enable_external_dependencies' => '启用第三方服务 (Google Fonts, Tracker 等)', - 'show_timezone' => '显示状态页所在的时区', - 'only_disrupted_days' => '仅显示有故障的日期', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics 代码', - 'analytics_gosquared' => 'GoSquared Analytics 代码', - 'analytics_piwik_url' => 'Piwik 实例的 URL', - 'analytics_piwik_siteid' => 'Piwik 的站点 id', - ], - 'localization' => [ - 'site-timezone' => '系统时区', - 'site-locale' => '系统语言', - 'date-format' => '日期格式', - 'incident-date-format' => '故障日期和时间格式', - ], - 'security' => [ - 'allowed-domains' => '允许的 CORS 域', - 'allowed-domains-help' => '以逗号分隔。默认情况下,API跨域请求将自动允许以上已设置的域。', - 'always-authenticate' => '始终验证', - 'always-authenticate-help' => '需要登录才能查看 Cachet 页面', - ], - 'stylesheet' => [ - 'custom-css' => '自定义 CSS 样式表', - ], - 'theme' => [ - 'background-color' => '网站背景', - 'background-fills' => '区块填充色(组件, 故障, 页尾)', - 'banner-background-color' => '横幅背景', - 'banner-padding' => '横幅图像边距', - 'fullwidth-banner' => '是否启用full width banner?', - 'text-color' => '文字颜色', - 'dashboard-login' => '在页尾显示 管理后台 的入口?', - 'reds' => '红 (用于错误类提示)', - 'blues' => '蓝 (用于信息类提示)', - 'greens' => '绿 (用于成功类提示)', - 'yellows' => '黄 (用于警告类提示)', - 'oranges' => '橙 (用于通知类提示)', - 'metrics' => '图表填充色', - 'links' => '链接', - ], - ], - - 'user' => [ - 'username' => '用户名', - 'email' => '电子邮箱', - 'password' => '密码', - 'api-token' => 'API 令牌', - 'api-token-help' => '重新生成您的 API Token将阻止现有的应用程序访问Cachet。', - 'gravatar' => '修改您的 Gravatar 头像。', - 'user_level' => '用户等级', - 'levels' => [ - 'admin' => '管理员', - 'user' => '普通用户', - ], - '2fa' => [ - 'help' => '启用双因素身份验证会增加您的帐户安全。您将需要下载 Google Authenticator 或类似的应用到您的移动设备。当您登录时将会要求您提供由应用程序生成的一个短码。', - ], - 'team' => [ - 'description' => '请输入您要邀请的团队成员的邮件地址:', - 'email' => '团队成员的电子邮箱地址', - ], - ], - - 'general' => [ - 'timezone' => '选择时区', - ], - - 'seo' => [ - 'title' => 'SEO 标题', - 'description' => 'SEO 描述', - ], - - // Buttons - 'add' => '增加', - 'save' => '保存​​', - 'update' => '更新', - 'create' => '创建', - 'edit' => '编辑', - 'delete' => '删除', - 'submit' => '提交', - 'cancel' => '取消', - 'remove' => '删除', - 'invite' => '邀请', - 'signup' => '注册', - 'manage_updates' => '管理更新', - - // Other - 'optional' => '* 可选', -]; diff --git a/resources/lang/zh-CN/notifications.php b/resources/lang/zh-CN/notifications.php deleted file mode 100644 index 54d4e2ff..00000000 --- a/resources/lang/zh-CN/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => '组件状态已更新', - 'greeting' => '一个组件的状态已被更新!', - 'content' => ':name 状态已由 :old_status 变为 :new_status。', - 'action' => '查看', - ], - 'slack' => [ - 'title' => '组件状态已更新', - 'content' => ':name 状态已由 :old_status 变为 :new_status。', - ], - 'sms' => [ - 'content' => ':name 状态已由 :old_status 变为 :new_status。', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => '有新故障报告', - 'greeting' => '在 :app_name 处有新故障报告。', - 'content' => '故障 :name 已被报告', - 'action' => '查看', - ], - 'slack' => [ - 'title' => '故障 :name 已报告', - 'content' => '在 :app_name 处有新故障报告。', - ], - 'sms' => [ - 'content' => '在 :app_name 处有新故障报告。', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => '有故障更新', - 'content' => ':name 被更新', - 'title' => ':name 被更新至 :new_status', - 'action' => '查看', - ], - 'slack' => [ - 'title' => ':name 已更新', - 'content' => ':name 被更新至 :new_status', - ], - 'sms' => [ - 'content' => '故障 :name 已被更新', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => '新的维护计划已创建', - 'content' => ':name 已计划于 :date 进行', - 'title' => '新的计划维护已创建。', - 'action' => '查看', - ], - 'slack' => [ - 'title' => '新计划已创建!', - 'content' => ':name 已计划于 :date 进行', - ], - 'sms' => [ - 'content' => ':name 已计划于 :date 进行', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => '验证您的订阅', - 'content' => '点击验证您对 :app_name 状态页的订阅。', - 'title' => '验证您对 :app_name 状态页的订阅。', - 'action' => '验证', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => '管理您的订阅', - 'content' => '点击管理您对 :app_name 状态页的订阅。', - 'title' => '点击管理您对 :app_name 状态页的订阅。', - 'action' => '管理订阅', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => '这是来自 Cachet 的消息!', - 'content' => '这是来自 Cachet 的测试通知邮件!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => '这是您的邀请函...', - 'content' => '您已被邀请加入 :app_name 状态页。', - 'title' => '您被邀请加入 :app_name 状态页。', - 'action' => '接受', - ], - ], - ], -]; diff --git a/resources/lang/zh-CN/pagination.php b/resources/lang/zh-CN/pagination.php deleted file mode 100644 index c95f0ea2..00000000 --- a/resources/lang/zh-CN/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - '上一个', - 'next' => '下一个', - -]; diff --git a/resources/lang/zh-CN/setup.php b/resources/lang/zh-CN/setup.php deleted file mode 100644 index 021f0d24..00000000 --- a/resources/lang/zh-CN/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - '设置', - 'title' => '安装 Cachet', - 'service_details' => '服务细节', - 'env_setup' => '环境设置', - 'status_page_setup' => '状态页面设置', - 'show_support' => '在页面底部显示 “由 Cachet 驱动。”', - 'admin_account' => '管理员帐户', - 'complete_setup' => '设置完成', - 'completed' => 'Cachet已成功配置!', - 'finish_setup' => '前往控制面板', -]; diff --git a/resources/lang/zh-CN/validation.php b/resources/lang/zh-CN/validation.php deleted file mode 100644 index 5913f5d6..00000000 --- a/resources/lang/zh-CN/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - '您必须同意 :attribute。', - 'active_url' => ':attribute 不是一个有效的URL网址。', - 'after' => ':attribute 必须在 :date 之后。', - 'alpha' => ':attribute 只能包含字母。', - 'alpha_dash' => ':attribute 只能包含字母,数字和破折号。', - 'alpha_num' => ':attribute 只允许包含字母和数字。', - 'array' => ':attribute 必须是个数组。', - 'before' => ':attribute 必须在 :date 之前。', - 'between' => [ - 'numeric' => ':attribute 必须在 :min 和 :max 之间。', - 'file' => ':attribute 必须在 :min KB 到 :max KB 之间。', - 'string' => ':attribute 包含的字符数量必须在 :min 到 :max 之间。', - 'array' => ':attribute 必须在 :min 到 :max 个数目之间。', - ], - 'boolean' => ':attribute 字段必须为 true 或 false。', - 'confirmed' => ':attribute 的两次输入不匹配。', - 'date' => ':attribute 不是有效的日期。', - 'date_format' => ':attribute 不符合格式 :format 。', - 'different' => ':attribute 和 :other 不能相同。', - 'digits' => ':attribute 必须是 :digits 位数字。', - 'digits_between' => ':attribute 必须是 :min - :max 位数字。', - 'email' => ':attribute 必须是一个有效的电子邮件地址。', - 'exists' => '选择的 :attribute 无效。', - 'distinct' => ':attribute 有重复。', - 'filled' => ':attribute 字段必填。', - 'image' => ':attribute 必须是图片。', - 'in' => '选择的 :attribute 无效。', - 'in_array' => ':attribute 不在 :other 中。', - 'integer' => ':attribute 必须是整数。', - 'ip' => ':attribute 必须是一个有效的 IP 地址。', - 'json' => ':attribute 必须是规范的 JSON 字串。', - 'max' => [ - 'numeric' => ':attribute 不允许大于 :max。', - 'file' => ':attribute 不能大于 :max KB。', - 'string' => ':attribute 的字符数量不能大于 :max 。', - 'array' => ':attribute 不能超过 :max 个。', - ], - 'mimes' => ':attribute 文件类型必须是 :values。', - 'min' => [ - 'numeric' => ':attribute 必须至少是 :min。', - 'file' => ':attribute 至少需要 :min KB。', - 'string' => ':attribute 最少需要有 :min 个字符。', - 'array' => ':attribute 至少需要有 :min 项。', - ], - 'not_in' => '选择的 :attribute 无效。', - 'numeric' => ':attribute 必须是数字。', - 'present' => ':attribute 为必填项。', - 'regex' => ':attribute 的格式无效', - 'required' => ':attribute 字段必填。', - 'required_if' => ':attribute 字段在 :other 是 :value 时是必填的。', - 'required_unless' => ':attribute 是必须的除非 :other 在 :values 中。', - 'required_with' => '当含有 :values 时, :attribute 是必需的。', - 'required_with_all' => '当含有 :values 时, :attribute 是必需的。', - 'required_without' => '当 :values 不存在时, :attribute 是必填的。', - 'required_without_all' => '当没有任何 :values 存在时,:attribute 字段为必填项。', - 'same' => ':attribute 和 :other 必须匹配。', - 'size' => [ - 'numeric' => ':attribute 的大小必须是 :size 。', - 'file' => ':attribute 必须是 :size KB大小', - 'string' => ':attribute 必须是 :size 个字符', - 'array' => ':attribute 必须包含 :size 个项。', - ], - 'string' => ':attribute 必须是一个字符串。', - 'timezone' => ':attribute 必须是个有效的区域。', - 'unique' => ':attribute 已经被占用', - 'url' => ':attribute 的格式无效', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => '自定义消息', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/zh-TW/cachet.php b/resources/lang/zh-TW/cachet.php deleted file mode 100644 index bb3af4ff..00000000 --- a/resources/lang/zh-TW/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'Last updated :timestamp', - 'status' => [ - 0 => 'Unknown', - 1 => '正常', - 2 => '效能問題', - 3 => '部分停止運作', - 4 => '停止運作', - ], - 'group' => [ - 'other' => 'Other Components', - ], - 'select_all' => 'Select All', - 'deselect_all' => 'Deselect All', - ], - - // Incidents - 'incidents' => [ - 'none' => 'No incidents reported', - 'past' => 'Past Incidents', - 'stickied' => 'Stickied Incidents', - 'scheduled' => 'Maintenance', - 'scheduled_at' => ',於:timestamp', - 'posted' => 'Posted :timestamp by :username', - 'posted_at' => 'Posted at :timestamp', - 'status' => [ - 1 => '調查中', - 2 => '已辨明', - 3 => '警戒中', - 4 => '已修復', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'Upcoming', - 1 => 'In Progress', - 2 => 'Complete', - ], - ], - - // Service Status - 'service' => [ - 'good' => '[0,1]System operational|[2,*]All systems are operational', - 'bad' => '[0,1]The system is experiencing issues|[2,*]Some systems are experiencing issues', - 'major' => '[0,1]The system is experiencing major issues|[2,*]Some systems are experiencing major issues', - ], - - 'api' => [ - 'regenerate' => '重新產生 API 金鑰', - 'revoke' => '撤銷 API 密鑰', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'Last Hour', - 'hourly' => 'Last 12 Hours', - 'weekly' => 'Week', - 'monthly' => 'Month', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'Subscribe to status changes and incident updates', - 'unsubscribe' => 'Unsubscribe', - 'button' => 'Subscribe', - 'manage_subscription' => 'Manage subscription', - 'manage' => [ - 'notifications' => '通知', - 'notifications_for' => 'Manage notifications for', - 'no_subscriptions' => 'You\'re currently subscribed to all updates.', - 'update_subscription' => 'Update Subscription', - 'my_subscriptions' => 'You\'re currently subscribed to the following updates.', - 'manage_at_link' => 'Manage your subscriptions at :link', - ], - 'email' => [ - 'manage_subscription' => 'We\'ve sent you an email, please click the link to manage your subscription', - 'subscribe' => 'Subscribe to email updates.', - 'subscribed' => 'You\'ve been subscribed to email notifications, please check your email to confirm your subscription.', - 'updated-subscribe' => 'You\'ve succesfully updated your subscriptions.', - 'verified' => 'Your email subscription has been confirmed. Thank you!', - 'manage' => 'Manage your subscription', - 'unsubscribe' => 'Unsubscribe from email updates.', - 'unsubscribed' => 'Your email subscription has been cancelled.', - 'failure' => 'Something went wrong with the subscription.', - 'already-subscribed' => 'Cannot subscribe :email because they\'re already subscribed.', - ], - ], - - 'signup' => [ - 'title' => 'Sign Up', - 'username' => '用戶名', - 'email' => '電郵地址', - 'password' => '密碼', - 'success' => 'Your account has been created.', - 'failure' => 'Something went wrong with the signup.', - ], - - 'system' => [ - 'update' => 'There is a newer version of Cachet available. You can learn how to update here!', - ], - - // Modal - 'modal' => [ - 'close' => 'Close', - 'subscribe' => [ - 'title' => 'Subscribe to component updates', - 'body' => 'Enter your email address to subscribe to updates for this component. If you\'re already subscribed, you\'ll already receive emails for this component.', - 'button' => 'Subscribe', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'Details and updates about the :name incident that occurred on :date', - 'schedule' => 'Details about the scheduled maintenance period :name starting :startDate', - 'subscribe' => 'Subscribe to :app in order to receive updates of incidents and scheduled maintenance periods', - 'overview' => 'Stay up to date with the latest service updates from :app.', - ], - ], - - // Other - 'home' => 'Home', - 'powered_by' => 'Powered by Cachet.', - 'timezone' => 'Times are shown in :timezone.', - 'about_this_site' => 'About This Site', - 'rss-feed' => 'RSS', - 'atom-feed' => 'Atom', - 'feed' => 'Status 訂閱', - -]; diff --git a/resources/lang/zh-TW/dashboard.php b/resources/lang/zh-TW/dashboard.php deleted file mode 100644 index 9725ac86..00000000 --- a/resources/lang/zh-TW/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - '儀表板', - 'writeable_settings' => 'The Cachet settings directory is not writeable. Please make sure that ./bootstrap/cachet is writeable by the web server.', - - // Incidents - 'incidents' => [ - 'title' => 'Incidents & Maintenance', - 'incidents' => '事件', - 'logged' => '{0}There are no incidents, good work.|[1]You have logged one incident.|[2,*]You have reported :count incidents.', - 'incident-create-template' => '新增模板', - 'incident-templates' => '事件模板', - 'updates' => [ - 'title' => 'Incident updates for :incident', - 'count' => '{0}Zero Updates|[1]One Update|[2]Two Updates|[3,*]Several Updates', - 'add' => [ - 'title' => 'Create new incident update', - 'success' => 'Your new incident update has been created.', - 'failure' => 'Something went wrong with the incident update.', - ], - 'edit' => [ - 'title' => 'Edit incident update', - 'success' => 'The incident update has been updated.', - 'failure' => 'Something went wrong updating the incident update', - ], - ], - 'reported_by' => 'Reported :timestamp by :user', - 'add' => [ - 'title' => 'Report an incident', - 'success' => 'Incident added.', - 'failure' => 'There was an error adding the incident, please try again.', - ], - 'edit' => [ - 'title' => 'Edit an incident', - 'success' => '事件更新成功。', - 'failure' => 'There was an error editing the incident, please try again.', - ], - 'delete' => [ - 'success' => 'The incident has been deleted and will not show on your status page.', - 'failure' => 'The incident could not be deleted, please try again.', - ], - - // Incident templates - 'templates' => [ - 'title' => '事件模板', - 'add' => [ - 'title' => 'Create an incident template', - 'message' => 'Create your first incident template.', - 'success' => 'Your new incident template has been created.', - 'failure' => 'Something went wrong with the incident template.', - ], - 'edit' => [ - 'title' => 'Edit Template', - 'success' => 'The incident template has been updated.', - 'failure' => 'Something went wrong updating the incident template', - ], - 'delete' => [ - 'success' => 'The incident template has been deleted.', - 'failure' => 'The incident template could not be deleted, please try again.', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'Maintenance', - 'logged' => '{0}There has been no Maintenance, good work.|[1]You have logged one schedule.|[2,*]You have reported :count schedules.', - 'scheduled_at' => '排程於 :timestamp', - 'add' => [ - 'title' => 'Add Maintenance', - 'success' => 'Maintenance added.', - 'failure' => 'Something went wrong adding the Maintenance, please try again.', - ], - 'edit' => [ - 'title' => 'Edit Maintenance', - 'success' => 'Maintenance has been updated!', - 'failure' => 'Something went wrong editing the Maintenance, please try again.', - ], - 'delete' => [ - 'success' => 'The Maintenance has been deleted and will not show on your status page.', - 'failure' => 'The Maintenance could not be deleted, please try again.', - ], - ], - - // Components - 'components' => [ - 'components' => '組件', - 'component_statuses' => '組件狀態', - 'listed_group' => '屬於:name組', - 'add' => [ - 'title' => 'Add a component', - 'message' => '你應該先新增一個組件。', - 'success' => 'Component created.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component', - 'success' => 'Component updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'The component has been deleted!', - 'failure' => 'The component could not be deleted, please try again.', - ], - - // Component groups - 'groups' => [ - 'groups' => '組件組|組件組', - 'no_components' => 'You should add a component group.', - 'add' => [ - 'title' => 'Add a component group', - 'success' => 'Component group added.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a component group', - 'success' => 'Component group updated.', - 'failure' => 'Something went wrong with the component group, please try again.', - ], - 'delete' => [ - 'success' => 'Component group has been deleted!', - 'failure' => 'The component group could not be deleted, please try again.', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => '效能度量', - 'add' => [ - 'title' => 'Create a metric', - 'message' => 'You should add a metric.', - 'success' => 'Metric created.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'edit' => [ - 'title' => 'Edit a metric', - 'success' => 'Metric updated.', - 'failure' => 'Something went wrong with the metric, please try again.', - ], - 'delete' => [ - 'success' => 'The metric has been deleted and will no longer display on your status page.', - 'failure' => 'The metric could not be deleted, please try again.', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'Subscribers', - 'description' => 'Subscribers will receive email updates when incidents are created or components are updated.', - 'description_disabled' => 'To use this feature, you need allow people to signup for notifications.', - 'verified' => 'Verified', - 'not_verified' => 'Not verified', - 'subscriber' => ':email, subscribed :date', - 'no_subscriptions' => 'Subscribed to all updates', - 'global' => 'Globally subscribed', - 'add' => [ - 'title' => 'Add a new subscriber', - 'success' => 'Subscriber has been added!', - 'failure' => 'Something went wrong adding the subscriber, please try again.', - 'help' => 'Enter each subscriber on a new line.', - ], - 'edit' => [ - 'title' => 'Update subscriber', - 'success' => 'Subscriber has been updated!', - 'failure' => 'Something went wrong editing the subscriber, please try again.', - ], - ], - - // Team - 'team' => [ - 'team' => '團隊', - 'member' => '成員', - 'profile' => '個人檔案', - 'description' => '團隊成員可以新增、修改、或更新組件和事件。', - 'add' => [ - 'title' => 'Add a new team member', - 'success' => 'Team member added.', - 'failure' => 'The team member could not be added, please try again.', - ], - 'edit' => [ - 'title' => 'Update profile', - 'success' => 'Profile updated.', - 'failure' => 'Something went wrong updating the profile, please try again.', - ], - 'delete' => [ - 'success' => 'Team member has been deleted and will no longer have access to the dashboard!', - 'failure' => 'The team member could not be added, please try again.', - ], - 'invite' => [ - 'title' => 'Invite a new team member', - 'success' => 'An invite has been sent', - 'failure' => 'The invite could not be sent, please try again.', - ], - ], - - // Settings - 'settings' => [ - 'settings' => '設定', - 'app-setup' => [ - 'app-setup' => '應用程式設定', - 'images-only' => '你只能上載圖片。', - 'too-big' => '檔案大小過大。請嘗試上載一張大小小於 :size 的圖片。', - ], - 'analytics' => [ - 'analytics' => 'Analytics', - ], - 'log' => [ - 'log' => 'Log', - ], - 'localization' => [ - 'localization' => 'Localization', - ], - 'customization' => [ - 'customization' => 'Customization', - 'header' => 'Custom Header HTML', - 'footer' => 'Custom Footer HTML', - ], - 'mail' => [ - 'mail' => 'Mail', - 'test' => 'Test', - 'email' => [ - 'subject' => 'Test notification from Cachet', - 'body' => 'This is a test notification from Cachet.', - ], - ], - 'security' => [ - 'security' => '安全', - 'two-factor' => '下列用戶未使用雙重認證', - ], - 'stylesheet' => [ - 'stylesheet' => '樣式表', - ], - 'theme' => [ - 'theme' => '主題', - ], - 'edit' => [ - 'success' => '設定已儲存。', - 'failure' => '設定儲存失敗。', - ], - 'credits' => [ - 'credits' => 'Credits', - 'contributors' => 'Contributors', - 'license' => 'Cachet is a BSD-3-licensed open source project, released by Alt Three Services Limited.', - 'backers-title' => 'Backers & Sponsors', - 'backers' => 'If you\'d like to support future development, check out the Cachet Patreon campaign.', - 'thank-you' => 'Thank you to each and every one of the :count contributors.', - ], - ], - - // Login - 'login' => [ - 'login' => '登入', - 'logged_in' => '你已經登錄。', - 'welcome' => '歡迎回來!', - 'two-factor' => '請輸入驗證碼。', - ], - - // Sidebar footer - 'help' => '幫助', - 'status_page' => '狀態頁', - 'logout' => '登出', - - // Notifications - 'notifications' => [ - 'notifications' => '通知', - 'awesome' => '太好了。', - 'whoops' => '唉呀。', - ], - - // Widgets - 'widgets' => [ - 'support' => 'Support Cachet', - 'support_subtitle' => 'Check out our Patreon page!', - 'news' => 'Latest News', - 'news_subtitle' => 'Get the latest update', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'Welcome to your new status page, :username!', - 'message' => '你的狀態頁快準備好了!不過你也許先想調整一下以下設定。', - 'close' => 'I\'m good thanks!', - 'steps' => [ - 'component' => '新增組件', - 'incident' => '新增事件', - 'customize' => '定制化', - 'team' => '新增用戶', - 'api' => '生成 API 密鑰', - 'two-factor' => 'Setup Two Factor Authentication', - ], - ], - -]; diff --git a/resources/lang/zh-TW/forms.php b/resources/lang/zh-TW/forms.php deleted file mode 100644 index e714ba15..00000000 --- a/resources/lang/zh-TW/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => '電郵地址', - 'username' => '用戶名', - 'password' => '密碼', - 'site_name' => '網站名稱', - 'site_domain' => '網站域名', - 'site_timezone' => '選擇你的時區', - 'site_locale' => '選擇你的語言', - 'enable_google2fa' => '啟用 Google 兩步驗證', - 'cache_driver' => 'Cache Driver', - 'queue_driver' => 'Queue Driver', - 'session_driver' => 'Session Driver', - 'mail_driver' => 'Mail Driver', - 'mail_host' => 'Mail Host', - 'mail_address' => 'Mail From Address', - 'mail_username' => 'Mail Username', - 'mail_password' => 'Mail Password', - ], - - // Login form fields - 'login' => [ - 'login' => 'Username or Email', - 'email' => '電郵地址', - 'password' => '密碼', - '2fauth' => '驗證碼', - 'invalid' => 'Invalid username or password', - 'invalid-token' => '錯誤的驗證碼', - 'cookies' => 'You must enable cookies to login.', - 'rate-limit' => 'Rate limit exceeded.', - 'remember_me' => 'Remember me', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => '名稱', - 'status' => '狀態', - 'component' => '組件', - 'component_status' => 'Component Status', - 'message' => '訊息', - 'message-help' => '你可以使用 Markdown 。', - 'occurred_at' => 'When did this incident occur?', - 'notify_subscribers' => 'Notify subscribers?', - 'notify_disabled' => 'Due to scheduled maintenance, notifications about this incident or its components will be suppressed.', - 'visibility' => 'Incident Visibility', - 'stick_status' => 'Stick Incident', - 'stickied' => 'Stickied', - 'not_stickied' => 'Not Stickied', - 'public' => 'Viewable by public', - 'logged_in_only' => 'Only visible to logged in users', - 'templates' => [ - 'name' => '名稱', - 'template' => '範本', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - 'schedules' => [ - 'name' => '名稱', - 'status' => '狀態', - 'message' => '訊息', - 'message-help' => '你可以使用 Markdown 。', - 'scheduled_at' => 'When is this maintenance scheduled for?', - 'completed_at' => 'When did this maintenance complete?', - 'templates' => [ - 'name' => '名稱', - 'template' => '範本', - 'twig' => 'Incident Templates can make use of the Twig templating language.', - ], - ], - - // Components form fields - 'components' => [ - 'name' => '名稱', - 'status' => '狀態', - 'group' => '組別', - 'description' => '描述', - 'link' => '連結', - 'tags' => '標籤', - 'tags-help' => '請以半角逗號分隔。', - 'enabled' => 'Component enabled?', - - 'groups' => [ - 'name' => '名稱', - 'collapsing' => 'Expand/Collapse options', - 'visible' => 'Always expanded', - 'collapsed' => 'Collapse the group by default', - 'collapsed_incident' => 'Collapse the group, but expand if there are issues', - 'visibility' => 'Visibility', - 'visibility_public' => 'Visible to public', - 'visibility_authenticated' => 'Visible only to logged in users', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => '名稱', - 'description' => '描述', - 'start_at' => 'Schedule start time', - 'timezone' => 'Timezone', - 'schedule_frequency' => 'Schedule frequency (in seconds)', - 'completion_latency' => 'Completion latency (in seconds)', - 'group' => '組別', - 'active' => 'Active?', - 'groups' => [ - 'name' => 'Group Name', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => '名稱', - 'suffix' => '後綴', - 'description' => '描述', - 'description-help' => '你可以使用 Markdown 。', - 'display-chart' => '在狀態頁上顯示圖表?', - 'default-value' => 'Default value', - 'calc_type' => 'Calculation of metrics', - 'type_sum' => '總和', - 'type_avg' => '平均', - 'places' => 'Decimal places', - 'default_view' => 'Default view', - 'threshold' => 'How many minutes of threshold between metric points?', - 'visibility' => 'Visibility', - 'visibility_authenticated' => 'Visible to authenticated users', - 'visibility_public' => 'Visible to everybody', - 'visibility_hidden' => 'Always hidden', - - 'points' => [ - 'value' => '值', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => '網站名稱', - 'site-url' => '網站 URL', - 'display-graphs' => '在狀態頁上顯示圖片?', - 'about-this-page' => '關於本站', - 'days-of-incidents' => '顯示多少天前的事件?', - 'time_before_refresh' => 'Status page refresh rate (in seconds)', - 'major_outage_rate' => 'Major outage threshold (in %)', - 'banner' => 'Banner Image', - 'banner-help' => "It's recommended that you upload files no bigger than 930px wide", - 'subscribers' => 'Allow people to signup to email notifications?', - 'suppress_notifications_in_maintenance' => 'Suppress notifications when incident occurs during maintenance period?', - 'skip_subscriber_verification' => 'Skip verifying of users? (Be warned, you could be spammed)', - 'automatic_localization' => 'Automatically localise your status page to your visitor\'s language?', - 'enable_external_dependencies' => 'Enable Third Party Dependencies (Google Fonts, Trackers, etc...)', - 'show_timezone' => 'Show the timezone the status page is running in', - 'only_disrupted_days' => 'Only show days containing incidents in the timeline?', - ], - 'analytics' => [ - 'analytics_google' => 'Google Analytics code', - 'analytics_gosquared' => 'GoSquared Analytics code', - 'analytics_piwik_url' => 'URL of your Piwik instance', - 'analytics_piwik_siteid' => 'Piwik\'s site id', - ], - 'localization' => [ - 'site-timezone' => 'Site timezone', - 'site-locale' => 'Site language', - 'date-format' => 'Date format', - 'incident-date-format' => 'Incident timestamp format', - ], - 'security' => [ - 'allowed-domains' => 'Allowed domains', - 'allowed-domains-help' => '請以半角逗號分隔。以上域名將會自動允許訪問。', - 'always-authenticate' => 'Always authenticate', - 'always-authenticate-help' => 'Require login to view any Cachet page', - ], - 'stylesheet' => [ - 'custom-css' => 'Custom Stylesheet', - ], - 'theme' => [ - 'background-color' => 'Background color', - 'background-fills' => 'Background fills (components, incidents, footer)', - 'banner-background-color' => 'Banner background color', - 'banner-padding' => 'Banner padding', - 'fullwidth-banner' => 'Enable full width banner?', - 'text-color' => 'Text color', - 'dashboard-login' => 'Show dashboard button in the footer?', - 'reds' => '紅(用於錯誤類提示)', - 'blues' => 'Blue (used for information)', - 'greens' => 'Green (used for success)', - 'yellows' => 'Yellow (used for alerts)', - 'oranges' => 'Orange (used for notices)', - 'metrics' => 'Metrics fill', - 'links' => 'Links', - ], - ], - - 'user' => [ - 'username' => '用戶名', - 'email' => '電郵地址', - 'password' => '密碼', - 'api-token' => 'API 密鑰', - 'api-token-help' => '重新生成 API 密鑰將會導致現存的應用程序無法訪問 Cachet 。', - 'gravatar' => 'Change your profile picture at Gravatar.', - 'user_level' => 'User Level', - 'levels' => [ - 'admin' => 'Admin', - 'user' => 'User', - ], - '2fa' => [ - 'help' => '啟用兩步認證會使得你的賬戶更加安全。您需要下載 Google Authenticator 或類似的應用程序到您的設備上。啓用後,你需要提供由該應用程序生成的驗證碼方可登錄。', - ], - 'team' => [ - 'description' => 'Invite your team members by entering their email addresses here.', - 'email' => 'Your Team Members Email Address', - ], - ], - - 'general' => [ - 'timezone' => 'Select Timezone', - ], - - 'seo' => [ - 'title' => 'SEO Title', - 'description' => 'SEO Description', - ], - - // Buttons - 'add' => '增加', - 'save' => '儲存', - 'update' => '更新', - 'create' => '建立', - 'edit' => '編輯', - 'delete' => '刪除', - 'submit' => '送出', - 'cancel' => '取消', - 'remove' => '移除', - 'invite' => 'Invite', - 'signup' => 'Sign Up', - 'manage_updates' => 'Manage Updates', - - // Other - 'optional' => '* 可選項目', -]; diff --git a/resources/lang/zh-TW/notifications.php b/resources/lang/zh-TW/notifications.php deleted file mode 100644 index 4d98ec75..00000000 --- a/resources/lang/zh-TW/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'Component Status Updated', - 'greeting' => 'A component\'s status was updated!', - 'content' => ':name status changed from :old_status to :new_status.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Component Status Updated', - 'content' => ':name status changed from :old_status to :new_status.', - ], - 'sms' => [ - 'content' => ':name status changed from :old_status to :new_status.', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Incident Reported', - 'greeting' => 'A new incident was reported at :app_name.', - 'content' => 'Incident :name was reported', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'Incident :name Reported', - 'content' => 'A new incident was reported at :app_name', - ], - 'sms' => [ - 'content' => 'A new incident was reported at :app_name.', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'Incident Updated', - 'content' => ':name was updated', - 'title' => ':name was updated to :new_status', - 'action' => 'View', - ], - 'slack' => [ - 'title' => ':name Updated', - 'content' => ':name was updated to :new_status', - ], - 'sms' => [ - 'content' => 'Incident :name was updated', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'New Schedule Created', - 'content' => ':name was scheduled for :date', - 'title' => 'A new scheduled maintenance was created.', - 'action' => 'View', - ], - 'slack' => [ - 'title' => 'New Schedule Created!', - 'content' => ':name was scheduled for :date', - ], - 'sms' => [ - 'content' => ':name was scheduled for :date', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'Verify Your Subscription', - 'content' => 'Click to verify your subscription to :app_name status page.', - 'title' => 'Verify your subscription to :app_name status page.', - 'action' => 'Verify', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'Manage Your Subscription', - 'content' => 'Click to manage your subscription to :app_name status page.', - 'title' => 'Click to manage your subscription to :app_name status page.', - 'action' => 'Manage subscription', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'Ping from Cachet!', - 'content' => 'This is a test notification from Cachet!', - 'title' => '🔔', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'Your invitation is inside...', - 'content' => 'You have been invited to join :app_name status page.', - 'title' => 'You\'re invited to join :app_name status page.', - 'action' => 'Accept', - ], - ], - ], -]; diff --git a/resources/lang/zh-TW/pagination.php b/resources/lang/zh-TW/pagination.php deleted file mode 100644 index 0ee724cf..00000000 --- a/resources/lang/zh-TW/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'Previous', - 'next' => 'Next', - -]; diff --git a/resources/lang/zh-TW/setup.php b/resources/lang/zh-TW/setup.php deleted file mode 100644 index b7b4de9c..00000000 --- a/resources/lang/zh-TW/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - '安裝', - 'title' => '安裝 Cachet', - 'service_details' => '服務詳細信息', - 'env_setup' => 'Environment Setup', - 'status_page_setup' => '設置狀態頁面', - 'show_support' => 'Show support for Cachet?', - 'admin_account' => '管理員帳戶', - 'complete_setup' => '完成安裝', - 'completed' => '成功安裝 Cachet !', - 'finish_setup' => '前往儀表板', -]; diff --git a/resources/lang/zh-TW/validation.php b/resources/lang/zh-TW/validation.php deleted file mode 100644 index 4305ac57..00000000 --- a/resources/lang/zh-TW/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - '這個 :attribute 必須被接受', - 'active_url' => '這個 :attribute 不是一個有效的網址', - 'after' => ':attribute 必須在 :date 之後', - 'alpha' => ':attribute 只能包含字母', - 'alpha_dash' => ':attribute 只能包含字母、數字、破折號', - 'alpha_num' => ':attribute 只能包含字母及數字', - 'array' => ':attribute 必須是一個陣列', - 'before' => ':attribute 必須在 :date 之前', - 'between' => [ - 'numeric' => 'The :attribute must be between :min and :max.', - 'file' => 'The :attribute must be between :min and :max kilobytes.', - 'string' => 'The :attribute must be between :min and :max characters.', - 'array' => 'The :attribute must have between :min and :max items.', - ], - 'boolean' => 'The :attribute field must be true or false.', - 'confirmed' => 'The :attribute confirmation does not match.', - 'date' => 'The :attribute is not a valid date.', - 'date_format' => 'The :attribute does not match the format :format.', - 'different' => 'The :attribute and :other must be different.', - 'digits' => 'The :attribute must be :digits digits.', - 'digits_between' => 'The :attribute must be between :min and :max digits.', - 'email' => 'The :attribute must be a valid email address.', - 'exists' => 'The selected :attribute is invalid.', - 'distinct' => 'The :attribute field has a duplicate value.', - 'filled' => 'The :attribute field is required.', - 'image' => ':attribute 必須是圖片', - 'in' => 'The selected :attribute is invalid.', - 'in_array' => 'The :attribute field does not exist in :other.', - 'integer' => 'The :attribute must be an integer.', - 'ip' => 'The :attribute must be a valid IP address.', - 'json' => 'The :attribute must be a valid JSON string.', - 'max' => [ - 'numeric' => 'The :attribute may not be greater than :max.', - 'file' => 'The :attribute may not be greater than :max kilobytes.', - 'string' => 'The :attribute may not be greater than :max characters.', - 'array' => 'The :attribute may not have more than :max items.', - ], - 'mimes' => 'The :attribute must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The :attribute must be at least :min.', - 'file' => 'The :attribute must be at least :min kilobytes.', - 'string' => 'The :attribute must be at least :min characters.', - 'array' => 'The :attribute must have at least :min items.', - ], - 'not_in' => 'The selected :attribute is invalid.', - 'numeric' => 'The :attribute must be a number.', - 'present' => 'The :attribute field must be present.', - 'regex' => ':attribute 格式無效', - 'required' => 'The :attribute field is required.', - 'required_if' => 'The :attribute field is required when :other is :value.', - 'required_unless' => 'The :attribute field is required unless :other is in :values.', - 'required_with' => ':attribute 欄位在 :values 存在時,是必填的', - 'required_with_all' => ':attribute 欄位在 :values 存在時,是必填的', - 'required_without' => 'The :attribute field is required when :values is not present.', - 'required_without_all' => 'The :attribute field is required when none of :values are present.', - 'same' => 'The :attribute and :other must match.', - 'size' => [ - 'numeric' => 'The :attribute must be :size.', - 'file' => 'The :attribute must be :size kilobytes.', - 'string' => 'The :attribute must be :size characters.', - 'array' => 'The :attribute must contain :size items.', - ], - 'string' => 'The :attribute must be a string.', - 'timezone' => ':attribute 必須是有效的區域', - 'unique' => ':attribute 已經被佔用', - 'url' => ':attribute 格式無效', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => '自訂訊息', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/lang/zu-ZA/cachet.php b/resources/lang/zu-ZA/cachet.php deleted file mode 100644 index 4726b662..00000000 --- a/resources/lang/zu-ZA/cachet.php +++ /dev/null @@ -1,148 +0,0 @@ - [ - 'last_updated' => 'crwdns877:0crwdne877:0', - 'status' => [ - 0 => 'crwdns878:0crwdne878:0', - 1 => 'crwdns879:0crwdne879:0', - 2 => 'crwdns880:0crwdne880:0', - 3 => 'crwdns881:0crwdne881:0', - 4 => 'crwdns882:0crwdne882:0', - ], - 'group' => [ - 'other' => 'crwdns883:0crwdne883:0', - ], - 'select_all' => 'crwdns1510:0crwdne1510:0', - 'deselect_all' => 'crwdns1512:0crwdne1512:0', - ], - - // Incidents - 'incidents' => [ - 'none' => 'crwdns884:0crwdne884:0', - 'past' => 'crwdns885:0crwdne885:0', - 'stickied' => 'crwdns888:0crwdne888:0', - 'scheduled' => 'crwdns1395:0crwdne1395:0', - 'scheduled_at' => 'crwdns890:0crwdne890:0', - 'posted' => 'crwdns1540:0crwdne1540:0', - 'posted_at' => 'crwdns1396:0crwdne1396:0', - 'status' => [ - 1 => 'crwdns892:0crwdne892:0', - 2 => 'crwdns893:0crwdne893:0', - 3 => 'crwdns894:0crwdne894:0', - 4 => 'crwdns895:0crwdne895:0', - ], - ], - - // Schedule - 'schedules' => [ - 'status' => [ - 0 => 'crwdns896:0crwdne896:0', - 1 => 'crwdns897:0crwdne897:0', - 2 => 'crwdns898:0crwdne898:0', - ], - ], - - // Service Status - 'service' => [ - 'good' => 'crwdns1437:0crwdne1437:0', - 'bad' => 'crwdns1398:0crwdne1398:0', - 'major' => 'crwdns1399:0crwdne1399:0', - ], - - 'api' => [ - 'regenerate' => 'crwdns902:0crwdne902:0', - 'revoke' => 'crwdns903:0crwdne903:0', - ], - - // Metrics - 'metrics' => [ - 'filter' => [ - 'last_hour' => 'crwdns904:0crwdne904:0', - 'hourly' => 'crwdns905:0crwdne905:0', - 'weekly' => 'crwdns906:0crwdne906:0', - 'monthly' => 'crwdns907:0crwdne907:0', - ], - ], - - // Subscriber - 'subscriber' => [ - 'subscribe' => 'crwdns1520:0crwdne1520:0', - 'unsubscribe' => 'crwdns1447:0crwdne1447:0', - 'button' => 'crwdns909:0crwdne909:0', - 'manage_subscription' => 'crwdns1448:0crwdne1448:0', - 'manage' => [ - 'notifications' => 'crwdns1514:0crwdne1514:0', - 'notifications_for' => 'crwdns1516:0crwdne1516:0', - 'no_subscriptions' => 'crwdns910:0crwdne910:0', - 'update_subscription' => 'crwdns1518:0crwdne1518:0', - 'my_subscriptions' => 'crwdns911:0crwdne911:0', - 'manage_at_link' => 'crwdns1432:0crwdne1432:0', - ], - 'email' => [ - 'manage_subscription' => 'crwdns1530:0crwdne1530:0', - 'subscribe' => 'crwdns912:0crwdne912:0', - 'subscribed' => 'crwdns913:0crwdne913:0', - 'updated-subscribe' => 'crwdns1522:0crwdne1522:0', - 'verified' => 'crwdns914:0crwdne914:0', - 'manage' => 'crwdns915:0crwdne915:0', - 'unsubscribe' => 'crwdns916:0crwdne916:0', - 'unsubscribed' => 'crwdns917:0crwdne917:0', - 'failure' => 'crwdns918:0crwdne918:0', - 'already-subscribed' => 'crwdns919:0crwdne919:0', - ], - ], - - 'signup' => [ - 'title' => 'crwdns931:0crwdne931:0', - 'username' => 'crwdns932:0crwdne932:0', - 'email' => 'crwdns933:0crwdne933:0', - 'password' => 'crwdns934:0crwdne934:0', - 'success' => 'crwdns935:0crwdne935:0', - 'failure' => 'crwdns936:0crwdne936:0', - ], - - 'system' => [ - 'update' => 'crwdns937:0crwdne937:0', - ], - - // Modal - 'modal' => [ - 'close' => 'crwdns938:0crwdne938:0', - 'subscribe' => [ - 'title' => 'crwdns939:0crwdne939:0', - 'body' => 'crwdns940:0crwdne940:0', - 'button' => 'crwdns941:0crwdne941:0', - ], - ], - - // Meta descriptions - 'meta' => [ - 'description' => [ - 'incident' => 'crwdns1428:0crwdne1428:0', - 'schedule' => 'crwdns1429:0crwdne1429:0', - 'subscribe' => 'crwdns1430:0crwdne1430:0', - 'overview' => 'crwdns1431:0crwdne1431:0', - ], - ], - - // Other - 'home' => 'crwdns942:0crwdne942:0', - 'powered_by' => 'crwdns944:0crwdne944:0', - 'timezone' => 'crwdns945:0crwdne945:0', - 'about_this_site' => 'crwdns946:0crwdne946:0', - 'rss-feed' => 'crwdns947:0crwdne947:0', - 'atom-feed' => 'crwdns948:0crwdne948:0', - 'feed' => 'crwdns949:0crwdne949:0', - -]; diff --git a/resources/lang/zu-ZA/dashboard.php b/resources/lang/zu-ZA/dashboard.php deleted file mode 100644 index 974517cd..00000000 --- a/resources/lang/zu-ZA/dashboard.php +++ /dev/null @@ -1,304 +0,0 @@ - 'crwdns950:0crwdne950:0', - 'writeable_settings' => 'crwdns951:0crwdne951:0', - - // Incidents - 'incidents' => [ - 'title' => 'crwdns1400:0crwdne1400:0', - 'incidents' => 'crwdns953:0crwdne953:0', - 'logged' => 'crwdns1441:0{0}crwdnd1441:0[1]crwdne1441:0', - 'incident-create-template' => 'crwdns955:0crwdne955:0', - 'incident-templates' => 'crwdns956:0crwdne956:0', - 'updates' => [ - 'title' => 'crwdns1402:0crwdne1402:0', - 'count' => 'crwdns1439:0{0}crwdnd1439:0[1]crwdnd1439:0[2]crwdne1439:0', - 'add' => [ - 'title' => 'crwdns1404:0crwdne1404:0', - 'success' => 'crwdns1405:0crwdne1405:0', - 'failure' => 'crwdns1406:0crwdne1406:0', - ], - 'edit' => [ - 'title' => 'crwdns1407:0crwdne1407:0', - 'success' => 'crwdns1408:0crwdne1408:0', - 'failure' => 'crwdns1409:0crwdne1409:0', - ], - ], - 'reported_by' => 'crwdns1542:0crwdne1542:0', - 'add' => [ - 'title' => 'crwdns958:0crwdne958:0', - 'success' => 'crwdns959:0crwdne959:0', - 'failure' => 'crwdns960:0crwdne960:0', - ], - 'edit' => [ - 'title' => 'crwdns961:0crwdne961:0', - 'success' => 'crwdns962:0crwdne962:0', - 'failure' => 'crwdns963:0crwdne963:0', - ], - 'delete' => [ - 'success' => 'crwdns964:0crwdne964:0', - 'failure' => 'crwdns965:0crwdne965:0', - ], - - // Incident templates - 'templates' => [ - 'title' => 'crwdns968:0crwdne968:0', - 'add' => [ - 'title' => 'crwdns969:0crwdne969:0', - 'message' => 'crwdns1443:0crwdne1443:0', - 'success' => 'crwdns971:0crwdne971:0', - 'failure' => 'crwdns972:0crwdne972:0', - ], - 'edit' => [ - 'title' => 'crwdns973:0crwdne973:0', - 'success' => 'crwdns974:0crwdne974:0', - 'failure' => 'crwdns975:0crwdne975:0', - ], - 'delete' => [ - 'success' => 'crwdns976:0crwdne976:0', - 'failure' => 'crwdns977:0crwdne977:0', - ], - ], - ], - - // Incident Maintenance - 'schedule' => [ - 'schedule' => 'crwdns1410:0crwdne1410:0', - 'logged' => 'crwdns1440:0{0}crwdnd1440:0[1]crwdne1440:0', - 'scheduled_at' => 'crwdns980:0crwdne980:0', - 'add' => [ - 'title' => 'crwdns1412:0crwdne1412:0', - 'success' => 'crwdns1413:0crwdne1413:0', - 'failure' => 'crwdns1414:0crwdne1414:0', - ], - 'edit' => [ - 'title' => 'crwdns1415:0crwdne1415:0', - 'success' => 'crwdns1416:0crwdne1416:0', - 'failure' => 'crwdns1417:0crwdne1417:0', - ], - 'delete' => [ - 'success' => 'crwdns1418:0crwdne1418:0', - 'failure' => 'crwdns1419:0crwdne1419:0', - ], - ], - - // Components - 'components' => [ - 'components' => 'crwdns989:0crwdne989:0', - 'component_statuses' => 'crwdns990:0crwdne990:0', - 'listed_group' => 'crwdns991:0crwdne991:0', - 'add' => [ - 'title' => 'crwdns992:0crwdne992:0', - 'message' => 'crwdns993:0crwdne993:0', - 'success' => 'crwdns994:0crwdne994:0', - 'failure' => 'crwdns995:0crwdne995:0', - ], - 'edit' => [ - 'title' => 'crwdns996:0crwdne996:0', - 'success' => 'crwdns997:0crwdne997:0', - 'failure' => 'crwdns998:0crwdne998:0', - ], - 'delete' => [ - 'success' => 'crwdns999:0crwdne999:0', - 'failure' => 'crwdns1000:0crwdne1000:0', - ], - - // Component groups - 'groups' => [ - 'groups' => 'crwdns1001:0crwdne1001:0', - 'no_components' => 'crwdns1002:0crwdne1002:0', - 'add' => [ - 'title' => 'crwdns1003:0crwdne1003:0', - 'success' => 'crwdns1004:0crwdne1004:0', - 'failure' => 'crwdns1005:0crwdne1005:0', - ], - 'edit' => [ - 'title' => 'crwdns1006:0crwdne1006:0', - 'success' => 'crwdns1007:0crwdne1007:0', - 'failure' => 'crwdns1008:0crwdne1008:0', - ], - 'delete' => [ - 'success' => 'crwdns1009:0crwdne1009:0', - 'failure' => 'crwdns1010:0crwdne1010:0', - ], - ], - ], - - // Metrics - 'metrics' => [ - 'metrics' => 'crwdns1011:0crwdne1011:0', - 'add' => [ - 'title' => 'crwdns1012:0crwdne1012:0', - 'message' => 'crwdns1013:0crwdne1013:0', - 'success' => 'crwdns1014:0crwdne1014:0', - 'failure' => 'crwdns1015:0crwdne1015:0', - ], - 'edit' => [ - 'title' => 'crwdns1016:0crwdne1016:0', - 'success' => 'crwdns1017:0crwdne1017:0', - 'failure' => 'crwdns1018:0crwdne1018:0', - ], - 'delete' => [ - 'success' => 'crwdns1019:0crwdne1019:0', - 'failure' => 'crwdns1020:0crwdne1020:0', - ], - ], - // Subscribers - 'subscribers' => [ - 'subscribers' => 'crwdns1021:0crwdne1021:0', - 'description' => 'crwdns1022:0crwdne1022:0', - 'description_disabled' => 'crwdns1420:0crwdne1420:0', - 'verified' => 'crwdns1023:0crwdne1023:0', - 'not_verified' => 'crwdns1024:0crwdne1024:0', - 'subscriber' => 'crwdns1025:0crwdne1025:0', - 'no_subscriptions' => 'crwdns1026:0crwdne1026:0', - 'global' => 'crwdns1421:0crwdne1421:0', - 'add' => [ - 'title' => 'crwdns1027:0crwdne1027:0', - 'success' => 'crwdns1028:0crwdne1028:0', - 'failure' => 'crwdns1029:0crwdne1029:0', - 'help' => 'crwdns1030:0crwdne1030:0', - ], - 'edit' => [ - 'title' => 'crwdns1031:0crwdne1031:0', - 'success' => 'crwdns1032:0crwdne1032:0', - 'failure' => 'crwdns1033:0crwdne1033:0', - ], - ], - - // Team - 'team' => [ - 'team' => 'crwdns1034:0crwdne1034:0', - 'member' => 'crwdns1035:0crwdne1035:0', - 'profile' => 'crwdns1036:0crwdne1036:0', - 'description' => 'crwdns1325:0crwdne1325:0', - 'add' => [ - 'title' => 'crwdns1038:0crwdne1038:0', - 'success' => 'crwdns1039:0crwdne1039:0', - 'failure' => 'crwdns1040:0crwdne1040:0', - ], - 'edit' => [ - 'title' => 'crwdns1041:0crwdne1041:0', - 'success' => 'crwdns1042:0crwdne1042:0', - 'failure' => 'crwdns1043:0crwdne1043:0', - ], - 'delete' => [ - 'success' => 'crwdns1044:0crwdne1044:0', - 'failure' => 'crwdns1045:0crwdne1045:0', - ], - 'invite' => [ - 'title' => 'crwdns1046:0crwdne1046:0', - 'success' => 'crwdns1047:0crwdne1047:0', - 'failure' => 'crwdns1048:0crwdne1048:0', - ], - ], - - // Settings - 'settings' => [ - 'settings' => 'crwdns1049:0crwdne1049:0', - 'app-setup' => [ - 'app-setup' => 'crwdns1050:0crwdne1050:0', - 'images-only' => 'crwdns1051:0crwdne1051:0', - 'too-big' => 'crwdns1052:0crwdne1052:0', - ], - 'analytics' => [ - 'analytics' => 'crwdns1053:0crwdne1053:0', - ], - 'log' => [ - 'log' => 'crwdns1054:0crwdne1054:0', - ], - 'localization' => [ - 'localization' => 'crwdns1055:0crwdne1055:0', - ], - 'customization' => [ - 'customization' => 'crwdns1056:0crwdne1056:0', - 'header' => 'crwdns1057:0crwdne1057:0', - 'footer' => 'crwdns1058:0crwdne1058:0', - ], - 'mail' => [ - 'mail' => 'crwdns1059:0crwdne1059:0', - 'test' => 'crwdns1060:0crwdne1060:0', - 'email' => [ - 'subject' => 'crwdns1061:0crwdne1061:0', - 'body' => 'crwdns1062:0crwdne1062:0', - ], - ], - 'security' => [ - 'security' => 'crwdns1063:0crwdne1063:0', - 'two-factor' => 'crwdns1064:0crwdne1064:0', - ], - 'stylesheet' => [ - 'stylesheet' => 'crwdns1065:0crwdne1065:0', - ], - 'theme' => [ - 'theme' => 'crwdns1066:0crwdne1066:0', - ], - 'edit' => [ - 'success' => 'crwdns1067:0crwdne1067:0', - 'failure' => 'crwdns1068:0crwdne1068:0', - ], - 'credits' => [ - 'credits' => 'crwdns1069:0crwdne1069:0', - 'contributors' => 'crwdns1070:0crwdne1070:0', - 'license' => 'crwdns1071:0%20Ccrwdnd1071:0%20crwdne1071:0', - 'backers-title' => 'crwdns1072:0crwdne1072:0', - 'backers' => 'crwdns1073:0crwdne1073:0', - 'thank-you' => 'crwdns1074:0crwdne1074:0', - ], - ], - - // Login - 'login' => [ - 'login' => 'crwdns1075:0crwdne1075:0', - 'logged_in' => 'crwdns1076:0crwdne1076:0', - 'welcome' => 'crwdns1077:0crwdne1077:0', - 'two-factor' => 'crwdns1078:0crwdne1078:0', - ], - - // Sidebar footer - 'help' => 'crwdns1079:0crwdne1079:0', - 'status_page' => 'crwdns1080:0crwdne1080:0', - 'logout' => 'crwdns1081:0crwdne1081:0', - - // Notifications - 'notifications' => [ - 'notifications' => 'crwdns1082:0crwdne1082:0', - 'awesome' => 'crwdns1083:0crwdne1083:0', - 'whoops' => 'crwdns1084:0crwdne1084:0', - ], - - // Widgets - 'widgets' => [ - 'support' => 'crwdns1085:0crwdne1085:0', - 'support_subtitle' => 'crwdns1086:0crwdne1086:0', - 'news' => 'crwdns1087:0crwdne1087:0', - 'news_subtitle' => 'crwdns1088:0crwdne1088:0', - ], - - // Welcome modal - 'welcome' => [ - 'welcome' => 'crwdns1089:0crwdne1089:0', - 'message' => 'crwdns1090:0crwdne1090:0', - 'close' => 'crwdns1091:0crwdne1091:0', - 'steps' => [ - 'component' => 'crwdns1092:0crwdne1092:0', - 'incident' => 'crwdns1093:0crwdne1093:0', - 'customize' => 'crwdns1094:0crwdne1094:0', - 'team' => 'crwdns1095:0crwdne1095:0', - 'api' => 'crwdns1096:0crwdne1096:0', - 'two-factor' => 'crwdns1097:0crwdne1097:0', - ], - ], - -]; diff --git a/resources/lang/zu-ZA/forms.php b/resources/lang/zu-ZA/forms.php deleted file mode 100644 index 67bf72c1..00000000 --- a/resources/lang/zu-ZA/forms.php +++ /dev/null @@ -1,253 +0,0 @@ - [ - 'email' => 'crwdns1098:0crwdne1098:0', - 'username' => 'crwdns1099:0crwdne1099:0', - 'password' => 'crwdns1100:0crwdne1100:0', - 'site_name' => 'crwdns1101:0crwdne1101:0', - 'site_domain' => 'crwdns1102:0crwdne1102:0', - 'site_timezone' => 'crwdns1103:0crwdne1103:0', - 'site_locale' => 'crwdns1104:0crwdne1104:0', - 'enable_google2fa' => 'crwdns1105:0crwdne1105:0', - 'cache_driver' => 'crwdns1106:0crwdne1106:0', - 'queue_driver' => 'crwdns1107:0crwdne1107:0', - 'session_driver' => 'crwdns1108:0crwdne1108:0', - 'mail_driver' => 'crwdns1109:0crwdne1109:0', - 'mail_host' => 'crwdns1110:0crwdne1110:0', - 'mail_address' => 'crwdns1111:0crwdne1111:0', - 'mail_username' => 'crwdns1112:0crwdne1112:0', - 'mail_password' => 'crwdns1113:0crwdne1113:0', - ], - - // Login form fields - 'login' => [ - 'login' => 'crwdns1114:0crwdne1114:0', - 'email' => 'crwdns1115:0crwdne1115:0', - 'password' => 'crwdns1116:0crwdne1116:0', - '2fauth' => 'crwdns1117:0crwdne1117:0', - 'invalid' => 'crwdns1118:0crwdne1118:0', - 'invalid-token' => 'crwdns1119:0crwdne1119:0', - 'cookies' => 'crwdns1120:0crwdne1120:0', - 'rate-limit' => 'crwdns1121:0crwdne1121:0', - 'remember_me' => 'crwdns1122:0crwdne1122:0', - ], - - // Incidents form fields - 'incidents' => [ - 'name' => 'crwdns1123:0crwdne1123:0', - 'status' => 'crwdns1124:0crwdne1124:0', - 'component' => 'crwdns1125:0crwdne1125:0', - 'component_status' => 'crwdns1425:0crwdne1425:0', - 'message' => 'crwdns1126:0crwdne1126:0', - 'message-help' => 'crwdns1127:0crwdne1127:0', - 'occurred_at' => 'crwdns1128:0crwdne1128:0', - 'notify_subscribers' => 'crwdns1129:0crwdne1129:0', - 'notify_disabled' => 'crwdns1426:0crwdne1426:0', - 'visibility' => 'crwdns1130:0crwdne1130:0', - 'stick_status' => 'crwdns1131:0crwdne1131:0', - 'stickied' => 'crwdns1132:0crwdne1132:0', - 'not_stickied' => 'crwdns1133:0crwdne1133:0', - 'public' => 'crwdns1134:0crwdne1134:0', - 'logged_in_only' => 'crwdns1135:0crwdne1135:0', - 'templates' => [ - 'name' => 'crwdns1136:0crwdne1136:0', - 'template' => 'crwdns1137:0crwdne1137:0', - 'twig' => 'crwdns1138:0crwdne1138:0', - ], - ], - - 'schedules' => [ - 'name' => 'crwdns1139:0crwdne1139:0', - 'status' => 'crwdns1140:0crwdne1140:0', - 'message' => 'crwdns1141:0crwdne1141:0', - 'message-help' => 'crwdns1142:0crwdne1142:0', - 'scheduled_at' => 'crwdns1143:0crwdne1143:0', - 'completed_at' => 'crwdns1144:0crwdne1144:0', - 'templates' => [ - 'name' => 'crwdns1145:0crwdne1145:0', - 'template' => 'crwdns1146:0crwdne1146:0', - 'twig' => 'crwdns1147:0crwdne1147:0', - ], - ], - - // Components form fields - 'components' => [ - 'name' => 'crwdns1148:0crwdne1148:0', - 'status' => 'crwdns1149:0crwdne1149:0', - 'group' => 'crwdns1150:0crwdne1150:0', - 'description' => 'crwdns1151:0crwdne1151:0', - 'link' => 'crwdns1152:0crwdne1152:0', - 'tags' => 'crwdns1153:0crwdne1153:0', - 'tags-help' => 'crwdns1154:0crwdne1154:0', - 'enabled' => 'crwdns1155:0crwdne1155:0', - - 'groups' => [ - 'name' => 'crwdns1156:0crwdne1156:0', - 'collapsing' => 'crwdns1157:0crwdne1157:0', - 'visible' => 'crwdns1158:0crwdne1158:0', - 'collapsed' => 'crwdns1159:0crwdne1159:0', - 'collapsed_incident' => 'crwdns1160:0crwdne1160:0', - 'visibility' => 'crwdns1161:0crwdne1161:0', - 'visibility_public' => 'crwdns1162:0crwdne1162:0', - 'visibility_authenticated' => 'crwdns1163:0crwdne1163:0', - ], - ], - - // Action form fields - 'actions' => [ - 'name' => 'crwdns1164:0crwdne1164:0', - 'description' => 'crwdns1165:0crwdne1165:0', - 'start_at' => 'crwdns1166:0crwdne1166:0', - 'timezone' => 'crwdns1167:0crwdne1167:0', - 'schedule_frequency' => 'crwdns1168:0crwdne1168:0', - 'completion_latency' => 'crwdns1169:0crwdne1169:0', - 'group' => 'crwdns1170:0crwdne1170:0', - 'active' => 'crwdns1171:0crwdne1171:0', - 'groups' => [ - 'name' => 'crwdns1172:0crwdne1172:0', - ], - ], - - // Metric form fields - 'metrics' => [ - 'name' => 'crwdns1173:0crwdne1173:0', - 'suffix' => 'crwdns1174:0crwdne1174:0', - 'description' => 'crwdns1175:0crwdne1175:0', - 'description-help' => 'crwdns1176:0crwdne1176:0', - 'display-chart' => 'crwdns1177:0crwdne1177:0', - 'default-value' => 'crwdns1178:0crwdne1178:0', - 'calc_type' => 'crwdns1179:0crwdne1179:0', - 'type_sum' => 'crwdns1180:0crwdne1180:0', - 'type_avg' => 'crwdns1181:0crwdne1181:0', - 'places' => 'crwdns1182:0crwdne1182:0', - 'default_view' => 'crwdns1183:0crwdne1183:0', - 'threshold' => 'crwdns1184:0crwdne1184:0', - 'visibility' => 'crwdns1185:0crwdne1185:0', - 'visibility_authenticated' => 'crwdns1186:0crwdne1186:0', - 'visibility_public' => 'crwdns1187:0crwdne1187:0', - 'visibility_hidden' => 'crwdns1188:0crwdne1188:0', - - 'points' => [ - 'value' => 'crwdns1189:0crwdne1189:0', - ], - ], - - // Settings - 'settings' => [ - // Application setup - 'app-setup' => [ - 'site-name' => 'crwdns1190:0crwdne1190:0', - 'site-url' => 'crwdns1191:0crwdne1191:0', - 'display-graphs' => 'crwdns1192:0crwdne1192:0', - 'about-this-page' => 'crwdns1193:0crwdne1193:0', - 'days-of-incidents' => 'crwdns1194:0crwdne1194:0', - 'time_before_refresh' => 'crwdns1434:0crwdne1434:0', - 'major_outage_rate' => 'crwdns1444:0crwdne1444:0', - 'banner' => 'crwdns1195:0crwdne1195:0', - 'banner-help' => 'crwdns1435:0crwdne1435:0', - 'subscribers' => 'crwdns1197:0crwdne1197:0', - 'suppress_notifications_in_maintenance' => 'crwdns1427:0crwdne1427:0', - 'skip_subscriber_verification' => 'crwdns1198:0crwdne1198:0', - 'automatic_localization' => 'crwdns1199:0crwdne1199:0', - 'enable_external_dependencies' => 'crwdns1200:0crwdne1200:0', - 'show_timezone' => 'crwdns1436:0crwdne1436:0', - 'only_disrupted_days' => 'crwdns1202:0crwdne1202:0', - ], - 'analytics' => [ - 'analytics_google' => 'crwdns1203:0crwdne1203:0', - 'analytics_gosquared' => 'crwdns1204:0crwdne1204:0', - 'analytics_piwik_url' => 'crwdns1524:0crwdne1524:0', - 'analytics_piwik_siteid' => 'crwdns1206:0crwdne1206:0', - ], - 'localization' => [ - 'site-timezone' => 'crwdns1207:0crwdne1207:0', - 'site-locale' => 'crwdns1208:0crwdne1208:0', - 'date-format' => 'crwdns1209:0crwdne1209:0', - 'incident-date-format' => 'crwdns1210:0crwdne1210:0', - ], - 'security' => [ - 'allowed-domains' => 'crwdns1211:0crwdne1211:0', - 'allowed-domains-help' => 'crwdns1212:0crwdne1212:0', - 'always-authenticate' => 'crwdns1445:0crwdne1445:0', - 'always-authenticate-help' => 'crwdns1446:0crwdne1446:0', - ], - 'stylesheet' => [ - 'custom-css' => 'crwdns1213:0crwdne1213:0', - ], - 'theme' => [ - 'background-color' => 'crwdns1214:0crwdne1214:0', - 'background-fills' => 'crwdns1215:0crwdne1215:0', - 'banner-background-color' => 'crwdns1216:0crwdne1216:0', - 'banner-padding' => 'crwdns1217:0crwdne1217:0', - 'fullwidth-banner' => 'crwdns1442:0crwdne1442:0', - 'text-color' => 'crwdns1219:0crwdne1219:0', - 'dashboard-login' => 'crwdns1220:0crwdne1220:0', - 'reds' => 'crwdns1221:0crwdne1221:0', - 'blues' => 'crwdns1222:0crwdne1222:0', - 'greens' => 'crwdns1223:0crwdne1223:0', - 'yellows' => 'crwdns1224:0crwdne1224:0', - 'oranges' => 'crwdns1225:0crwdne1225:0', - 'metrics' => 'crwdns1226:0crwdne1226:0', - 'links' => 'crwdns1227:0crwdne1227:0', - ], - ], - - 'user' => [ - 'username' => 'crwdns1228:0crwdne1228:0', - 'email' => 'crwdns1229:0crwdne1229:0', - 'password' => 'crwdns1230:0crwdne1230:0', - 'api-token' => 'crwdns1231:0crwdne1231:0', - 'api-token-help' => 'crwdns1232:0crwdne1232:0', - 'gravatar' => 'crwdns1233:0crwdne1233:0', - 'user_level' => 'crwdns1234:0crwdne1234:0', - 'levels' => [ - 'admin' => 'crwdns1235:0crwdne1235:0', - 'user' => 'crwdns1236:0crwdne1236:0', - ], - '2fa' => [ - 'help' => 'crwdns1237:0crwdne1237:0', - ], - 'team' => [ - 'description' => 'crwdns1238:0crwdne1238:0', - 'email' => 'crwdns1423:0crwdne1423:0', - ], - ], - - 'general' => [ - 'timezone' => 'crwdns1240:0crwdne1240:0', - ], - - 'seo' => [ - 'title' => 'crwdns1526:0crwdne1526:0', - 'description' => 'crwdns1528:0crwdne1528:0', - ], - - // Buttons - 'add' => 'crwdns1241:0crwdne1241:0', - 'save' => 'crwdns1242:0crwdne1242:0', - 'update' => 'crwdns1243:0crwdne1243:0', - 'create' => 'crwdns1244:0crwdne1244:0', - 'edit' => 'crwdns1245:0crwdne1245:0', - 'delete' => 'crwdns1246:0crwdne1246:0', - 'submit' => 'crwdns1247:0crwdne1247:0', - 'cancel' => 'crwdns1248:0crwdne1248:0', - 'remove' => 'crwdns1249:0crwdne1249:0', - 'invite' => 'crwdns1250:0crwdne1250:0', - 'signup' => 'crwdns1251:0crwdne1251:0', - 'manage_updates' => 'crwdns1424:0crwdne1424:0', - - // Other - 'optional' => 'crwdns1252:0crwdne1252:0', -]; diff --git a/resources/lang/zu-ZA/notifications.php b/resources/lang/zu-ZA/notifications.php deleted file mode 100644 index b8bd9f13..00000000 --- a/resources/lang/zu-ZA/notifications.php +++ /dev/null @@ -1,116 +0,0 @@ - [ - 'status_update' => [ - 'mail' => [ - 'subject' => 'crwdns1354:0crwdne1354:0', - 'greeting' => 'crwdns1355:0crwdne1355:0', - 'content' => 'crwdns1356:0crwdne1356:0', - 'action' => 'crwdns1357:0crwdne1357:0', - ], - 'slack' => [ - 'title' => 'crwdns1358:0crwdne1358:0', - 'content' => 'crwdns1359:0crwdne1359:0', - ], - 'sms' => [ - 'content' => 'crwdns1360:0crwdne1360:0', - ], - ], - ], - 'incident' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'crwdns1361:0crwdne1361:0', - 'greeting' => 'crwdns1362:0crwdne1362:0', - 'content' => 'crwdns1363:0crwdne1363:0', - 'action' => 'crwdns1364:0crwdne1364:0', - ], - 'slack' => [ - 'title' => 'crwdns1365:0crwdne1365:0', - 'content' => 'crwdns1366:0crwdne1366:0', - ], - 'sms' => [ - 'content' => 'crwdns1367:0crwdne1367:0', - ], - ], - 'update' => [ - 'mail' => [ - 'subject' => 'crwdns1368:0crwdne1368:0', - 'content' => 'crwdns1369:0crwdne1369:0', - 'title' => 'crwdns1370:0crwdne1370:0', - 'action' => 'crwdns1371:0crwdne1371:0', - ], - 'slack' => [ - 'title' => 'crwdns1372:0crwdne1372:0', - 'content' => 'crwdns1373:0crwdne1373:0', - ], - 'sms' => [ - 'content' => 'crwdns1374:0crwdne1374:0', - ], - ], - ], - 'schedule' => [ - 'new' => [ - 'mail' => [ - 'subject' => 'crwdns1375:0crwdne1375:0', - 'content' => 'crwdns1376:0crwdne1376:0', - 'title' => 'crwdns1377:0crwdne1377:0', - 'action' => 'crwdns1378:0crwdne1378:0', - ], - 'slack' => [ - 'title' => 'crwdns1379:0crwdne1379:0', - 'content' => 'crwdns1380:0crwdne1380:0', - ], - 'sms' => [ - 'content' => 'crwdns1381:0crwdne1381:0', - ], - ], - ], - 'subscriber' => [ - 'verify' => [ - 'mail' => [ - 'subject' => 'crwdns1382:0crwdne1382:0', - 'content' => 'crwdns1383:0crwdne1383:0', - 'title' => 'crwdns1384:0crwdne1384:0', - 'action' => 'crwdns1385:0crwdne1385:0', - ], - ], - 'manage' => [ - 'mail' => [ - 'subject' => 'crwdns1532:0crwdne1532:0', - 'content' => 'crwdns1534:0crwdne1534:0', - 'title' => 'crwdns1536:0crwdne1536:0', - 'action' => 'crwdns1538:0crwdne1538:0', - ], - ], - ], - 'system' => [ - 'test' => [ - 'mail' => [ - 'subject' => 'crwdns1386:0crwdne1386:0', - 'content' => 'crwdns1387:0crwdne1387:0', - 'title' => 'crwdns1388:0crwdne1388:0', - ], - ], - ], - 'user' => [ - 'invite' => [ - 'mail' => [ - 'subject' => 'crwdns1389:0crwdne1389:0', - 'content' => 'crwdns1390:0crwdne1390:0', - 'title' => 'crwdns1391:0crwdne1391:0', - 'action' => 'crwdns1392:0crwdne1392:0', - ], - ], - ], -]; diff --git a/resources/lang/zu-ZA/pagination.php b/resources/lang/zu-ZA/pagination.php deleted file mode 100644 index 32588206..00000000 --- a/resources/lang/zu-ZA/pagination.php +++ /dev/null @@ -1,28 +0,0 @@ - 'crwdns1393:0crwdne1393:0', - 'next' => 'crwdns1394:0crwdne1394:0', - -]; diff --git a/resources/lang/zu-ZA/setup.php b/resources/lang/zu-ZA/setup.php deleted file mode 100644 index 4f7bbbee..00000000 --- a/resources/lang/zu-ZA/setup.php +++ /dev/null @@ -1,23 +0,0 @@ - 'crwdns1255:0crwdne1255:0', - 'title' => 'crwdns1256:0crwdne1256:0', - 'service_details' => 'crwdns1257:0crwdne1257:0', - 'env_setup' => 'crwdns1258:0crwdne1258:0', - 'status_page_setup' => 'crwdns1259:0crwdne1259:0', - 'show_support' => 'crwdns1260:0crwdne1260:0', - 'admin_account' => 'crwdns1261:0crwdne1261:0', - 'complete_setup' => 'crwdns1262:0crwdne1262:0', - 'completed' => 'crwdns1263:0crwdne1263:0', - 'finish_setup' => 'crwdns1264:0crwdne1264:0', -]; diff --git a/resources/lang/zu-ZA/validation.php b/resources/lang/zu-ZA/validation.php deleted file mode 100644 index 8a727c38..00000000 --- a/resources/lang/zu-ZA/validation.php +++ /dev/null @@ -1,122 +0,0 @@ - 'crwdns1265:0crwdne1265:0', - 'active_url' => 'crwdns1266:0crwdne1266:0', - 'after' => 'crwdns1267:0crwdne1267:0', - 'alpha' => 'crwdns1268:0crwdne1268:0', - 'alpha_dash' => 'crwdns1269:0crwdne1269:0', - 'alpha_num' => 'crwdns1270:0crwdne1270:0', - 'array' => 'crwdns1271:0crwdne1271:0', - 'before' => 'crwdns1272:0crwdne1272:0', - 'between' => [ - 'numeric' => 'crwdns1273:0crwdne1273:0', - 'file' => 'crwdns1274:0crwdne1274:0', - 'string' => 'crwdns1275:0crwdne1275:0', - 'array' => 'crwdns1276:0crwdne1276:0', - ], - 'boolean' => 'crwdns1277:0crwdne1277:0', - 'confirmed' => 'crwdns1278:0crwdne1278:0', - 'date' => 'crwdns1279:0crwdne1279:0', - 'date_format' => 'crwdns1280:0crwdne1280:0', - 'different' => 'crwdns1281:0crwdne1281:0', - 'digits' => 'crwdns1282:0crwdne1282:0', - 'digits_between' => 'crwdns1283:0crwdne1283:0', - 'email' => 'crwdns1284:0crwdne1284:0', - 'exists' => 'crwdns1285:0crwdne1285:0', - 'distinct' => 'crwdns1286:0crwdne1286:0', - 'filled' => 'crwdns1287:0crwdne1287:0', - 'image' => 'crwdns1288:0crwdne1288:0', - 'in' => 'crwdns1289:0crwdne1289:0', - 'in_array' => 'crwdns1290:0crwdne1290:0', - 'integer' => 'crwdns1291:0crwdne1291:0', - 'ip' => 'crwdns1292:0crwdne1292:0', - 'json' => 'crwdns1293:0crwdne1293:0', - 'max' => [ - 'numeric' => 'crwdns1294:0crwdne1294:0', - 'file' => 'crwdns1295:0crwdne1295:0', - 'string' => 'crwdns1296:0crwdne1296:0', - 'array' => 'crwdns1297:0crwdne1297:0', - ], - 'mimes' => 'crwdns1298:0crwdne1298:0', - 'min' => [ - 'numeric' => 'crwdns1299:0crwdne1299:0', - 'file' => 'crwdns1300:0crwdne1300:0', - 'string' => 'crwdns1301:0crwdne1301:0', - 'array' => 'crwdns1302:0crwdne1302:0', - ], - 'not_in' => 'crwdns1303:0crwdne1303:0', - 'numeric' => 'crwdns1304:0crwdne1304:0', - 'present' => 'crwdns1305:0crwdne1305:0', - 'regex' => 'crwdns1306:0crwdne1306:0', - 'required' => 'crwdns1307:0crwdne1307:0', - 'required_if' => 'crwdns1308:0crwdne1308:0', - 'required_unless' => 'crwdns1309:0crwdne1309:0', - 'required_with' => 'crwdns1310:0crwdne1310:0', - 'required_with_all' => 'crwdns1311:0crwdne1311:0', - 'required_without' => 'crwdns1312:0crwdne1312:0', - 'required_without_all' => 'crwdns1313:0crwdne1313:0', - 'same' => 'crwdns1314:0crwdne1314:0', - 'size' => [ - 'numeric' => 'crwdns1315:0crwdne1315:0', - 'file' => 'crwdns1316:0crwdne1316:0', - 'string' => 'crwdns1317:0crwdne1317:0', - 'array' => 'crwdns1318:0crwdne1318:0', - ], - 'string' => 'crwdns1319:0crwdne1319:0', - 'timezone' => 'crwdns1320:0crwdne1320:0', - 'unique' => 'crwdns1321:0crwdne1321:0', - 'url' => 'crwdns1322:0crwdne1322:0', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'crwdns1323:0crwdne1323:0', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], - -]; diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php deleted file mode 100644 index a5f709bf..00000000 --- a/resources/views/auth/login.blade.php +++ /dev/null @@ -1,56 +0,0 @@ -@extends('layout.clean') - -@section('bodyClass', 'login') - -@section('content') -
-
-
- - -
- - - @if(Session::has('error')) -
-

{{ Session::get('error') }}

-
- @endif - -
- - -
-
- - -
-
- - -
-
-
-
- @if(!config('setting.always_authenticate', false)) - - - - - - @endif -
-
- -
-
-
-
-
-
-
-@stop diff --git a/resources/views/auth/two-factor-auth.blade.php b/resources/views/auth/two-factor-auth.blade.php deleted file mode 100644 index 4e339644..00000000 --- a/resources/views/auth/two-factor-auth.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('layout.clean') - -@section('bodyClass', 'login') - -@section('content') -
-
-
- - -
- -
-
-
-

{{ trans('dashboard.login.two-factor') }}

-
-
-
- - -
- @if(Session::has('error')) -

{{ Session::get('error') }}

- @endif - -
- - -
-
- -
-
-
-
-
-
-
-
-@stop diff --git a/resources/views/dashboard/components/add.blade.php b/resources/views/dashboard/components/add.blade.php deleted file mode 100644 index da0efe07..00000000 --- a/resources/views/dashboard/components/add.blade.php +++ /dev/null @@ -1,78 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.components.components') }} - - > {{ trans('dashboard.components.add.title') }} -
-
-
-
- @include('partials.errors') -
- -
-
- - -
-
- - -
-
- - -
- @if($groups->count() > 0) -
- - -
- @else - - @endif -
-
- - -
-
- - - {{ trans('forms.components.tags-help') }} -
-
- -
-
- - - -
- - {{ trans('forms.cancel') }} -
-
-
-
-
-@stop diff --git a/resources/views/dashboard/components/edit.blade.php b/resources/views/dashboard/components/edit.blade.php deleted file mode 100644 index a5d37796..00000000 --- a/resources/views/dashboard/components/edit.blade.php +++ /dev/null @@ -1,79 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.components.components') }} - - > {{ trans('dashboard.components.edit.title') }} -
-
-
-
- @include('partials.errors') -
- -
-
- - -
-
- - -
-
- - -
- @if($groups->count() > 0) -
- - -
- @else - - @endif -
-
- - -
-
- - - {{ trans('forms.components.tags-help') }} -
-
- -
-
- - - - -
- - {{ trans('forms.cancel') }} -
-
-
-
-
-@stop diff --git a/resources/views/dashboard/components/groups/add.blade.php b/resources/views/dashboard/components/groups/add.blade.php deleted file mode 100644 index 836e11d9..00000000 --- a/resources/views/dashboard/components/groups/add.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans_choice('dashboard.components.groups.groups', 2) }} - - > {{ trans('dashboard.components.groups.add.title') }} -
-
-
-
- @include('partials.errors') -
- -
-
- - -
-
- - -
-
- - -
-
- -
- - {{ trans('forms.cancel') }} -
-
-
-
-
-@stop diff --git a/resources/views/dashboard/components/groups/edit.blade.php b/resources/views/dashboard/components/groups/edit.blade.php deleted file mode 100644 index 1aef2dc6..00000000 --- a/resources/views/dashboard/components/groups/edit.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans_choice('dashboard.components.groups.groups', 2) }} - - > {{ trans('dashboard.components.groups.edit.title') }} -
-
-
-
- @include('partials.errors') -
- -
-
- - -
-
- - -
-
- - -
-
- -
- - {{ trans('forms.cancel') }} -
-
-
-
-
-@stop diff --git a/resources/views/dashboard/components/groups/index.blade.php b/resources/views/dashboard/components/groups/index.blade.php deleted file mode 100644 index aa46c0d3..00000000 --- a/resources/views/dashboard/components/groups/index.blade.php +++ /dev/null @@ -1,42 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
-
- - {{ trans_choice('dashboard.components.groups.groups', 2) }} - - - {{ trans('dashboard.components.groups.add.title') }} - -
-
- @include('partials.errors') -
-
- @forelse($groups as $group) -
-
-

- @if($groups->count() > 1) - - @endif - {{ $group->name }} - {{ $group->components->count() }} -

-
- -
- @empty -
{{ trans('dashboard.components.groups.no_components') }}
- @endforelse -
-
-
-
-@stop diff --git a/resources/views/dashboard/components/index.blade.php b/resources/views/dashboard/components/index.blade.php deleted file mode 100644 index 5835a477..00000000 --- a/resources/views/dashboard/components/index.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
-
- - {{ trans('dashboard.components.components') }} - - - {{ trans('dashboard.components.add.title') }} - -
-
- @include('partials.errors') -
-
- @forelse($components as $component) -
-
-

- @if($components->count() > 1) - - @endif - {!! $component->name !!} {{ $component->human_status }} -

- @if($component->group) -

{{ trans('dashboard.components.listed_group', ['name' => $component->group->name]) }}

- @endif - @if($component->description) -

{{ $component->description }}

- @endif -
- -
- @empty -
{{ trans('dashboard.components.add.message') }}
- @endforelse -
-
-
-
-@stop diff --git a/resources/views/dashboard/incidents/add.blade.php b/resources/views/dashboard/incidents/add.blade.php deleted file mode 100644 index 421013bc..00000000 --- a/resources/views/dashboard/incidents/add.blade.php +++ /dev/null @@ -1,153 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.incidents.incidents') }} - - > {{ trans('dashboard.incidents.add.title') }} -
-
-
-
- @if(!$notificationsEnabled) - - @endif - @include('partials.errors') - -
- -
- @if($incidentTemplates->count() > 0) -
- - -
- @endif -
- - -
-
-
- - - - -
-
- - -
-
- - -
- @if(!$componentsInGroups->isEmpty() || !$componentsOutGroups->isEmpty()) -
- {{ trans('forms.optional') }} - -
- @endif -
- -
-
-
- @foreach(trans('cachet.components.status') as $statusID => $status) -
- -
- @endforeach -
-
-
-
-
- -
- -
-
-
- {{ trans('forms.optional') }} - -
- @if($notificationsEnabled) - -
- -
- @endif -
- {{ trans('forms.optional') }} - -
-
- {{ trans('forms.optional') }} - -
-
- -
-
- - {{ trans('forms.cancel') }} -
-
-
-
-
-
-
-@stop diff --git a/resources/views/dashboard/incidents/edit.blade.php b/resources/views/dashboard/incidents/edit.blade.php deleted file mode 100644 index 525a861b..00000000 --- a/resources/views/dashboard/incidents/edit.blade.php +++ /dev/null @@ -1,134 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.incidents.incidents') }} - - > {{ trans('dashboard.incidents.edit.title') }} -
-
-
-
- @if(!$notificationsEnabled) - - @endif - @include('partials.errors') -
- -
-
- - -
-
-
- - - - -
- @if($incident->component) - - @endif -
- - -
-
- - -
- @if($incident->component) -
-
-
{{ $incident->component->name }}
-
-
- @foreach(trans('cachet.components.status') as $statusID => $status) -
- -
- @endforeach -
-
-
-
- @endif -
- -
- -
-
-
- {{ trans('forms.optional') }} - -
-
- {{ trans('forms.optional') }} - -
-
- {{ trans('forms.optional') }} - -
-
- -
-
- - {{ trans('forms.cancel') }} -
-
-
-
-
-
-@stop diff --git a/resources/views/dashboard/incidents/index.blade.php b/resources/views/dashboard/incidents/index.blade.php deleted file mode 100644 index 69103049..00000000 --- a/resources/views/dashboard/incidents/index.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
-
- - {{ trans('dashboard.incidents.incidents') }} - - - {{ trans('dashboard.incidents.add.title') }} - -
-
-
-
- @include('partials.errors') -

{!! trans_choice('dashboard.incidents.logged', $incidents->count(), ['count' => $incidents->count()]) !!}

- -
- @foreach($incidents as $incident) -
-
- {{ $incident->name }} {{ trans_choice('dashboard.incidents.updates.count', $incident->updates()->count()) }} - @if($incident->message) -

{{ Str::words($incident->message, 5) }}

- @endif - @if ($incident->user) -

— {{ trans('dashboard.incidents.reported_by', ['timestamp' => $incident->created_at_diff, 'user' => $incident->user->username]) }}

- @endif -
- -
- @endforeach -
-
-
-
-
-@stop diff --git a/resources/views/dashboard/incidents/updates/add.blade.php b/resources/views/dashboard/incidents/updates/add.blade.php deleted file mode 100644 index 12d99621..00000000 --- a/resources/views/dashboard/incidents/updates/add.blade.php +++ /dev/null @@ -1,119 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.incidents.incidents') }} - - > {{ trans('dashboard.incidents.updates.title', ['incident' => $incident->name]) }} > {{ trans('dashboard.incidents.updates.add.title') }} -
-
-
-
- @if(!$notificationsEnabled) - - @endif - @include('partials.errors') - -
- -
- @if($incidentTemplates->count() > 0) -
- - -
- @endif -
-
- - - - -
- @if($incident->component) - - @endif - @if($incident->component) -
-
-
{{ $incident->component->name }}
-
-
- @foreach(trans('cachet.components.status') as $statusID => $status) -
- -
- @endforeach -
-
-
-
- @endif -
- -
- -
-
-
- - - -
-
- - {{ trans('forms.cancel') }} -
-
-
-
-
-
-
-@stop diff --git a/resources/views/dashboard/incidents/updates/edit.blade.php b/resources/views/dashboard/incidents/updates/edit.blade.php deleted file mode 100644 index 7f9f01ff..00000000 --- a/resources/views/dashboard/incidents/updates/edit.blade.php +++ /dev/null @@ -1,85 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.incidents.incidents') }} - - > {{ trans('dashboard.incidents.updates.title', ['incident' => $incident->name]) }} > {{ trans('dashboard.incidents.updates.edit.title') }} -
-
-
-
- @if(!$notificationsEnabled) - - @endif - @include('partials.errors') -
- -
-
-
- - - - -
- @if($incident->component) -
-
-
{{ $incident->component->name }}
-
-
- @foreach(trans('cachet.components.status') as $statusID => $status) -
- -
- @endforeach -
-
-
-
- @endif -
- -
- -
-
-
- -
-
- - {{ trans('forms.cancel') }} -
-
-
-
-
-
-@stop diff --git a/resources/views/dashboard/incidents/updates/index.blade.php b/resources/views/dashboard/incidents/updates/index.blade.php deleted file mode 100644 index 8220a7de..00000000 --- a/resources/views/dashboard/incidents/updates/index.blade.php +++ /dev/null @@ -1,42 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.incidents.incidents') }} - - > {{ trans('dashboard.incidents.updates.title', ['incident' => $incident->name]) }} -
-
- -
-
- @include('partials.errors') - -
- @foreach($incident->updates as $update) -
-
- {{ Str::words($update->message, 8) }} -

{{ trans('cachet.incidents.posted', ['timestamp' => $update->created_at_diff, 'username' => $update->user->username]) }}

-
- -
- @endforeach -
-
-
-
-@stop diff --git a/resources/views/dashboard/index.blade.php b/resources/views/dashboard/index.blade.php deleted file mode 100644 index dce3aaec..00000000 --- a/resources/views/dashboard/index.blade.php +++ /dev/null @@ -1,95 +0,0 @@ -@extends('layout.dashboard') - -@section('content') - -
-
- - - {{ trans('dashboard.dashboard') }} - -
-
-
-
- -
-
- -
-
-
- @if(!$componentGroups->isEmpty() || !$ungroupedComponents->isEmpty()) - @include('dashboard.partials.components') - @else - - @endif -
-
-
- -
-
-
- -
-
-
-
-
- -
-
- -
-
-
-
-
-
- -
-
-
-
- {{ trans('dashboard.widgets.support') }} - {!! trans('dashboard.widgets.support_subtitle') !!} -
-
-
- - @if($entries) -
-
-
- {{ trans('dashboard.widgets.news') }} - {{ trans('dashboard.widgets.news_subtitle') }} -
-
-
- @foreach($entries as $entry) - {{ $entry->title }}, {{ $entry->pubDate }} - @endforeach -
-
-
-
- @endif -
- @includeWhen($welcomeUser, 'dashboard.partials.welcome-modal') -
-
- -@stop diff --git a/resources/views/dashboard/maintenance/add.blade.php b/resources/views/dashboard/maintenance/add.blade.php deleted file mode 100644 index 07c5d6fa..00000000 --- a/resources/views/dashboard/maintenance/add.blade.php +++ /dev/null @@ -1,80 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.schedule.schedule') }} - - > {{ trans('dashboard.schedule.add.title') }} -
-
-
-
- @include('partials.errors') - -
- -
- @if($incidentTemplates->count() > 0) -
- - -
- @endif -
- - -
-
-
- @foreach(trans('cachet.schedules.status') as $id => $status) - - @endforeach -
-
- -
- -
-
-
- - -
-
- - -
-
- @if($notificationsEnabled) - -
- -
- @endif -
-
- - {{ trans('forms.cancel') }} -
-
-
-
-
-
-
-@stop diff --git a/resources/views/dashboard/maintenance/edit.blade.php b/resources/views/dashboard/maintenance/edit.blade.php deleted file mode 100644 index 456e0797..00000000 --- a/resources/views/dashboard/maintenance/edit.blade.php +++ /dev/null @@ -1,71 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.schedule.schedule') }} - - > {{ trans('dashboard.schedule.edit.title') }} -
-
-
-
- @include('partials.errors') -
- - -
- @if($incidentTemplates->count() > 0) -
- - -
- @endif -
- - -
-
-
- @foreach(trans('cachet.schedules.status') as $id => $status) - - @endforeach -
-
- -
- -
-
-
- - -
-
- - -
-
- -
-
- - {{ trans('forms.cancel') }} -
-
-
-
-
-
-@stop diff --git a/resources/views/dashboard/maintenance/index.blade.php b/resources/views/dashboard/maintenance/index.blade.php deleted file mode 100644 index c58a1dee..00000000 --- a/resources/views/dashboard/maintenance/index.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
-
- - {{ trans('dashboard.schedule.schedule') }} - - - {{ trans('dashboard.schedule.add.title') }} - -
-
-
-
- @include('partials.errors') -

{!! trans_choice('dashboard.schedule.logged', $schedule->count(), ['count' => $schedule->count()]) !!}

- -
- @foreach($schedule as $incident) -
-
- {{ $incident->name }} -
- {{ trans('dashboard.schedule.scheduled_at', ['timestamp' => $incident->scheduled_at_formatted]) }} - @if($incident->message) -

{{ Str::words($incident->message, 5) }}

- @endif -
- -
- @endforeach -
-
-
-
-
-@stop diff --git a/resources/views/dashboard/metrics/add.blade.php b/resources/views/dashboard/metrics/add.blade.php deleted file mode 100644 index 2df0dbbe..00000000 --- a/resources/views/dashboard/metrics/add.blade.php +++ /dev/null @@ -1,88 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.metrics.metrics') }} - - > {{ trans('dashboard.metrics.add.title') }} -
-
-
-
- @include('partials.errors') -
- -
-
- - -
-
- - -
-
- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
- - -
-
-
-
- - {{ trans('forms.cancel') }} -
-
-
-
-
-
-@stop diff --git a/resources/views/dashboard/metrics/edit.blade.php b/resources/views/dashboard/metrics/edit.blade.php deleted file mode 100644 index 0ad227f3..00000000 --- a/resources/views/dashboard/metrics/edit.blade.php +++ /dev/null @@ -1,91 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- - - {{ trans('dashboard.metrics.metrics') }} - - > {{ trans('dashboard.metrics.edit.title') }} -
-
-
-
- @include('partials.errors') -
- -
-
- - -
-
- - -
-
- -
- -
-
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
- - -
-
- - id}}> - -
-
- - {{ trans('forms.cancel') }} -
-
-
-
-
-
-@stop diff --git a/resources/views/dashboard/metrics/index.blade.php b/resources/views/dashboard/metrics/index.blade.php deleted file mode 100644 index 31fb0b70..00000000 --- a/resources/views/dashboard/metrics/index.blade.php +++ /dev/null @@ -1,41 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
- @includeWhen(isset($sub_menu), 'dashboard.partials.sub-sidebar') -
-
- - {{ trans('dashboard.metrics.metrics') }} - - - {{ trans('dashboard.metrics.add.title') }} - -
-
-
-
- @include('partials.errors') -
- @forelse($metrics as $metric) -
-
- {{ $metric->name }} - @if($metric->description) -

{{ Str::words($metric->description, 5) }}

- @endif -
- -
- @empty -
{{ trans('dashboard.metrics.add.message') }}
- @endforelse -
-
-
-
-
-@stop diff --git a/resources/views/dashboard/partials/component.blade.php b/resources/views/dashboard/partials/component.blade.php deleted file mode 100644 index fdf6e28a..00000000 --- a/resources/views/dashboard/partials/component.blade.php +++ /dev/null @@ -1,20 +0,0 @@ -
  • -
    -
    -
    -
    {!! $component->name !!}
    -
    -
    - @foreach(trans('cachet.components.status') as $statusID => $status) -
    - -
    - @endforeach -
    -
    - -
    -
  • diff --git a/resources/views/dashboard/partials/components.blade.php b/resources/views/dashboard/partials/components.blade.php deleted file mode 100644 index db0c3634..00000000 --- a/resources/views/dashboard/partials/components.blade.php +++ /dev/null @@ -1,30 +0,0 @@ -@if($componentGroups->count() > 0) -@foreach($componentGroups as $componentGroup) -@if($componentGroup->enabled_components->count() > 0) -
      -
    • - - {{ $componentGroup->name }} -
    • -
      - @foreach($componentGroup->enabled_components()->get() as $component) - @include('dashboard.partials.component', compact($component)) - @endforeach -
      -
    -@endif -@endforeach -@endif - -@if($ungroupedComponents->count() > 0) -
      - @if($componentGroups->count() > 0) -
    • - {{ trans('cachet.components.group.other') }} -
    • - @endif - @foreach($ungroupedComponents as $component) - @include('dashboard.partials.component', compact($component)) - @endforeach -
    -@endif diff --git a/resources/views/dashboard/partials/sidebar.blade.php b/resources/views/dashboard/partials/sidebar.blade.php deleted file mode 100644 index f94cb5b7..00000000 --- a/resources/views/dashboard/partials/sidebar.blade.php +++ /dev/null @@ -1,97 +0,0 @@ - diff --git a/resources/views/dashboard/partials/sub-sidebar.blade.php b/resources/views/dashboard/partials/sub-sidebar.blade.php deleted file mode 100644 index 0d715f6d..00000000 --- a/resources/views/dashboard/partials/sub-sidebar.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    {{ $subTitle }}

    -
    - -
    diff --git a/resources/views/dashboard/partials/welcome-modal.blade.php b/resources/views/dashboard/partials/welcome-modal.blade.php deleted file mode 100644 index e91ad13e..00000000 --- a/resources/views/dashboard/partials/welcome-modal.blade.php +++ /dev/null @@ -1,66 +0,0 @@ - diff --git a/resources/views/dashboard/settings/analytics.blade.php b/resources/views/dashboard/settings/analytics.blade.php deleted file mode 100644 index eeb514f9..00000000 --- a/resources/views/dashboard/settings/analytics.blade.php +++ /dev/null @@ -1,64 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.analytics.analytics') }} - -
    -
    -
    -
    - - @include('partials.errors') -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/settings/app-setup.blade.php b/resources/views/dashboard/settings/app-setup.blade.php deleted file mode 100644 index a62ce041..00000000 --- a/resources/views/dashboard/settings/app-setup.blade.php +++ /dev/null @@ -1,172 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.app-setup.app-setup') }} - -
    -
    -
    -
    - - @include('partials.errors') -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    - - -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/settings/credits.blade.php b/resources/views/dashboard/settings/credits.blade.php deleted file mode 100644 index 927f3825..00000000 --- a/resources/views/dashboard/settings/credits.blade.php +++ /dev/null @@ -1,39 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.credits.credits') }} - -
    -
    -
    -

    Cachet

    - -

    {!! trans('dashboard.settings.credits.license') !!}

    - -
    - -

    {{ trans('dashboard.settings.credits.contributors') }}

    - -

    {{ trans('dashboard.settings.credits.thank-you', ['count' => count($contributors)]) }}

    - -
      - @foreach($contributors as $contributor) -
    • - - - -
    • - @endforeach -
    - -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/settings/customization.blade.php b/resources/views/dashboard/settings/customization.blade.php deleted file mode 100644 index c2652cd3..00000000 --- a/resources/views/dashboard/settings/customization.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.customization.customization') }} - -
    -
    -
    -
    - - @include('partials.errors') -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/settings/localization.blade.php b/resources/views/dashboard/settings/localization.blade.php deleted file mode 100644 index 9448ef8c..00000000 --- a/resources/views/dashboard/settings/localization.blade.php +++ /dev/null @@ -1,100 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.localization.localization') }} - -
    -
    -
    -
    - - @include('partials.errors') -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/settings/log.blade.php b/resources/views/dashboard/settings/log.blade.php deleted file mode 100644 index e5a21f1e..00000000 --- a/resources/views/dashboard/settings/log.blade.php +++ /dev/null @@ -1,25 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.log.log') }} - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/settings/mail.blade.php b/resources/views/dashboard/settings/mail.blade.php deleted file mode 100644 index 133ecb03..00000000 --- a/resources/views/dashboard/settings/mail.blade.php +++ /dev/null @@ -1,58 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.mail.mail') }} - -
    -
    -
    -
    - - @include('partials.errors') -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    -
    -
    - - {{ trans('dashboard.settings.mail.test') }} -
    -
    -
    -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/settings/security.blade.php b/resources/views/dashboard/settings/security.blade.php deleted file mode 100644 index 166e705f..00000000 --- a/resources/views/dashboard/settings/security.blade.php +++ /dev/null @@ -1,71 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.security.security') }} - -
    -
    -
    -
    - - @include('partials.errors') -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    - - -
    - {{ trans('forms.settings.security.allowed-domains-help') }} -
    -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    - - @if(!$unsecureUsers->isEmpty()) -
    - -
    -
    {{ trans('dashboard.settings.security.two-factor') }}
    -
    - @foreach($unsecureUsers as $user) -
    - {{ $user->username }} - -
    - @endforeach -
    -
    - @endif -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/settings/stylesheet.blade.php b/resources/views/dashboard/settings/stylesheet.blade.php deleted file mode 100644 index 15df1bfe..00000000 --- a/resources/views/dashboard/settings/stylesheet.blade.php +++ /dev/null @@ -1,40 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.stylesheet.stylesheet') }} - -
    -
    -
    -
    - - @include('partials.errors') -
    -
    -
    -
    - - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/settings/theme.blade.php b/resources/views/dashboard/settings/theme.blade.php deleted file mode 100644 index 71199e5d..00000000 --- a/resources/views/dashboard/settings/theme.blade.php +++ /dev/null @@ -1,157 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - @includeWhen(isset($subMenu), 'dashboard.partials.sub-sidebar') -
    -
    - - {{ trans('dashboard.settings.theme.theme') }} - -
    -
    -
    -
    - - @include('partials.errors') -
    -
    -
    - - @if($appBanner) - - - @endif - - {{ trans('forms.settings.app-setup.banner-help') }} -
    -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/subscribers/add.blade.php b/resources/views/dashboard/subscribers/add.blade.php deleted file mode 100644 index dd15f7c2..00000000 --- a/resources/views/dashboard/subscribers/add.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - - - {{ trans('dashboard.subscribers.subscribers') }} - -
    -
    -
    -
    - @include('partials.errors') -
    - -
    -
    - - - {{ trans('dashboard.subscribers.add.help') }} -
    -
    - -
    -
    - - {{ trans('forms.cancel') }} -
    -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/subscribers/index.blade.php b/resources/views/dashboard/subscribers/index.blade.php deleted file mode 100644 index 2ac47e70..00000000 --- a/resources/views/dashboard/subscribers/index.blade.php +++ /dev/null @@ -1,59 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - - - {{ trans('dashboard.subscribers.subscribers') }} - - @if($currentUser->isAdmin) - - {{ trans('dashboard.subscribers.add.title') }} - - @endif -
    -
    -
    -
    -
    -

    - {{ trans('dashboard.subscribers.description') }} -

    - -
    - @foreach($subscribers as $subscriber) -
    -
    -

    {{ trans('dashboard.subscribers.subscriber', ['email' => $subscriber->email, 'date' => $subscriber->created_at]) }}

    -
    -
    - @if(is_null($subscriber->getOriginal('verified_at'))) - {{ trans('dashboard.subscribers.not_verified') }} - @else - {{ trans('dashboard.subscribers.verified') }} - @endif -
    -
    - @if($subscriber->global) -

    {{ trans('dashboard.subscribers.global') }}

    - @elseif($subscriber->subscriptions->isNotEmpty()) - {!! $subscriber->subscriptions->map(function ($subscription) { - return sprintf('%s', $subscription->component->name); - })->implode(' ') !!} - @else -

    {{ trans('dashboard.subscribers.no_subscriptions') }}

    - @endif -
    - -
    - @endforeach -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/team/add.blade.php b/resources/views/dashboard/team/add.blade.php deleted file mode 100644 index e613f1c9..00000000 --- a/resources/views/dashboard/team/add.blade.php +++ /dev/null @@ -1,52 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - - - {{ trans('dashboard.team.team') }} - -
    -
    -
    -
    - @include('partials.errors') -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    - @if($currentUser->isAdmin) -
    - - -
    - @endif -
    - -
    -
    - - {{ trans('forms.cancel') }} -
    -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/team/edit.blade.php b/resources/views/dashboard/team/edit.blade.php deleted file mode 100644 index 4ddb33dd..00000000 --- a/resources/views/dashboard/team/edit.blade.php +++ /dev/null @@ -1,55 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - - - {{ trans('dashboard.team.member') }} - -
    -
    -
    -
    - @include('partials.errors') -
    - -
    -
    - - -
    -
    - - -
    -
    - - isAdmin ? "disabled": "" }} placeholder="{{ trans('forms.user.password') }}"> -
    - @if($currentUser->isAdmin) -
    - - -
    - @endif -
    - -
    - - @if($currentUser->isAdmin) - {{ trans('cachet.api.revoke') }} - @if($currentUser->id != $user->id) - {{ trans('forms.delete') }} - @endif - @endif -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/team/index.blade.php b/resources/views/dashboard/team/index.blade.php deleted file mode 100644 index dfa753dc..00000000 --- a/resources/views/dashboard/team/index.blade.php +++ /dev/null @@ -1,41 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - - - {{ trans('dashboard.team.team') }} - - @if($currentUser->isAdmin) - - @endif -
    -
    -
    -
    -
    -

    {{ trans('dashboard.team.description') }}

    - -
    - @foreach($teamMembers as $member) - -
    -
    {{ $member->username }}
    - -
    -
    - @endforeach -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/team/invite.blade.php b/resources/views/dashboard/team/invite.blade.php deleted file mode 100644 index 5178c8c1..00000000 --- a/resources/views/dashboard/team/invite.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - - - {{ trans('dashboard.team.team') }} - -
    -
    - -
    -
    - @include('partials.errors') -
    - -
    -
    - -
    -
    -
    - - - - -
    -
    -
    - -
    -
    - - {{ trans('forms.cancel') }} - -
    -
    -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/templates/add.blade.php b/resources/views/dashboard/templates/add.blade.php deleted file mode 100644 index 1ce15817..00000000 --- a/resources/views/dashboard/templates/add.blade.php +++ /dev/null @@ -1,59 +0,0 @@ -@extends('layout.dashboard') - -@section('css') - -@stop - -@section('js') - - - - -@stop - -@section('content') -
    - - - {{ trans('dashboard.incidents.templates.title') }} - - > {{ trans('dashboard.incidents.templates.add.title') }} -
    -
    -
    -
    - @include('partials.errors') -
    - -
    -
    - - -
    -
    - - - {!! trans('forms.incidents.templates.twig') !!} -
    -
    - -
    - - {{ trans('forms.cancel') }} -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/templates/edit.blade.php b/resources/views/dashboard/templates/edit.blade.php deleted file mode 100644 index f4c82ee1..00000000 --- a/resources/views/dashboard/templates/edit.blade.php +++ /dev/null @@ -1,68 +0,0 @@ -@extends('layout.dashboard') - -@section('css') - -@stop - -@section('js') - - - - -@stop - -@section('content') -
    - - - {{ trans('dashboard.incidents.templates.title') }} - - > {{ trans('dashboard.incidents.templates.edit.title') }} -
    -
    -
    -
    - @if($updatedTemplate = Session::get('updated_template')) -
    - @if($templateErrors) - {{ sprintf("%s - %s", trans('dashboard.notifications.whoops'), trans('dashboard.incidents.templates.edit.failure').' '.$templateErrors) }} - @else - {{ sprintf("%s - %s", trans('dashboard.notifications.awesome'), trans('dashboard.incidents.templates.edit.success')) }} - @endif -
    - @endif - -
    - -
    -
    - - -
    -
    - - - {!! trans('forms.incidents.templates.twig') !!} -
    -
    - -
    - - {{ trans('forms.cancel') }} -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/templates/index.blade.php b/resources/views/dashboard/templates/index.blade.php deleted file mode 100644 index 474742b7..00000000 --- a/resources/views/dashboard/templates/index.blade.php +++ /dev/null @@ -1,37 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - - - {{ trans('dashboard.incidents.templates.title') }} - - - {{ trans('dashboard.incidents.templates.add.title') }} - -
    -
    -
    -
    - @include('partials.errors') -
    - @forelse($incidentTemplates as $template) -
    -
    - {{ $template->name }} -
    - -
    - @empty -
    {{ trans('dashboard.incidents.templates.add.message') }}
    - @endforelse -
    -
    -
    -
    -@stop diff --git a/resources/views/dashboard/user/index.blade.php b/resources/views/dashboard/user/index.blade.php deleted file mode 100644 index 1e100450..00000000 --- a/resources/views/dashboard/user/index.blade.php +++ /dev/null @@ -1,76 +0,0 @@ -@extends('layout.dashboard') - -@section('content') -
    - - - {{ trans('dashboard.team.profile') }} - -
    -
    -
    -
    - @include('partials.errors') -
    - {!! csrf_field() !!} -
    -
    -
    -
    - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    -
    - - - {{ trans('forms.user.api-token-help') }} -
    -
    -
    - -
    - @if($currentUser->hasTwoFactor) -
    - getQRCodeUrl( - 'Cachet', - $currentUser->email, - $currentUser->google_2fa_secret - ); - ?> - qr code - {!! trans('forms.user.2fa.help') !!} -
    - @endif - - -
    -
    -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/errors/401.blade.php b/resources/views/errors/401.blade.php deleted file mode 100644 index 10f05b88..00000000 --- a/resources/views/errors/401.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@extends('errors::illustrated-layout') - -@section('code', '401') -@section('title', __('Unauthorized')) - -@section('image') -
    -
    -@endsection - -@section('message', __('Sorry, you are not authorized to access this page.')) diff --git a/resources/views/errors/403.blade.php b/resources/views/errors/403.blade.php deleted file mode 100644 index bbb79a49..00000000 --- a/resources/views/errors/403.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@extends('errors::illustrated-layout') - -@section('code', '403') -@section('title', __('Forbidden')) - -@section('image') -
    -
    -@endsection - -@section('message', __($exception->getMessage() ?: __('Sorry, you are forbidden from accessing this page.'))) diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php deleted file mode 100644 index d2bae51f..00000000 --- a/resources/views/errors/404.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@extends('errors::illustrated-layout') - -@section('code', '404') -@section('title', __('Page Not Found')) - -@section('image') -
    -
    -@endsection - -@section('message', __('Sorry, the page you are looking for could not be found.')) diff --git a/resources/views/errors/419.blade.php b/resources/views/errors/419.blade.php deleted file mode 100644 index 1b00819f..00000000 --- a/resources/views/errors/419.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@extends('errors::illustrated-layout') - -@section('code', '419') -@section('title', __('Page Expired')) - -@section('image') -
    -
    -@endsection - -@section('message', __('Sorry, your session has expired. Please refresh and try again.')) diff --git a/resources/views/errors/429.blade.php b/resources/views/errors/429.blade.php deleted file mode 100644 index 2747654a..00000000 --- a/resources/views/errors/429.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@extends('errors::illustrated-layout') - -@section('code', '429') -@section('title', __('Too Many Requests')) - -@section('image') -
    -
    -@endsection - -@section('message', __('Sorry, you are making too many requests to our servers.')) diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php deleted file mode 100644 index 8868cf82..00000000 --- a/resources/views/errors/500.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@extends('errors::illustrated-layout') - -@section('code', '500') -@section('title', __('Error')) - -@section('image') -
    -
    -@endsection - -@section('message', __('Whoops, something went wrong on our servers.')) diff --git a/resources/views/errors/503.blade.php b/resources/views/errors/503.blade.php deleted file mode 100644 index 476ff52f..00000000 --- a/resources/views/errors/503.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@extends('errors::illustrated-layout') - -@section('code', '503') -@section('title', __('Service Unavailable')) - -@section('image') -
    -
    -@endsection - -@section('message', __($exception->getMessage() ?: __('Sorry, we are doing some maintenance. Please check back soon.'))) diff --git a/resources/views/errors/illustrated-layout.blade.php b/resources/views/errors/illustrated-layout.blade.php deleted file mode 100644 index 3730d05a..00000000 --- a/resources/views/errors/illustrated-layout.blade.php +++ /dev/null @@ -1,486 +0,0 @@ - - - - @yield('title') - - - - - - - - - - - - -
    -
    -
    -
    - @yield('code', __('Oh no')) -
    - -
    - -

    - @yield('message') -

    - - - - -
    -
    - -
    - @yield('image') -
    -
    - - diff --git a/resources/views/errors/layout.blade.php b/resources/views/errors/layout.blade.php deleted file mode 100644 index 2c51d4f3..00000000 --- a/resources/views/errors/layout.blade.php +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - @yield('title') - - - - - - - - - -
    -
    -
    - @yield('message') -
    -
    -
    - - diff --git a/resources/views/errors/maintenance.blade.php b/resources/views/errors/maintenance.blade.php deleted file mode 100644 index f297fd8f..00000000 --- a/resources/views/errors/maintenance.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@extends('layout.master') - -@section('content') -
    -
    - Under Maintenance -
    -
    -

    We're currently under maintenance, come back shortly.

    -
    -
    -@stop diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php deleted file mode 100644 index a76f68d9..00000000 --- a/resources/views/index.blade.php +++ /dev/null @@ -1,16 +0,0 @@ -@extends('layout.master') - -@section('content') -@include('partials.modules.messages') -@include('partials.modules.status') -@include('partials.about-app') -@include('partials.modules.components') -@include('partials.modules.metrics') -@include('partials.modules.stickied') -@include('partials.modules.scheduled') -@include('partials.modules.timeline') -@stop - -@section('bottom-content') -@include('partials.footer') -@stop diff --git a/resources/views/layout/clean.blade.php b/resources/views/layout/clean.blade.php deleted file mode 100644 index 9cb13ca5..00000000 --- a/resources/views/layout/clean.blade.php +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - {{ $pageTitle ?? $siteTitle }} - - @if($enableExternalDependencies) - {{-- --}} - @endif - - @yield('css') - - @include('partials.crowdin') - - - - - - - - -
    - @yield('content') -
    - -@yield('js') - - diff --git a/resources/views/layout/dashboard.blade.php b/resources/views/layout/dashboard.blade.php deleted file mode 100644 index 8af82763..00000000 --- a/resources/views/layout/dashboard.blade.php +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - {{ $pageTitle ?? $siteTitle }} - - - - @if($enableExternalDependencies) - - @endif - - @yield('css') - - @include('partials.crowdin') - - - - - - -
    - @include('dashboard.partials.sidebar') -
    - @if(!$isWriteable) -
    -
    -
    -
    - {!! trans('dashboard.writeable_settings') !!} -
    -
    -
    -
    - @endif - - @yield('content') -
    -
    - -@yield('js') - - diff --git a/resources/views/layout/master.blade.php b/resources/views/layout/master.blade.php deleted file mode 100644 index 48f37555..00000000 --- a/resources/views/layout/master.blade.php +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @if (isset($favicon)) - - - @else - - - @endif - - - - - - - - - - @yield('title', $siteTitle) - - @if($enableExternalDependencies) - - @endif - - - @include('partials.stylesheet') - - @include('partials.crowdin') - - @if($appStylesheet) - - @endif - - - - - - - @yield('outer-content') - - @include('partials.banner') - -
    - @yield('content') -
    - - @yield('bottom-content') - - - diff --git a/resources/views/notifications/component/update.blade.php b/resources/views/notifications/component/update.blade.php deleted file mode 100644 index a5515ae0..00000000 --- a/resources/views/notifications/component/update.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@component('mail::message') -# {{ trans('notifications.component.status_update.mail.greeting') }} - -{{ $content }} - -@lang('Thanks,')
    -{{ Config::get('setting.app_name') }} - -@include('notifications.partials.subscription') - -@endcomponent diff --git a/resources/views/notifications/incident/new.blade.php b/resources/views/notifications/incident/new.blade.php deleted file mode 100644 index 7dbcad64..00000000 --- a/resources/views/notifications/incident/new.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@component('mail::message') -# {{ trans('notifications.incident.new.mail.greeting', ['app_name' => Config::get('setting.app_name')]) }} - -{{ $incident->message }} - -@component('mail::button', ['url' => $actionUrl]) -{{ $actionText }} -@endcomponent - -@lang('Thanks,')
    -{{ Config::get('setting.app_name') }} - -@include('notifications.partials.subscription') - -@endcomponent diff --git a/resources/views/notifications/incident/update.blade.php b/resources/views/notifications/incident/update.blade.php deleted file mode 100644 index 12c9b63b..00000000 --- a/resources/views/notifications/incident/update.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@component('mail::message') -# {{ trans('notifications.incident.update.mail.title', ['name' => $incidentName, 'new_status' => $newStatus]) }} - -{{ $update->message }} - -@component('mail::button', ['url' => $actionUrl]) -{{ $actionText }} -@endcomponent - -@lang('Thanks,')
    -{{ Config::get('setting.app_name') }} - -@include('notifications.partials.subscription') - -@endcomponent diff --git a/resources/views/notifications/partials/subscription.blade.php b/resources/views/notifications/partials/subscription.blade.php deleted file mode 100644 index 6e8ebf3d..00000000 --- a/resources/views/notifications/partials/subscription.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -@component('mail::subcopy') -[{{ $unsubscribeText }}]({{ $unsubscribeUrl }}) — [{{ $manageSubscriptionText }}]({{ $manageSubscriptionUrl }}) -@endcomponent diff --git a/resources/views/notifications/schedule/new.blade.php b/resources/views/notifications/schedule/new.blade.php deleted file mode 100644 index 7a5872de..00000000 --- a/resources/views/notifications/schedule/new.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@component('mail::message') -# {{ trans('notifications.schedule.new.mail.title') }} - -{{ $content }} - -@lang('Thanks,')
    -{{ Config::get('setting.app_name') }} - -@include('notifications.partials.subscription') - -@endcomponent diff --git a/resources/views/partials/about-app.blade.php b/resources/views/partials/about-app.blade.php deleted file mode 100644 index f514743d..00000000 --- a/resources/views/partials/about-app.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@if($aboutApp) -
    -

    {{ trans('cachet.about_this_site') }}

    - {!! $aboutApp !!} -
    -@endif - diff --git a/resources/views/partials/analytics.blade.php b/resources/views/partials/analytics.blade.php deleted file mode 100644 index d6159713..00000000 --- a/resources/views/partials/analytics.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@if($enableExternalDependencies) -@if($appAnalytics) - -@endif -@if($appAnalyticsGoSquared) - -@endif -@if($appAnalyticsPiwikUrl) - - -@endif -@endif diff --git a/resources/views/partials/banner.blade.php b/resources/views/partials/banner.blade.php deleted file mode 100644 index 9ab23ab2..00000000 --- a/resources/views/partials/banner.blade.php +++ /dev/null @@ -1,19 +0,0 @@ -@if($appHeader) -{!! $appHeader !!} -@else -@if($appBanner) -
    -
    -
    -
    - @if($appDomain) - - @else - - @endif -
    -
    -
    -
    -@endif -@endif diff --git a/resources/views/partials/component.blade.php b/resources/views/partials/component.blade.php deleted file mode 100644 index 6da6145b..00000000 --- a/resources/views/partials/component.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -
  • status }}"> - @if($component->link) - {!! $component->name !!} - @else - {!! $component->name !!} - @endif - - @if($component->description) - - @endif - -
    - {{ $component->human_status }} -
    -
  • diff --git a/resources/views/partials/component_input.blade.php b/resources/views/partials/component_input.blade.php deleted file mode 100644 index 0ffdc50f..00000000 --- a/resources/views/partials/component_input.blade.php +++ /dev/null @@ -1,17 +0,0 @@ -
  • -
    - - @if($component->description) - - @endif -
    -
  • diff --git a/resources/views/partials/components.blade.php b/resources/views/partials/components.blade.php deleted file mode 100644 index c35143a9..00000000 --- a/resources/views/partials/components.blade.php +++ /dev/null @@ -1,34 +0,0 @@ -@if($componentGroups->isNotEmpty()) -@foreach($componentGroups as $componentGroup) -
      - @if($componentGroup->enabled_components->isNotEmpty()) -
    • - - {{ $componentGroup->name }} - -
      - -
      -
    • - -
      - @each('partials.component', $componentGroup->enabled_components, 'component') -
      - @endif -
    -@endforeach -@endif - -@if($ungroupedComponents->isNotEmpty()) -
      -
    • - {{ trans('cachet.components.group.other') }} - -
      - -
      -
    • - - @each('partials.component', $ungroupedComponents, 'component') -
    -@endif diff --git a/resources/views/partials/components_form.blade.php b/resources/views/partials/components_form.blade.php deleted file mode 100644 index 44f687ba..00000000 --- a/resources/views/partials/components_form.blade.php +++ /dev/null @@ -1,33 +0,0 @@ -@if($componentGroups->isNotEmpty()) -@foreach($componentGroups as $componentGroup) -
      - @if($componentGroup->enabled_components->isNotEmpty()) -
    • - - {{ $componentGroup->name }} -
      - Select All -  |  - Deselect All -
      -
    • -
      - @foreach($componentGroup->enabled_components()->orderBy('order')->get() as $component) - @include('partials.component_input', compact($component)) - @endforeach -
      - @endif -
    -@endforeach -@endif - -@if($ungroupedComponents->isNotEmpty()) -
      -
    • - {{ trans('cachet.components.group.other') }} -
    • - @foreach($ungroupedComponents as $component) - @include('partials.component_input', compact($component)) - @endforeach -
    -@endif diff --git a/resources/views/partials/crowdin.blade.php b/resources/views/partials/crowdin.blade.php deleted file mode 100644 index 88303f56..00000000 --- a/resources/views/partials/crowdin.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -@if($appLocale === 'en-UD' && $enableExternalDependencies) - - -@endif diff --git a/resources/views/partials/error.blade.php b/resources/views/partials/error.blade.php deleted file mode 100644 index 7bd21e70..00000000 --- a/resources/views/partials/error.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -
    - -
    diff --git a/resources/views/partials/errors.blade.php b/resources/views/partials/errors.blade.php deleted file mode 100644 index 01aaae2b..00000000 --- a/resources/views/partials/errors.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -@if ($errors->any()) -@include('partials.error', ['level' => 'danger', 'title' => Session::get('title'), 'message' => $errors->all(':message')]) -@endif - -@if ($message = Session::get('success')) -@include('partials.error', ['level' => 'success', 'title' => Session::get('title'), 'message' => $message]) -@endif - -@if ($message = Session::get('warning')) -@include('partials.error', ['level' => 'warning', 'title' => Session::get('title'), 'message' => $message]) -@endif - -@if ($message = Session::get('info')) -@include('partials.error', ['level' => 'info', 'title' => Session::get('title'), 'message' => $message]) -@endif diff --git a/resources/views/partials/footer.blade.php b/resources/views/partials/footer.blade.php deleted file mode 100644 index 12601f98..00000000 --- a/resources/views/partials/footer.blade.php +++ /dev/null @@ -1,41 +0,0 @@ -@if($appFooter) -{!! $appFooter !!} -@else - -@endif - -@include("partials.analytics") diff --git a/resources/views/partials/incidents.blade.php b/resources/views/partials/incidents.blade.php deleted file mode 100644 index b775aa40..00000000 --- a/resources/views/partials/incidents.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -

    {{ formatted_date($date) }}

    -
    -
    - @forelse($incidents as $incident) -
    -
    -
    -
    - -
    -
    -
    -
    -
    - @if($currentUser) - - @endif - @if($incident->component) - {{ $incident->component->name }} - @endif - {{ $incident->name }}{{ $incident->isScheduled ? trans("cachet.incidents.scheduled_at", ["timestamp" => $incident->scheduled_at_diff]) : null }} -
    - - - -
    -
    - {!! $incident->formatted_message !!} -
    - @if($incident->updates->isNotEmpty()) -
    - @foreach($incident->updates as $update) -
  • - - - {!! $update->formatted_message !!} - - - - - - -
  • - @endforeach -
    - @endif -
    - -
    -
    -
    - @empty -
    -
    -

    {{ trans('cachet.incidents.none') }}

    -
    -
    - @endforelse -
    -
    diff --git a/resources/views/partials/modules/components.blade.php b/resources/views/partials/modules/components.blade.php deleted file mode 100644 index dc3e0e80..00000000 --- a/resources/views/partials/modules/components.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@if($componentGroups->isNotEmpty() || $ungroupedComponents->isNotEmpty()) -
    - @include('partials.components') -
    -@endif diff --git a/resources/views/partials/modules/messages.blade.php b/resources/views/partials/modules/messages.blade.php deleted file mode 100644 index 4ef1d9b3..00000000 --- a/resources/views/partials/modules/messages.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -
    - @include('partials.errors') -
    diff --git a/resources/views/partials/modules/metrics.blade.php b/resources/views/partials/modules/metrics.blade.php deleted file mode 100644 index ce51a059..00000000 --- a/resources/views/partials/modules/metrics.blade.php +++ /dev/null @@ -1,13 +0,0 @@ -@if($displayMetrics && $appGraphs) -
    - @if($metrics->count() > 0) -
      - @foreach($metrics as $metric) -
    • - -
    • - @endforeach -
    - @endif -
    -@endif diff --git a/resources/views/partials/modules/scheduled.blade.php b/resources/views/partials/modules/scheduled.blade.php deleted file mode 100644 index e7291a21..00000000 --- a/resources/views/partials/modules/scheduled.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@if($scheduledMaintenance->isNotEmpty()) -
    - @include('partials.schedule') -
    -@endif diff --git a/resources/views/partials/modules/status.blade.php b/resources/views/partials/modules/status.blade.php deleted file mode 100644 index f98017e9..00000000 --- a/resources/views/partials/modules/status.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -
    -
    {{ $systemMessage }}
    -
    diff --git a/resources/views/partials/modules/stickied.blade.php b/resources/views/partials/modules/stickied.blade.php deleted file mode 100644 index 0699cc12..00000000 --- a/resources/views/partials/modules/stickied.blade.php +++ /dev/null @@ -1,8 +0,0 @@ -@if($stickiedIncidents->isNotEmpty()) -
    -

    {{ trans('cachet.incidents.stickied') }}

    - @foreach($stickiedIncidents as $date => $incidents) - @include('partials.incidents') - @endforeach -
    -@endif diff --git a/resources/views/partials/modules/timeline.blade.php b/resources/views/partials/modules/timeline.blade.php deleted file mode 100644 index 1c990499..00000000 --- a/resources/views/partials/modules/timeline.blade.php +++ /dev/null @@ -1,27 +0,0 @@ -@if($daysToShow > 0 && $allIncidents) -
    -

    {{ trans('cachet.incidents.past') }}

    - @foreach($allIncidents as $date => $incidents) - @include('partials.incidents', [@compact($date), @compact($incidents)]) - @endforeach -
    - - -@endif diff --git a/resources/views/partials/nav.blade.php b/resources/views/partials/nav.blade.php deleted file mode 100644 index d823d7ff..00000000 --- a/resources/views/partials/nav.blade.php +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/resources/views/partials/schedule.blade.php b/resources/views/partials/schedule.blade.php deleted file mode 100644 index a077589b..00000000 --- a/resources/views/partials/schedule.blade.php +++ /dev/null @@ -1,24 +0,0 @@ -
    -
    -
    - {{ trans('cachet.incidents.scheduled') }} -
    -
    - @foreach($scheduledMaintenance as $schedule) -
    - {{ $schedule->name }} -
    -
    - {!! $schedule->formatted_message !!} -
    - @if($schedule->components->count() > 0) -
    - @foreach($schedule->components as $affectedComponent) - {{ $affectedComponent->component->name }} - @endforeach - @endif -
    - @endforeach -
    -
    -
    diff --git a/resources/views/partials/stylesheet.blade.php b/resources/views/partials/stylesheet.blade.php deleted file mode 100644 index f6ce0440..00000000 --- a/resources/views/partials/stylesheet.blade.php +++ /dev/null @@ -1,125 +0,0 @@ - diff --git a/resources/views/setup/index.blade.php b/resources/views/setup/index.blade.php deleted file mode 100644 index 09b06ccc..00000000 --- a/resources/views/setup/index.blade.php +++ /dev/null @@ -1,241 +0,0 @@ -@extends('layout.clean') - -@section('pageTitle', trans('setup.setup')) - -@section('content') -
    -
    - -
    -
    -
    -
    - {{ trans('setup.env_setup') }} - -
    -
    - {{ trans('setup.status_page_setup') }} - -
    -
    - {{ trans("setup.admin_account") }} - -
    -
    - {{ trans("setup.complete_setup") }} - -
    -
    - -
    - - -
    -
    -
    -
    -
    -
    - - - @if($errors->has('env.cache_driver')) - {{ $errors->first('env.cache_driver') }} - @endif -
    -
    - - - @if($errors->has('env.queue_driver')) - {{ $errors->first('env.queue_driver') }} - @endif -
    -
    - - - @if($errors->has('env.session_driver')) - {{ $errors->first('env.session_driver') }} - @endif -
    -
    -
    -
    -
    - - - @if($errors->has('env.mail_driver')) - {{ $errors->first('env.mail_driver') }} - @endif -
    -
    - - - @if($errors->has('env.mail_host')) - {{ $errors->first('env.mail_host') }} - @endif -
    -
    - - - @if($errors->has('env.mail_address')) - {{ $errors->first('env.mail_address') }} - @endif -
    -
    - - - @if($errors->has('env.mail_username')) - {{ $errors->first('env.mail_username') }} - @endif -
    -
    - - - @if($errors->has('env.mail_password')) - {{ $errors->first('env.mail_password') }} - @endif -
    -
    -
    -
    - - {{ trans('pagination.next') }} - -
    -
    - - - -
    -
    -
    -
    -@stop diff --git a/resources/views/signup.blade.php b/resources/views/signup.blade.php deleted file mode 100644 index 29ec2604..00000000 --- a/resources/views/signup.blade.php +++ /dev/null @@ -1,53 +0,0 @@ -@extends('layout.master') - -@section('title', trans('cachet.signup.title').' | '.$siteTitle) - -@section('content') -
    -

    -
    - -
    - -@if($appBanner) -
    -
    - @if($appDomain) - - @else - - @endif -
    -
    -@endif - -@include('partials.errors') - -
    -
    - {{ trans('cachet.signup.title') }} -
    -
    -
    - -
    - - -
    -
    - - -
    -
    - - -
    - -
    -
    -
    -@stop - -@section('bottom-content') -@include('partials.footer') -@stop diff --git a/resources/views/single-incident.blade.php b/resources/views/single-incident.blade.php deleted file mode 100644 index 024bc2d7..00000000 --- a/resources/views/single-incident.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@extends('layout.master') - -@section('title', array_get($incident->meta, 'seo.title', $incident->name).' | '.$siteTitle) - -@section('description', array_get($incident->meta, 'seo.description', trans('cachet.meta.description.incident', ['name' => $incident->name, 'date' => $incident->occurred_at_formatted]))) - -@section('bodyClass', 'no-padding') - -@section('outer-content') -@include('partials.nav') -@stop - -@section('content') -

    {{ $incident->name }} {{ $incident->occurred_at_formatted }}

    - -
    - -
    - {!! $incident->formatted_message !!} -
    - -@if($incident->updates) -
    -
    - @foreach ($incident->updates as $update) -
    -
    -
    -
    - -
    -
    -
    -
    -
    - @if($currentUser) - - @endif -
    - {!! $update->formatted_message !!} -
    -
    - -
    -
    -
    -
    - @endforeach -
    -
    -@endif -@stop - -@section('bottom-content') -@include('partials.footer') -@stop diff --git a/resources/views/single-schedule.blade.php b/resources/views/single-schedule.blade.php deleted file mode 100644 index f10728ee..00000000 --- a/resources/views/single-schedule.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('layout.master') - -@section('title', $schedule->name.' | '.$siteTitle) - -@section('description', trans('cachet.meta.description.schedule', ['name' => $schedule->name, 'startDate' => $schedule->scheduled_at_formatted])) - -@section('bodyClass', 'no-padding') - -@section('outer-content') -@include('partials.nav') -@stop - -@section('content') -

    {{ $schedule->name }}

    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - {{ $schedule->name }}{{ trans("cachet.incidents.scheduled_at", ["timestamp" => $schedule->scheduled_at_diff]) }} -
    -
    - {!! $schedule->formatted_message !!} -
    -
    -
    -
    -
    -
    -
    -@stop - -@section('bottom-content') -@include('partials.footer') -@stop diff --git a/resources/views/subscribe/manage.blade.php b/resources/views/subscribe/manage.blade.php deleted file mode 100644 index 23472c6b..00000000 --- a/resources/views/subscribe/manage.blade.php +++ /dev/null @@ -1,68 +0,0 @@ -@extends('layout.master') - -@section('content') - -
    -

    -
    - -
    - -@include('partials.errors') - -
    -
    -
    -

    {{ $appName }} {{ trans('cachet.subscriber.manage.notifications') }}

    -

    {{ trans('cachet.subscriber.manage.notifications_for') }} {{ $subscriber->email }}

    -
    -
    - - @if($componentGroups->isNotEmpty() || $ungroupedComponents->isNotEmpty()) - @foreach($componentGroups as $componentGroup) - - @endforeach - - @if($ungroupedComponents->isNotEmpty()) - - @endif - @else -

    {{ trans('cachet.subscriber.manage.no_subscriptions') }}

    - @endif - -
    - -
    -
    -
    -
    -@stop diff --git a/resources/views/subscribe/subscribe.blade.php b/resources/views/subscribe/subscribe.blade.php deleted file mode 100644 index 01bd704c..00000000 --- a/resources/views/subscribe/subscribe.blade.php +++ /dev/null @@ -1,32 +0,0 @@ -@extends('layout.master') - -@section('title', trans('cachet.subscriber.subscribe'). " | ". $siteTitle) - -@section('description', trans('cachet.meta.description.subscribe', ['app' => $siteTitle])) - -@section('content') -
    -

    -
    - -
    - -@include('partials.errors') - -
    -
    -
    -
    {{ trans('cachet.subscriber.subscribe') }}
    -
    -
    - -
    - -
    - -
    -
    -
    -
    -
    -@stop diff --git a/resources/views/vendor/cachet/status-page/index.blade.php b/resources/views/vendor/cachet/status-page/index.blade.php new file mode 100644 index 00000000..2ce0e5d2 --- /dev/null +++ b/resources/views/vendor/cachet/status-page/index.blade.php @@ -0,0 +1,31 @@ + + + +
    +
    +

    About This Site

    +
    + {{-- format-ignore-start --}} +

    + This is the demo instance of Cachet. The + open-source status page system. +

    + {{-- format-ignore-end --}} +
    +
    + +
    + + + @foreach($componentGroups as $componentGroup) + + @endforeach + + + + +
    +
    + + +
    diff --git a/resources/views/vendor/mail/html/button.blade.php b/resources/views/vendor/mail/html/button.blade.php deleted file mode 100644 index 9d14d9b1..00000000 --- a/resources/views/vendor/mail/html/button.blade.php +++ /dev/null @@ -1,19 +0,0 @@ - - - - -
    - - - - -
    - - - - -
    - {{ $slot }} -
    -
    -
    diff --git a/resources/views/vendor/mail/html/footer.blade.php b/resources/views/vendor/mail/html/footer.blade.php deleted file mode 100644 index c3f9360a..00000000 --- a/resources/views/vendor/mail/html/footer.blade.php +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - diff --git a/resources/views/vendor/mail/html/header.blade.php b/resources/views/vendor/mail/html/header.blade.php deleted file mode 100644 index eefabab9..00000000 --- a/resources/views/vendor/mail/html/header.blade.php +++ /dev/null @@ -1,7 +0,0 @@ - - - - {{ $slot }} - - - diff --git a/resources/views/vendor/mail/html/layout.blade.php b/resources/views/vendor/mail/html/layout.blade.php deleted file mode 100644 index 859900a3..00000000 --- a/resources/views/vendor/mail/html/layout.blade.php +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - -
    - - {{ $header ?? '' }} - - - - - - - {{ $footer ?? '' }} -
    - - - - - -
    - {{ Illuminate\Mail\Markdown::parse($slot) }} - - {{ $subcopy ?? '' }} -
    -
    -
    - - diff --git a/resources/views/vendor/mail/html/message.blade.php b/resources/views/vendor/mail/html/message.blade.php deleted file mode 100644 index 5d10c041..00000000 --- a/resources/views/vendor/mail/html/message.blade.php +++ /dev/null @@ -1,27 +0,0 @@ -@component('mail::layout') - {{-- Header --}} - @slot('header') - @component('mail::header', ['url' => config('app.url')]) - {{ setting('app_name', config('app.name')) }} - @endcomponent - @endslot - - {{-- Body --}} - {{ $slot }} - - {{-- Subcopy --}} - @isset($subcopy) - @slot('subcopy') - @component('mail::subcopy') - {{ $subcopy }} - @endcomponent - @endslot - @endisset - - {{-- Footer --}} - @slot('footer') - @component('mail::footer') - © {{ date('Y') }} {{ setting('app_name', config('app.name')) }}. @lang('All rights reserved.') - @endcomponent - @endslot -@endcomponent diff --git a/resources/views/vendor/mail/html/panel.blade.php b/resources/views/vendor/mail/html/panel.blade.php deleted file mode 100644 index f3970802..00000000 --- a/resources/views/vendor/mail/html/panel.blade.php +++ /dev/null @@ -1,13 +0,0 @@ - - - - -
    - - - - -
    - {{ Illuminate\Mail\Markdown::parse($slot) }} -
    -
    diff --git a/resources/views/vendor/mail/html/promotion.blade.php b/resources/views/vendor/mail/html/promotion.blade.php deleted file mode 100644 index 0debcf8a..00000000 --- a/resources/views/vendor/mail/html/promotion.blade.php +++ /dev/null @@ -1,7 +0,0 @@ - - - - -
    - {{ Illuminate\Mail\Markdown::parse($slot) }} -
    diff --git a/resources/views/vendor/mail/html/promotion/button.blade.php b/resources/views/vendor/mail/html/promotion/button.blade.php deleted file mode 100644 index 8e79081c..00000000 --- a/resources/views/vendor/mail/html/promotion/button.blade.php +++ /dev/null @@ -1,13 +0,0 @@ - - - - -
    - - - - -
    - {{ $slot }} -
    -
    diff --git a/resources/views/vendor/mail/html/subcopy.blade.php b/resources/views/vendor/mail/html/subcopy.blade.php deleted file mode 100644 index c3df7b4c..00000000 --- a/resources/views/vendor/mail/html/subcopy.blade.php +++ /dev/null @@ -1,7 +0,0 @@ - - - - -
    - {{ Illuminate\Mail\Markdown::parse($slot) }} -
    diff --git a/resources/views/vendor/mail/html/table.blade.php b/resources/views/vendor/mail/html/table.blade.php deleted file mode 100644 index a5f3348b..00000000 --- a/resources/views/vendor/mail/html/table.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -
    -{{ Illuminate\Mail\Markdown::parse($slot) }} -
    diff --git a/resources/views/vendor/mail/html/themes/default.css b/resources/views/vendor/mail/html/themes/default.css deleted file mode 100644 index aa4afb26..00000000 --- a/resources/views/vendor/mail/html/themes/default.css +++ /dev/null @@ -1,290 +0,0 @@ -/* Base */ - -body, body *:not(html):not(style):not(br):not(tr):not(code) { - font-family: Avenir, Helvetica, sans-serif; - box-sizing: border-box; -} - -body { - background-color: #f5f8fa; - color: #74787E; - height: 100%; - hyphens: auto; - line-height: 1.4; - margin: 0; - -moz-hyphens: auto; - -ms-word-break: break-all; - width: 100% !important; - -webkit-hyphens: auto; - -webkit-text-size-adjust: none; - word-break: break-all; - word-break: break-word; -} - -p, -ul, -ol, -blockquote { - line-height: 1.4; - text-align: left; -} - -a { - color: #3869D4; -} - -a img { - border: none; -} - -/* Typography */ - -h1 { - color: #2F3133; - font-size: 19px; - font-weight: bold; - margin-top: 0; - text-align: left; -} - -h2 { - color: #2F3133; - font-size: 16px; - font-weight: bold; - margin-top: 0; - text-align: left; -} - -h3 { - color: #2F3133; - font-size: 14px; - font-weight: bold; - margin-top: 0; - text-align: left; -} - -p { - color: #74787E; - font-size: 16px; - line-height: 1.5em; - margin-top: 0; - text-align: left; -} - -p.sub { - font-size: 12px; -} - -img { - max-width: 100%; -} - -/* Layout */ - -.wrapper { - background-color: #f5f8fa; - margin: 0; - padding: 0; - width: 100%; - -premailer-cellpadding: 0; - -premailer-cellspacing: 0; - -premailer-width: 100%; -} - -.content { - margin: 0; - padding: 0; - width: 100%; - -premailer-cellpadding: 0; - -premailer-cellspacing: 0; - -premailer-width: 100%; -} - -/* Header */ - -.header { - padding: 25px 0; - text-align: center; -} - -.header a { - color: #bbbfc3; - font-size: 19px; - font-weight: bold; - text-decoration: none; - text-shadow: 0 1px 0 white; -} - -/* Body */ - -.body { - background-color: #FFFFFF; - border-bottom: 1px solid #EDEFF2; - border-top: 1px solid #EDEFF2; - margin: 0; - padding: 0; - width: 100%; - -premailer-cellpadding: 0; - -premailer-cellspacing: 0; - -premailer-width: 100%; -} - -.inner-body { - background-color: #FFFFFF; - margin: 0 auto; - padding: 0; - width: 570px; - -premailer-cellpadding: 0; - -premailer-cellspacing: 0; - -premailer-width: 570px; -} - -/* Subcopy */ - -.subcopy { - border-top: 1px solid #EDEFF2; - margin-top: 25px; - padding-top: 25px; -} - -.subcopy p { - font-size: 12px; -} - -/* Footer */ - -.footer { - margin: 0 auto; - padding: 0; - text-align: center; - width: 570px; - -premailer-cellpadding: 0; - -premailer-cellspacing: 0; - -premailer-width: 570px; -} - -.footer p { - color: #AEAEAE; - font-size: 12px; - text-align: center; -} - -/* Tables */ - -.table table { - margin: 30px auto; - width: 100%; - -premailer-cellpadding: 0; - -premailer-cellspacing: 0; - -premailer-width: 100%; -} - -.table th { - border-bottom: 1px solid #EDEFF2; - padding-bottom: 8px; - margin: 0; -} - -.table td { - color: #74787E; - font-size: 15px; - line-height: 18px; - padding: 10px 0; - margin: 0; -} - -.content-cell { - padding: 35px; -} - -/* Buttons */ - -.action { - margin: 30px auto; - padding: 0; - text-align: center; - width: 100%; - -premailer-cellpadding: 0; - -premailer-cellspacing: 0; - -premailer-width: 100%; -} - -.button { - border-radius: 3px; - box-shadow: 0 2px 3px rgba(0, 0, 0, 0.16); - color: #FFF; - display: inline-block; - text-decoration: none; - -webkit-text-size-adjust: none; -} - -.button-blue, -.button-primary { - background-color: #3097D1; - border-top: 10px solid #3097D1; - border-right: 18px solid #3097D1; - border-bottom: 10px solid #3097D1; - border-left: 18px solid #3097D1; -} - -.button-green, -.button-success { - background-color: #2ab27b; - border-top: 10px solid #2ab27b; - border-right: 18px solid #2ab27b; - border-bottom: 10px solid #2ab27b; - border-left: 18px solid #2ab27b; -} - -.button-red, -.button-error { - background-color: #bf5329; - border-top: 10px solid #bf5329; - border-right: 18px solid #bf5329; - border-bottom: 10px solid #bf5329; - border-left: 18px solid #bf5329; -} - -/* Panels */ - -.panel { - margin: 0 0 21px; -} - -.panel-content { - background-color: #EDEFF2; - padding: 16px; -} - -.panel-item { - padding: 0; -} - -.panel-item p:last-of-type { - margin-bottom: 0; - padding-bottom: 0; -} - -/* Promotions */ - -.promotion { - background-color: #FFFFFF; - border: 2px dashed #9BA2AB; - margin: 0; - margin-bottom: 25px; - margin-top: 25px; - padding: 24px; - width: 100%; - -premailer-cellpadding: 0; - -premailer-cellspacing: 0; - -premailer-width: 100%; -} - -.promotion h1 { - text-align: center; -} - -.promotion p { - font-size: 15px; - text-align: center; -} diff --git a/resources/views/vendor/mail/markdown/button.blade.php b/resources/views/vendor/mail/markdown/button.blade.php deleted file mode 100644 index 97444ebd..00000000 --- a/resources/views/vendor/mail/markdown/button.blade.php +++ /dev/null @@ -1 +0,0 @@ -{{ $slot }}: {{ $url }} diff --git a/resources/views/vendor/mail/markdown/footer.blade.php b/resources/views/vendor/mail/markdown/footer.blade.php deleted file mode 100644 index 3338f620..00000000 --- a/resources/views/vendor/mail/markdown/footer.blade.php +++ /dev/null @@ -1 +0,0 @@ -{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/header.blade.php b/resources/views/vendor/mail/markdown/header.blade.php deleted file mode 100644 index aaa3e575..00000000 --- a/resources/views/vendor/mail/markdown/header.blade.php +++ /dev/null @@ -1 +0,0 @@ -[{{ $slot }}]({{ $url }}) diff --git a/resources/views/vendor/mail/markdown/layout.blade.php b/resources/views/vendor/mail/markdown/layout.blade.php deleted file mode 100644 index 9378baa0..00000000 --- a/resources/views/vendor/mail/markdown/layout.blade.php +++ /dev/null @@ -1,9 +0,0 @@ -{!! strip_tags($header) !!} - -{!! strip_tags($slot) !!} -@isset($subcopy) - -{!! strip_tags($subcopy) !!} -@endisset - -{!! strip_tags($footer) !!} diff --git a/resources/views/vendor/mail/markdown/message.blade.php b/resources/views/vendor/mail/markdown/message.blade.php deleted file mode 100644 index 5d10c041..00000000 --- a/resources/views/vendor/mail/markdown/message.blade.php +++ /dev/null @@ -1,27 +0,0 @@ -@component('mail::layout') - {{-- Header --}} - @slot('header') - @component('mail::header', ['url' => config('app.url')]) - {{ setting('app_name', config('app.name')) }} - @endcomponent - @endslot - - {{-- Body --}} - {{ $slot }} - - {{-- Subcopy --}} - @isset($subcopy) - @slot('subcopy') - @component('mail::subcopy') - {{ $subcopy }} - @endcomponent - @endslot - @endisset - - {{-- Footer --}} - @slot('footer') - @component('mail::footer') - © {{ date('Y') }} {{ setting('app_name', config('app.name')) }}. @lang('All rights reserved.') - @endcomponent - @endslot -@endcomponent diff --git a/resources/views/vendor/mail/markdown/panel.blade.php b/resources/views/vendor/mail/markdown/panel.blade.php deleted file mode 100644 index 3338f620..00000000 --- a/resources/views/vendor/mail/markdown/panel.blade.php +++ /dev/null @@ -1 +0,0 @@ -{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/promotion.blade.php b/resources/views/vendor/mail/markdown/promotion.blade.php deleted file mode 100644 index 3338f620..00000000 --- a/resources/views/vendor/mail/markdown/promotion.blade.php +++ /dev/null @@ -1 +0,0 @@ -{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/promotion/button.blade.php b/resources/views/vendor/mail/markdown/promotion/button.blade.php deleted file mode 100644 index aaa3e575..00000000 --- a/resources/views/vendor/mail/markdown/promotion/button.blade.php +++ /dev/null @@ -1 +0,0 @@ -[{{ $slot }}]({{ $url }}) diff --git a/resources/views/vendor/mail/markdown/subcopy.blade.php b/resources/views/vendor/mail/markdown/subcopy.blade.php deleted file mode 100644 index 3338f620..00000000 --- a/resources/views/vendor/mail/markdown/subcopy.blade.php +++ /dev/null @@ -1 +0,0 @@ -{{ $slot }} diff --git a/resources/views/vendor/mail/markdown/table.blade.php b/resources/views/vendor/mail/markdown/table.blade.php deleted file mode 100644 index 3338f620..00000000 --- a/resources/views/vendor/mail/markdown/table.blade.php +++ /dev/null @@ -1 +0,0 @@ -{{ $slot }} diff --git a/resources/views/vendor/notifications/email.blade.php b/resources/views/vendor/notifications/email.blade.php deleted file mode 100644 index fd55d948..00000000 --- a/resources/views/vendor/notifications/email.blade.php +++ /dev/null @@ -1,62 +0,0 @@ -@component('mail::message') -{{-- Greeting --}} -@if (! empty($greeting)) -# {{ $greeting }} -@else -@if ($level === 'error') -# @lang('Whoops!') -@else -# @lang('Hello!') -@endif -@endif - -{{-- Intro Lines --}} -@foreach ($introLines as $line) -{{ $line }} - -@endforeach - -{{-- Action Button --}} -@isset($actionText) - -@component('mail::button', ['url' => $actionUrl, 'color' => $color]) -{{ $actionText }} -@endcomponent -@endisset - -{{-- Outro Lines --}} -@foreach ($outroLines as $line) -{{ $line }} - -@endforeach - -{{-- Salutation --}} -@if (! empty($salutation)) -{{ $salutation }} -@else -@lang('Regards'),
    {{ setting('app_name', config('app.name')) }} -@endif - -{{-- Subcopy --}} -@isset($actionText) -@component('mail::subcopy') -@lang( - "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\n". - 'into your web browser: [:actionURL](:actionURL)', - [ - 'actionText' => $actionText, - 'actionURL' => $actionUrl, - ] -) -@endcomponent -@endisset -@endcomponent diff --git a/resources/views/vendor/pagination/bootstrap-4.blade.php b/resources/views/vendor/pagination/bootstrap-4.blade.php deleted file mode 100644 index 044bbaa4..00000000 --- a/resources/views/vendor/pagination/bootstrap-4.blade.php +++ /dev/null @@ -1,44 +0,0 @@ -@if ($paginator->hasPages()) - -@endif diff --git a/resources/views/vendor/pagination/default.blade.php b/resources/views/vendor/pagination/default.blade.php deleted file mode 100644 index e59847a3..00000000 --- a/resources/views/vendor/pagination/default.blade.php +++ /dev/null @@ -1,44 +0,0 @@ -@if ($paginator->hasPages()) - -@endif diff --git a/resources/views/vendor/pagination/semantic-ui.blade.php b/resources/views/vendor/pagination/semantic-ui.blade.php deleted file mode 100644 index ef0dbb18..00000000 --- a/resources/views/vendor/pagination/semantic-ui.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@if ($paginator->hasPages()) - -@endif diff --git a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php b/resources/views/vendor/pagination/simple-bootstrap-4.blade.php deleted file mode 100644 index cc30c9b2..00000000 --- a/resources/views/vendor/pagination/simple-bootstrap-4.blade.php +++ /dev/null @@ -1,25 +0,0 @@ -@if ($paginator->hasPages()) - -@endif diff --git a/resources/views/vendor/pagination/simple-default.blade.php b/resources/views/vendor/pagination/simple-default.blade.php deleted file mode 100644 index bdf2fe88..00000000 --- a/resources/views/vendor/pagination/simple-default.blade.php +++ /dev/null @@ -1,17 +0,0 @@ -@if ($paginator->hasPages()) - -@endif diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php new file mode 100644 index 00000000..638ec960 --- /dev/null +++ b/resources/views/welcome.blade.php @@ -0,0 +1,140 @@ + + + + + + + Laravel + + + + + + + + + + + + diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 00000000..889937e1 --- /dev/null +++ b/routes/api.php @@ -0,0 +1,19 @@ +get('/user', function (Request $request) { + return $request->user(); +}); diff --git a/routes/channels.php b/routes/channels.php new file mode 100644 index 00000000..5d451e1f --- /dev/null +++ b/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 00000000..e05f4c9a --- /dev/null +++ b/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/routes/web.php b/routes/web.php new file mode 100644 index 00000000..c2e95959 --- /dev/null +++ b/routes/web.php @@ -0,0 +1,18 @@ + - * @author James Brooks - */ -abstract class AbstractTestCase extends TestCase -{ - use CreatesApplicationTrait; - - /** - * Test actor. - * - * @var \CachetHQ\Cachet\Models\User - */ - protected $user; - - /** - * Sign in an user if it's the case. - * - * @param \CachetHQ\Cachet\Models\User|null $user - * - * @return \CachetHQ\Tests\Cachet\AbstractTestCase - */ - protected function signIn(User $user = null) - { - $this->user = $user ?: $this->createUser(); - - $this->be($this->user); - - return $this; - } - - /** - * Create and return a new user. - * - * @param array $properties - * - * @return \CachetHQ\Cachet\Models\User - */ - protected function createUser($properties = []) - { - return factory(User::class)->create($properties); - } - - /** - * Set up the needed configuration to be able to run the tests. - * - * @return \CachetHQ\Tests\Cachet\AbstractTestCase - */ - protected function setupConfig() - { - $env = $this->app->environment(); - $repo = $this->app->make(Repository::class); - $cache = $this->app->make(Cache::class); - $loaded = $cache->load($env); - - if ($loaded === false) { - $loaded = $repo->all(); - $cache->store($env, $loaded); - } - - $settings = array_merge($this->app->config->get('setting'), $loaded); - - $this->app->config->set('setting', $settings); - - return $this; - } -} diff --git a/tests/AnalysisTest.php b/tests/AnalysisTest.php deleted file mode 100644 index 6dbb0034..00000000 --- a/tests/AnalysisTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author James Brooks - */ -class AnalysisTest extends TestCase -{ - use AnalysisTrait; - - /** - * Get the code paths to analyze. - * - * @return string[] - */ - protected function getPaths() - { - return [ - realpath(__DIR__.'/../app'), - realpath(__DIR__.'/../bootstrap'), - realpath(__DIR__.'/../config'), - realpath(__DIR__.'/../database'), - realpath(__DIR__), - ]; - } -} diff --git a/tests/Api/AbstractApiTestCase.php b/tests/Api/AbstractApiTestCase.php deleted file mode 100644 index f0faf4a6..00000000 --- a/tests/Api/AbstractApiTestCase.php +++ /dev/null @@ -1,43 +0,0 @@ - - * @author James Brooks - */ -abstract class AbstractApiTestCase extends AbstractTestCase -{ - use DatabaseMigrations; - - /** - * Become a user. - * - * @return $this - */ - protected function beUser() - { - $this->user = factory(User::class)->create([ - 'username' => 'cachet-test', - ]); - - $this->be($this->user); - - return $this; - } -} diff --git a/tests/Api/ComponentGroupTest.php b/tests/Api/ComponentGroupTest.php deleted file mode 100644 index 58158842..00000000 --- a/tests/Api/ComponentGroupTest.php +++ /dev/null @@ -1,206 +0,0 @@ - - * @author Graham Campbell - */ -class ComponentGroupTest extends AbstractApiTestCase -{ - const COMPONENT_GROUP_1_NAME = 'Component Group 1'; - const COMPONENT_GROUP_2_NAME = 'Component Group 2'; - - public function test_can_get_all_component_groups() - { - $groups = factory(ComponentGroup::class, 2) - ->create(['visible' => ComponentGroup::VISIBLE_GUEST]); - - $response = $this->json('GET', '/api/v1/components/groups'); - - $response->assertStatus(200); - $response->assertJsonFragment([ - [ - 'id' => $groups[0]->id, - 'name' => $groups[0]->name, - 'created_at' => (string) $groups[0]->created_at, - 'updated_at' => (string) $groups[0]->updated_at, - 'order' => $groups[0]->order, - 'collapsed' => $groups[0]->collapsed, - 'visible' => $groups[0]->visible, - 'enabled_components' => $groups[0]->enabled_components, - 'enabled_components_lowest' => $groups[0]->enabled_components_lowest, - 'lowest_human_status' => $groups[0]->lowest_human_status, - ], - ]); - $response->assertJsonFragment([ - [ - 'id' => $groups[1]->id, - 'name' => $groups[1]->name, - 'created_at' => (string) $groups[1]->created_at, - 'updated_at' => (string) $groups[1]->updated_at, - 'order' => $groups[1]->order, - 'collapsed' => $groups[1]->collapsed, - 'visible' => $groups[1]->visible, - 'enabled_components' => $groups[1]->enabled_components, - 'enabled_components_lowest' => $groups[1]->enabled_components_lowest, - 'lowest_human_status' => $groups[1]->lowest_human_status, - ], - ]); - } - - public function test_cannot_get_invalid_component_group() - { - $response = $this->json('GET', '/api/v1/components/groups/1'); - - $response->assertStatus(404); - } - - public function test_cannot_create_component_group_without_authorization() - { - $this->doesntExpectEvents(ComponentGroupWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components/groups'); - - $response->assertStatus(401); - } - - public function test_cannot_create_component_group_without_data() - { - $this->beUser(); - - $this->doesntExpectEvents(ComponentGroupWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components/groups'); - - $response->assertStatus(400); - } - - public function test_can_create_new_component_group() - { - $this->beUser(); - - $this->expectsEvents(ComponentGroupWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components/groups', [ - 'name' => 'Foo', - 'order' => 1, - 'collapsed' => 1, - 'visible' => ComponentGroup::VISIBLE_GUEST, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment([ - 'name' => 'Foo', - 'order' => 1, - 'collapsed' => 1, - 'visible' => ComponentGroup::VISIBLE_GUEST, - ]); - } - - public function test_can_get_single_component_group() - { - $group = factory(ComponentGroup::class)->create(); - - $response = $this->json('GET', '/api/v1/components/groups/1'); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => $group->name]); - } - - public function test_can_update_component_group() - { - $this->beUser(); - $group = factory(ComponentGroup::class)->create(); - - $this->expectsEvents(ComponentGroupWasUpdatedEvent::class); - - $response = $this->json('PUT', '/api/v1/components/groups/1', [ - 'name' => 'Lorem Ipsum Groupous', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Lorem Ipsum Groupous']); - } - - public function test_can_delete_component_group() - { - $this->beUser(); - $group = factory(ComponentGroup::class)->create(); - - $this->expectsEvents(ComponentGroupWasRemovedEvent::class); - - $response = $this->json('DELETE', '/api/v1/components/groups/1'); - - $response->assertStatus(204); - } - - public function test_only_public_component_groups_are_shown_for_a_guest() - { - $this->createComponentGroups(); - - $response = $this->json('GET', '/api/v1/components/groups'); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => self::COMPONENT_GROUP_1_NAME]); - } - - public function test_all_component_groups_are_displayed_for_logged_in_users() - { - $this->createComponentGroups() - ->signIn(); - - $response = $this->json('GET', '/api/v1/components/groups'); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => self::COMPONENT_GROUP_1_NAME]); - } - - /** - * Set up the needed data for the tests. - * - * @return $this - */ - protected function createComponentGroups() - { - $this->createComponentGroup(self::COMPONENT_GROUP_1_NAME, ComponentGroup::VISIBLE_GUEST) - ->createComponentGroup(self::COMPONENT_GROUP_2_NAME, ComponentGroup::VISIBLE_AUTHENTICATED); - - return $this; - } - - /** - * Create a component group. - * - * Also attaches a creator if any given as a parameter or exists in the test class. - * - * @param string $name - * @param string $visible - * - * @return $this - */ - protected function createComponentGroup($name, $visible) - { - factory(ComponentGroup::class) - ->create(['name' => $name, 'visible' => $visible]); - - return $this; - } -} diff --git a/tests/Api/ComponentTest.php b/tests/Api/ComponentTest.php deleted file mode 100644 index c3f71e0c..00000000 --- a/tests/Api/ComponentTest.php +++ /dev/null @@ -1,320 +0,0 @@ - - * @author Graham Campbell - */ -class ComponentTest extends AbstractApiTestCase -{ - public function test_can_get_all_components() - { - $components = factory(Component::class, 3)->create(); - - $response = $this->json('GET', '/api/v1/components'); - - $response->assertStatus(200); - $response->assertJsonFragment(['id' => $components[0]->id]); - $response->assertJsonFragment(['id' => $components[1]->id]); - $response->assertJsonFragment(['id' => $components[2]->id]); - } - - public function test_can_get_all_components_with_tags() - { - $components = factory(Component::class, 2)->create(); - $components[0]->attachTags(['Hello World']); - $components[1]->attachTags(['Foo', 'Bar']); - - $response = $this->json('GET', '/api/v1/components', ['tags' => ['foo']]); - - $response->assertStatus(200); - $response->assertJsonMissing(['id' => $components[0]->id]); - $response->assertJsonFragment(['id' => $components[1]->id]); - } - - public function test_cannot_get_invalid_component() - { - $response = $this->json('GET', '/api/v1/components/1'); - - $response->assertStatus(404); - } - - public function test_cannot_create_component_without_authorization() - { - $this->doesntExpectEvents(ComponentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components'); - - $response->assertStatus(401); - } - - public function test_cannot_create_component_without_data() - { - $this->beUser(); - - $this->doesntExpectEvents(ComponentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components'); - - $response->assertStatus(400); - } - - public function test_can_create_component() - { - $this->beUser(); - - $this->expectsEvents(ComponentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components', [ - 'name' => 'Foo', - 'description' => 'Bar', - 'status' => 1, - 'link' => 'http://example.com', - 'order' => 1, - 'group_id' => 1, - 'enabled' => true, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo']); - } - - public function test_can_create_minimal_component() - { - $this->beUser(); - - $this->expectsEvents(ComponentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components', [ - 'name' => 'Foo', - 'status' => 1, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo']); - } - - public function test_can_create_component_with_tags() - { - $this->beUser(); - - $this->expectsEvents(ComponentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components', [ - 'name' => 'Foo', - 'description' => 'Bar', - 'status' => 1, - 'link' => 'http://example.com', - 'order' => 1, - 'group_id' => 1, - 'enabled' => true, - 'tags' => 'Foo,Bar', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo', 'tags' => ['foo' => 'Foo', 'bar' => 'Bar']]); - } - - public function test_can_create_component_without_enabled_field() - { - $this->beUser(); - - $this->expectsEvents(ComponentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components', [ - 'name' => 'Foo', - 'description' => 'Bar', - 'status' => 1, - 'link' => 'http://example.com', - 'order' => 1, - 'group_id' => 1, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo', 'enabled' => true]); - } - - public function test_can_create_component_with_meta_data() - { - $this->beUser(); - - $this->expectsEvents(ComponentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components', [ - 'name' => 'Foo', - 'description' => 'Bar', - 'status' => 1, - 'link' => 'http://example.com', - 'order' => 1, - 'group_id' => 1, - 'enabled' => true, - 'meta' => [ - 'uuid' => '172ff3fb-41f7-49d3-8bcd-f57b53627fa0', - ], - ]); - - $response->assertStatus(200); - $response->assertJsonFragment([ - 'name' => 'Foo', - 'status' => 1, - 'meta' => [ - 'uuid' => '172ff3fb-41f7-49d3-8bcd-f57b53627fa0', - ], - ]); - } - - public function test_can_create_disabled_component() - { - $this->beUser(); - - $this->expectsEvents(ComponentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/components', [ - 'name' => 'Foo', - 'description' => 'Bar', - 'status' => 1, - 'link' => 'http://example.com', - 'order' => 1, - 'group_id' => 1, - 'enabled' => 0, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo', 'enabled' => false]); - } - - public function test_can_get_newly_created_component() - { - $component = factory(Component::class)->create(); - - $response = $this->json('GET', '/api/v1/components/1'); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => $component->name]); - } - - public function test_can_update_component() - { - $this->beUser(); - $component = factory(Component::class)->create(); - - $this->expectsEvents(ComponentWasUpdatedEvent::class); - - $response = $this->json('PUT', '/api/v1/components/1', [ - 'name' => 'Foo', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo', 'enabled' => $component->enabled]); - } - - public function test_can_update_component_tags() - { - $this->beUser(); - $component = factory(Component::class)->create(); - - $this->expectsEvents(ComponentWasUpdatedEvent::class); - - $response = $this->json('PUT', '/api/v1/components/1', [ - 'name' => 'Foo', - 'tags' => 'Hello', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo', 'enabled' => $component->enabled, 'tags' => ['hello' => 'Hello']]); - } - - public function test_can_update_component_without_status_change() - { - $this->beUser(); - $component = factory(Component::class)->create(); - - $this->expectsEvents(ComponentWasUpdatedEvent::class); - $this->doesntExpectEvents(ComponentStatusWasChangedEvent::class); - - $response = $this->json('PUT', '/api/v1/components/1', [ - 'name' => 'Foo', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo', 'enabled' => $component->enabled]); - } - - public function test_can_update_component_with_status_change() - { - $this->beUser(); - $component = factory(Component::class)->create([ - 'status' => 1, - ]); - - $this->expectsEvents([ - ComponentWasUpdatedEvent::class, - ComponentStatusWasChangedEvent::class, - ]); - - $response = $this->json('PUT', '/api/v1/components/1', [ - 'name' => 'Foo', - 'status' => 2, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo', 'status' => 2, 'enabled' => $component->enabled]); - } - - public function test_can_update_component_with_meta_data() - { - $this->beUser(); - $component = factory(Component::class)->create([ - 'meta' => [ - 'uuid' => '172ff3fb-41f7-49d3-8bcd-f57b53627fa0', - ], - ]); - - $this->expectsEvents(ComponentWasUpdatedEvent::class); - - $response = $this->json('PUT', '/api/v1/components/1', [ - 'meta' => [ - 'uuid' => '172ff3fb-41f7-49d3-8bcd-f57b53627fa0', - 'foo' => 'bar', - ], - ]); - - $response->assertStatus(200); - $response->assertJsonFragment([ - 'meta' => [ - 'uuid' => '172ff3fb-41f7-49d3-8bcd-f57b53627fa0', - 'foo' => 'bar', - ], - 'enabled' => $component->enabled, - ]); - } - - public function test_can_delete_component() - { - $this->beUser(); - $component = factory(Component::class)->create(); - - $this->expectsEvents(ComponentWasRemovedEvent::class); - - $response = $this->json('DELETE', '/api/v1/components/1'); - $response->assertStatus(204); - } -} diff --git a/tests/Api/GeneralTest.php b/tests/Api/GeneralTest.php deleted file mode 100644 index 6d0d77cf..00000000 --- a/tests/Api/GeneralTest.php +++ /dev/null @@ -1,79 +0,0 @@ - - * @author Graham Campbell - */ -class GeneralTest extends AbstractApiTestCase -{ - public function test_can_ping() - { - $response = $this->json('GET', '/api/v1/ping'); - - $response->assertStatus(200); - $response->assertHeader('Content-Type', 'application/json'); - $response->assertJsonFragment(['data' => 'Pong!']); - } - - public function test_see_error_page_for_unknown_endpoint() - { - $response = $this->json('GET', '/api/v1/not-found'); - - $response->assertStatus(404); - $response->assertHeader('Content-Type', 'application/json'); - } - - public function test_non_acceptable_content_type() - { - $response = $this->json('GET', '/api/v1/ping', [], ['HTTP_Accept' => 'text/html']); - - $response->assertStatus(406); - } - - public function test_can_get_system_status() - { - $response = $this->json('GET', '/api/v1/status'); - - $response->assertStatus(200) - ->assertHeader('Cache-Control') - ->assertJsonFragment([ - 'data' => [ - 'status' => 'success', - 'message' => 'System operational', - ], - ]); - } - - public function test_can_get_system_status_not_success() - { - factory(Component::class)->create([ - 'status' => 3, - ]); - - $response = $this->json('GET', '/api/v1/status'); - - $response->assertStatus(200) - ->assertHeader('Cache-Control') - ->assertJsonFragment([ - 'data' => [ - 'status' => 'info', - 'message' => 'The system is experiencing issues', - ], - ]); - } -} diff --git a/tests/Api/IncidentTemplateTest.php b/tests/Api/IncidentTemplateTest.php deleted file mode 100644 index 670d8a52..00000000 --- a/tests/Api/IncidentTemplateTest.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -class IncidentTemplateTest extends AbstractApiTestCase -{ - public function test_can_get_all_incident_templates() - { - $templates = factory(IncidentTemplate::class, 3)->create(); - - $response = $this->json('GET', '/api/v1/incidents/templates'); - - $response->assertJsonFragment(['id' => $templates[0]->id]); - $response->assertJsonFragment(['id' => $templates[1]->id]); - $response->assertJsonFragment(['id' => $templates[2]->id]); - $response->assertStatus(200); - } - - public function test_cannot_get_invalid_incident_template() - { - $response = $this->json('GET', '/api/v1/incidents/templates/1'); - - $response->assertStatus(404); - } -} diff --git a/tests/Api/IncidentTest.php b/tests/Api/IncidentTest.php deleted file mode 100644 index 54e41fed..00000000 --- a/tests/Api/IncidentTest.php +++ /dev/null @@ -1,233 +0,0 @@ - - * @author Graham Campbell - */ -class IncidentTest extends AbstractApiTestCase -{ - public function test_can_get_all_incidents() - { - $incidents = factory(Incident::class, 3)->create(); - - $response = $this->json('GET', '/api/v1/incidents'); - - $response->assertStatus(200); - - $response->assertJsonFragment(['id' => $incidents[0]->id]); - $response->assertJsonFragment(['id' => $incidents[1]->id]); - $response->assertJsonFragment(['id' => $incidents[2]->id]); - } - - public function test_cannot_get_invalid_component() - { - $response = $this->json('GET', '/api/v1/incidents/0'); - - $response->assertStatus(404); - } - - public function test_cannot_create_incident_without_authorization() - { - $this->doesntExpectEvents(IncidentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/incidents'); - - $response->assertStatus(401); - } - - public function test_cannot_create_incident_with_missing_data() - { - $this->beUser(); - - $this->doesntExpectEvents(IncidentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/incidents'); - - $response->assertStatus(400); - } - - public function test_can_create_incident() - { - $this->beUser(); - - $this->expectsEvents(IncidentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/incidents', [ - 'name' => 'Foo', - 'message' => 'Lorem ipsum dolor sit amet', - 'status' => 1, - 'visible' => 1, - 'stickied' => false, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo']); - } - - public function test_can_create_incident_with_component_status() - { - $component = factory(Component::class)->create(); - - $this->beUser(); - - $this->expectsEvents(IncidentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/incidents', [ - 'name' => 'Foo', - 'message' => 'Lorem ipsum dolor sit amet', - 'status' => 1, - 'component_id' => $component->id, - 'component_status' => 1, - 'visible' => 1, - 'stickied' => false, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo']); - } - - public function test_can_create_incident_with_template() - { - $template = factory(IncidentTemplate::class)->create(); - $this->beUser(); - - $this->expectsEvents(IncidentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/incidents', [ - 'name' => 'Foo', - 'status' => 1, - 'visible' => 1, - 'stickied' => false, - 'template' => $template->slug, - 'vars' => [ - 'name' => 'Foo', - 'message' => 'Hello there this is a foo!', - ], - ]); - - $response->assertStatus(200); - $response->assertJsonFragment([ - 'name' => 'Foo', - 'message' => "Name: Foo,\nMessage: Hello there this is a foo!", - ]); - } - - public function test_can_get_newly_created_incident() - { - $incident = factory(Incident::class)->create(); - - $response = $this->json('GET', '/api/v1/incidents/1'); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => $incident->name]); - } - - public function test_can_update_incident() - { - $this->beUser(); - $incident = factory(Incident::class)->create(); - - $this->expectsEvents(IncidentWasUpdatedEvent::class); - - $response = $this->json('PUT', '/api/v1/incidents/1', [ - 'name' => 'Foo', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo']); - } - - public function test_can_update_incident_with_template() - { - $this->beUser(); - $template = factory(IncidentTemplate::class)->create([ - 'template' => 'Hello there this is a foo in my {{ incident.name }}!', - ]); - $incident = factory(Incident::class)->create(); - - $this->expectsEvents(IncidentWasUpdatedEvent::class); - - $response = $this->json('PUT', '/api/v1/incidents/1', [ - 'name' => 'Foo', - 'template' => $template->slug, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment([ - 'name' => 'Foo', - 'message' => 'Hello there this is a foo in my Foo!', - ]); - } - - public function test_can_update_incident_when_no_user_is_associated() - { - $incident = factory(Incident::class)->create(['user_id' => null]); - $this->beUser(); - $this->expectsEvents(IncidentWasUpdatedEvent::class); - - $response = $this->json('PUT', '/api/v1/incidents/1', [ - 'name' => 'Updated incident name', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment([ - 'name' => 'Updated incident name', - 'user_id' => null, - ]); - } - - public function test_can_delete_incident() - { - $this->beUser(); - $incident = factory(Incident::class)->create(); - - $this->expectsEvents(IncidentWasRemovedEvent::class); - - $response = $this->json('DELETE', '/api/v1/incidents/1'); - - $response->assertStatus(204); - } - - public function test_can_create_incident_with_meta_data() - { - $this->beUser(); - - $this->expectsEvents(IncidentWasCreatedEvent::class); - - $response = $this->json('POST', '/api/v1/incidents', [ - 'name' => 'Foo', - 'message' => 'Lorem ipsum dolor sit amet', - 'status' => 1, - 'meta' => [ - 'id' => 123456789, - ], - ]); - - $response->assertStatus(200); - $response->assertJsonFragment([ - 'meta' => [ - 'id' => 123456789, - ], - ]); - } -} diff --git a/tests/Api/IncidentUpdateTest.php b/tests/Api/IncidentUpdateTest.php deleted file mode 100644 index 2a71ce1e..00000000 --- a/tests/Api/IncidentUpdateTest.php +++ /dev/null @@ -1,104 +0,0 @@ - - */ -class IncidentUpdateTest extends AbstractApiTestCase -{ - public function test_can_get_all_incident_updates() - { - $incident = factory(Incident::class)->create(); - $updates = factory(IncidentUpdate::class, 3)->create([ - 'incident_id' => $incident->id, - ]); - - $response = $this->json('GET', "/api/v1/incidents/{$incident->id}/updates"); - - $response->assertStatus(200); - - $response->assertJsonFragment(['id' => $updates[0]->id]); - $response->assertJsonFragment(['id' => $updates[1]->id]); - $response->assertJsonFragment(['id' => $updates[2]->id]); - } - - public function test_cannot_get_invalid_incident_update() - { - $response = $this->json('GET', '/api/v1/incidents/1/updates/1'); - - $response->assertStatus(404); - } - - public function test_cannot_create_incident_update_without_authorization() - { - $incident = factory(Incident::class)->create(); - - $response = $this->json('POST', "/api/v1/incidents/{$incident->id}/updates"); - - $response->assertStatus(401); - } - - public function test_cannot_create_incident_update_without_data() - { - $this->beUser(); - $incident = factory(Incident::class)->create(); - - $response = $this->json('POST', "/api/v1/incidents/{$incident->id}/updates"); - - $response->assertStatus(400); - } - - public function test_can_create_incident_update() - { - $this->beUser(); - $incident = factory(Incident::class)->create(); - - $response = $this->json('POST', "/api/v1/incidents/{$incident->id}/updates", [ - 'status' => 4, - 'message' => 'Incident fixed!', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['incident_id' => $incident->id]); - } - - public function test_can_update_incident_update() - { - $this->beUser(); - $incident = factory(Incident::class)->create(); - $update = factory(IncidentUpdate::class)->create(); - - $response = $this->json('PUT', "/api/v1/incidents/{$incident->id}/updates/{$update->id}", [ - 'message' => 'Message updated :smile:', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['message' => 'Message updated :smile:']); - } - - public function test_can_delete_incident_update() - { - $this->beUser(); - $incident = factory(Incident::class)->create(); - $update = factory(IncidentUpdate::class)->create(); - - $response = $this->json('DELETE', "/api/v1/incidents/{$incident->id}/updates/{$update->id}"); - - $response->assertStatus(204); - } -} diff --git a/tests/Api/MetricPointTest.php b/tests/Api/MetricPointTest.php deleted file mode 100644 index c9f4ffdf..00000000 --- a/tests/Api/MetricPointTest.php +++ /dev/null @@ -1,182 +0,0 @@ - - * @author Graham Campbell - */ -class MetricPointTest extends AbstractApiTestCase -{ - public function test_can_get_all_metric_points() - { - $metric = factory(Metric::class)->create(); - $metricPoint = factory(MetricPoint::class, 3)->create([ - 'metric_id' => $metric->id, - ]); - - $response = $this->json('GET', "/api/v1/metrics/{$metric->id}/points"); - - $response->assertJsonFragment(['id' => $metricPoint[0]->id]); - $response->assertJsonFragment(['id' => $metricPoint[1]->id]); - $response->assertJsonFragment(['id' => $metricPoint[2]->id]); - - $response->assertStatus(200); - } - - public function test_can_get_all_metric_points_in_order_by_latests() - { - $metric = factory(Metric::class)->create(); - $metricPoint1 = factory(MetricPoint::class)->create([ - 'metric_id' => $metric->id, - 'created_at' => Carbon::parse('2016-12-01 2:00pm'), - 'updated_at' => Carbon::parse('2016-12-01 2:00pm'), - ]); - $metricPoint2 = factory(MetricPoint::class)->create([ - 'metric_id' => $metric->id, - 'created_at' => Carbon::parse('2016-12-01 1:00pm'), - 'updated_at' => Carbon::parse('2016-12-01 1:00pm'), - ]); - $metricPoint3 = factory(MetricPoint::class)->create([ - 'metric_id' => $metric->id, - 'created_at' => Carbon::parse('2016-12-01 4:00pm'), - 'updated_at' => Carbon::parse('2016-12-01 4:00pm'), - ]); - - $response = $this->json('GET', "/api/v1/metrics/{$metric->id}/points"); - - $response->assertJson([ - 'data' => [ - ['id' => $metricPoint3->id], - ['id' => $metricPoint1->id], - ['id' => $metricPoint2->id], - ], - ]); - - $response->assertStatus(200); - } - - public function test_cannot_create_metric_point_without_authorization() - { - $metric = factory(Metric::class)->create(); - $metricPoint = factory(MetricPoint::class)->create([ - 'metric_id' => $metric->id, - ]); - $response = $this->json('POST', "/api/v1/metrics/{$metric->id}/points"); - - $response->assertStatus(401); - } - - public function test_can_create_metric_point() - { - $this->beUser(); - - $metric = factory(Metric::class)->create(); - $metricPoint = factory(MetricPoint::class)->make([ - 'metric_id' => $metric->id, - ]); - - $response = $this->json('POST', "/api/v1/metrics/{$metric->id}/points", $metricPoint->toArray()); - $response->assertStatus(200); - $response->assertJsonFragment(['value' => $metricPoint->value]); - } - - public function test_can_create_metric_point_with_timestamp() - { - $this->beUser(); - - // prevent tests breaking due to rolling into the next second - Carbon::setTestNow(Carbon::now()); - - $metric = factory(Metric::class)->create(); - $createdAt = Carbon::now(); - $metricPoint = factory(MetricPoint::class)->make([ - 'metric_id' => $metric->id, - ]); - $postData = $metricPoint->toArray(); - $postData['timestamp'] = $createdAt->timestamp; - - $response = $this->json('POST', "/api/v1/metrics/{$metric->id}/points", $postData); - - // Round value to match ours - $timestamp = 30 * round($createdAt->timestamp / 30); - - $response->assertStatus(200); - $response->assertJsonFragment([ - 'value' => $metricPoint->value, - 'created_at' => Carbon::createFromFormat('U', $timestamp)->setTimezone(config('cachet.timezone'))->toDateTimeString(), - ]); - } - - public function test_can_create_metric_point_with_timestamp_timezone() - { - $this->beUser(); - - // prevent tests breaking due to rolling into the next second - Carbon::setTestNow(Carbon::now()); - - $timezone = 'America/Mexico_City'; - $metric = factory(Metric::class)->create(); - $createdAt = Carbon::now()->timezone($timezone); - $metricPoint = factory(MetricPoint::class)->make([ - 'metric_id' => $metric->id, - ]); - $postData = $metricPoint->toArray(); - $postData['timestamp'] = $createdAt->timestamp; - - $response = $this->json('POST', "/api/v1/metrics/{$metric->id}/points", $postData, ['Time-Zone' => $timezone]); - - // Round value to match ours - $timestamp = 30 * round($createdAt->timestamp / 30); - - $response->assertStatus(200); - $response->assertJsonFragment([ - 'value' => $metricPoint->value, - 'created_at' => Carbon::createFromFormat('U', $timestamp)->setTimezone($timezone)->toDateTimeString(), - ]); - } - - public function test_can_update_metric_point() - { - $this->beUser(); - $metric = factory(Metric::class)->create(); - $metricPoint = factory(MetricPoint::class)->create([ - 'metric_id' => $metric->id, - ]); - - $response = $this->json('PUT', "/api/v1/metrics/{$metric->id}/points/{$metricPoint->id}", [ - 'value' => 999, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['value' => 999]); - } - - public function test_can_delete_metric_point() - { - $this->beUser(); - $metric = factory(Metric::class)->create(); - $metricPoint = factory(MetricPoint::class)->create([ - 'metric_id' => $metric->id, - ]); - - $response = $this->json('DELETE', "/api/v1/metrics/{$metric->id}/points/{$metricPoint->id}"); - - $response->assertStatus(204); - } -} diff --git a/tests/Api/MetricTest.php b/tests/Api/MetricTest.php deleted file mode 100644 index 000eddd4..00000000 --- a/tests/Api/MetricTest.php +++ /dev/null @@ -1,109 +0,0 @@ - - * @author Graham Campbell - */ -class MetricTest extends AbstractApiTestCase -{ - public function test_can_get_all_metrics() - { - $metrics = factory(Metric::class, 3)->create(); - - $response = $this->json('GET', '/api/v1/metrics'); - - $response->assertJsonFragment(['id' => $metrics[0]->id]); - $response->assertJsonFragment(['id' => $metrics[1]->id]); - $response->assertJsonFragment(['id' => $metrics[2]->id]); - $response->assertStatus(200); - } - - public function test_cannot_get_invalid_metric() - { - $response = $this->json('GET', '/api/v1/metrics/0'); - $response->assertStatus(404); - } - - public function test_cannot_create_metric_without_authorization() - { - $response = $this->json('POST', '/api/v1/metrics'); - $response->assertStatus(401); - } - - public function test_cannot_create_metric_without_data() - { - $this->beUser(); - - $response = $this->json('POST', '/api/v1/metrics'); - $response->assertStatus(400); - } - - public function test_can_create_metric() - { - $this->beUser(); - - $response = $this->json('POST', '/api/v1/metrics', [ - 'name' => 'Foo', - 'suffix' => 'foo\'s per second', - 'description' => 'Lorem ipsum dolor', - 'default_value' => 1, - 'display_chart' => 1, - 'places' => 0, - 'view' => 0, - 'threshold' => 5, - 'order' => 1, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo']); - } - - public function test_can_get_newly_created_metric() - { - $incident = factory(Metric::class)->create(); - - $response = $this->json('GET', '/api/v1/metrics/1'); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => $incident->name]); - } - - public function test_can_update_metric() - { - $this->beUser(); - $metric = factory(Metric::class)->create(); - - $response = $this->json('PUT', '/api/v1/metrics/1', [ - 'name' => 'Foo', - 'view' => 2, - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Foo', 'default_view' => 2]); - } - - public function test_can_delete_metric() - { - $this->beUser(); - $metric = factory(Metric::class)->create(); - - $response = $this->json('DELETE', '/api/v1/metrics/1'); - - $response->assertStatus(204); - } -} diff --git a/tests/Api/ScheduleTest.php b/tests/Api/ScheduleTest.php deleted file mode 100644 index 99b67b64..00000000 --- a/tests/Api/ScheduleTest.php +++ /dev/null @@ -1,88 +0,0 @@ - - */ -class ScheduleTest extends AbstractApiTestCase -{ - public function test_can_get_all_schedules() - { - $schedules = factory(Schedule::class, 3)->create(); - - $response = $this->json('GET', '/api/v1/schedules'); - - $response->assertStatus(200); - $response->assertJsonFragment(['id' => $schedules[0]->id]); - $response->assertJsonFragment(['id' => $schedules[1]->id]); - $response->assertJsonFragment(['id' => $schedules[2]->id]); - } - - public function test_can_get_single_schedule() - { - $schedule = factory(Schedule::class)->create(); - - $response = $this->json('GET', '/api/v1/schedules/'.$schedule->id); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => $schedule->name]); - } - - public function test_can_create_schedule() - { - $this->beUser(); - - $schedule = [ - 'name' => 'Test Schedule', - 'message' => 'Foo bar, baz.', - 'status' => 1, - 'scheduled_at' => date('Y-m-d H:i'), - ]; - - $response = $this->json('POST', '/api/v1/schedules/', $schedule); - - Arr::forget($schedule, 'scheduled_at'); - - $response->assertStatus(200); - $response->assertJsonFragment($schedule); - } - - public function test_can_update_schedule() - { - $this->beUser(); - - $schedule = factory(Schedule::class)->create(); - - $response = $this->json('PUT', '/api/v1/schedules/'.$schedule->id, [ - 'name' => 'Updated schedule', - ]); - - $response->assertStatus(200); - $response->assertJsonFragment(['name' => 'Updated schedule']); - } - - public function test_can_delete_schedule() - { - $this->beUser(); - factory(Schedule::class)->create(); - - $response = $this->json('DELETE', '/api/v1/schedules/1'); - - $response->assertStatus(204); - } -} diff --git a/tests/Api/SubscriberTest.php b/tests/Api/SubscriberTest.php deleted file mode 100644 index 3a532522..00000000 --- a/tests/Api/SubscriberTest.php +++ /dev/null @@ -1,128 +0,0 @@ - - * @author Graham Campbell - */ -class SubscriberTest extends AbstractApiTestCase -{ - public function test_can_get_all_subscribers() - { - $this->beUser(); - - $subscriber = factory(Subscriber::class)->create(); - - $response = $this->json('GET', '/api/v1/subscribers'); - - $response->assertStatus(200); - $response->assertHeader('Content-Type', 'application/json'); - } - - public function test_cannot_get_subscribers_without_authorization() - { - $response = $this->json('GET', '/api/v1/subscribers'); - - $response->assertStatus(401); - $response->assertHeader('Content-Type', 'application/json'); - } - - public function test_can_create_subscriber() - { - $this->beUser(); - - Notification::fake(); - - $this->expectsEvents(SubscriberHasSubscribedEvent::class); - - $response = $this->json('POST', '/api/v1/subscribers', [ - 'email' => 'support@alt-three.com', - ]); - - $response->assertStatus(200); - $response->assertHeader('Content-Type', 'application/json'); - $response->assertJsonFragment(['email' => 'support@alt-three.com']); - } - - public function test_can_create_subscriber_automatically_verified() - { - $this->beUser(); - - Notification::fake(); - - $this->expectsEvents(SubscriberHasSubscribedEvent::class); - - $response = $this->json('POST', '/api/v1/subscribers', [ - 'email' => 'support@alt-three.com', - 'verify' => true, - ]); - - $response->assertStatus(200); - $response->assertHeader('Content-Type', 'application/json'); - $response->assertJsonFragment(['email' => 'support@alt-three.com']); - } - - public function test_can_create_subscriber_with_subscription() - { - $this->beUser(); - - factory(Component::class, 3)->create(); - - $response = $this->json('POST', '/api/v1/subscribers', [ - 'email' => 'support@alt-three.com', - 'verify' => true, - 'components' => [ - 1, - 3, - ], - ]); - - $response->assertStatus(200); - $response->assertHeader('Content-Type', 'application/json'); - $response->assertJsonFragment(['email' => 'support@alt-three.com']); - - $data = $response->decodeResponseJson(); - $this->assertCount(2, $data['data']['subscriptions']); - $this->assertEquals(1, $data['data']['subscriptions'][0]['component_id']); - $this->assertEquals(3, $data['data']['subscriptions'][1]['component_id']); - } - - public function test_can_delete_subscriber() - { - $this->beUser(); - - $subscriber = factory(Subscriber::class)->create(); - $response = $this->json('DELETE', "/api/v1/subscribers/{$subscriber->id}"); - - $response->assertStatus(204); - } - - public function test_can_delete_subscription() - { - $this->beUser(); - - $subscription = factory(Subscription::class)->create(); - - $response = $this->json('DELETE', "/api/v1/subscriptions/{$subscription->id}"); - - $response->assertStatus(204); - } -} diff --git a/tests/Bus/Commands/CommandExistenceTest.php b/tests/Bus/Commands/CommandExistenceTest.php deleted file mode 100644 index 0ad29ac3..00000000 --- a/tests/Bus/Commands/CommandExistenceTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - * @author James Brooks - */ -class CommandExistenceTest extends TestCase -{ - use ExistenceTrait; - - protected function getSourcePath() - { - return realpath(__DIR__.'/../../../app/Bus/Commands'); - } -} diff --git a/tests/Bus/Commands/Component/CreateComponentCommandTest.php b/tests/Bus/Commands/Component/CreateComponentCommandTest.php deleted file mode 100644 index a2f3e272..00000000 --- a/tests/Bus/Commands/Component/CreateComponentCommandTest.php +++ /dev/null @@ -1,66 +0,0 @@ - - * @author Graham Campbell - */ -class CreateComponentCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'name' => 'Test', - 'description' => 'Foo', - 'status' => 1, - 'link' => 'https://cachethq.io', - 'order' => 0, - 'group_id' => 0, - 'enabled' => true, - 'meta' => null, - 'tags' => 'Foo, Bar', - ]; - $object = new CreateComponentCommand( - $params['name'], - $params['description'], - $params['status'], - $params['link'], - $params['order'], - $params['group_id'], - $params['enabled'], - $params['meta'], - $params['tags'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return CreateComponentCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Component/RemoveComponentCommandTest.php b/tests/Bus/Commands/Component/RemoveComponentCommandTest.php deleted file mode 100644 index 7b742bf2..00000000 --- a/tests/Bus/Commands/Component/RemoveComponentCommandTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Graham Campbell - */ -class RemoveComponentCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['component' => new Component()]; - $object = new RemoveComponentCommand($params['component']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return RemoveComponentCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Component/UpdateComponentCommandTest.php b/tests/Bus/Commands/Component/UpdateComponentCommandTest.php deleted file mode 100644 index 4360b28f..00000000 --- a/tests/Bus/Commands/Component/UpdateComponentCommandTest.php +++ /dev/null @@ -1,72 +0,0 @@ - - * @author Graham Campbell - */ -class UpdateComponentCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'component' => new Component(), - 'name' => 'Test', - 'description' => 'Foo', - 'status' => 1, - 'link' => 'https://cachethq.io', - 'order' => 0, - 'group_id' => 0, - 'enabled' => true, - 'meta' => null, - 'tags' => null, - 'silent' => false, - ]; - - $object = new UpdateComponentCommand( - $params['component'], - $params['name'], - $params['description'], - $params['status'], - $params['link'], - $params['order'], - $params['group_id'], - $params['enabled'], - $params['meta'], - $params['tags'], - $params['silent'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return UpdateComponentCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/ComponentGroup/CreateComponentGroupCommandTest.php b/tests/Bus/Commands/ComponentGroup/CreateComponentGroupCommandTest.php deleted file mode 100644 index 5a456095..00000000 --- a/tests/Bus/Commands/ComponentGroup/CreateComponentGroupCommandTest.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @author Graham Campbell - */ -class CreateComponentGroupCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'name' => 'Test', - 'order' => 0, - 'collapsed' => 1, - 'visible' => ComponentGroup::VISIBLE_AUTHENTICATED, - ]; - - $object = new CreateComponentGroupCommand( - $params['name'], - $params['order'], - $params['collapsed'], - $params['visible'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return CreateComponentGroupCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/ComponentGroup/RemoveComponentGroupCommandTest.php b/tests/Bus/Commands/ComponentGroup/RemoveComponentGroupCommandTest.php deleted file mode 100644 index 3077be87..00000000 --- a/tests/Bus/Commands/ComponentGroup/RemoveComponentGroupCommandTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Graham Campbell - */ -class RemoveComponentGroupCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['group' => new ComponentGroup()]; - $object = new RemoveComponentGroupCommand($params['group']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return RemoveComponentGroupCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/ComponentGroup/UpdateComponentGroupCommandTest.php b/tests/Bus/Commands/ComponentGroup/UpdateComponentGroupCommandTest.php deleted file mode 100644 index 3ee166a3..00000000 --- a/tests/Bus/Commands/ComponentGroup/UpdateComponentGroupCommandTest.php +++ /dev/null @@ -1,59 +0,0 @@ - - * @author Graham Campbell - */ -class UpdateComponentGroupCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'group' => new ComponentGroup(), - 'name' => 'Foo', - 'order' => 1, - 'collapsed' => 2, - 'visible' => ComponentGroup::VISIBLE_AUTHENTICATED, - ]; - $object = new UpdateComponentGroupCommand( - $params['group'], - $params['name'], - $params['order'], - $params['collapsed'], - $params['visible'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return UpdateComponentGroupCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Incident/CreateIncidentCommandTest.php b/tests/Bus/Commands/Incident/CreateIncidentCommandTest.php deleted file mode 100644 index ee84d386..00000000 --- a/tests/Bus/Commands/Incident/CreateIncidentCommandTest.php +++ /dev/null @@ -1,73 +0,0 @@ - - * @author Graham Campbell - */ -class CreateIncidentCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'name' => 'Test', - 'status' => 1, - 'message' => 'Foo bar baz', - 'visible' => 1, - 'component_id' => 1, - 'component_status' => 1, - 'notify' => false, - 'stickied' => false, - 'occurred_at' => null, - 'template' => null, - 'template_vars' => [], - 'meta' => [], - ]; - - $object = new CreateIncidentCommand( - $params['name'], - $params['status'], - $params['message'], - $params['visible'], - $params['component_id'], - $params['component_status'], - $params['notify'], - $params['stickied'], - $params['occurred_at'], - $params['template'], - $params['template_vars'], - $params['meta'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return CreateIncidentCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Incident/RemoveIncidentCommandTest.php b/tests/Bus/Commands/Incident/RemoveIncidentCommandTest.php deleted file mode 100644 index d741c48c..00000000 --- a/tests/Bus/Commands/Incident/RemoveIncidentCommandTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Graham Campbell - */ -class RemoveIncidentCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['incident' => new Incident()]; - $object = new RemoveIncidentCommand($params['incident']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return RemoveIncidentCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Incident/UpdateIncidentCommandTest.php b/tests/Bus/Commands/Incident/UpdateIncidentCommandTest.php deleted file mode 100644 index c09ca3aa..00000000 --- a/tests/Bus/Commands/Incident/UpdateIncidentCommandTest.php +++ /dev/null @@ -1,74 +0,0 @@ - - * @author Graham Campbell - */ -class UpdateIncidentCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'incident' => new Incident(), - 'name' => 'Test', - 'status' => 1, - 'message' => 'Foo bar baz', - 'visible' => 1, - 'component_id' => 1, - 'component_status' => 1, - 'notify' => false, - 'stickied' => false, - 'occurred_at' => null, - 'template' => null, - 'template_vars' => [], - ]; - - $object = new UpdateIncidentCommand( - $params['incident'], - $params['name'], - $params['status'], - $params['message'], - $params['visible'], - $params['component_id'], - $params['component_status'], - $params['notify'], - $params['stickied'], - $params['occurred_at'], - $params['template'], - $params['template_vars'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return UpdateIncidentCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/IncidentUpdate/AbstractIncidentUpdateCommandTest.php b/tests/Bus/Commands/IncidentUpdate/AbstractIncidentUpdateCommandTest.php deleted file mode 100644 index 1bc30dcf..00000000 --- a/tests/Bus/Commands/IncidentUpdate/AbstractIncidentUpdateCommandTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -abstract class AbstractIncidentUpdateCommandTest extends AbstractTestCase -{ - use EventTrait; - - protected function getEventInterfaces() - { - return [IncidentUpdateEventInterface::class]; - } -} diff --git a/tests/Bus/Commands/IncidentUpdate/CreateIncidentUpdateCommandTest.php b/tests/Bus/Commands/IncidentUpdate/CreateIncidentUpdateCommandTest.php deleted file mode 100644 index 468a3ef1..00000000 --- a/tests/Bus/Commands/IncidentUpdate/CreateIncidentUpdateCommandTest.php +++ /dev/null @@ -1,52 +0,0 @@ - - */ -class CreateIncidentUpdateCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'incident' => new Incident(), - 'status' => 1, - 'message' => 'Foo', - 'user' => new User(), - ]; - $object = new CreateIncidentUpdateCommand($params['incident'], $params['status'], $params['message'], null, null, $params['user']); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return CreateIncidentUpdateCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/IncidentUpdate/RemoveIncidentUpdateCommandTest.php b/tests/Bus/Commands/IncidentUpdate/RemoveIncidentUpdateCommandTest.php deleted file mode 100644 index b59503f1..00000000 --- a/tests/Bus/Commands/IncidentUpdate/RemoveIncidentUpdateCommandTest.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -class RemoveIncidentUpdateCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['incidentUpdate' => new IncidentUpdate()]; - $object = new RemoveIncidentUpdateCommand($params['incidentUpdate']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return RemoveIncidentUpdateCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/IncidentUpdate/UpdateIncidentUpdateCommandTest.php b/tests/Bus/Commands/IncidentUpdate/UpdateIncidentUpdateCommandTest.php deleted file mode 100644 index a78d3845..00000000 --- a/tests/Bus/Commands/IncidentUpdate/UpdateIncidentUpdateCommandTest.php +++ /dev/null @@ -1,52 +0,0 @@ - - */ -class UpdateIncidentUpdateCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['update' => new IncidentUpdate(), 'status' => 1, 'message' => 'Updating!', 'user' => new User()]; - $object = new UpdateIncidentUpdateCommand( - $params['update'], - $params['status'], - $params['message'], - $params['user'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return UpdateIncidentUpdateCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Invite/ClaimInviteCommandTest.php b/tests/Bus/Commands/Invite/ClaimInviteCommandTest.php deleted file mode 100644 index 7d7065b9..00000000 --- a/tests/Bus/Commands/Invite/ClaimInviteCommandTest.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -class ClaimInviteCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['invite' => new Invite()]; - $object = new ClaimInviteCommand($params['invite']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return ClaimInviteCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Metric/CreateMetricCommandTest.php b/tests/Bus/Commands/Metric/CreateMetricCommandTest.php deleted file mode 100644 index 7595f54b..00000000 --- a/tests/Bus/Commands/Metric/CreateMetricCommandTest.php +++ /dev/null @@ -1,71 +0,0 @@ - - * @author Graham Campbell - */ -class CreateMetricCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'name' => 'Coffee', - 'suffix' => 'cups', - 'description' => 'Cups of coffee consumed', - 'default_value' => 0, - 'calc_type' => 0, - 'display_chart' => 1, - 'places' => 0, - 'default_view' => 0, - 'threshold' => 0, - 'order' => 0, - 'visible' => 1, - ]; - - $object = new CreateMetricCommand( - $params['name'], - $params['suffix'], - $params['description'], - $params['default_value'], - $params['calc_type'], - $params['display_chart'], - $params['places'], - $params['default_view'], - $params['threshold'], - $params['order'], - $params['visible'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return CreateMetricCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Metric/CreateMetricPointCommandTest.php b/tests/Bus/Commands/Metric/CreateMetricPointCommandTest.php deleted file mode 100644 index c2aa8ba7..00000000 --- a/tests/Bus/Commands/Metric/CreateMetricPointCommandTest.php +++ /dev/null @@ -1,47 +0,0 @@ - - * @author Graham Campbell - */ -class CreateMetricPointCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['metric' => new Metric(), 'value' => 1, 'created_at' => '2020-12-30 12:00:00']; - $object = new CreateMetricPointCommand($params['metric'], $params['value'], $params['created_at']); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return CreateMetricPointCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Metric/RemoveMetricCommandTest.php b/tests/Bus/Commands/Metric/RemoveMetricCommandTest.php deleted file mode 100644 index b97e4fe3..00000000 --- a/tests/Bus/Commands/Metric/RemoveMetricCommandTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Graham Campbell - */ -class RemoveMetricCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['metric' => new Metric()]; - $object = new RemoveMetricCommand($params['metric']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return RemoveMetricCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Metric/RemoveMetricPointCommandTest.php b/tests/Bus/Commands/Metric/RemoveMetricPointCommandTest.php deleted file mode 100644 index 48da77fe..00000000 --- a/tests/Bus/Commands/Metric/RemoveMetricPointCommandTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Graham Campbell - */ -class RemoveMetricPointCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['metricPoint' => new MetricPoint()]; - $object = new RemoveMetricPointCommand($params['metricPoint']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return RemoveMetricPointCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Metric/UpdateMetricCommandTest.php b/tests/Bus/Commands/Metric/UpdateMetricCommandTest.php deleted file mode 100644 index 2c990789..00000000 --- a/tests/Bus/Commands/Metric/UpdateMetricCommandTest.php +++ /dev/null @@ -1,74 +0,0 @@ - - * @author Graham Campbell - */ -class UpdateMetricCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'metric' => new Metric(), - 'name' => 'Coffee', - 'suffix' => 'cups', - 'description' => 'Cups of coffee consumed', - 'default_value' => 0, - 'calc_type' => 0, - 'display_chart' => 1, - 'places' => 0, - 'default_view' => 0, - 'threshold' => 0, - 'order' => 0, - 'visible' => 1, - ]; - - $object = new UpdateMetricCommand( - $params['metric'], - $params['name'], - $params['suffix'], - $params['description'], - $params['default_value'], - $params['calc_type'], - $params['display_chart'], - $params['places'], - $params['default_view'], - $params['threshold'], - $params['order'], - $params['visible'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return UpdateMetricCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Metric/UpdateMetricPointCommandTest.php b/tests/Bus/Commands/Metric/UpdateMetricPointCommandTest.php deleted file mode 100644 index 6134f9b2..00000000 --- a/tests/Bus/Commands/Metric/UpdateMetricPointCommandTest.php +++ /dev/null @@ -1,59 +0,0 @@ - - * @author Graham Campbell - */ -class UpdateMetricPointCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'point' => new MetricPoint(), - 'metric' => new Metric(), - 'value' => 1, - 'created_at' => '2012-12-30 12:00:00', - ]; - - $object = new UpdateMetricPointCommand( - $params['point'], - $params['metric'], - $params['value'], - $params['created_at'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return UpdateMetricPointCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Schedule/CreateScheduleCommandTest.php b/tests/Bus/Commands/Schedule/CreateScheduleCommandTest.php deleted file mode 100644 index 3377bef9..00000000 --- a/tests/Bus/Commands/Schedule/CreateScheduleCommandTest.php +++ /dev/null @@ -1,61 +0,0 @@ - - */ -class CreateScheduleCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'name' => 'Test', - 'message' => 'Foo', - 'status' => 1, - 'scheduled_at' => date('Y-m-d H:i'), - 'completed_at' => date('Y-m-d H:i'), - 'components' => [], - 'notify' => 1, - ]; - $object = new CreateScheduleCommand( - $params['name'], - $params['message'], - $params['status'], - $params['scheduled_at'], - $params['completed_at'], - $params['components'], - $params['notify'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return CreateScheduleCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Schedule/DeleteScheduleCommandTest.php b/tests/Bus/Commands/Schedule/DeleteScheduleCommandTest.php deleted file mode 100644 index 0d5ad61f..00000000 --- a/tests/Bus/Commands/Schedule/DeleteScheduleCommandTest.php +++ /dev/null @@ -1,50 +0,0 @@ - - */ -class DeleteScheduleCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'schedule' => new Schedule(), - ]; - $object = new DeleteScheduleCommand( - $params['schedule'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return DeleteScheduleCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Schedule/UpdateScheduleCommandTest.php b/tests/Bus/Commands/Schedule/UpdateScheduleCommandTest.php deleted file mode 100644 index 583f6ef7..00000000 --- a/tests/Bus/Commands/Schedule/UpdateScheduleCommandTest.php +++ /dev/null @@ -1,62 +0,0 @@ - - */ -class UpdateScheduleCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'schedule' => new Schedule(), - 'name' => 'Foo', - 'message' => 'Bar', - 'status' => 1, - 'scheduled_at' => date('Y-m-d H:i'), - 'completed_at' => date('Y-m-d H:i'), - 'components' => [], - ]; - $object = new UpdateScheduleCommand( - $params['schedule'], - $params['name'], - $params['message'], - $params['status'], - $params['scheduled_at'], - $params['completed_at'], - $params['components'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return UpdateScheduleCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Subscriber/SubscribeSubscriberCommandTest.php b/tests/Bus/Commands/Subscriber/SubscribeSubscriberCommandTest.php deleted file mode 100644 index 55287bdb..00000000 --- a/tests/Bus/Commands/Subscriber/SubscribeSubscriberCommandTest.php +++ /dev/null @@ -1,46 +0,0 @@ - - * @author Graham Campbell - */ -class SubscribeSubscriberCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['email' => 'support@cachethq.io', 'verified' => true, 'subscriptions' => null]; - $object = new SubscribeSubscriberCommand($params['email'], $params['verified'], $params['subscriptions']); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return SubscribeSubscriberCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Subscriber/UnsubscribeSubscriberCommandTest.php b/tests/Bus/Commands/Subscriber/UnsubscribeSubscriberCommandTest.php deleted file mode 100644 index 3b6d4802..00000000 --- a/tests/Bus/Commands/Subscriber/UnsubscribeSubscriberCommandTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Graham Campbell - */ -class UnsubscribeSubscriberCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['subscriber' => new Subscriber()]; - $object = new UnsubscribeSubscriberCommand($params['subscriber']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return UnsubscribeSubscriberCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Subscriber/UnsubscribeSubscriptionCommandTest.php b/tests/Bus/Commands/Subscriber/UnsubscribeSubscriptionCommandTest.php deleted file mode 100644 index 082c6674..00000000 --- a/tests/Bus/Commands/Subscriber/UnsubscribeSubscriptionCommandTest.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -class UnsubscribeSubscriptionCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['subscription' => new Subscription()]; - $object = new UnsubscribeSubscriptionCommand($params['subscription']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return UnsubscribeSubscriptionCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Subscriber/UpdateSubscriberSubscriptionCommandTest.php b/tests/Bus/Commands/Subscriber/UpdateSubscriberSubscriptionCommandTest.php deleted file mode 100644 index 86cb0a11..00000000 --- a/tests/Bus/Commands/Subscriber/UpdateSubscriberSubscriptionCommandTest.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -class UpdateSubscriberSubscriptionCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['subscriber' => new Subscriber(), 'subscriptions' => null]; - $object = new UpdateSubscriberSubscriptionCommand($params['subscriber'], $params['subscriptions']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return UpdateSubscriberSubscriptionCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/Subscriber/VerifySubscriberCommandTest.php b/tests/Bus/Commands/Subscriber/VerifySubscriberCommandTest.php deleted file mode 100644 index 6964109c..00000000 --- a/tests/Bus/Commands/Subscriber/VerifySubscriberCommandTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Graham Campbell - */ -class VerifySubscriberCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['subscriber' => new Subscriber()]; - $object = new VerifySubscriberCommand($params['subscriber']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return VerifySubscriberCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/System/Config/UpdateConfigCommandTest.php b/tests/Bus/Commands/System/Config/UpdateConfigCommandTest.php deleted file mode 100644 index 6d0f5009..00000000 --- a/tests/Bus/Commands/System/Config/UpdateConfigCommandTest.php +++ /dev/null @@ -1,49 +0,0 @@ - - */ -class UpdateConfigCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'values' => [ - 'FOO' => 'bar', - ], - ]; - $object = new UpdateConfigCommand($params['values']); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return false; - } - - protected function getHandlerClass() - { - return UpdateConfigCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/User/CreateUserCommandTest.php b/tests/Bus/Commands/User/CreateUserCommandTest.php deleted file mode 100644 index 7f5a1950..00000000 --- a/tests/Bus/Commands/User/CreateUserCommandTest.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @author Graham Campbell - */ -class CreateUserCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'username' => 'Test', - 'password' => 'fooey', - 'email' => 'test@example.com', - 'level' => 1, - ]; - - $object = new CreateUserCommand( - $params['username'], - $params['password'], - $params['email'], - $params['level'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return CreateUserCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/User/GenerateApiTokenCommandTest.php b/tests/Bus/Commands/User/GenerateApiTokenCommandTest.php deleted file mode 100644 index d9965c3e..00000000 --- a/tests/Bus/Commands/User/GenerateApiTokenCommandTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Graham Campbell - */ -class GenerateApiTokenCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new GenerateApiTokenCommand($params['user']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return GenerateApiTokenCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/User/InviteUserCommandTest.php b/tests/Bus/Commands/User/InviteUserCommandTest.php deleted file mode 100644 index 9d60aa14..00000000 --- a/tests/Bus/Commands/User/InviteUserCommandTest.php +++ /dev/null @@ -1,46 +0,0 @@ - - * @author James Brooks - */ -class InviteUserCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['emails' => ['foo@example.com']]; - $object = new InviteUserCommand($params['emails']); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return InviteUserCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/User/RemoveUserCommandTest.php b/tests/Bus/Commands/User/RemoveUserCommandTest.php deleted file mode 100644 index f063916c..00000000 --- a/tests/Bus/Commands/User/RemoveUserCommandTest.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @author Graham Campbell - */ -class RemoveUserCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new RemoveUserCommand($params['user']); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return RemoveUserCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/User/SignupUserCommandTest.php b/tests/Bus/Commands/User/SignupUserCommandTest.php deleted file mode 100644 index 187ef506..00000000 --- a/tests/Bus/Commands/User/SignupUserCommandTest.php +++ /dev/null @@ -1,56 +0,0 @@ - - */ -class SignupUserCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = [ - 'username' => 'Test', - 'password' => 'fooey', - 'email' => 'test@example.com', - 'level' => 1, - ]; - - $object = new SignupUserCommand( - $params['username'], - $params['password'], - $params['email'], - $params['level'] - ); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return true; - } - - protected function getHandlerClass() - { - return SignupUserCommandHandler::class; - } -} diff --git a/tests/Bus/Commands/User/WelcomeUserCommandTest.php b/tests/Bus/Commands/User/WelcomeUserCommandTest.php deleted file mode 100644 index b30c1e07..00000000 --- a/tests/Bus/Commands/User/WelcomeUserCommandTest.php +++ /dev/null @@ -1,47 +0,0 @@ - - */ -class WelcomeUserCommandTest extends AbstractTestCase -{ - use CommandTrait; - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - - $object = new WelcomeUserCommand($params['user']); - - return compact('params', 'object'); - } - - protected function objectHasRules() - { - return false; - } - - protected function getHandlerClass() - { - return WelcomeUserCommandHandler::class; - } -} diff --git a/tests/Bus/Events/Beacon/AbstractBeaconEventTestCase.php b/tests/Bus/Events/Beacon/AbstractBeaconEventTestCase.php deleted file mode 100644 index 7baeb070..00000000 --- a/tests/Bus/Events/Beacon/AbstractBeaconEventTestCase.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -abstract class AbstractBeaconEventTestCase extends AbstractTestCase -{ - use EventTrait; - - protected function getEventInterfaces() - { - return [BeaconEventInterface::class]; - } -} diff --git a/tests/Bus/Events/Beacon/BeaconFailedToSendEventTest.php b/tests/Bus/Events/Beacon/BeaconFailedToSendEventTest.php deleted file mode 100644 index 977e3ac3..00000000 --- a/tests/Bus/Events/Beacon/BeaconFailedToSendEventTest.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ -class BeaconFailedToSendEventTest extends AbstractBeaconEventTestCase -{ - protected function objectHasHandlers() - { - return true; - } - - protected function getObjectAndParams() - { - $params = []; - $object = new BeaconFailedToSendEvent(); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Beacon/BeaconWasSentEventTest.php b/tests/Bus/Events/Beacon/BeaconWasSentEventTest.php deleted file mode 100644 index dea51970..00000000 --- a/tests/Bus/Events/Beacon/BeaconWasSentEventTest.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ -class BeaconWasSentEventTest extends AbstractBeaconEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = []; - $object = new BeaconWasSentEvent(); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Component/AbstractComponentEventTestCase.php b/tests/Bus/Events/Component/AbstractComponentEventTestCase.php deleted file mode 100644 index 285c859f..00000000 --- a/tests/Bus/Events/Component/AbstractComponentEventTestCase.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ -class ComponentStatusWasChangedEventTest extends AbstractComponentEventTestCase -{ - use DatabaseMigrations; - use InteractsWithMail; - - public function testComponentUpdateEmailWasSent() - { - $user = factory('CachetHQ\Cachet\Models\User')->create(); - - $component = factory('CachetHQ\Cachet\Models\Component')->create([ - 'status' => 2, - ]); - - $subscriber = factory('CachetHQ\Cachet\Models\Subscriber')->create([ - 'verified_at' => '1970-01-01 00:00:00', - ]); - - $subscriber->subscriptions()->create(['component_id' => $component->id]); - - $this->app['events']->fire(new ComponentStatusWasChangedEvent($user, $component, 1, 2, false)); - - $this->seeMessageFor($subscriber->email); - $this->seeMessageWithSubject(trans('notifications.component.status_update.mail.subject')); - - $message = $this->getMailer()->lastMessage(); - - $this->assertTrue($message->contains($component->name)); - $this->assertTrue($message->contains(trans('cachet.components.status.'.$component->status))); - } - - protected function objectHasHandlers() - { - return true; - } - - protected function getObjectAndParams() - { - $params = [ - 'user' => new User(), - 'component' => new Component(), - 'original_status' => 1, - 'new_status' => 2, - 'silent' => false, - ]; - $object = new ComponentStatusWasChangedEvent( - $params['user'], - $params['component'], - $params['original_status'], - $params['new_status'], - $params['silent'] - ); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Component/ComponentWasCreatedEventTest.php b/tests/Bus/Events/Component/ComponentWasCreatedEventTest.php deleted file mode 100644 index 532f09c2..00000000 --- a/tests/Bus/Events/Component/ComponentWasCreatedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'component' => new Component()]; - $object = new ComponentWasCreatedEvent($params['user'], $params['component']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php b/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php deleted file mode 100644 index d70b30f7..00000000 --- a/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'component' => new Component()]; - $object = new ComponentWasRemovedEvent($params['user'], $params['component']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Component/ComponentWasUpdatedEventTest.php b/tests/Bus/Events/Component/ComponentWasUpdatedEventTest.php deleted file mode 100644 index 7555fdae..00000000 --- a/tests/Bus/Events/Component/ComponentWasUpdatedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'component' => new Component()]; - $object = new ComponentWasUpdatedEvent($params['user'], $params['component']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/ComponentGroup/AbstractComponentGroupEventTestCase.php b/tests/Bus/Events/ComponentGroup/AbstractComponentGroupEventTestCase.php deleted file mode 100644 index c1b70dde..00000000 --- a/tests/Bus/Events/ComponentGroup/AbstractComponentGroupEventTestCase.php +++ /dev/null @@ -1,26 +0,0 @@ - new User(), 'group' => new ComponentGroup()]; - $object = new ComponentGroupWasCreatedEvent($params['user'], $params['group']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/ComponentGroup/ComponentGroupWasRemovedEventTest.php b/tests/Bus/Events/ComponentGroup/ComponentGroupWasRemovedEventTest.php deleted file mode 100644 index 1a9903e4..00000000 --- a/tests/Bus/Events/ComponentGroup/ComponentGroupWasRemovedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'group' => new ComponentGroup()]; - $object = new ComponentGroupWasRemovedEvent($params['user'], $params['group']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/ComponentGroup/ComponentGroupWasUpdatedEventTest.php b/tests/Bus/Events/ComponentGroup/ComponentGroupWasUpdatedEventTest.php deleted file mode 100644 index e1be2705..00000000 --- a/tests/Bus/Events/ComponentGroup/ComponentGroupWasUpdatedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'group' => new ComponentGroup()]; - $object = new ComponentGroupWasUpdatedEvent($params['user'], $params['group']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/EventExistenceTest.php b/tests/Bus/Events/EventExistenceTest.php deleted file mode 100644 index 6229a49d..00000000 --- a/tests/Bus/Events/EventExistenceTest.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -class EventExistenceTest extends TestCase -{ - use ExistenceTrait; - - protected function getSourcePath() - { - return realpath(__DIR__.'/../../../app/Bus/Events'); - } -} diff --git a/tests/Bus/Events/Incident/AbstractIncidentEventTestCase.php b/tests/Bus/Events/Incident/AbstractIncidentEventTestCase.php deleted file mode 100644 index c57e6744..00000000 --- a/tests/Bus/Events/Incident/AbstractIncidentEventTestCase.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ -class IncidentWasCreatedEventTest extends AbstractIncidentEventTestCase -{ - protected function objectHasHandlers() - { - return true; - } - - protected function getObjectAndParams() - { - $params = [ - 'user' => new User(), - 'incident' => new Incident(), - 'notify' => true, - ]; - $object = new IncidentWasCreatedEvent($params['user'], $params['incident'], $params['notify']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Incident/IncidentWasRemovedEventTest.php b/tests/Bus/Events/Incident/IncidentWasRemovedEventTest.php deleted file mode 100644 index 63ff848c..00000000 --- a/tests/Bus/Events/Incident/IncidentWasRemovedEventTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class IncidentWasRemovedEventTest extends AbstractIncidentEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User(), 'incident' => new Incident()]; - $object = new IncidentWasRemovedEvent($params['user'], $params['incident']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Incident/IncidentWasUpdatedEventTest.php b/tests/Bus/Events/Incident/IncidentWasUpdatedEventTest.php deleted file mode 100644 index 7fb95637..00000000 --- a/tests/Bus/Events/Incident/IncidentWasUpdatedEventTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class IncidentWasUpdatedEventTest extends AbstractIncidentEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User(), 'incident' => new Incident()]; - $object = new IncidentWasUpdatedEvent($params['user'], $params['incident']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/IncidentUpdate/AbstractIncidentUpdateEventTestCase.php b/tests/Bus/Events/IncidentUpdate/AbstractIncidentUpdateEventTestCase.php deleted file mode 100644 index b0acab8a..00000000 --- a/tests/Bus/Events/IncidentUpdate/AbstractIncidentUpdateEventTestCase.php +++ /dev/null @@ -1,26 +0,0 @@ - new User(), 'update' => new IncidentUpdate()]; - $object = new IncidentUpdateWasRemovedEvent($params['user'], $params['update']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/IncidentUpdate/IncidentUpdateWasReportedEventTest.php b/tests/Bus/Events/IncidentUpdate/IncidentUpdateWasReportedEventTest.php deleted file mode 100644 index cd436992..00000000 --- a/tests/Bus/Events/IncidentUpdate/IncidentUpdateWasReportedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'update' => new IncidentUpdate()]; - $object = new IncidentUpdateWasReportedEvent($params['user'], $params['update']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/IncidentUpdate/IncidentUpdateWasUpdatedEventTest.php b/tests/Bus/Events/IncidentUpdate/IncidentUpdateWasUpdatedEventTest.php deleted file mode 100644 index 36b45683..00000000 --- a/tests/Bus/Events/IncidentUpdate/IncidentUpdateWasUpdatedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'update' => new IncidentUpdate()]; - $object = new IncidentUpdateWasUpdatedEvent($params['user'], $params['update']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Invite/AbstractInviteEventTestCase.php b/tests/Bus/Events/Invite/AbstractInviteEventTestCase.php deleted file mode 100644 index ea86aee5..00000000 --- a/tests/Bus/Events/Invite/AbstractInviteEventTestCase.php +++ /dev/null @@ -1,26 +0,0 @@ - new Invite()]; - $object = new InviteWasClaimedEvent($params['invite']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Metric/AbstractMetricEventTestCase.php b/tests/Bus/Events/Metric/AbstractMetricEventTestCase.php deleted file mode 100644 index 8ef90693..00000000 --- a/tests/Bus/Events/Metric/AbstractMetricEventTestCase.php +++ /dev/null @@ -1,26 +0,0 @@ - - */ -class MetricPointWasCreatedEventTest extends AbstractMetricEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User(), 'metricPoint' => new MetricPoint()]; - $object = new MetricPointWasCreatedEvent($params['user'], $params['metricPoint']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Metric/MetricPointWasRemovedEventTest.php b/tests/Bus/Events/Metric/MetricPointWasRemovedEventTest.php deleted file mode 100644 index f55ee3cd..00000000 --- a/tests/Bus/Events/Metric/MetricPointWasRemovedEventTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class MetricPointWasRemovedEventTest extends AbstractMetricEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User(), 'metricPoint' => new MetricPoint()]; - $object = new MetricPointWasRemovedEvent($params['user'], $params['metricPoint']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Metric/MetricPointWasUpdatedEventTest.php b/tests/Bus/Events/Metric/MetricPointWasUpdatedEventTest.php deleted file mode 100644 index 4f411dd6..00000000 --- a/tests/Bus/Events/Metric/MetricPointWasUpdatedEventTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class MetricPointWasUpdatedEventTest extends AbstractMetricEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User(), 'metricPoint' => new MetricPoint()]; - $object = new MetricPointWasUpdatedEvent($params['user'], $params['metricPoint']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Metric/MetricWasCreatedEventTest.php b/tests/Bus/Events/Metric/MetricWasCreatedEventTest.php deleted file mode 100644 index 2f81383f..00000000 --- a/tests/Bus/Events/Metric/MetricWasCreatedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'metric' => new Metric()]; - $object = new MetricWasCreatedEvent($params['user'], $params['metric']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Metric/MetricWasRemovedEventTest.php b/tests/Bus/Events/Metric/MetricWasRemovedEventTest.php deleted file mode 100644 index 3759ee05..00000000 --- a/tests/Bus/Events/Metric/MetricWasRemovedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'metric' => new Metric()]; - $object = new MetricWasRemovedEvent($params['user'], $params['metric']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Metric/MetricWasUpdatedEventTest.php b/tests/Bus/Events/Metric/MetricWasUpdatedEventTest.php deleted file mode 100644 index 0e6cbc4e..00000000 --- a/tests/Bus/Events/Metric/MetricWasUpdatedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'metric' => new Metric()]; - $object = new MetricWasUpdatedEvent($params['user'], $params['metric']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Schedule/AbstractScheduleEventTestCase.php b/tests/Bus/Events/Schedule/AbstractScheduleEventTestCase.php deleted file mode 100644 index 66b805a1..00000000 --- a/tests/Bus/Events/Schedule/AbstractScheduleEventTestCase.php +++ /dev/null @@ -1,26 +0,0 @@ - new User(), 'schedule' => new Schedule()]; - $object = new ScheduleWasCreatedEvent($params['user'], $params['schedule']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Schedule/ScheduleWasRemovedEventTest.php b/tests/Bus/Events/Schedule/ScheduleWasRemovedEventTest.php deleted file mode 100644 index 11282885..00000000 --- a/tests/Bus/Events/Schedule/ScheduleWasRemovedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'schedule' => new Schedule()]; - $object = new ScheduleWasRemovedEvent($params['user'], $params['schedule']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Schedule/ScheduleWasUpdatedEventTest.php b/tests/Bus/Events/Schedule/ScheduleWasUpdatedEventTest.php deleted file mode 100644 index ec5f8df4..00000000 --- a/tests/Bus/Events/Schedule/ScheduleWasUpdatedEventTest.php +++ /dev/null @@ -1,32 +0,0 @@ - new User(), 'schedule' => new Schedule()]; - $object = new ScheduleWasUpdatedEvent($params['user'], $params['schedule']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Subscriber/AbstractSubscriberEventTestCase.php b/tests/Bus/Events/Subscriber/AbstractSubscriberEventTestCase.php deleted file mode 100644 index 23a77dd1..00000000 --- a/tests/Bus/Events/Subscriber/AbstractSubscriberEventTestCase.php +++ /dev/null @@ -1,26 +0,0 @@ - new Subscriber()]; - $object = new SubscriberHasSubscribedEvent($params['subscriber']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Subscriber/SubscriberHasUnsubscribedEventTest.php b/tests/Bus/Events/Subscriber/SubscriberHasUnsubscribedEventTest.php deleted file mode 100644 index 029e4ef3..00000000 --- a/tests/Bus/Events/Subscriber/SubscriberHasUnsubscribedEventTest.php +++ /dev/null @@ -1,31 +0,0 @@ - new Subscriber()]; - $object = new SubscriberHasUnsubscribedEvent($params['subscriber']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Subscriber/SubscriberHasUpdatedSubscriptionsEventTest.php b/tests/Bus/Events/Subscriber/SubscriberHasUpdatedSubscriptionsEventTest.php deleted file mode 100644 index b0ecf6d7..00000000 --- a/tests/Bus/Events/Subscriber/SubscriberHasUpdatedSubscriptionsEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class SubscriberHasUpdatedSubscriptionsEventTest extends AbstractSubscriberEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['subscriber' => new Subscriber()]; - $object = new SubscriberHasUpdatedSubscriptionsEvent($params['subscriber']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/Subscriber/SubscriberHasVerifiedEventTest.php b/tests/Bus/Events/Subscriber/SubscriberHasVerifiedEventTest.php deleted file mode 100644 index 8b154bd2..00000000 --- a/tests/Bus/Events/Subscriber/SubscriberHasVerifiedEventTest.php +++ /dev/null @@ -1,31 +0,0 @@ - new Subscriber()]; - $object = new SubscriberHasVerifiedEvent($params['subscriber']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/System/AbstractSystemEventTestCase.php b/tests/Bus/Events/System/AbstractSystemEventTestCase.php deleted file mode 100644 index b500edcc..00000000 --- a/tests/Bus/Events/System/AbstractSystemEventTestCase.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -abstract class AbstractSystemEventTestCase extends AbstractTestCase -{ - use EventTrait; - - protected function getEventInterfaces() - { - return [SystemEventInterface::class]; - } -} diff --git a/tests/Bus/Events/System/SystemCheckedForUpdatesEventTest.php b/tests/Bus/Events/System/SystemCheckedForUpdatesEventTest.php deleted file mode 100644 index 45db84cd..00000000 --- a/tests/Bus/Events/System/SystemCheckedForUpdatesEventTest.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ -class SystemCheckedForUpdatesEventTest extends AbstractSystemEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = []; - $object = new SystemCheckedForUpdatesEvent(); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/System/SystemWasInstalledEventTest.php b/tests/Bus/Events/System/SystemWasInstalledEventTest.php deleted file mode 100644 index 1cdd0841..00000000 --- a/tests/Bus/Events/System/SystemWasInstalledEventTest.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ -class SystemWasInstalledEventTest extends AbstractSystemEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = []; - $object = new SystemWasInstalledEvent(); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/System/SystemWasResetEventTest.php b/tests/Bus/Events/System/SystemWasResetEventTest.php deleted file mode 100644 index 35e593af..00000000 --- a/tests/Bus/Events/System/SystemWasResetEventTest.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ -class SystemWasResetEventTest extends AbstractSystemEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = []; - $object = new SystemWasResetEvent(); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/System/SystemWasUpdatedEventTest.php b/tests/Bus/Events/System/SystemWasUpdatedEventTest.php deleted file mode 100644 index 2d89a4ed..00000000 --- a/tests/Bus/Events/System/SystemWasUpdatedEventTest.php +++ /dev/null @@ -1,35 +0,0 @@ - - */ -class SystemWasUpdatedEventTest extends AbstractSystemEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = []; - $object = new SystemWasUpdatedEvent(); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/AbstractUserEventTestCase.php b/tests/Bus/Events/User/AbstractUserEventTestCase.php deleted file mode 100644 index 5368b85b..00000000 --- a/tests/Bus/Events/User/AbstractUserEventTestCase.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -abstract class AbstractUserEventTestCase extends AbstractTestCase -{ - use EventTrait; - - protected function getEventInterfaces() - { - return [UserEventInterface::class]; - } -} diff --git a/tests/Bus/Events/User/UserAcceptedInviteEventTest.php b/tests/Bus/Events/User/UserAcceptedInviteEventTest.php deleted file mode 100644 index e948fc76..00000000 --- a/tests/Bus/Events/User/UserAcceptedInviteEventTest.php +++ /dev/null @@ -1,40 +0,0 @@ - - */ -class UserAcceptedInviteEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = [ - 'user' => new User(), - 'invite' => new Invite(), - ]; - $object = new UserAcceptedInviteEvent($params['user'], $params['invite']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserDisabledTwoAuthEventTest.php b/tests/Bus/Events/User/UserDisabledTwoAuthEventTest.php deleted file mode 100644 index 464c4181..00000000 --- a/tests/Bus/Events/User/UserDisabledTwoAuthEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserDisabledTwoAuthEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserDisabledTwoAuthEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserEnabledTwoAuthEventTest.php b/tests/Bus/Events/User/UserEnabledTwoAuthEventTest.php deleted file mode 100644 index 0583ff74..00000000 --- a/tests/Bus/Events/User/UserEnabledTwoAuthEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserEnabledTwoAuthEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserEnabledTwoAuthEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserFailedTwoAuthEventTest.php b/tests/Bus/Events/User/UserFailedTwoAuthEventTest.php deleted file mode 100644 index 4f892a24..00000000 --- a/tests/Bus/Events/User/UserFailedTwoAuthEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserFailedTwoAuthEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserFailedTwoAuthEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserLoggedInEventTest.php b/tests/Bus/Events/User/UserLoggedInEventTest.php deleted file mode 100644 index a8f9f84a..00000000 --- a/tests/Bus/Events/User/UserLoggedInEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserLoggedInEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserLoggedInEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserLoggedOutEventTest.php b/tests/Bus/Events/User/UserLoggedOutEventTest.php deleted file mode 100644 index 34c16980..00000000 --- a/tests/Bus/Events/User/UserLoggedOutEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserLoggedOutEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserLoggedOutEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserPassedTwoAuthEventTest.php b/tests/Bus/Events/User/UserPassedTwoAuthEventTest.php deleted file mode 100644 index d03dca4b..00000000 --- a/tests/Bus/Events/User/UserPassedTwoAuthEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserPassedTwoAuthEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserPassedTwoAuthEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserRegeneratedApiTokenEventTest.php b/tests/Bus/Events/User/UserRegeneratedApiTokenEventTest.php deleted file mode 100644 index 98a3b72d..00000000 --- a/tests/Bus/Events/User/UserRegeneratedApiTokenEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserRegeneratedApiTokenEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserRegeneratedApiTokenEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserWasCreatedEventTest.php b/tests/Bus/Events/User/UserWasCreatedEventTest.php deleted file mode 100644 index 574567d2..00000000 --- a/tests/Bus/Events/User/UserWasCreatedEventTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @author James Brooks - */ -class UserWasCreatedEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserWasCreatedEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserWasInvitedEventTest.php b/tests/Bus/Events/User/UserWasInvitedEventTest.php deleted file mode 100644 index af63507e..00000000 --- a/tests/Bus/Events/User/UserWasInvitedEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserWasInvitedEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['invite' => new Invite()]; - $object = new UserWasInvitedEvent($params['invite']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserWasRemovedEventTest.php b/tests/Bus/Events/User/UserWasRemovedEventTest.php deleted file mode 100644 index a6b72cff..00000000 --- a/tests/Bus/Events/User/UserWasRemovedEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserWasRemovedEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserWasRemovedEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Events/User/UserWasWelcomedEventTest.php b/tests/Bus/Events/User/UserWasWelcomedEventTest.php deleted file mode 100644 index a24861f3..00000000 --- a/tests/Bus/Events/User/UserWasWelcomedEventTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -class UserWasWelcomedEventTest extends AbstractUserEventTestCase -{ - protected function objectHasHandlers() - { - return false; - } - - protected function getObjectAndParams() - { - $params = ['user' => new User()]; - $object = new UserWasWelcomedEvent($params['user']); - - return compact('params', 'object'); - } -} diff --git a/tests/Bus/Jobs/JobExistenceTest.php b/tests/Bus/Jobs/JobExistenceTest.php deleted file mode 100644 index 2767200d..00000000 --- a/tests/Bus/Jobs/JobExistenceTest.php +++ /dev/null @@ -1,30 +0,0 @@ - - */ -class JobExistenceTest extends TestCase -{ - use ExistenceTrait; - - protected function getSourcePath() - { - return realpath(__DIR__.'/../../../app/Bus/Jobs'); - } -} diff --git a/tests/Bus/Jobs/System/SendBeaconJobTest.php b/tests/Bus/Jobs/System/SendBeaconJobTest.php deleted file mode 100644 index 90ae3023..00000000 --- a/tests/Bus/Jobs/System/SendBeaconJobTest.php +++ /dev/null @@ -1,40 +0,0 @@ - - */ -class SendBeaconJobTest extends AbstractTestCase -{ - use JobTrait; - - protected function getObjectAndParams() - { - $params = []; - $object = new SendBeaconJob(); - - return compact('params', 'object'); - } - - protected function getHandlerClass() - { - return SendBeaconJobHandler::class; - } -} diff --git a/tests/Bus/Traits/StoresMetaTest.php b/tests/Bus/Traits/StoresMetaTest.php deleted file mode 100644 index 641878f8..00000000 --- a/tests/Bus/Traits/StoresMetaTest.php +++ /dev/null @@ -1,133 +0,0 @@ -markTestSkipped('This test requires Mockery'); - } - - $this->metaModel = Mockery::mock(Meta::class)->makePartial(); - $this->app->instance(Meta::class, $this->metaModel); - } - - /** - * Our Mockery expectations should count as assertions to prevent warnings from PHPUnit. - */ - public function tearDown() - { - $this->addToAssertionCount(Mockery::getContainer()->mockery_getExpectationCount()); - parent::tearDown(); - } - - /** - * Each array value passed to the MetaValues should result in a new model instance. - */ - public function testStoresMetaWithSimpleMultipleArrays() - { - $mock = $this->getMockForTrait(StoresMeta::class); - $metaData = [ - 'somekey1' => 'somevalue', - 'somekey2' => 'somevalue', - 'somekey3' => 'somevalue', - ]; - - $this->metaModel->shouldReceive('firstOrNew')->times(3)->andReturn($this->metaModel); - $this->metaModel->shouldReceive('save')->times(3); - $this->metaModel->shouldReceive('setAttribute')->times(3)->andReturnUsing(function ($key, $value) { - $this->assertEquals('value', $key); - $this->assertEquals('somevalue', $value); - - return $this->metaModel; - }); - - $mock->storeMeta($metaData, 'some_class', 1, $this->metaModel); - } - - /** - * It will pass nested arrays to the value property of the Meta model. - */ - public function testStoresNestedArraysAsSingleValue() - { - $mock = $this->getMockForTrait(StoresMeta::class); - $metaData = ['somekey1' => ['subkey' => ['second' => 'key']]]; - - $this->metaModel->shouldReceive('firstOrNew')->once()->andReturn($this->metaModel); - $this->metaModel->shouldReceive('save')->once(); - $this->metaModel->shouldReceive('setAttribute')->once()->andReturnUsing(function ($key, $value) { - $this->assertEquals('value', $key); - $this->assertEquals(['subkey' => ['second' => 'key']], $value); - - return $this->metaModel; - }); - - $mock->storeMeta($metaData, 'some_class', 1, $this->metaModel); - } - - /** - * If a value is empty or null it will be removed. - */ - public function testEmptyValuesWillBeDeleted() - { - $mock = $this->getMockForTrait(StoresMeta::class); - $metaData = ['somekey1' => '']; - - $this->metaModel->exists = true; - $this->metaModel->shouldReceive('firstOrNew')->once()->andReturn($this->metaModel); - $this->metaModel->shouldReceive('delete')->once(); - $this->metaModel->shouldReceive('setAttribute')->never(); - $this->metaModel->shouldReceive('save')->never(); - - $mock->storeMeta($metaData, 'some_class', 1, $this->metaModel); - } - - /** - * If a value is empty or null in a nested array it will be removed. - */ - public function testEmptyNestedArrayKeysAreRemoved() - { - $mock = $this->getMockForTrait(StoresMeta::class); - $metaData = ['somekey1' => ['keyWithValue' => 'value123', 'keyWithoutValue' => null]]; - - $this->metaModel->exists = true; - $this->metaModel->shouldReceive('firstOrNew')->once()->andReturn($this->metaModel); - $this->metaModel->shouldReceive('setAttribute')->once()->andReturnUsing(function ($key, $value) { - $this->assertEquals('value', $key); - $this->assertEquals(['keyWithValue' => 'value123'], $value); - - return $this->metaModel; - }); - $this->metaModel->shouldReceive('save')->once(); - $this->metaModel->shouldReceive('delete')->never(); - - $mock->storeMeta($metaData, 'some_class', 1, $this->metaModel); - } -} diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php new file mode 100644 index 00000000..cc683011 --- /dev/null +++ b/tests/CreatesApplication.php @@ -0,0 +1,21 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/tests/CreatesApplicationTrait.php b/tests/CreatesApplicationTrait.php deleted file mode 100644 index 3e6c0a63..00000000 --- a/tests/CreatesApplicationTrait.php +++ /dev/null @@ -1,36 +0,0 @@ - - */ -trait CreatesApplicationTrait -{ - /** - * Creates the application. - * - * @return \Illuminate\Foundation\Application - */ - public function createApplication() - { - $app = require __DIR__.'/../bootstrap/app.php'; - - $app->make(Kernel::class)->bootstrap(); - - return $app; - } -} diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php new file mode 100644 index 00000000..8b5843f4 --- /dev/null +++ b/tests/Feature/ExampleTest.php @@ -0,0 +1,7 @@ +get('/'); + + $response->assertStatus(200); +}); diff --git a/tests/Functional/ArtisanCommandTest.php b/tests/Functional/ArtisanCommandTest.php deleted file mode 100644 index 1c69d33d..00000000 --- a/tests/Functional/ArtisanCommandTest.php +++ /dev/null @@ -1,47 +0,0 @@ - - * @author James Brooks - */ -class ArtisanCommandTest extends AbstractTestCase -{ - use DatabaseMigrations; - - public function testMigrations() - { - $this->assertSame(0, $this->app->make(Kernel::class)->call('migrate', ['--force' => true])); - } - - public function testSeed() - { - $this->assertSame(0, $this->app->make(Kernel::class)->call('cachet:seed')); - } - - public function testBeacon() - { - $this->assertSame(0, $this->app->make(Kernel::class)->call('cachet:beacon')); - } - - public function testVersion() - { - $this->assertSame(0, $this->app->make(Kernel::class)->call('cachet:version')); - } -} diff --git a/tests/Functional/Incident/MetaSeoTest.php b/tests/Functional/Incident/MetaSeoTest.php deleted file mode 100644 index 42edb362..00000000 --- a/tests/Functional/Incident/MetaSeoTest.php +++ /dev/null @@ -1,192 +0,0 @@ - - * @author Graham Campbell - */ -class MetaSeoTest extends AbstractTestCase -{ - use DatabaseMigrations; - - /** - * @var \Faker\Generator - */ - protected $fakerFactory; - - /** - * @var string - */ - protected $appName; - - /** - * @var array[]|null - */ - protected $incidents; - - /** - * CreateIncidentCommandTest constructor. - * - * @param null $name - * @param array $data - * @param string $dataName - */ - public function __construct($name = null, array $data = [], $dataName = '') - { - parent::__construct($name, $data, $dataName); - $this->fakerFactory = \Faker\Factory::create(); - $this->appName = 'MetaSeoTest'; - } - - /** - * Setup the application. - */ - public function setUp() - { - parent::setUp(); - $this->app->make(SettingsRepository::class)->set('app_name', $this->appName); - $this->app->config->set('setting.app_name', $this->appName); - $this->incidents = [ - ['title' => 'Foo '.Str::random(16), 'description' => 'Foo Bar Baz '.Str::random(32)], - ['title' => 'Foe '.Str::random(16), 'description' => 'Foe Baz Bar '.Str::random(32)], - ]; - } - - /** - * When using a custom meta description in an incident it will be - * showed in two meta tags on the incident details page. - */ - public function testCustomSeoDescriptionOnIncidentPage() - { - $expectedDescription = $this->incidents[0]['description']; - - $incident = $this->createIncidentWithMeta($this->incidents[1], ['seo' => ['description' => $expectedDescription]]); - $page = $this->get(sprintf('/incidents/%d', $incident->id)); - - $this->assertContains( - sprintf('', $expectedDescription), - $page->content() - ); - $this->assertContains( - sprintf('', $expectedDescription), - $page->content() - ); - } - - /** - * When using a custom meta title in an incident it will be - * showed in two meta tags on the incident details page. - */ - public function testCustomSeoTitleOnIncidentPage() - { - $title = $this->incidents[0]['title']; - - $incident = $this->createIncidentWithMeta($this->incidents[1], ['seo' => ['title' => $title]]); - $page = $this->get(sprintf('/incidents/%d', $incident->id)); - - $this->assertContains( - sprintf('', $title, $this->appName), - $page->content() - ); - $this->assertContains( - sprintf('%s | %s', $title, $this->appName), - $page->content() - ); - } - - /** - * When using no custom meta description in an incident, the application - * default generated description will be used on the incident details page. - */ - public function testNoCustomSeoDescriptionOnIncidentPage() - { - $incident = $this->createIncidentWithMeta($this->incidents[1]); - $presenter = $this->app->make(IncidentPresenter::class); - $presenter->setWrappedObject($incident); - - $expectedDescription = sprintf( - 'Details and updates about the %s incident that occurred on %s', - $incident->name, - $presenter->occurred_at_formatted - ); - - $page = $this->get(sprintf('/incidents/%d', $incident->id)); - - $this->assertContains( - sprintf('', $expectedDescription), - $page->content() - ); - $this->assertContains( - sprintf('', $expectedDescription), - $page->content() - ); - } - - /** - * When using no custom meta description in an incident, the application - * default generated description will be used on the incident details page. - */ - public function testNoCustomSeoTitleOnIncidentPage() - { - $incident = $this->createIncidentWithMeta($this->incidents[1]); - $expectedTitle = sprintf('%s | %s', $incident->name, $this->appName); - - $page = $this->get(sprintf('/incidents/%d', $incident->id)); - - $this->assertContains( - sprintf('', $expectedTitle), - $page->content() - ); - $this->assertContains(sprintf('%s', $expectedTitle), $page->content()); - } - - /** - * @param array $incident - * @param array $meta - * - * @return Incident - */ - protected function createIncidentWithMeta(array $incident, array $meta = []) - { - $this->signIn(); - $name = $incident['title']; - $message = $incident['description']; - - dispatch(new CreateIncidentCommand( - $name, - $this->fakerFactory->numberBetween(0, 3), - $message, - $this->fakerFactory->boolean, - null, - null, - false, - $this->fakerFactory->boolean, - $this->fakerFactory->date('Y-m-d H:i'), - null, - [], - $meta - )); - - return Incident::where('name', '=', $name)->where('message', '=', $message)->firstOrFail(); - } -} diff --git a/tests/Functional/Notifications/MailTest.php b/tests/Functional/Notifications/MailTest.php deleted file mode 100644 index 59c5d090..00000000 --- a/tests/Functional/Notifications/MailTest.php +++ /dev/null @@ -1,193 +0,0 @@ -fakerFactory = \Faker\Factory::create(); - $this->appName = 'MailTest'; - } - - /** - * Setup the application. - */ - public function setUp() - { - parent::setUp(); - $this->app->make(SettingsRepository::class)->set('app_name', $this->appName); - $this->app->config->set('setting.app_name', $this->appName); - $this->incidents = [ - ['title' => 'Foo '.Str::random(16), 'description' => 'Foo Bar Baz '.Str::random(32)], - ['title' => 'Foe '.Str::random(16), 'description' => 'Foe Baz Bar '.Str::random(32)], - ]; - } - - /** - * Create a new subscriber. - */ - public function createSubscriber($subscriberEmail) - { - dispatch(new SubscribeSubscriberCommand( - $subscriberEmail, - true - )); - - return Subscriber::where('email', '=', $subscriberEmail)->firstOrFail(); - } - - /** - * @param array $incident - * @param array $meta - * - * @return Incident - */ - protected function createIncident(array $incident) - { - $name = $incident['title']; - $message = $incident['description']; - - dispatch(new CreateIncidentCommand( - $name, - $this->fakerFactory->numberBetween(0, 3), - $message, - true, - null, - null, - true, - true, - $this->fakerFactory->date('Y-m-d H:i'), - null, - [] - )); - - return Incident::where('name', '=', $name)->where('message', '=', $message)->firstOrFail(); - } - - /** - * Send an email notification to subscribers when a new incident - * is added. - */ - public function testEmailNotificationSentForNewIncident() - { - Notification::fake(); - - $this->signIn(); - - $subscriber = $this->createSubscriber($this->fakerFactory->safeEmail); - - $response = $this->post('dashboard/incidents/create', [ - 'name' => $this->fakerFactory->word, - 'status' => 1, - 'visible' => 1, - 'message' => $this->fakerFactory->paragraph, - 'notify' => 1, - ]); - - Notification::assertSentTo( - [$subscriber], - NewIncidentNotification::class - ); - } - - /** - * Do not send an email if notify not checked. - */ - public function testEmailNotificationNotSentWhenNotifyNotCheckedForNewIncident() - { - Notification::fake(); - - $this->signIn(); - - $subscriber = $this->createSubscriber($this->fakerFactory->safeEmail); - - $response = $this->post('dashboard/incidents/create', [ - 'name' => $this->fakerFactory->word, - 'status' => 1, - 'visible' => 1, - 'message' => $this->fakerFactory->paragraph, - 'notify' => 0, - ]); - - Notification::assertNotSentTo( - [$subscriber], - NewIncidentNotification::class - ); - } - - /** - * Send an email notification to subscribers when an incident - * update is added. - */ - public function testEmailNotificationSentForIncidentUpdate() - { - Notification::fake(); - - $this->signIn(); - - $incident = $this->createIncident($this->incidents[1]); - $subscriber = $this->createSubscriber($this->fakerFactory->safeEmail); - - $response = $this->post('dashboard/incidents/'.$incident->id.'/updates/create', [ - 'status' => 1, - 'message' => $this->fakerFactory->paragraph, - ]); - - Notification::assertSentTo( - [$subscriber], - IncidentUpdatedNotification::class - ); - } -} diff --git a/tests/Models/ActionTest.php b/tests/Models/ActionTest.php deleted file mode 100644 index cda704ab..00000000 --- a/tests/Models/ActionTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class ActionTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new Action()); - } -} diff --git a/tests/Models/ComponentGroupTest.php b/tests/Models/ComponentGroupTest.php deleted file mode 100644 index 58a3d4a3..00000000 --- a/tests/Models/ComponentGroupTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class ComponentGroupTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new ComponentGroup()); - } -} diff --git a/tests/Models/ComponentTest.php b/tests/Models/ComponentTest.php deleted file mode 100644 index 8998d9b5..00000000 --- a/tests/Models/ComponentTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class ComponentTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new Component()); - } -} diff --git a/tests/Models/IncidentComponentTest.php b/tests/Models/IncidentComponentTest.php deleted file mode 100644 index fd2816fd..00000000 --- a/tests/Models/IncidentComponentTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class IncidentComponentTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new IncidentComponent()); - } -} diff --git a/tests/Models/IncidentTemplateTest.php b/tests/Models/IncidentTemplateTest.php deleted file mode 100644 index 5068e90d..00000000 --- a/tests/Models/IncidentTemplateTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class IncidentTemplateTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new IncidentTemplate()); - } -} diff --git a/tests/Models/IncidentTest.php b/tests/Models/IncidentTest.php deleted file mode 100644 index 541cb968..00000000 --- a/tests/Models/IncidentTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class IncidentTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new Incident()); - } -} diff --git a/tests/Models/IncidentUpdateTest.php b/tests/Models/IncidentUpdateTest.php deleted file mode 100644 index e66e94d5..00000000 --- a/tests/Models/IncidentUpdateTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class IncidentUpdateTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new IncidentUpdate()); - } -} diff --git a/tests/Models/InviteTest.php b/tests/Models/InviteTest.php deleted file mode 100644 index f270eeb4..00000000 --- a/tests/Models/InviteTest.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ -class InviteTest extends AbstractTestCase -{ - public function testValidation() - { - $this->assertClassNotHasAttribute('rules', Invite::class); - } -} diff --git a/tests/Models/MetaTest.php b/tests/Models/MetaTest.php deleted file mode 100644 index 72bc47f4..00000000 --- a/tests/Models/MetaTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class MetaTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new Meta()); - } -} diff --git a/tests/Models/MetricPointTest.php b/tests/Models/MetricPointTest.php deleted file mode 100644 index 10b7804f..00000000 --- a/tests/Models/MetricPointTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class MetricPointTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new MetricPoint()); - } -} diff --git a/tests/Models/MetricTest.php b/tests/Models/MetricTest.php deleted file mode 100644 index 775773a3..00000000 --- a/tests/Models/MetricTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class MetricTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new Metric()); - } -} diff --git a/tests/Models/ModelExistenceTest.php b/tests/Models/ModelExistenceTest.php deleted file mode 100644 index 3bfbb3bc..00000000 --- a/tests/Models/ModelExistenceTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - * @author James Brooks - */ -class ModelExistenceTest extends TestCase -{ - use ExistenceTrait; - - protected function getSourcePath() - { - return realpath(__DIR__.'/../../app/Models'); - } -} diff --git a/tests/Models/ScheduleComponentTest.php b/tests/Models/ScheduleComponentTest.php deleted file mode 100644 index 020412af..00000000 --- a/tests/Models/ScheduleComponentTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class ScheduleComponentTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new ScheduleComponent()); - } -} diff --git a/tests/Models/ScheduleTest.php b/tests/Models/ScheduleTest.php deleted file mode 100644 index cf679557..00000000 --- a/tests/Models/ScheduleTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class ScheduleTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new Schedule()); - } -} diff --git a/tests/Models/SettingTest.php b/tests/Models/SettingTest.php deleted file mode 100644 index bedeba55..00000000 --- a/tests/Models/SettingTest.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ -class SettingTest extends AbstractTestCase -{ - public function testValidation() - { - $this->assertClassNotHasAttribute('rules', Setting::class); - } -} diff --git a/tests/Models/SubscriberTest.php b/tests/Models/SubscriberTest.php deleted file mode 100644 index 501c4d46..00000000 --- a/tests/Models/SubscriberTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class SubscriberTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new Subscriber()); - } -} diff --git a/tests/Models/SubscriptionTest.php b/tests/Models/SubscriptionTest.php deleted file mode 100644 index 3bf172b7..00000000 --- a/tests/Models/SubscriptionTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class SubscriptionTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new Subscription()); - } -} diff --git a/tests/Models/TagTest.php b/tests/Models/TagTest.php deleted file mode 100644 index f86a3697..00000000 --- a/tests/Models/TagTest.php +++ /dev/null @@ -1,28 +0,0 @@ - - */ -class TagTest extends AbstractTestCase -{ - public function testValidation() - { - $this->assertClassNotHasAttribute('rules', Tag::class); - } -} diff --git a/tests/Models/UserTest.php b/tests/Models/UserTest.php deleted file mode 100644 index b092d315..00000000 --- a/tests/Models/UserTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class UserTest extends AbstractTestCase -{ - use ValidationTrait; - - public function testValidation() - { - $this->checkRules(new User()); - } -} diff --git a/tests/Pest.php b/tests/Pest.php new file mode 100644 index 00000000..50ab1e43 --- /dev/null +++ b/tests/Pest.php @@ -0,0 +1,48 @@ +in('Feature'); + +/* +|-------------------------------------------------------------------------- +| Expectations +|-------------------------------------------------------------------------- +| +| When you're writing tests, you often need to check that values meet certain conditions. The +| "expect()" function gives you access to a set of "expectations" methods that you can use +| to assert different things. Of course, you may extend the Expectation API at any time. +| +*/ + +expect()->extend('toBeOne', function () { + return $this->toBe(1); +}); + +/* +|-------------------------------------------------------------------------- +| Functions +|-------------------------------------------------------------------------- +| +| While Pest is very powerful out-of-the-box, you may have some testing code specific to your +| project that you don't want to repeat in every file. Here you can also expose helpers as +| global functions to help you to reduce the number of lines of code in your test files. +| +*/ + +function something() +{ + // .. +} diff --git a/tests/Providers/AppServiceProviderTest.php b/tests/Providers/AppServiceProviderTest.php deleted file mode 100644 index 2abf9bdc..00000000 --- a/tests/Providers/AppServiceProviderTest.php +++ /dev/null @@ -1,32 +0,0 @@ - - * @author James Brooks - */ -class AppServiceProviderTest extends AbstractTestCase -{ - use ServiceProviderTrait; - - public function testDateFactoryIsInjectable() - { - $this->assertIsInjectable(DateFactory::class); - } -} diff --git a/tests/Providers/ComposerServiceProviderTest.php b/tests/Providers/ComposerServiceProviderTest.php deleted file mode 100644 index aca05ee1..00000000 --- a/tests/Providers/ComposerServiceProviderTest.php +++ /dev/null @@ -1,25 +0,0 @@ - - */ -class ComposerServiceProviderTest extends AbstractTestCase -{ - use ServiceProviderTrait; -} diff --git a/tests/Providers/ConfigServiceProviderTest.php b/tests/Providers/ConfigServiceProviderTest.php deleted file mode 100644 index cd729395..00000000 --- a/tests/Providers/ConfigServiceProviderTest.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class ConfigServiceProviderTest extends AbstractTestCase -{ - use ServiceProviderTrait; - - public function testCacheIsInjectable() - { - $this->assertIsInjectable(Cache::class); - } - - public function testRepositoryIsInjectable() - { - $this->assertIsInjectable(Repository::class); - } -} diff --git a/tests/Providers/ConsoleServiceProviderTest.php b/tests/Providers/ConsoleServiceProviderTest.php deleted file mode 100644 index 6df555d1..00000000 --- a/tests/Providers/ConsoleServiceProviderTest.php +++ /dev/null @@ -1,25 +0,0 @@ - - */ -class ConsoleServiceProviderTest extends AbstractTestCase -{ - use ServiceProviderTrait; -} diff --git a/tests/Providers/EventServiceProviderTest.php b/tests/Providers/EventServiceProviderTest.php deleted file mode 100644 index e4f2005d..00000000 --- a/tests/Providers/EventServiceProviderTest.php +++ /dev/null @@ -1,41 +0,0 @@ - - * @author James Brooks - */ -class EventServiceProviderTest extends AbstractTestCase -{ - use EventServiceProviderTrait; - - public function testIsAnEventServiceProvider() - { - $class = $this->getServiceProviderClass($this->app); - - $reflection = new ReflectionClass($class); - - $provider = new ReflectionClass(ServiceProvider::class); - - $msg = "Expected class '$class' to be a service provider."; - - $this->assertTrue($reflection->isSubclassOf($provider), $msg); - } -} diff --git a/tests/Providers/IntegrationServiceProviderTest.php b/tests/Providers/IntegrationServiceProviderTest.php deleted file mode 100644 index a6177f64..00000000 --- a/tests/Providers/IntegrationServiceProviderTest.php +++ /dev/null @@ -1,56 +0,0 @@ - - * @author Graham Campbell - */ -class IntegrationServiceProviderTest extends AbstractTestCase -{ - use ServiceProviderTrait; - - public function testBeaconIsInjectable() - { - $this->assertIsInjectable(Beacon::class); - } - - public function testCreditsIsInjectable() - { - $this->assertIsInjectable(Credits::class); - } - - public function testFeedIsInjectable() - { - $this->assertIsInjectable(Feed::class); - } - - public function testSystemIsInjectable() - { - $this->assertIsInjectable(System::class); - } - - public function testReleasesIsInjectable() - { - $this->assertIsInjectable(Releases::class); - } -} diff --git a/tests/Providers/RepositoryServiceProviderTest.php b/tests/Providers/RepositoryServiceProviderTest.php deleted file mode 100644 index feb4f6f7..00000000 --- a/tests/Providers/RepositoryServiceProviderTest.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -class RepositoryServiceProviderTest extends AbstractTestCase -{ - use ServiceProviderTrait; - - public function testMetricRepositoryIsInjectable() - { - $this->assertIsInjectable(MetricRepository::class); - } -} diff --git a/tests/Providers/RouteServiceProviderTest.php b/tests/Providers/RouteServiceProviderTest.php deleted file mode 100644 index 1a6e4aa0..00000000 --- a/tests/Providers/RouteServiceProviderTest.php +++ /dev/null @@ -1,217 +0,0 @@ - - */ -class RouteServiceProviderTest extends AbstractTestCase -{ - use ServiceProviderTrait; - - /** - * The login routes should always be available regardless of the always authenticate setting. - */ - public function testWhenAlwaysAuthenticateIsEnabledLoginRoutesAreWhiteListed() - { - $loginRoutes = [ - 'core::get:auth.login', - 'core::post:auth.login', - 'core::post:auth.two-factor', - 'core::get:auth.logout', - 'core::get:signup.invite', - 'core::post:signup.invite', - ]; - - $this->assertRoutesDontHaveAuthMiddleware($loginRoutes, $this->bootRouter(true)); - } - - /** - * The setup routes should always be available regardless of the always authenticate setting. - */ - public function testWhenAlwaysAuthenticateIsEnabledSetupRoutesAreWhiteListed() - { - $loginRoutes = [ - 'core::get:setup', - 'core::post:setup.step1', - 'core::post:setup.step2', - 'core::post:setup.step3', - ]; - - $this->assertRoutesDontHaveAuthMiddleware($loginRoutes, $this->bootRouter(true)); - } - - /** - * It's possible to retrieve the cachet version, status and ping endpoints regardless of the - * always authenticate setting. - */ - public function testWhenAlwaysAuthenticateIsEnabledApiSystemRoutesAreWhiteListed() - { - $routeActions = [ - 'CachetHQ\Cachet\Http\Controllers\Api\GeneralController@ping', - 'CachetHQ\Cachet\Http\Controllers\Api\GeneralController@version', - 'CachetHQ\Cachet\Http\Controllers\Api\GeneralController@status', - ]; - - $router = $this->bootRouter(true); - - foreach ($routeActions as $routeAction) { - $route = $router->getRoutes()->getByAction($routeAction); - $this->assertInstanceOf(Route::class, $route); - - $middleware = $route->gatherMiddleware(); - $this->assertFalse(in_array('auth.api:true', $middleware, true)); - } - } - - /** - * When using always authenticate, normal graceful api routes will require full authentication. - */ - public function testWhenAlwaysAuthenticateIsEnabledApiRoutesAreHardAuthenticated() - { - $routeActions = [ - 'CachetHQ\Cachet\Http\Controllers\Api\ComponentController@index', - 'CachetHQ\Cachet\Http\Controllers\Api\ComponentGroupController@index', - 'CachetHQ\Cachet\Http\Controllers\Api\ComponentGroupController@show', - 'CachetHQ\Cachet\Http\Controllers\Api\ComponentController@show', - 'CachetHQ\Cachet\Http\Controllers\Api\IncidentController@index', - 'CachetHQ\Cachet\Http\Controllers\Api\IncidentController@show', - 'CachetHQ\Cachet\Http\Controllers\Api\IncidentUpdateController@index', - 'CachetHQ\Cachet\Http\Controllers\Api\IncidentUpdateController@show', - 'CachetHQ\Cachet\Http\Controllers\Api\MetricController@index', - 'CachetHQ\Cachet\Http\Controllers\Api\MetricController@show', - 'CachetHQ\Cachet\Http\Controllers\Api\MetricPointController@index', - 'CachetHQ\Cachet\Http\Controllers\Api\ScheduleController@index', - 'CachetHQ\Cachet\Http\Controllers\Api\ScheduleController@show', - ]; - - $router = $this->bootRouter(true); - - foreach ($routeActions as $routeAction) { - $route = $router->getRoutes()->getByAction($routeAction); - $this->assertInstanceOf(Route::class, $route); - - $middleware = $route->gatherMiddleware(); - $this->assertTrue(in_array('auth.api:true', $middleware, true)); - } - } - - /** - * When enabling the always authenticate setting, the core frontpage routes require authentication. - */ - public function testWhenAlwaysAuthenticateIsEnabledAllNormalRoutesAreAuthenticated() - { - $namedRoutes = [ - 'core::get:status-page', - 'core::get:incident', - 'core::get:schedule', - 'core::get:metric', - 'core::get:component_shield', - 'core::get:subscribe', - 'core::post:subscribe', - 'core::get:subscribe.manage', - 'core::post:subscribe.manage', - 'core::get:subscribe.verify', - 'core::get:subscribe.unsubscribe', - ]; - - $this->assertRoutesHaveAuthMiddleware($namedRoutes, $this->bootRouter(true)); - } - - /** - * This test asserts that when always authenticate is disabled, you are allowed to visit the frontpage - * routes without enforced authentication. - */ - public function testWhenAlwaysAuthenticateIsDisabledAllNormalRoutesAreUnauthenticated() - { - $namedRoutes = [ - 'core::get:status-page', - 'core::get:incident', - 'core::get:schedule', - 'core::get:metric', - 'core::get:component_shield', - 'core::get:subscribe', - 'core::post:subscribe', - 'core::get:subscribe.manage', - 'core::post:subscribe.manage', - 'core::get:subscribe.verify', - 'core::get:subscribe.unsubscribe', - ]; - - $this->assertRoutesDontHaveAuthMiddleware($namedRoutes, $this->bootRouter(false)); - } - - /** - * A helper method that will execute the RouteProvider's map function and return a clean router. - * - * @param bool $alwaysAuthenticate - * - * @return Router - */ - private function bootRouter($alwaysAuthenticate) - { - $this->app->config->set('setting.always_authenticate', $alwaysAuthenticate); - $router = $this->app->make(Router::class); - $router->setRoutes(new RouteCollection()); - - $routeServiceProvider = new RouteServiceProvider($this->app); - $routeServiceProvider->map($router); - - return $router; - } - - /** - * Assertion helper that asserts if the authentication middleware has not been injected onto - * the collection of named routes. - * - * @param array $routeNames - * @param Router $router - */ - private function assertRoutesDontHaveAuthMiddleware(array $routeNames, Router $router) - { - foreach ($routeNames as $routeName) { - $route = $router->getRoutes()->getByName($routeName); - $this->assertInstanceOf(Route::class, $route); - - $middleware = $route->gatherMiddleware(); - $this->assertFalse(in_array(Authenticate::class, $middleware, true)); - } - } - - /** - * Assertion helper that asserts if the authentication middleware has been injected onto - * the collection of named routes. - * - * @param array $routeNames - * @param Router $router - */ - private function assertRoutesHaveAuthMiddleware(array $routeNames, Router $router) - { - foreach ($routeNames as $routeName) { - $route = $router->getRoutes()->getByName($routeName); - $this->assertInstanceOf(Route::class, $route); - - $middleware = $route->gatherMiddleware(); - $this->assertTrue(in_array(Authenticate::class, $middleware, true)); - } - } -} diff --git a/tests/SmokeTest.php b/tests/SmokeTest.php deleted file mode 100644 index d3f91bdd..00000000 --- a/tests/SmokeTest.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ -class SmokeTest extends AbstractTestCase -{ - use DatabaseMigrations; - - public function test_setup_page() - { - $this->get('/setup')->assertStatus(200); - } - - public function test_status_page() - { - $this->configureApp(); - - $this->get('/')->assertStatus(200); - } - - public function test_single_component_page() - { - $this->configureApp(); - - $this->get('/incidents/1')->assertStatus(200); - } - - public function test_dashboard_auth_page() - { - $this->configureApp(); - - $this->get('/auth/login')->assertStatus(200); - } - - protected function configureApp() - { - factory(Setting::class)->create([ - 'name' => 'app_name', - 'value' => 'Cachet Test Suite', - ]); - - $component = factory(Component::class)->create(); - - $incident = factory(Incident::class)->create([ - 'component_id' => $component->id, - ]); - } -} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 00000000..2932d4a6 --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,10 @@ + - */ -class TestListener implements PHPUnitTestListener -{ - /** - * An error occurred. - */ - public function addError(Test $test, \Throwable $t, float $time): void - { - // - } - - /** - * A warning occurred. - */ - public function addWarning(Test $test, Warning $e, float $time): void - { - // - } - - /** - * A failure occurred. - */ - public function addFailure(Test $test, AssertionFailedError $e, float $time): void - { - // - } - - /** - * Incomplete test. - */ - public function addIncompleteTest(Test $test, \Throwable $t, float $time): void - { - // - } - - /** - * Risky test. - */ - public function addRiskyTest(Test $test, \Throwable $t, float $time): void - { - // - } - - /** - * Skipped test. - */ - public function addSkippedTest(Test $test, \Throwable $t, float $time): void - { - // - } - - /** - * A test suite started. - */ - public function startTestSuite(TestSuite $suite): void - { - // - } - - /** - * A test suite ended. - */ - public function endTestSuite(TestSuite $suite): void - { - if ($suite->getName() !== 'Cachet Test Suite') { - return; - } - - foreach (glob(__DIR__.'/../bootstrap/cache{,t}/*.php', GLOB_BRACE) as $file) { - unlink($file); - } - } - - /** - * A test started. - */ - public function startTest(Test $test): void - { - // - } - - /** - * A test ended. - */ - public function endTest(Test $test, float $time): void - { - // - } -} diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php new file mode 100644 index 00000000..44a4f337 --- /dev/null +++ b/tests/Unit/ExampleTest.php @@ -0,0 +1,5 @@ +toBeTrue(); +}); diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000..421b5695 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + ], +}); diff --git a/webpack.mix.js b/webpack.mix.js deleted file mode 100644 index fa868160..00000000 --- a/webpack.mix.js +++ /dev/null @@ -1,45 +0,0 @@ -let mix = require('laravel-mix'); - -require('laravel-mix-purgecss') - -/* - |-------------------------------------------------------------------------- - | Mix Asset Management - |-------------------------------------------------------------------------- - | - | Mix provides a clean, fluent API for defining some Webpack build steps - | for your Laravel application. By default, we are compiling the Sass - | file for the application as well as bundling up all the JS files. - | - */ - -mix - .copyDirectory('node_modules/ionicons/fonts', 'public/fonts') - .sass('resources/assets/sass/dashboard.scss', 'public/dist/css/dashboard') - .sass('resources/assets/sass/app.scss', 'public/dist/css') - .purgeCss() - .options({ - processCssUrls: false - }) - .js('resources/assets/js/app.js', 'public/dist/js').extract(['vue', 'chart.js']) - .scripts([ - 'public/dist/js/app.js', - 'node_modules/es5-shim/es5-shim.js', - 'node_modules/es5-shim/es5-sham.js', - 'node_modules/jquery/dist/jquery.min.js', - 'node_modules/bootstrap-sass/assets/javascripts/bootstrap.min.js', - 'node_modules/moment/min/moment-with-locales.min.js', - 'node_modules/lodash/lodash.min.js', - 'node_modules/messenger/build/js/messenger.min.js', - 'node_modules/sortablejs/Sortable.min.js', - 'node_modules/jquery-minicolors/jquery.minicolors.min.js', - 'node_modules/jquery-sparkline/jquery.sparkline.min.js', - 'node_modules/sweetalert2/dist/sweetalert2.min.js', - 'node_modules/livestamp/livestamp.js', - 'node_modules/jquery-serializeobject/jquery.serializeObject.js', - 'resources/assets/js/cachet.js', - ], 'public/dist/js/all.js') - -if (mix.inProduction()) { - mix.version(); -} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index b4de19ff..00000000 --- a/yarn.lock +++ /dev/null @@ -1,7880 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.2.0": - "integrity" "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==" - "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.22.13": - "integrity" "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" - "version" "7.22.13" - dependencies: - "@babel/highlight" "^7.22.13" - "chalk" "^2.4.2" - -"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": - "integrity" "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==" - "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz" - "version" "7.23.2" - -"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.0.0-beta.49", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.2.0", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0": - "integrity" "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==" - "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz" - "version" "7.23.2" - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helpers" "^7.23.2" - "@babel/parser" "^7.23.0" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" - "convert-source-map" "^2.0.0" - "debug" "^4.1.0" - "gensync" "^1.0.0-beta.2" - "json5" "^2.2.3" - "semver" "^6.3.1" - -"@babel/generator@^7.23.0": - "integrity" "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/types" "^7.23.0" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - "jsesc" "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.22.5": - "integrity" "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - "integrity" "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==" - "resolved" "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": - "integrity" "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==" - "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.15" - "browserslist" "^4.21.9" - "lru-cache" "^5.1.1" - "semver" "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": - "integrity" "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "semver" "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": - "integrity" "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==" - "resolved" "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "regexpu-core" "^5.3.1" - "semver" "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.4.3": - "integrity" "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==" - "resolved" "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz" - "version" "0.4.3" - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - "debug" "^4.1.1" - "lodash.debounce" "^4.0.8" - "resolve" "^1.14.2" - -"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": - "integrity" "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" - "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" - "version" "7.22.20" - -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": - "integrity" "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - "integrity" "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==" - "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-member-expression-to-functions@^7.22.15": - "integrity" "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==" - "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/types" "^7.23.0" - -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": - "integrity" "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": - "integrity" "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-optimise-call-expression@^7.22.5": - "integrity" "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==" - "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - "integrity" "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" - "version" "7.22.5" - -"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": - "integrity" "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==" - "resolved" "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz" - "version" "7.22.20" - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - "integrity" "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==" - "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz" - "version" "7.22.20" - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.22.15" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5": - "integrity" "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==" - "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - "integrity" "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==" - "resolved" "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - "integrity" "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz" - "version" "7.22.6" - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.22.5": - "integrity" "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" - "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" - "version" "7.22.5" - -"@babel/helper-validator-identifier@^7.22.20": - "integrity" "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" - "version" "7.22.20" - -"@babel/helper-validator-option@^7.22.15": - "integrity" "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz" - "version" "7.22.15" - -"@babel/helper-wrap-function@^7.22.20": - "integrity" "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==" - "resolved" "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz" - "version" "7.22.20" - dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" - -"@babel/helpers@^7.23.2": - "integrity" "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==" - "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz" - "version" "7.23.2" - dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" - -"@babel/highlight@^7.22.13": - "integrity" "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz" - "version" "7.22.20" - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - "chalk" "^2.4.2" - "js-tokens" "^4.0.0" - -"@babel/parser@^7.18.4", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": - "integrity" "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz" - "version" "7.23.0" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": - "integrity" "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": - "integrity" "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.15" - -"@babel/plugin-proposal-object-rest-spread@^7.2.0": - "integrity" "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" - "version" "7.20.7" - dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.7" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - "integrity" "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==" - "resolved" "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" - "version" "7.21.0-placeholder-for-preset-env.2" - -"@babel/plugin-syntax-async-generators@^7.8.4": - "integrity" "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - "version" "7.8.4" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - "integrity" "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" - "version" "7.12.13" - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - "integrity" "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": - "integrity" "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - "integrity" "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.22.5": - "integrity" "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-attributes@^7.22.5": - "integrity" "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-import-meta@^7.10.4": - "integrity" "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - "integrity" "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - "integrity" "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - "integrity" "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - "integrity" "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - "version" "7.10.4" - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - "integrity" "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - "integrity" "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - "version" "7.8.3" - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - "integrity" "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - "integrity" "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" - "version" "7.14.5" - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - "integrity" "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" - "version" "7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.22.5": - "integrity" "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-async-generator-functions@^7.23.2": - "integrity" "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz" - "version" "7.23.2" - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-transform-async-to-generator@^7.22.5": - "integrity" "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" - -"@babel/plugin-transform-block-scoped-functions@^7.22.5": - "integrity" "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-block-scoping@^7.23.0": - "integrity" "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-properties@^7.22.5": - "integrity" "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-class-static-block@^7.22.11": - "integrity" "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.11" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.22.15": - "integrity" "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" - "@babel/helper-split-export-declaration" "^7.22.6" - "globals" "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.22.5": - "integrity" "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/template" "^7.22.5" - -"@babel/plugin-transform-destructuring@^7.23.0": - "integrity" "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dotall-regex@^7.22.5": - "integrity" "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-duplicate-keys@^7.22.5": - "integrity" "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-dynamic-import@^7.22.11": - "integrity" "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.22.5": - "integrity" "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-export-namespace-from@^7.22.11": - "integrity" "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.22.15": - "integrity" "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-function-name@^7.22.5": - "integrity" "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-compilation-targets" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-json-strings@^7.22.11": - "integrity" "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-transform-literals@^7.22.5": - "integrity" "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-logical-assignment-operators@^7.22.11": - "integrity" "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.22.5": - "integrity" "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-amd@^7.23.0": - "integrity" "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-modules-commonjs@^7.23.0": - "integrity" "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - -"@babel/plugin-transform-modules-systemjs@^7.23.0": - "integrity" "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.0" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/plugin-transform-modules-umd@^7.22.5": - "integrity" "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-module-transforms" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - "integrity" "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-new-target@^7.22.5": - "integrity" "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": - "integrity" "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-transform-numeric-separator@^7.22.11": - "integrity" "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-transform-object-rest-spread@^7.22.15": - "integrity" "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.15" - -"@babel/plugin-transform-object-super@^7.22.5": - "integrity" "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" - -"@babel/plugin-transform-optional-catch-binding@^7.22.11": - "integrity" "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": - "integrity" "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.22.15": - "integrity" "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-methods@^7.22.5": - "integrity" "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-private-property-in-object@^7.22.11": - "integrity" "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz" - "version" "7.22.11" - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.11" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-transform-property-literals@^7.22.5": - "integrity" "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-regenerator@^7.22.10": - "integrity" "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz" - "version" "7.22.10" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "regenerator-transform" "^0.15.2" - -"@babel/plugin-transform-reserved-words@^7.22.5": - "integrity" "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-runtime@^7.2.0": - "integrity" "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz" - "version" "7.23.2" - dependencies: - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "babel-plugin-polyfill-corejs2" "^0.4.6" - "babel-plugin-polyfill-corejs3" "^0.8.5" - "babel-plugin-polyfill-regenerator" "^0.5.3" - "semver" "^6.3.1" - -"@babel/plugin-transform-shorthand-properties@^7.22.5": - "integrity" "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-spread@^7.22.5": - "integrity" "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - -"@babel/plugin-transform-sticky-regex@^7.22.5": - "integrity" "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-template-literals@^7.22.5": - "integrity" "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-typeof-symbol@^7.22.5": - "integrity" "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-escapes@^7.22.10": - "integrity" "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz" - "version" "7.22.10" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-property-regex@^7.22.5": - "integrity" "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-regex@^7.22.5": - "integrity" "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-unicode-sets-regex@^7.22.5": - "integrity" "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==" - "resolved" "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz" - "version" "7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/preset-env@^7.2.0": - "integrity" "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==" - "resolved" "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz" - "version" "7.23.2" - dependencies: - "@babel/compat-data" "^7.23.2" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.15" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-syntax-import-attributes" "^7.22.5" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.22.5" - "@babel/plugin-transform-async-generator-functions" "^7.23.2" - "@babel/plugin-transform-async-to-generator" "^7.22.5" - "@babel/plugin-transform-block-scoped-functions" "^7.22.5" - "@babel/plugin-transform-block-scoping" "^7.23.0" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-class-static-block" "^7.22.11" - "@babel/plugin-transform-classes" "^7.22.15" - "@babel/plugin-transform-computed-properties" "^7.22.5" - "@babel/plugin-transform-destructuring" "^7.23.0" - "@babel/plugin-transform-dotall-regex" "^7.22.5" - "@babel/plugin-transform-duplicate-keys" "^7.22.5" - "@babel/plugin-transform-dynamic-import" "^7.22.11" - "@babel/plugin-transform-exponentiation-operator" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-for-of" "^7.22.15" - "@babel/plugin-transform-function-name" "^7.22.5" - "@babel/plugin-transform-json-strings" "^7.22.11" - "@babel/plugin-transform-literals" "^7.22.5" - "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" - "@babel/plugin-transform-member-expression-literals" "^7.22.5" - "@babel/plugin-transform-modules-amd" "^7.23.0" - "@babel/plugin-transform-modules-commonjs" "^7.23.0" - "@babel/plugin-transform-modules-systemjs" "^7.23.0" - "@babel/plugin-transform-modules-umd" "^7.22.5" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.22.5" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" - "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.15" - "@babel/plugin-transform-object-super" "^7.22.5" - "@babel/plugin-transform-optional-catch-binding" "^7.22.11" - "@babel/plugin-transform-optional-chaining" "^7.23.0" - "@babel/plugin-transform-parameters" "^7.22.15" - "@babel/plugin-transform-private-methods" "^7.22.5" - "@babel/plugin-transform-private-property-in-object" "^7.22.11" - "@babel/plugin-transform-property-literals" "^7.22.5" - "@babel/plugin-transform-regenerator" "^7.22.10" - "@babel/plugin-transform-reserved-words" "^7.22.5" - "@babel/plugin-transform-shorthand-properties" "^7.22.5" - "@babel/plugin-transform-spread" "^7.22.5" - "@babel/plugin-transform-sticky-regex" "^7.22.5" - "@babel/plugin-transform-template-literals" "^7.22.5" - "@babel/plugin-transform-typeof-symbol" "^7.22.5" - "@babel/plugin-transform-unicode-escapes" "^7.22.10" - "@babel/plugin-transform-unicode-property-regex" "^7.22.5" - "@babel/plugin-transform-unicode-regex" "^7.22.5" - "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" - "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.23.0" - "babel-plugin-polyfill-corejs2" "^0.4.6" - "babel-plugin-polyfill-corejs3" "^0.8.5" - "babel-plugin-polyfill-regenerator" "^0.5.3" - "core-js-compat" "^3.31.0" - "semver" "^6.3.1" - -"@babel/preset-modules@0.1.6-no-external-plugins": - "integrity" "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==" - "resolved" "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz" - "version" "0.1.6-no-external-plugins" - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - "esutils" "^2.0.2" - -"@babel/regjsgen@^0.8.0": - "integrity" "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" - "resolved" "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" - "version" "0.8.0" - -"@babel/runtime@^7.2.0", "@babel/runtime@^7.8.4": - "integrity" "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz" - "version" "7.23.2" - dependencies: - "regenerator-runtime" "^0.14.0" - -"@babel/template@^7.22.15", "@babel/template@^7.22.5": - "integrity" "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" - "version" "7.22.15" - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/traverse@^7.23.2": - "integrity" "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz" - "version" "7.23.2" - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.0" - "@babel/types" "^7.23.0" - "debug" "^4.1.0" - "globals" "^11.1.0" - -"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.4.4": - "integrity" "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz" - "version" "7.23.0" - dependencies: - "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.20" - "to-fast-properties" "^2.0.0" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - "integrity" "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==" - "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.1.0": - "integrity" "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" - "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" - "version" "3.1.1" - -"@jridgewell/set-array@^1.0.1": - "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - "version" "1.1.2" - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - "integrity" "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" - "version" "1.4.15" - -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - "integrity" "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==" - "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz" - "version" "0.3.20" - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@mrmlnc/readdir-enhanced@^2.2.1": - "integrity" "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==" - "resolved" "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "call-me-maybe" "^1.0.1" - "glob-to-regexp" "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - "integrity" "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz" - "version" "1.1.3" - -"@types/glob@^7.1.1": - "integrity" "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==" - "resolved" "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/json-schema@^7.0.5": - "integrity" "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz" - "version" "7.0.14" - -"@types/minimatch@*": - "integrity" "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==" - "resolved" "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" - "version" "5.1.2" - -"@types/node@*": - "integrity" "sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-20.8.9.tgz" - "version" "20.8.9" - dependencies: - "undici-types" "~5.26.4" - -"@types/q@^1.5.1": - "integrity" "sha512-HBPgtzp44867rkL+IzQ3560/E/BlobwCjeXsuKqogrcE99SKgZR4tvBBCuNJZMhUFMz26M7cjKWZg785lllwpA==" - "resolved" "https://registry.npmjs.org/@types/q/-/q-1.5.7.tgz" - "version" "1.5.7" - -"@vue/compiler-sfc@2.7.15": - "integrity" "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==" - "resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz" - "version" "2.7.15" - dependencies: - "@babel/parser" "^7.18.4" - "postcss" "^8.4.14" - "source-map" "^0.6.1" - -"@vue/component-compiler-utils@^3.1.0": - "integrity" "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==" - "resolved" "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "consolidate" "^0.15.1" - "hash-sum" "^1.0.2" - "lru-cache" "^4.1.2" - "merge-source-map" "^1.1.0" - "postcss" "^7.0.36" - "postcss-selector-parser" "^6.0.2" - "source-map" "~0.6.1" - "vue-template-es2015-compiler" "^1.9.0" - optionalDependencies: - "prettier" "^1.18.2 || ^2.0.0" - -"@webassemblyjs/ast@1.9.0": - "integrity" "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - "integrity" "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz" - "version" "1.9.0" - -"@webassemblyjs/helper-api-error@1.9.0": - "integrity" "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz" - "version" "1.9.0" - -"@webassemblyjs/helper-buffer@1.9.0": - "integrity" "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz" - "version" "1.9.0" - -"@webassemblyjs/helper-code-frame@1.9.0": - "integrity" "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - "integrity" "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz" - "version" "1.9.0" - -"@webassemblyjs/helper-module-context@1.9.0": - "integrity" "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - "integrity" "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz" - "version" "1.9.0" - -"@webassemblyjs/helper-wasm-section@1.9.0": - "integrity" "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - "integrity" "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - "integrity" "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - "integrity" "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz" - "version" "1.9.0" - -"@webassemblyjs/wasm-edit@1.9.0": - "integrity" "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - "integrity" "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - "integrity" "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - "integrity" "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - "integrity" "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - "integrity" "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==" - "resolved" "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz" - "version" "1.9.0" - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - "integrity" "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - "resolved" "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - "version" "1.2.0" - -"@xtuc/long@4.2.2": - "integrity" "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" - "resolved" "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - "version" "4.2.2" - -"accepts@~1.3.4", "accepts@~1.3.5", "accepts@~1.3.8": - "integrity" "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==" - "resolved" "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - "version" "1.3.8" - dependencies: - "mime-types" "~2.1.34" - "negotiator" "0.6.3" - -"acorn@^6.4.1": - "integrity" "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz" - "version" "6.4.2" - -"aggregate-error@^3.0.0": - "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" - "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "clean-stack" "^2.0.0" - "indent-string" "^4.0.0" - -"ajv-errors@^1.0.0": - "integrity" "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - "resolved" "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" - "version" "1.0.1" - -"ajv-keywords@^3.1.0", "ajv-keywords@^3.4.1", "ajv-keywords@^3.5.2": - "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - "version" "3.5.2" - -"ajv@^6.1.0", "ajv@^6.10.2", "ajv@^6.12.4", "ajv@^6.9.1", "ajv@>=5.0.0": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - dependencies: - "fast-deep-equal" "^3.1.1" - "fast-json-stable-stringify" "^2.0.0" - "json-schema-traverse" "^0.4.1" - "uri-js" "^4.2.2" - -"alphanum-sort@^1.0.0": - "integrity" "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==" - "resolved" "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" - "version" "1.0.2" - -"animate-sass@^0.8.2": - "integrity" "sha512-6sZ34dusqb1HdZLNpJUNaZc0CuuLgFI8SqlyaxbSSKE9zqfoNtOeO3IpVUCqvaSm/oMNH1VlEAsJlppjg+idKQ==" - "resolved" "https://registry.npmjs.org/animate-sass/-/animate-sass-0.8.2.tgz" - "version" "0.8.2" - -"ansi-colors@^3.0.0": - "integrity" "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz" - "version" "3.2.4" - -"ansi-html-community@0.0.8": - "integrity" "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - "resolved" "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" - "version" "0.0.8" - -"ansi-regex@^2.0.0": - "integrity" "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" - -"ansi-regex@^3.0.0": - "integrity" "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" - "version" "3.0.0" - -"ansi-regex@^4.1.0": - "integrity" "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz" - "version" "4.1.1" - -"ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-styles@^2.2.1": - "integrity" "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - "version" "2.2.1" - -"ansi-styles@^3.2.0", "ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.0.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"anymatch@^2.0.0": - "integrity" "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "micromatch" "^3.1.4" - "normalize-path" "^2.1.1" - -"anymatch@~3.1.2": - "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - "version" "3.1.3" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"aproba@^1.1.1": - "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" - "version" "1.2.0" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"arr-diff@^4.0.0": - "integrity" "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" - "version" "4.0.0" - -"arr-flatten@^1.1.0": - "integrity" "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - "resolved" "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - "version" "1.1.0" - -"arr-union@^3.1.0": - "integrity" "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - "resolved" "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" - "version" "3.1.0" - -"array-buffer-byte-length@^1.0.0": - "integrity" "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==" - "resolved" "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "is-array-buffer" "^3.0.1" - -"array-flatten@^2.1.0": - "integrity" "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" - "version" "2.1.2" - -"array-flatten@1.1.1": - "integrity" "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - "resolved" "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - "version" "1.1.1" - -"array-union@^1.0.1": - "integrity" "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "array-uniq" "^1.0.1" - -"array-uniq@^1.0.1": - "integrity" "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - "resolved" "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - "version" "1.0.3" - -"array-unique@^0.3.2": - "integrity" "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" - "version" "0.3.2" - -"array.prototype.reduce@^1.0.6": - "integrity" "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==" - "resolved" "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "es-array-method-boxes-properly" "^1.0.0" - "is-string" "^1.0.7" - -"arraybuffer.prototype.slice@^1.0.2": - "integrity" "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==" - "resolved" "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "array-buffer-byte-length" "^1.0.0" - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "get-intrinsic" "^1.2.1" - "is-array-buffer" "^3.0.2" - "is-shared-array-buffer" "^1.0.2" - -"arrify@^1.0.1": - "integrity" "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - "version" "1.0.1" - -"asap@~2.0.3": - "integrity" "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" - "version" "2.0.6" - -"asn1.js@^5.2.0": - "integrity" "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==" - "resolved" "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - "version" "5.4.1" - dependencies: - "bn.js" "^4.0.0" - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - "safer-buffer" "^2.1.0" - -"assert@^1.1.1": - "integrity" "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==" - "resolved" "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "object.assign" "^4.1.4" - "util" "^0.10.4" - -"assign-symbols@^1.0.0": - "integrity" "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - "resolved" "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" - "version" "1.0.0" - -"ast-types@0.9.6": - "integrity" "sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ==" - "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz" - "version" "0.9.6" - -"async-each@^1.0.1": - "integrity" "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" - "resolved" "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" - "version" "1.0.3" - -"async-limiter@~1.0.0": - "integrity" "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - "resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" - "version" "1.0.1" - -"async@^2.4.1", "async@^2.6.4": - "integrity" "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==" - "resolved" "https://registry.npmjs.org/async/-/async-2.6.4.tgz" - "version" "2.6.4" - dependencies: - "lodash" "^4.17.14" - -"atob@^2.1.1": - "integrity" "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - "resolved" "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - "version" "2.1.2" - -"autoprefixer@^9.4.2": - "integrity" "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==" - "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz" - "version" "9.8.8" - dependencies: - "browserslist" "^4.12.0" - "caniuse-lite" "^1.0.30001109" - "normalize-range" "^0.1.2" - "num2fraction" "^1.2.2" - "picocolors" "^0.2.1" - "postcss" "^7.0.32" - "postcss-value-parser" "^4.1.0" - -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" - -"axios@^0.19": - "integrity" "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz" - "version" "0.19.0" - dependencies: - "follow-redirects" "1.5.10" - "is-buffer" "^2.0.2" - -"babel-code-frame@^6.26.0": - "integrity" "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==" - "resolved" "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" - "version" "6.26.0" - dependencies: - "chalk" "^1.1.3" - "esutils" "^2.0.2" - "js-tokens" "^3.0.2" - -"babel-loader@^8.0.4": - "integrity" "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==" - "resolved" "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz" - "version" "8.3.0" - dependencies: - "find-cache-dir" "^3.3.1" - "loader-utils" "^2.0.0" - "make-dir" "^3.1.0" - "schema-utils" "^2.6.5" - -"babel-merge@^2.0.1": - "integrity" "sha512-puTQQxuzS+0JlMyVdfsTVaCgzqjBXKPMv7oUANpYcHFY+7IptWZ4PZDYX+qBxrRMtrriuBA44LkKpS99EJzqVA==" - "resolved" "https://registry.npmjs.org/babel-merge/-/babel-merge-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "@babel/core" "^7.0.0-beta.49" - "deepmerge" "^2.1.0" - "object.omit" "^3.0.0" - -"babel-plugin-polyfill-corejs2@^0.4.6": - "integrity" "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz" - "version" "0.4.6" - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.3" - "semver" "^6.3.1" - -"babel-plugin-polyfill-corejs3@^0.8.5": - "integrity" "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz" - "version" "0.8.6" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - "core-js-compat" "^3.33.1" - -"babel-plugin-polyfill-regenerator@^0.5.3": - "integrity" "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==" - "resolved" "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz" - "version" "0.5.3" - dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.3" - -"balanced-match@^1.0.0": - "integrity" "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" - "version" "1.0.0" - -"base@^0.11.1": - "integrity" "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==" - "resolved" "https://registry.npmjs.org/base/-/base-0.11.2.tgz" - "version" "0.11.2" - dependencies: - "cache-base" "^1.0.1" - "class-utils" "^0.3.5" - "component-emitter" "^1.2.1" - "define-property" "^1.0.0" - "isobject" "^3.0.1" - "mixin-deep" "^1.2.0" - "pascalcase" "^0.1.1" - -"base64-js@^1.0.2": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" - -"batch@0.6.1": - "integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - "resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" - "version" "0.6.1" - -"big.js@^5.2.2": - "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - "version" "5.2.2" - -"binary-extensions@^1.0.0": - "integrity" "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" - "version" "1.13.1" - -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" - -"bindings@^1.5.0": - "integrity" "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==" - "resolved" "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "file-uri-to-path" "1.0.0" - -"bluebird@^3.1.1", "bluebird@^3.5.5": - "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" - "version" "3.7.2" - -"bn.js@^4.0.0": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^4.1.0": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^5.0.0", "bn.js@^5.2.1": - "integrity" "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" - "version" "5.2.1" - -"body-parser@1.20.1": - "integrity" "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==" - "resolved" "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - "version" "1.20.1" - dependencies: - "bytes" "3.1.2" - "content-type" "~1.0.4" - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "on-finished" "2.4.1" - "qs" "6.11.0" - "raw-body" "2.5.1" - "type-is" "~1.6.18" - "unpipe" "1.0.0" - -"bonjour@^3.5.0": - "integrity" "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==" - "resolved" "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz" - "version" "3.5.0" - dependencies: - "array-flatten" "^2.1.0" - "deep-equal" "^1.0.1" - "dns-equal" "^1.0.0" - "dns-txt" "^2.0.2" - "multicast-dns" "^6.0.1" - "multicast-dns-service-types" "^1.1.0" - -"boolbase@^1.0.0", "boolbase@~1.0.0": - "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" - -"bootstrap-sass@^3.4.3": - "integrity" "sha512-vPgFnGMp1jWZZupOND65WS6mkR8rxhJxndT/AcMbqcq1hHMdkcH4sMPhznLzzoHOHkSCrd6J9F8pWBriPCKP2Q==" - "resolved" "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.4.3.tgz" - "version" "3.4.3" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"braces@^2.3.1", "braces@^2.3.2": - "integrity" "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==" - "resolved" "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" - "version" "2.3.2" - dependencies: - "arr-flatten" "^1.1.0" - "array-unique" "^0.3.2" - "extend-shallow" "^2.0.1" - "fill-range" "^4.0.0" - "isobject" "^3.0.1" - "repeat-element" "^1.1.2" - "snapdragon" "^0.8.1" - "snapdragon-node" "^2.0.1" - "split-string" "^3.0.2" - "to-regex" "^3.0.1" - -"braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"brorand@^1.0.1", "brorand@^1.1.0": - "integrity" "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" - -"browserify-aes@^1.0.0", "browserify-aes@^1.0.4": - "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" - "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "buffer-xor" "^1.0.3" - "cipher-base" "^1.0.0" - "create-hash" "^1.1.0" - "evp_bytestokey" "^1.0.3" - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"browserify-cipher@^1.0.0": - "integrity" "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==" - "resolved" "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "browserify-aes" "^1.0.4" - "browserify-des" "^1.0.0" - "evp_bytestokey" "^1.0.0" - -"browserify-des@^1.0.0": - "integrity" "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==" - "resolved" "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "cipher-base" "^1.0.1" - "des.js" "^1.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" - -"browserify-rsa@^4.0.0", "browserify-rsa@^4.1.0": - "integrity" "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==" - "resolved" "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "bn.js" "^5.0.0" - "randombytes" "^2.0.1" - -"browserify-sign@^4.0.0": - "integrity" "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==" - "resolved" "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz" - "version" "4.2.2" - dependencies: - "bn.js" "^5.2.1" - "browserify-rsa" "^4.1.0" - "create-hash" "^1.2.0" - "create-hmac" "^1.1.7" - "elliptic" "^6.5.4" - "inherits" "^2.0.4" - "parse-asn1" "^5.1.6" - "readable-stream" "^3.6.2" - "safe-buffer" "^5.2.1" - -"browserify-zlib@^0.2.0": - "integrity" "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==" - "resolved" "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "pako" "~1.0.5" - -"browserslist@^4.0.0", "browserslist@^4.12.0", "browserslist@^4.21.9", "browserslist@^4.22.1", "browserslist@>= 4.21.0": - "integrity" "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" - "version" "4.22.1" - dependencies: - "caniuse-lite" "^1.0.30001541" - "electron-to-chromium" "^1.4.535" - "node-releases" "^2.0.13" - "update-browserslist-db" "^1.0.13" - -"buffer-from@^1.0.0": - "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - "version" "1.1.2" - -"buffer-indexof@^1.0.0": - "integrity" "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" - "resolved" "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz" - "version" "1.1.1" - -"buffer-xor@^1.0.3": - "integrity" "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" - "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - "version" "1.0.3" - -"buffer@^4.3.0": - "integrity" "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" - "version" "4.9.2" - dependencies: - "base64-js" "^1.0.2" - "ieee754" "^1.1.4" - "isarray" "^1.0.0" - -"builtin-status-codes@^3.0.0": - "integrity" "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" - "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" - "version" "3.0.0" - -"bytes@3.0.0": - "integrity" "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" - "version" "3.0.0" - -"bytes@3.1.2": - "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" - "version" "3.1.2" - -"cacache@^12.0.2": - "integrity" "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz" - "version" "12.0.4" - dependencies: - "bluebird" "^3.5.5" - "chownr" "^1.1.1" - "figgy-pudding" "^3.5.1" - "glob" "^7.1.4" - "graceful-fs" "^4.1.15" - "infer-owner" "^1.0.3" - "lru-cache" "^5.1.1" - "mississippi" "^3.0.0" - "mkdirp" "^0.5.1" - "move-concurrently" "^1.0.1" - "promise-inflight" "^1.0.1" - "rimraf" "^2.6.3" - "ssri" "^6.0.1" - "unique-filename" "^1.1.1" - "y18n" "^4.0.0" - -"cacache@^13.0.1": - "integrity" "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==" - "resolved" "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz" - "version" "13.0.1" - dependencies: - "chownr" "^1.1.2" - "figgy-pudding" "^3.5.1" - "fs-minipass" "^2.0.0" - "glob" "^7.1.4" - "graceful-fs" "^4.2.2" - "infer-owner" "^1.0.4" - "lru-cache" "^5.1.1" - "minipass" "^3.0.0" - "minipass-collect" "^1.0.2" - "minipass-flush" "^1.0.5" - "minipass-pipeline" "^1.2.2" - "mkdirp" "^0.5.1" - "move-concurrently" "^1.0.1" - "p-map" "^3.0.0" - "promise-inflight" "^1.0.1" - "rimraf" "^2.7.1" - "ssri" "^7.0.0" - "unique-filename" "^1.1.1" - -"cache-base@^1.0.1": - "integrity" "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==" - "resolved" "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "collection-visit" "^1.0.0" - "component-emitter" "^1.2.1" - "get-value" "^2.0.6" - "has-value" "^1.0.0" - "isobject" "^3.0.1" - "set-value" "^2.0.0" - "to-object-path" "^0.3.0" - "union-value" "^1.0.0" - "unset-value" "^1.0.0" - -"call-bind@^1.0.0", "call-bind@^1.0.2", "call-bind@^1.0.4", "call-bind@^1.0.5": - "integrity" "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "function-bind" "^1.1.2" - "get-intrinsic" "^1.2.1" - "set-function-length" "^1.1.1" - -"call-me-maybe@^1.0.1": - "integrity" "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==" - "resolved" "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz" - "version" "1.0.2" - -"caller-callsite@^2.0.0": - "integrity" "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==" - "resolved" "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "callsites" "^2.0.0" - -"caller-path@^2.0.0": - "integrity" "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==" - "resolved" "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "caller-callsite" "^2.0.0" - -"callsites@^2.0.0": - "integrity" "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz" - "version" "2.0.0" - -"camel-case@3.0.x": - "integrity" "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==" - "resolved" "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "no-case" "^2.2.0" - "upper-case" "^1.1.1" - -"camelcase@^5.0.0": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"caniuse-api@^3.0.0": - "integrity" "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==" - "resolved" "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "browserslist" "^4.0.0" - "caniuse-lite" "^1.0.0" - "lodash.memoize" "^4.1.2" - "lodash.uniq" "^4.5.0" - -"caniuse-lite@^1.0.0", "caniuse-lite@^1.0.30001109", "caniuse-lite@^1.0.30001541": - "integrity" "sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz" - "version" "1.0.30001554" - -"chalk@^1.1.3": - "integrity" "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "ansi-styles" "^2.2.1" - "escape-string-regexp" "^1.0.2" - "has-ansi" "^2.0.0" - "strip-ansi" "^3.0.0" - "supports-color" "^2.0.0" - -"chalk@^2.4.1": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"charenc@~0.0.1": - "integrity" "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" - "resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" - "version" "0.0.2" - -"chart.js@^2.9.4": - "integrity" "sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A==" - "resolved" "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz" - "version" "2.9.4" - dependencies: - "chartjs-color" "^2.1.0" - "moment" "^2.10.2" - -"chartjs-color-string@^0.6.0": - "integrity" "sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A==" - "resolved" "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "color-name" "^1.0.0" - -"chartjs-color@^2.1.0": - "integrity" "sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==" - "resolved" "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "chartjs-color-string" "^0.6.0" - "color-convert" "^1.9.3" - -"chokidar@^2.0.3", "chokidar@^2.1.8": - "integrity" "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz" - "version" "2.1.8" - dependencies: - "anymatch" "^2.0.0" - "async-each" "^1.0.1" - "braces" "^2.3.2" - "glob-parent" "^3.1.0" - "inherits" "^2.0.3" - "is-binary-path" "^1.0.0" - "is-glob" "^4.0.0" - "normalize-path" "^3.0.0" - "path-is-absolute" "^1.0.0" - "readdirp" "^2.2.1" - "upath" "^1.1.1" - optionalDependencies: - "fsevents" "^1.2.7" - -"chokidar@^3.4.1": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" - dependencies: - "anymatch" "~3.1.2" - "braces" "~3.0.2" - "glob-parent" "~5.1.2" - "is-binary-path" "~2.1.0" - "is-glob" "~4.0.1" - "normalize-path" "~3.0.0" - "readdirp" "~3.6.0" - optionalDependencies: - "fsevents" "~2.3.2" - -"chokidar@>=3.0.0 <4.0.0": - "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - "version" "3.5.3" - dependencies: - "anymatch" "~3.1.2" - "braces" "~3.0.2" - "glob-parent" "~5.1.2" - "is-binary-path" "~2.1.0" - "is-glob" "~4.0.1" - "normalize-path" "~3.0.0" - "readdirp" "~3.6.0" - optionalDependencies: - "fsevents" "~2.3.2" - -"chownr@^1.1.1", "chownr@^1.1.2": - "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" - "version" "1.1.4" - -"chrome-trace-event@^1.0.2": - "integrity" "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - "resolved" "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - "version" "1.0.3" - -"cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": - "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" - "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"class-utils@^0.3.5": - "integrity" "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==" - "resolved" "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" - "version" "0.3.6" - dependencies: - "arr-union" "^3.1.0" - "define-property" "^0.2.5" - "isobject" "^3.0.0" - "static-extend" "^0.1.1" - -"clean-css@^4.1.3", "clean-css@4.2.x": - "integrity" "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==" - "resolved" "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz" - "version" "4.2.4" - dependencies: - "source-map" "~0.6.0" - -"clean-stack@^2.0.0": - "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" - "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" - "version" "2.2.0" - -"cliui@^4.0.0": - "integrity" "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "string-width" "^2.1.1" - "strip-ansi" "^4.0.0" - "wrap-ansi" "^2.0.0" - -"cliui@^5.0.0": - "integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "string-width" "^3.1.0" - "strip-ansi" "^5.2.0" - "wrap-ansi" "^5.1.0" - -"cliui@^6.0.0": - "integrity" "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.0" - "wrap-ansi" "^6.2.0" - -"clone-deep@^4.0.1": - "integrity" "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==" - "resolved" "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "is-plain-object" "^2.0.4" - "kind-of" "^6.0.2" - "shallow-clone" "^3.0.0" - -"coa@^2.0.2": - "integrity" "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==" - "resolved" "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "@types/q" "^1.5.1" - "chalk" "^2.4.1" - "q" "^1.1.2" - -"code-point-at@^1.0.0": - "integrity" "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" - "version" "1.1.0" - -"collect.js@^4.12.8": - "integrity" "sha512-jd97xWPKgHn6uvK31V6zcyPd40lUJd7gpYxbN2VOVxGWO4tyvS9Li4EpsFjXepGTo2tYcOTC4a8YsbQXMJ4XUw==" - "resolved" "https://registry.npmjs.org/collect.js/-/collect.js-4.36.1.tgz" - "version" "4.36.1" - -"collection-visit@^1.0.0": - "integrity" "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=" - "resolved" "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "map-visit" "^1.0.0" - "object-visit" "^1.0.0" - -"color-convert@^1.9.0", "color-convert@^1.9.3": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@^1.0.0", "color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"color-string@^1.6.0": - "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==" - "resolved" "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz" - "version" "1.9.1" - dependencies: - "color-name" "^1.0.0" - "simple-swizzle" "^0.2.2" - -"color@^3.0.0": - "integrity" "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==" - "resolved" "https://registry.npmjs.org/color/-/color-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.3" - "color-string" "^1.6.0" - -"commander@^2.19.0", "commander@^2.20.0", "commander@^2.9.0": - "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - "version" "2.20.3" - -"commander@~2.19.0": - "integrity" "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz" - "version" "2.19.0" - -"commander@2.17.x": - "integrity" "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz" - "version" "2.17.1" - -"commondir@^1.0.1": - "integrity" "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - "version" "1.0.1" - -"component-emitter@^1.2.1": - "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - "version" "1.3.0" - -"compressible@~2.0.16": - "integrity" "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==" - "resolved" "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" - "version" "2.0.18" - dependencies: - "mime-db" ">= 1.43.0 < 2" - -"compression@^1.7.4": - "integrity" "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==" - "resolved" "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" - "version" "1.7.4" - dependencies: - "accepts" "~1.3.5" - "bytes" "3.0.0" - "compressible" "~2.0.16" - "debug" "2.6.9" - "on-headers" "~1.0.2" - "safe-buffer" "5.1.2" - "vary" "~1.1.2" - -"concat-map@0.0.1": - "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"concat-stream@^1.5.0": - "integrity" "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==" - "resolved" "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" - "version" "1.6.2" - dependencies: - "buffer-from" "^1.0.0" - "inherits" "^2.0.3" - "readable-stream" "^2.2.2" - "typedarray" "^0.0.6" - -"concat@^1.0.3": - "integrity" "sha512-f/ZaH1aLe64qHgTILdldbvyfGiGF4uzeo9IuXUloIOLQzFmIPloy9QbZadNsuVv0j5qbKQvQb/H/UYf2UsKTpw==" - "resolved" "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "commander" "^2.9.0" - -"connect-history-api-fallback@^1.6.0": - "integrity" "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==" - "resolved" "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz" - "version" "1.6.0" - -"console-browserify@^1.1.0": - "integrity" "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - "resolved" "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" - "version" "1.2.0" - -"consolidate@^0.15.1": - "integrity" "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==" - "resolved" "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz" - "version" "0.15.1" - dependencies: - "bluebird" "^3.1.1" - -"constants-browserify@^1.0.0": - "integrity" "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" - "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" - "version" "1.0.0" - -"content-disposition@0.5.4": - "integrity" "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - "version" "0.5.4" - dependencies: - "safe-buffer" "5.2.1" - -"content-type@~1.0.4": - "integrity" "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - "resolved" "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" - "version" "1.0.5" - -"convert-source-map@^2.0.0": - "integrity" "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" - "version" "2.0.0" - -"cookie-signature@1.0.6": - "integrity" "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - "resolved" "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - "version" "1.0.6" - -"cookie@0.5.0": - "integrity" "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - "resolved" "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - "version" "0.5.0" - -"copy-concurrently@^1.0.0": - "integrity" "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==" - "resolved" "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "aproba" "^1.1.1" - "fs-write-stream-atomic" "^1.0.8" - "iferr" "^0.1.5" - "mkdirp" "^0.5.1" - "rimraf" "^2.5.4" - "run-queue" "^1.0.0" - -"copy-descriptor@^0.1.0": - "integrity" "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - "resolved" "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" - "version" "0.1.1" - -"core-js-compat@^3.31.0", "core-js-compat@^3.33.1": - "integrity" "sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==" - "resolved" "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.1.tgz" - "version" "3.33.1" - dependencies: - "browserslist" "^4.22.1" - -"core-util-is@~1.0.0": - "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - "version" "1.0.2" - -"cosmiconfig@^5.0.0": - "integrity" "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz" - "version" "5.2.1" - dependencies: - "import-fresh" "^2.0.0" - "is-directory" "^0.3.1" - "js-yaml" "^3.13.1" - "parse-json" "^4.0.0" - -"create-ecdh@^4.0.0": - "integrity" "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==" - "resolved" "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" - "version" "4.0.4" - dependencies: - "bn.js" "^4.1.0" - "elliptic" "^6.5.3" - -"create-hash@^1.1.0", "create-hash@^1.1.2", "create-hash@^1.2.0": - "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" - "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "cipher-base" "^1.0.1" - "inherits" "^2.0.1" - "md5.js" "^1.3.4" - "ripemd160" "^2.0.1" - "sha.js" "^2.4.0" - -"create-hmac@^1.1.0", "create-hmac@^1.1.4", "create-hmac@^1.1.7": - "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" - "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "cipher-base" "^1.0.3" - "create-hash" "^1.1.0" - "inherits" "^2.0.1" - "ripemd160" "^2.0.0" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" - -"cross-env@^5.1": - "integrity" "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==" - "resolved" "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "cross-spawn" "^6.0.5" - "is-windows" "^1.0.0" - -"cross-spawn@^6.0.0", "cross-spawn@^6.0.5": - "integrity" "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - "version" "6.0.5" - dependencies: - "nice-try" "^1.0.4" - "path-key" "^2.0.1" - "semver" "^5.5.0" - "shebang-command" "^1.2.0" - "which" "^1.2.9" - -"crypt@~0.0.1": - "integrity" "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" - "resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" - "version" "0.0.2" - -"crypto-browserify@^3.11.0": - "integrity" "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==" - "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" - "version" "3.12.0" - dependencies: - "browserify-cipher" "^1.0.0" - "browserify-sign" "^4.0.0" - "create-ecdh" "^4.0.0" - "create-hash" "^1.1.0" - "create-hmac" "^1.1.0" - "diffie-hellman" "^5.0.0" - "inherits" "^2.0.1" - "pbkdf2" "^3.0.3" - "public-encrypt" "^4.0.0" - "randombytes" "^2.0.0" - "randomfill" "^1.0.3" - -"css-color-names@^0.0.4", "css-color-names@0.0.4": - "integrity" "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==" - "resolved" "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz" - "version" "0.0.4" - -"css-declaration-sorter@^4.0.1": - "integrity" "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==" - "resolved" "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.1" - "timsort" "^0.3.0" - -"css-loader@*", "css-loader@^1.0.1": - "integrity" "sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw==" - "resolved" "https://registry.npmjs.org/css-loader/-/css-loader-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "babel-code-frame" "^6.26.0" - "css-selector-tokenizer" "^0.7.0" - "icss-utils" "^2.1.0" - "loader-utils" "^1.0.2" - "lodash" "^4.17.11" - "postcss" "^6.0.23" - "postcss-modules-extract-imports" "^1.2.0" - "postcss-modules-local-by-default" "^1.2.0" - "postcss-modules-scope" "^1.1.0" - "postcss-modules-values" "^1.3.0" - "postcss-value-parser" "^3.3.0" - "source-list-map" "^2.0.0" - -"css-select-base-adapter@^0.1.1": - "integrity" "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - "resolved" "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" - "version" "0.1.1" - -"css-select@^2.0.0": - "integrity" "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^3.2.1" - "domutils" "^1.7.0" - "nth-check" "^1.0.2" - -"css-selector-tokenizer@^0.7.0": - "integrity" "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==" - "resolved" "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz" - "version" "0.7.3" - dependencies: - "cssesc" "^3.0.0" - "fastparse" "^1.1.2" - -"css-tree@^1.1.2": - "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "mdn-data" "2.0.14" - "source-map" "^0.6.1" - -"css-tree@1.0.0-alpha.37": - "integrity" "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" - "version" "1.0.0-alpha.37" - dependencies: - "mdn-data" "2.0.4" - "source-map" "^0.6.1" - -"css-what@^3.2.1": - "integrity" "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" - "version" "3.4.2" - -"cssesc@^3.0.0": - "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - "version" "3.0.0" - -"cssnano-preset-default@^4.0.8": - "integrity" "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==" - "resolved" "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz" - "version" "4.0.8" - dependencies: - "css-declaration-sorter" "^4.0.1" - "cssnano-util-raw-cache" "^4.0.1" - "postcss" "^7.0.0" - "postcss-calc" "^7.0.1" - "postcss-colormin" "^4.0.3" - "postcss-convert-values" "^4.0.1" - "postcss-discard-comments" "^4.0.2" - "postcss-discard-duplicates" "^4.0.2" - "postcss-discard-empty" "^4.0.1" - "postcss-discard-overridden" "^4.0.1" - "postcss-merge-longhand" "^4.0.11" - "postcss-merge-rules" "^4.0.3" - "postcss-minify-font-values" "^4.0.2" - "postcss-minify-gradients" "^4.0.2" - "postcss-minify-params" "^4.0.2" - "postcss-minify-selectors" "^4.0.2" - "postcss-normalize-charset" "^4.0.1" - "postcss-normalize-display-values" "^4.0.2" - "postcss-normalize-positions" "^4.0.2" - "postcss-normalize-repeat-style" "^4.0.2" - "postcss-normalize-string" "^4.0.2" - "postcss-normalize-timing-functions" "^4.0.2" - "postcss-normalize-unicode" "^4.0.1" - "postcss-normalize-url" "^4.0.1" - "postcss-normalize-whitespace" "^4.0.2" - "postcss-ordered-values" "^4.1.2" - "postcss-reduce-initial" "^4.0.3" - "postcss-reduce-transforms" "^4.0.2" - "postcss-svgo" "^4.0.3" - "postcss-unique-selectors" "^4.0.1" - -"cssnano-util-get-arguments@^4.0.0": - "integrity" "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==" - "resolved" "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz" - "version" "4.0.0" - -"cssnano-util-get-match@^4.0.0": - "integrity" "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==" - "resolved" "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz" - "version" "4.0.0" - -"cssnano-util-raw-cache@^4.0.1": - "integrity" "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==" - "resolved" "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - -"cssnano-util-same-parent@^4.0.0": - "integrity" "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" - "resolved" "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz" - "version" "4.0.1" - -"cssnano@^4.1.10": - "integrity" "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==" - "resolved" "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz" - "version" "4.1.11" - dependencies: - "cosmiconfig" "^5.0.0" - "cssnano-preset-default" "^4.0.8" - "is-resolvable" "^1.0.0" - "postcss" "^7.0.0" - -"csso@^4.0.2": - "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" - "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "css-tree" "^1.1.2" - -"csstype@^3.1.0": - "integrity" "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" - "version" "3.1.2" - -"cyclist@^1.0.1": - "integrity" "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==" - "resolved" "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz" - "version" "1.0.2" - -"de-indent@^1.0.2": - "integrity" "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=" - "resolved" "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" - "version" "1.0.2" - -"debug@^2.2.0", "debug@^2.3.3", "debug@2.6.9": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^3.2.7": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" - dependencies: - "ms" "^2.1.1" - -"debug@^4.1.0": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"debug@^4.1.1": - "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "ms" "2.1.2" - -"debug@=3.1.0": - "integrity" "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "ms" "2.0.0" - -"decamelize@^1.2.0": - "integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - "version" "1.2.0" - -"decode-uri-component@^0.2.0": - "integrity" "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - "version" "0.2.0" - -"deep-equal@^1.0.1": - "integrity" "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==" - "resolved" "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "is-arguments" "^1.0.4" - "is-date-object" "^1.0.1" - "is-regex" "^1.0.4" - "object-is" "^1.0.1" - "object-keys" "^1.1.1" - "regexp.prototype.flags" "^1.2.0" - -"deepmerge@^2.1.0": - "integrity" "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz" - "version" "2.2.1" - -"default-gateway@^4.2.0": - "integrity" "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==" - "resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "execa" "^1.0.0" - "ip-regex" "^2.1.0" - -"define-data-property@^1.0.1", "define-data-property@^1.1.1": - "integrity" "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==" - "resolved" "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "get-intrinsic" "^1.2.1" - "gopd" "^1.0.1" - "has-property-descriptors" "^1.0.0" - -"define-properties@^1.1.3", "define-properties@^1.1.4", "define-properties@^1.2.0": - "integrity" "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "define-data-property" "^1.0.1" - "has-property-descriptors" "^1.0.0" - "object-keys" "^1.1.1" - -"define-property@^0.2.5": - "integrity" "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" - "version" "0.2.5" - dependencies: - "is-descriptor" "^0.1.0" - -"define-property@^1.0.0": - "integrity" "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-descriptor" "^1.0.0" - -"define-property@^2.0.2": - "integrity" "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "is-descriptor" "^1.0.2" - "isobject" "^3.0.1" - -"del@^4.1.1": - "integrity" "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==" - "resolved" "https://registry.npmjs.org/del/-/del-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "@types/glob" "^7.1.1" - "globby" "^6.1.0" - "is-path-cwd" "^2.0.0" - "is-path-in-cwd" "^2.0.0" - "p-map" "^2.0.0" - "pify" "^4.0.1" - "rimraf" "^2.6.3" - -"depd@~1.1.2": - "integrity" "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"depd@2.0.0": - "integrity" "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - "resolved" "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" - "version" "2.0.0" - -"des.js@^1.0.0": - "integrity" "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==" - "resolved" "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - -"destroy@1.2.0": - "integrity" "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - "resolved" "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - "version" "1.2.0" - -"detect-file@^1.0.0": - "integrity" "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" - "resolved" "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz" - "version" "1.0.0" - -"detect-node@^2.0.4": - "integrity" "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - "resolved" "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" - "version" "2.1.0" - -"diffie-hellman@^5.0.0": - "integrity" "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==" - "resolved" "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" - "version" "5.0.3" - dependencies: - "bn.js" "^4.1.0" - "miller-rabin" "^4.0.0" - "randombytes" "^2.0.0" - -"dir-glob@2.0.0": - "integrity" "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "arrify" "^1.0.1" - "path-type" "^3.0.0" - -"dns-equal@^1.0.0": - "integrity" "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - "resolved" "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" - "version" "1.0.0" - -"dns-packet@^1.3.1": - "integrity" "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==" - "resolved" "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz" - "version" "1.3.4" - dependencies: - "ip" "^1.1.0" - "safe-buffer" "^5.0.1" - -"dns-txt@^2.0.2": - "integrity" "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==" - "resolved" "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "buffer-indexof" "^1.0.0" - -"dom-serializer@0": - "integrity" "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" - "version" "0.2.2" - dependencies: - "domelementtype" "^2.0.1" - "entities" "^2.0.0" - -"domain-browser@^1.1.1": - "integrity" "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" - "version" "1.2.0" - -"domelementtype@^2.0.1": - "integrity" "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - "version" "2.3.0" - -"domelementtype@1": - "integrity" "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" - "version" "1.3.1" - -"domutils@^1.7.0": - "integrity" "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "dom-serializer" "0" - "domelementtype" "1" - -"dot-prop@^5.2.0": - "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" - "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - "version" "5.3.0" - dependencies: - "is-obj" "^2.0.0" - -"dotenv-expand@^4.2.0": - "integrity" "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=" - "resolved" "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz" - "version" "4.2.0" - -"dotenv@^6.2.0": - "integrity" "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz" - "version" "6.2.0" - -"duplexify@^3.4.2", "duplexify@^3.6.0": - "integrity" "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==" - "resolved" "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz" - "version" "3.7.1" - dependencies: - "end-of-stream" "^1.0.0" - "inherits" "^2.0.1" - "readable-stream" "^2.0.0" - "stream-shift" "^1.0.0" - -"ee-first@1.1.1": - "integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - "resolved" "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - "version" "1.1.1" - -"electron-to-chromium@^1.4.535": - "integrity" "sha512-3TCOv8+BY6Ltpt1/CmGBMups2IdKOyfEmz4J8yIS4xLSeMm0Rf+psSaxLuswG9qMKt+XbNbmADybtXGpTFlbDg==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.568.tgz" - "version" "1.4.568" - -"elliptic@^6.5.3", "elliptic@^6.5.4": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" - dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" - -"emoji-regex@^7.0.1": - "integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" - "version" "7.0.3" - -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" - -"emojis-list@^3.0.0": - "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - "version" "3.0.0" - -"encodeurl@~1.0.2": - "integrity" "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - "resolved" "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - "version" "1.0.2" - -"end-of-stream@^1.0.0", "end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" - dependencies: - "once" "^1.4.0" - -"enhanced-resolve@^4.1.1", "enhanced-resolve@^4.5.0": - "integrity" "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==" - "resolved" "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" - "version" "4.5.0" - dependencies: - "graceful-fs" "^4.1.2" - "memory-fs" "^0.5.0" - "tapable" "^1.0.0" - -"entities@^2.0.0": - "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - "version" "2.2.0" - -"errno@^0.1.3", "errno@~0.1.7": - "integrity" "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==" - "resolved" "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" - "version" "0.1.8" - dependencies: - "prr" "~1.0.1" - -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"error-stack-parser@^2.0.0": - "integrity" "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==" - "resolved" "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "stackframe" "^1.0.4" - -"es-abstract@^1.17.2", "es-abstract@^1.22.1": - "integrity" "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz" - "version" "1.22.3" - dependencies: - "array-buffer-byte-length" "^1.0.0" - "arraybuffer.prototype.slice" "^1.0.2" - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.5" - "es-set-tostringtag" "^2.0.1" - "es-to-primitive" "^1.2.1" - "function.prototype.name" "^1.1.6" - "get-intrinsic" "^1.2.2" - "get-symbol-description" "^1.0.0" - "globalthis" "^1.0.3" - "gopd" "^1.0.1" - "has-property-descriptors" "^1.0.0" - "has-proto" "^1.0.1" - "has-symbols" "^1.0.3" - "hasown" "^2.0.0" - "internal-slot" "^1.0.5" - "is-array-buffer" "^3.0.2" - "is-callable" "^1.2.7" - "is-negative-zero" "^2.0.2" - "is-regex" "^1.1.4" - "is-shared-array-buffer" "^1.0.2" - "is-string" "^1.0.7" - "is-typed-array" "^1.1.12" - "is-weakref" "^1.0.2" - "object-inspect" "^1.13.1" - "object-keys" "^1.1.1" - "object.assign" "^4.1.4" - "regexp.prototype.flags" "^1.5.1" - "safe-array-concat" "^1.0.1" - "safe-regex-test" "^1.0.0" - "string.prototype.trim" "^1.2.8" - "string.prototype.trimend" "^1.0.7" - "string.prototype.trimstart" "^1.0.7" - "typed-array-buffer" "^1.0.0" - "typed-array-byte-length" "^1.0.0" - "typed-array-byte-offset" "^1.0.0" - "typed-array-length" "^1.0.4" - "unbox-primitive" "^1.0.2" - "which-typed-array" "^1.1.13" - -"es-array-method-boxes-properly@^1.0.0": - "integrity" "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - "resolved" "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" - "version" "1.0.0" - -"es-set-tostringtag@^2.0.1": - "integrity" "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==" - "resolved" "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "get-intrinsic" "^1.2.2" - "has-tostringtag" "^1.0.0" - "hasown" "^2.0.0" - -"es-to-primitive@^1.2.1": - "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "is-callable" "^1.1.4" - "is-date-object" "^1.0.1" - "is-symbol" "^1.0.2" - -"es5-shim@^4.5.14": - "integrity" "sha512-7SwlpL+2JpymWTt8sNLuC2zdhhc+wrfe5cMPI2j0o6WsPdfAiPwmFy2f0AocPB4RQVBOZ9kNTgi5YF7TdhkvEg==" - "resolved" "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.14.tgz" - "version" "4.5.14" - -"es6-templates@^0.2.3": - "integrity" "sha512-sziUVwcvQ+lOsrTyUY0Q11ilAPj+dy7AQ1E1MgSaHTaaAFTffaa08QSlGNU61iyVaroyb6nYdBV6oD7nzn6i8w==" - "resolved" "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz" - "version" "0.2.3" - dependencies: - "recast" "~0.11.12" - "through" "~2.3.6" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-html@~1.0.3": - "integrity" "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - "resolved" "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" - "version" "1.0.3" - -"escape-string-regexp@^1.0.2", "escape-string-regexp@^1.0.5": - "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"eslint-scope@^4.0.3": - "integrity" "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "esrecurse" "^4.1.0" - "estraverse" "^4.1.1" - -"esprima@^4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"esprima@~3.1.0": - "integrity" "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz" - "version" "3.1.3" - -"esrecurse@^4.1.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "estraverse" "^5.2.0" - -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" - -"estraverse@^5.2.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" - -"esutils@^2.0.2": - "integrity" "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" - "version" "2.0.2" - -"etag@~1.8.1": - "integrity" "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" - -"eventemitter3@^4.0.0": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" - -"events@^3.0.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" - -"eventsource@^2.0.2": - "integrity" "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" - "resolved" "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz" - "version" "2.0.2" - -"evp_bytestokey@^1.0.0", "evp_bytestokey@^1.0.3": - "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" - "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "md5.js" "^1.3.4" - "safe-buffer" "^5.1.1" - -"execa@^1.0.0": - "integrity" "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "cross-spawn" "^6.0.0" - "get-stream" "^4.0.0" - "is-stream" "^1.1.0" - "npm-run-path" "^2.0.0" - "p-finally" "^1.0.0" - "signal-exit" "^3.0.0" - "strip-eof" "^1.0.0" - -"expand-brackets@^2.1.4": - "integrity" "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=" - "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "debug" "^2.3.3" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "posix-character-classes" "^0.1.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" - -"expand-tilde@^2.0.0", "expand-tilde@^2.0.2": - "integrity" "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==" - "resolved" "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "homedir-polyfill" "^1.0.1" - -"express@^4.17.1": - "integrity" "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==" - "resolved" "https://registry.npmjs.org/express/-/express-4.18.2.tgz" - "version" "4.18.2" - dependencies: - "accepts" "~1.3.8" - "array-flatten" "1.1.1" - "body-parser" "1.20.1" - "content-disposition" "0.5.4" - "content-type" "~1.0.4" - "cookie" "0.5.0" - "cookie-signature" "1.0.6" - "debug" "2.6.9" - "depd" "2.0.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "finalhandler" "1.2.0" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "merge-descriptors" "1.0.1" - "methods" "~1.1.2" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "path-to-regexp" "0.1.7" - "proxy-addr" "~2.0.7" - "qs" "6.11.0" - "range-parser" "~1.2.1" - "safe-buffer" "5.2.1" - "send" "0.18.0" - "serve-static" "1.15.0" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "type-is" "~1.6.18" - "utils-merge" "1.0.1" - "vary" "~1.1.2" - -"extend-shallow@^2.0.1": - "integrity" "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "is-extendable" "^0.1.0" - -"extend-shallow@^3.0.0": - "integrity" "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "assign-symbols" "^1.0.0" - "is-extendable" "^1.0.1" - -"extend-shallow@^3.0.2": - "integrity" "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "assign-symbols" "^1.0.0" - "is-extendable" "^1.0.1" - -"extglob@^2.0.4": - "integrity" "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==" - "resolved" "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "array-unique" "^0.3.2" - "define-property" "^1.0.0" - "expand-brackets" "^2.1.4" - "extend-shallow" "^2.0.1" - "fragment-cache" "^0.2.1" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" - -"extract-text-webpack-plugin@v4.0.0-beta.0": - "integrity" "sha512-Hypkn9jUTnFr0DpekNam53X47tXn3ucY08BQumv7kdGgeVUBLq3DJHJTi6HNxv4jl9W+Skxjz9+RnK0sJyqqjA==" - "resolved" "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-4.0.0-beta.0.tgz" - "version" "4.0.0-beta.0" - dependencies: - "async" "^2.4.1" - "loader-utils" "^1.1.0" - "schema-utils" "^0.4.5" - "webpack-sources" "^1.1.0" - -"fast-deep-equal@^3.1.1": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-glob@^2.0.2": - "integrity" "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz" - "version" "2.2.7" - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - "glob-parent" "^3.1.0" - "is-glob" "^4.0.0" - "merge2" "^1.2.3" - "micromatch" "^3.1.10" - -"fast-json-stable-stringify@^2.0.0": - "integrity" "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz" - "version" "2.0.0" - -"fastparse@^1.1.1", "fastparse@^1.1.2": - "integrity" "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" - "resolved" "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz" - "version" "1.1.2" - -"faye-websocket@^0.11.3", "faye-websocket@^0.11.4": - "integrity" "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==" - "resolved" "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" - "version" "0.11.4" - dependencies: - "websocket-driver" ">=0.5.1" - -"figgy-pudding@^3.5.1": - "integrity" "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" - "resolved" "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" - "version" "3.5.2" - -"file-loader@^2.0.0": - "integrity" "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "loader-utils" "^1.0.2" - "schema-utils" "^1.0.0" - -"file-type@^10.7.0": - "integrity" "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==" - "resolved" "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz" - "version" "10.11.0" - -"file-uri-to-path@1.0.0": - "integrity" "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - "resolved" "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" - "version" "1.0.0" - -"fill-range@^4.0.0": - "integrity" "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "extend-shallow" "^2.0.1" - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" - "to-regex-range" "^2.1.0" - -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"finalhandler@1.2.0": - "integrity" "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==" - "resolved" "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "debug" "2.6.9" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "on-finished" "2.4.1" - "parseurl" "~1.3.3" - "statuses" "2.0.1" - "unpipe" "~1.0.0" - -"find-cache-dir@^2.1.0": - "integrity" "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "commondir" "^1.0.1" - "make-dir" "^2.0.0" - "pkg-dir" "^3.0.0" - -"find-cache-dir@^3.3.1": - "integrity" "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "commondir" "^1.0.1" - "make-dir" "^3.0.2" - "pkg-dir" "^4.1.0" - -"find-up@^3.0.0": - "integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "locate-path" "^3.0.0" - -"find-up@^4.0.0", "find-up@^4.1.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"findup-sync@^3.0.0": - "integrity" "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==" - "resolved" "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "detect-file" "^1.0.0" - "is-glob" "^4.0.0" - "micromatch" "^3.0.4" - "resolve-dir" "^1.0.1" - -"flatpickr@^4.5.7": - "integrity" "sha512-JqPfihUc9A/j9QAsh6otoARmMyUauPE17vRBEG+ThJwbl8zAq4ssGpxlPK3wWM/i8EFxkHg9UuVo0ds7XluKxw==" - "resolved" "https://registry.npmjs.org/flatpickr/-/flatpickr-4.5.7.tgz" - "version" "4.5.7" - -"flush-write-stream@^1.0.0": - "integrity" "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==" - "resolved" "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "inherits" "^2.0.3" - "readable-stream" "^2.3.6" - -"follow-redirects@^1.0.0", "follow-redirects@1.5.10": - "integrity" "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" - "version" "1.5.10" - dependencies: - "debug" "=3.1.0" - -"for-each@^0.3.3": - "integrity" "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==" - "resolved" "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" - "version" "0.3.3" - dependencies: - "is-callable" "^1.1.3" - -"for-in@^1.0.2": - "integrity" "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - "resolved" "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - "version" "1.0.2" - -"forwarded@0.2.0": - "integrity" "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - "resolved" "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" - "version" "0.2.0" - -"fragment-cache@^0.2.1": - "integrity" "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=" - "resolved" "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "map-cache" "^0.2.2" - -"fresh@0.5.2": - "integrity" "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - "resolved" "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - "version" "0.5.2" - -"friendly-errors-webpack-plugin@^1.6.1": - "integrity" "sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==" - "resolved" "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "chalk" "^1.1.3" - "error-stack-parser" "^2.0.0" - "string-width" "^2.0.0" - -"from2@^2.1.0": - "integrity" "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==" - "resolved" "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "inherits" "^2.0.1" - "readable-stream" "^2.0.0" - -"fs-extra@^7.0.1": - "integrity" "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==" - "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "graceful-fs" "^4.1.2" - "jsonfile" "^4.0.0" - "universalify" "^0.1.0" - -"fs-minipass@^2.0.0": - "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "minipass" "^3.0.0" - -"fs-write-stream-atomic@^1.0.8": - "integrity" "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==" - "resolved" "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "graceful-fs" "^4.1.2" - "iferr" "^0.1.5" - "imurmurhash" "^0.1.4" - "readable-stream" "1 || 2" - -"fs.realpath@^1.0.0": - "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"fsevents@^1.2.7": - "integrity" "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz" - "version" "1.2.13" - dependencies: - "bindings" "^1.5.0" - "nan" "^2.12.1" - -"fsevents@~2.3.2": - "integrity" "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - "version" "2.3.3" - -"function-bind@^1.1.2": - "integrity" "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" - "version" "1.1.2" - -"function.prototype.name@^1.1.6": - "integrity" "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==" - "resolved" "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz" - "version" "1.1.6" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "functions-have-names" "^1.2.3" - -"functions-have-names@^1.2.3": - "integrity" "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - "resolved" "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - "version" "1.2.3" - -"gensync@^1.0.0-beta.2": - "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - "version" "1.0.0-beta.2" - -"get-caller-file@^2.0.1": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" - -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1", "get-intrinsic@^1.1.3", "get-intrinsic@^1.2.0", "get-intrinsic@^1.2.1", "get-intrinsic@^1.2.2": - "integrity" "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz" - "version" "1.2.2" - dependencies: - "function-bind" "^1.1.2" - "has-proto" "^1.0.1" - "has-symbols" "^1.0.3" - "hasown" "^2.0.0" - -"get-stream@^4.0.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "pump" "^3.0.0" - -"get-symbol-description@^1.0.0": - "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" - -"get-value@^2.0.3", "get-value@^2.0.6": - "integrity" "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - "resolved" "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" - "version" "2.0.6" - -"github-markdown-css@^2.3.0": - "integrity" "sha512-RX5VUC54uX6Lvrm226M9kMzsNeOa81MnKyxb3J0G5KLjyoOySOZgwyKFkUpv6iUhooiUZdogk+OTwQPJ4WttYg==" - "resolved" "https://registry.npmjs.org/github-markdown-css/-/github-markdown-css-2.10.0.tgz" - "version" "2.10.0" - -"glob-all@^3.1.0": - "integrity" "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=" - "resolved" "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "glob" "^7.0.5" - "yargs" "~1.2.6" - -"glob-parent@^3.1.0": - "integrity" "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "is-glob" "^3.1.0" - "path-dirname" "^1.0.0" - -"glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob-to-regexp@^0.3.0": - "integrity" "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz" - "version" "0.3.0" - -"glob@^7.0.3", "glob@^7.0.5", "glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.4": - "integrity" "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz" - "version" "7.1.4" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"global-modules@^1.0.0": - "integrity" "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==" - "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "global-prefix" "^1.0.1" - "is-windows" "^1.0.1" - "resolve-dir" "^1.0.0" - -"global-modules@^2.0.0": - "integrity" "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==" - "resolved" "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "global-prefix" "^3.0.0" - -"global-prefix@^1.0.1": - "integrity" "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==" - "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "expand-tilde" "^2.0.2" - "homedir-polyfill" "^1.0.1" - "ini" "^1.3.4" - "is-windows" "^1.0.1" - "which" "^1.2.14" - -"global-prefix@^3.0.0": - "integrity" "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==" - "resolved" "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "ini" "^1.3.5" - "kind-of" "^6.0.2" - "which" "^1.3.1" - -"globals@^11.1.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"globalthis@^1.0.3": - "integrity" "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==" - "resolved" "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "define-properties" "^1.1.3" - -"globby@^6.1.0": - "integrity" "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==" - "resolved" "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "array-union" "^1.0.1" - "glob" "^7.0.3" - "object-assign" "^4.0.1" - "pify" "^2.0.0" - "pinkie-promise" "^2.0.0" - -"globby@^8.0.1": - "integrity" "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==" - "resolved" "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz" - "version" "8.0.2" - dependencies: - "array-union" "^1.0.1" - "dir-glob" "2.0.0" - "fast-glob" "^2.0.2" - "glob" "^7.1.2" - "ignore" "^3.3.5" - "pify" "^3.0.0" - "slash" "^1.0.0" - -"gopd@^1.0.1": - "integrity" "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==" - "resolved" "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "get-intrinsic" "^1.1.3" - -"graceful-fs@^4.1.11", "graceful-fs@^4.1.15", "graceful-fs@^4.1.2", "graceful-fs@^4.1.6", "graceful-fs@^4.2.2": - "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" - "version" "4.2.11" - -"growly@^1.3.0": - "integrity" "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" - "resolved" "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz" - "version" "1.3.0" - -"handle-thing@^2.0.0": - "integrity" "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" - "resolved" "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" - "version" "2.0.1" - -"has-ansi@^2.0.0": - "integrity" "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" - "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "ansi-regex" "^2.0.0" - -"has-bigints@^1.0.1", "has-bigints@^1.0.2": - "integrity" "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - "version" "1.0.2" - -"has-flag@^3.0.0": - "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-property-descriptors@^1.0.0": - "integrity" "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==" - "resolved" "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "get-intrinsic" "^1.2.2" - -"has-proto@^1.0.1": - "integrity" "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" - "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" - "version" "1.0.1" - -"has-symbols@^1.0.1", "has-symbols@^1.0.2", "has-symbols@^1.0.3": - "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - "version" "1.0.3" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has-value@^0.3.1": - "integrity" "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" - "version" "0.3.1" - dependencies: - "get-value" "^2.0.3" - "has-values" "^0.1.4" - "isobject" "^2.0.0" - -"has-value@^1.0.0": - "integrity" "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-value" "^2.0.6" - "has-values" "^1.0.0" - "isobject" "^3.0.0" - -"has-values@^0.1.4": - "integrity" "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" - "version" "0.1.4" - -"has-values@^1.0.0": - "integrity" "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-number" "^3.0.0" - "kind-of" "^4.0.0" - -"has@^1.0.0": - "integrity" "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.4.tgz" - "version" "1.0.4" - -"hash-base@^3.0.0": - "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" - "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "inherits" "^2.0.4" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" - -"hash-sum@^1.0.2": - "integrity" "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" - "resolved" "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz" - "version" "1.0.2" - -"hash.js@^1.0.0", "hash.js@^1.0.3": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" - -"hasown@^2.0.0": - "integrity" "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==" - "resolved" "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "function-bind" "^1.1.2" - -"he@^1.2.0", "he@1.2.x": - "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - "version" "1.2.0" - -"hex-color-regex@^1.1.0": - "integrity" "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" - "resolved" "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" - "version" "1.1.0" - -"hmac-drbg@^1.0.1": - "integrity" "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" - -"homedir-polyfill@^1.0.1": - "integrity" "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==" - "resolved" "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "parse-passwd" "^1.0.0" - -"hpack.js@^2.1.6": - "integrity" "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==" - "resolved" "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" - "version" "2.1.6" - dependencies: - "inherits" "^2.0.1" - "obuf" "^1.0.0" - "readable-stream" "^2.0.1" - "wbuf" "^1.1.0" - -"hsl-regex@^1.0.0": - "integrity" "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==" - "resolved" "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz" - "version" "1.0.0" - -"hsla-regex@^1.0.0": - "integrity" "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==" - "resolved" "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz" - "version" "1.0.0" - -"html-entities@^1.3.1": - "integrity" "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" - "resolved" "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz" - "version" "1.4.0" - -"html-loader@^0.5.5": - "integrity" "sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==" - "resolved" "https://registry.npmjs.org/html-loader/-/html-loader-0.5.5.tgz" - "version" "0.5.5" - dependencies: - "es6-templates" "^0.2.3" - "fastparse" "^1.1.1" - "html-minifier" "^3.5.8" - "loader-utils" "^1.1.0" - "object-assign" "^4.1.1" - -"html-minifier@^3.5.8": - "integrity" "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==" - "resolved" "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz" - "version" "3.5.21" - dependencies: - "camel-case" "3.0.x" - "clean-css" "4.2.x" - "commander" "2.17.x" - "he" "1.2.x" - "param-case" "2.1.x" - "relateurl" "0.2.x" - "uglify-js" "3.4.x" - -"http-deceiver@^1.2.7": - "integrity" "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" - "resolved" "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" - "version" "1.2.7" - -"http-errors@~1.6.2": - "integrity" "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - "version" "1.6.3" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.3" - "setprototypeof" "1.1.0" - "statuses" ">= 1.4.0 < 2" - -"http-errors@2.0.0": - "integrity" "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "depd" "2.0.0" - "inherits" "2.0.4" - "setprototypeof" "1.2.0" - "statuses" "2.0.1" - "toidentifier" "1.0.1" - -"http-parser-js@>=0.5.1": - "integrity" "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" - "resolved" "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" - "version" "0.5.8" - -"http-proxy-middleware@0.19.1": - "integrity" "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==" - "resolved" "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz" - "version" "0.19.1" - dependencies: - "http-proxy" "^1.17.0" - "is-glob" "^4.0.0" - "lodash" "^4.17.11" - "micromatch" "^3.1.10" - -"http-proxy@^1.17.0": - "integrity" "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==" - "resolved" "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" - "version" "1.18.1" - dependencies: - "eventemitter3" "^4.0.0" - "follow-redirects" "^1.0.0" - "requires-port" "^1.0.0" - -"https-browserify@^1.0.0": - "integrity" "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" - "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - "version" "1.0.0" - -"iconv-lite@0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"icss-replace-symbols@^1.1.0": - "integrity" "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==" - "resolved" "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz" - "version" "1.1.0" - -"icss-utils@^2.1.0": - "integrity" "sha512-bsVoyn/1V4R1kYYjLcWLedozAM4FClZUdjE9nIr8uWY7xs78y9DATgwz2wGU7M+7z55KenmmTkN2DVJ7bqzjAA==" - "resolved" "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "postcss" "^6.0.1" - -"ieee754@^1.1.4": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" - -"iferr@^0.1.5": - "integrity" "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" - "resolved" "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz" - "version" "0.1.5" - -"ignore@^3.3.5": - "integrity" "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz" - "version" "3.3.10" - -"imagemin@^5.0.0 || ^6.0.0", "imagemin@^6.0.0": - "integrity" "sha512-8ryJBL1CN5uSHpiBMX0rJw79C9F9aJqMnjGnrd/1CafegpNuA81RBAAru/jQQEOWlOJJlpRnlcVFF6wq+Ist0A==" - "resolved" "https://registry.npmjs.org/imagemin/-/imagemin-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "file-type" "^10.7.0" - "globby" "^8.0.1" - "make-dir" "^1.0.0" - "p-pipe" "^1.1.0" - "pify" "^4.0.1" - "replace-ext" "^1.0.0" - -"img-loader@^3.0.0": - "integrity" "sha512-0jDJqexgzOuq3zlXwFTBKJlMcaP1uXyl5t4Qu6b1IgXb3IwBDjPfVylBC8vHFIIESDw/S+5QkBbtBrt4T8wESA==" - "resolved" "https://registry.npmjs.org/img-loader/-/img-loader-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "loader-utils" "^1.1.0" - -"immutable@^4.0.0": - "integrity" "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==" - "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz" - "version" "4.3.4" - -"import-cwd@^2.0.0": - "integrity" "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==" - "resolved" "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "import-from" "^2.1.0" - -"import-fresh@^2.0.0": - "integrity" "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "caller-path" "^2.0.0" - "resolve-from" "^3.0.0" - -"import-from@^2.1.0": - "integrity" "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==" - "resolved" "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "resolve-from" "^3.0.0" - -"import-local@^2.0.0": - "integrity" "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==" - "resolved" "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "pkg-dir" "^3.0.0" - "resolve-cwd" "^2.0.0" - -"imurmurhash@^0.1.4": - "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"indent-string@^4.0.0": - "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" - "version" "4.0.0" - -"indexes-of@^1.0.1": - "integrity" "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==" - "resolved" "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" - "version" "1.0.1" - -"infer-owner@^1.0.3", "infer-owner@^1.0.4": - "integrity" "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - "resolved" "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz" - "version" "1.0.4" - -"inflight@^1.0.4": - "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@^2.0.1", "inherits@^2.0.3", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@2", "inherits@2.0.3": - "integrity" "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - "version" "2.0.3" - -"inherits@^2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"ini@^1.3.4", "ini@^1.3.5": - "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - "version" "1.3.8" - -"internal-ip@^4.3.0": - "integrity" "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==" - "resolved" "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "default-gateway" "^4.2.0" - "ipaddr.js" "^1.9.0" - -"internal-slot@^1.0.5": - "integrity" "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==" - "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "get-intrinsic" "^1.2.2" - "hasown" "^2.0.0" - "side-channel" "^1.0.4" - -"interpret@^1.4.0": - "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - "version" "1.4.0" - -"invert-kv@^2.0.0": - "integrity" "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - "resolved" "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz" - "version" "2.0.0" - -"ionicons@~2.0": - "integrity" "sha1-yjmBEyk+qHAkT1OPCqu9S1sgmj4=" - "resolved" "https://registry.npmjs.org/ionicons/-/ionicons-2.0.1.tgz" - "version" "2.0.1" - -"ip-regex@^2.1.0": - "integrity" "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==" - "resolved" "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz" - "version" "2.1.0" - -"ip@^1.1.0", "ip@^1.1.5": - "integrity" "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" - "resolved" "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" - "version" "1.1.8" - -"ipaddr.js@^1.9.0", "ipaddr.js@1.9.1": - "integrity" "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" - "resolved" "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" - "version" "1.9.1" - -"is-absolute-url@^2.0.0": - "integrity" "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==" - "resolved" "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz" - "version" "2.1.0" - -"is-absolute-url@^3.0.3": - "integrity" "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==" - "resolved" "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz" - "version" "3.0.3" - -"is-accessor-descriptor@^0.1.6": - "integrity" "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "kind-of" "^3.0.2" - -"is-accessor-descriptor@^1.0.0": - "integrity" "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "kind-of" "^6.0.0" - -"is-arguments@^1.0.4": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-array-buffer@^3.0.1", "is-array-buffer@^3.0.2": - "integrity" "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==" - "resolved" "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.2.0" - "is-typed-array" "^1.1.10" - -"is-arrayish@^0.2.1": - "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-arrayish@^0.3.1": - "integrity" "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz" - "version" "0.3.2" - -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-bigints" "^1.0.1" - -"is-binary-path@^1.0.0": - "integrity" "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "binary-extensions" "^1.0.0" - -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "binary-extensions" "^2.0.0" - -"is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-buffer@^1.1.5", "is-buffer@~1.1.1": - "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - "version" "1.1.6" - -"is-buffer@^2.0.2": - "integrity" "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz" - "version" "2.0.3" - -"is-callable@^1.1.3", "is-callable@^1.1.4", "is-callable@^1.2.7": - "integrity" "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - "version" "1.2.7" - -"is-color-stop@^1.0.0": - "integrity" "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==" - "resolved" "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "css-color-names" "^0.0.4" - "hex-color-regex" "^1.1.0" - "hsl-regex" "^1.0.0" - "hsla-regex" "^1.0.0" - "rgb-regex" "^1.0.1" - "rgba-regex" "^1.0.0" - -"is-core-module@^2.13.0": - "integrity" "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" - "version" "2.13.1" - dependencies: - "hasown" "^2.0.0" - -"is-data-descriptor@^0.1.4": - "integrity" "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" - "version" "0.1.4" - dependencies: - "kind-of" "^3.0.2" - -"is-data-descriptor@^1.0.0": - "integrity" "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "kind-of" "^6.0.0" - -"is-date-object@^1.0.1": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-descriptor@^0.1.0": - "integrity" "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "is-accessor-descriptor" "^0.1.6" - "is-data-descriptor" "^0.1.4" - "kind-of" "^5.0.0" - -"is-descriptor@^1.0.0", "is-descriptor@^1.0.2": - "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-accessor-descriptor" "^1.0.0" - "is-data-descriptor" "^1.0.0" - "kind-of" "^6.0.2" - -"is-directory@^0.3.1": - "integrity" "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==" - "resolved" "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz" - "version" "0.3.1" - -"is-extendable@^0.1.0", "is-extendable@^0.1.1": - "integrity" "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - "version" "0.1.1" - -"is-extendable@^1.0.0": - "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "is-plain-object" "^2.0.4" - -"is-extendable@^1.0.1": - "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "is-plain-object" "^2.0.4" - -"is-extglob@^2.1.0", "is-extglob@^2.1.1": - "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-fullwidth-code-point@^1.0.0": - "integrity" "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "number-is-nan" "^1.0.0" - -"is-fullwidth-code-point@^2.0.0": - "integrity" "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz" - "version" "2.0.0" - -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-glob@^3.1.0": - "integrity" "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "is-extglob" "^2.1.0" - -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@~4.0.1": - "integrity" "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "is-extglob" "^2.1.1" - -"is-negative-zero@^2.0.2": - "integrity" "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - "version" "2.0.2" - -"is-number-object@^1.0.4": - "integrity" "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-number@^3.0.0": - "integrity" "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "kind-of" "^3.0.2" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-obj@^2.0.0": - "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - "version" "2.0.0" - -"is-path-cwd@^2.0.0": - "integrity" "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" - "resolved" "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz" - "version" "2.2.0" - -"is-path-in-cwd@^2.0.0": - "integrity" "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==" - "resolved" "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "is-path-inside" "^2.1.0" - -"is-path-inside@^2.1.0": - "integrity" "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "path-is-inside" "^1.0.2" - -"is-plain-object@^2.0.1", "is-plain-object@^2.0.3", "is-plain-object@^2.0.4": - "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "isobject" "^3.0.1" - -"is-regex@^1.0.4", "is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-resolvable@^1.0.0": - "integrity" "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - "resolved" "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz" - "version" "1.1.0" - -"is-shared-array-buffer@^1.0.2": - "integrity" "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" - "resolved" "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-stream@^1.1.0": - "integrity" "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.0" - -"is-string@^1.0.5", "is-string@^1.0.7": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-symbol@^1.0.2", "is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-symbols" "^1.0.2" - -"is-typed-array@^1.1.10", "is-typed-array@^1.1.12", "is-typed-array@^1.1.9": - "integrity" "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" - "version" "1.1.12" - dependencies: - "which-typed-array" "^1.1.11" - -"is-weakref@^1.0.2": - "integrity" "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" - "resolved" "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - -"is-windows@^1.0.0", "is-windows@^1.0.1", "is-windows@^1.0.2": - "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" - "version" "1.0.2" - -"is-wsl@^1.1.0": - "integrity" "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz" - "version" "1.1.0" - -"isarray@^1.0.0", "isarray@~1.0.0", "isarray@1.0.0": - "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" - -"isarray@^2.0.5": - "integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" - "version" "2.0.5" - -"isexe@^2.0.0": - "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^2.0.0": - "integrity" "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "isarray" "1.0.0" - -"isobject@^3.0.0", "isobject@^3.0.1": - "integrity" "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" - -"jest-worker@^25.4.0": - "integrity" "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz" - "version" "25.5.0" - dependencies: - "merge-stream" "^2.0.0" - "supports-color" "^7.0.0" - -"jquery-minicolors@^2.1.10": - "integrity" "sha1-sp7qVB2aMrTiaSMWj7LBYnGGc3k=" - "resolved" "https://registry.npmjs.org/jquery-minicolors/-/jquery-minicolors-2.1.10.tgz" - "version" "2.1.10" - dependencies: - "jquery" ">= 1.7.x" - -"jquery-serializeobject@^1.0.0": - "integrity" "sha1-czbXxQXhi7I3hEbrGV25+0MxrqY=" - "resolved" "https://registry.npmjs.org/jquery-serializeobject/-/jquery-serializeobject-1.0.0.tgz" - "version" "1.0.0" - -"jquery-sparkline@^2.4.0": - "integrity" "sha1-G+i3twTdOFcVJwiu+x1KSzpp+zM=" - "resolved" "https://registry.npmjs.org/jquery-sparkline/-/jquery-sparkline-2.4.0.tgz" - "version" "2.4.0" - -"jquery@^3.4.0", "jquery@>= 1.7.x": - "integrity" "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" - "resolved" "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz" - "version" "3.4.1" - -"js-tokens@^3.0.2": - "integrity" "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" - "version" "3.0.2" - -"js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" - -"jsesc@~0.5.0": - "integrity" "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - "version" "0.5.0" - -"json-parse-better-errors@^1.0.1", "json-parse-better-errors@^1.0.2": - "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - "version" "1.0.2" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json5@^1.0.1": - "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "minimist" "^1.2.0" - -"json5@^2.1.2": - "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - "version" "2.2.3" - -"json5@^2.2.3": - "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - "version" "2.2.3" - -"jsonfile@^4.0.0": - "integrity" "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==" - "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" - "version" "4.0.0" - optionalDependencies: - "graceful-fs" "^4.1.6" - -"killable@^1.0.1": - "integrity" "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" - "resolved" "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz" - "version" "1.0.1" - -"kind-of@^3.0.2", "kind-of@^3.0.3", "kind-of@^3.2.0": - "integrity" "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - "version" "3.2.2" - dependencies: - "is-buffer" "^1.1.5" - -"kind-of@^4.0.0": - "integrity" "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "is-buffer" "^1.1.5" - -"kind-of@^5.0.0": - "integrity" "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" - "version" "5.1.0" - -"kind-of@^6.0.0": - "integrity" "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz" - "version" "6.0.2" - -"kind-of@^6.0.2": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" - -"laravel-mix-purgecss@^4.2.0": - "integrity" "sha512-hzphHnhK3xPiv19QhCnhuvSUK4vmPB/76S6EHDb3WPa6Oz7aOlBREXLhg57ejiisy9GdVKw5DZjYwk3JLjAkYA==" - "resolved" "https://registry.npmjs.org/laravel-mix-purgecss/-/laravel-mix-purgecss-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "glob-all" "^3.1.0" - "purgecss-webpack-plugin" "^1.3.0" - -"laravel-mix@^4.0.0||^5.0.0", "laravel-mix@^5.0.9": - "integrity" "sha512-1WCJiHimTRW3KlxcabRTco0q+bo4uKPaFTkc6cJ/bLEq4JT1aPkojoauUK7+PyiIlDJncw0Nt2MtDrv5C6j5IQ==" - "resolved" "https://registry.npmjs.org/laravel-mix/-/laravel-mix-5.0.9.tgz" - "version" "5.0.9" - dependencies: - "@babel/core" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-transform-runtime" "^7.2.0" - "@babel/preset-env" "^7.2.0" - "@babel/runtime" "^7.2.0" - "autoprefixer" "^9.4.2" - "babel-loader" "^8.0.4" - "babel-merge" "^2.0.1" - "chokidar" "^2.0.3" - "clean-css" "^4.1.3" - "collect.js" "^4.12.8" - "concat" "^1.0.3" - "css-loader" "^1.0.1" - "dotenv" "^6.2.0" - "dotenv-expand" "^4.2.0" - "extract-text-webpack-plugin" "v4.0.0-beta.0" - "file-loader" "^2.0.0" - "friendly-errors-webpack-plugin" "^1.6.1" - "fs-extra" "^7.0.1" - "glob" "^7.1.2" - "html-loader" "^0.5.5" - "imagemin" "^6.0.0" - "img-loader" "^3.0.0" - "lodash" "^4.17.15" - "md5" "^2.2.1" - "optimize-css-assets-webpack-plugin" "^5.0.1" - "postcss-loader" "^3.0.0" - "style-loader" "^0.23.1" - "terser" "^3.11.0" - "terser-webpack-plugin" "^2.2.3" - "vue-loader" "^15.4.2" - "webpack" "^4.36.1" - "webpack-cli" "^3.1.2" - "webpack-dev-server" "^3.1.14" - "webpack-merge" "^4.1.0" - "webpack-notifier" "^1.5.1" - "yargs" "^15.4.1" - -"last-call-webpack-plugin@^3.0.0": - "integrity" "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==" - "resolved" "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "lodash" "^4.17.5" - "webpack-sources" "^1.1.0" - -"lcid@^2.0.0": - "integrity" "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==" - "resolved" "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "invert-kv" "^2.0.0" - -"livestamp@git+https://github.com/mattbradley/livestampjs.git#develop": - "resolved" "git+ssh://git@github.com/mattbradley/livestampjs.git#7572242af2fd89f602485d1ef4ea4a6fadeff080" - "version" "2.0.0" - -"loader-runner@^2.4.0": - "integrity" "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" - "resolved" "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz" - "version" "2.4.0" - -"loader-utils@^1.0.2", "loader-utils@^1.1.0", "loader-utils@^1.2.3", "loader-utils@^1.4.0": - "integrity" "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz" - "version" "1.4.2" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^1.0.1" - -"loader-utils@^2.0.0": - "integrity" "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" - -"locate-path@^3.0.0": - "integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-locate" "^3.0.0" - "path-exists" "^3.0.0" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"lodash.debounce@^4.0.8": - "integrity" "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash.memoize@^4.1.2": - "integrity" "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - "resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - "version" "4.1.2" - -"lodash.uniq@^4.5.0": - "integrity" "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - "resolved" "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" - "version" "4.5.0" - -"lodash@^4.17.11", "lodash@^4.17.13", "lodash@^4.17.14", "lodash@^4.17.15", "lodash@^4.17.5": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"loglevel@^1.6.8": - "integrity" "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==" - "resolved" "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz" - "version" "1.8.1" - -"lower-case@^1.1.1": - "integrity" "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" - "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" - "version" "1.1.4" - -"lru-cache@^4.1.2": - "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" - "version" "4.1.5" - dependencies: - "pseudomap" "^1.0.2" - "yallist" "^2.1.2" - -"lru-cache@^5.1.1": - "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "yallist" "^3.0.2" - -"make-dir@^1.0.0": - "integrity" "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "pify" "^3.0.0" - -"make-dir@^2.0.0": - "integrity" "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "pify" "^4.0.1" - "semver" "^5.6.0" - -"make-dir@^3.0.2": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "semver" "^6.0.0" - -"make-dir@^3.1.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "semver" "^6.0.0" - -"map-age-cleaner@^0.1.1": - "integrity" "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==" - "resolved" "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz" - "version" "0.1.3" - dependencies: - "p-defer" "^1.0.0" - -"map-cache@^0.2.2": - "integrity" "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - "resolved" "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - "version" "0.2.2" - -"map-visit@^1.0.0": - "integrity" "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=" - "resolved" "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "object-visit" "^1.0.0" - -"md5.js@^1.3.4": - "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" - "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - "version" "1.3.5" - dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" - -"md5@^2.2.1": - "integrity" "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=" - "resolved" "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "charenc" "~0.0.1" - "crypt" "~0.0.1" - "is-buffer" "~1.1.1" - -"mdn-data@2.0.14": - "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - "version" "2.0.14" - -"mdn-data@2.0.4": - "integrity" "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" - "version" "2.0.4" - -"media-typer@0.3.0": - "integrity" "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - "resolved" "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - "version" "0.3.0" - -"mem@^4.0.0": - "integrity" "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==" - "resolved" "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "map-age-cleaner" "^0.1.1" - "mimic-fn" "^2.0.0" - "p-is-promise" "^2.0.0" - -"memory-fs@^0.4.1": - "integrity" "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==" - "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "errno" "^0.1.3" - "readable-stream" "^2.0.1" - -"memory-fs@^0.5.0": - "integrity" "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==" - "resolved" "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz" - "version" "0.5.0" - dependencies: - "errno" "^0.1.3" - "readable-stream" "^2.0.1" - -"merge-descriptors@1.0.1": - "integrity" "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - "resolved" "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" - "version" "1.0.1" - -"merge-source-map@^1.1.0": - "integrity" "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==" - "resolved" "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "source-map" "^0.6.1" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"merge2@^1.2.3": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"messenger@git+https://github.com/HubSpot/messenger.git": - "resolved" "git+ssh://git@github.com/HubSpot/messenger.git#b1b176185276464f45bf6be3d28c4064a82198c7" - "version" "1.5.0" - -"methods@~1.1.2": - "integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" - -"micromatch@^3.0.4", "micromatch@^3.1.10", "micromatch@^3.1.4": - "integrity" "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - "version" "3.1.10" - dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "braces" "^2.3.1" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "extglob" "^2.0.4" - "fragment-cache" "^0.2.1" - "kind-of" "^6.0.2" - "nanomatch" "^1.2.9" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.2" - -"miller-rabin@^4.0.0": - "integrity" "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==" - "resolved" "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "bn.js" "^4.0.0" - "brorand" "^1.0.1" - -"mime-db@>= 1.43.0 < 2", "mime-db@1.52.0": - "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" - "version" "1.52.0" - -"mime-types@~2.1.17", "mime-types@~2.1.24", "mime-types@~2.1.34": - "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" - "version" "2.1.35" - dependencies: - "mime-db" "1.52.0" - -"mime@^2.4.4": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" - -"mime@1.6.0": - "integrity" "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - "version" "1.6.0" - -"mimic-fn@^2.0.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" - -"minimalistic-crypto-utils@^1.0.1": - "integrity" "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" - -"minimatch@^3.0.4": - "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "brace-expansion" "^1.1.7" - -"minimist@^0.1.0": - "integrity" "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz" - "version" "0.1.0" - -"minimist@^1.2.0", "minimist@^1.2.6": - "integrity" "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" - "version" "1.2.8" - -"minipass-collect@^1.0.2": - "integrity" "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==" - "resolved" "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "minipass" "^3.0.0" - -"minipass-flush@^1.0.5": - "integrity" "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==" - "resolved" "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "minipass" "^3.0.0" - -"minipass-pipeline@^1.2.2": - "integrity" "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==" - "resolved" "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz" - "version" "1.2.4" - dependencies: - "minipass" "^3.0.0" - -"minipass@^3.0.0", "minipass@^3.1.1": - "integrity" "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" - "version" "3.3.6" - dependencies: - "yallist" "^4.0.0" - -"mississippi@^3.0.0": - "integrity" "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==" - "resolved" "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "concat-stream" "^1.5.0" - "duplexify" "^3.4.2" - "end-of-stream" "^1.1.0" - "flush-write-stream" "^1.0.0" - "from2" "^2.1.0" - "parallel-transform" "^1.1.0" - "pump" "^3.0.0" - "pumpify" "^1.3.3" - "stream-each" "^1.1.0" - "through2" "^2.0.0" - -"mixin-deep@^1.2.0": - "integrity" "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==" - "resolved" "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "for-in" "^1.0.2" - "is-extendable" "^1.0.1" - -"mkdirp@^0.5.1", "mkdirp@^0.5.3", "mkdirp@^0.5.6", "mkdirp@~0.5.1": - "integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - "version" "0.5.6" - dependencies: - "minimist" "^1.2.6" - -"moment@^2.10.2", "moment@^2.24.0": - "integrity" "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" - "resolved" "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz" - "version" "2.24.0" - -"move-concurrently@^1.0.1": - "integrity" "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==" - "resolved" "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "aproba" "^1.1.1" - "copy-concurrently" "^1.0.0" - "fs-write-stream-atomic" "^1.0.8" - "mkdirp" "^0.5.1" - "rimraf" "^2.5.4" - "run-queue" "^1.0.3" - -"ms@^2.1.1": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"ms@2.0.0": - "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"ms@2.1.3": - "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - "version" "2.1.3" - -"multicast-dns-service-types@^1.1.0": - "integrity" "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==" - "resolved" "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz" - "version" "1.1.0" - -"multicast-dns@^6.0.1": - "integrity" "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==" - "resolved" "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz" - "version" "6.2.3" - dependencies: - "dns-packet" "^1.3.1" - "thunky" "^1.0.2" - -"nan@^2.12.1": - "integrity" "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==" - "resolved" "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz" - "version" "2.18.0" - -"nanoid@^3.3.6": - "integrity" "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" - "version" "3.3.6" - -"nanomatch@^1.2.9": - "integrity" "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==" - "resolved" "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" - "version" "1.2.13" - dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "fragment-cache" "^0.2.1" - "is-windows" "^1.0.2" - "kind-of" "^6.0.2" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" - -"negotiator@0.6.3": - "integrity" "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - "version" "0.6.3" - -"neo-async@^2.5.0", "neo-async@^2.6.1": - "integrity" "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - "resolved" "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - "version" "2.6.2" - -"nice-try@^1.0.4": - "integrity" "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - "version" "1.0.5" - -"no-case@^2.2.0": - "integrity" "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==" - "resolved" "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz" - "version" "2.3.2" - dependencies: - "lower-case" "^1.1.1" - -"node-forge@^0.10.0": - "integrity" "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" - "resolved" "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" - "version" "0.10.0" - -"node-libs-browser@^2.2.1": - "integrity" "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==" - "resolved" "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "assert" "^1.1.1" - "browserify-zlib" "^0.2.0" - "buffer" "^4.3.0" - "console-browserify" "^1.1.0" - "constants-browserify" "^1.0.0" - "crypto-browserify" "^3.11.0" - "domain-browser" "^1.1.1" - "events" "^3.0.0" - "https-browserify" "^1.0.0" - "os-browserify" "^0.3.0" - "path-browserify" "0.0.1" - "process" "^0.11.10" - "punycode" "^1.2.4" - "querystring-es3" "^0.2.0" - "readable-stream" "^2.3.3" - "stream-browserify" "^2.0.1" - "stream-http" "^2.7.2" - "string_decoder" "^1.0.0" - "timers-browserify" "^2.0.4" - "tty-browserify" "0.0.0" - "url" "^0.11.0" - "util" "^0.11.0" - "vm-browserify" "^1.0.1" - -"node-notifier@^5.1.2": - "integrity" "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==" - "resolved" "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz" - "version" "5.4.0" - dependencies: - "growly" "^1.3.0" - "is-wsl" "^1.1.0" - "semver" "^5.5.0" - "shellwords" "^0.1.1" - "which" "^1.3.0" - -"node-releases@^2.0.13": - "integrity" "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" - "version" "2.0.13" - -"normalize-path@^2.1.1": - "integrity" "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "remove-trailing-separator" "^1.0.1" - -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"normalize-range@^0.1.2": - "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" - "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - "version" "0.1.2" - -"normalize-url@^3.0.0": - "integrity" "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz" - "version" "3.3.0" - -"npm-run-path@^2.0.0": - "integrity" "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "path-key" "^2.0.0" - -"nth-check@^1.0.2": - "integrity" "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "boolbase" "~1.0.0" - -"num2fraction@^1.2.2": - "integrity" "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==" - "resolved" "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" - "version" "1.2.2" - -"number-is-nan@^1.0.0": - "integrity" "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - "resolved" "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - "version" "1.0.1" - -"object-assign@^4.0.1", "object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-copy@^0.1.0": - "integrity" "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=" - "resolved" "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" - "version" "0.1.0" - dependencies: - "copy-descriptor" "^0.1.0" - "define-property" "^0.2.5" - "kind-of" "^3.0.3" - -"object-inspect@^1.13.1", "object-inspect@^1.9.0": - "integrity" "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" - "version" "1.13.1" - -"object-is@^1.0.1": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"object-visit@^1.0.0": - "integrity" "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=" - "resolved" "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "isobject" "^3.0.0" - -"object.assign@^4.1.4": - "integrity" "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - "version" "4.1.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.4" - "has-symbols" "^1.0.3" - "object-keys" "^1.1.1" - -"object.getownpropertydescriptors@^2.1.0": - "integrity" "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==" - "resolved" "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz" - "version" "2.1.7" - dependencies: - "array.prototype.reduce" "^1.0.6" - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - "safe-array-concat" "^1.0.0" - -"object.omit@^3.0.0": - "integrity" "sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==" - "resolved" "https://registry.npmjs.org/object.omit/-/object.omit-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "is-extendable" "^1.0.0" - -"object.pick@^1.3.0": - "integrity" "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=" - "resolved" "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "isobject" "^3.0.1" - -"object.values@^1.1.0": - "integrity" "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==" - "resolved" "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"obuf@^1.0.0", "obuf@^1.1.2": - "integrity" "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - "resolved" "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" - "version" "1.1.2" - -"on-finished@2.4.1": - "integrity" "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==" - "resolved" "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "ee-first" "1.1.1" - -"on-headers@~1.0.2": - "integrity" "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - "resolved" "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" - "version" "1.0.2" - -"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": - "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "wrappy" "1" - -"opn@^5.5.0": - "integrity" "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==" - "resolved" "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "is-wsl" "^1.1.0" - -"optimize-css-assets-webpack-plugin@^5.0.1": - "integrity" "sha512-mgFS1JdOtEGzD8l+EuISqL57cKO+We9GcoiQEmdCWRqqck+FGNmYJtx9qfAPzEz+lRrlThWMuGDaRkI/yWNx/Q==" - "resolved" "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.8.tgz" - "version" "5.0.8" - dependencies: - "cssnano" "^4.1.10" - "last-call-webpack-plugin" "^3.0.0" - -"os-browserify@^0.3.0": - "integrity" "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" - "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" - "version" "0.3.0" - -"os-locale@^3.1.0": - "integrity" "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==" - "resolved" "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "execa" "^1.0.0" - "lcid" "^2.0.0" - "mem" "^4.0.0" - -"p-defer@^1.0.0": - "integrity" "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" - "resolved" "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" - "version" "1.0.0" - -"p-finally@^1.0.0": - "integrity" "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-is-promise@^2.0.0": - "integrity" "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" - "resolved" "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz" - "version" "2.1.0" - -"p-limit@^2.0.0", "p-limit@^2.2.0", "p-limit@^2.3.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "p-try" "^2.0.0" - -"p-locate@^3.0.0": - "integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "p-limit" "^2.0.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "p-limit" "^2.2.0" - -"p-map@^2.0.0": - "integrity" "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" - "version" "2.1.0" - -"p-map@^3.0.0": - "integrity" "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==" - "resolved" "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "aggregate-error" "^3.0.0" - -"p-pipe@^1.1.0": - "integrity" "sha512-IA8SqjIGA8l9qOksXJvsvkeQ+VGb0TAzNCzvKvz9wt5wWLqfWbV6fXy43gpR2L4Te8sOq3S+Ql9biAaMKPdbtw==" - "resolved" "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz" - "version" "1.2.0" - -"p-retry@^3.0.1": - "integrity" "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==" - "resolved" "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "retry" "^0.12.0" - -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" - -"pako@~1.0.5": - "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - "version" "1.0.11" - -"parallel-transform@^1.1.0": - "integrity" "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==" - "resolved" "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "cyclist" "^1.0.1" - "inherits" "^2.0.3" - "readable-stream" "^2.1.5" - -"param-case@2.1.x": - "integrity" "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==" - "resolved" "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "no-case" "^2.2.0" - -"parse-asn1@^5.0.0", "parse-asn1@^5.1.6": - "integrity" "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==" - "resolved" "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" - "version" "5.1.6" - dependencies: - "asn1.js" "^5.2.0" - "browserify-aes" "^1.0.0" - "evp_bytestokey" "^1.0.0" - "pbkdf2" "^3.0.3" - "safe-buffer" "^5.1.1" - -"parse-json@^4.0.0": - "integrity" "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "error-ex" "^1.3.1" - "json-parse-better-errors" "^1.0.1" - -"parse-passwd@^1.0.0": - "integrity" "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" - "resolved" "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" - "version" "1.0.0" - -"parseurl@~1.3.2", "parseurl@~1.3.3": - "integrity" "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - "resolved" "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" - "version" "1.3.3" - -"pascalcase@^0.1.1": - "integrity" "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - "resolved" "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" - "version" "0.1.1" - -"path-browserify@0.0.1": - "integrity" "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" - "version" "0.0.1" - -"path-dirname@^1.0.0": - "integrity" "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - "resolved" "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" - "version" "1.0.2" - -"path-exists@^3.0.0": - "integrity" "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" - "version" "3.0.0" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0": - "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-is-inside@^1.0.2": - "integrity" "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" - "resolved" "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" - "version" "1.0.2" - -"path-key@^2.0.0", "path-key@^2.0.1": - "integrity" "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" - -"path-parse@^1.0.7": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" - -"path-to-regexp@0.1.7": - "integrity" "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - "resolved" "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" - "version" "0.1.7" - -"path-type@^3.0.0": - "integrity" "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "pify" "^3.0.0" - -"pbkdf2@^3.0.3": - "integrity" "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==" - "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "create-hash" "^1.1.2" - "create-hmac" "^1.1.4" - "ripemd160" "^2.0.1" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" - -"picocolors@^0.2.1": - "integrity" "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" - "version" "0.2.1" - -"picocolors@^1.0.0": - "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - "version" "1.0.0" - -"picomatch@^2.0.4", "picomatch@^2.2.1": - "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - "version" "2.3.1" - -"pify@^2.0.0": - "integrity" "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" - -"pify@^3.0.0": - "integrity" "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" - "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - "version" "3.0.0" - -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" - -"pinkie-promise@^2.0.0": - "integrity" "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==" - "resolved" "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "pinkie" "^2.0.0" - -"pinkie@^2.0.0": - "integrity" "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" - "resolved" "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - "version" "2.0.4" - -"pkg-dir@^3.0.0": - "integrity" "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "find-up" "^3.0.0" - -"pkg-dir@^4.1.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "find-up" "^4.0.0" - -"portfinder@^1.0.26": - "integrity" "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==" - "resolved" "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz" - "version" "1.0.32" - dependencies: - "async" "^2.6.4" - "debug" "^3.2.7" - "mkdirp" "^0.5.6" - -"posix-character-classes@^0.1.0": - "integrity" "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - "resolved" "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" - "version" "0.1.1" - -"postcss-calc@^7.0.1": - "integrity" "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==" - "resolved" "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz" - "version" "7.0.5" - dependencies: - "postcss" "^7.0.27" - "postcss-selector-parser" "^6.0.2" - "postcss-value-parser" "^4.0.2" - -"postcss-colormin@^4.0.3": - "integrity" "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==" - "resolved" "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "browserslist" "^4.0.0" - "color" "^3.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-convert-values@^4.0.1": - "integrity" "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==" - "resolved" "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-discard-comments@^4.0.2": - "integrity" "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==" - "resolved" "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "postcss" "^7.0.0" - -"postcss-discard-duplicates@^4.0.2": - "integrity" "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==" - "resolved" "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "postcss" "^7.0.0" - -"postcss-discard-empty@^4.0.1": - "integrity" "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==" - "resolved" "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - -"postcss-discard-overridden@^4.0.1": - "integrity" "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==" - "resolved" "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - -"postcss-load-config@^2.0.0": - "integrity" "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==" - "resolved" "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz" - "version" "2.1.2" - dependencies: - "cosmiconfig" "^5.0.0" - "import-cwd" "^2.0.0" - -"postcss-loader@^3.0.0": - "integrity" "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==" - "resolved" "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "loader-utils" "^1.1.0" - "postcss" "^7.0.0" - "postcss-load-config" "^2.0.0" - "schema-utils" "^1.0.0" - -"postcss-merge-longhand@^4.0.11": - "integrity" "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==" - "resolved" "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz" - "version" "4.0.11" - dependencies: - "css-color-names" "0.0.4" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "stylehacks" "^4.0.0" - -"postcss-merge-rules@^4.0.3": - "integrity" "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==" - "resolved" "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "browserslist" "^4.0.0" - "caniuse-api" "^3.0.0" - "cssnano-util-same-parent" "^4.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" - "vendors" "^1.0.0" - -"postcss-minify-font-values@^4.0.2": - "integrity" "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==" - "resolved" "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-minify-gradients@^4.0.2": - "integrity" "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==" - "resolved" "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "is-color-stop" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-minify-params@^4.0.2": - "integrity" "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==" - "resolved" "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "alphanum-sort" "^1.0.0" - "browserslist" "^4.0.0" - "cssnano-util-get-arguments" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "uniqs" "^2.0.0" - -"postcss-minify-selectors@^4.0.2": - "integrity" "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==" - "resolved" "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "alphanum-sort" "^1.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" - -"postcss-modules-extract-imports@^1.2.0": - "integrity" "sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw==" - "resolved" "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "postcss" "^6.0.1" - -"postcss-modules-local-by-default@^1.2.0": - "integrity" "sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==" - "resolved" "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "css-selector-tokenizer" "^0.7.0" - "postcss" "^6.0.1" - -"postcss-modules-scope@^1.1.0": - "integrity" "sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==" - "resolved" "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "css-selector-tokenizer" "^0.7.0" - "postcss" "^6.0.1" - -"postcss-modules-values@^1.3.0": - "integrity" "sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==" - "resolved" "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "icss-replace-symbols" "^1.1.0" - "postcss" "^6.0.1" - -"postcss-normalize-charset@^4.0.1": - "integrity" "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==" - "resolved" "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "postcss" "^7.0.0" - -"postcss-normalize-display-values@^4.0.2": - "integrity" "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==" - "resolved" "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-positions@^4.0.2": - "integrity" "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-repeat-style@^4.0.2": - "integrity" "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==" - "resolved" "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-string@^4.0.2": - "integrity" "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-timing-functions@^4.0.2": - "integrity" "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==" - "resolved" "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-match" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-unicode@^4.0.1": - "integrity" "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==" - "resolved" "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "browserslist" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-url@^4.0.1": - "integrity" "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "is-absolute-url" "^2.0.0" - "normalize-url" "^3.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-normalize-whitespace@^4.0.2": - "integrity" "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==" - "resolved" "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-ordered-values@^4.1.2": - "integrity" "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==" - "resolved" "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "cssnano-util-get-arguments" "^4.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-reduce-initial@^4.0.3": - "integrity" "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==" - "resolved" "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "browserslist" "^4.0.0" - "caniuse-api" "^3.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - -"postcss-reduce-transforms@^4.0.2": - "integrity" "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==" - "resolved" "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "cssnano-util-get-match" "^4.0.0" - "has" "^1.0.0" - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - -"postcss-selector-parser@^3.0.0": - "integrity" "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "dot-prop" "^5.2.0" - "indexes-of" "^1.0.1" - "uniq" "^1.0.1" - -"postcss-selector-parser@^6.0.0", "postcss-selector-parser@^6.0.2": - "integrity" "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==" - "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" - "version" "6.0.13" - dependencies: - "cssesc" "^3.0.0" - "util-deprecate" "^1.0.2" - -"postcss-svgo@^4.0.3": - "integrity" "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==" - "resolved" "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "postcss" "^7.0.0" - "postcss-value-parser" "^3.0.0" - "svgo" "^1.0.0" - -"postcss-unique-selectors@^4.0.1": - "integrity" "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==" - "resolved" "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "alphanum-sort" "^1.0.0" - "postcss" "^7.0.0" - "uniqs" "^2.0.0" - -"postcss-value-parser@^3.0.0": - "integrity" "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" - "version" "3.3.1" - -"postcss-value-parser@^3.3.0": - "integrity" "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz" - "version" "3.3.1" - -"postcss-value-parser@^4.0.2", "postcss-value-parser@^4.1.0": - "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - "version" "4.2.0" - -"postcss@^6.0.1": - "integrity" "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz" - "version" "6.0.23" - dependencies: - "chalk" "^2.4.1" - "source-map" "^0.6.1" - "supports-color" "^5.4.0" - -"postcss@^6.0.23": - "integrity" "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz" - "version" "6.0.23" - dependencies: - "chalk" "^2.4.1" - "source-map" "^0.6.1" - "supports-color" "^5.4.0" - -"postcss@^7.0.0", "postcss@^7.0.1", "postcss@^7.0.14", "postcss@^7.0.27", "postcss@^7.0.32", "postcss@^7.0.36": - "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" - "version" "7.0.39" - dependencies: - "picocolors" "^0.2.1" - "source-map" "^0.6.1" - -"postcss@^8.4.14": - "integrity" "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz" - "version" "8.4.31" - dependencies: - "nanoid" "^3.3.6" - "picocolors" "^1.0.0" - "source-map-js" "^1.0.2" - -"prettier@^1.18.2 || ^2.0.0": - "integrity" "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==" - "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" - "version" "2.8.8" - -"private@~0.1.5": - "integrity" "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" - "resolved" "https://registry.npmjs.org/private/-/private-0.1.8.tgz" - "version" "0.1.8" - -"process-nextick-args@~2.0.0": - "integrity" "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz" - "version" "2.0.0" - -"process@^0.11.10": - "integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - "version" "0.11.10" - -"promise-inflight@^1.0.1": - "integrity" "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" - "resolved" "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" - "version" "1.0.1" - -"promise@^7.3.1": - "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" - "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz" - "version" "7.3.1" - dependencies: - "asap" "~2.0.3" - -"proxy-addr@~2.0.7": - "integrity" "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==" - "resolved" "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" - "version" "2.0.7" - dependencies: - "forwarded" "0.2.0" - "ipaddr.js" "1.9.1" - -"prr@~1.0.1": - "integrity" "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" - "resolved" "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" - "version" "1.0.1" - -"pseudomap@^1.0.2": - "integrity" "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - "resolved" "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - "version" "1.0.2" - -"public-encrypt@^4.0.0": - "integrity" "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==" - "resolved" "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "bn.js" "^4.1.0" - "browserify-rsa" "^4.0.0" - "create-hash" "^1.1.0" - "parse-asn1" "^5.0.0" - "randombytes" "^2.0.1" - "safe-buffer" "^5.1.2" - -"pump@^2.0.0": - "integrity" "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==" - "resolved" "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" - -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" - -"pumpify@^1.3.3": - "integrity" "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==" - "resolved" "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "duplexify" "^3.6.0" - "inherits" "^2.0.3" - "pump" "^2.0.0" - -"punycode@^1.2.4", "punycode@^1.4.1": - "integrity" "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - "version" "1.4.1" - -"punycode@^2.1.0": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" - -"purgecss-webpack-plugin@^1.3.0": - "integrity" "sha512-ZSU6lok2DuDBuR7VCte5V12eke0Tx8xsCKxMbOnMfuJNPccPGv4jflRUm2Wvr2yGB8lFzKNZaTWaSk9g3kCv5A==" - "resolved" "https://registry.npmjs.org/purgecss-webpack-plugin/-/purgecss-webpack-plugin-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "purgecss" "^1.3.0" - "webpack-sources" "^1.3.0" - -"purgecss@^1.3.0": - "integrity" "sha512-0UMnr8aUsPO7RbzAT72UELRvwMHhadtuunDm7rcgRS6b8pCVO8yglIqikiYFwQk2XP606mk+GpjI1G74Auxgtg==" - "resolved" "https://registry.npmjs.org/purgecss/-/purgecss-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "glob" "^7.1.3" - "postcss" "^7.0.14" - "postcss-selector-parser" "^6.0.0" - "yargs" "^13.2.2" - -"q@^1.1.2": - "integrity" "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - "resolved" "https://registry.npmjs.org/q/-/q-1.5.1.tgz" - "version" "1.5.1" - -"qs@^6.11.2": - "integrity" "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" - "version" "6.11.2" - dependencies: - "side-channel" "^1.0.4" - -"qs@6.11.0": - "integrity" "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" - "version" "6.11.0" - dependencies: - "side-channel" "^1.0.4" - -"querystring-es3@^0.2.0": - "integrity" "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" - "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - "version" "0.2.1" - -"querystringify@^2.1.1": - "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - "version" "2.2.0" - -"randombytes@^2.0.0", "randombytes@^2.0.1", "randombytes@^2.0.5", "randombytes@^2.1.0": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"randomfill@^1.0.3": - "integrity" "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==" - "resolved" "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "randombytes" "^2.0.5" - "safe-buffer" "^5.1.0" - -"range-parser@^1.2.1", "range-parser@~1.2.1": - "integrity" "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - "resolved" "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" - "version" "1.2.1" - -"raw-body@2.5.1": - "integrity" "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - "version" "2.5.1" - dependencies: - "bytes" "3.1.2" - "http-errors" "2.0.0" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"readable-stream@^2.0.0", "readable-stream@^2.0.1", "readable-stream@^2.0.2", "readable-stream@^2.1.5", "readable-stream@^2.2.2", "readable-stream@^2.3.3", "readable-stream@^2.3.6", "readable-stream@~2.3.6", "readable-stream@1 || 2": - "integrity" "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz" - "version" "2.3.6" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.3" - "isarray" "~1.0.0" - "process-nextick-args" "~2.0.0" - "safe-buffer" "~5.1.1" - "string_decoder" "~1.1.1" - "util-deprecate" "~1.0.1" - -"readable-stream@^3.0.6": - "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - "version" "3.6.2" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.6.0": - "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - "version" "3.6.2" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.6.2": - "integrity" "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - "version" "3.6.2" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readdirp@^2.2.1": - "integrity" "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "graceful-fs" "^4.1.11" - "micromatch" "^3.1.10" - "readable-stream" "^2.0.2" - -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "picomatch" "^2.2.1" - -"recast@~0.11.12": - "integrity" "sha512-+nixG+3NugceyR8O1bLU45qs84JgI3+8EauyRZafLgC9XbdAOIVgwV1Pe2da0YzGo62KzWoZwUpVEQf6qNAXWA==" - "resolved" "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz" - "version" "0.11.23" - dependencies: - "ast-types" "0.9.6" - "esprima" "~3.1.0" - "private" "~0.1.5" - "source-map" "~0.5.0" - -"regenerate-unicode-properties@^10.1.0": - "integrity" "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==" - "resolved" "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz" - "version" "10.1.1" - dependencies: - "regenerate" "^1.4.2" - -"regenerate@^1.4.2": - "integrity" "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - "resolved" "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" - "version" "1.4.2" - -"regenerator-runtime@^0.14.0": - "integrity" "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz" - "version" "0.14.0" - -"regenerator-transform@^0.15.2": - "integrity" "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==" - "resolved" "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz" - "version" "0.15.2" - dependencies: - "@babel/runtime" "^7.8.4" - -"regex-not@^1.0.0", "regex-not@^1.0.2": - "integrity" "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==" - "resolved" "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "extend-shallow" "^3.0.2" - "safe-regex" "^1.1.0" - -"regexp.prototype.flags@^1.2.0", "regexp.prototype.flags@^1.5.1": - "integrity" "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==" - "resolved" "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz" - "version" "1.5.1" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "set-function-name" "^2.0.0" - -"regexpu-core@^5.3.1": - "integrity" "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==" - "resolved" "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" - "version" "5.3.2" - dependencies: - "@babel/regjsgen" "^0.8.0" - "regenerate" "^1.4.2" - "regenerate-unicode-properties" "^10.1.0" - "regjsparser" "^0.9.1" - "unicode-match-property-ecmascript" "^2.0.0" - "unicode-match-property-value-ecmascript" "^2.1.0" - -"regjsparser@^0.9.1": - "integrity" "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" - "resolved" "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" - "version" "0.9.1" - dependencies: - "jsesc" "~0.5.0" - -"relateurl@0.2.x": - "integrity" "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" - "resolved" "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" - "version" "0.2.7" - -"remove-trailing-separator@^1.0.1": - "integrity" "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - "resolved" "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" - "version" "1.1.0" - -"repeat-element@^1.1.2": - "integrity" "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - "resolved" "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" - "version" "1.1.3" - -"repeat-string@^1.6.1": - "integrity" "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - "version" "1.6.1" - -"replace-ext@^1.0.0": - "integrity" "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" - "resolved" "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz" - "version" "1.0.1" - -"require-directory@^2.1.1": - "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" - -"require-main-filename@^2.0.0": - "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" - "version" "2.0.0" - -"requires-port@^1.0.0": - "integrity" "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" - -"resolve-cwd@^2.0.0": - "integrity" "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==" - "resolved" "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "resolve-from" "^3.0.0" - -"resolve-dir@^1.0.0", "resolve-dir@^1.0.1": - "integrity" "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==" - "resolved" "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "expand-tilde" "^2.0.0" - "global-modules" "^1.0.0" - -"resolve-from@^3.0.0": - "integrity" "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" - "version" "3.0.0" - -"resolve-url@^0.2.1": - "integrity" "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - "resolved" "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" - "version" "0.2.1" - -"resolve@^1.14.2": - "integrity" "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" - "version" "1.22.8" - dependencies: - "is-core-module" "^2.13.0" - "path-parse" "^1.0.7" - "supports-preserve-symlinks-flag" "^1.0.0" - -"ret@~0.1.10": - "integrity" "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - "resolved" "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" - "version" "0.1.15" - -"retry@^0.12.0": - "integrity" "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" - "version" "0.12.0" - -"rgb-regex@^1.0.1": - "integrity" "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==" - "resolved" "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz" - "version" "1.0.1" - -"rgba-regex@^1.0.0": - "integrity" "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==" - "resolved" "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz" - "version" "1.0.0" - -"rimraf@^2.5.4", "rimraf@^2.6.3", "rimraf@^2.7.1": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "glob" "^7.1.3" - -"ripemd160@^2.0.0", "ripemd160@^2.0.1": - "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" - "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - -"run-queue@^1.0.0", "run-queue@^1.0.3": - "integrity" "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==" - "resolved" "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "aproba" "^1.1.1" - -"safe-array-concat@^1.0.0", "safe-array-concat@^1.0.1": - "integrity" "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==" - "resolved" "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.2.1" - "has-symbols" "^1.0.3" - "isarray" "^2.0.5" - -"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@>=5.1.0", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-buffer@^5.2.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@^5.2.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@~5.2.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@5.2.1": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-regex-test@^1.0.0": - "integrity" "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" - "resolved" "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.3" - "is-regex" "^1.1.4" - -"safe-regex@^1.1.0": - "integrity" "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=" - "resolved" "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "ret" "~0.1.10" - -"safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" - -"sass-loader@^8.0.2": - "integrity" "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==" - "resolved" "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz" - "version" "8.0.2" - dependencies: - "clone-deep" "^4.0.1" - "loader-utils" "^1.2.3" - "neo-async" "^2.6.1" - "schema-utils" "^2.6.1" - "semver" "^6.3.0" - -"sass@^1.3.0", "sass@^1.69.5": - "integrity" "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==" - "resolved" "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz" - "version" "1.69.5" - dependencies: - "chokidar" ">=3.0.0 <4.0.0" - "immutable" "^4.0.0" - "source-map-js" ">=0.6.2 <2.0.0" - -"sax@~1.2.4": - "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - "version" "1.2.4" - -"schema-utils@^0.4.5": - "integrity" "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz" - "version" "0.4.7" - dependencies: - "ajv" "^6.1.0" - "ajv-keywords" "^3.1.0" - -"schema-utils@^1.0.0": - "integrity" "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "ajv" "^6.1.0" - "ajv-errors" "^1.0.0" - "ajv-keywords" "^3.1.0" - -"schema-utils@^2.6.1": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.6.5": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"schema-utils@^2.6.6": - "integrity" "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "@types/json-schema" "^7.0.5" - "ajv" "^6.12.4" - "ajv-keywords" "^3.5.2" - -"select-hose@^2.0.0": - "integrity" "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" - "resolved" "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" - "version" "2.0.0" - -"selfsigned@^1.10.8": - "integrity" "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==" - "resolved" "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz" - "version" "1.10.14" - dependencies: - "node-forge" "^0.10.0" - -"semver@^5.5.0", "semver@^5.6.0": - "integrity" "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz" - "version" "5.7.0" - -"semver@^6.0.0": - "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - "version" "6.3.1" - -"semver@^6.3.0": - "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - "version" "6.3.1" - -"semver@^6.3.1": - "integrity" "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" - "version" "6.3.1" - -"send@0.18.0": - "integrity" "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==" - "resolved" "https://registry.npmjs.org/send/-/send-0.18.0.tgz" - "version" "0.18.0" - dependencies: - "debug" "2.6.9" - "depd" "2.0.0" - "destroy" "1.2.0" - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "etag" "~1.8.1" - "fresh" "0.5.2" - "http-errors" "2.0.0" - "mime" "1.6.0" - "ms" "2.1.3" - "on-finished" "2.4.1" - "range-parser" "~1.2.1" - "statuses" "2.0.1" - -"serialize-javascript@^4.0.0": - "integrity" "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==" - "resolved" "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "randombytes" "^2.1.0" - -"serve-index@^1.9.1": - "integrity" "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==" - "resolved" "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" - "version" "1.9.1" - dependencies: - "accepts" "~1.3.4" - "batch" "0.6.1" - "debug" "2.6.9" - "escape-html" "~1.0.3" - "http-errors" "~1.6.2" - "mime-types" "~2.1.17" - "parseurl" "~1.3.2" - -"serve-static@1.15.0": - "integrity" "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==" - "resolved" "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" - "version" "1.15.0" - dependencies: - "encodeurl" "~1.0.2" - "escape-html" "~1.0.3" - "parseurl" "~1.3.3" - "send" "0.18.0" - -"set-blocking@^2.0.0": - "integrity" "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - "version" "2.0.0" - -"set-function-length@^1.1.1": - "integrity" "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==" - "resolved" "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "define-data-property" "^1.1.1" - "get-intrinsic" "^1.2.1" - "gopd" "^1.0.1" - "has-property-descriptors" "^1.0.0" - -"set-function-name@^2.0.0": - "integrity" "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==" - "resolved" "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "define-data-property" "^1.0.1" - "functions-have-names" "^1.2.3" - "has-property-descriptors" "^1.0.0" - -"set-value@^0.4.3": - "integrity" "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=" - "resolved" "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz" - "version" "0.4.3" - dependencies: - "extend-shallow" "^2.0.1" - "is-extendable" "^0.1.1" - "is-plain-object" "^2.0.1" - "to-object-path" "^0.3.0" - -"set-value@^2.0.0": - "integrity" "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==" - "resolved" "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "extend-shallow" "^2.0.1" - "is-extendable" "^0.1.1" - "is-plain-object" "^2.0.3" - "split-string" "^3.0.1" - -"setimmediate@^1.0.4": - "integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - "version" "1.0.5" - -"setprototypeof@1.1.0": - "integrity" "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - "version" "1.1.0" - -"setprototypeof@1.2.0": - "integrity" "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" - "version" "1.2.0" - -"sha.js@^2.4.0", "sha.js@^2.4.8": - "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" - "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - "version" "2.4.11" - dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"shallow-clone@^3.0.0": - "integrity" "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==" - "resolved" "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^6.0.2" - -"shebang-command@^1.2.0": - "integrity" "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "shebang-regex" "^1.0.0" - -"shebang-regex@^1.0.0": - "integrity" "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - "version" "1.0.0" - -"shellwords@^0.1.1": - "integrity" "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" - "resolved" "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz" - "version" "0.1.1" - -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" - -"signal-exit@^3.0.0": - "integrity" "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" - "version" "3.0.2" - -"simple-swizzle@^0.2.2": - "integrity" "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==" - "resolved" "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz" - "version" "0.2.2" - dependencies: - "is-arrayish" "^0.3.1" - -"slash@^1.0.0": - "integrity" "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==" - "resolved" "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" - "version" "1.0.0" - -"snapdragon-node@^2.0.1": - "integrity" "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==" - "resolved" "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "define-property" "^1.0.0" - "isobject" "^3.0.0" - "snapdragon-util" "^3.0.1" - -"snapdragon-util@^3.0.1": - "integrity" "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==" - "resolved" "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^3.2.0" - -"snapdragon@^0.8.1": - "integrity" "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==" - "resolved" "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" - "version" "0.8.2" - dependencies: - "base" "^0.11.1" - "debug" "^2.2.0" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "map-cache" "^0.2.2" - "source-map" "^0.5.6" - "source-map-resolve" "^0.5.0" - "use" "^3.1.0" - -"sockjs-client@^1.5.0": - "integrity" "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==" - "resolved" "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz" - "version" "1.6.1" - dependencies: - "debug" "^3.2.7" - "eventsource" "^2.0.2" - "faye-websocket" "^0.11.4" - "inherits" "^2.0.4" - "url-parse" "^1.5.10" - -"sockjs@^0.3.21": - "integrity" "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==" - "resolved" "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" - "version" "0.3.24" - dependencies: - "faye-websocket" "^0.11.3" - "uuid" "^8.3.2" - "websocket-driver" "^0.7.4" - -"sortablejs@^1.8.4": - "integrity" "sha512-Ot6bYJ6PoqPmpsqQYXjn1+RKrY2NWQvQt/o4jfd/UYwVWndyO5EPO8YHbnm5HIykf8ENsm4JUrdAvolPT86yYA==" - "resolved" "https://registry.npmjs.org/sortablejs/-/sortablejs-1.9.0.tgz" - "version" "1.9.0" - -"source-list-map@^2.0.0": - "integrity" "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - "resolved" "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" - "version" "2.0.1" - -"source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0": - "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - "version" "1.0.2" - -"source-map-resolve@^0.5.0": - "integrity" "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==" - "resolved" "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz" - "version" "0.5.2" - dependencies: - "atob" "^2.1.1" - "decode-uri-component" "^0.2.0" - "resolve-url" "^0.2.1" - "source-map-url" "^0.4.0" - "urix" "^0.1.0" - -"source-map-support@~0.5.10", "source-map-support@~0.5.12": - "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==" - "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - "version" "0.5.21" - dependencies: - "buffer-from" "^1.0.0" - "source-map" "^0.6.0" - -"source-map-url@^0.4.0": - "integrity" "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - "resolved" "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" - "version" "0.4.0" - -"source-map@^0.5.6", "source-map@~0.5.0": - "integrity" "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - "version" "0.5.7" - -"source-map@^0.6.0": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"source-map@^0.6.1", "source-map@~0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"source-map@~0.6.0": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"spdy-transport@^3.0.0": - "integrity" "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==" - "resolved" "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "debug" "^4.1.0" - "detect-node" "^2.0.4" - "hpack.js" "^2.1.6" - "obuf" "^1.1.2" - "readable-stream" "^3.0.6" - "wbuf" "^1.7.3" - -"spdy@^4.0.2": - "integrity" "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==" - "resolved" "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" - "version" "4.0.2" - dependencies: - "debug" "^4.1.0" - "handle-thing" "^2.0.0" - "http-deceiver" "^1.2.7" - "select-hose" "^2.0.0" - "spdy-transport" "^3.0.0" - -"split-string@^3.0.1", "split-string@^3.0.2": - "integrity" "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==" - "resolved" "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "extend-shallow" "^3.0.0" - -"sprintf-js@~1.0.2": - "integrity" "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"ssri@^6.0.1": - "integrity" "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "figgy-pudding" "^3.5.1" - -"ssri@^7.0.0": - "integrity" "sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw==" - "resolved" "https://registry.npmjs.org/ssri/-/ssri-7.1.1.tgz" - "version" "7.1.1" - dependencies: - "figgy-pudding" "^3.5.1" - "minipass" "^3.1.1" - -"stable@^0.1.8": - "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - "version" "0.1.8" - -"stackframe@^1.0.4": - "integrity" "sha512-to7oADIniaYwS3MhtCa/sQhrxidCCQiF/qp4/m5iN3ipf0Y7Xlri0f6eG29r08aL7JYl8n32AF3Q5GYBZ7K8vw==" - "resolved" "https://registry.npmjs.org/stackframe/-/stackframe-1.0.4.tgz" - "version" "1.0.4" - -"static-extend@^0.1.1": - "integrity" "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=" - "resolved" "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "define-property" "^0.2.5" - "object-copy" "^0.1.0" - -"statuses@>= 1.4.0 < 2": - "integrity" "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" - -"statuses@2.0.1": - "integrity" "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" - "version" "2.0.1" - -"stream-browserify@^2.0.1": - "integrity" "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==" - "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "inherits" "~2.0.1" - "readable-stream" "^2.0.2" - -"stream-each@^1.1.0": - "integrity" "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==" - "resolved" "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz" - "version" "1.2.3" - dependencies: - "end-of-stream" "^1.1.0" - "stream-shift" "^1.0.0" - -"stream-http@^2.7.2": - "integrity" "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==" - "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" - "version" "2.8.3" - dependencies: - "builtin-status-codes" "^3.0.0" - "inherits" "^2.0.1" - "readable-stream" "^2.3.6" - "to-arraybuffer" "^1.0.0" - "xtend" "^4.0.0" - -"stream-shift@^1.0.0": - "integrity" "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - "resolved" "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" - "version" "1.0.1" - -"string_decoder@^1.0.0", "string_decoder@^1.1.1": - "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "safe-buffer" "~5.2.0" - -"string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "safe-buffer" "~5.1.0" - -"string-width@^1.0.1": - "integrity" "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "code-point-at" "^1.0.0" - "is-fullwidth-code-point" "^1.0.0" - "strip-ansi" "^3.0.0" - -"string-width@^2.0.0": - "integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^4.0.0" - -"string-width@^2.1.1": - "integrity" "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^4.0.0" - -"string-width@^3.0.0", "string-width@^3.1.0": - "integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "emoji-regex" "^7.0.1" - "is-fullwidth-code-point" "^2.0.0" - "strip-ansi" "^5.1.0" - -"string-width@^4.1.0", "string-width@^4.2.0": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" - dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" - -"string.prototype.trim@^1.2.8": - "integrity" "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==" - "resolved" "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz" - "version" "1.2.8" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"string.prototype.trimend@^1.0.7": - "integrity" "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==" - "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"string.prototype.trimstart@^1.0.7": - "integrity" "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==" - "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.2.0" - "es-abstract" "^1.22.1" - -"strip-ansi@^3.0.0", "strip-ansi@^3.0.1": - "integrity" "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "ansi-regex" "^2.0.0" - -"strip-ansi@^4.0.0": - "integrity" "sha1-qEeQIusaw2iocTibY1JixQXuNo8=" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-regex" "^3.0.0" - -"strip-ansi@^5.0.0", "strip-ansi@^5.1.0", "strip-ansi@^5.2.0": - "integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz" - "version" "5.2.0" - dependencies: - "ansi-regex" "^4.1.0" - -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" - dependencies: - "ansi-regex" "^5.0.1" - -"strip-eof@^1.0.0": - "integrity" "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - "resolved" "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - "version" "1.0.0" - -"style-loader@^0.23.1": - "integrity" "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==" - "resolved" "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz" - "version" "0.23.1" - dependencies: - "loader-utils" "^1.1.0" - "schema-utils" "^1.0.0" - -"stylehacks@^4.0.0": - "integrity" "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==" - "resolved" "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "browserslist" "^4.0.0" - "postcss" "^7.0.0" - "postcss-selector-parser" "^3.0.0" - -"supports-color@^2.0.0": - "integrity" "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - "version" "2.0.0" - -"supports-color@^5.3.0", "supports-color@^5.4.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^6.1.0": - "integrity" "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "has-flag" "^3.0.0" - -"supports-color@^7.0.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" - dependencies: - "has-flag" "^4.0.0" - -"supports-preserve-symlinks-flag@^1.0.0": - "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - "version" "1.0.0" - -"svgo@^1.0.0": - "integrity" "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "chalk" "^2.4.1" - "coa" "^2.0.2" - "css-select" "^2.0.0" - "css-select-base-adapter" "^0.1.1" - "css-tree" "1.0.0-alpha.37" - "csso" "^4.0.2" - "js-yaml" "^3.13.1" - "mkdirp" "~0.5.1" - "object.values" "^1.1.0" - "sax" "~1.2.4" - "stable" "^0.1.8" - "unquote" "~1.1.1" - "util.promisify" "~1.0.0" - -"sweetalert2@^6.8.0": - "integrity" "sha512-8Otu1SlWGS/u3e31cOg+uqrwyoQbByEScKp7UupmCfwEZE9St3coO1e6CXv83YzZtzdDgowdK1hBPKPW7SRp4Q==" - "resolved" "https://registry.npmjs.org/sweetalert2/-/sweetalert2-6.11.5.tgz" - "version" "6.11.5" - -"tapable@^1.0.0", "tapable@^1.1.3": - "integrity" "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" - "resolved" "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - "version" "1.1.3" - -"terser-webpack-plugin@^1.4.3": - "integrity" "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz" - "version" "1.4.5" - dependencies: - "cacache" "^12.0.2" - "find-cache-dir" "^2.1.0" - "is-wsl" "^1.1.0" - "schema-utils" "^1.0.0" - "serialize-javascript" "^4.0.0" - "source-map" "^0.6.1" - "terser" "^4.1.2" - "webpack-sources" "^1.4.0" - "worker-farm" "^1.7.0" - -"terser-webpack-plugin@^2.2.3": - "integrity" "sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==" - "resolved" "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz" - "version" "2.3.8" - dependencies: - "cacache" "^13.0.1" - "find-cache-dir" "^3.3.1" - "jest-worker" "^25.4.0" - "p-limit" "^2.3.0" - "schema-utils" "^2.6.6" - "serialize-javascript" "^4.0.0" - "source-map" "^0.6.1" - "terser" "^4.6.12" - "webpack-sources" "^1.4.3" - -"terser@^3.11.0": - "integrity" "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==" - "resolved" "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz" - "version" "3.17.0" - dependencies: - "commander" "^2.19.0" - "source-map" "~0.6.1" - "source-map-support" "~0.5.10" - -"terser@^4.1.2": - "integrity" "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" - "version" "4.8.1" - dependencies: - "commander" "^2.20.0" - "source-map" "~0.6.1" - "source-map-support" "~0.5.12" - -"terser@^4.6.12": - "integrity" "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==" - "resolved" "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz" - "version" "4.8.1" - dependencies: - "commander" "^2.20.0" - "source-map" "~0.6.1" - "source-map-support" "~0.5.12" - -"through@~2.3.6": - "integrity" "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"through2@^2.0.0": - "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" - "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "readable-stream" "~2.3.6" - "xtend" "~4.0.1" - -"thunky@^1.0.2": - "integrity" "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - "resolved" "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" - "version" "1.1.0" - -"timers-browserify@^2.0.4": - "integrity" "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==" - "resolved" "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" - "version" "2.0.12" - dependencies: - "setimmediate" "^1.0.4" - -"timsort@^0.3.0": - "integrity" "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==" - "resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" - "version" "0.3.0" - -"to-arraybuffer@^1.0.0": - "integrity" "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" - "resolved" "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" - "version" "1.0.1" - -"to-fast-properties@^2.0.0": - "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" - -"to-object-path@^0.3.0": - "integrity" "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=" - "resolved" "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "kind-of" "^3.0.2" - -"to-regex-range@^2.1.0": - "integrity" "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"to-regex@^3.0.1", "to-regex@^3.0.2": - "integrity" "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==" - "resolved" "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "regex-not" "^1.0.2" - "safe-regex" "^1.1.0" - -"toidentifier@1.0.1": - "integrity" "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" - "version" "1.0.1" - -"tty-browserify@0.0.0": - "integrity" "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" - "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - "version" "0.0.0" - -"type-is@~1.6.18": - "integrity" "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" - "resolved" "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - "version" "1.6.18" - dependencies: - "media-typer" "0.3.0" - "mime-types" "~2.1.24" - -"typed-array-buffer@^1.0.0": - "integrity" "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==" - "resolved" "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.2.1" - "is-typed-array" "^1.1.10" - -"typed-array-byte-length@^1.0.0": - "integrity" "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==" - "resolved" "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "has-proto" "^1.0.1" - "is-typed-array" "^1.1.10" - -"typed-array-byte-offset@^1.0.0": - "integrity" "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==" - "resolved" "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "has-proto" "^1.0.1" - "is-typed-array" "^1.1.10" - -"typed-array-length@^1.0.4": - "integrity" "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==" - "resolved" "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.2" - "for-each" "^0.3.3" - "is-typed-array" "^1.1.9" - -"typedarray@^0.0.6": - "integrity" "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - "resolved" "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" - "version" "0.0.6" - -"uglify-js@3.4.x": - "integrity" "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==" - "resolved" "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz" - "version" "3.4.10" - dependencies: - "commander" "~2.19.0" - "source-map" "~0.6.1" - -"unbox-primitive@^1.0.2": - "integrity" "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" - "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "call-bind" "^1.0.2" - "has-bigints" "^1.0.2" - "has-symbols" "^1.0.3" - "which-boxed-primitive" "^1.0.2" - -"undici-types@~5.26.4": - "integrity" "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - "resolved" "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" - "version" "5.26.5" - -"unicode-canonical-property-names-ecmascript@^2.0.0": - "integrity" "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" - "resolved" "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" - "version" "2.0.0" - -"unicode-match-property-ecmascript@^2.0.0": - "integrity" "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==" - "resolved" "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "unicode-canonical-property-names-ecmascript" "^2.0.0" - "unicode-property-aliases-ecmascript" "^2.0.0" - -"unicode-match-property-value-ecmascript@^2.1.0": - "integrity" "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" - "resolved" "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"unicode-property-aliases-ecmascript@^2.0.0": - "integrity" "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" - "resolved" "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" - "version" "2.1.0" - -"union-value@^1.0.0": - "integrity" "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=" - "resolved" "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "arr-union" "^3.1.0" - "get-value" "^2.0.6" - "is-extendable" "^0.1.1" - "set-value" "^0.4.3" - -"uniq@^1.0.1": - "integrity" "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==" - "resolved" "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" - "version" "1.0.1" - -"uniqs@^2.0.0": - "integrity" "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==" - "resolved" "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" - "version" "2.0.0" - -"unique-filename@^1.1.1": - "integrity" "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==" - "resolved" "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "unique-slug" "^2.0.0" - -"unique-slug@^2.0.0": - "integrity" "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==" - "resolved" "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "imurmurhash" "^0.1.4" - -"universalify@^0.1.0": - "integrity" "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - "resolved" "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" - "version" "0.1.2" - -"unpipe@~1.0.0", "unpipe@1.0.0": - "integrity" "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" - -"unquote@~1.1.1": - "integrity" "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - "resolved" "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" - "version" "1.1.1" - -"unset-value@^1.0.0": - "integrity" "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=" - "resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-value" "^0.3.1" - "isobject" "^3.0.0" - -"upath@^1.1.1": - "integrity" "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==" - "resolved" "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz" - "version" "1.1.2" - -"update-browserslist-db@^1.0.13": - "integrity" "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==" - "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz" - "version" "1.0.13" - dependencies: - "escalade" "^3.1.1" - "picocolors" "^1.0.0" - -"upper-case@^1.1.1": - "integrity" "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==" - "resolved" "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" - "version" "1.1.3" - -"uri-js@^4.2.2": - "integrity" "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz" - "version" "4.2.2" - dependencies: - "punycode" "^2.1.0" - -"urix@^0.1.0": - "integrity" "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - "resolved" "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" - "version" "0.1.0" - -"url-parse@^1.5.10": - "integrity" "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" - "version" "1.5.10" - dependencies: - "querystringify" "^2.1.1" - "requires-port" "^1.0.0" - -"url@^0.11.0": - "integrity" "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==" - "resolved" "https://registry.npmjs.org/url/-/url-0.11.3.tgz" - "version" "0.11.3" - dependencies: - "punycode" "^1.4.1" - "qs" "^6.11.2" - -"use@^3.1.0": - "integrity" "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - "resolved" "https://registry.npmjs.org/use/-/use-3.1.1.tgz" - "version" "3.1.1" - -"util-deprecate@^1.0.1", "util-deprecate@^1.0.2", "util-deprecate@~1.0.1": - "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" - -"util.promisify@~1.0.0": - "integrity" "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==" - "resolved" "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "define-properties" "^1.1.3" - "es-abstract" "^1.17.2" - "has-symbols" "^1.0.1" - "object.getownpropertydescriptors" "^2.1.0" - -"util@^0.10.4": - "integrity" "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==" - "resolved" "https://registry.npmjs.org/util/-/util-0.10.4.tgz" - "version" "0.10.4" - dependencies: - "inherits" "2.0.3" - -"util@^0.11.0": - "integrity" "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==" - "resolved" "https://registry.npmjs.org/util/-/util-0.11.1.tgz" - "version" "0.11.1" - dependencies: - "inherits" "2.0.3" - -"utils-merge@1.0.1": - "integrity" "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" - "resolved" "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - "version" "1.0.1" - -"uuid@^3.3.2": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" - -"uuid@^8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" - -"v8-compile-cache@^2.1.1": - "integrity" "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" - "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz" - "version" "2.4.0" - -"vary@~1.1.2": - "integrity" "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" - "resolved" "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" - "version" "1.1.2" - -"vendors@^1.0.0": - "integrity" "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" - "resolved" "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz" - "version" "1.0.4" - -"vm-browserify@^1.0.1": - "integrity" "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - "resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" - "version" "1.1.2" - -"vue-hot-reload-api@^2.3.0": - "integrity" "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==" - "resolved" "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz" - "version" "2.3.4" - -"vue-loader@^15.4.2": - "integrity" "sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==" - "resolved" "https://registry.npmjs.org/vue-loader/-/vue-loader-15.11.1.tgz" - "version" "15.11.1" - dependencies: - "@vue/component-compiler-utils" "^3.1.0" - "hash-sum" "^1.0.2" - "loader-utils" "^1.1.0" - "vue-hot-reload-api" "^2.3.0" - "vue-style-loader" "^4.1.0" - -"vue-style-loader@^4.1.0": - "integrity" "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==" - "resolved" "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz" - "version" "4.1.3" - dependencies: - "hash-sum" "^1.0.2" - "loader-utils" "^1.0.2" - -"vue-template-compiler@^2.7.15": - "integrity" "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==" - "resolved" "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz" - "version" "2.7.15" - dependencies: - "de-indent" "^1.0.2" - "he" "^1.2.0" - -"vue-template-es2015-compiler@^1.9.0": - "integrity" "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==" - "resolved" "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz" - "version" "1.9.1" - -"vue@^2.7.15": - "integrity" "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==" - "resolved" "https://registry.npmjs.org/vue/-/vue-2.7.15.tgz" - "version" "2.7.15" - dependencies: - "@vue/compiler-sfc" "2.7.15" - "csstype" "^3.1.0" - -"watchpack-chokidar2@^2.0.1": - "integrity" "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==" - "resolved" "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "chokidar" "^2.1.8" - -"watchpack@^1.7.4": - "integrity" "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz" - "version" "1.7.5" - dependencies: - "graceful-fs" "^4.1.2" - "neo-async" "^2.5.0" - optionalDependencies: - "chokidar" "^3.4.1" - "watchpack-chokidar2" "^2.0.1" - -"wbuf@^1.1.0", "wbuf@^1.7.3": - "integrity" "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==" - "resolved" "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" - "version" "1.7.3" - dependencies: - "minimalistic-assert" "^1.0.0" - -"webpack-cli@^3.1.2": - "integrity" "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==" - "resolved" "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz" - "version" "3.3.12" - dependencies: - "chalk" "^2.4.2" - "cross-spawn" "^6.0.5" - "enhanced-resolve" "^4.1.1" - "findup-sync" "^3.0.0" - "global-modules" "^2.0.0" - "import-local" "^2.0.0" - "interpret" "^1.4.0" - "loader-utils" "^1.4.0" - "supports-color" "^6.1.0" - "v8-compile-cache" "^2.1.1" - "yargs" "^13.3.2" - -"webpack-dev-middleware@^3.7.2": - "integrity" "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==" - "resolved" "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz" - "version" "3.7.3" - dependencies: - "memory-fs" "^0.4.1" - "mime" "^2.4.4" - "mkdirp" "^0.5.1" - "range-parser" "^1.2.1" - "webpack-log" "^2.0.0" - -"webpack-dev-server@^3.1.14": - "integrity" "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==" - "resolved" "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz" - "version" "3.11.3" - dependencies: - "ansi-html-community" "0.0.8" - "bonjour" "^3.5.0" - "chokidar" "^2.1.8" - "compression" "^1.7.4" - "connect-history-api-fallback" "^1.6.0" - "debug" "^4.1.1" - "del" "^4.1.1" - "express" "^4.17.1" - "html-entities" "^1.3.1" - "http-proxy-middleware" "0.19.1" - "import-local" "^2.0.0" - "internal-ip" "^4.3.0" - "ip" "^1.1.5" - "is-absolute-url" "^3.0.3" - "killable" "^1.0.1" - "loglevel" "^1.6.8" - "opn" "^5.5.0" - "p-retry" "^3.0.1" - "portfinder" "^1.0.26" - "schema-utils" "^1.0.0" - "selfsigned" "^1.10.8" - "semver" "^6.3.0" - "serve-index" "^1.9.1" - "sockjs" "^0.3.21" - "sockjs-client" "^1.5.0" - "spdy" "^4.0.2" - "strip-ansi" "^3.0.1" - "supports-color" "^6.1.0" - "url" "^0.11.0" - "webpack-dev-middleware" "^3.7.2" - "webpack-log" "^2.0.0" - "ws" "^6.2.1" - "yargs" "^13.3.2" - -"webpack-log@^2.0.0": - "integrity" "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==" - "resolved" "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "ansi-colors" "^3.0.0" - "uuid" "^3.3.2" - -"webpack-merge@^4.1.0": - "integrity" "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==" - "resolved" "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "lodash" "^4.17.5" - -"webpack-notifier@^1.5.1": - "integrity" "sha512-L3UKrl500xk0VDYKkwQxy5/BPhBWsZ2xHsAx2Qe3dVKYUEk9+y690RcNTMIUcVOK2fRgK7KK3PA4ccOq1h+fTg==" - "resolved" "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "node-notifier" "^5.1.2" - "object-assign" "^4.1.0" - "strip-ansi" "^3.0.1" - -"webpack-sources@^1.1.0", "webpack-sources@^1.3.0", "webpack-sources@^1.4.0", "webpack-sources@^1.4.1", "webpack-sources@^1.4.3": - "integrity" "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==" - "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" - "version" "1.4.3" - dependencies: - "source-list-map" "^2.0.0" - "source-map" "~0.6.1" - -"webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.1.0 || ^5.0.0-0", "webpack@^4 || ^3", "webpack@^4.0.0", "webpack@^4.0.0 || ^5.0.0", "webpack@^4.36.0 || ^5.0.0", "webpack@^4.36.1", "webpack@>=2", "webpack@4.x.x": - "integrity" "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==" - "resolved" "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz" - "version" "4.47.0" - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "acorn" "^6.4.1" - "ajv" "^6.10.2" - "ajv-keywords" "^3.4.1" - "chrome-trace-event" "^1.0.2" - "enhanced-resolve" "^4.5.0" - "eslint-scope" "^4.0.3" - "json-parse-better-errors" "^1.0.2" - "loader-runner" "^2.4.0" - "loader-utils" "^1.2.3" - "memory-fs" "^0.4.1" - "micromatch" "^3.1.10" - "mkdirp" "^0.5.3" - "neo-async" "^2.6.1" - "node-libs-browser" "^2.2.1" - "schema-utils" "^1.0.0" - "tapable" "^1.1.3" - "terser-webpack-plugin" "^1.4.3" - "watchpack" "^1.7.4" - "webpack-sources" "^1.4.1" - -"websocket-driver@^0.7.4", "websocket-driver@>=0.5.1": - "integrity" "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==" - "resolved" "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" - "version" "0.7.4" - dependencies: - "http-parser-js" ">=0.5.1" - "safe-buffer" ">=5.1.0" - "websocket-extensions" ">=0.1.1" - -"websocket-extensions@>=0.1.1": - "integrity" "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" - "resolved" "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" - "version" "0.1.4" - -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" - -"which-module@^2.0.0": - "integrity" "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" - "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" - "version" "2.0.1" - -"which-typed-array@^1.1.11", "which-typed-array@^1.1.13": - "integrity" "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz" - "version" "1.1.13" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.4" - "for-each" "^0.3.3" - "gopd" "^1.0.1" - "has-tostringtag" "^1.0.0" - -"which@^1.2.14", "which@^1.2.9", "which@^1.3.0", "which@^1.3.1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "isexe" "^2.0.0" - -"worker-farm@^1.7.0": - "integrity" "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==" - "resolved" "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "errno" "~0.1.7" - -"wrap-ansi@^2.0.0": - "integrity" "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "string-width" "^1.0.1" - "strip-ansi" "^3.0.1" - -"wrap-ansi@^5.1.0": - "integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "ansi-styles" "^3.2.0" - "string-width" "^3.0.0" - "strip-ansi" "^5.0.0" - -"wrap-ansi@^6.2.0": - "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" - "version" "6.2.0" - dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - -"wrappy@1": - "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"ws@^6.2.1": - "integrity" "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==" - "resolved" "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz" - "version" "6.2.2" - dependencies: - "async-limiter" "~1.0.0" - -"xtend@^4.0.0", "xtend@~4.0.1": - "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - "version" "4.0.2" - -"y18n@^4.0.0": - "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" - "version" "4.0.3" - -"yallist@^2.1.2": - "integrity" "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" - "version" "2.1.2" - -"yallist@^3.0.2": - "integrity" "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz" - "version" "3.0.3" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yargs-parser@^13.0.0": - "integrity" "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz" - "version" "13.1.0" - dependencies: - "camelcase" "^5.0.0" - "decamelize" "^1.2.0" - -"yargs-parser@^13.1.2": - "integrity" "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz" - "version" "13.1.2" - dependencies: - "camelcase" "^5.0.0" - "decamelize" "^1.2.0" - -"yargs-parser@^18.1.2": - "integrity" "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" - "version" "18.1.3" - dependencies: - "camelcase" "^5.0.0" - "decamelize" "^1.2.0" - -"yargs@^13.2.2": - "integrity" "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz" - "version" "13.2.2" - dependencies: - "cliui" "^4.0.0" - "find-up" "^3.0.0" - "get-caller-file" "^2.0.1" - "os-locale" "^3.1.0" - "require-directory" "^2.1.1" - "require-main-filename" "^2.0.0" - "set-blocking" "^2.0.0" - "string-width" "^3.0.0" - "which-module" "^2.0.0" - "y18n" "^4.0.0" - "yargs-parser" "^13.0.0" - -"yargs@^13.3.2": - "integrity" "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz" - "version" "13.3.2" - dependencies: - "cliui" "^5.0.0" - "find-up" "^3.0.0" - "get-caller-file" "^2.0.1" - "require-directory" "^2.1.1" - "require-main-filename" "^2.0.0" - "set-blocking" "^2.0.0" - "string-width" "^3.0.0" - "which-module" "^2.0.0" - "y18n" "^4.0.0" - "yargs-parser" "^13.1.2" - -"yargs@^15.4.1": - "integrity" "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" - "version" "15.4.1" - dependencies: - "cliui" "^6.0.0" - "decamelize" "^1.2.0" - "find-up" "^4.1.0" - "get-caller-file" "^2.0.1" - "require-directory" "^2.1.1" - "require-main-filename" "^2.0.0" - "set-blocking" "^2.0.0" - "string-width" "^4.2.0" - "which-module" "^2.0.0" - "y18n" "^4.0.0" - "yargs-parser" "^18.1.2" - -"yargs@~1.2.6": - "integrity" "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz" - "version" "1.2.6" - dependencies: - "minimist" "^0.1.0"