DB_PASSWORD=database_user_password
# Mail system to use
-# Can be 'smtp', 'mail' or 'sendmail'
+# Can be 'smtp' or 'sendmail'
MAIL_DRIVER=smtp
+# Mail sender options
+MAIL_FROM_NAME=BookStack
+
# SMTP mail options
MAIL_HOST=localhost
MAIL_PORT=1025
LDAP_EMAIL_ATTRIBUTE=mail
LDAP_DISPLAY_NAME_ATTRIBUTE=cn
LDAP_FOLLOW_REFERRALS=true
+LDAP_DUMP_USER_DETAILS=false
# LDAP group sync configuration
# Refer to https://www.bookstackapp.com/docs/admin/ldap-auth/
# Example: AVATAR_URL=https://seccdn.libravatar.org/avatar/${hash}?s=${size}&d=identicon
AVATAR_URL=
-# Enable Draw.io integration
+# Enable draw.io integration
+# Can simply be true/false to enable/disable the integration.
+# Alternatively, It can be URL to the draw.io instance you want to use.
+# For URLs, The following URL parameters should be included: embed=1&proto=json&spin=1
DRAWIO=true
# Default item listing view
Randy Kim (hyunjun) :: Korean
Francesco M. Taurino (ftaurino) :: Italian
DanielFrederiksen :: Danish
-Finn Wessel (19finnwessel6) :: German
+Finn Wessel (19finnwessel6) :: German Informal; German
Gustav Kånåhols (Kurbitz) :: Swedish
+Vuong Trung Hieu (fpooon) :: Vietnamese
+Emil Petersen (emoyly) :: Danish
+mrjaboozy :: Slovenian
+Statium :: Russian
+Mikkel Struntze (MStruntze) :: Danish
+kostefun :: Russian
+Tuyen.NG (tuyendev) :: Vietnamese
+Ghost_chu (dbguichu) :: Chinese Simplified
+Ziipen :: Danish
+Samuel Schwarz (Guiph7quan) :: Czech
+Aleph (toishoki) :: Turkish
+Julio Alberto García (Yllelder) :: Spanish
+Rafael (raribeir) :: Portuguese, Brazilian
+Hiroyuki Odake (dakesan) :: Japanese
+Alex Lee (qianmengnet) :: Chinese Simplified
+swinn37 :: French
+Hasan Özbey (the-turk) :: Turkish
+rcy :: Swedish
+Ali Yasir Yılmaz (ayyilmaz) :: Turkish
+scureza :: Italian
+Biepa :: German Informal; German
+syecu :: Chinese Simplified
+Lap1t0r :: French
+Thinkverse (thinkverse) :: Swedish
+alef (toishoki) :: Turkish
+Robbert Feunekes (Muukuro) :: Dutch
+seohyeon.joo :: Korean
runs-on: ubuntu-latest
strategy:
matrix:
- php: [7.2, 7.3]
+ php: [7.2, 7.4]
steps:
- uses: actions/checkout@v1
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ matrix.php }}
+ - name: Start Database
+ run: |
+ sudo /etc/init.d/mysql start
+
- name: Setup Database
run: |
mysql -uroot -proot -e 'CREATE DATABASE IF NOT EXISTS `bookstack-test`;'
The MIT License (MIT)
-Copyright (c) 2018 Dan Brown and the BookStack Project contributors
+Copyright (c) 2020 Dan Brown and the BookStack Project contributors
https://github.com/BookStackApp/BookStack/graphs/contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
/**
* Checks if another Activity matches the general information of another.
- * @param $activityB
- * @return bool
*/
- public function isSimilarTo($activityB)
+ public function isSimilarTo(Activity $activityB): bool
{
return [$this->key, $this->entity_type, $this->entity_id] === [$activityB->key, $activityB->entity_type, $activityB->entity_id];
}
<?php namespace BookStack\Actions;
use BookStack\Auth\Permissions\PermissionService;
-use BookStack\Entities\Book;
+use BookStack\Auth\User;
use BookStack\Entities\Entity;
+use Illuminate\Support\Collection;
class ActivityService
{
/**
* ActivityService constructor.
- * @param Activity $activity
- * @param PermissionService $permissionService
*/
public function __construct(Activity $activity, PermissionService $permissionService)
{
/**
* Add activity data to database.
- * @param \BookStack\Entities\Entity $entity
- * @param string $activityKey
- * @param int $bookId
*/
- public function add(Entity $entity, string $activityKey, int $bookId = null)
+ public function add(Entity $entity, string $activityKey, ?int $bookId = null)
{
$activity = $this->newActivityForUser($activityKey, $bookId);
$entity->activity()->save($activity);
/**
* Adds a activity history with a message, without binding to a entity.
- * @param string $activityKey
- * @param string $message
- * @param int $bookId
*/
- public function addMessage(string $activityKey, string $message, int $bookId = null)
+ public function addMessage(string $activityKey, string $message, ?int $bookId = null)
{
$this->newActivityForUser($activityKey, $bookId)->forceFill([
'extra' => $message
/**
* Get a new activity instance for the current user.
- * @param string $key
- * @param int|null $bookId
- * @return Activity
*/
- protected function newActivityForUser(string $key, int $bookId = null)
+ protected function newActivityForUser(string $key, ?int $bookId = null): Activity
{
return $this->activity->newInstance()->forceFill([
'key' => strtolower($key),
* Removes the entity attachment from each of its activities
* and instead uses the 'extra' field with the entities name.
* Used when an entity is deleted.
- * @param \BookStack\Entities\Entity $entity
- * @return mixed
*/
- public function removeEntity(Entity $entity)
+ public function removeEntity(Entity $entity): Collection
{
- // TODO - Rewrite to db query.
- $activities = $entity->activity;
- foreach ($activities as $activity) {
- $activity->extra = $entity->name;
- $activity->entity_id = 0;
- $activity->entity_type = null;
- $activity->save();
- }
+ $activities = $entity->activity()->get();
+ $entity->activity()->update([
+ 'extra' => $entity->name,
+ 'entity_id' => 0,
+ 'entity_type' => '',
+ ]);
return $activities;
}
/**
* Gets the latest activity.
- * @param int $count
- * @param int $page
- * @return array
*/
- public function latest($count = 20, $page = 0)
+ public function latest(int $count = 20, int $page = 0): array
{
$activityList = $this->permissionService
->filterRestrictedEntityRelations($this->activity, 'activities', 'entity_id', 'entity_type')
->orderBy('created_at', 'desc')
- ->with('user', 'entity')
+ ->with(['user', 'entity'])
->skip($count * $page)
->take($count)
->get();
/**
* Gets the latest activity for an entity, Filtering out similar
* items to prevent a message activity list.
- * @param \BookStack\Entities\Entity $entity
- * @param int $count
- * @param int $page
- * @return array
*/
- public function entityActivity($entity, $count = 20, $page = 1)
+ public function entityActivity(Entity $entity, int $count = 20, int $page = 1): array
{
if ($entity->isA('book')) {
- $query = $this->activity->where('book_id', '=', $entity->id);
+ $query = $this->activity->newQuery()->where('book_id', '=', $entity->id);
} else {
- $query = $this->activity->where('entity_type', '=', $entity->getMorphClass())
+ $query = $this->activity->newQuery()->where('entity_type', '=', $entity->getMorphClass())
->where('entity_id', '=', $entity->id);
}
}
/**
- * Get latest activity for a user, Filtering out similar
- * items.
- * @param $user
- * @param int $count
- * @param int $page
- * @return array
+ * Get latest activity for a user, Filtering out similar items.
*/
- public function userActivity($user, $count = 20, $page = 0)
+ public function userActivity(User $user, int $count = 20, int $page = 0): array
{
$activityList = $this->permissionService
->filterRestrictedEntityRelations($this->activity, 'activities', 'entity_id', 'entity_type')
- ->orderBy('created_at', 'desc')->where('user_id', '=', $user->id)->skip($count * $page)->take($count)->get();
+ ->orderBy('created_at', 'desc')
+ ->where('user_id', '=', $user->id)
+ ->skip($count * $page)
+ ->take($count)
+ ->get();
+
return $this->filterSimilar($activityList);
}
* @param Activity[] $activities
* @return array
*/
- protected function filterSimilar($activities)
+ protected function filterSimilar(iterable $activities): array
{
$newActivity = [];
- $previousItem = false;
+ $previousItem = null;
+
foreach ($activities as $activityItem) {
- if ($previousItem === false) {
- $previousItem = $activityItem;
- $newActivity[] = $activityItem;
- continue;
- }
- if (!$activityItem->isSimilarTo($previousItem)) {
+ if (!$previousItem || !$activityItem->isSimilarTo($previousItem)) {
$newActivity[] = $activityItem;
}
+
$previousItem = $activityItem;
}
+
return $newActivity;
}
/**
* Flashes a notification message to the session if an appropriate message is available.
- * @param $activityKey
*/
- protected function setNotification($activityKey)
+ protected function setNotification(string $activityKey)
{
$notificationTextKey = 'activities.' . $activityKey . '_notification';
if (trans()->has($notificationTextKey)) {
use BookStack\Ownable;
+/**
+ * @property string text
+ * @property string html
+ * @property int|null parent_id
+ * @property int local_id
+ */
class Comment extends Ownable
{
- protected $fillable = ['text', 'html', 'parent_id'];
+ protected $fillable = ['text', 'parent_id'];
protected $appends = ['created', 'updated'];
/**
<?php namespace BookStack\Actions;
use BookStack\Entities\Entity;
+use League\CommonMark\CommonMarkConverter;
/**
* Class CommentRepo
- * @package BookStack\Repos
*/
class CommentRepo
{
/**
- * @var \BookStack\Actions\Comment $comment
+ * @var Comment $comment
*/
protected $comment;
- /**
- * CommentRepo constructor.
- * @param \BookStack\Actions\Comment $comment
- */
+
public function __construct(Comment $comment)
{
$this->comment = $comment;
/**
* Get a comment by ID.
- * @param $id
- * @return \BookStack\Actions\Comment|\Illuminate\Database\Eloquent\Model
*/
- public function getById($id)
+ public function getById(int $id): Comment
{
return $this->comment->newQuery()->findOrFail($id);
}
/**
* Create a new comment on an entity.
- * @param \BookStack\Entities\Entity $entity
- * @param array $data
- * @return \BookStack\Actions\Comment
*/
- public function create(Entity $entity, $data = [])
+ public function create(Entity $entity, string $text, ?int $parent_id): Comment
{
$userId = user()->id;
- $comment = $this->comment->newInstance($data);
+ $comment = $this->comment->newInstance();
+
+ $comment->text = $text;
+ $comment->html = $this->commentToHtml($text);
$comment->created_by = $userId;
$comment->updated_by = $userId;
$comment->local_id = $this->getNextLocalId($entity);
+ $comment->parent_id = $parent_id;
+
$entity->comments()->save($comment);
return $comment;
}
/**
* Update an existing comment.
- * @param \BookStack\Actions\Comment $comment
- * @param array $input
- * @return mixed
*/
- public function update($comment, $input)
+ public function update(Comment $comment, string $text): Comment
{
$comment->updated_by = user()->id;
- $comment->update($input);
+ $comment->text = $text;
+ $comment->html = $this->commentToHtml($text);
+ $comment->save();
return $comment;
}
/**
* Delete a comment from the system.
- * @param \BookStack\Actions\Comment $comment
- * @return mixed
*/
- public function delete($comment)
+ public function delete(Comment $comment)
{
- return $comment->delete();
+ $comment->delete();
+ }
+
+ /**
+ * Convert the given comment markdown text to HTML.
+ */
+ public function commentToHtml(string $commentText): string
+ {
+ $converter = new CommonMarkConverter([
+ 'html_input' => 'strip',
+ 'max_nesting_level' => 10,
+ 'allow_unsafe_links' => false,
+ ]);
+
+ return $converter->convertToHtml($commentText);
}
/**
* Get the next local ID relative to the linked entity.
- * @param \BookStack\Entities\Entity $entity
- * @return int
*/
- protected function getNextLocalId(Entity $entity)
+ protected function getNextLocalId(Entity $entity): int
{
$comments = $entity->comments(false)->orderBy('local_id', 'desc')->first();
- if ($comments === null) {
- return 1;
- }
- return $comments->local_id + 1;
+ return ($comments->local_id ?? 0) + 1;
}
}
class Tag extends Model
{
protected $fillable = ['name', 'value', 'order'];
+ protected $hidden = ['id', 'entity_id', 'entity_type'];
/**
* Get the entity that this tag belongs to
use BookStack\Auth\Permissions\PermissionService;
use BookStack\Entities\Entity;
+use DB;
+use Illuminate\Support\Collection;
-/**
- * Class TagRepo
- * @package BookStack\Repos
- */
class TagRepo
{
protected $tag;
- protected $entity;
protected $permissionService;
/**
* TagRepo constructor.
- * @param \BookStack\Actions\Tag $attr
- * @param \BookStack\Entities\Entity $ent
- * @param \BookStack\Auth\Permissions\PermissionService $ps
*/
- public function __construct(Tag $attr, Entity $ent, PermissionService $ps)
+ public function __construct(Tag $tag, PermissionService $ps)
{
- $this->tag = $attr;
- $this->entity = $ent;
+ $this->tag = $tag;
$this->permissionService = $ps;
}
- /**
- * Get an entity instance of its particular type.
- * @param $entityType
- * @param $entityId
- * @param string $action
- * @return \Illuminate\Database\Eloquent\Model|null|static
- */
- public function getEntity($entityType, $entityId, $action = 'view')
- {
- $entityInstance = $this->entity->getEntityInstance($entityType);
- $searchQuery = $entityInstance->where('id', '=', $entityId)->with('tags');
- $searchQuery = $this->permissionService->enforceEntityRestrictions($entityType, $searchQuery, $action);
- return $searchQuery->first();
- }
-
- /**
- * Get all tags for a particular entity.
- * @param string $entityType
- * @param int $entityId
- * @return mixed
- */
- public function getForEntity($entityType, $entityId)
- {
- $entity = $this->getEntity($entityType, $entityId);
- if ($entity === null) {
- return collect();
- }
-
- return $entity->tags;
- }
-
/**
* Get tag name suggestions from scanning existing tag names.
* If no search term is given the 50 most popular tag names are provided.
- * @param $searchTerm
- * @return array
*/
- public function getNameSuggestions($searchTerm = false)
+ public function getNameSuggestions(?string $searchTerm): Collection
{
- $query = $this->tag->select('*', \DB::raw('count(*) as count'))->groupBy('name');
+ $query = $this->tag->select('*', DB::raw('count(*) as count'))->groupBy('name');
if ($searchTerm) {
$query = $query->where('name', 'LIKE', $searchTerm . '%')->orderBy('name', 'desc');
* Get tag value suggestions from scanning existing tag values.
* If no search is given the 50 most popular values are provided.
* Passing a tagName will only find values for a tags with a particular name.
- * @param $searchTerm
- * @param $tagName
- * @return array
*/
- public function getValueSuggestions($searchTerm = false, $tagName = false)
+ public function getValueSuggestions(?string $searchTerm, ?string $tagName): Collection
{
- $query = $this->tag->select('*', \DB::raw('count(*) as count'))->groupBy('value');
+ $query = $this->tag->select('*', DB::raw('count(*) as count'))->groupBy('value');
if ($searchTerm) {
$query = $query->where('value', 'LIKE', $searchTerm . '%')->orderBy('value', 'desc');
$query = $query->orderBy('count', 'desc')->take(50);
}
- if ($tagName !== false) {
+ if ($tagName) {
$query = $query->where('name', '=', $tagName);
}
/**
* Save an array of tags to an entity
- * @param \BookStack\Entities\Entity $entity
- * @param array $tags
- * @return array|\Illuminate\Database\Eloquent\Collection
*/
- public function saveTagsToEntity(Entity $entity, $tags = [])
+ public function saveTagsToEntity(Entity $entity, array $tags = []): iterable
{
$entity->tags()->delete();
- $newTags = [];
- foreach ($tags as $tag) {
- if (trim($tag['name']) === '') {
- continue;
- }
- $newTags[] = $this->newInstanceFromInput($tag);
- }
+
+ $newTags = collect($tags)->filter(function ($tag) {
+ return boolval(trim($tag['name']));
+ })->map(function ($tag) {
+ return $this->newInstanceFromInput($tag);
+ })->all();
return $entity->tags()->saveMany($newTags);
}
/**
* Create a new Tag instance from user input.
- * @param $input
- * @return \BookStack\Actions\Tag
+ * Input must be an array with a 'name' and an optional 'value' key.
*/
- protected function newInstanceFromInput($input)
+ protected function newInstanceFromInput(array $input): Tag
{
$name = trim($input['name']);
$value = isset($input['value']) ? trim($input['value']) : '';
- // Any other modification or cleanup required can go here
- $values = ['name' => $name, 'value' => $value];
- return $this->tag->newInstance($values);
+ return $this->tag->newInstance(['name' => $name, 'value' => $value]);
}
}
use BookStack\Http\Controllers\Api\ApiController;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Route;
+use Illuminate\Support\Str;
use ReflectionClass;
use ReflectionException;
use ReflectionMethod;
'method' => $route->methods[0],
'controller' => $controller,
'controller_method' => $controllerMethod,
+ 'controller_method_kebab' => Str::kebab($controllerMethod),
'base_model' => $baseModelName,
];
});
*/
public function toResponse()
{
- $data = $this->fetchData();
- $total = $this->query->count();
+ $filteredQuery = $this->filterQuery($this->query);
+
+ $total = $filteredQuery->count();
+ $data = $this->fetchData($filteredQuery);
return response()->json([
'data' => $data,
/**
* Fetch the data to return in the response.
*/
- protected function fetchData(): Collection
+ protected function fetchData(Builder $query): Collection
{
- $this->applyCountAndOffset($this->query);
- $this->applySorting($this->query);
- $this->applyFiltering($this->query);
-
- return $this->query->get($this->fields);
+ $query = $this->countAndOffsetQuery($query);
+ $query = $this->sortQuery($query);
+ return $query->get($this->fields);
}
/**
* Apply any filtering operations found in the request.
*/
- protected function applyFiltering(Builder $query)
+ protected function filterQuery(Builder $query): Builder
{
+ $query = clone $query;
$requestFilters = $this->request->get('filter', []);
if (!is_array($requestFilters)) {
- return;
+ return $query;
}
$queryFilters = collect($requestFilters)->map(function ($value, $key) {
return !is_null($value);
})->values()->toArray();
- $query->where($queryFilters);
+ return $query->where($queryFilters);
}
/**
* Apply sorting operations to the query from given parameters
* otherwise falling back to the first given field, ascending.
*/
- protected function applySorting(Builder $query)
+ protected function sortQuery(Builder $query): Builder
{
+ $query = clone $query;
$defaultSortName = $this->fields[0];
$direction = 'asc';
$sortName = $defaultSortName;
}
- $query->orderBy($sortName, $direction);
+ return $query->orderBy($sortName, $direction);
}
/**
* Apply count and offset for paging, based on params from the request while falling
* back to system defined default, taking the max limit into account.
*/
- protected function applyCountAndOffset(Builder $query)
+ protected function countAndOffsetQuery(Builder $query): Builder
{
+ $query = clone $query;
$offset = max(0, $this->request->get('offset', 0));
$maxCount = config('api.max_item_count');
$count = $this->request->get('count', config('api.default_item_count'));
$count = max(min($maxCount, $count), 1);
- $query->skip($offset)->take($count);
+ return $query->skip($offset)->take($count);
}
}
public function validate(array $credentials = [])
{
$userDetails = $this->ldapService->getUserDetails($credentials['username']);
- $this->lastAttempted = $this->provider->retrieveByCredentials([
- 'external_auth_id' => $userDetails['uid']
- ]);
- return $this->ldapService->validateUserCredentials($userDetails, $credentials['username'], $credentials['password']);
+ if (isset($userDetails['uid'])) {
+ $this->lastAttempted = $this->provider->retrieveByCredentials([
+ 'external_auth_id' => $userDetails['uid']
+ ]);
+ }
+
+ return $this->ldapService->validateUserCredentials($userDetails, $credentials['password']);
}
/**
* @param array $credentials
* @param bool $remember
* @return bool
- * @throws LoginAttemptEmailNeededException
* @throws LoginAttemptException
* @throws LdapException
- * @throws UserRegistrationException
*/
public function attempt(array $credentials = [], $remember = false)
{
$username = $credentials['username'];
$userDetails = $this->ldapService->getUserDetails($username);
- $this->lastAttempted = $user = $this->provider->retrieveByCredentials([
- 'external_auth_id' => $userDetails['uid']
- ]);
- if (!$this->ldapService->validateUserCredentials($userDetails, $username, $credentials['password'])) {
+ $user = null;
+ if (isset($userDetails['uid'])) {
+ $this->lastAttempted = $user = $this->provider->retrieveByCredentials([
+ 'external_auth_id' => $userDetails['uid']
+ ]);
+ }
+
+ if (!$this->ldapService->validateUserCredentials($userDetails, $credentials['password'])) {
return false;
}
if (is_null($user)) {
- $user = $this->createNewFromLdapAndCreds($userDetails, $credentials);
+ try {
+ $user = $this->createNewFromLdapAndCreds($userDetails, $credentials);
+ } catch (UserRegistrationException $exception) {
+ throw new LoginAttemptException($exception->message);
+ }
}
// Sync LDAP groups if required
<?php namespace BookStack\Auth\Access;
use BookStack\Auth\User;
+use BookStack\Exceptions\JsonDebugException;
use BookStack\Exceptions\LdapException;
use ErrorException;
$ldapConnection = $this->getConnection();
$this->bindSystemUser($ldapConnection);
+ // Clean attributes
+ foreach ($attributes as $index => $attribute) {
+ if (strpos($attribute, 'BIN;') === 0) {
+ $attributes[$index] = substr($attribute, strlen('BIN;'));
+ }
+ }
+
// Find user
$userFilter = $this->buildFilter($this->config['user_filter'], ['user' => $userName]);
$baseDn = $this->config['base_dn'];
}
$userCn = $this->getUserResponseProperty($user, 'cn', null);
- return [
+ $formatted = [
'uid' => $this->getUserResponseProperty($user, $idAttr, $user['dn']),
'name' => $this->getUserResponseProperty($user, $displayNameAttr, $userCn),
'dn' => $user['dn'],
'email' => $this->getUserResponseProperty($user, $emailAttr, null),
];
+
+ if ($this->config['dump_user_details']) {
+ throw new JsonDebugException([
+ 'details_from_ldap' => $user,
+ 'details_bookstack_parsed' => $formatted,
+ ]);
+ }
+
+ return $formatted;
}
/**
* Get a property from an LDAP user response fetch.
* Handles properties potentially being part of an array.
+ * If the given key is prefixed with 'BIN;', that indicator will be stripped
+ * from the key and any fetched values will be converted from binary to hex.
*/
protected function getUserResponseProperty(array $userDetails, string $propertyKey, $defaultValue)
{
+ $isBinary = strpos($propertyKey, 'BIN;') === 0;
$propertyKey = strtolower($propertyKey);
+ $value = $defaultValue;
+
+ if ($isBinary) {
+ $propertyKey = substr($propertyKey, strlen('BIN;'));
+ }
+
if (isset($userDetails[$propertyKey])) {
- return (is_array($userDetails[$propertyKey]) ? $userDetails[$propertyKey][0] : $userDetails[$propertyKey]);
+ $value = (is_array($userDetails[$propertyKey]) ? $userDetails[$propertyKey][0] : $userDetails[$propertyKey]);
+ if ($isBinary) {
+ $value = bin2hex($value);
+ }
}
- return $defaultValue;
+ return $value;
}
/**
* Check if the given credentials are valid for the given user.
* @throws LdapException
*/
- public function validateUserCredentials(array $ldapUserDetails, string $username, string $password): bool
+ public function validateUserCredentials(?array $ldapUserDetails, string $password): bool
{
- if ($ldapUserDetails === null) {
+ if (is_null($ldapUserDetails)) {
return false;
}
}
}
- /**
- * Alias to the UserRepo method of the same name.
- * Attaches the default system role, if configured, to the given user.
- */
- public function attachDefaultRole(User $user): void
- {
- $this->userRepo->attachDefaultRole($user);
- }
-
}
\ No newline at end of file
if ($driverName === 'google' && config('services.google.select_account')) {
$driver->with(['prompt' => 'select_account']);
}
+ if ($driverName === 'azure') {
+ $driver->with(['resource' => 'https://graph.windows.net']);
+ }
return $driver;
}
* The attributes excluded from the model's JSON form.
* @var array
*/
- protected $hidden = ['password', 'remember_token', 'system_name', 'email_confirmed', 'external_auth_id', 'email'];
+ protected $hidden = [
+ 'password', 'remember_token', 'system_name', 'email_confirmed', 'external_auth_id', 'email',
+ 'created_at', 'updated_at', 'image_id',
+ ];
/**
* This holds the user's permissions when loaded.
'locale' => env('APP_LANG', 'en'),
// Locales available
- 'locales' => ['en', 'ar', 'da', 'de', 'de_informal', 'es', 'es_AR', 'fr', 'hu', 'nl', 'pt_BR', 'sk', 'cs', 'sv', 'ko', 'ja', 'pl', 'it', 'ru', 'uk', 'zh_CN', 'zh_TW', 'tr'],
+ 'locales' => ['en', 'ar', 'cs', 'da', 'de', 'de_informal', 'es', 'es_AR', 'fa', 'fr', 'he', 'hu', 'it', 'ja', 'ko', 'nl', 'pt', 'pt_BR', 'sk', 'sl', 'sv', 'pl', 'ru', 'th', 'tr', 'uk', 'vi', 'zh_CN', 'zh_TW',],
// Application Fallback Locale
'fallback_locale' => 'en',
'driver' => 'monolog',
'handler' => NullHandler::class,
],
+
+ // Testing channel
+ // Uses a shared testing instance during tests
+ // so that logs can be checked against.
+ 'testing' => [
+ 'driver' => 'testing',
+ ],
],
// Failed Access Message
'ldap' => [
'server' => env('LDAP_SERVER', false),
+ 'dump_user_details' => env('LDAP_DUMP_USER_DETAILS', false),
'dn' => env('LDAP_DN', false),
'pass' => env('LDAP_PASS', false),
'base_dn' => env('LDAP_BASE_DN', false),
'enabled' => true,
'binary' => file_exists(base_path('wkhtmltopdf')) ? base_path('wkhtmltopdf') : env('WKHTMLTOPDF', false),
'timeout' => false,
- 'options' => [],
+ 'options' => [
+ 'outline' => true
+ ],
'env' => [],
],
'image' => [
*
* @var string
*/
- protected $description = 'Clear all view-counts for all entities.';
+ protected $description = 'Clear all view-counts for all entities';
/**
* Create a new command instance.
*
* @var string
*/
- protected $description = 'Copy shelf permissions to all child books.';
+ protected $description = 'Copy shelf permissions to all child books';
/**
* @var BookshelfRepo
*
* @var string
*/
- protected $description = 'Delete users that are not "admin" or system users.';
+ protected $description = 'Delete users that are not "admin" or system users';
public function __construct(User $user, UserRepo $userRepo)
{
--- /dev/null
+<?php
+
+namespace BookStack\Console\Commands;
+
+use BookStack\Actions\Comment;
+use BookStack\Actions\CommentRepo;
+use Illuminate\Console\Command;
+
+class RegenerateCommentContent extends Command
+{
+ /**
+ * The name and signature of the console command.
+ *
+ * @var string
+ */
+ protected $signature = 'bookstack:regenerate-comment-content {--database= : The database connection to use.}';
+
+ /**
+ * The console command description.
+ *
+ * @var string
+ */
+ protected $description = 'Regenerate the stored HTML of all comments';
+
+ /**
+ * @var CommentRepo
+ */
+ protected $commentRepo;
+
+ /**
+ * Create a new command instance.
+ */
+ public function __construct(CommentRepo $commentRepo)
+ {
+ $this->commentRepo = $commentRepo;
+ parent::__construct();
+ }
+
+ /**
+ * Execute the console command.
+ *
+ * @return mixed
+ */
+ public function handle()
+ {
+ $connection = \DB::getDefaultConnection();
+ if ($this->option('database') !== null) {
+ \DB::setDefaultConnection($this->option('database'));
+ }
+
+ Comment::query()->chunk(100, function ($comments) {
+ foreach ($comments as $comment) {
+ $comment->html = $this->commentRepo->commentToHtml($comment->text);
+ $comment->save();
+ }
+ });
+
+ \DB::setDefaultConnection($connection);
+ $this->comment('Comment HTML content has been regenerated');
+ }
+}
/**
* Create a new command instance.
- *
- * @param \BookStack\Auth\\BookStack\Auth\Permissions\PermissionService $permissionService
*/
public function __construct(PermissionService $permissionService)
{
namespace BookStack\Console\Commands;
use BookStack\Entities\SearchService;
+use DB;
use Illuminate\Console\Command;
class RegenerateSearch extends Command
/**
* Create a new command instance.
*
- * @param \BookStack\Entities\SearchService $searchService
+ * @param SearchService $searchService
*/
public function __construct(SearchService $searchService)
{
*/
public function handle()
{
- $connection = \DB::getDefaultConnection();
+ $connection = DB::getDefaultConnection();
if ($this->option('database') !== null) {
- \DB::setDefaultConnection($this->option('database'));
- $this->searchService->setConnection(\DB::connection($this->option('database')));
+ DB::setDefaultConnection($this->option('database'));
+ $this->searchService->setConnection(DB::connection($this->option('database')));
}
$this->searchService->indexAllEntities();
- \DB::setDefaultConnection($connection);
+ DB::setDefaultConnection($connection);
$this->comment('Search index regenerated');
}
}
--- /dev/null
+<?php
+
+namespace BookStack\Console\Commands;
+
+use Illuminate\Console\Command;
+use Illuminate\Database\Connection;
+
+class UpdateUrl extends Command
+{
+ /**
+ * The name and signature of the console command.
+ *
+ * @var string
+ */
+ protected $signature = 'bookstack:update-url
+ {oldUrl : URL to replace}
+ {newUrl : URL to use as the replacement}';
+
+ /**
+ * The console command description.
+ *
+ * @var string
+ */
+ protected $description = 'Find and replace the given URLs in your BookStack database';
+
+ protected $db;
+
+ /**
+ * Create a new command instance.
+ *
+ * @return void
+ */
+ public function __construct(Connection $db)
+ {
+ $this->db = $db;
+ parent::__construct();
+ }
+
+ /**
+ * Execute the console command.
+ *
+ * @return mixed
+ */
+ public function handle()
+ {
+ $oldUrl = str_replace("'", '', $this->argument('oldUrl'));
+ $newUrl = str_replace("'", '', $this->argument('newUrl'));
+
+ $urlPattern = '/https?:\/\/(.+)/';
+ if (!preg_match($urlPattern, $oldUrl) || !preg_match($urlPattern, $newUrl)) {
+ $this->error("The given urls are expected to be full urls starting with http:// or https://");
+ return 1;
+ }
+
+ if (!$this->checkUserOkayToProceed($oldUrl, $newUrl)) {
+ return 1;
+ }
+
+ $columnsToUpdateByTable = [
+ "attachments" => ["path"],
+ "pages" => ["html", "text", "markdown"],
+ "images" => ["url"],
+ "comments" => ["html", "text"],
+ ];
+
+ foreach ($columnsToUpdateByTable as $table => $columns) {
+ foreach ($columns as $column) {
+ $changeCount = $this->db->table($table)->update([
+ $column => $this->db->raw("REPLACE({$column}, '{$oldUrl}', '{$newUrl}')")
+ ]);
+ $this->info("Updated {$changeCount} rows in {$table}->{$column}");
+ }
+ }
+
+ $this->info("URL update procedure complete.");
+ return 0;
+ }
+
+ /**
+ * Warn the user of the dangers of this operation.
+ * Returns a boolean indicating if they've accepted the warnings.
+ */
+ protected function checkUserOkayToProceed(string $oldUrl, string $newUrl): bool
+ {
+ $dangerWarning = "This will search for \"{$oldUrl}\" in your database and replace it with \"{$newUrl}\".\n";
+ $dangerWarning .= "Are you sure you want to proceed?";
+ $backupConfirmation = "This operation could cause issues if used incorrectly. Have you made a backup of your existing database?";
+
+ return $this->confirm($dangerWarning) && $this->confirm($backupConfirmation);
+ }
+}
public $searchFactor = 2;
protected $fillable = ['name', 'description'];
- protected $hidden = ['restricted'];
+ protected $hidden = ['restricted', 'pivot', 'image_id'];
/**
* Get the url for this book.
{
$pages = $this->directPages()->visible()->get();
$chapters = $this->chapters()->visible()->get();
- return $pages->contact($chapters)->sortBy('priority')->sortByDesc('draft');
+ return $pages->concat($chapters)->sortBy('priority')->sortByDesc('draft');
}
/**
protected $fillable = ['name', 'description', 'image_id'];
+ protected $hidden = ['restricted', 'image_id'];
+
/**
* Get the books in this shelf.
* Should not be used directly since does not take into account permissions.
public $searchFactor = 1.3;
protected $fillable = ['name', 'description', 'priority', 'book_id'];
+ protected $hidden = ['restricted', 'pivot'];
/**
* Get the pages that this chapter contains.
public function rebuildPermissions()
{
/** @noinspection PhpUnhandledExceptionInspection */
- Permissions::buildJointPermissionsForEntity($this);
+ Permissions::buildJointPermissionsForEntity(clone $this);
}
/**
public function indexForSearch()
{
$searchService = app()->make(SearchService::class);
- $searchService->indexEntity($this);
+ $searchService->indexEntity(clone $this);
}
/**
public function pageToContainedHtml(Page $page)
{
$page->html = (new PageContent($page))->render();
- $pageHtml = view('pages/export', [
- 'page' => $page
+ $pageHtml = view('pages.export', [
+ 'page' => $page,
+ 'format' => 'html',
])->render();
return $this->containHtml($pageHtml);
}
$pages->each(function ($page) {
$page->html = (new PageContent($page))->render();
});
- $html = view('chapters/export', [
+ $html = view('chapters.export', [
'chapter' => $chapter,
- 'pages' => $pages
+ 'pages' => $pages,
+ 'format' => 'html',
])->render();
return $this->containHtml($html);
}
public function bookToContainedHtml(Book $book)
{
$bookTree = (new BookContents($book))->getTree(false, true);
- $html = view('books/export', [
+ $html = view('books.export', [
'book' => $book,
- 'bookChildren' => $bookTree
+ 'bookChildren' => $bookTree,
+ 'format' => 'html',
])->render();
return $this->containHtml($html);
}
public function pageToPdf(Page $page)
{
$page->html = (new PageContent($page))->render();
- $html = view('pages/pdf', [
- 'page' => $page
+ $html = view('pages.export', [
+ 'page' => $page,
+ 'format' => 'pdf',
])->render();
return $this->htmlToPdf($html);
}
$page->html = (new PageContent($page))->render();
});
- $html = view('chapters/export', [
+ $html = view('chapters.export', [
'chapter' => $chapter,
- 'pages' => $pages
+ 'pages' => $pages,
+ 'format' => 'pdf',
])->render();
return $this->htmlToPdf($html);
public function bookToPdf(Book $book)
{
$bookTree = (new BookContents($book))->getTree(false, true);
- $html = view('books/export', [
+ $html = view('books.export', [
'book' => $book,
- 'bookChildren' => $bookTree
+ 'bookChildren' => $bookTree,
+ 'format' => 'pdf',
])->render();
return $this->htmlToPdf($html);
}
*/
class Page extends BookChild
{
- protected $fillable = ['name', 'html', 'priority', 'markdown'];
+ protected $fillable = ['name', 'priority', 'markdown'];
protected $simpleAttributes = ['name', 'id', 'slug'];
public $textField = 'text';
+ protected $hidden = ['html', 'markdown', 'text', 'restricted', 'pivot'];
+
/**
* Get the entities that are visible to the current user.
*/
* @throws ImageUploadException
* @throws \Exception
*/
- public function updateCoverImage(HasCoverImage $entity, UploadedFile $coverImage = null, bool $removeImage = false)
+ public function updateCoverImage(HasCoverImage $entity, ?UploadedFile $coverImage, bool $removeImage = false)
{
if ($coverImage) {
$this->imageRepo->destroyImage($entity->cover);
* @throws ImageUploadException
* @throws Exception
*/
- public function updateCoverImage(Book $book, UploadedFile $coverImage = null, bool $removeImage = false)
+ public function updateCoverImage(Book $book, ?UploadedFile $coverImage, bool $removeImage = false)
{
$this->baseRepo->updateCoverImage($book, $coverImage, $removeImage);
}
*/
public function getAllPaginated(int $count = 20, string $sort = 'name', string $order = 'asc'): LengthAwarePaginator
{
- return Bookshelf::visible()->with('visibleBooks')
- ->orderBy($sort, $order)->paginate($count);
+ return Bookshelf::visible()
+ ->with('visibleBooks')
+ ->orderBy($sort, $order)
+ ->paginate($count);
}
/**
/**
* Create a new shelf in the system.
*/
- public function update(Bookshelf $shelf, array $input, array $bookIds): Bookshelf
+ public function update(Bookshelf $shelf, array $input, ?array $bookIds): Bookshelf
{
$this->baseRepo->update($shelf, $input);
- $this->updateBooks($shelf, $bookIds);
+
+ if (!is_null($bookIds)) {
+ $this->updateBooks($shelf, $bookIds);
+ }
+
return $shelf;
}
* @throws ImageUploadException
* @throws Exception
*/
- public function updateCoverImage(Bookshelf $shelf, UploadedFile $coverImage = null, bool $removeImage = false)
+ public function updateCoverImage(Bookshelf $shelf, ?UploadedFile $coverImage, bool $removeImage = false)
{
$this->baseRepo->updateCoverImage($shelf, $coverImage, $removeImage);
}
$page->template = ($input['template'] === 'true');
}
+ $pageContent = new PageContent($page);
+ $pageContent->setNewHTML($input['html']);
$this->baseRepo->update($page, $input);
// Update with new details
- $page->fill($input);
- $pageContent = new PageContent($page);
- $pageContent->setNewHTML($input['html']);
$page->revision_count++;
if (setting('app-editor') !== 'markdown') {
*/
protected function savePageRevision(Page $page, string $summary = null)
{
- $revision = new PageRevision($page->toArray());
+ $revision = new PageRevision($page->getAttributes());
if (setting('app-editor') !== 'markdown') {
$revision->markdown = '';
$revision = $page->revisions()->where('id', '=', $revisionId)->first();
$page->fill($revision->toArray());
$content = new PageContent($page);
- $content->setNewHTML($page->html);
+ $content->setNewHTML($revision->html);
$page->updated_by = user()->id;
$page->refreshSlug();
$page->save();
--- /dev/null
+<?php namespace BookStack\Entities;
+
+use Illuminate\Http\Request;
+
+class SearchOptions
+{
+
+ /**
+ * @var array
+ */
+ public $searches = [];
+
+ /**
+ * @var array
+ */
+ public $exacts = [];
+
+ /**
+ * @var array
+ */
+ public $tags = [];
+
+ /**
+ * @var array
+ */
+ public $filters = [];
+
+ /**
+ * Create a new instance from a search string.
+ */
+ public static function fromString(string $search): SearchOptions
+ {
+ $decoded = static::decode($search);
+ $instance = new static();
+ foreach ($decoded as $type => $value) {
+ $instance->$type = $value;
+ }
+ return $instance;
+ }
+
+ /**
+ * Create a new instance from a request.
+ * Will look for a classic string term and use that
+ * Otherwise we'll use the details from an advanced search form.
+ */
+ public static function fromRequest(Request $request): SearchOptions
+ {
+ if (!$request->has('search') && !$request->has('term')) {
+ return static::fromString('');
+ }
+
+ if ($request->has('term')) {
+ return static::fromString($request->get('term'));
+ }
+
+ $instance = new static();
+ $inputs = $request->only(['search', 'types', 'filters', 'exact', 'tags']);
+ $instance->searches = explode(' ', $inputs['search'] ?? []);
+ $instance->exacts = array_filter($inputs['exact'] ?? []);
+ $instance->tags = array_filter($inputs['tags'] ?? []);
+ foreach (($inputs['filters'] ?? []) as $filterKey => $filterVal) {
+ if (empty($filterVal)) {
+ continue;
+ }
+ $instance->filters[$filterKey] = $filterVal === 'true' ? '' : $filterVal;
+ }
+ if (isset($inputs['types']) && count($inputs['types']) < 4) {
+ $instance->filters['type'] = implode('|', $inputs['types']);
+ }
+ return $instance;
+ }
+
+ /**
+ * Decode a search string into an array of terms.
+ */
+ protected static function decode(string $searchString): array
+ {
+ $terms = [
+ 'searches' => [],
+ 'exacts' => [],
+ 'tags' => [],
+ 'filters' => []
+ ];
+
+ $patterns = [
+ 'exacts' => '/"(.*?)"/',
+ 'tags' => '/\[(.*?)\]/',
+ 'filters' => '/\{(.*?)\}/'
+ ];
+
+ // Parse special terms
+ foreach ($patterns as $termType => $pattern) {
+ $matches = [];
+ preg_match_all($pattern, $searchString, $matches);
+ if (count($matches) > 0) {
+ $terms[$termType] = $matches[1];
+ $searchString = preg_replace($pattern, '', $searchString);
+ }
+ }
+
+ // Parse standard terms
+ foreach (explode(' ', trim($searchString)) as $searchTerm) {
+ if ($searchTerm !== '') {
+ $terms['searches'][] = $searchTerm;
+ }
+ }
+
+ // Split filter values out
+ $splitFilters = [];
+ foreach ($terms['filters'] as $filter) {
+ $explodedFilter = explode(':', $filter, 2);
+ $splitFilters[$explodedFilter[0]] = (count($explodedFilter) > 1) ? $explodedFilter[1] : '';
+ }
+ $terms['filters'] = $splitFilters;
+
+ return $terms;
+ }
+
+ /**
+ * Encode this instance to a search string.
+ */
+ public function toString(): string
+ {
+ $string = implode(' ', $this->searches ?? []);
+
+ foreach ($this->exacts as $term) {
+ $string .= ' "' . $term . '"';
+ }
+
+ foreach ($this->tags as $term) {
+ $string .= " [{$term}]";
+ }
+
+ foreach ($this->filters as $filterName => $filterVal) {
+ $string .= ' {' . $filterName . ($filterVal ? ':' . $filterVal : '') . '}';
+ }
+
+ return $string;
+ }
+
+}
\ No newline at end of file
/**
* SearchService constructor.
- * @param SearchTerm $searchTerm
- * @param EntityProvider $entityProvider
- * @param Connection $db
- * @param PermissionService $permissionService
*/
public function __construct(SearchTerm $searchTerm, EntityProvider $entityProvider, Connection $db, PermissionService $permissionService)
{
/**
* Set the database connection
- * @param Connection $connection
*/
public function setConnection(Connection $connection)
{
/**
* Search all entities in the system.
- * @param string $searchString
- * @param string $entityType
- * @param int $page
- * @param int $count - Count of each entity to search, Total returned could can be larger and not guaranteed.
- * @param string $action
- * @return array[int, Collection];
+ * The provided count is for each entity to search,
+ * Total returned could can be larger and not guaranteed.
*/
- public function searchEntities($searchString, $entityType = 'all', $page = 1, $count = 20, $action = 'view')
+ public function searchEntities(SearchOptions $searchOpts, string $entityType = 'all', int $page = 1, int $count = 20, string $action = 'view'): array
{
- $terms = $this->parseSearchString($searchString);
$entityTypes = array_keys($this->entityProvider->all());
$entityTypesToSearch = $entityTypes;
if ($entityType !== 'all') {
$entityTypesToSearch = $entityType;
- } else if (isset($terms['filters']['type'])) {
- $entityTypesToSearch = explode('|', $terms['filters']['type']);
+ } else if (isset($searchOpts->filters['type'])) {
+ $entityTypesToSearch = explode('|', $searchOpts->filters['type']);
}
$results = collect();
if (!in_array($entityType, $entityTypes)) {
continue;
}
- $search = $this->searchEntityTable($terms, $entityType, $page, $count, $action);
- $entityTotal = $this->searchEntityTable($terms, $entityType, $page, $count, $action, true);
+ $search = $this->searchEntityTable($searchOpts, $entityType, $page, $count, $action);
+ $entityTotal = $this->searchEntityTable($searchOpts, $entityType, $page, $count, $action, true);
if ($entityTotal > $page * $count) {
$hasMore = true;
}
'total' => $total,
'count' => count($results),
'has_more' => $hasMore,
- 'results' => $results->sortByDesc('score')->values()
+ 'results' => $results->sortByDesc('score')->values(),
];
}
/**
* Search a book for entities
- * @param integer $bookId
- * @param string $searchString
- * @return Collection
*/
- public function searchBook($bookId, $searchString)
+ public function searchBook(int $bookId, string $searchString): Collection
{
- $terms = $this->parseSearchString($searchString);
+ $opts = SearchOptions::fromString($searchString);
$entityTypes = ['page', 'chapter'];
- $entityTypesToSearch = isset($terms['filters']['type']) ? explode('|', $terms['filters']['type']) : $entityTypes;
+ $entityTypesToSearch = isset($opts->filters['type']) ? explode('|', $opts->filters['type']) : $entityTypes;
$results = collect();
foreach ($entityTypesToSearch as $entityType) {
if (!in_array($entityType, $entityTypes)) {
continue;
}
- $search = $this->buildEntitySearchQuery($terms, $entityType)->where('book_id', '=', $bookId)->take(20)->get();
+ $search = $this->buildEntitySearchQuery($opts, $entityType)->where('book_id', '=', $bookId)->take(20)->get();
$results = $results->merge($search);
}
return $results->sortByDesc('score')->take(20);
/**
* Search a book for entities
- * @param integer $chapterId
- * @param string $searchString
- * @return Collection
*/
- public function searchChapter($chapterId, $searchString)
+ public function searchChapter(int $chapterId, string $searchString): Collection
{
- $terms = $this->parseSearchString($searchString);
- $pages = $this->buildEntitySearchQuery($terms, 'page')->where('chapter_id', '=', $chapterId)->take(20)->get();
+ $opts = SearchOptions::fromString($searchString);
+ $pages = $this->buildEntitySearchQuery($opts, 'page')->where('chapter_id', '=', $chapterId)->take(20)->get();
return $pages->sortByDesc('score');
}
/**
* Search across a particular entity type.
- * @param array $terms
- * @param string $entityType
- * @param int $page
- * @param int $count
- * @param string $action
- * @param bool $getCount Return the total count of the search
+ * Setting getCount = true will return the total
+ * matching instead of the items themselves.
* @return \Illuminate\Database\Eloquent\Collection|int|static[]
*/
- public function searchEntityTable($terms, $entityType = 'page', $page = 1, $count = 20, $action = 'view', $getCount = false)
+ public function searchEntityTable(SearchOptions $searchOpts, string $entityType = 'page', int $page = 1, int $count = 20, string $action = 'view', bool $getCount = false)
{
- $query = $this->buildEntitySearchQuery($terms, $entityType, $action);
+ $query = $this->buildEntitySearchQuery($searchOpts, $entityType, $action);
if ($getCount) {
return $query->count();
}
/**
* Create a search query for an entity
- * @param array $terms
- * @param string $entityType
- * @param string $action
- * @return EloquentBuilder
*/
- protected function buildEntitySearchQuery($terms, $entityType = 'page', $action = 'view')
+ protected function buildEntitySearchQuery(SearchOptions $searchOpts, string $entityType = 'page', string $action = 'view'): EloquentBuilder
{
$entity = $this->entityProvider->get($entityType);
$entitySelect = $entity->newQuery();
// Handle normal search terms
- if (count($terms['search']) > 0) {
+ if (count($searchOpts->searches) > 0) {
$subQuery = $this->db->table('search_terms')->select('entity_id', 'entity_type', \DB::raw('SUM(score) as score'));
$subQuery->where('entity_type', '=', $entity->getMorphClass());
- $subQuery->where(function (Builder $query) use ($terms) {
- foreach ($terms['search'] as $inputTerm) {
+ $subQuery->where(function (Builder $query) use ($searchOpts) {
+ foreach ($searchOpts->searches as $inputTerm) {
$query->orWhere('term', 'like', $inputTerm .'%');
}
})->groupBy('entity_type', 'entity_id');
}
// Handle exact term matching
- if (count($terms['exact']) > 0) {
- $entitySelect->where(function (EloquentBuilder $query) use ($terms, $entity) {
- foreach ($terms['exact'] as $inputTerm) {
+ if (count($searchOpts->exacts) > 0) {
+ $entitySelect->where(function (EloquentBuilder $query) use ($searchOpts, $entity) {
+ foreach ($searchOpts->exacts as $inputTerm) {
$query->where(function (EloquentBuilder $query) use ($inputTerm, $entity) {
$query->where('name', 'like', '%'.$inputTerm .'%')
->orWhere($entity->textField, 'like', '%'.$inputTerm .'%');
}
// Handle tag searches
- foreach ($terms['tags'] as $inputTerm) {
+ foreach ($searchOpts->tags as $inputTerm) {
$this->applyTagSearch($entitySelect, $inputTerm);
}
// Handle filters
- foreach ($terms['filters'] as $filterTerm => $filterValue) {
+ foreach ($searchOpts->filters as $filterTerm => $filterValue) {
$functionName = Str::camel('filter_' . $filterTerm);
if (method_exists($this, $functionName)) {
$this->$functionName($entitySelect, $entity, $filterValue);
return $this->permissionService->enforceEntityRestrictions($entityType, $entitySelect, $action);
}
-
- /**
- * Parse a search string into components.
- * @param $searchString
- * @return array
- */
- protected function parseSearchString($searchString)
- {
- $terms = [
- 'search' => [],
- 'exact' => [],
- 'tags' => [],
- 'filters' => []
- ];
-
- $patterns = [
- 'exact' => '/"(.*?)"/',
- 'tags' => '/\[(.*?)\]/',
- 'filters' => '/\{(.*?)\}/'
- ];
-
- // Parse special terms
- foreach ($patterns as $termType => $pattern) {
- $matches = [];
- preg_match_all($pattern, $searchString, $matches);
- if (count($matches) > 0) {
- $terms[$termType] = $matches[1];
- $searchString = preg_replace($pattern, '', $searchString);
- }
- }
-
- // Parse standard terms
- foreach (explode(' ', trim($searchString)) as $searchTerm) {
- if ($searchTerm !== '') {
- $terms['search'][] = $searchTerm;
- }
- }
-
- // Split filter values out
- $splitFilters = [];
- foreach ($terms['filters'] as $filter) {
- $explodedFilter = explode(':', $filter, 2);
- $splitFilters[$explodedFilter[0]] = (count($explodedFilter) > 1) ? $explodedFilter[1] : '';
- }
- $terms['filters'] = $splitFilters;
-
- return $terms;
- }
-
/**
* Get the available query operators as a regex escaped list.
- * @return mixed
*/
- protected function getRegexEscapedOperators()
+ protected function getRegexEscapedOperators(): string
{
$escapedOperators = [];
foreach ($this->queryOperators as $operator) {
/**
* Apply a tag search term onto a entity query.
- * @param EloquentBuilder $query
- * @param string $tagTerm
- * @return mixed
*/
- protected function applyTagSearch(EloquentBuilder $query, $tagTerm)
+ protected function applyTagSearch(EloquentBuilder $query, string $tagTerm): EloquentBuilder
{
preg_match("/^(.*?)((".$this->getRegexEscapedOperators().")(.*?))?$/", $tagTerm, $tagSplit);
$query->whereHas('tags', function (EloquentBuilder $query) use ($tagSplit) {
/**
* Index the given entity.
- * @param Entity $entity
*/
public function indexEntity(Entity $entity)
{
<?php namespace BookStack\Entities;
+use Illuminate\Support\Str;
+
class SlugGenerator
{
*/
protected function formatNameAsSlug(string $name): string
{
- $slug = preg_replace('/[\+\/\\\?\@\}\{\.\,\=\[\]\#\&\!\*\'\;\:\$\%]/', '', mb_strtolower($name));
- $slug = preg_replace('/\s{2,}/', ' ', $slug);
- $slug = str_replace(' ', '-', $slug);
+ $slug = Str::slug($name);
if ($slug === "") {
$slug = substr(md5(rand(1, 500)), 0, 5);
}
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
-use Illuminate\Http\Response;
use Illuminate\Validation\ValidationException;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
HttpException::class,
ModelNotFoundException::class,
ValidationException::class,
+ NotFoundException::class,
];
/**
/**
* NotifyException constructor.
- * @param string $message
- * @param string $redirectLocation
*/
public function __construct(string $message, string $redirectLocation = "/")
{
use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
-class BooksApiController extends ApiController
+class BookApiController extends ApiController
{
protected $bookRepo;
'create' => [
'name' => 'required|string|max:255',
'description' => 'string|max:1000',
+ 'tags' => 'array',
],
'update' => [
'name' => 'string|min:1|max:255',
'description' => 'string|max:1000',
+ 'tags' => 'array',
],
];
--- /dev/null
+<?php namespace BookStack\Http\Controllers\Api;
+
+use BookStack\Entities\Book;
+use BookStack\Entities\ExportService;
+use BookStack\Entities\Repos\BookRepo;
+use Throwable;
+
+class BookExportApiController extends ApiController
+{
+ protected $bookRepo;
+ protected $exportService;
+
+ /**
+ * BookExportController constructor.
+ */
+ public function __construct(BookRepo $bookRepo, ExportService $exportService)
+ {
+ $this->bookRepo = $bookRepo;
+ $this->exportService = $exportService;
+ parent::__construct();
+ }
+
+ /**
+ * Export a book as a PDF file.
+ * @throws Throwable
+ */
+ public function exportPdf(int $id)
+ {
+ $book = Book::visible()->findOrFail($id);
+ $pdfContent = $this->exportService->bookToPdf($book);
+ return $this->downloadResponse($pdfContent, $book->slug . '.pdf');
+ }
+
+ /**
+ * Export a book as a contained HTML file.
+ * @throws Throwable
+ */
+ public function exportHtml(int $id)
+ {
+ $book = Book::visible()->findOrFail($id);
+ $htmlContent = $this->exportService->bookToContainedHtml($book);
+ return $this->downloadResponse($htmlContent, $book->slug . '.html');
+ }
+
+ /**
+ * Export a book as a plain text file.
+ */
+ public function exportPlainText(int $id)
+ {
+ $book = Book::visible()->findOrFail($id);
+ $textContent = $this->exportService->bookToPlainText($book);
+ return $this->downloadResponse($textContent, $book->slug . '.txt');
+ }
+}
--- /dev/null
+<?php namespace BookStack\Http\Controllers\Api;
+
+use BookStack\Facades\Activity;
+use BookStack\Entities\Repos\BookshelfRepo;
+use BookStack\Entities\Bookshelf;
+use Exception;
+use Illuminate\Database\Eloquent\Relations\BelongsToMany;
+use Illuminate\Http\Request;
+use Illuminate\Validation\ValidationException;
+
+class BookshelfApiController extends ApiController
+{
+
+ /**
+ * @var BookshelfRepo
+ */
+ protected $bookshelfRepo;
+
+ protected $rules = [
+ 'create' => [
+ 'name' => 'required|string|max:255',
+ 'description' => 'string|max:1000',
+ 'books' => 'array',
+ ],
+ 'update' => [
+ 'name' => 'string|min:1|max:255',
+ 'description' => 'string|max:1000',
+ 'books' => 'array',
+ ],
+ ];
+
+ /**
+ * BookshelfApiController constructor.
+ * @param BookshelfRepo $bookshelfRepo
+ */
+ public function __construct(BookshelfRepo $bookshelfRepo)
+ {
+ $this->bookshelfRepo = $bookshelfRepo;
+ }
+
+ /**
+ * Get a listing of shelves visible to the user.
+ */
+ public function list()
+ {
+ $shelves = Bookshelf::visible();
+ return $this->apiListingResponse($shelves, [
+ 'id', 'name', 'slug', 'description', 'created_at', 'updated_at', 'created_by', 'updated_by', 'image_id',
+ ]);
+ }
+
+ /**
+ * Create a new shelf in the system.
+ * An array of books IDs can be provided in the request. These
+ * will be added to the shelf in the same order as provided.
+ * @throws ValidationException
+ */
+ public function create(Request $request)
+ {
+ $this->checkPermission('bookshelf-create-all');
+ $requestData = $this->validate($request, $this->rules['create']);
+
+ $bookIds = $request->get('books', []);
+ $shelf = $this->bookshelfRepo->create($requestData, $bookIds);
+
+ Activity::add($shelf, 'bookshelf_create', $shelf->id);
+ return response()->json($shelf);
+ }
+
+ /**
+ * View the details of a single shelf.
+ */
+ public function read(string $id)
+ {
+ $shelf = Bookshelf::visible()->with([
+ 'tags', 'cover', 'createdBy', 'updatedBy',
+ 'books' => function (BelongsToMany $query) {
+ $query->visible()->get(['id', 'name', 'slug']);
+ }
+ ])->findOrFail($id);
+ return response()->json($shelf);
+ }
+
+ /**
+ * Update the details of a single shelf.
+ * An array of books IDs can be provided in the request. These
+ * will be added to the shelf in the same order as provided and overwrite
+ * any existing book assignments.
+ * @throws ValidationException
+ */
+ public function update(Request $request, string $id)
+ {
+ $shelf = Bookshelf::visible()->findOrFail($id);
+ $this->checkOwnablePermission('bookshelf-update', $shelf);
+
+ $requestData = $this->validate($request, $this->rules['update']);
+
+ $bookIds = $request->get('books', null);
+
+ $shelf = $this->bookshelfRepo->update($shelf, $requestData, $bookIds);
+ Activity::add($shelf, 'bookshelf_update', $shelf->id);
+
+ return response()->json($shelf);
+ }
+
+
+
+ /**
+ * Delete a single shelf from the system.
+ * @throws Exception
+ */
+ public function delete(string $id)
+ {
+ $shelf = Bookshelf::visible()->findOrFail($id);
+ $this->checkOwnablePermission('bookshelf-delete', $shelf);
+
+ $this->bookshelfRepo->destroy($shelf);
+ Activity::addMessage('bookshelf_delete', $shelf->name);
+
+ return response('', 204);
+ }
+}
\ No newline at end of file
--- /dev/null
+<?php namespace BookStack\Http\Controllers\Api;
+
+use BookStack\Entities\Book;
+use BookStack\Entities\Chapter;
+use BookStack\Entities\Repos\ChapterRepo;
+use BookStack\Facades\Activity;
+use Illuminate\Database\Eloquent\Relations\HasMany;
+use Illuminate\Http\Request;
+
+class ChapterApiController extends ApiController
+{
+ protected $chapterRepo;
+
+ protected $rules = [
+ 'create' => [
+ 'book_id' => 'required|integer',
+ 'name' => 'required|string|max:255',
+ 'description' => 'string|max:1000',
+ 'tags' => 'array',
+ ],
+ 'update' => [
+ 'book_id' => 'integer',
+ 'name' => 'string|min:1|max:255',
+ 'description' => 'string|max:1000',
+ 'tags' => 'array',
+ ],
+ ];
+
+ /**
+ * ChapterController constructor.
+ */
+ public function __construct(ChapterRepo $chapterRepo)
+ {
+ $this->chapterRepo = $chapterRepo;
+ }
+
+ /**
+ * Get a listing of chapters visible to the user.
+ */
+ public function list()
+ {
+ $chapters = Chapter::visible();
+ return $this->apiListingResponse($chapters, [
+ 'id', 'book_id', 'name', 'slug', 'description', 'priority',
+ 'created_at', 'updated_at', 'created_by', 'updated_by',
+ ]);
+ }
+
+ /**
+ * Create a new chapter in the system.
+ */
+ public function create(Request $request)
+ {
+ $this->validate($request, $this->rules['create']);
+
+ $bookId = $request->get('book_id');
+ $book = Book::visible()->findOrFail($bookId);
+ $this->checkOwnablePermission('chapter-create', $book);
+
+ $chapter = $this->chapterRepo->create($request->all(), $book);
+ Activity::add($chapter, 'chapter_create', $book->id);
+
+ return response()->json($chapter->load(['tags']));
+ }
+
+ /**
+ * View the details of a single chapter.
+ */
+ public function read(string $id)
+ {
+ $chapter = Chapter::visible()->with(['tags', 'createdBy', 'updatedBy', 'pages' => function (HasMany $query) {
+ $query->visible()->get(['id', 'name', 'slug']);
+ }])->findOrFail($id);
+ return response()->json($chapter);
+ }
+
+ /**
+ * Update the details of a single chapter.
+ */
+ public function update(Request $request, string $id)
+ {
+ $chapter = Chapter::visible()->findOrFail($id);
+ $this->checkOwnablePermission('chapter-update', $chapter);
+
+ $updatedChapter = $this->chapterRepo->update($chapter, $request->all());
+ Activity::add($chapter, 'chapter_update', $chapter->book->id);
+
+ return response()->json($updatedChapter->load(['tags']));
+ }
+
+ /**
+ * Delete a chapter from the system.
+ */
+ public function delete(string $id)
+ {
+ $chapter = Chapter::visible()->findOrFail($id);
+ $this->checkOwnablePermission('chapter-delete', $chapter);
+
+ $this->chapterRepo->destroy($chapter);
+ Activity::addMessage('chapter_delete', $chapter->name, $chapter->book->id);
+
+ return response('', 204);
+ }
+}
--- /dev/null
+<?php namespace BookStack\Http\Controllers\Api;
+
+use BookStack\Entities\Chapter;
+use BookStack\Entities\ExportService;
+use BookStack\Entities\Repos\BookRepo;
+use Throwable;
+
+class ChapterExportApiController extends ApiController
+{
+ protected $chapterRepo;
+ protected $exportService;
+
+ /**
+ * ChapterExportController constructor.
+ */
+ public function __construct(BookRepo $chapterRepo, ExportService $exportService)
+ {
+ $this->chapterRepo = $chapterRepo;
+ $this->exportService = $exportService;
+ parent::__construct();
+ }
+
+ /**
+ * Export a chapter as a PDF file.
+ * @throws Throwable
+ */
+ public function exportPdf(int $id)
+ {
+ $chapter = Chapter::visible()->findOrFail($id);
+ $pdfContent = $this->exportService->chapterToPdf($chapter);
+ return $this->downloadResponse($pdfContent, $chapter->slug . '.pdf');
+ }
+
+ /**
+ * Export a chapter as a contained HTML file.
+ * @throws Throwable
+ */
+ public function exportHtml(int $id)
+ {
+ $chapter = Chapter::visible()->findOrFail($id);
+ $htmlContent = $this->exportService->chapterToContainedHtml($chapter);
+ return $this->downloadResponse($htmlContent, $chapter->slug . '.html');
+ }
+
+ /**
+ * Export a chapter as a plain text file.
+ */
+ public function exportPlainText(int $id)
+ {
+ $chapter = Chapter::visible()->findOrFail($id);
+ $textContent = $this->exportService->chapterToPlainText($chapter);
+ return $this->downloadResponse($textContent, $chapter->slug . '.txt');
+ }
+}
use Exception;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Illuminate\Http\Request;
+use Illuminate\Support\MessageBag;
use Illuminate\Validation\ValidationException;
class AttachmentController extends Controller
/**
* Update an uploaded attachment.
* @throws ValidationException
- * @throws NotFoundException
*/
public function uploadUpdate(Request $request, $attachmentId)
{
$this->validate($request, [
- 'uploaded_to' => 'required|integer|exists:pages,id',
'file' => 'required|file'
]);
- $pageId = $request->get('uploaded_to');
- $page = $this->pageRepo->getById($pageId);
- $attachment = $this->attachment->findOrFail($attachmentId);
-
- $this->checkOwnablePermission('page-update', $page);
+ $attachment = $this->attachment->newQuery()->findOrFail($attachmentId);
+ $this->checkOwnablePermission('view', $attachment->page);
+ $this->checkOwnablePermission('page-update', $attachment->page);
$this->checkOwnablePermission('attachment-create', $attachment);
-
- if (intval($pageId) !== intval($attachment->uploaded_to)) {
- return $this->jsonError(trans('errors.attachment_page_mismatch'));
- }
$uploadedFile = $request->file('file');
}
/**
- * Update the details of an existing file.
- * @throws ValidationException
- * @throws NotFoundException
+ * Get the update form for an attachment.
+ * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
- public function update(Request $request, $attachmentId)
+ public function getUpdateForm(string $attachmentId)
{
- $this->validate($request, [
- 'uploaded_to' => 'required|integer|exists:pages,id',
- 'name' => 'required|string|min:1|max:255',
- 'link' => 'string|min:1|max:255'
- ]);
-
- $pageId = $request->get('uploaded_to');
- $page = $this->pageRepo->getById($pageId);
$attachment = $this->attachment->findOrFail($attachmentId);
- $this->checkOwnablePermission('page-update', $page);
+ $this->checkOwnablePermission('page-update', $attachment->page);
$this->checkOwnablePermission('attachment-create', $attachment);
- if (intval($pageId) !== intval($attachment->uploaded_to)) {
- return $this->jsonError(trans('errors.attachment_page_mismatch'));
+ return view('attachments.manager-edit-form', [
+ 'attachment' => $attachment,
+ ]);
+ }
+
+ /**
+ * Update the details of an existing file.
+ */
+ public function update(Request $request, string $attachmentId)
+ {
+ $attachment = $this->attachment->newQuery()->findOrFail($attachmentId);
+
+ try {
+ $this->validate($request, [
+ 'attachment_edit_name' => 'required|string|min:1|max:255',
+ 'attachment_edit_url' => 'string|min:1|max:255'
+ ]);
+ } catch (ValidationException $exception) {
+ return response()->view('attachments.manager-edit-form', array_merge($request->only(['attachment_edit_name', 'attachment_edit_url']), [
+ 'attachment' => $attachment,
+ 'errors' => new MessageBag($exception->errors()),
+ ]), 422);
}
- $attachment = $this->attachmentService->updateFile($attachment, $request->all());
- return response()->json($attachment);
+ $this->checkOwnablePermission('view', $attachment->page);
+ $this->checkOwnablePermission('page-update', $attachment->page);
+ $this->checkOwnablePermission('attachment-create', $attachment);
+
+ $attachment = $this->attachmentService->updateFile($attachment, [
+ 'name' => $request->get('attachment_edit_name'),
+ 'link' => $request->get('attachment_edit_url'),
+ ]);
+
+ return view('attachments.manager-edit-form', [
+ 'attachment' => $attachment,
+ ]);
}
/**
* Attach a link to a page.
- * @throws ValidationException
* @throws NotFoundException
*/
public function attachLink(Request $request)
{
- $this->validate($request, [
- 'uploaded_to' => 'required|integer|exists:pages,id',
- 'name' => 'required|string|min:1|max:255',
- 'link' => 'required|string|min:1|max:255'
- ]);
+ $pageId = $request->get('attachment_link_uploaded_to');
+
+ try {
+ $this->validate($request, [
+ 'attachment_link_uploaded_to' => 'required|integer|exists:pages,id',
+ 'attachment_link_name' => 'required|string|min:1|max:255',
+ 'attachment_link_url' => 'required|string|min:1|max:255'
+ ]);
+ } catch (ValidationException $exception) {
+ return response()->view('attachments.manager-link-form', array_merge($request->only(['attachment_link_name', 'attachment_link_url']), [
+ 'pageId' => $pageId,
+ 'errors' => new MessageBag($exception->errors()),
+ ]), 422);
+ }
- $pageId = $request->get('uploaded_to');
$page = $this->pageRepo->getById($pageId);
$this->checkPermission('attachment-create-all');
$this->checkOwnablePermission('page-update', $page);
- $attachmentName = $request->get('name');
- $link = $request->get('link');
+ $attachmentName = $request->get('attachment_link_name');
+ $link = $request->get('attachment_link_url');
$attachment = $this->attachmentService->saveNewFromLink($attachmentName, $link, $pageId);
- return response()->json($attachment);
+ return view('attachments.manager-link-form', [
+ 'pageId' => $pageId,
+ ]);
}
/**
{
$page = $this->pageRepo->getById($pageId);
$this->checkOwnablePermission('page-view', $page);
- return response()->json($page->attachments);
+ return view('attachments.manager-list', [
+ 'attachments' => $page->attachments->all(),
+ ]);
}
/**
public function sortForPage(Request $request, int $pageId)
{
$this->validate($request, [
- 'files' => 'required|array',
- 'files.*.id' => 'required|integer',
+ 'order' => 'required|array',
]);
$page = $this->pageRepo->getById($pageId);
$this->checkOwnablePermission('page-update', $page);
- $attachments = $request->get('files');
- $this->attachmentService->updateFileOrderWithinPage($attachments, $pageId);
+ $attachmentOrder = $request->get('order');
+ $this->attachmentService->updateFileOrderWithinPage($attachmentOrder, $pageId);
return response()->json(['message' => trans('entities.attachments_order_updated')]);
}
* @throws FileNotFoundException
* @throws NotFoundException
*/
- public function get(int $attachmentId)
+ public function get(string $attachmentId)
{
$attachment = $this->attachment->findOrFail($attachmentId);
try {
/**
* Delete a specific attachment in the system.
- * @param $attachmentId
- * @return mixed
* @throws Exception
*/
- public function delete(int $attachmentId)
+ public function delete(string $attachmentId)
{
$attachment = $this->attachment->findOrFail($attachmentId);
$this->checkOwnablePermission('attachment-delete', $attachment);
use BookStack\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Http\Request;
-use Password;
+use Illuminate\Support\Facades\Password;
class ForgotPasswordController extends Controller
{
$request->only('email')
);
- if ($response === Password::RESET_LINK_SENT) {
- $message = trans('auth.reset_password_sent_success', ['email' => $request->get('email')]);
+ if ($response === Password::RESET_LINK_SENT || $response === Password::INVALID_USER) {
+ $message = trans('auth.reset_password_sent', ['email' => $request->get('email')]);
$this->showSuccessNotification($message);
return back()->with('status', trans($response));
}
]);
}
+ $previous = url()->previous('');
+ if (setting('app-public') && $previous && $previous !== url('/login')) {
+ redirect()->setIntendedUrl($previous);
+ }
+
return view('auth.login', [
'socialDrivers' => $socialDrivers,
'authMethod' => $authMethod,
return $this->sendFailedLoginResponse($request);
}
+ /**
+ * The user has been authenticated.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param mixed $user
+ * @return mixed
+ */
+ protected function authenticated(Request $request, $user)
+ {
+ // Authenticate on all session guards if a likely admin
+ if ($user->can('users-manage') && $user->can('user-roles-manage')) {
+ $guards = ['standard', 'ldap', 'saml2'];
+ foreach ($guards as $guard) {
+ auth($guard)->login($user);
+ }
+ }
+
+ return redirect()->intended($this->redirectPath());
+ }
+
/**
* Validate the user login request.
*
use BookStack\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Password;
class ResetPasswordController extends Controller
{
return redirect($this->redirectPath())
->with('status', trans($response));
}
+
+ /**
+ * Get the response for a failed password reset.
+ *
+ * @param \Illuminate\Http\Request $request
+ * @param string $response
+ * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
+ */
+ protected function sendResetFailedResponse(Request $request, $response)
+ {
+ // We show invalid users as invalid tokens as to not leak what
+ // users may exist in the system.
+ if ($response === Password::INVALID_USER) {
+ $response = Password::INVALID_TOKEN;
+ }
+
+ return redirect()->back()
+ ->withInput($request->only('email'))
+ ->withErrors(['email' => trans($response)]);
+ }
}
'password' => Str::random(32)
];
+ // Take name from email address if empty
+ if (!$userData['name']) {
+ $userData['name'] = explode('@', $userData['email'])[0];
+ }
+
$user = $this->registrationService->registerUser($userData, $socialAccount, $emailVerified);
auth()->login($user);
$this->validate($request, [
'name' => 'required|string|max:255',
'description' => 'string|max:1000',
- 'image' => $this->getImageValidationRules(),
+ 'image' => 'nullable|' . $this->getImageValidationRules(),
]);
$bookshelf = null;
{
$book = $this->bookRepo->getBySlug($slug);
$bookChildren = (new BookContents($book))->getTree(true);
+ $bookParentShelves = $book->shelves()->visible()->get();
Views::add($book);
if ($request->has('shelf')) {
'book' => $book,
'current' => $book,
'bookChildren' => $bookChildren,
+ 'bookParentShelves' => $bookParentShelves,
'activity' => Activity::entityActivity($book, 20, 1)
]);
}
$this->validate($request, [
'name' => 'required|string|max:255',
'description' => 'string|max:1000',
- 'image' => $this->getImageValidationRules(),
+ 'image' => 'nullable|' . $this->getImageValidationRules(),
]);
$book = $this->bookRepo->update($book, $request->all());
$this->validate($request, [
'name' => 'required|string|max:255',
'description' => 'string|max:1000',
- 'image' => $this->getImageValidationRules(),
+ 'image' => 'nullable|' . $this->getImageValidationRules(),
]);
$bookIds = explode(',', $request->get('books', ''));
$shelf = $this->bookshelfRepo->create($request->all(), $bookIds);
- $this->bookshelfRepo->updateCoverImage($shelf);
+ $this->bookshelfRepo->updateCoverImage($shelf, $request->file('image', null));
Activity::add($shelf, 'bookshelf_create');
return redirect($shelf->getUrl());
Views::add($shelf);
$this->entityContextManager->setShelfContext($shelf->id);
+ $view = setting()->getForCurrentUser('bookshelf_view_type', config('app.views.books'));
$this->setPageTitle($shelf->getShortName());
return view('shelves.show', [
'shelf' => $shelf,
+ 'view' => $view,
'activity' => Activity::entityActivity($shelf, 20, 1)
]);
}
$this->validate($request, [
'name' => 'required|string|max:255',
'description' => 'string|max:1000',
- 'image' => $this->imageRepo->getImageValidationRules(),
+ 'image' => 'nullable|' . $this->getImageValidationRules(),
]);
{
protected $commentRepo;
- /**
- * CommentController constructor.
- */
public function __construct(CommentRepo $commentRepo)
{
$this->commentRepo = $commentRepo;
* Save a new comment for a Page
* @throws ValidationException
*/
- public function savePageComment(Request $request, int $pageId, int $commentId = null)
+ public function savePageComment(Request $request, int $pageId)
{
$this->validate($request, [
'text' => 'required|string',
- 'html' => 'required|string',
+ 'parent_id' => 'nullable|integer',
]);
$page = Page::visible()->find($pageId);
return response('Not found', 404);
}
- $this->checkOwnablePermission('page-view', $page);
-
// Prevent adding comments to draft pages
if ($page->draft) {
return $this->jsonError(trans('errors.cannot_add_comment_to_draft'), 400);
// Create a new comment.
$this->checkPermission('comment-create-all');
- $comment = $this->commentRepo->create($page, $request->only(['html', 'text', 'parent_id']));
+ $comment = $this->commentRepo->create($page, $request->get('text'), $request->get('parent_id'));
Activity::add($page, 'commented_on', $page->book->id);
return view('comments.comment', ['comment' => $comment]);
}
{
$this->validate($request, [
'text' => 'required|string',
- 'html' => 'required|string',
]);
$comment = $this->commentRepo->getById($commentId);
$this->checkOwnablePermission('page-view', $comment->entity);
$this->checkOwnablePermission('comment-update', $comment);
- $comment = $this->commentRepo->update($comment, $request->only(['html', 'text']));
+ $comment = $this->commentRepo->update($comment, $request->get('text'));
return view('comments.comment', ['comment' => $comment]);
}
*/
protected function getImageValidationRules(): string
{
- return 'image_extension|no_double_extension|mimes:jpeg,png,gif,bmp,webp,tiff';
+ return 'image_extension|no_double_extension|mimes:jpeg,png,gif,webp';
}
}
}
if ($homepageOption === 'bookshelves') {
- $shelfRepo = app(BookshelfRepo::class);
$shelves = app(BookshelfRepo::class)->getAllPaginated(18, $commonData['sort'], $commonData['order']);
- foreach ($shelves as $shelf) {
- $shelf->books = $shelf->visibleBooks;
- }
$data = array_merge($commonData, ['shelves' => $shelves]);
return view('common.home-shelves', $data);
}
use BookStack\Exceptions\ImageUploadException;
use BookStack\Uploads\ImageRepo;
+use Exception;
use Illuminate\Http\Request;
use BookStack\Http\Controllers\Controller;
{
protected $imageRepo;
- /**
- * DrawioImageController constructor.
- * @param ImageRepo $imageRepo
- */
public function __construct(ImageRepo $imageRepo)
{
$this->imageRepo = $imageRepo;
/**
* Get a list of gallery images, in a list.
* Can be paged and filtered by entity.
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
*/
public function list(Request $request)
{
$parentTypeFilter = $request->get('filter_type', null);
$imgData = $this->imageRepo->getEntityFiltered('drawio', $parentTypeFilter, $page, 24, $uploadedToFilter, $searchTerm);
- return response()->json($imgData);
+ return view('components.image-manager-list', [
+ 'images' => $imgData['images'],
+ 'hasMore' => $imgData['has_more'],
+ ]);
}
/**
* Store a new gallery image in the system.
- * @param Request $request
- * @return Illuminate\Http\JsonResponse
- * @throws \Exception
+ * @throws Exception
*/
public function create(Request $request)
{
/**
* Get the content of an image based64 encoded.
- * @param $id
- * @return \Illuminate\Http\JsonResponse|mixed
*/
public function getAsBase64($id)
{
if ($imageData === null) {
return $this->jsonError("Image data could not be found");
}
+
return response()->json([
'content' => base64_encode($imageData)
]);
use BookStack\Uploads\ImageRepo;
use Illuminate\Http\Request;
use BookStack\Http\Controllers\Controller;
+use Illuminate\Validation\ValidationException;
class GalleryImageController extends Controller
{
/**
* GalleryImageController constructor.
- * @param ImageRepo $imageRepo
*/
public function __construct(ImageRepo $imageRepo)
{
/**
* Get a list of gallery images, in a list.
* Can be paged and filtered by entity.
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
*/
public function list(Request $request)
{
$parentTypeFilter = $request->get('filter_type', null);
$imgData = $this->imageRepo->getEntityFiltered('gallery', $parentTypeFilter, $page, 24, $uploadedToFilter, $searchTerm);
- return response()->json($imgData);
+ return view('components.image-manager-list', [
+ 'images' => $imgData['images'],
+ 'hasMore' => $imgData['has_more'],
+ ]);
}
/**
* Store a new gallery image in the system.
- * @param Request $request
- * @return Illuminate\Http\JsonResponse
- * @throws \Exception
+ * @throws ValidationException
*/
public function create(Request $request)
{
$this->checkPermission('image-create-all');
$this->validate($request, [
- 'file' => $this->imageRepo->getImageValidationRules()
+ 'file' => $this->getImageValidationRules()
]);
try {
use BookStack\Repos\PageRepo;
use BookStack\Uploads\Image;
use BookStack\Uploads\ImageRepo;
+use Exception;
use Illuminate\Filesystem\Filesystem as File;
+use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
+use Illuminate\Validation\ValidationException;
class ImageController extends Controller
{
/**
* ImageController constructor.
- * @param Image $image
- * @param File $file
- * @param ImageRepo $imageRepo
*/
public function __construct(Image $image, File $file, ImageRepo $imageRepo)
{
/**
* Provide an image file from storage.
- * @param string $path
- * @return mixed
*/
public function showImage(string $path)
{
/**
* Update image details
- * @param Request $request
- * @param integer $id
- * @return \Illuminate\Http\JsonResponse
* @throws ImageUploadException
- * @throws \Exception
+ * @throws ValidationException
*/
- public function update(Request $request, $id)
+ public function update(Request $request, string $id)
{
$this->validate($request, [
'name' => 'required|min:2|string'
$this->checkOwnablePermission('image-update', $image);
$image = $this->imageRepo->updateImageDetails($image, $request->all());
- return response()->json($image);
+
+ $this->imageRepo->loadThumbs($image);
+ return view('components.image-manager-form', [
+ 'image' => $image,
+ 'dependantPages' => null,
+ ]);
}
/**
- * Show the usage of an image on pages.
+ * Get the form for editing the given image.
+ * @throws Exception
*/
- public function usage(int $id)
+ public function edit(Request $request, string $id)
{
$image = $this->imageRepo->getById($id);
$this->checkImagePermission($image);
- $pages = Page::visible()->where('html', 'like', '%' . $image->url . '%')->get(['id', 'name', 'slug', 'book_id']);
- foreach ($pages as $page) {
- $page->url = $page->getUrl();
- $page->html = '';
- $page->text = '';
+ if ($request->has('delete')) {
+ $dependantPages = $this->imageRepo->getPagesUsingImage($image);
}
- $result = count($pages) > 0 ? $pages : false;
- return response()->json($result);
+ $this->imageRepo->loadThumbs($image);
+ return view('components.image-manager-form', [
+ 'image' => $image,
+ 'dependantPages' => $dependantPages ?? null,
+ ]);
}
/**
* Deletes an image and all thumbnail/image files
- * @param int $id
- * @return \Illuminate\Http\JsonResponse
- * @throws \Exception
+ * @throws Exception
*/
- public function destroy($id)
+ public function destroy(string $id)
{
$image = $this->imageRepo->getById($id);
$this->checkOwnablePermission('image-delete', $image);
$this->checkImagePermission($image);
$this->imageRepo->destroyImage($image);
- return response()->json(trans('components.images_deleted'));
+ return response('');
}
/**
* Check related page permission and ensure type is drawio or gallery.
- * @param Image $image
*/
protected function checkImagePermission(Image $image)
{
public function getPageAjax(int $pageId)
{
$page = $this->pageRepo->getById($pageId);
+ $page->setHidden(array_diff($page->getHidden(), ['html', 'markdown']));
+ $page->addHidden(['book']);
return response()->json($page);
}
<?php namespace BookStack\Http\Controllers;
+use BookStack\Entities\Managers\PageContent;
use BookStack\Entities\Repos\PageRepo;
use BookStack\Exceptions\NotFoundException;
use BookStack\Facades\Activity;
}
$page->fill($revision->toArray());
+ // TODO - Refactor PageContent so we don't need to juggle this
+ $page->html = $revision->html;
+ $page->html = (new PageContent($page))->render();
$this->setPageTitle(trans('entities.pages_revision_named', ['pageName' => $page->getShortName()]));
return view('pages.revision', [
$diff = (new Htmldiff)->diff($prevContent, $revision->html);
$page->fill($revision->toArray());
+ // TODO - Refactor PageContent so we don't need to juggle this
+ $page->html = $revision->html;
+ $page->html = (new PageContent($page))->render();
$this->setPageTitle(trans('entities.pages_revision_named', ['pageName'=>$page->getShortName()]));
return view('pages.revision', [
use BookStack\Entities\Entity;
use BookStack\Entities\Managers\EntityContext;
use BookStack\Entities\SearchService;
+use BookStack\Entities\SearchOptions;
use Illuminate\Http\Request;
class SearchController extends Controller
*/
public function search(Request $request)
{
- $searchTerm = $request->get('term');
- $this->setPageTitle(trans('entities.search_for_term', ['term' => $searchTerm]));
+ $searchOpts = SearchOptions::fromRequest($request);
+ $fullSearchString = $searchOpts->toString();
+ $this->setPageTitle(trans('entities.search_for_term', ['term' => $fullSearchString]));
$page = intval($request->get('page', '0')) ?: 1;
- $nextPageLink = url('/search?term=' . urlencode($searchTerm) . '&page=' . ($page+1));
+ $nextPageLink = url('/search?term=' . urlencode($fullSearchString) . '&page=' . ($page+1));
- $results = $this->searchService->searchEntities($searchTerm, 'all', $page, 20);
+ $results = $this->searchService->searchEntities($searchOpts, 'all', $page, 20);
return view('search.all', [
'entities' => $results['results'],
'totalResults' => $results['total'],
- 'searchTerm' => $searchTerm,
+ 'searchTerm' => $fullSearchString,
'hasNextPage' => $results['has_more'],
- 'nextPageLink' => $nextPageLink
+ 'nextPageLink' => $nextPageLink,
+ 'options' => $searchOpts,
]);
}
// Search for entities otherwise show most popular
if ($searchTerm !== false) {
$searchTerm .= ' {type:'. implode('|', $entityTypes) .'}';
- $entities = $this->searchService->searchEntities($searchTerm, 'all', 1, 20, $permission)['results'];
+ $entities = $this->searchService->searchEntities(SearchOptions::fromString($searchTerm), 'all', 1, 20, $permission)['results'];
} else {
$entities = $this->viewService->getPopular(20, 0, $entityTypes, $permission);
}
// Page in chapter
if ($entity->isA('page') && $entity->chapter) {
- $entities = $entity->chapter->visiblePages();
+ $entities = $entity->chapter->getVisiblePages();
}
// Page in book or chapter
$this->preventAccessInDemoMode();
$this->checkPermission('settings-manage');
$this->validate($request, [
- 'app_logo' => $this->imageRepo->getImageValidationRules(),
+ 'app_logo' => 'nullable|' . $this->getImageValidationRules(),
]);
// Cycles through posted settings and update them
}
// Update logo image if set
- if ($request->has('app_logo')) {
+ if ($request->hasFile('app_logo')) {
$logoFile = $request->file('app_logo');
$this->imageRepo->destroyByType('system');
$image = $this->imageRepo->saveNew($logoFile, 'system', 0, null, 86);
{
$this->checkPermission('settings-manage');
- user()->notify(new TestEmail());
- $this->showSuccessNotification(trans('settings.maint_send_test_email_success', ['address' => user()->email]));
+ try {
+ user()->notify(new TestEmail());
+ $this->showSuccessNotification(trans('settings.maint_send_test_email_success', ['address' => user()->email]));
+ } catch (\Exception $exception) {
+ $errorMessage = trans('errors.maintenance_test_email_failure') . "\n" . $exception->getMessage();
+ $this->showErrorNotification($errorMessage);
+ }
+
return redirect('/settings/maintenance#image-cleanup')->withInput();
}
/**
* TagController constructor.
- * @param $tagRepo
*/
public function __construct(TagRepo $tagRepo)
{
parent::__construct();
}
- /**
- * Get all the Tags for a particular entity
- * @param $entityType
- * @param $entityId
- * @return \Illuminate\Http\JsonResponse
- */
- public function getForEntity($entityType, $entityId)
- {
- $tags = $this->tagRepo->getForEntity($entityType, $entityId);
- return response()->json($tags);
- }
-
/**
* Get tag name suggestions from a given search term.
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
*/
public function getNameSuggestions(Request $request)
{
- $searchTerm = $request->get('search', false);
+ $searchTerm = $request->get('search', null);
$suggestions = $this->tagRepo->getNameSuggestions($searchTerm);
return response()->json($suggestions);
}
/**
* Get tag value suggestions from a given search term.
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
*/
public function getValueSuggestions(Request $request)
{
- $searchTerm = $request->get('search', false);
- $tagName = $request->get('name', false);
+ $searchTerm = $request->get('search', null);
+ $tagName = $request->get('name', null);
$suggestions = $this->tagRepo->getValueSuggestions($searchTerm, $tagName);
return response()->json($suggestions);
}
use BookStack\Exceptions\UserUpdateException;
use BookStack\Uploads\ImageRepo;
use Illuminate\Http\Request;
-use Illuminate\Http\Response;
use Illuminate\Support\Str;
class UserController extends Controller
/**
* UserController constructor.
- * @param User $user
- * @param UserRepo $userRepo
- * @param UserInviteService $inviteService
- * @param ImageRepo $imageRepo
*/
public function __construct(User $user, UserRepo $userRepo, UserInviteService $inviteService, ImageRepo $imageRepo)
{
/**
* Display a listing of the users.
- * @param Request $request
- * @return Response
*/
public function index(Request $request)
{
/**
* Show the form for creating a new user.
- * @return Response
*/
public function create()
{
/**
* Store a newly created user in storage.
- * @param Request $request
- * @return Response
* @throws UserUpdateException
+ * @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
if ($authMethod === 'standard' && !$sendInvite) {
$validationRules['password'] = 'required|min:6';
$validationRules['password-confirm'] = 'required|same:password';
- } elseif ($authMethod === 'ldap') {
+ } elseif ($authMethod === 'ldap' || $authMethod === 'saml2') {
$validationRules['external_auth_id'] = 'required';
}
$this->validate($request, $validationRules);
if ($authMethod === 'standard') {
$user->password = bcrypt($request->get('password', Str::random(32)));
- } elseif ($authMethod === 'ldap') {
+ } elseif ($authMethod === 'ldap' || $authMethod === 'saml2') {
$user->external_auth_id = $request->get('external_auth_id');
}
/**
* Update the specified user in storage.
- * @param Request $request
- * @param int $id
- * @return Response
* @throws UserUpdateException
* @throws \BookStack\Exceptions\ImageUploadException
+ * @throws \Illuminate\Validation\ValidationException
*/
- public function update(Request $request, $id)
+ public function update(Request $request, int $id)
{
$this->preventAccessInDemoMode();
$this->checkPermissionOrCurrentUser('users-manage', $id);
'password' => 'min:6|required_with:password_confirm',
'password-confirm' => 'same:password|required_with:password',
'setting' => 'array',
- 'profile_image' => $this->imageRepo->getImageValidationRules(),
+ 'profile_image' => 'nullable|' . $this->getImageValidationRules(),
]);
$user = $this->userRepo->getById($id);
}
// Save profile image if in request
- if ($request->has('profile_image')) {
+ if ($request->hasFile('profile_image')) {
$imageUpload = $request->file('profile_image');
$this->imageRepo->destroyImage($user->avatar);
$image = $this->imageRepo->saveNew($imageUpload, 'user', $user->id);
/**
* Show the user delete page.
- * @param int $id
- * @return \Illuminate\View\View
*/
- public function delete($id)
+ public function delete(int $id)
{
$this->checkPermissionOrCurrentUser('users-manage', $id);
/**
* Remove the specified user from storage.
- * @param int $id
- * @return Response
* @throws \Exception
*/
- public function destroy($id)
+ public function destroy(int $id)
{
$this->preventAccessInDemoMode();
$this->checkPermissionOrCurrentUser('users-manage', $id);
/**
* Show the user profile page
- * @param $id
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function showProfilePage($id)
{
/**
* Update the user's preferred book-list display setting.
- * @param Request $request
- * @param $id
- * @return \Illuminate\Http\RedirectResponse
*/
- public function switchBookView(Request $request, $id)
+ public function switchBooksView(Request $request, int $id)
{
return $this->switchViewType($id, $request, 'books');
}
/**
* Update the user's preferred shelf-list display setting.
- * @param Request $request
- * @param $id
- * @return \Illuminate\Http\RedirectResponse
*/
- public function switchShelfView(Request $request, $id)
+ public function switchShelvesView(Request $request, int $id)
{
return $this->switchViewType($id, $request, 'bookshelves');
}
+ /**
+ * Update the user's preferred shelf-view book list display setting.
+ */
+ public function switchShelfView(Request $request, int $id)
+ {
+ return $this->switchViewType($id, $request, 'bookshelf');
+ }
+
/**
* For a type of list, switch with stored view type for a user.
- * @param integer $userId
- * @param Request $request
- * @param string $listName
- * @return \Illuminate\Http\RedirectResponse
*/
- protected function switchViewType($userId, Request $request, string $listName)
+ protected function switchViewType(int $userId, Request $request, string $listName)
{
$this->checkPermissionOrCurrentUser('users-manage', $userId);
/**
* Change the stored sort type for a particular view.
- * @param Request $request
- * @param string $id
- * @param string $type
- * @return \Illuminate\Http\RedirectResponse
*/
public function changeSort(Request $request, string $id, string $type)
{
return $this->changeListSort($id, $request, $type);
}
+ /**
+ * Toggle dark mode for the current user.
+ */
+ public function toggleDarkMode()
+ {
+ $enabled = setting()->getForCurrentUser('dark-mode-enabled', false);
+ setting()->putUser(user(), 'dark-mode-enabled', $enabled ? 'false' : 'true');
+ return redirect()->back();
+ }
+
/**
* Update the stored section expansion preference for the given user.
- * @param Request $request
- * @param string $id
- * @param string $key
- * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
*/
public function updateExpansionPreference(Request $request, string $id, string $key)
{
/**
* Changed the stored preference for a list sort order.
- * @param int $userId
- * @param Request $request
- * @param string $listName
- * @return \Illuminate\Http\RedirectResponse
*/
protected function changeListSort(int $userId, Request $request, string $listName)
{
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
- \Illuminate\Routing\Middleware\ThrottleRequests::class,
\BookStack\Http\Middleware\VerifyCsrfToken::class,
\BookStack\Http\Middleware\Localization::class,
\BookStack\Http\Middleware\GlobalViewData::class,
{
// Return if the user is already found to be signed in via session-based auth.
// This is to make it easy to browser the API via browser after just logging into the system.
- if (signedInUser()) {
+ if (signedInUser() || session()->isStarted()) {
$this->ensureEmailConfirmedIfRequested();
- if (!auth()->user()->can('access-api')) {
+ if (!user()->can('access-api')) {
throw new ApiAuthException(trans('errors.api_user_no_api_permission'), 403);
}
return;
* Array of right-to-left locales
* @var array
*/
- protected $rtlLocales = ['ar'];
+ protected $rtlLocales = ['ar', 'he'];
/**
* Map of BookStack locale names to best-estimate system locale names.
'es' => 'es_ES',
'es_AR' => 'es_AR',
'fr' => 'fr_FR',
+ 'he' => 'he_IL',
'it' => 'it_IT',
'ja' => 'ja',
'ko' => 'ko_KR',
'nl' => 'nl_NL',
'pl' => 'pl_PL',
+ 'pt' => 'pl_PT',
'pt_BR' => 'pt_BR',
'ru' => 'ru',
'sk' => 'sk_SK',
+ 'sl' => 'sl_SI',
'sv' => 'sv_SE',
'uk' => 'uk_UA',
+ 'vi' => 'vi_VN',
'zh_CN' => 'zh_CN',
'zh_TW' => 'zh_TW',
'tr' => 'tr_TR',
use BookStack\Auth\User;
+/**
+ * @property int created_by
+ * @property int updated_by
+ */
abstract class Ownable extends Model
{
/**
// Custom validation methods
Validator::extend('image_extension', function ($attribute, $value, $parameters, $validator) {
- $validImageExtensions = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'tiff', 'webp'];
+ $validImageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp'];
return in_array(strtolower($value->getClientOriginalExtension()), $validImageExtensions);
});
/**
* Get the url of this file.
- * @return string
*/
- public function getUrl()
+ public function getUrl(): string
{
if ($this->external && strpos($this->path, 'http') !== 0) {
return $this->path;
}
/**
- * Updates the file ordering for a listing of attached files.
- * @param array $attachmentList
- * @param $pageId
+ * Updates the ordering for a listing of attached files.
*/
- public function updateFileOrderWithinPage($attachmentList, $pageId)
+ public function updateFileOrderWithinPage(array $attachmentOrder, string $pageId)
{
- foreach ($attachmentList as $index => $attachment) {
- Attachment::where('uploaded_to', '=', $pageId)->where('id', '=', $attachment['id'])->update(['order' => $index]);
+ foreach ($attachmentOrder as $index => $attachmentId) {
+ Attachment::query()->where('uploaded_to', '=', $pageId)
+ ->where('id', '=', $attachmentId)
+ ->update(['order' => $index]);
}
}
*/
public function saveDrawing(string $base64Uri, int $uploadedTo): Image
{
- $name = 'Drawing-' . user()->getShortName(40) . '-' . strval(time()) . '.png';
+ $name = 'Drawing-' . strval(user()->id) . '-' . strval(time()) . '.png';
return $this->imageService->saveNewFromBase64Uri($base64Uri, $name, 'drawio', $uploadedTo);
}
* Load thumbnails onto an image object.
* @throws Exception
*/
- protected function loadThumbs(Image $image)
+ public function loadThumbs(Image $image)
{
$image->thumbs = [
'gallery' => $this->getThumbnail($image, 150, 150, false),
}
/**
- * Get the validation rules for image files.
+ * Get the user visible pages using the given image.
*/
- public function getImageValidationRules(): string
+ public function getPagesUsingImage(Image $image): array
{
- return 'image_extension|no_double_extension|mimes:jpeg,png,gif,bmp,webp,tiff';
+ $pages = Page::visible()
+ ->where('html', 'like', '%' . $image->url . '%')
+ ->get(['id', 'name', 'slug', 'book_id']);
+
+ foreach ($pages as $page) {
+ $page->url = $page->getUrl();
+ }
+
+ return $pages->all();
}
}
}
/**
- * Saves a new image
- * @param string $imageName
- * @param string $imageData
- * @param string $type
- * @param int $uploadedTo
- * @return Image
+ * Save a new image into storage.
* @throws ImageUploadException
*/
- private function saveNew($imageName, $imageData, $type, $uploadedTo = 0)
+ private function saveNew(string $imageName, string $imageData, string $type, int $uploadedTo = 0): Image
{
$storage = $this->getStorage($type);
$secureUploads = setting('app-secure-images');
- $imageName = str_replace(' ', '-', $imageName);
+ $fileName = $this->cleanImageFileName($imageName);
$imagePath = '/uploads/images/' . $type . '/' . Date('Y-m') . '/';
- while ($storage->exists($imagePath . $imageName)) {
- $imageName = Str::random(3) . $imageName;
+ while ($storage->exists($imagePath . $fileName)) {
+ $fileName = Str::random(3) . $fileName;
}
- $fullPath = $imagePath . $imageName;
+ $fullPath = $imagePath . $fileName;
if ($secureUploads) {
- $fullPath = $imagePath . Str::random(16) . '-' . $imageName;
+ $fullPath = $imagePath . Str::random(16) . '-' . $fileName;
}
try {
return $image;
}
+ /**
+ * Clean up an image file name to be both URL and storage safe.
+ */
+ protected function cleanImageFileName(string $name): string
+ {
+ $name = str_replace(' ', '-', $name);
+ $nameParts = explode('.', $name);
+ $extension = array_pop($nameParts);
+ $name = implode('.', $nameParts);
+ $name = Str::slug($name);
+
+ if (strlen($name) === 0) {
+ $name = Str::random(10);
+ }
+
+ return $name . '.' . $extension;
+ }
/**
* Checks if the image is a gif. Returns true if it is, else false.
$storage->setVisibility($thumbFilePath, 'public');
$this->cache->put('images-' . $image->id . '-' . $thumbFilePath, $thumbFilePath, 60 * 60 * 72);
+
return $this->getPublicUrl($thumbFilePath);
}
/**
* Destroys an image at the given path.
- * Searches for image thumbnails in addition to main provided path..
- * @param string $path
- * @return bool
+ * Searches for image thumbnails in addition to main provided path.
*/
- protected function destroyImagesFromPath(string $path)
+ protected function destroyImagesFromPath(string $path): bool
{
$storage = $this->getStorage();
// Delete image files
$imagesToDelete = $allImages->filter(function ($imagePath) use ($imageFileName) {
- $expectedIndex = strlen($imagePath) - strlen($imageFileName);
- return strpos($imagePath, $imageFileName) === $expectedIndex;
+ return basename($imagePath) === $imageFileName;
});
$storage->delete($imagesToDelete->all());
"ext-mbstring": "*",
"ext-tidy": "*",
"ext-xml": "*",
- "barryvdh/laravel-dompdf": "^0.8.5",
- "barryvdh/laravel-snappy": "^0.4.5",
+ "barryvdh/laravel-dompdf": "^0.8.6",
+ "barryvdh/laravel-snappy": "^0.4.7",
"doctrine/dbal": "^2.9",
+ "facade/ignition": "^1.4",
"fideloper/proxy": "^4.0",
"gathercontent/htmldiff": "^0.2.1",
"intervention/image": "^2.5",
- "laravel/framework": "^6.12",
- "laravel/socialite": "^4.2",
+ "laravel/framework": "^6.18",
+ "laravel/socialite": "^4.3.2",
+ "league/commonmark": "^1.4",
"league/flysystem-aws-s3-v3": "^1.0",
+ "nunomaduro/collision": "^3.0",
"onelogin/php-saml": "^3.3",
"predis/predis": "^1.1",
"socialiteproviders/discord": "^2.0",
"socialiteproviders/microsoft-azure": "^3.0",
"socialiteproviders/okta": "^1.0",
"socialiteproviders/slack": "^3.0",
- "socialiteproviders/twitch": "^5.0",
- "facade/ignition": "^1.4",
- "nunomaduro/collision": "^3.0"
+ "socialiteproviders/twitch": "^5.0"
},
"require-dev": {
"barryvdh/laravel-debugbar": "^3.2.8",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "309610dc13c0d46ca7553ee264a88d29",
+ "content-hash": "34390536dd685e0bc49b179babaa06ec",
"packages": [
{
"name": "aws/aws-sdk-php",
- "version": "3.133.6",
+ "version": "3.138.7",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "cd7bd2fdd159146ef6c7eeb90b73fae4fd11da57"
+ "reference": "6b9f3fcea4dfa6092c628c790ca6d369a75453b7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/cd7bd2fdd159146ef6c7eeb90b73fae4fd11da57",
- "reference": "cd7bd2fdd159146ef6c7eeb90b73fae4fd11da57",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/6b9f3fcea4dfa6092c628c790ca6d369a75453b7",
+ "reference": "6b9f3fcea4dfa6092c628c790ca6d369a75453b7",
"shasum": ""
},
"require": {
"s3",
"sdk"
],
- "time": "2020-01-24T19:11:35+00:00"
+ "time": "2020-05-22T18:11:09+00:00"
},
{
"name": "barryvdh/laravel-dompdf",
- "version": "v0.8.5",
+ "version": "v0.8.6",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-dompdf.git",
- "reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1"
+ "reference": "d7108f78cf5254a2d8c224542967f133e5a6d4e8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/7393732b2f3a3ee357974cbb0c46c9b65b84dad1",
- "reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1",
+ "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/d7108f78cf5254a2d8c224542967f133e5a6d4e8",
+ "reference": "d7108f78cf5254a2d8c224542967f133e5a6d4e8",
"shasum": ""
},
"require": {
"dompdf/dompdf": "^0.8",
- "illuminate/support": "^5.5|^6",
+ "illuminate/support": "^5.5|^6|^7",
"php": ">=7"
},
"type": "library",
"laravel",
"pdf"
],
- "time": "2019-08-23T14:30:33+00:00"
+ "time": "2020-02-25T20:44:34+00:00"
},
{
"name": "barryvdh/laravel-snappy",
- "version": "v0.4.6",
+ "version": "v0.4.7",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-snappy.git",
- "reference": "94d53c88fa58baa4573c5854663ebc9955f21265"
+ "reference": "c412d0c8f40b1326ba0fb16e94957fd1e68374f0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/94d53c88fa58baa4573c5854663ebc9955f21265",
- "reference": "94d53c88fa58baa4573c5854663ebc9955f21265",
+ "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/c412d0c8f40b1326ba0fb16e94957fd1e68374f0",
+ "reference": "c412d0c8f40b1326ba0fb16e94957fd1e68374f0",
"shasum": ""
},
"require": {
- "illuminate/filesystem": "5.5.x|5.6.x|5.7.x|5.8.x|6.*",
- "illuminate/support": "5.5.x|5.6.x|5.7.x|5.8.x|6.*",
+ "illuminate/filesystem": "^5.5|^6|^7",
+ "illuminate/support": "^5.5|^6|^7",
"knplabs/knp-snappy": "^1",
"php": ">=7"
},
"wkhtmltoimage",
"wkhtmltopdf"
],
- "time": "2019-10-02T23:27:09+00:00"
+ "time": "2020-02-25T20:52:15+00:00"
},
{
"name": "cogpowered/finediff",
},
{
"name": "doctrine/dbal",
- "version": "v2.10.1",
+ "version": "2.10.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8"
+ "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8",
- "reference": "c2b8e6e82732a64ecde1cddf9e1e06cb8556e3d8",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8",
+ "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8",
"shasum": ""
},
"require": {
"require-dev": {
"doctrine/coding-standard": "^6.0",
"jetbrains/phpstorm-stubs": "^2019.1",
- "phpstan/phpstan": "^0.11.3",
+ "nikic/php-parser": "^4.4",
+ "phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^8.4.1",
- "symfony/console": "^2.0.5|^3.0|^4.0|^5.0"
+ "symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
+ "vimeo/psalm": "^3.11"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
"sqlserver",
"sqlsrv"
],
- "time": "2020-01-04T12:56:21+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": "2020-04-20T17:19:26+00:00"
},
{
"name": "doctrine/event-manager",
},
{
"name": "doctrine/inflector",
- "version": "1.3.1",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1"
+ "reference": "18b995743e7ec8b15fd6efc594f0fa3de4bfe6d7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
- "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/18b995743e7ec8b15fd6efc594f0fa3de4bfe6d7",
+ "reference": "18b995743e7ec8b15fd6efc594f0fa3de4bfe6d7",
"shasum": ""
},
"require": {
- "php": "^7.1"
+ "php": "^7.2"
},
"require-dev": {
- "phpunit/phpunit": "^6.2"
+ "doctrine/coding-standard": "^7.0",
+ "phpstan/phpstan": "^0.11",
+ "phpstan/phpstan-phpunit": "^0.11",
+ "phpstan/phpstan-strict-rules": "^0.11",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.3.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector"
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
}
},
"notification-url": "https://packagist.org/downloads/",
}
],
- "description": "Common String Manipulations with regard to casing and singular/plural rules.",
- "homepage": "http://www.doctrine-project.org",
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
"keywords": [
"inflection",
- "pluralize",
- "singularize",
- "string"
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
+ ],
+ "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%2Finflector",
+ "type": "tidelift"
+ }
],
- "time": "2019-10-30T19:59:35+00:00"
+ "time": "2020-05-11T11:25:59+00:00"
},
{
"name": "doctrine/lexer",
},
{
"name": "dompdf/dompdf",
- "version": "v0.8.4",
+ "version": "v0.8.5",
"source": {
"type": "git",
"url": "https://github.com/dompdf/dompdf.git",
- "reference": "8f49b3b01693f51037dd50da81090beba1b5c005"
+ "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dompdf/dompdf/zipball/8f49b3b01693f51037dd50da81090beba1b5c005",
- "reference": "8f49b3b01693f51037dd50da81090beba1b5c005",
+ "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6782abfc090b132134cd6cea0ec6d76f0fce2c56",
+ "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56",
"shasum": ""
},
"require": {
],
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
"homepage": "https://github.com/dompdf/dompdf",
- "time": "2020-01-20T17:00:46+00:00"
+ "time": "2020-02-20T03:52:51+00:00"
},
{
"name": "dragonmantank/cron-expression",
},
{
"name": "egulias/email-validator",
- "version": "2.1.15",
+ "version": "2.1.17",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
- "reference": "e834eea5306d85d67de5a05db5882911d5b29357"
+ "reference": "ade6887fd9bd74177769645ab5c474824f8a418a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e834eea5306d85d67de5a05db5882911d5b29357",
- "reference": "e834eea5306d85d67de5a05db5882911d5b29357",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a",
+ "reference": "ade6887fd9bd74177769645ab5c474824f8a418a",
"shasum": ""
},
"require": {
"validation",
"validator"
],
- "time": "2020-01-20T21:40:59+00:00"
+ "time": "2020-02-13T22:36:52+00:00"
},
{
"name": "facade/flare-client-php",
- "version": "1.3.1",
+ "version": "1.3.2",
"source": {
"type": "git",
"url": "https://github.com/facade/flare-client-php.git",
- "reference": "24444ea0e1556f0a4b5fc8e61802caf72ae9a408"
+ "reference": "db1e03426e7f9472c9ecd1092aff00f56aa6c004"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/facade/flare-client-php/zipball/24444ea0e1556f0a4b5fc8e61802caf72ae9a408",
- "reference": "24444ea0e1556f0a4b5fc8e61802caf72ae9a408",
+ "url": "https://api.github.com/repos/facade/flare-client-php/zipball/db1e03426e7f9472c9ecd1092aff00f56aa6c004",
+ "reference": "db1e03426e7f9472c9ecd1092aff00f56aa6c004",
"shasum": ""
},
"require": {
"facade/ignition-contracts": "~1.0",
- "illuminate/pipeline": "~5.5|~5.6|~5.7|~5.8|^6.0",
+ "illuminate/pipeline": "^5.5|^6.0|^7.0",
"php": "^7.1",
- "symfony/http-foundation": "~3.3|~4.1",
+ "symfony/http-foundation": "^3.3|^4.1|^5.0",
"symfony/var-dumper": "^3.4|^4.0|^5.0"
},
"require-dev": {
"flare",
"reporting"
],
- "time": "2019-12-15T18:28:38+00:00"
+ "time": "2020-03-02T15:52:04+00:00"
},
{
"name": "facade/ignition",
- "version": "1.16.0",
+ "version": "1.16.1",
"source": {
"type": "git",
"url": "https://github.com/facade/ignition.git",
- "reference": "37f094775814b68d0c6cc8b8ff3c3be243f20725"
+ "reference": "af05ac5ee8587395d7474ec0681c08776a2cb09d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/facade/ignition/zipball/37f094775814b68d0c6cc8b8ff3c3be243f20725",
- "reference": "37f094775814b68d0c6cc8b8ff3c3be243f20725",
+ "url": "https://api.github.com/repos/facade/ignition/zipball/af05ac5ee8587395d7474ec0681c08776a2cb09d",
+ "reference": "af05ac5ee8587395d7474ec0681c08776a2cb09d",
"shasum": ""
},
"require": {
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "v2.x-dev"
+ "dev-master": "1.x-dev"
},
"laravel": {
"providers": [
"laravel",
"page"
],
- "time": "2020-01-21T17:46:02+00:00"
+ "time": "2020-03-05T12:39:07+00:00"
},
{
"name": "facade/ignition-contracts",
},
{
"name": "fideloper/proxy",
- "version": "4.2.2",
+ "version": "4.3.0",
"source": {
"type": "git",
"url": "https://github.com/fideloper/TrustedProxy.git",
- "reference": "790194d5d3da89a713478875d2e2d05855a90a81"
+ "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/790194d5d3da89a713478875d2e2d05855a90a81",
- "reference": "790194d5d3da89a713478875d2e2d05855a90a81",
+ "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a",
+ "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a",
"shasum": ""
},
"require": {
- "illuminate/contracts": "^5.0|^6.0|^7.0",
+ "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0",
"php": ">=5.4.0"
},
"require-dev": {
- "illuminate/http": "^5.0|^6.0|^7.0",
+ "illuminate/http": "^5.0|^6.0|^7.0|^8.0",
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^6.0"
},
"proxy",
"trusted proxy"
],
- "time": "2019-12-20T13:11:11+00:00"
+ "time": "2020-02-22T01:51:47+00:00"
},
{
"name": "filp/whoops",
- "version": "2.7.1",
+ "version": "2.7.2",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
- "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130"
+ "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filp/whoops/zipball/fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130",
- "reference": "fff6f1e4f36be0e0d0b84d66b413d9dcb0c49130",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/17d0d3f266c8f925ebd035cd36f83cf802b47d4a",
+ "reference": "17d0d3f266c8f925ebd035cd36f83cf802b47d4a",
"shasum": ""
},
"require": {
"throwable",
"whoops"
],
- "time": "2020-01-15T10:00:00+00:00"
+ "time": "2020-05-05T12:28:07+00:00"
},
{
"name": "gathercontent/htmldiff",
},
{
"name": "guzzlehttp/guzzle",
- "version": "6.5.2",
+ "version": "6.5.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "43ece0e75098b7ecd8d13918293029e555a50f82"
+ "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82",
- "reference": "43ece0e75098b7ecd8d13918293029e555a50f82",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/aab4ebd862aa7d04f01a4b51849d657db56d882e",
+ "reference": "aab4ebd862aa7d04f01a4b51849d657db56d882e",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1",
- "php": ">=5.5"
+ "php": ">=5.5",
+ "symfony/polyfill-intl-idn": "^1.11"
},
"require-dev": {
"ext-curl": "*",
"psr/log": "^1.1"
},
"suggest": {
- "ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"rest",
"web service"
],
- "time": "2019-12-23T11:57:10+00:00"
+ "time": "2020-04-18T10:38:46+00:00"
},
{
"name": "guzzlehttp/promises",
}
],
+ "abandoned": "php-parallel-lint/php-console-color",
"time": "2018-09-29T17:23:10+00:00"
},
{
}
],
"description": "Highlight PHP code in terminal",
+ "abandoned": "php-parallel-lint/php-console-highlighter",
"time": "2018-09-29T18:48:56+00:00"
},
{
},
{
"name": "laravel/framework",
- "version": "v6.12.0",
+ "version": "v6.18.15",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "8e189a8dee7ff76bf50acb7e80aa1a36afaf54d4"
+ "reference": "a1fa3ddc0bb5285cafa6844b443633f7627d75dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/8e189a8dee7ff76bf50acb7e80aa1a36afaf54d4",
- "reference": "8e189a8dee7ff76bf50acb7e80aa1a36afaf54d4",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/a1fa3ddc0bb5285cafa6844b443633f7627d75dc",
+ "reference": "a1fa3ddc0bb5285cafa6844b443633f7627d75dc",
"shasum": ""
},
"require": {
- "doctrine/inflector": "^1.1",
+ "doctrine/inflector": "^1.4|^2.0",
"dragonmantank/cron-expression": "^2.0",
"egulias/email-validator": "^2.1.10",
"ext-json": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
- "league/commonmark": "^1.1",
- "league/commonmark-ext-table": "^2.1",
+ "league/commonmark": "^1.3",
"league/flysystem": "^1.0.8",
"monolog/monolog": "^1.12|^2.0",
"nesbot/carbon": "^2.0",
"symfony/finder": "^4.3.4",
"symfony/http-foundation": "^4.3.4",
"symfony/http-kernel": "^4.3.4",
+ "symfony/polyfill-php73": "^1.17",
"symfony/process": "^4.3.4",
"symfony/routing": "^4.3.4",
"symfony/var-dumper": "^4.3.4",
"aws/aws-sdk-php": "^3.0",
"doctrine/dbal": "^2.6",
"filp/whoops": "^2.4",
- "guzzlehttp/guzzle": "^6.3",
+ "guzzlehttp/guzzle": "^6.3|^7.0",
"league/flysystem-cached-adapter": "^1.0",
"mockery/mockery": "^1.3.1",
"moontoast/math": "^1.1",
"ext-memcached": "Required to use the memcache cache driver.",
"ext-pcntl": "Required to use all features of the queue worker.",
"ext-posix": "Required to use all features of the queue worker.",
- "ext-redis": "Required to use the Redis cache and queue drivers.",
+ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).",
"filp/whoops": "Required for friendly error pages in development (^2.4).",
- "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).",
- "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0).",
- "laravel/tinker": "Required to use the tinker console command (^1.0).",
+ "fzaninotto/faker": "Required to use the eloquent factory builder (^1.9.1).",
+ "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0|^7.0).",
+ "laravel/tinker": "Required to use the tinker console command (^2.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-sftp": "Required to use the Flysystem SFTP driver (^1.0).",
"framework",
"laravel"
],
- "time": "2020-01-21T15:10:03+00:00"
+ "time": "2020-05-19T17:03:02+00:00"
},
{
"name": "laravel/socialite",
- "version": "v4.3.1",
+ "version": "v4.3.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/socialite.git",
- "reference": "2d670d5b100ef2dc72dc578126b2b97985791f52"
+ "reference": "4bd66ee416fea04398dee5b8c32d65719a075db4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/socialite/zipball/2d670d5b100ef2dc72dc578126b2b97985791f52",
- "reference": "2d670d5b100ef2dc72dc578126b2b97985791f52",
+ "url": "https://api.github.com/repos/laravel/socialite/zipball/4bd66ee416fea04398dee5b8c32d65719a075db4",
+ "reference": "4bd66ee416fea04398dee5b8c32d65719a075db4",
"shasum": ""
},
"require": {
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-master": "4.x-dev"
},
"laravel": {
"providers": [
"laravel",
"oauth"
],
- "time": "2019-11-26T17:39:15+00:00"
+ "time": "2020-02-04T15:30:01+00:00"
},
{
"name": "league/commonmark",
- "version": "1.2.2",
+ "version": "1.4.3",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
- "reference": "34cf4ddb3892c715ae785c880e6691d839cff88d"
+ "reference": "412639f7cfbc0b31ad2455b2fe965095f66ae505"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/34cf4ddb3892c715ae785c880e6691d839cff88d",
- "reference": "34cf4ddb3892c715ae785c880e6691d839cff88d",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/412639f7cfbc0b31ad2455b2fe965095f66ae505",
+ "reference": "412639f7cfbc0b31ad2455b2fe965095f66ae505",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": "^7.1"
},
- "replace": {
- "colinodell/commonmark-php": "*"
+ "conflict": {
+ "scrutinizer/ocular": "1.7.*"
},
"require-dev": {
"cebe/markdown": "~1.0",
"commonmark/commonmark.js": "0.29.1",
"erusev/parsedown": "~1.0",
"ext-json": "*",
+ "github/gfm": "0.29.0",
"michelf/php-markdown": "~1.4",
"mikehaertl/php-shellcommand": "^1.4",
- "phpstan/phpstan-shim": "^0.11.5",
+ "phpstan/phpstan": "^0.12",
"phpunit/phpunit": "^7.5",
"scrutinizer/ocular": "^1.5",
"symfony/finder": "^4.2"
},
- "suggest": {
- "league/commonmark-extras": "Library of useful extensions including smart punctuation"
- },
"bin": [
"bin/commonmark"
],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.3-dev"
+ "dev-master": "1.4-dev"
}
},
"autoload": {
"role": "Lead Developer"
}
],
- "description": "PHP Markdown parser based on the CommonMark spec",
+ "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)",
"homepage": "https://commonmark.thephpleague.com",
"keywords": [
"commonmark",
+ "flavored",
+ "gfm",
+ "github",
+ "github-flavored",
"markdown",
+ "md",
"parser"
],
- "time": "2020-01-16T01:18:13+00:00"
- },
- {
- "name": "league/commonmark-ext-table",
- "version": "v2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/commonmark-ext-table.git",
- "reference": "3228888ea69636e855efcf6636ff8e6316933fe7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark-ext-table/zipball/3228888ea69636e855efcf6636ff8e6316933fe7",
- "reference": "3228888ea69636e855efcf6636ff8e6316933fe7",
- "shasum": ""
- },
- "require": {
- "league/commonmark": "~0.19.3|^1.0",
- "php": "^7.1"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.14",
- "phpstan/phpstan": "~0.11",
- "phpunit/phpunit": "^7.0|^8.0",
- "symfony/var-dumper": "^4.0",
- "vimeo/psalm": "^3.0"
- },
- "type": "commonmark-extension",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\CommonMark\\Ext\\Table\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
+ "funding": [
{
- "name": "Martin Hasoň",
+ "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark",
+ "type": "custom"
},
{
- "name": "Webuni s.r.o.",
- "homepage": "https://www.webuni.cz"
+ "url": "https://www.colinodell.com/sponsor",
+ "type": "custom"
},
{
- "name": "Colin O'Dell",
- "homepage": "https://www.colinodell.com"
+ "url": "https://www.paypal.me/colinpodell/10.00",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/colinodell",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/colinodell",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/commonmark",
+ "type": "tidelift"
}
],
- "description": "Table extension for league/commonmark",
- "homepage": "https://github.com/thephpleague/commonmark-ext-table",
- "keywords": [
- "commonmark",
- "extension",
- "markdown",
- "table"
- ],
- "time": "2019-09-26T13:28:33+00:00"
+ "time": "2020-05-04T22:15:21+00:00"
},
{
"name": "league/flysystem",
- "version": "1.0.63",
+ "version": "1.0.69",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
- "reference": "8132daec326565036bc8e8d1876f77ec183a7bd6"
+ "reference": "7106f78428a344bc4f643c233a94e48795f10967"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/8132daec326565036bc8e8d1876f77ec183a7bd6",
- "reference": "8132daec326565036bc8e8d1876f77ec183a7bd6",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/7106f78428a344bc4f643c233a94e48795f10967",
+ "reference": "7106f78428a344bc4f643c233a94e48795f10967",
"shasum": ""
},
"require": {
},
"require-dev": {
"phpspec/phpspec": "^3.4",
- "phpunit/phpunit": "^5.7.10"
+ "phpunit/phpunit": "^5.7.26"
},
"suggest": {
"ext-fileinfo": "Required for MimeType",
"sftp",
"storage"
],
- "time": "2020-01-04T16:30:31+00:00"
+ "funding": [
+ {
+ "url": "https://offset.earth/frankdejonge",
+ "type": "other"
+ }
+ ],
+ "time": "2020-05-18T15:13:39+00:00"
},
{
"name": "league/flysystem-aws-s3-v3",
- "version": "1.0.23",
+ "version": "1.0.24",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git",
- "reference": "15b0cdeab7240bf8e8bffa85ae5275bbc3692bf4"
+ "reference": "4382036bde5dc926f9b8b337e5bdb15e5ec7b570"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/15b0cdeab7240bf8e8bffa85ae5275bbc3692bf4",
- "reference": "15b0cdeab7240bf8e8bffa85ae5275bbc3692bf4",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/4382036bde5dc926f9b8b337e5bdb15e5ec7b570",
+ "reference": "4382036bde5dc926f9b8b337e5bdb15e5ec7b570",
"shasum": ""
},
"require": {
}
],
"description": "Flysystem adapter for the AWS S3 SDK v3.x",
- "time": "2019-06-05T17:18:29+00:00"
+ "time": "2020-02-23T13:31:58+00:00"
},
{
"name": "league/oauth1-client",
},
{
"name": "monolog/monolog",
- "version": "2.0.2",
+ "version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8"
+ "reference": "38914429aac460e8e4616c8cb486ecb40ec90bb1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8",
- "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/38914429aac460e8e4616c8cb486ecb40ec90bb1",
+ "reference": "38914429aac460e8e4616c8cb486ecb40ec90bb1",
"shasum": ""
},
"require": {
- "php": "^7.2",
+ "php": ">=7.2",
"psr/log": "^1.0.1"
},
"provide": {
"doctrine/couchdb": "~1.0@dev",
"elasticsearch/elasticsearch": "^6.0",
"graylog2/gelf-php": "^1.4.2",
- "jakub-onderka/php-parallel-lint": "^0.9",
"php-amqplib/php-amqplib": "~2.4",
"php-console/php-console": "^3.1.3",
+ "php-parallel-lint/php-parallel-lint": "^1.0",
"phpspec/prophecy": "^1.6.1",
- "phpunit/phpunit": "^8.3",
+ "phpunit/phpunit": "^8.5",
"predis/predis": "^1.1",
"rollbar/rollbar": "^1.3",
"ruflin/elastica": ">=0.90 <3.0",
"logging",
"psr-3"
],
- "time": "2019-12-20T14:22:59+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-22T08:12:19+00:00"
},
{
"name": "mtdowling/jmespath.php",
},
{
"name": "nesbot/carbon",
- "version": "2.29.1",
+ "version": "2.34.2",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
- "reference": "e509be5bf2d703390e69e14496d9a1168452b0a2"
+ "reference": "3e87404329b8072295ea11d548b47a1eefe5a162"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e509be5bf2d703390e69e14496d9a1168452b0a2",
- "reference": "e509be5bf2d703390e69e14496d9a1168452b0a2",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/3e87404329b8072295ea11d548b47a1eefe5a162",
+ "reference": "3e87404329b8072295ea11d548b47a1eefe5a162",
"shasum": ""
},
"require": {
"ext-json": "*",
"php": "^7.1.8 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.0",
"symfony/translation": "^3.4 || ^4.0 || ^5.0"
},
"require-dev": {
+ "doctrine/orm": "^2.7",
"friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
"kylekatarnls/multi-tester": "^1.1",
"phpmd/phpmd": "^2.8",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.x-dev"
+ "dev-master": "2.x-dev",
+ "dev-3.x": "3.x-dev"
},
"laravel": {
"providers": [
"datetime",
"time"
],
- "time": "2020-01-21T09:36:43+00:00"
+ "funding": [
+ {
+ "url": "https://opencollective.com/Carbon",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-19T22:14:16+00:00"
},
{
"name": "nunomaduro/collision",
},
{
"name": "opis/closure",
- "version": "3.5.1",
+ "version": "3.5.2",
"source": {
"type": "git",
"url": "https://github.com/opis/closure.git",
- "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969"
+ "reference": "2e3299cea6f485ca64d19c540f46d7896c512ace"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/opis/closure/zipball/93ebc5712cdad8d5f489b500c59d122df2e53969",
- "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969",
+ "url": "https://api.github.com/repos/opis/closure/zipball/2e3299cea6f485ca64d19c540f46d7896c512ace",
+ "reference": "2e3299cea6f485ca64d19c540f46d7896c512ace",
"shasum": ""
},
"require": {
"serialization",
"serialize"
],
- "time": "2019-11-29T22:36:02+00:00"
+ "time": "2020-05-21T20:09:36+00:00"
},
{
"name": "paragonie/random_compat",
},
{
"name": "phenx/php-font-lib",
- "version": "0.5.1",
+ "version": "0.5.2",
"source": {
"type": "git",
"url": "https://github.com/PhenX/php-font-lib.git",
- "reference": "760148820110a1ae0936e5cc35851e25a938bc97"
+ "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/760148820110a1ae0936e5cc35851e25a938bc97",
- "reference": "760148820110a1ae0936e5cc35851e25a938bc97",
+ "url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
+ "reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
"shasum": ""
},
"require-dev": {
- "phpunit/phpunit": "^4.8"
+ "phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
},
"type": "library",
"autoload": {
],
"description": "A library to read, parse, export and make subsets of different types of font files.",
"homepage": "https://github.com/PhenX/php-font-lib",
- "time": "2017-09-13T16:14:37+00:00"
+ "time": "2020-03-08T15:31:32+00:00"
},
{
"name": "phenx/php-svg-lib",
},
{
"name": "phpoption/phpoption",
- "version": "1.7.2",
+ "version": "1.7.3",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
- "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959"
+ "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959",
- "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae",
+ "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae",
"shasum": ""
},
"require": {
- "php": "^5.5.9 || ^7.0"
+ "php": "^5.5.9 || ^7.0 || ^8.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.3",
"php",
"type"
],
- "time": "2019-12-15T19:35:24+00:00"
+ "time": "2020-03-21T18:07:53+00:00"
},
{
"name": "predis/predis",
},
{
"name": "psr/log",
- "version": "1.1.2",
+ "version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
- "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
"shasum": ""
},
"require": {
"psr",
"psr-3"
],
- "time": "2019-11-01T11:05:21+00:00"
+ "time": "2020-03-23T09:12:05+00:00"
},
{
"name": "psr/simple-cache",
},
{
"name": "ramsey/uuid",
- "version": "3.9.2",
+ "version": "3.9.3",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "7779489a47d443f845271badbdcedfe4df8e06fb"
+ "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/7779489a47d443f845271badbdcedfe4df8e06fb",
- "reference": "7779489a47d443f845271badbdcedfe4df8e06fb",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92",
+ "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92",
"shasum": ""
},
"require": {
"identifier",
"uuid"
],
- "time": "2019-12-17T08:18:51+00:00"
+ "time": "2020-02-21T04:36:14+00:00"
},
{
"name": "robrichards/xmlseclibs",
- "version": "3.0.4",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/robrichards/xmlseclibs.git",
- "reference": "0a53d3c3aa87564910cae4ed01416441d3ae0db5"
+ "reference": "8d8e56ca7914440a8c60caff1a865e7dff1d9a5a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/0a53d3c3aa87564910cae4ed01416441d3ae0db5",
- "reference": "0a53d3c3aa87564910cae4ed01416441d3ae0db5",
+ "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/8d8e56ca7914440a8c60caff1a865e7dff1d9a5a",
+ "reference": "8d8e56ca7914440a8c60caff1a865e7dff1d9a5a",
"shasum": ""
},
"require": {
"xml",
"xmldsig"
],
- "time": "2019-11-05T11:44:22+00:00"
+ "time": "2020-04-22T17:19:51+00:00"
},
{
"name": "sabberworm/php-css-parser",
},
{
"name": "scrivo/highlight.php",
- "version": "v9.17.1.0",
+ "version": "v9.18.1.1",
"source": {
"type": "git",
"url": "https://github.com/scrivo/highlight.php.git",
- "reference": "5451a9ad6d638559cf2a092880f935c39776134e"
+ "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/5451a9ad6d638559cf2a092880f935c39776134e",
- "reference": "5451a9ad6d638559cf2a092880f935c39776134e",
+ "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/52fc21c99fd888e33aed4879e55a3646f8d40558",
+ "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558",
"shasum": ""
},
"require": {
},
"require-dev": {
"phpunit/phpunit": "^4.8|^5.7",
- "symfony/finder": "^3.4",
- "symfony/var-dumper": "^3.4"
+ "sabberworm/php-css-parser": "^8.3",
+ "symfony/finder": "^2.8|^3.4",
+ "symfony/var-dumper": "^2.8|^3.4"
},
"suggest": {
"ext-dom": "Needed to make use of the features in the utilities namespace"
"highlight.php",
"syntax"
],
- "time": "2019-12-13T21:54:06+00:00"
+ "time": "2020-03-02T05:59:21+00:00"
},
{
"name": "socialiteproviders/discord",
},
{
"name": "socialiteproviders/manager",
- "version": "v3.4.3",
+ "version": "v3.5",
"source": {
"type": "git",
"url": "https://github.com/SocialiteProviders/Manager.git",
- "reference": "09903d33429f9f6c0da32c545c036a3e18964bbf"
+ "reference": "7a5872d9e4b22bb26ecd0c69ea9ddbaad8c0f570"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/09903d33429f9f6c0da32c545c036a3e18964bbf",
- "reference": "09903d33429f9f6c0da32c545c036a3e18964bbf",
+ "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/7a5872d9e4b22bb26ecd0c69ea9ddbaad8c0f570",
+ "reference": "7a5872d9e4b22bb26ecd0c69ea9ddbaad8c0f570",
"shasum": ""
},
"require": {
- "illuminate/support": "~5.4|~5.7.0|~5.8.0|^6.0",
+ "illuminate/support": "~5.4|~5.7.0|~5.8.0|^6.0|^7.0",
"laravel/socialite": "~3.0|~4.0",
"php": "^5.6 || ^7.0"
},
}
],
"description": "Easily add new or override built-in providers in Laravel Socialite.",
- "time": "2019-09-25T06:06:35+00:00"
+ "time": "2020-03-08T16:54:44+00:00"
},
{
"name": "socialiteproviders/microsoft-azure",
- "version": "v3.0.0",
+ "version": "v3.1.0",
"source": {
"type": "git",
"url": "https://github.com/SocialiteProviders/Microsoft-Azure.git",
- "reference": "d7a703a782eb9f7eae0db803beaa3ddec19ef372"
+ "reference": "b22f4696cccecd6de902cf0bc923de7fc2e4608e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/SocialiteProviders/Microsoft-Azure/zipball/d7a703a782eb9f7eae0db803beaa3ddec19ef372",
- "reference": "d7a703a782eb9f7eae0db803beaa3ddec19ef372",
+ "url": "https://api.github.com/repos/SocialiteProviders/Microsoft-Azure/zipball/b22f4696cccecd6de902cf0bc923de7fc2e4608e",
+ "reference": "b22f4696cccecd6de902cf0bc923de7fc2e4608e",
"shasum": ""
},
"require": {
+ "ext-json": "*",
"php": "^5.6 || ^7.0",
- "socialiteproviders/manager": "~3.0"
+ "socialiteproviders/manager": "~2.0 || ~3.0"
},
"type": "library",
"autoload": {
}
],
"description": "Microsoft Azure OAuth2 Provider for Laravel Socialite",
- "time": "2017-01-25T09:48:29+00:00"
+ "time": "2020-04-30T23:01:40+00:00"
},
{
"name": "socialiteproviders/okta",
- "version": "v1.0.0",
+ "version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/SocialiteProviders/Okta.git",
- "reference": "dcda13432c80060cd84d4cb5f2af422d280ab895"
+ "reference": "7c2512f0872316b139e3eea1c50c9351747a57ea"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/SocialiteProviders/Okta/zipball/dcda13432c80060cd84d4cb5f2af422d280ab895",
- "reference": "dcda13432c80060cd84d4cb5f2af422d280ab895",
+ "url": "https://api.github.com/repos/SocialiteProviders/Okta/zipball/7c2512f0872316b139e3eea1c50c9351747a57ea",
+ "reference": "7c2512f0872316b139e3eea1c50c9351747a57ea",
"shasum": ""
},
"require": {
+ "ext-json": "*",
"php": "^5.6 || ^7.0",
"socialiteproviders/manager": "~2.0 || ~3.0"
},
}
],
"description": "Okta OAuth2 Provider for Laravel Socialite",
- "time": "2017-11-21T05:31:47+00:00"
+ "time": "2019-09-06T15:27:03+00:00"
},
{
"name": "socialiteproviders/slack",
},
{
"name": "socialiteproviders/twitch",
- "version": "v5.1",
+ "version": "v5.2.0",
"source": {
"type": "git",
"url": "https://github.com/SocialiteProviders/Twitch.git",
- "reference": "f9b1f90a94f539e1b29e84ee0f731f42d59f3213"
+ "reference": "9ee6fe196d7c28777139b3cde04cbd537cf7e652"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/SocialiteProviders/Twitch/zipball/f9b1f90a94f539e1b29e84ee0f731f42d59f3213",
- "reference": "f9b1f90a94f539e1b29e84ee0f731f42d59f3213",
+ "url": "https://api.github.com/repos/SocialiteProviders/Twitch/zipball/9ee6fe196d7c28777139b3cde04cbd537cf7e652",
+ "reference": "9ee6fe196d7c28777139b3cde04cbd537cf7e652",
"shasum": ""
},
"require": {
+ "ext-json": "*",
"php": "^5.6 || ^7.0",
"socialiteproviders/manager": "~2.0 || ~3.0"
},
}
],
"description": "Twitch OAuth2 Provider for Laravel Socialite",
- "time": "2019-07-01T10:35:46+00:00"
+ "time": "2020-05-06T22:51:30+00:00"
},
{
"name": "swiftmailer/swiftmailer",
},
{
"name": "symfony/console",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "e9ee09d087e2c88eaf6e5fc0f5c574f64d100e4f"
+ "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/e9ee09d087e2c88eaf6e5fc0f5c574f64d100e4f",
- "reference": "e9ee09d087e2c88eaf6e5fc0f5c574f64d100e4f",
+ "url": "https://api.github.com/repos/symfony/console/zipball/10bb3ee3c97308869d53b3e3d03f6ac23ff985f7",
+ "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7",
"shasum": ""
},
"require": {
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2020-01-10T21:54:01+00:00"
+ "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": "2020-03-30T11:41:10+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "a167b1860995b926d279f9bb538f873e3bfa3465"
+ "reference": "afc26133a6fbdd4f8842e38893e0ee4685c7c94b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/a167b1860995b926d279f9bb538f873e3bfa3465",
- "reference": "a167b1860995b926d279f9bb538f873e3bfa3465",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/afc26133a6fbdd4f8842e38893e0ee4685c7c94b",
+ "reference": "afc26133a6fbdd4f8842e38893e0ee4685c7c94b",
"shasum": ""
},
"require": {
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
- "time": "2020-01-04T13:00:46+00:00"
+ "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": "2020-03-27T16:54:36+00:00"
},
{
"name": "symfony/debug",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "89c3fd5c299b940333bc6fe9f1b8db1b0912c759"
+ "reference": "346636d2cae417992ecfd761979b2ab98b339a45"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/89c3fd5c299b940333bc6fe9f1b8db1b0912c759",
- "reference": "89c3fd5c299b940333bc6fe9f1b8db1b0912c759",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/346636d2cae417992ecfd761979b2ab98b339a45",
+ "reference": "346636d2cae417992ecfd761979b2ab98b339a45",
"shasum": ""
},
"require": {
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
- "time": "2020-01-08T17:29:02+00:00"
+ "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": "2020-03-27T16:54:36+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "a59789092e40ad08465dc2cdc55651be503d0d5a"
+ "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/a59789092e40ad08465dc2cdc55651be503d0d5a",
- "reference": "a59789092e40ad08465dc2cdc55651be503d0d5a",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/7e9828fc98aa1cf27b422fe478a84f5b0abb7358",
+ "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"psr/log": "~1.0",
- "symfony/debug": "^4.4",
+ "symfony/debug": "^4.4.5",
"symfony/var-dumper": "^4.4|^5.0"
},
"require-dev": {
],
"description": "Symfony ErrorHandler Component",
"homepage": "https://symfony.com",
- "time": "2020-01-08T17:29:02+00:00"
+ "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": "2020-03-30T14:07:33+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b"
+ "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9e3de195e5bc301704dd6915df55892f6dfc208b",
- "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/abc8e3618bfdb55e44c8c6a00abd333f831bbfed",
+ "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed",
"shasum": ""
},
"require": {
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
- "time": "2020-01-10T21:54:01+00:00"
+ "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": "2020-03-27T16:54:36+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
},
{
"name": "symfony/finder",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "3a50be43515590faf812fbd7708200aabc327ec3"
+ "reference": "5729f943f9854c5781984ed4907bbb817735776b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/3a50be43515590faf812fbd7708200aabc327ec3",
- "reference": "3a50be43515590faf812fbd7708200aabc327ec3",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b",
+ "reference": "5729f943f9854c5781984ed4907bbb817735776b",
"shasum": ""
},
"require": {
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
- "time": "2020-01-04T13:00:46+00:00"
+ "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": "2020-03-27T16:54:36+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "c33998709f3fe9b8e27e0277535b07fbf6fde37a"
+ "reference": "ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c33998709f3fe9b8e27e0277535b07fbf6fde37a",
- "reference": "c33998709f3fe9b8e27e0277535b07fbf6fde37a",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2",
+ "reference": "ec5bd254c223786f5fa2bb49a1e705c1b8e7cee2",
"shasum": ""
},
"require": {
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
- "time": "2020-01-04T13:00:46+00:00"
+ "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": "2020-04-18T20:40:08+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "16f2aa3c54b08483fba5375938f60b1ff83b6bd2"
+ "reference": "1799a6c01f0db5851f399151abdb5d6393fec277"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/16f2aa3c54b08483fba5375938f60b1ff83b6bd2",
- "reference": "16f2aa3c54b08483fba5375938f60b1ff83b6bd2",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1799a6c01f0db5851f399151abdb5d6393fec277",
+ "reference": "1799a6c01f0db5851f399151abdb5d6393fec277",
"shasum": ""
},
"require": {
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
- "time": "2020-01-21T13:23:17+00:00"
+ "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": "2020-04-28T18:47:42+00:00"
},
{
"name": "symfony/mime",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "225034620ecd4b34fd826e9983d85e2b7a359094"
+ "reference": "7a583ffb6c7dd5aabb5db920817a3cc39261c517"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/225034620ecd4b34fd826e9983d85e2b7a359094",
- "reference": "225034620ecd4b34fd826e9983d85e2b7a359094",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/7a583ffb6c7dd5aabb5db920817a3cc39261c517",
+ "reference": "7a583ffb6c7dd5aabb5db920817a3cc39261c517",
"shasum": ""
},
"require": {
"mime",
"mime-type"
],
- "time": "2020-01-04T13:00:46+00:00"
+ "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": "2020-04-16T14:49:30+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.13.1",
+ "version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3"
+ "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
- "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
+ "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
"shasum": ""
},
"require": {
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.17-dev"
}
},
"autoload": {
"polyfill",
"portable"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "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": "2020-05-12T16:14:59+00:00"
},
{
"name": "symfony/polyfill-iconv",
- "version": "v1.13.1",
+ "version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
- "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36"
+ "reference": "c4de7601eefbf25f9d47190abe07f79fe0a27424"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/a019efccc03f1a335af6b4f20c30f5ea8060be36",
- "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36",
+ "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/c4de7601eefbf25f9d47190abe07f79fe0a27424",
+ "reference": "c4de7601eefbf25f9d47190abe07f79fe0a27424",
"shasum": ""
},
"require": {
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.17-dev"
}
},
"autoload": {
"portable",
"shim"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "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": "2020-05-12T16:47:27+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.13.1",
+ "version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46"
+ "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46",
- "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a",
+ "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-mbstring": "^1.3",
- "symfony/polyfill-php72": "^1.9"
+ "symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.17-dev"
}
},
"autoload": {
"portable",
"shim"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "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": "2020-05-12T16:47:27+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.13.1",
+ "version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f"
+ "reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f",
- "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
+ "reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
"shasum": ""
},
"require": {
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.17-dev"
}
},
"autoload": {
"portable",
"shim"
],
- "time": "2019-11-27T14:18:11+00:00"
+ "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": "2020-05-12T16:47:27+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.13.1",
+ "version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038"
+ "reference": "f048e612a3905f34931127360bdd2def19a5e582"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038",
- "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582",
+ "reference": "f048e612a3905f34931127360bdd2def19a5e582",
"shasum": ""
},
"require": {
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.17-dev"
}
},
"autoload": {
"portable",
"shim"
],
- "time": "2019-11-27T13:56:44+00:00"
+ "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": "2020-05-12T16:47:27+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.13.1",
+ "version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f"
+ "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f",
- "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a760d8964ff79ab9bf057613a5808284ec852ccc",
+ "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc",
"shasum": ""
},
"require": {
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.13-dev"
+ "dev-master": "1.17-dev"
}
},
"autoload": {
"portable",
"shim"
],
- "time": "2019-11-27T16:25:15+00:00"
+ "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": "2020-05-12T16:47:27+00:00"
},
{
"name": "symfony/process",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "f5697ab4cb14a5deed7473819e63141bf5352c36"
+ "reference": "4b6a9a4013baa65d409153cbb5a895bf093dc7f4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/f5697ab4cb14a5deed7473819e63141bf5352c36",
- "reference": "f5697ab4cb14a5deed7473819e63141bf5352c36",
+ "url": "https://api.github.com/repos/symfony/process/zipball/4b6a9a4013baa65d409153cbb5a895bf093dc7f4",
+ "reference": "4b6a9a4013baa65d409153cbb5a895bf093dc7f4",
"shasum": ""
},
"require": {
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
- "time": "2020-01-09T09:50:08+00:00"
+ "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": "2020-04-15T15:56:18+00:00"
},
{
"name": "symfony/routing",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a"
+ "reference": "67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/7bf4e38573728e317b926ca4482ad30470d0e86a",
- "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c",
+ "reference": "67b4e1f99c050cbc310b8f3d0dbdc4b0212c052c",
"shasum": ""
},
"require": {
"uri",
"url"
],
- "time": "2020-01-08T17:29:02+00:00"
+ "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": "2020-04-21T19:59:53+00:00"
},
{
"name": "symfony/service-contracts",
},
{
"name": "symfony/translation",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "f5d2ac46930238b30a9c2f1b17c905f3697d808c"
+ "reference": "8272bbd2b7e220ef812eba2a2b30068a5c64b191"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/f5d2ac46930238b30a9c2f1b17c905f3697d808c",
- "reference": "f5d2ac46930238b30a9c2f1b17c905f3697d808c",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/8272bbd2b7e220ef812eba2a2b30068a5c64b191",
+ "reference": "8272bbd2b7e220ef812eba2a2b30068a5c64b191",
"shasum": ""
},
"require": {
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
- "time": "2020-01-15T13:29:06+00:00"
+ "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": "2020-04-12T16:45:36+00:00"
},
{
"name": "symfony/translation-contracts",
},
{
"name": "symfony/var-dumper",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "7cfa470bc3b1887a7b2a47c0a702a84ad614fa92"
+ "reference": "c587e04ce5d1aa62d534a038f574d9a709e814cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7cfa470bc3b1887a7b2a47c0a702a84ad614fa92",
- "reference": "7cfa470bc3b1887a7b2a47c0a702a84ad614fa92",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c587e04ce5d1aa62d534a038f574d9a709e814cf",
+ "reference": "c587e04ce5d1aa62d534a038f574d9a709e814cf",
"shasum": ""
},
"require": {
"debug",
"dump"
],
- "time": "2020-01-04T13:00:46+00:00"
+ "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": "2020-04-12T16:14:02+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
},
{
"name": "vlucas/phpdotenv",
- "version": "v3.6.0",
+ "version": "v3.6.4",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156"
+ "reference": "10d3f853fdf1f3a6b3c7ea0c4620d2f699713db5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156",
- "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/10d3f853fdf1f3a6b3c7ea0c4620d2f699713db5",
+ "reference": "10d3f853fdf1f3a6b3c7ea0c4620d2f699713db5",
"shasum": ""
},
"require": {
- "php": "^5.4 || ^7.0",
+ "php": "^5.4 || ^7.0 || ^8.0",
"phpoption/phpoption": "^1.5",
"symfony/polyfill-ctype": "^1.9"
},
"require-dev": {
+ "ext-filter": "*",
+ "ext-pcre": "*",
"phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0"
},
+ "suggest": {
+ "ext-filter": "Required to use the boolean validator.",
+ "ext-pcre": "Required to use most of the library."
+ },
"type": "library",
"extra": {
"branch-alias": {
"env",
"environment"
],
- "time": "2019-09-10T21:37:39+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-02T13:46:13+00:00"
}
],
"packages-dev": [
{
"name": "barryvdh/laravel-debugbar",
- "version": "v3.2.8",
+ "version": "v3.3.3",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git",
- "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0"
+ "reference": "57f2219f6d9efe41ed1bc880d86701c52f261bf5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/18208d64897ab732f6c04a19b319fe8f1d57a9c0",
- "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0",
+ "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/57f2219f6d9efe41ed1bc880d86701c52f261bf5",
+ "reference": "57f2219f6d9efe41ed1bc880d86701c52f261bf5",
"shasum": ""
},
"require": {
- "illuminate/routing": "^5.5|^6",
- "illuminate/session": "^5.5|^6",
- "illuminate/support": "^5.5|^6",
- "maximebf/debugbar": "~1.15.0",
+ "illuminate/routing": "^5.5|^6|^7",
+ "illuminate/session": "^5.5|^6|^7",
+ "illuminate/support": "^5.5|^6|^7",
+ "maximebf/debugbar": "^1.15.1",
"php": ">=7.0",
- "symfony/debug": "^3|^4",
- "symfony/finder": "^3|^4"
+ "symfony/debug": "^3|^4|^5",
+ "symfony/finder": "^3|^4|^5"
},
"require-dev": {
"laravel/framework": "5.5.x"
"profiler",
"webprofiler"
],
- "time": "2019-08-29T07:01:03+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/barryvdh",
+ "type": "github"
+ }
+ ],
+ "time": "2020-05-05T10:53:32+00:00"
},
{
"name": "barryvdh/laravel-ide-helper",
- "version": "v2.6.6",
+ "version": "v2.7.0",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-ide-helper.git",
- "reference": "b91b959364d97af658f268c733c75dccdbff197e"
+ "reference": "5f677edc14bdcfdcac36633e6eea71b2728a4dbc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/b91b959364d97af658f268c733c75dccdbff197e",
- "reference": "b91b959364d97af658f268c733c75dccdbff197e",
+ "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/5f677edc14bdcfdcac36633e6eea71b2728a4dbc",
+ "reference": "5f677edc14bdcfdcac36633e6eea71b2728a4dbc",
"shasum": ""
},
"require": {
"barryvdh/reflection-docblock": "^2.0.6",
"composer/composer": "^1.6",
"doctrine/dbal": "~2.3",
- "illuminate/console": "^5.5|^6",
- "illuminate/filesystem": "^5.5|^6",
- "illuminate/support": "^5.5|^6",
- "php": ">=7"
+ "illuminate/console": "^5.5|^6|^7",
+ "illuminate/filesystem": "^5.5|^6|^7",
+ "illuminate/support": "^5.5|^6|^7",
+ "php": ">=7.2"
},
"require-dev": {
- "illuminate/config": "^5.5|^6",
- "illuminate/view": "^5.5|^6",
- "phpro/grumphp": "^0.14",
- "phpunit/phpunit": "4.*",
- "scrutinizer/ocular": "~1.1",
+ "illuminate/config": "^5.5|^6|^7",
+ "illuminate/view": "^5.5|^6|^7",
+ "mockery/mockery": "^1.3",
+ "orchestra/testbench": "^3|^4|^5",
+ "phpro/grumphp": "^0.17.1",
"squizlabs/php_codesniffer": "^3"
},
"type": "library",
"phpstorm",
"sublime"
],
- "time": "2019-10-30T20:53:27+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/barryvdh",
+ "type": "github"
+ }
+ ],
+ "time": "2020-04-22T09:57:26+00:00"
},
{
"name": "barryvdh/reflection-docblock",
},
{
"name": "composer/ca-bundle",
- "version": "1.2.6",
+ "version": "1.2.7",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
- "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e"
+ "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/47fe531de31fca4a1b997f87308e7d7804348f7e",
- "reference": "47fe531de31fca4a1b997f87308e7d7804348f7e",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/95c63ab2117a72f48f5a55da9740a3273d45b7fd",
+ "reference": "95c63ab2117a72f48f5a55da9740a3273d45b7fd",
"shasum": ""
},
"require": {
"ssl",
"tls"
],
- "time": "2020-01-13T10:02:55+00:00"
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-04-08T08:27:21+00:00"
},
{
"name": "composer/composer",
- "version": "1.9.2",
+ "version": "1.10.6",
"source": {
"type": "git",
"url": "https://github.com/composer/composer.git",
- "reference": "7a04aa0201ddaa0b3cf64d41022bd8cdcd7fafeb"
+ "reference": "be81b9c4735362c26876bdbfd3b5bc7e7f711c88"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/7a04aa0201ddaa0b3cf64d41022bd8cdcd7fafeb",
- "reference": "7a04aa0201ddaa0b3cf64d41022bd8cdcd7fafeb",
+ "url": "https://api.github.com/repos/composer/composer/zipball/be81b9c4735362c26876bdbfd3b5bc7e7f711c88",
+ "reference": "be81b9c4735362c26876bdbfd3b5bc7e7f711c88",
"shasum": ""
},
"require": {
"psr/log": "^1.0",
"seld/jsonlint": "^1.4",
"seld/phar-utils": "^1.0",
- "symfony/console": "^2.7 || ^3.0 || ^4.0",
- "symfony/filesystem": "^2.7 || ^3.0 || ^4.0",
- "symfony/finder": "^2.7 || ^3.0 || ^4.0",
- "symfony/process": "^2.7 || ^3.0 || ^4.0"
+ "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0",
+ "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0",
+ "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0",
+ "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0"
},
"conflict": {
- "symfony/console": "2.8.38"
+ "symfony/console": "2.8.38",
+ "symfony/phpunit-bridge": "3.4.40"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7",
- "phpunit/phpunit-mock-objects": "^2.3 || ^3.0"
+ "phpspec/prophecy": "^1.10",
+ "symfony/phpunit-bridge": "^3.4"
},
"suggest": {
"ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.9-dev"
+ "dev-master": "1.10-dev"
}
},
"autoload": {
"dependency",
"package"
],
- "time": "2020-01-14T15:30:32+00:00"
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-06T08:28:10+00:00"
},
{
"name": "composer/semver",
},
{
"name": "composer/spdx-licenses",
- "version": "1.5.2",
+ "version": "1.5.3",
"source": {
"type": "git",
"url": "https://github.com/composer/spdx-licenses.git",
- "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5"
+ "reference": "0c3e51e1880ca149682332770e25977c70cf9dae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5",
- "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5",
+ "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae",
+ "reference": "0c3e51e1880ca149682332770e25977c70cf9dae",
"shasum": ""
},
"require": {
"spdx",
"validator"
],
- "time": "2019-07-29T10:31:59+00:00"
+ "time": "2020-02-14T07:44:31+00:00"
},
{
"name": "composer/xdebug-handler",
- "version": "1.4.0",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "cbe23383749496fe0f373345208b79568e4bc248"
+ "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248",
- "reference": "cbe23383749496fe0f373345208b79568e4bc248",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7",
+ "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7",
"shasum": ""
},
"require": {
"Xdebug",
"performance"
],
- "time": "2019-11-06T16:40:04+00:00"
+ "time": "2020-03-01T12:26:26+00:00"
},
{
"name": "doctrine/instantiator",
},
{
"name": "maximebf/debugbar",
- "version": "v1.15.1",
+ "version": "v1.16.3",
"source": {
"type": "git",
"url": "https://github.com/maximebf/php-debugbar.git",
- "reference": "6c4277f6117e4864966c9cb58fb835cee8c74a1e"
+ "reference": "1a1605b8e9bacb34cc0c6278206d699772e1d372"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/6c4277f6117e4864966c9cb58fb835cee8c74a1e",
- "reference": "6c4277f6117e4864966c9cb58fb835cee8c74a1e",
+ "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/1a1605b8e9bacb34cc0c6278206d699772e1d372",
+ "reference": "1a1605b8e9bacb34cc0c6278206d699772e1d372",
"shasum": ""
},
"require": {
- "php": ">=5.6",
+ "php": "^7.1",
"psr/log": "^1.0",
- "symfony/var-dumper": "^2.6|^3|^4"
+ "symfony/var-dumper": "^2.6|^3|^4|^5"
},
"require-dev": {
"phpunit/phpunit": "^5"
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.15-dev"
+ "dev-master": "1.16-dev"
}
},
"autoload": {
"debug",
"debugbar"
],
- "time": "2019-09-24T14:55:42+00:00"
+ "time": "2020-05-06T07:06:27+00:00"
},
{
"name": "mockery/mockery",
},
{
"name": "phpdocumentor/reflection-common",
- "version": "2.0.0",
+ "version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
+ "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
- "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
+ "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
- "require-dev": {
- "phpunit/phpunit": "~6"
- },
"type": "library",
"extra": {
"branch-alias": {
"reflection",
"static analysis"
],
- "time": "2018-08-07T13:53:10+00:00"
+ "time": "2020-04-27T09:25:28+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "4.3.4",
+ "version": "5.1.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
+ "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
- "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
+ "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e",
"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": "^7.1",
+ "php": "^7.2",
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpdocumentor/type-resolver": "^1.0",
+ "webmozart/assert": "^1"
},
"require-dev": {
- "doctrine/instantiator": "^1.0.5",
- "mockery/mockery": "^1.0",
- "phpdocumentor/type-resolver": "0.4.*",
- "phpunit/phpunit": "^6.4"
+ "doctrine/instantiator": "^1",
+ "mockery/mockery": "^1"
},
"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/",
{
"name": "Mike van Riel",
+ },
+ {
+ "name": "Jaap van Otterdijk",
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
- "time": "2019-12-28T18:55:12+00:00"
+ "time": "2020-02-22T12:28:44+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.0.1",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9"
+ "reference": "7462d5f123dfc080dfdf26897032a6513644fc95"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
- "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95",
+ "reference": "7462d5f123dfc080dfdf26897032a6513644fc95",
"shasum": ""
},
"require": {
- "php": "^7.1",
+ "php": "^7.2",
"phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
- "ext-tokenizer": "^7.1",
- "mockery/mockery": "~1",
- "phpunit/phpunit": "^7.0"
+ "ext-tokenizer": "^7.2",
+ "mockery/mockery": "~1"
},
"type": "library",
"extra": {
}
],
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
- "time": "2019-08-22T18:11:29+00:00"
+ "time": "2020-02-18T18:59:58+00:00"
},
{
"name": "phploc/phploc",
},
{
"name": "phpspec/prophecy",
- "version": "v1.10.2",
+ "version": "v1.10.3",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9"
+ "reference": "451c3cd1418cf640de218914901e51b064abb093"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9",
- "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093",
"shasum": ""
},
"require": {
"spy",
"stub"
],
- "time": "2020-01-20T15:57:02+00:00"
+ "time": "2020-03-05T15:02:03+00:00"
},
{
"name": "phpunit/php-code-coverage",
},
{
"name": "phpunit/phpunit",
- "version": "8.5.2",
+ "version": "8.5.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0"
+ "reference": "63dda3b212a0025d380a745f91bdb4d8c985adb7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0",
- "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/63dda3b212a0025d380a745f91bdb4d8c985adb7",
+ "reference": "63dda3b212a0025d380a745f91bdb4d8c985adb7",
"shasum": ""
},
"require": {
"testing",
"xunit"
],
- "time": "2020-01-08T08:49:49+00:00"
+ "funding": [
+ {
+ "url": "https://phpunit.de/donate.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-05-22T13:51:52+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
},
{
"name": "seld/jsonlint",
- "version": "1.7.2",
+ "version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/jsonlint.git",
- "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19"
+ "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/e2e5d290e4d2a4f0eb449f510071392e00e10d19",
- "reference": "e2e5d290e4d2a4f0eb449f510071392e00e10d19",
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1",
+ "reference": "ff2aa5420bfbc296cf6a0bc785fa5b35736de7c1",
"shasum": ""
},
"require": {
- "php": "^5.3 || ^7.0"
+ "php": "^5.3 || ^7.0 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
"parser",
"validator"
],
- "time": "2019-10-24T14:27:39+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-04-30T19:05:18+00:00"
},
{
"name": "seld/phar-utils",
- "version": "1.0.2",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/phar-utils.git",
- "reference": "84715761c35808076b00908a20317a3a8a67d17e"
+ "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/84715761c35808076b00908a20317a3a8a67d17e",
- "reference": "84715761c35808076b00908a20317a3a8a67d17e",
+ "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0",
+ "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0",
"shasum": ""
},
"require": {
],
"description": "PHAR file format utilities, for when PHP phars you up",
"keywords": [
- "phra"
+ "phar"
],
- "time": "2020-01-13T10:41:09+00:00"
+ "time": "2020-02-14T15:25:33+00:00"
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.5.3",
+ "version": "3.5.5",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
- "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb"
+ "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb",
- "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/73e2e7f57d958e7228fce50dc0c61f58f017f9f6",
+ "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6",
"shasum": ""
},
"require": {
"phpcs",
"standards"
],
- "time": "2019-12-04T04:46:47+00:00"
+ "time": "2020-04-17T01:09:41+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "b66fe8ccc850ea11c4cd31677706c1219768bea1"
+ "reference": "4d0fb3374324071ecdd94898367a3fa4b5563162"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b66fe8ccc850ea11c4cd31677706c1219768bea1",
- "reference": "b66fe8ccc850ea11c4cd31677706c1219768bea1",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4d0fb3374324071ecdd94898367a3fa4b5563162",
+ "reference": "4d0fb3374324071ecdd94898367a3fa4b5563162",
"shasum": ""
},
"require": {
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
- "time": "2020-01-04T13:00:46+00:00"
+ "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": "2020-03-29T19:12:22+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v4.4.3",
+ "version": "v4.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "266c9540b475f26122b61ef8b23dd9198f5d1cfd"
+ "reference": "a3ebf3bfd8a98a147c010a568add5a8aa4edea0f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/266c9540b475f26122b61ef8b23dd9198f5d1cfd",
- "reference": "266c9540b475f26122b61ef8b23dd9198f5d1cfd",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/a3ebf3bfd8a98a147c010a568add5a8aa4edea0f",
+ "reference": "a3ebf3bfd8a98a147c010a568add5a8aa4edea0f",
"shasum": ""
},
"require": {
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
- "time": "2020-01-21T08:20:44+00:00"
+ "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": "2020-04-12T14:39:55+00:00"
},
{
"name": "theseer/fdomdocument",
},
{
"name": "webmozart/assert",
- "version": "1.6.0",
+ "version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
- "reference": "573381c0a64f155a0d9a23f4b0c797194805b925"
+ "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925",
- "reference": "573381c0a64f155a0d9a23f4b0c797194805b925",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
+ "reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
"shasum": ""
},
"require": {
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "vimeo/psalm": "<3.6.0"
+ "vimeo/psalm": "<3.9.1"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^7.5.13"
"check",
"validate"
],
- "time": "2019-11-24T13:36:37+00:00"
+ "time": "2020-04-18T12:12:48+00:00"
},
{
"name": "wnx/laravel-stats",
- "version": "v2.0.0",
+ "version": "v2.0.2",
"source": {
"type": "git",
"url": "https://github.com/stefanzweifel/laravel-stats.git",
- "reference": "1b3c60bfbf81233973cbc2a63be4e6f83b2d6205"
+ "reference": "e86ebfdd149383b18a41fe3efa1601d82d447140"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/stefanzweifel/laravel-stats/zipball/1b3c60bfbf81233973cbc2a63be4e6f83b2d6205",
- "reference": "1b3c60bfbf81233973cbc2a63be4e6f83b2d6205",
+ "url": "https://api.github.com/repos/stefanzweifel/laravel-stats/zipball/e86ebfdd149383b18a41fe3efa1601d82d447140",
+ "reference": "e86ebfdd149383b18a41fe3efa1601d82d447140",
"shasum": ""
},
"require": {
- "illuminate/console": "~5.8.0|^6.0",
- "illuminate/support": "~5.8.0|^6.0",
+ "illuminate/console": "~5.8.0|^6.0|^7.0",
+ "illuminate/support": "~5.8.0|^6.0|^7.0",
"php": ">=7.2.0",
- "phploc/phploc": "~4.0|~5.0",
- "symfony/finder": "~3.3|~4.0"
+ "phploc/phploc": "~5.0|~6.0",
+ "symfony/finder": "~4.0"
},
"require-dev": {
- "laravel/browser-kit-testing": "~2.0|~3.0|~4.0|~5.0",
- "laravel/dusk": "~3.0|~4.0|~5.0",
+ "friendsofphp/php-cs-fixer": "^2.15",
+ "laravel/browser-kit-testing": "~5.0",
+ "laravel/dusk": "~5.0",
"mockery/mockery": "^1.1",
- "orchestra/testbench": "^3.8",
- "phpunit/phpunit": "6.*|7.*|8.*"
+ "orchestra/testbench": "^3.8|^4.0|^5.0",
+ "phpunit/phpunit": "8.*|9.*"
},
"type": "library",
"extra": {
"stats",
"wnx"
],
- "time": "2019-09-01T14:18:49+00:00"
+ "time": "2020-02-22T19:09:14+00:00"
}
],
"aliases": [],
"platform-dev": [],
"platform-overrides": {
"php": "7.2.0"
- }
+ },
+ "plugin-api-version": "1.1.0"
}
--- /dev/null
+{
+ "book_id": 1,
+ "name": "My fantastic new chapter",
+ "description": "This is a great new chapter that I've created via the API",
+ "tags": [
+ {"name": "Category", "value": "Top Content"},
+ {"name": "Rating", "value": "Highest"}
+ ]
+}
\ No newline at end of file
--- /dev/null
+{
+ "book_id": 1,
+ "name": "My fantastic updated chapter",
+ "description": "This is an updated chapter that I've altered via the API",
+ "tags": [
+ {"name": "Category", "value": "Kinda Good Content"},
+ {"name": "Rating", "value": "Medium"}
+ ]
+}
\ No newline at end of file
--- /dev/null
+{
+ "name": "My shelf",
+ "description": "This is my shelf with some books",
+ "books": [5,1,3]
+}
\ No newline at end of file
--- /dev/null
+{
+ "name": "My updated shelf",
+ "description": "This is my update shelf with some books",
+ "books": [5,1,3]
+}
\ No newline at end of file
"updated_at": "2020-01-12 14:11:51",
"created_by": {
"id": 1,
- "name": "Admin",
- "created_at": "2019-05-05 21:15:13",
- "updated_at": "2019-12-16 12:18:37",
- "image_id": 48
+ "name": "Admin"
},
"updated_by": {
"id": 1,
- "name": "Admin",
- "created_at": "2019-05-05 21:15:13",
- "updated_at": "2019-12-16 12:18:37",
- "image_id": 48
+ "name": "Admin"
},
- "image_id": 452,
"tags": [
{
"id": 13,
--- /dev/null
+{
+ "book_id": 1,
+ "priority": 6,
+ "name": "My fantastic new chapter",
+ "description": "This is a great new chapter that I've created via the API",
+ "created_by": 1,
+ "updated_by": 1,
+ "slug": "my-fantastic-new-chapter",
+ "updated_at": "2020-05-22 22:59:55",
+ "created_at": "2020-05-22 22:59:55",
+ "id": 74,
+ "book": {
+ "id": 1,
+ "name": "BookStack User Guide",
+ "slug": "bookstack-user-guide",
+ "description": "This is a general guide on using BookStack on a day-to-day basis.",
+ "created_at": "2019-05-05 21:48:46",
+ "updated_at": "2019-12-11 20:57:31",
+ "created_by": 1,
+ "updated_by": 1
+ },
+ "tags": [
+ {
+ "name": "Category",
+ "value": "Top Content",
+ "order": 0,
+ "created_at": "2020-05-22 22:59:55",
+ "updated_at": "2020-05-22 22:59:55"
+ },
+ {
+ "name": "Rating",
+ "value": "Highest",
+ "order": 0,
+ "created_at": "2020-05-22 22:59:55",
+ "updated_at": "2020-05-22 22:59:55"
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null
+{
+ "data": [
+ {
+ "id": 1,
+ "book_id": 1,
+ "name": "Content Creation",
+ "slug": "content-creation",
+ "description": "How to create documentation on whatever subject you need to write about.",
+ "priority": 3,
+ "created_at": "2019-05-05 21:49:56",
+ "updated_at": "2019-09-28 11:24:23",
+ "created_by": 1,
+ "updated_by": 1
+ },
+ {
+ "id": 2,
+ "book_id": 1,
+ "name": "Managing Content",
+ "slug": "managing-content",
+ "description": "How to keep things organised and orderly in the system for easier navigation and better user experience.",
+ "priority": 5,
+ "created_at": "2019-05-05 21:58:07",
+ "updated_at": "2019-10-17 15:05:34",
+ "created_by": 3,
+ "updated_by": 3
+ }
+ ],
+ "total": 40
+}
\ No newline at end of file
--- /dev/null
+{
+ "id": 1,
+ "book_id": 1,
+ "slug": "content-creation",
+ "name": "Content Creation",
+ "description": "How to create documentation on whatever subject you need to write about.",
+ "priority": 3,
+ "created_at": "2019-05-05 21:49:56",
+ "updated_at": "2019-09-28 11:24:23",
+ "created_by": {
+ "id": 1,
+ "name": "Admin"
+ },
+ "updated_by": {
+ "id": 1,
+ "name": "Admin"
+ },
+ "tags": [
+ {
+ "name": "Category",
+ "value": "Guide",
+ "order": 0,
+ "created_at": "2020-05-22 22:51:51",
+ "updated_at": "2020-05-22 22:51:51"
+ }
+ ],
+ "pages": [
+ {
+ "id": 1,
+ "book_id": 1,
+ "chapter_id": 1,
+ "name": "How to create page content",
+ "slug": "how-to-create-page-content",
+ "priority": 0,
+ "created_at": "2019-05-05 21:49:58",
+ "updated_at": "2019-08-26 14:32:59",
+ "created_by": 1,
+ "updated_by": 1,
+ "draft": 0,
+ "revision_count": 2,
+ "template": 0
+ },
+ {
+ "id": 7,
+ "book_id": 1,
+ "chapter_id": 1,
+ "name": "Good book structure",
+ "slug": "good-book-structure",
+ "priority": 1,
+ "created_at": "2019-05-05 22:01:55",
+ "updated_at": "2019-06-06 12:03:04",
+ "created_by": 3,
+ "updated_by": 3,
+ "draft": 0,
+ "revision_count": 1,
+ "template": 0
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null
+{
+ "id": 75,
+ "book_id": 1,
+ "slug": "my-fantastic-updated-chapter",
+ "name": "My fantastic updated chapter",
+ "description": "This is an updated chapter that I've altered via the API",
+ "priority": 7,
+ "created_at": "2020-05-22 23:03:35",
+ "updated_at": "2020-05-22 23:07:20",
+ "created_by": 1,
+ "updated_by": 1,
+ "book": {
+ "id": 1,
+ "name": "BookStack User Guide",
+ "slug": "bookstack-user-guide",
+ "description": "This is a general guide on using BookStack on a day-to-day basis.",
+ "created_at": "2019-05-05 21:48:46",
+ "updated_at": "2019-12-11 20:57:31",
+ "created_by": 1,
+ "updated_by": 1
+ },
+ "tags": [
+ {
+ "name": "Category",
+ "value": "Kinda Good Content",
+ "order": 0,
+ "created_at": "2020-05-22 23:07:20",
+ "updated_at": "2020-05-22 23:07:20"
+ },
+ {
+ "name": "Rating",
+ "value": "Medium",
+ "order": 0,
+ "created_at": "2020-05-22 23:07:20",
+ "updated_at": "2020-05-22 23:07:20"
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null
+{
+ "name": "My shelf",
+ "description": "This is my shelf with some books",
+ "created_by": 1,
+ "updated_by": 1,
+ "slug": "my-shelf",
+ "updated_at": "2020-04-10 13:24:09",
+ "created_at": "2020-04-10 13:24:09",
+ "id": 14
+}
\ No newline at end of file
--- /dev/null
+{
+ "data": [
+ {
+ "id": 8,
+ "name": "Qui qui aspernatur autem molestiae libero necessitatibus molestias.",
+ "slug": "qui-qui-aspernatur-autem-molestiae-libero-necessitatibus-molestias",
+ "description": "Enim dolor ut quia error dolores est. Aut distinctio consequuntur non nisi nostrum. Labore cupiditate error labore aliquid provident impedit voluptatibus. Quaerat impedit excepturi eius qui eius voluptatem reiciendis.",
+ "created_at": "2019-05-05 22:10:16",
+ "updated_at": "2020-04-10 13:00:45",
+ "created_by": 4,
+ "updated_by": 1,
+ "image_id": 31
+ },
+ {
+ "id": 9,
+ "name": "Ipsum aut inventore fuga libero non facilis.",
+ "slug": "ipsum-aut-inventore-fuga-libero-non-facilis",
+ "description": "Labore culpa modi perspiciatis harum sit. Maxime non et nam est. Quae ut laboriosam repellendus sunt quisquam. Velit at est perspiciatis nesciunt adipisci nobis illo. Sed possimus odit optio officiis nisi voluptates officiis dolor.",
+ "created_at": "2019-05-05 22:10:16",
+ "updated_at": "2020-04-10 13:00:58",
+ "created_by": 4,
+ "updated_by": 1,
+ "image_id": 28
+ },
+ {
+ "id": 10,
+ "name": "Omnis reiciendis aut molestias sint accusantium.",
+ "slug": "omnis-reiciendis-aut-molestias-sint-accusantium",
+ "description": "Qui ea occaecati alias est dolores voluptatem doloribus. Ad reiciendis corporis vero nostrum omnis et. Non doloribus ut eaque ut quos dolores.",
+ "created_at": "2019-05-05 22:10:16",
+ "updated_at": "2020-04-10 13:00:53",
+ "created_by": 4,
+ "updated_by": 1,
+ "image_id": 30
+ }
+ ],
+ "total": 3
+}
\ No newline at end of file
--- /dev/null
+{
+ "id": 14,
+ "name": "My shelf",
+ "slug": "my-shelf",
+ "description": "This is my shelf with some books",
+ "created_by": {
+ "id": 1,
+ "name": "Admin"
+ },
+ "updated_by": {
+ "id": 1,
+ "name": "Admin"
+ },
+ "created_at": "2020-04-10 13:24:09",
+ "updated_at": "2020-04-10 13:31:04",
+ "tags": [
+ {
+ "id": 16,
+ "entity_id": 14,
+ "entity_type": "BookStack\\Bookshelf",
+ "name": "Category",
+ "value": "Guide",
+ "order": 0,
+ "created_at": "2020-04-10 13:31:04",
+ "updated_at": "2020-04-10 13:31:04"
+ }
+ ],
+ "cover": {
+ "id": 501,
+ "name": "anafrancisconi_Sp04AfFCPNM.jpg",
+ "url": "http://bookstack.local/uploads/images/cover_book/2020-04/anafrancisconi_Sp04AfFCPNM.jpg",
+ "created_at": "2020-04-10 13:31:04",
+ "updated_at": "2020-04-10 13:31:04",
+ "created_by": 1,
+ "updated_by": 1,
+ "path": "/uploads/images/cover_book/2020-04/anafrancisconi_Sp04AfFCPNM.jpg",
+ "type": "cover_book",
+ "uploaded_to": 14
+ },
+ "books": [
+ {
+ "id": 5,
+ "name": "Sint explicabo alias sunt.",
+ "slug": "jbsQrzuaXe"
+ },
+ {
+ "id": 1,
+ "name": "BookStack User Guide",
+ "slug": "bookstack-user-guide"
+ },
+ {
+ "id": 3,
+ "name": "Molestiae doloribus sint velit suscipit dolorem.",
+ "slug": "H99QxALaoG"
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null
+{
+ "id": 14,
+ "name": "My updated shelf",
+ "slug": "my-updated-shelf",
+ "description": "This is my update shelf with some books",
+ "created_by": 1,
+ "updated_by": 1,
+ "image_id": 501,
+ "created_at": "2020-04-10 13:24:09",
+ "updated_at": "2020-04-10 13:48:22"
+}
\ No newline at end of file
--- /dev/null
+# JavaScript Components
+
+This document details the format for JavaScript components in BookStack. This is a really simple class-based setup with a few helpers provided.
+
+#### Defining a Component in JS
+
+```js
+class Dropdown {
+ setup() {
+ this.toggle = this.$refs.toggle;
+ this.menu = this.$refs.menu;
+
+ this.speed = parseInt(this.$opts.speed);
+ }
+}
+```
+
+All usage of $refs, $manyRefs and $opts should be done at the top of the `setup` function so any requirements can be easily seen.
+
+#### Using a Component in HTML
+
+A component is used like so:
+
+```html
+<div component="dropdown"></div>
+
+<!-- or, for multiple -->
+
+<div components="dropdown image-picker"></div>
+```
+
+The names will be parsed and new component instance will be created if a matching name is found in the `components/index.js` componentMapping.
+
+#### Element References
+
+Within a component you'll often need to refer to other element instances. This can be done like so:
+
+```html
+<div component="dropdown">
+ <span refs="dropdown@toggle othercomponent@handle">View more</span>
+</div>
+```
+
+You can then access the span element as `this.$refs.toggle` in your component.
+
+#### Component Options
+
+```html
+<div component="dropdown"
+ option:dropdown:delay="500"
+ option:dropdown:show>
+</div>
+```
+
+Will result with `this.$opts` being:
+
+```json
+{
+ "delay": "500",
+ "show": ""
+}
+```
\ No newline at end of file
"lockfileVersion": 1,
"dependencies": {
"@webassemblyjs/ast": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
- "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+ "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
"dev": true,
"requires": {
- "@webassemblyjs/helper-module-context": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/wast-parser": "1.8.5"
+ "@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": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
- "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
+ "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
"dev": true
},
"@webassemblyjs/helper-api-error": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
- "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
+ "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
"dev": true
},
"@webassemblyjs/helper-buffer": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
- "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
+ "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
"dev": true
},
"@webassemblyjs/helper-code-frame": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
- "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
+ "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
"dev": true,
"requires": {
- "@webassemblyjs/wast-printer": "1.8.5"
+ "@webassemblyjs/wast-printer": "1.9.0"
}
},
"@webassemblyjs/helper-fsm": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
- "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
+ "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
"dev": true
},
"@webassemblyjs/helper-module-context": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
- "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
+ "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "mamacro": "^0.0.3"
+ "@webassemblyjs/ast": "1.9.0"
}
},
"@webassemblyjs/helper-wasm-bytecode": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
- "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
+ "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
"dev": true
},
"@webassemblyjs/helper-wasm-section": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
- "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
+ "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-buffer": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/wasm-gen": "1.8.5"
+ "@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": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
- "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
+ "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
"dev": true,
"requires": {
"@xtuc/ieee754": "^1.2.0"
}
},
"@webassemblyjs/leb128": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
- "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
+ "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
"dev": true,
"requires": {
"@xtuc/long": "4.2.2"
}
},
"@webassemblyjs/utf8": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
- "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
+ "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
"dev": true
},
"@webassemblyjs/wasm-edit": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
- "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
+ "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-buffer": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/helper-wasm-section": "1.8.5",
- "@webassemblyjs/wasm-gen": "1.8.5",
- "@webassemblyjs/wasm-opt": "1.8.5",
- "@webassemblyjs/wasm-parser": "1.8.5",
- "@webassemblyjs/wast-printer": "1.8.5"
+ "@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": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
- "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
+ "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/ieee754": "1.8.5",
- "@webassemblyjs/leb128": "1.8.5",
- "@webassemblyjs/utf8": "1.8.5"
+ "@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": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
- "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
+ "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-buffer": "1.8.5",
- "@webassemblyjs/wasm-gen": "1.8.5",
- "@webassemblyjs/wasm-parser": "1.8.5"
+ "@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": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
- "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
+ "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-api-error": "1.8.5",
- "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
- "@webassemblyjs/ieee754": "1.8.5",
- "@webassemblyjs/leb128": "1.8.5",
- "@webassemblyjs/utf8": "1.8.5"
+ "@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": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
- "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
+ "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/floating-point-hex-parser": "1.8.5",
- "@webassemblyjs/helper-api-error": "1.8.5",
- "@webassemblyjs/helper-code-frame": "1.8.5",
- "@webassemblyjs/helper-fsm": "1.8.5",
+ "@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": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
- "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
+ "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
"dev": true,
"requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/wast-parser": "1.8.5",
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0",
"@xtuc/long": "4.2.2"
}
},
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"dev": true
},
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
"acorn": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz",
- "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
+ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
"dev": true
},
"ajv": {
- "version": "6.10.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
- "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "version": "6.12.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
+ "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
"dev": true,
"requires": {
- "fast-deep-equal": "^2.0.1",
+ "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
"dev": true
},
"ajv-keywords": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
- "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
- "dev": true
- },
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.1.tgz",
+ "integrity": "sha512-KWcq3xN8fDjSB+IMoh2VaXVhRI0BBGxoYp3rx7Pkb6z0cFjYR9Q9l4yZqqals0/zsioCmocC5H6UvsGD4MoIBA==",
"dev": true
},
"ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"ansi-styles": {
}
},
"anymatch": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
- "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+ "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
"dev": true,
"requires": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- },
- "dependencies": {
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "dev": true,
- "requires": {
- "remove-trailing-separator": "^1.0.1"
- }
- }
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
}
},
"aproba": {
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true
},
- "are-we-there-yet": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
- "dev": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
"dev": true
},
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
- "dev": true
- },
"array-map": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
"asn1.js": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+ "dev": true
+ }
}
},
"assert": {
},
"util": {
"version": "0.10.3",
- "resolved": "http://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
"dev": true,
"requires": {
}
}
},
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- },
"assign-symbols": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
"integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
- "dev": true
- },
- "async-foreach": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
- "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"async-limiter": {
"version": "1.0.1",
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
"dev": true
},
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "dev": true
- },
"atob": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"dev": true
},
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "dev": true
- },
- "aws4": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz",
- "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==",
- "dev": true
- },
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
"dev": true
},
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
"big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
"dev": true
},
"binary-extensions": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
- "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
+ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
"dev": true
},
- "bindings": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
- "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
- "dev": true,
- "optional": true,
- "requires": {
- "file-uri-to-path": "1.0.0"
- }
- },
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "dev": true,
- "requires": {
- "inherits": "~2.0.0"
- }
- },
"bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"dev": true
},
"bn.js": {
- "version": "4.11.8",
- "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
- "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz",
+ "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==",
"dev": true
},
"brace-expansion": {
}
},
"braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dev": true,
"requires": {
- "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"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
+ "fill-range": "^7.0.1"
}
},
"brorand": {
},
"browserify-aes": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
"dev": true,
"requires": {
},
"browserify-rsa": {
"version": "4.0.1",
- "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
"dev": true,
"requires": {
"bn.js": "^4.1.0",
"randombytes": "^2.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+ "dev": true
+ }
}
},
"browserify-sign": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
- "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
- "dev": true,
- "requires": {
- "bn.js": "^4.1.1",
- "browserify-rsa": "^4.0.0",
- "create-hash": "^1.1.0",
- "create-hmac": "^1.1.2",
- "elliptic": "^6.0.0",
- "inherits": "^2.0.1",
- "parse-asn1": "^5.0.0"
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz",
+ "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^5.1.1",
+ "browserify-rsa": "^4.0.1",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.2",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.5",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
}
},
"browserify-zlib": {
"dev": true
},
"cacache": {
- "version": "12.0.3",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz",
- "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==",
+ "version": "12.0.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
+ "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
"dev": true,
"requires": {
"bluebird": "^3.5.5",
},
"dependencies": {
"graceful-fs": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
- "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
- "dev": true
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "y18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
- "dev": true
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
}
}
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true
},
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "dev": true,
- "requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
- "dev": true
- }
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "dev": true
- },
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
}
},
"chokidar": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
- "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz",
+ "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==",
"dev": true,
"requires": {
- "anymatch": "^2.0.0",
- "async-each": "^1.0.1",
- "braces": "^2.3.2",
- "fsevents": "^1.2.7",
- "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"
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.1.2",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.3.0"
}
},
"chownr": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz",
- "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
"dev": true
},
"chrome-trace-event": {
}
},
"clipboard": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz",
- "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==",
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz",
+ "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==",
"requires": {
"good-listener": "^1.2.2",
"select": "^1.1.2",
}
},
"cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "dev": true,
- "requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
- }
- },
- "clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"requires": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
}
},
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
- "dev": true
- },
"codemirror": {
- "version": "5.50.0",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.50.0.tgz",
- "integrity": "sha512-32LAmGcBNhKtJP4WGgkcaCVQDyChAyaWA6jasg778ziZzo3PWBuhpAQIJMO8//Id45RoaLyXjuhcRUBoS8Vg+Q=="
+ "version": "5.56.0",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.56.0.tgz",
+ "integrity": "sha512-MfKVmYgifXjQpLSgpETuih7A7WTTIsxvKfSLGseTY5+qt0E1UD1wblZGM6WLenORo8sgmf+3X+WTe2WF7mufyw=="
},
"collection-visit": {
"version": "1.0.0",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
"dev": true
},
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
- "dev": true
- },
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
"requires": {
"bn.js": "^4.1.0",
"elliptic": "^6.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+ "dev": true
+ }
}
},
"create-hash": {
"version": "1.2.0",
- "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
"dev": true,
"requires": {
},
"create-hmac": {
"version": "1.1.7",
- "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
"dev": true,
"requires": {
}
},
"cross-spawn": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz",
- "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"dev": true,
"requires": {
- "lru-cache": "^4.0.1",
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"randomfill": "^1.0.3"
}
},
- "css-loader": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.0.tgz",
- "integrity": "sha512-JornYo4RAXl1Mzt0lOSVPmArzAMV3rGY2VuwtaDc732WTWjdwTaeS19nCGWMcSCf305Q396lhhDAJEWWM0SgPQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "cssesc": "^3.0.0",
- "icss-utils": "^4.1.1",
- "loader-utils": "^1.2.3",
- "normalize-path": "^3.0.0",
- "postcss": "^7.0.23",
- "postcss-modules-extract-imports": "^2.0.0",
- "postcss-modules-local-by-default": "^3.0.2",
- "postcss-modules-scope": "^2.1.1",
- "postcss-modules-values": "^3.0.0",
- "postcss-value-parser": "^4.0.2",
- "schema-utils": "^2.6.0"
- }
- },
- "cssesc": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
- "dev": true
- },
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "dev": true,
- "requires": {
- "array-find-index": "^1.0.1"
- }
- },
"cyclist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
"integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
"dev": true
},
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
}
}
},
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "dev": true
- },
"delegate": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
},
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "dev": true
- },
"des.js": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
},
"diffie-hellman": {
"version": "5.0.3",
- "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
"dev": true,
"requires": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
"randombytes": "^2.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+ "dev": true
+ }
}
},
"domain-browser": {
"dev": true
},
"dropzone": {
- "version": "5.5.1",
- "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.5.1.tgz",
- "integrity": "sha512-3VduRWLxx9hbVr42QieQN25mx/I61/mRdUSuxAmDGdDqZIN8qtP7tcKMa3KfpJjuGjOJGYYUzzeq6eGDnkzesA=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.7.2.tgz",
+ "integrity": "sha512-m217bJHtf0J1IiKn4Tv6mnu1h5QvQNBnKZ39gma7hzGQhIZMxYq1vYEHs4AVd4ThFwmALys+52NAOD4zdLTG4w=="
},
"duplexify": {
"version": "3.7.1",
"stream-shift": "^1.0.0"
}
},
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
"elliptic": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
- "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
+ "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
"dev": true,
"requires": {
"bn.js": "^4.4.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+ "dev": true
+ }
}
},
"emoji-regex": {
"dev": true
},
"emojis-list": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
- "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true
},
"end-of-stream": {
}
},
"enhanced-resolve": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz",
- "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz",
+ "integrity": "sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
}
},
"entities": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
- "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw=="
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
+ "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ=="
},
"errno": {
"version": "0.1.7",
"dev": true
},
"events": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
- "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
+ "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==",
"dev": true
},
"evp_bytestokey": {
"safe-buffer": "^5.1.1"
}
},
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "dev": true,
- "requires": {
- "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"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- }
- }
- },
"expand-brackets": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
"homedir-polyfill": "^1.0.1"
}
},
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
"extend-shallow": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
}
}
},
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "dev": true
- },
"fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true
},
"fast-json-stable-stringify": {
"dev": true
},
"figgy-pudding": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
- "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
+ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
"dev": true
},
- "file-uri-to-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
- "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dev": true,
- "optional": true
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
},
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "find-cache-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
- "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
"dev": true,
"requires": {
"commondir": "^1.0.1",
}
},
"find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "locate-path": "^3.0.0"
}
},
"findup-sync": {
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true
},
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "dev": true
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
"fragment-cache": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
"dev": true
},
"fsevents": {
- "version": "1.2.11",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz",
- "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==",
- "dev": true,
- "optional": true,
- "requires": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1",
- "node-pre-gyp": "*"
- },
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "aproba": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chownr": {
- "version": "1.1.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "code-point-at": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "concat-map": {
- "version": "0.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "console-control-strings": {
- "version": "1.1.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "debug": {
- "version": "3.2.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "delegates": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "detect-libc": {
- "version": "1.0.3",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "fs-minipass": {
- "version": "1.2.7",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.6.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "gauge": {
- "version": "2.7.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "glob": {
- "version": "7.1.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "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"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "iconv-lite": {
- "version": "0.4.24",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ignore-walk": {
- "version": "3.0.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "ini": {
- "version": "1.3.5",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "minipass": {
- "version": "2.9.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.3.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minipass": "^2.9.0"
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "needle": {
- "version": "2.4.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "node-pre-gyp": {
- "version": "0.14.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.1",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4.4.2"
- }
- },
- "nopt": {
- "version": "4.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "npm-bundled": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-normalize-package-bin": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "npm-packlist": {
- "version": "1.4.7",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "osenv": {
- "version": "0.1.5",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "rc": {
- "version": "1.2.8",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "readable-stream": {
- "version": "2.3.6",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "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"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "safer-buffer": {
- "version": "2.1.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "sax": {
- "version": "1.2.4",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "semver": {
- "version": "5.7.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "string-width": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "tar": {
- "version": "4.4.13",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.8.6",
- "minizlib": "^1.2.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.3"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "wide-align": {
- "version": "1.1.3",
- "bundled": true,
- "dev": true,
- "optional": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "bundled": true,
- "dev": true,
- "optional": true
- },
- "yallist": {
- "version": "3.1.1",
- "bundled": true,
- "dev": true,
- "optional": true
- }
- }
- },
- "fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz",
+ "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- }
+ "optional": true
},
"function-bind": {
"version": "1.1.1",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "dev": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "gaze": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
- "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
- "dev": true,
- "requires": {
- "globule": "^1.0.0"
- }
- },
"get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
- "dev": true
- },
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
"dev": true
},
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
"glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
}
},
"glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
+ "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
"dev": true,
"requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
+ "is-glob": "^4.0.1"
}
},
"global-modules": {
"which": "^1.2.14"
}
},
- "globule": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz",
- "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==",
- "dev": true,
- "requires": {
- "glob": "~7.1.1",
- "lodash": "~4.17.10",
- "minimatch": "~3.0.2"
- }
- },
"good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
},
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "dev": true
- },
- "har-validator": {
- "version": "5.1.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
- "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
- "dev": true,
- "requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
- }
- },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"function-bind": "^1.1.1"
}
},
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
"dev": true
},
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "dev": true
- },
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
"kind-of": "^4.0.0"
},
"dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
"kind-of": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
}
},
"hash-base": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
- "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+ "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
"dev": true,
"requires": {
- "inherits": "^2.0.1",
- "safe-buffer": "^5.0.1"
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
}
},
"hash.js": {
"integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
"dev": true
},
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
"https-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
"dev": true
},
- "icss-utils": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
- "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.14"
- }
- },
"ieee754": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
- "in-publish": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz",
- "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=",
- "dev": true
- },
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "dev": true,
- "requires": {
- "repeating": "^2.0.0"
- }
- },
- "indexes-of": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
- "dev": true
- },
"infer-owner": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
"dev": true
},
"interpret": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
- "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
- "dev": true
- },
- "invert-kv": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
- "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
"dev": true
},
"is-accessor-descriptor": {
"dev": true
},
"is-binary-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
- "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"dev": true,
"requires": {
- "binary-extensions": "^1.0.0"
+ "binary-extensions": "^2.0.0"
}
},
"is-buffer": {
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
"dev": true
},
- "is-finite": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
- "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
"is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
},
"is-glob": {
"version": "4.0.1",
}
},
"is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
"is-plain-object": {
"has": "^1.0.1"
}
},
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
- },
"is-symbol": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
"has-symbols": "^1.0.0"
}
},
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
- "dev": true
- },
"is-windows": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "dev": true
- },
- "js-base64": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
- "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
- "dev": true
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true
- },
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "dev": true
- },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "dev": true
- },
"json5": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true
},
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
"kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
},
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "dev": true,
- "requires": {
- "invert-kv": "^1.0.0"
- }
- },
"linkify-it": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",
- "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz",
+ "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==",
"requires": {
"uc.micro": "^1.0.1"
}
},
"livereload": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.8.2.tgz",
- "integrity": "sha512-8wCvhiCL4cGVoT3U5xoe+UjpiiVZLrlOvr6dbhb1VlyC5QarhrlyRRt4z7EMGO4KSgXj+tKF/dr284F28/wI+g==",
+ "version": "0.9.1",
+ "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz",
+ "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==",
"dev": true,
"requires": {
- "chokidar": "^2.1.5",
+ "chokidar": "^3.3.0",
+ "livereload-js": "^3.1.0",
"opts": ">= 1.2.0",
"ws": "^6.2.1"
}
},
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
+ "livereload-js": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.2.2.tgz",
+ "integrity": "sha512-xhScbNeC687ZINjEf/bD+BMiPx4s4q0mehcLb3zCc8+mykOtmaBR4vqzyIV9rIGdG9JjHaT0LiFdscvivCjX1Q==",
+ "dev": true
},
"loader-runner": {
"version": "2.4.0",
"dev": true
},
"loader-utils": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
- "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
"dev": true,
"requires": {
"big.js": "^5.2.2",
- "emojis-list": "^2.0.0",
+ "emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
},
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- }
- }
- },
- "lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "dev": true
- },
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "dev": true,
- "requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
}
},
"lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
"requires": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "yallist": "^3.0.2"
}
},
"make-dir": {
}
}
},
- "mamacro": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
- "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
- "dev": true
- },
- "map-age-cleaner": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
- "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
- "dev": true,
- "requires": {
- "p-defer": "^1.0.0"
- }
- },
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
"dev": true
},
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
- "dev": true
- },
"map-visit": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
}
},
"markdown-it": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz",
- "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-11.0.0.tgz",
+ "integrity": "sha512-+CvOnmbSubmQFSA9dKz1BRiaSMV7rhexl3sngKqFyXSagoA3fBdJQ8oZWtRy2knXdpDXaBw44euz37DeJQ9asg==",
"requires": {
"argparse": "^1.0.7",
"entities": "~2.0.0",
- "linkify-it": "^2.0.0",
+ "linkify-it": "^3.0.1",
"mdurl": "^1.0.1",
"uc.micro": "^1.0.5"
}
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
"integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
},
- "mem": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
- "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
- "dev": true,
- "requires": {
- "map-age-cleaner": "^0.1.1",
- "mimic-fn": "^2.0.0",
- "p-is-promise": "^2.0.0"
- }
- },
"memory-fs": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
"integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
"dev": true
},
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "dev": true,
- "requires": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
- }
- },
"micromatch": {
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.2"
- }
- },
- "miller-rabin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
- "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "dev": true,
- "requires": {
- "bn.js": "^4.0.0",
- "brorand": "^1.0.1"
- }
- },
- "mime-db": {
- "version": "1.42.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz",
- "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.25",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz",
- "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==",
- "dev": true,
- "requires": {
- "mime-db": "1.42.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "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"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
},
- "mini-css-extract-plugin": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz",
- "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==",
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
"dev": true,
"requires": {
- "loader-utils": "^1.1.0",
- "normalize-url": "1.9.1",
- "schema-utils": "^1.0.0",
- "webpack-sources": "^1.1.0"
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
},
"dependencies": {
- "schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
- }
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+ "dev": true
}
}
},
}
},
"minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"mississippi": {
}
},
"mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
- "dev": true
- }
+ "minimist": "^1.2.5"
}
},
"move-concurrently": {
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
- "nan": {
- "version": "2.14.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
- "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
- "dev": true
- },
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
}
},
"neo-async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
- "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
"nice-try": {
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
- "node-gyp": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
- "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
- "dev": true,
- "requires": {
- "fstream": "^1.0.0",
- "glob": "^7.0.3",
- "graceful-fs": "^4.1.2",
- "mkdirp": "^0.5.0",
- "nopt": "2 || 3",
- "npmlog": "0 || 1 || 2 || 3 || 4",
- "osenv": "0",
- "request": "^2.87.0",
- "rimraf": "2",
- "semver": "~5.3.0",
- "tar": "^2.0.0",
- "which": "1"
- },
- "dependencies": {
- "semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
- "dev": true
- }
- }
- },
"node-libs-browser": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
}
}
},
- "node-sass": {
- "version": "4.13.0",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz",
- "integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==",
- "dev": true,
- "requires": {
- "async-foreach": "^0.1.3",
- "chalk": "^1.1.1",
- "cross-spawn": "^3.0.0",
- "gaze": "^1.0.0",
- "get-stdin": "^4.0.1",
- "glob": "^7.0.3",
- "in-publish": "^2.0.0",
- "lodash": "^4.17.15",
- "meow": "^3.7.0",
- "mkdirp": "^0.5.1",
- "nan": "^2.13.2",
- "node-gyp": "^3.8.0",
- "npmlog": "^4.0.0",
- "request": "^2.88.0",
- "sass-graph": "^2.2.4",
- "stdout-stream": "^1.4.0",
- "true-case-path": "^1.0.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "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"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- },
"normalize-package-data": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
},
- "normalize-url": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
- "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
- "dev": true,
- "requires": {
- "object-assign": "^4.0.1",
- "prepend-http": "^1.0.0",
- "query-string": "^4.1.0",
- "sort-keys": "^1.0.0"
- }
- },
"npm-run-all": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
}
}
},
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dev": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "dev": true
- },
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
"dev": true
},
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
- "dev": true
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "dev": true,
- "requires": {
- "lcid": "^1.0.0"
- }
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "dev": true
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "dev": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "p-defer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
- "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
- "dev": true
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
- "dev": true
- },
- "p-is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
- "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
- "dev": true
- },
"p-limit": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
- "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"requires": {
"p-try": "^2.0.0"
"dev": true
},
"pako": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
- "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"dev": true
},
"parallel-transform": {
"create-hash": "^1.1.0",
"evp_bytestokey": "^1.0.0",
"pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "parse-passwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
- "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
- "dev": true
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
- "dev": true
- },
- "path-browserify": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
- "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
- "dev": true
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
- "dev": true
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
- },
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
- }
- },
- "pbkdf2": {
- "version": "3.0.17",
- "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
- "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
- "dev": true,
- "requires": {
- "create-hash": "^1.1.2",
- "create-hmac": "^1.1.4",
- "ripemd160": "^2.0.1",
- "safe-buffer": "^5.0.1",
- "sha.js": "^2.4.8"
- }
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "dev": true
- },
- "pidtree": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz",
- "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==",
- "dev": true
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- }
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
- "dev": true
- },
- "postcss": {
- "version": "7.0.25",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.25.tgz",
- "integrity": "sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2",
- "source-map": "^0.6.1",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "postcss-modules-extract-imports": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
- "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
- "dev": true,
- "requires": {
- "postcss": "^7.0.5"
+ "safe-buffer": "^5.1.1"
}
},
- "postcss-modules-local-by-default": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz",
- "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==",
- "dev": true,
- "requires": {
- "icss-utils": "^4.1.1",
- "postcss": "^7.0.16",
- "postcss-selector-parser": "^6.0.2",
- "postcss-value-parser": "^4.0.0"
- }
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
},
- "postcss-modules-scope": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz",
- "integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==",
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true,
- "requires": {
- "postcss": "^7.0.6",
- "postcss-selector-parser": "^6.0.0"
- }
+ "optional": true
},
- "postcss-modules-values": {
+ "path-exists": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
- "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "pbkdf2": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
+ "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
"dev": true,
"requires": {
- "icss-utils": "^4.0.0",
- "postcss": "^7.0.6"
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
}
},
- "postcss-selector-parser": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
- "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
+ "picomatch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz",
+ "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==",
+ "dev": true
+ },
+ "pidtree": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz",
+ "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==",
+ "dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
"dev": true,
"requires": {
- "cssesc": "^3.0.0",
- "indexes-of": "^1.0.1",
- "uniq": "^1.0.1"
+ "find-up": "^3.0.0"
}
},
- "postcss-value-parser": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz",
- "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==",
- "dev": true
- },
- "prepend-http": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
- "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
"dev": true
},
"process": {
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"dev": true
},
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
- "dev": true
- },
- "psl": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz",
- "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==",
- "dev": true
- },
"public-encrypt": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
"parse-asn1": "^5.0.0",
"randombytes": "^2.0.1",
"safe-buffer": "^5.1.2"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.11.9",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
+ "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==",
+ "dev": true
+ }
}
},
"pump": {
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "dev": true
- },
- "query-string": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
- "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
- "dev": true,
- "requires": {
- "object-assign": "^4.1.0",
- "strict-uri-encode": "^1.0.0"
- }
- },
"querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
"safe-buffer": "^5.1.0"
}
},
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
- "dev": true,
- "requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
- "dev": true,
- "requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- }
- },
"readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
}
},
"readdirp": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
- "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
- }
- },
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz",
+ "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==",
"dev": true,
"requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
+ "picomatch": "^2.0.7"
}
},
"regex-not": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
- "dev": true
+ "dev": true,
+ "optional": true
},
"repeat-element": {
"version": "1.1.3",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "dev": true,
- "requires": {
- "is-finite": "^1.0.0"
- }
- },
- "request": {
- "version": "2.88.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
- "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.0",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.4.3",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
- },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"dev": true
},
"require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
"resolve-cwd": {
},
"safe-regex": {
"version": "1.1.0",
- "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
"ret": "~0.1.10"
}
},
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
- },
- "sass-graph": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz",
- "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
- "dev": true,
- "requires": {
- "glob": "^7.0.0",
- "lodash": "^4.0.0",
- "scss-tokenizer": "^0.2.3",
- "yargs": "^7.0.0"
- }
- },
- "sass-loader": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz",
- "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==",
+ "sass": {
+ "version": "1.26.10",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.10.tgz",
+ "integrity": "sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==",
"dev": true,
"requires": {
- "clone-deep": "^4.0.1",
- "loader-utils": "^1.2.3",
- "neo-async": "^2.6.1",
- "schema-utils": "^2.1.0",
- "semver": "^6.3.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- }
+ "chokidar": ">=2.0.0 <4.0.0"
}
},
"schema-utils": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz",
- "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==",
- "dev": true,
- "requires": {
- "ajv": "^6.10.2",
- "ajv-keywords": "^3.4.1"
- }
- },
- "scss-tokenizer": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
- "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
"dev": true,
"requires": {
- "js-base64": "^2.1.8",
- "source-map": "^0.4.2"
- },
- "dependencies": {
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "dev": true,
- "requires": {
- "amdefine": ">=0.0.4"
- }
- }
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
}
},
"select": {
"dev": true
},
"serialize-javascript": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
- "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
- "dev": true
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz",
+ "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
},
"set-blocking": {
"version": "2.0.0",
},
"sha.js": {
"version": "2.4.11",
- "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
"dev": true,
"requires": {
"safe-buffer": "^5.0.1"
}
},
- "shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- }
- },
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"jsonify": "~0.0.0"
}
},
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
- "dev": true
- },
"snapdragon": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
"requires": {
"is-extendable": "^0.1.0"
}
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
- "dev": true
}
}
},
}
}
},
- "sort-keys": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
- "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
- "dev": true,
- "requires": {
- "is-plain-obj": "^1.0.0"
- }
- },
"sortablejs": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.1.tgz",
- "integrity": "sha512-N6r7GrVmO8RW1rn0cTdvK3JR0BcqecAJ0PmYMCL3ZuqTH3pY+9QyqkmJSkkLyyDvd+AJnwaxTP22Ybr/83V9hQ=="
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz",
+ "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
},
"source-list-map": {
"version": "2.0.1",
"dev": true
},
"source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
},
"source-map-resolve": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
- "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
"dev": true,
"requires": {
- "atob": "^2.1.1",
+ "atob": "^2.1.2",
"decode-uri-component": "^0.2.0",
"resolve-url": "^0.2.1",
"source-map-url": "^0.4.0",
}
},
"source-map-support": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
- "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+ "version": "0.5.19",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
}
},
"source-map-url": {
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "dev": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
"ssri": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
}
}
},
- "stdout-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
- "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
- "dev": true,
- "requires": {
- "readable-stream": "^2.0.1"
- }
- },
"stream-browserify": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
"dev": true
},
- "strict-uri-encode": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
- "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
- "dev": true
- },
"string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
}
},
"string.prototype.padend": {
}
},
"strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
- "dev": true
- },
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
- "get-stdin": "^4.0.1"
- }
- },
- "style-loader": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.1.tgz",
- "integrity": "sha512-oIVF12trRq0od4Yojg7q0K3Lq/O6Ix/AYgVosykrVg+kWxxxUyk8KhKCCmekyGSUiVK1xxlAQymLWWdh6S9lOg==",
- "dev": true,
- "requires": {
- "loader-utils": "^1.2.3",
- "schema-utils": "^2.0.1"
+ "ansi-regex": "^4.1.0"
}
},
"supports-color": {
"integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
"dev": true
},
- "tar": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
- "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
- "dev": true,
- "requires": {
- "block-stream": "*",
- "fstream": "^1.0.12",
- "inherits": "2"
- }
- },
"terser": {
- "version": "4.4.3",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz",
- "integrity": "sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA==",
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+ "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
"dev": true,
"requires": {
"commander": "^2.20.0",
"source-map": "~0.6.1",
"source-map-support": "~0.5.12"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
}
},
"terser-webpack-plugin": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz",
- "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==",
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz",
+ "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==",
"dev": true,
"requires": {
"cacache": "^12.0.2",
"find-cache-dir": "^2.1.0",
"is-wsl": "^1.1.0",
"schema-utils": "^1.0.0",
- "serialize-javascript": "^2.1.2",
+ "serialize-javascript": "^3.1.0",
"source-map": "^0.6.1",
"terser": "^4.1.2",
"webpack-sources": "^1.4.0",
"worker-farm": "^1.7.0"
},
"dependencies": {
- "schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
- "dev": true,
- "requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
- }
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
}
}
},
}
},
"tiny-emitter": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz",
- "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow=="
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
},
"to-arraybuffer": {
"version": "1.0.1",
"integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
"dev": true,
"requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "tough-cookie": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
- "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
- "dev": true,
- "requires": {
- "psl": "^1.1.24",
- "punycode": "^1.4.1"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- }
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
}
},
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
- "dev": true
- },
- "true-case-path": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
- "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"requires": {
- "glob": "^7.1.2"
+ "is-number": "^7.0.0"
}
},
"tslib": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
- "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
+ "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
"dev": true
},
"tty-browserify": {
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
"dev": true
},
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true
- },
"typedarray": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
"set-value": "^2.0.1"
}
},
- "uniq": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
- "dev": true
- },
"unique-filename": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true
+ "dev": true,
+ "optional": true
},
"uri-js": {
"version": "4.2.2",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
- "uuid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
- "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
- "dev": true
- },
"v8-compile-cache": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz",
- "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
+ "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
"dev": true
},
"validate-npm-package-license": {
"spdx-expression-parse": "^3.0.0"
}
},
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
"vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
"dev": true
},
- "vue": {
- "version": "2.6.11",
- "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz",
- "integrity": "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ=="
- },
- "vuedraggable": {
- "version": "2.23.2",
- "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.23.2.tgz",
- "integrity": "sha512-PgHCjUpxEAEZJq36ys49HfQmXglattf/7ofOzUrW2/rRdG7tu6fK84ir14t1jYv4kdXewTEa2ieKEAhhEMdwkQ==",
- "requires": {
- "sortablejs": "^1.10.1"
- }
- },
"watchpack": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
- "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
+ "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==",
"dev": true,
"requires": {
- "chokidar": "^2.0.2",
+ "chokidar": "^3.4.1",
"graceful-fs": "^4.1.2",
- "neo-async": "^2.5.0"
- }
- },
- "webpack": {
- "version": "4.41.4",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.4.tgz",
- "integrity": "sha512-Lc+2uB6NjpCWsHI3trkoISOI64h9QYIXenbEWj3bn3oyjfB1lEBXjWAfAyY2sM0rZn41oD5V91OLwKRwS6Wp8Q==",
- "dev": true,
- "requires": {
- "@webassemblyjs/ast": "1.8.5",
- "@webassemblyjs/helper-module-context": "1.8.5",
- "@webassemblyjs/wasm-edit": "1.8.5",
- "@webassemblyjs/wasm-parser": "1.8.5",
- "acorn": "^6.2.1",
- "ajv": "^6.10.2",
- "ajv-keywords": "^3.4.1",
- "chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^4.1.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.1",
- "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.6.0",
- "webpack-sources": "^1.4.1"
+ "neo-async": "^2.5.0",
+ "watchpack-chokidar2": "^2.0.0"
},
"dependencies": {
- "schema-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
- "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "chokidar": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz",
+ "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.1.2",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.4.0"
+ }
+ },
+ "readdirp": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+ "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
"dev": true,
+ "optional": true,
"requires": {
- "ajv": "^6.1.0",
- "ajv-errors": "^1.0.0",
- "ajv-keywords": "^3.1.0"
+ "picomatch": "^2.2.1"
}
}
}
},
- "webpack-cli": {
- "version": "3.3.10",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.10.tgz",
- "integrity": "sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg==",
- "dev": true,
- "requires": {
- "chalk": "2.4.2",
- "cross-spawn": "6.0.5",
- "enhanced-resolve": "4.1.0",
- "findup-sync": "3.0.0",
- "global-modules": "2.0.0",
- "import-local": "2.0.0",
- "interpret": "1.2.0",
- "loader-utils": "1.2.3",
- "supports-color": "6.1.0",
- "v8-compile-cache": "2.0.3",
- "yargs": "13.2.4"
+ "watchpack-chokidar2": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz",
+ "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chokidar": "^2.1.8"
},
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"dev": true,
+ "optional": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
},
"dependencies": {
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
+ "optional": true,
"requires": {
- "has-flag": "^3.0.0"
+ "remove-trailing-separator": "^1.0.1"
}
}
}
},
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
"dev": true,
+ "optional": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "optional": true,
"requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "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"
}
},
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"dev": true,
+ "optional": true,
"requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "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"
}
},
- "enhanced-resolve": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
- "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
+ "optional": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.4.0",
- "tapable": "^1.0.0"
+ "is-extendable": "^0.1.0"
}
},
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
+ "optional": true,
"requires": {
- "locate-path": "^3.0.0"
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
}
},
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "invert-kv": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
- "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "dev": true,
+ "optional": true
},
- "lcid": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
- "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
+ "optional": true,
"requires": {
- "invert-kv": "^2.0.0"
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
}
},
- "os-locale": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
- "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"dev": true,
+ "optional": true,
"requires": {
- "execa": "^1.0.0",
- "lcid": "^2.0.0",
- "mem": "^4.0.0"
+ "binary-extensions": "^1.0.0"
}
},
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
+ "optional": true,
"requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "kind-of": "^3.0.2"
}
},
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
+ "optional": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "is-buffer": "^1.1.5"
}
},
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
"dev": true,
+ "optional": true,
"requires": {
- "has-flag": "^3.0.0"
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
}
},
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
"dev": true,
+ "optional": true,
"requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
}
- },
- "y18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
- "dev": true
- },
- "yargs": {
- "version": "13.2.4",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
- "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
+ }
+ }
+ },
+ "webpack": {
+ "version": "4.44.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.0.tgz",
+ "integrity": "sha512-wAuJxK123sqAw31SpkPiPW3iKHgFUiKvO7E7UZjtdExcsRe3fgav4mvoMM7vvpjLHVoJ6a0Mtp2fzkoA13e0Zw==",
+ "dev": true,
+ "requires": {
+ "@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.3.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"
+ },
+ "dependencies": {
+ "enhanced-resolve": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz",
+ "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.5.0",
+ "tapable": "^1.0.0"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+ "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ }
+ }
+ }
+ }
+ },
+ "webpack-cli": {
+ "version": "3.3.12",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz",
+ "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==",
+ "dev": true,
+ "requires": {
+ "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"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
- "cliui": "^5.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.1.0"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
}
},
- "yargs-parser": {
- "version": "13.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
- "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"dev": true,
"requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
+ "has-flag": "^3.0.0"
}
}
}
"requires": {
"source-list-map": "^2.0.0",
"source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
}
},
"which": {
}
},
"which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dev": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
"worker-farm": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
}
},
"wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
}
},
"wrappy": {
"dev": true
},
"y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true
},
"yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
},
"yargs": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz",
- "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
+ "version": "13.3.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
"requires": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
+ "require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "^5.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true
- }
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
}
},
"yargs-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz",
- "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
+ "version": "13.1.2",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dev": true,
"requires": {
- "camelcase": "^3.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
- "dev": true
- }
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
}
}
}
{
"private": true,
"scripts": {
- "build": "webpack",
- "production": "NODE_ENV=production webpack && rm -f ./public/dist/*styles.js",
- "build-profile": "NODE_ENV=production webpack --profile --json > webpack-stats.json && rm -f ./public/dist/*styles.js",
+ "build:css:dev": "sass ./resources/sass:./public/dist",
+ "build:css:watch": "sass ./resources/sass:./public/dist --watch",
+ "build:css:production": "sass ./resources/sass:./public/dist -s compressed",
+ "build:js:dev": "webpack",
+ "build:js:watch": "webpack --watch",
+ "build:js:production": "NODE_ENV=production webpack",
+ "build": "npm-run-all --parallel build:*:dev",
+ "production": "npm-run-all --parallel build:*:production",
"dev": "npm-run-all --parallel watch livereload",
- "watch": "webpack --watch",
+ "watch": "npm-run-all --parallel build:*:watch",
"livereload": "livereload ./public/dist/",
"permissions": "chown -R $USER:$USER bootstrap/cache storage public/uploads"
},
"devDependencies": {
- "css-loader": "^3.4.0",
- "livereload": "^0.8.2",
- "mini-css-extract-plugin": "^0.9.0",
- "node-sass": "^4.13.0",
+ "livereload": "^0.9.1",
"npm-run-all": "^4.1.5",
- "sass-loader": "^8.0.0",
- "style-loader": "^1.1.1",
- "webpack": "^4.41.4",
- "webpack-cli": "^3.3.10"
+ "sass": "^1.26.10",
+ "webpack": "^4.44.0",
+ "webpack-cli": "^3.3.12"
},
"dependencies": {
- "clipboard": "^2.0.4",
- "codemirror": "^5.50.0",
- "dropzone": "^5.5.1",
- "markdown-it": "^10.0.0",
+ "clipboard": "^2.0.6",
+ "codemirror": "^5.56.0",
+ "dropzone": "^5.7.2",
+ "markdown-it": "^11.0.0",
"markdown-it-task-lists": "^2.1.1",
- "sortablejs": "^1.10.1",
- "vue": "^2.6.11",
- "vuedraggable": "^2.23.2"
- },
- "browser": {
- "vue": "vue/dist/vue.common.js"
+ "sortablejs": "^1.10.2"
}
}
<description>The coding standard for BookStack.</description>
<file>app</file>
<exclude-pattern>*/migrations/*</exclude-pattern>
+ <exclude-pattern>*/tests/*</exclude-pattern>
<arg value="np"/>
<rule ref="PSR2"/>
</ruleset>
\ No newline at end of file
RewriteEngine On
+ # Handle Authorization Header
+ RewriteCond %{HTTP:Authorization} .
+ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return function(){return e}};function c(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}var n,r,o,a,i,l,u=t(!1),s=t(!0),m=u,f=s,d=function(){return p},p=(a={fold:function(e,t){return e()},is:m,isSome:m,isNone:f,getOr:o=function(e){return e},getOrThunk:r=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:o,orThunk:r,map:d,ap:d,each:function(){},bind:d,flatten:d,exists:m,forall:f,filter:d,equals:n=function(e){return e.isNone()},equals_:n,toArray:function(){return[]},toString:t("none()")},Object.freeze&&Object.freeze(a),a),y=function(n){var e=function(){return n},t=function(){return o},r=function(e){return e(n)},o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:f,isNone:m,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return y(e(n))},ap:function(e){return e.fold(d,function(e){return y(e(n))})},each:function(e){e(n)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(n)?o:p},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(m,function(e){return t(n,e)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},h={some:y,none:d,from:function(e){return null===e||e===undefined?p:y(e)}},g=(i="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&Array.prototype.isPrototypeOf(e)?"array":"object"===t&&String.prototype.isPrototypeOf(e)?"string":t}(e)===i}),k=(l=Array.prototype.indexOf)===undefined?function(e,t){return x(e,t)}:function(e,t){return l.call(e,t)},v=function(e,t){return-1<k(e,t)},b=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var a=e[o];r[o]=t(a,o,e)}return r},x=function(e,t){for(var n=0,r=e.length;n<r;++n)if(e[n]===t)return n;return-1},C=(Array.prototype.slice,g(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.util.I18n")),w=tinymce.util.Tools.resolve("tinymce.Env"),A=w.mac?"\u2318":"Ctrl",S=w.mac?"Ctrl + Alt":"Shift + Alt",O={shortcuts:[{shortcut:A+" + B",action:"Bold"},{shortcut:A+" + I",action:"Italic"},{shortcut:A+" + U",action:"Underline"},{shortcut:A+" + A",action:"Select all"},{shortcut:A+" + Y or "+A+" + Shift + Z",action:"Redo"},{shortcut:A+" + Z",action:"Undo"},{shortcut:S+" + 1",action:"Header 1"},{shortcut:S+" + 2",action:"Header 2"},{shortcut:S+" + 3",action:"Header 3"},{shortcut:S+" + 4",action:"Header 4"},{shortcut:S+" + 5",action:"Header 5"},{shortcut:S+" + 6",action:"Header 6"},{shortcut:S+" + 7",action:"Paragraph"},{shortcut:S+" + 8",action:"Div"},{shortcut:S+" + 9",action:"Address"},{shortcut:"Alt + F9",action:"Focus to menubar"},{shortcut:"Alt + F10",action:"Focus to toolbar"},{shortcut:"Alt + F11",action:"Focus to element path"},{shortcut:"Ctrl + F9",action:"Focus to contextual toolbar"},{shortcut:A+" + K",action:"Insert link (if link plugin activated)"},{shortcut:A+" + S",action:"Save (if save plugin activated)"},{shortcut:A+" + F",action:"Find (if searchreplace plugin activated)"}]},T=function(){var e=b(O.shortcuts,function(e){return'<tr data-mce-tabstop="1" tabindex="-1" aria-label="Action: '+(t=e).action+", Shortcut: "+t.shortcut.replace(/Ctrl/g,"Control")+'"><td>'+C.translate(e.action)+"</td><td>"+e.shortcut+"</td></tr>";var t}).join("");return{title:"Handy Shortcuts",type:"container",style:"overflow-y: auto; overflow-x: hidden; max-height: 250px",items:[{type:"container",html:'<div><table class="mce-table-striped"><thead><th>'+C.translate("Action")+"</th><th>"+C.translate("Shortcut")+"</th></thead>"+e+"</table></div>"}]}},P=Object.keys,_=[{key:"advlist",name:"Advanced List"},{key:"anchor",name:"Anchor"},{key:"autolink",name:"Autolink"},{key:"autoresize",name:"Autoresize"},{key:"autosave",name:"Autosave"},{key:"bbcode",name:"BBCode"},{key:"charmap",name:"Character Map"},{key:"code",name:"Code"},{key:"codesample",name:"Code Sample"},{key:"colorpicker",name:"Color Picker"},{key:"compat3x",name:"3.x Compatibility"},{key:"contextmenu",name:"Context Menu"},{key:"directionality",name:"Directionality"},{key:"emoticons",name:"Emoticons"},{key:"fullpage",name:"Full Page"},{key:"fullscreen",name:"Full Screen"},{key:"help",name:"Help"},{key:"hr",name:"Horizontal Rule"},{key:"image",name:"Image"},{key:"imagetools",name:"Image Tools"},{key:"importcss",name:"Import CSS"},{key:"insertdatetime",name:"Insert Date/Time"},{key:"legacyoutput",name:"Legacy Output"},{key:"link",name:"Link"},{key:"lists",name:"Lists"},{key:"media",name:"Media"},{key:"nonbreaking",name:"Nonbreaking"},{key:"noneditable",name:"Noneditable"},{key:"pagebreak",name:"Page Break"},{key:"paste",name:"Paste"},{key:"preview",name:"Preview"},{key:"print",name:"Print"},{key:"save",name:"Save"},{key:"searchreplace",name:"Search and Replace"},{key:"spellchecker",name:"Spell Checker"},{key:"tabfocus",name:"Tab Focus"},{key:"table",name:"Table"},{key:"template",name:"Template"},{key:"textcolor",name:"Text Color"},{key:"textpattern",name:"Text Pattern"},{key:"toc",name:"Table of Contents"},{key:"visualblocks",name:"Visual Blocks"},{key:"visualchars",name:"Visual Characters"},{key:"wordcount",name:"Word Count"}],H=c(function(e,o){return e.replace(/\$\{([^{}]*)\}/g,function(e,t){var n,r=o[t];return"string"==(n=typeof r)||"number"===n?r.toString():e})},'<a href="${url}" target="_blank" rel="noopener">${name}</a>'),F=function(t,n){return function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n,e))return h.some(o)}return h.none()}(_,function(e){return e.key===n}).fold(function(){var e=t.plugins[n].getMetadata;return"function"==typeof e?H(e()):n},function(e){return H({name:e.name,url:"https://www.tinymce.com/docs/plugins/"+e.key})})},M=function(t){var e,n,r,o=(r=P((e=t).plugins),e.settings.forced_plugins===undefined?r:function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var a=e[r];t(a,r,e)&&n.push(a)}return n}(r,(n=c(v,e.settings.forced_plugins),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}))),a=b(o,function(e){return"<li>"+F(t,e)+"</li>"}),i=a.length,l=a.join("");return"<p><b>"+C.translate(["Plugins installed ({0}):",i])+"</b></p><ul>"+l+"</ul>"},E=function(e){return{title:"Plugins",type:"container",style:"overflow-y: auto; overflow-x: hidden;",layout:"flex",padding:10,spacing:10,items:[(t=e,{type:"container",html:'<div style="overflow-y: auto; overflow-x: hidden; max-height: 230px; height: 230px;" data-mce-tabstop="1" tabindex="-1">'+M(t)+"</div>",flex:1}),{type:"container",html:'<div style="padding: 10px; background: #e3e7f4; height: 100%;" data-mce-tabstop="1" tabindex="-1"><p><b>'+C.translate("Premium plugins:")+'</b></p><ul><li>PowerPaste</li><li>Spell Checker Pro</li><li>Accessibility Checker</li><li>Advanced Code Editor</li><li>Enhanced Media Embed</li><li>Link Checker</li></ul><br /><p style="float: right;"><a href="https://www.tinymce.com/pricing/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">'+C.translate("Learn more...")+"</a></p></div>",flex:1}]};var t},I=tinymce.util.Tools.resolve("tinymce.EditorManager"),j=function(){var e,t,n='<a href="https://www.tinymce.com/docs/changelog/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">TinyMCE '+(e=I.majorVersion,t=I.minorVersion,0===e.indexOf("@")?"X.X.X":e+"."+t)+"</a>";return[{type:"label",html:C.translate(["You are using {0}",n])},{type:"spacer",flex:1},{text:"Close",onclick:function(){this.parent().parent().close()}}]},L=function(e,t){return function(){e.windowManager.open({title:"Help",bodyType:"tabpanel",layout:"flex",body:[T(),E(e)],buttons:j(),onPostRender:function(){this.getEl("title").innerHTML='<img src="'+t+'/img/logo.png" alt="TinyMCE Logo" style="display: inline-block; width: 200px; height: 50px">'}})}},B=function(e,t){e.addCommand("mceHelp",L(e,t))},N=function(e,t){e.addButton("help",{icon:"help",onclick:L(e,t)}),e.addMenuItem("help",{text:"Help",icon:"help",context:"help",onclick:L(e,t)})};e.add("help",function(e,t){N(e,t),B(e,t),e.shortcuts.add("Alt+0","Open help dialog","mceHelp")})}();
\ No newline at end of file
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(){},a=function(e){return function(){return e}};function l(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}var n,r,o,i,c,u=a(!1),s=a(!0),m=function(){return d},d=(n=function(e){return e.isNone()},i={fold:function(e,t){return e()},is:u,isSome:u,isNone:s,getOr:o=function(e){return e},getOrThunk:r=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:o,orThunk:r,map:m,each:t,bind:m,exists:u,forall:s,filter:m,equals:n,equals_:n,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(i),i),f=function(n){var e=a(n),t=function(){return o},r=function(e){return e(n)},o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:s,isNone:u,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return f(e(n))},each:function(e){e(n)},bind:r,exists:r,forall:r,filter:function(e){return e(n)?o:d},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(u,function(e){return t(n,e)})}};return o},p={some:f,none:m,from:function(e){return null===e||e===undefined?d:f(e)}},y=(c="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"===t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===c}),h=(Array.prototype.slice,Array.prototype.indexOf),g=function(e,t){return n=e,r=t,-1<h.call(n,r);var n,r},k=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var a=e[o];r[o]=t(a,o)}return r},v=(y(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.util.I18n")),b=tinymce.util.Tools.resolve("tinymce.Env"),x=b.mac?"\u2318":"Ctrl",A=b.mac?"Ctrl + Alt":"Shift + Alt",C={shortcuts:[{shortcut:x+" + B",action:"Bold"},{shortcut:x+" + I",action:"Italic"},{shortcut:x+" + U",action:"Underline"},{shortcut:x+" + A",action:"Select all"},{shortcut:x+" + Y or "+x+" + Shift + Z",action:"Redo"},{shortcut:x+" + Z",action:"Undo"},{shortcut:A+" + 1",action:"Header 1"},{shortcut:A+" + 2",action:"Header 2"},{shortcut:A+" + 3",action:"Header 3"},{shortcut:A+" + 4",action:"Header 4"},{shortcut:A+" + 5",action:"Header 5"},{shortcut:A+" + 6",action:"Header 6"},{shortcut:A+" + 7",action:"Paragraph"},{shortcut:A+" + 8",action:"Div"},{shortcut:A+" + 9",action:"Address"},{shortcut:"Alt + F9",action:"Focus to menubar"},{shortcut:"Alt + F10",action:"Focus to toolbar"},{shortcut:"Alt + F11",action:"Focus to element path"},{shortcut:"Ctrl + F9",action:"Focus to contextual toolbar"},{shortcut:x+" + K",action:"Insert link (if link plugin activated)"},{shortcut:x+" + S",action:"Save (if save plugin activated)"},{shortcut:x+" + F",action:"Find (if searchreplace plugin activated)"}]},w=function(){var e=k(C.shortcuts,function(e){return'<tr data-mce-tabstop="1" tabindex="-1" aria-label="Action: '+(t=e).action+", Shortcut: "+t.shortcut.replace(/Ctrl/g,"Control")+'"><td>'+v.translate(e.action)+"</td><td>"+e.shortcut+"</td></tr>";var t}).join("");return{title:"Handy Shortcuts",type:"container",style:"overflow-y: auto; overflow-x: hidden; max-height: 250px",items:[{type:"container",html:'<div><table class="mce-table-striped"><thead><th>'+v.translate("Action")+"</th><th>"+v.translate("Shortcut")+"</th></thead>"+e+"</table></div>"}]}},S=Object.keys,O=[{key:"advlist",name:"Advanced List"},{key:"anchor",name:"Anchor"},{key:"autolink",name:"Autolink"},{key:"autoresize",name:"Autoresize"},{key:"autosave",name:"Autosave"},{key:"bbcode",name:"BBCode"},{key:"charmap",name:"Character Map"},{key:"code",name:"Code"},{key:"codesample",name:"Code Sample"},{key:"colorpicker",name:"Color Picker"},{key:"compat3x",name:"3.x Compatibility"},{key:"contextmenu",name:"Context Menu"},{key:"directionality",name:"Directionality"},{key:"emoticons",name:"Emoticons"},{key:"fullpage",name:"Full Page"},{key:"fullscreen",name:"Full Screen"},{key:"help",name:"Help"},{key:"hr",name:"Horizontal Rule"},{key:"image",name:"Image"},{key:"imagetools",name:"Image Tools"},{key:"importcss",name:"Import CSS"},{key:"insertdatetime",name:"Insert Date/Time"},{key:"legacyoutput",name:"Legacy Output"},{key:"link",name:"Link"},{key:"lists",name:"Lists"},{key:"media",name:"Media"},{key:"nonbreaking",name:"Nonbreaking"},{key:"noneditable",name:"Noneditable"},{key:"pagebreak",name:"Page Break"},{key:"paste",name:"Paste"},{key:"preview",name:"Preview"},{key:"print",name:"Print"},{key:"save",name:"Save"},{key:"searchreplace",name:"Search and Replace"},{key:"spellchecker",name:"Spell Checker"},{key:"tabfocus",name:"Tab Focus"},{key:"table",name:"Table"},{key:"template",name:"Template"},{key:"textcolor",name:"Text Color"},{key:"textpattern",name:"Text Pattern"},{key:"toc",name:"Table of Contents"},{key:"visualblocks",name:"Visual Blocks"},{key:"visualchars",name:"Visual Characters"},{key:"wordcount",name:"Word Count"}],T=l(function(e,o){return e.replace(/\$\{([^{}]*)\}/g,function(e,t){var n,r=o[t];return"string"==(n=typeof r)||"number"===n?r.toString():e})},'<a href="${url}" target="_blank" rel="noopener">${name}</a>'),P=function(t,n){return function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return p.some(o)}return p.none()}(O,function(e){return e.key===n}).fold(function(){var e=t.plugins[n].getMetadata;return"function"==typeof e?T(e()):n},function(e){return T({name:e.name,url:"https://www.tinymce.com/docs/plugins/"+e.key})})},_=function(t){var e,n,r,o=(r=S((e=t).plugins),e.settings.forced_plugins===undefined?r:function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var a=e[r];t(a,r)&&n.push(a)}return n}(r,(n=l(g,e.settings.forced_plugins),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}))),a=k(o,function(e){return"<li>"+P(t,e)+"</li>"}),i=a.length,c=a.join("");return"<p><b>"+v.translate(["Plugins installed ({0}):",i])+"</b></p><ul>"+c+"</ul>"},H=function(e){return{title:"Plugins",type:"container",style:"overflow-y: auto; overflow-x: hidden;",layout:"flex",padding:10,spacing:10,items:[(t=e,{type:"container",html:'<div style="overflow-y: auto; overflow-x: hidden; max-height: 230px; height: 230px;" data-mce-tabstop="1" tabindex="-1">'+_(t)+"</div>",flex:1}),{type:"container",html:'<div style="padding: 10px; background: #e3e7f4; height: 100%;" data-mce-tabstop="1" tabindex="-1"><p><b>'+v.translate("Premium plugins:")+'</b></p><ul><li>PowerPaste</li><li>Spell Checker Pro</li><li>Accessibility Checker</li><li>Advanced Code Editor</li><li>Enhanced Media Embed</li><li>Link Checker</li></ul><br /><p style="float: right;"><a href="https://www.tinymce.com/pricing/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">'+v.translate("Learn more...")+"</a></p></div>",flex:1}]};var t},F=tinymce.util.Tools.resolve("tinymce.EditorManager"),M=function(){var e,t,n='<a href="https://www.tinymce.com/docs/changelog/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">TinyMCE '+(e=F.majorVersion,t=F.minorVersion,0===e.indexOf("@")?"X.X.X":e+"."+t)+"</a>";return[{type:"label",html:v.translate(["You are using {0}",n])},{type:"spacer",flex:1},{text:"Close",onclick:function(){this.parent().parent().close()}}]},E=function(e,t){return function(){e.windowManager.open({title:"Help",bodyType:"tabpanel",layout:"flex",body:[w(),H(e)],buttons:M(),onPostRender:function(){this.getEl("title").innerHTML='<img src="'+t+'/img/logo.png" alt="TinyMCE Logo" style="display: inline-block; width: 200px; height: 50px">'}})}},I=function(e,t){e.addCommand("mceHelp",E(e,t))},j=function(e,t){e.addButton("help",{icon:"help",onclick:E(e,t)}),e.addMenuItem("help",{text:"Help",icon:"help",context:"help",onclick:E(e,t)})};e.add("help",function(e,t){j(e,t),I(e,t),e.shortcuts.add("Alt+0","Open help dialog","mceHelp")})}();
\ No newline at end of file
-!function(l){"use strict";var i,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(e){return!1!==e.settings.image_dimensions},u=function(e){return!0===e.settings.image_advtab},m=function(e){return e.getParam("image_prepend_url","")},n=function(e){return e.getParam("image_class_list")},r=function(e){return!1!==e.settings.image_description},a=function(e){return!0===e.settings.image_title},o=function(e){return!0===e.settings.image_caption},c=function(e){return e.getParam("image_list",!1)},s=function(e){return e.getParam("images_upload_url",!1)},g=function(e){return e.getParam("images_upload_handler",!1)},f=function(e){return e.getParam("images_upload_url")},p=function(e){return e.getParam("images_upload_handler")},h=function(e){return e.getParam("images_upload_base_path")},v=function(e){return e.getParam("images_upload_credentials")},b="undefined"!=typeof l.window?l.window:Function("return this;")(),y=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:b,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},x={getOrDie:function(e,t){var n=y(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n}},w=tinymce.util.Tools.resolve("tinymce.util.Promise"),C=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=tinymce.util.Tools.resolve("tinymce.util.XHR"),N=function(e,t){return Math.max(parseInt(e,10),parseInt(t,10))},_=function(e,n){var r=l.document.createElement("img");function t(e,t){r.parentNode&&r.parentNode.removeChild(r),n({width:e,height:t})}r.onload=function(){t(N(r.width,r.clientWidth),N(r.height,r.clientHeight))},r.onerror=function(){t(0,0)};var a=r.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left="0px",a.width=a.height="auto",l.document.body.appendChild(r),r.src=e},T=function(e,a,t){return function n(e,r){return r=r||[],C.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=n(e.menu):(t.value=e.value,a(t)),r.push(t)}),r}(e,t||[])},A=function(e){return e&&(e=e.replace(/px$/,"")),e},R=function(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e},I=function(e){if(e.margin){var t=e.margin.split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e},t=function(e,t){var n=c(e);"string"==typeof n?S.send({url:n,success:function(e){t(JSON.parse(e))}}):"function"==typeof n?n(t):t(n)},O=function(e,t,n){function r(){n.onload=n.onerror=null,e.selection&&(e.selection.select(n),e.nodeChanged())}n.onload=function(){t.width||t.height||!d(e)||e.dom.setAttribs(n,{width:n.clientWidth,height:n.clientHeight}),r()},n.onerror=r},L=function(r){return new w(function(e,t){var n=new(x.getOrDie("FileReader"));n.onload=function(){e(n.result)},n.onerror=function(){t(n.error.message)},n.readAsDataURL(r)})},P=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),U=Object.prototype.hasOwnProperty,E=(i=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var a=e[r];for(var o in a)U.call(a,o)&&(n[o]=i(n[o],a[o]))}return n}),k=P.DOM,M=function(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?A(e.style.marginLeft):""},D=function(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?A(e.style.marginTop):""},z=function(e){return e.style.borderWidth?A(e.style.borderWidth):""},B=function(e,t){return e.hasAttribute(t)?e.getAttribute(t):""},H=function(e,t){return e.style[t]?e.style[t]:""},j=function(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName},F=function(e,t,n){e.setAttribute(t,n)},W=function(e){var t,n,r,a;j(e)?(a=(r=e).parentNode,k.insertAfter(r,a),k.remove(a)):(t=e,n=k.create("figure",{"class":"image"}),k.insertAfter(n,t),n.appendChild(t),n.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable="false")},J=function(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")},V=function(e,r){return function(e,t,n){e.style[t]?(e.style[t]=R(n),J(e,r)):F(e,t,n)}},G=function(e,t){return e.style[t]?A(e.style[t]):B(e,t)},$=function(e,t){var n=R(t);e.style.marginLeft=n,e.style.marginRight=n},X=function(e,t){var n=R(t);e.style.marginTop=n,e.style.marginBottom=n},q=function(e,t){var n=R(t);e.style.borderWidth=n},K=function(e,t){e.style.borderStyle=t},Q=function(e){return"FIGURE"===e.nodeName},Y=function(e,t){var n=l.document.createElement("img");return F(n,"style",t.style),(M(n)||""!==t.hspace)&&$(n,t.hspace),(D(n)||""!==t.vspace)&&X(n,t.vspace),(z(n)||""!==t.border)&&q(n,t.border),(H(n,"borderStyle")||""!==t.borderStyle)&&K(n,t.borderStyle),e(n.getAttribute("style"))},Z=function(e,t){return{src:B(t,"src"),alt:B(t,"alt"),title:B(t,"title"),width:G(t,"width"),height:G(t,"height"),"class":B(t,"class"),style:e(B(t,"style")),caption:j(t),hspace:M(t),vspace:D(t),border:z(t),borderStyle:H(t,"borderStyle")}},ee=function(e,t,n,r,a){n[r]!==t[r]&&a(e,r,n[r])},te=function(r,a){return function(e,t,n){r(e,n),J(e,a)}},ne=function(e,t,n){var r=Z(e,n);ee(n,r,t,"caption",function(e,t,n){return W(e)}),ee(n,r,t,"src",F),ee(n,r,t,"alt",F),ee(n,r,t,"title",F),ee(n,r,t,"width",V(0,e)),ee(n,r,t,"height",V(0,e)),ee(n,r,t,"class",F),ee(n,r,t,"style",te(function(e,t){return F(e,"style",t)},e)),ee(n,r,t,"hspace",te($,e)),ee(n,r,t,"vspace",te(X,e)),ee(n,r,t,"border",te(q,e)),ee(n,r,t,"borderStyle",te(K,e))},re=function(e,t){var n=e.dom.styles.parse(t),r=I(n),a=e.dom.styles.parse(e.dom.styles.serialize(r));return e.dom.styles.serialize(a)},ae=function(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||t.getAttribute("data-mce-object")||t.getAttribute("data-mce-placeholder"))?null:t},oe=function(t,e){var n=t.dom,r=n.getParent(e.parentNode,function(e){return t.schema.getTextBlockElements()[e.nodeName]},t.getBody());return r?n.split(r,e):e},ie=function(t){var e=ae(t);return e?Z(function(e){return re(t,e)},e):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}},le=function(t,e){var n=function(e,t){var n=l.document.createElement("img");if(ne(e,E(t,{caption:!1}),n),F(n,"alt",t.alt),t.caption){var r=k.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),r.contentEditable="false",r}return n}(function(e){return re(t,e)},e);t.dom.setAttrib(n,"data-mce-id","__mcenew"),t.focus(),t.selection.setContent(n.outerHTML);var r=t.dom.select('*[data-mce-id="__mcenew"]')[0];if(t.dom.setAttrib(r,"data-mce-id",null),Q(r)){var a=oe(t,r);t.selection.select(a)}else t.selection.select(r)},ue=function(e,t){var n=ae(e);n?t.src?function(t,e){var n,r=ae(t);if(ne(function(e){return re(t,e)},e,r),n=r,t.dom.setAttrib(n,"src",n.getAttribute("src")),Q(r.parentNode)){var a=r.parentNode;oe(t,a),t.selection.select(r.parentNode)}else t.selection.select(r),O(t,e,r)}(e,t):function(e,t){if(t){var n=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(n),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}}(e,n):t.src&&le(e,t)},ce=function(n,r){r.find("#style").each(function(e){var t=Y(function(e){return re(n,e)},E({src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""},r.toJSON()));e.value(t)})},se=function(t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(o=t,function(e){var t=o.dom,n=e.control.rootControl;if(u(o)){var r=n.toJSON(),a=t.parseStyle(r.style);n.find("#vspace").value(""),n.find("#hspace").value(""),((a=I(a))["margin-top"]&&a["margin-bottom"]||a["margin-right"]&&a["margin-left"])&&(a["margin-top"]===a["margin-bottom"]?n.find("#vspace").value(A(a["margin-top"])):n.find("#vspace").value(""),a["margin-right"]===a["margin-left"]?n.find("#hspace").value(A(a["margin-right"])):n.find("#hspace").value("")),a["border-width"]?n.find("#border").value(A(a["border-width"])):n.find("#border").value(""),a["border-style"]?n.find("#borderStyle").value(a["border-style"]):n.find("#borderStyle").value(""),n.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(a))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(e){ce(t,e.control.rootControl)}},items:[{label:"Vertical space",name:"vspace"},{label:"Border width",name:"border"},{label:"Horizontal space",name:"hspace"},{label:"Border style",type:"listbox",name:"borderStyle",width:90,maxWidth:90,onselect:function(e){ce(t,e.control.rootControl)},values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]};var o},de=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},me=function(e,t){var n=e.find("#width")[0],r=e.find("#height")[0],a=e.find("#constrain")[0];n&&r&&a&&t(n,r,a.checked())},ge=function(e,t,n){var r=e.state.get("oldVal"),a=t.state.get("oldVal"),o=e.value(),i=t.value();n&&r&&a&&o&&i&&(o!==r?(i=Math.round(o/r*i),isNaN(i)||t.value(i)):(o=Math.round(i/a*o),isNaN(o)||e.value(o))),de(e,t)},fe=function(e){me(e,ge)},pe=function(){var e=function(e){fe(e.control.rootControl)};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},he=function(e){me(e,de)},ve=fe,be=function(e){e.meta=e.control.rootControl.toJSON()},ye=function(s,e){var t=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(e){var t,n,r,a,o,i,l,u,c;n=s,i=(t=e).meta||{},l=t.control,u=l.rootControl,(c=u.find("#image-list")[0])&&c.value(n.convertURL(l.value(),"src")),C.each(i,function(e,t){u.find("#"+t).value(e)}),i.width||i.height||(r=n.convertURL(l.value(),"src"),a=m(n),o=new RegExp("^(?:[a-z]+:)?//","i"),a&&!o.test(r)&&r.substring(0,a.length)!==a&&(r=a+r),l.value(r),_(n.documentBaseURI.toAbsolute(l.value()),function(e){e.width&&e.height&&d(n)&&(u.find("#width").value(e.width),u.find("#height").value(e.height),he(u))}))},onbeforecall:be},e];return r(s)&&t.push({name:"alt",type:"textbox",label:"Image description"}),a(s)&&t.push({name:"title",type:"textbox",label:"Image Title"}),d(s)&&t.push(pe()),n(s)&&t.push({name:"class",type:"listbox",label:"Class",values:T(n(s),function(e){e.value&&(e.textStyle=function(){return s.formatter.getCssText({inline:"img",classes:[e.value]})})})}),o(s)&&t.push({name:"caption",type:"checkbox",label:"Caption"}),t},xe=function(e,t){return{title:"General",type:"form",items:ye(e,t)}},we=ye,Ce=function(){return x.getOrDie("URL")},Se=function(e){return Ce().createObjectURL(e)},Ne=function(e){Ce().revokeObjectURL(e)},_e=tinymce.util.Tools.resolve("tinymce.ui.Factory"),Te=function(){};function Ae(i){var t=function(e,r,a,t){var o,n;(o=new(x.getOrDie("XMLHttpRequest"))).open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){t(e.loaded/e.total*100)},o.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e,t,n;o.status<200||300<=o.status?a("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?r((t=i.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):a("Invalid JSON: "+o.responseText)},(n=new l.FormData).append("file",e.blob(),e.filename()),o.send(n)};return i=C.extend({credentials:!1,handler:t},i),{upload:function(e){return i.url||i.handler!==t?(r=e,a=i.handler,new w(function(e,t){try{a(r,e,t,Te)}catch(n){t(n.message)}})):w.reject("Upload url missing from the settings.");var r,a}}}var Re=function(u){return function(e){var t=_e.get("Throbber"),n=e.control.rootControl,r=new t(n.getEl()),a=e.control.value(),o=Se(a),i=Ae({url:f(u),basePath:h(u),credentials:v(u),handler:p(u)}),l=function(){r.hide(),Ne(o)};return r.show(),L(a).then(function(e){var t=u.editorUpload.blobCache.create({blob:a,blobUri:o,name:a.name?a.name.replace(/\.[^\.]+$/,""):null,base64:e.split(",")[1]});return i.upload(t).then(function(e){var t=n.find("#src");return t.value(e),n.find("tabpanel")[0].activateTab(0),t.fire("change"),l(),e})})["catch"](function(e){u.windowManager.alert(e),l()})}},Ie=".jpg,.jpeg,.png,.gif",Oe=function(e){return{title:"Upload",type:"form",layout:"flex",direction:"column",align:"stretch",padding:"20 20 20 20",items:[{type:"container",layout:"flex",direction:"column",align:"center",spacing:10,items:[{text:"Browse for an image",type:"browsebutton",accept:Ie,onchange:Re(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:Ie,height:100,onchange:Re(e)}]}};function Le(r){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return r.apply(null,n)}}var Pe=function(t,e){var n=e.control.getRoot();ve(n),t.undoManager.transact(function(){var e=E(ie(t),n.toJSON());ue(t,e)}),t.editorUpload.uploadImagesAuto()};function Ue(o){function e(e){var n,t,r=ie(o);if(e&&(t={type:"listbox",label:"Image list",name:"image-list",values:T(e,function(e){e.value=o.convertURL(e.value||e.url,"src")},[{text:"None",value:""}]),value:r.src&&o.convertURL(r.src,"src"),onselect:function(e){var t=n.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),n.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){t=this}}),u(o)||s(o)||g(o)){var a=[xe(o,t)];u(o)&&a.push(se(o)),(s(o)||g(o))&&a.push(Oe(o)),n=o.windowManager.open({title:"Insert/edit image",data:r,bodyType:"tabpanel",body:a,onSubmit:Le(Pe,o)})}else n=o.windowManager.open({title:"Insert/edit image",data:r,body:we(o,t),onSubmit:Le(Pe,o)});he(n)}return{open:function(){t(o,e)}}}var Ee=function(e){e.addCommand("mceImage",Ue(e).open)},ke=function(o){return function(e){for(var t,n,r=e.length,a=function(e){e.attr("contenteditable",o?"true":null)};r--;)t=e[r],(n=t.attr("class"))&&/\bimage\b/.test(n)&&(t.attr("contenteditable",o?"false":null),C.each(t.getAll("figcaption"),a))}},Me=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",ke(!0)),e.serializer.addNodeFilter("figure",ke(!1))})},De=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:Ue(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:Ue(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){Me(e),De(e),Ee(e)})}(window);
\ No newline at end of file
+!function(l){"use strict";var i,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(e){return!1!==e.settings.image_dimensions},u=function(e){return!0===e.settings.image_advtab},m=function(e){return e.getParam("image_prepend_url","")},n=function(e){return e.getParam("image_class_list")},r=function(e){return!1!==e.settings.image_description},a=function(e){return!0===e.settings.image_title},o=function(e){return!0===e.settings.image_caption},c=function(e){return e.getParam("image_list",!1)},s=function(e){return e.getParam("images_upload_url",!1)},g=function(e){return e.getParam("images_upload_handler",!1)},f=function(e){return e.getParam("images_upload_url")},p=function(e){return e.getParam("images_upload_handler")},h=function(e){return e.getParam("images_upload_base_path")},v=function(e){return e.getParam("images_upload_credentials")},b="undefined"!=typeof l.window?l.window:Function("return this;")(),y=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:b,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},x={getOrDie:function(e,t){var n=y(e,t);if(n===undefined||null===n)throw new Error(e+" not available on this browser");return n}},w=tinymce.util.Tools.resolve("tinymce.util.Promise"),C=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=tinymce.util.Tools.resolve("tinymce.util.XHR"),N=function(e,t){return Math.max(parseInt(e,10),parseInt(t,10))},_=function(e,n){var r=l.document.createElement("img");function t(e,t){r.parentNode&&r.parentNode.removeChild(r),n({width:e,height:t})}r.onload=function(){t(N(r.width,r.clientWidth),N(r.height,r.clientHeight))},r.onerror=function(){t(0,0)};var a=r.style;a.visibility="hidden",a.position="fixed",a.bottom=a.left="0px",a.width=a.height="auto",l.document.body.appendChild(r),r.src=e},T=function(e,a,t){return function n(e,r){return r=r||[],C.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=n(e.menu):(t.value=e.value,a(t)),r.push(t)}),r}(e,t||[])},A=function(e){return e&&(e=e.replace(/px$/,"")),e},R=function(e){return 0<e.length&&/^[0-9]+$/.test(e)&&(e+="px"),e},I=function(e){if(e.margin){var t=e.margin.split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e},t=function(e,t){var n=c(e);"string"==typeof n?S.send({url:n,success:function(e){t(JSON.parse(e))}}):"function"==typeof n?n(t):t(n)},O=function(e,t,n){function r(){n.onload=n.onerror=null,e.selection&&(e.selection.select(n),e.nodeChanged())}n.onload=function(){t.width||t.height||!d(e)||e.dom.setAttribs(n,{width:n.clientWidth,height:n.clientHeight}),r()},n.onerror=r},L=function(r){return new w(function(e,t){var n=new(x.getOrDie("FileReader"));n.onload=function(){e(n.result)},n.onerror=function(){t(n.error.message)},n.readAsDataURL(r)})},P=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),U=Object.prototype.hasOwnProperty,E=(i=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var a=e[r];for(var o in a)U.call(a,o)&&(n[o]=i(n[o],a[o]))}return n}),k=P.DOM,M=function(e){return e.style.marginLeft&&e.style.marginRight&&e.style.marginLeft===e.style.marginRight?A(e.style.marginLeft):""},D=function(e){return e.style.marginTop&&e.style.marginBottom&&e.style.marginTop===e.style.marginBottom?A(e.style.marginTop):""},z=function(e){return e.style.borderWidth?A(e.style.borderWidth):""},B=function(e,t){return e.hasAttribute(t)?e.getAttribute(t):""},H=function(e,t){return e.style[t]?e.style[t]:""},j=function(e){return null!==e.parentNode&&"FIGURE"===e.parentNode.nodeName},F=function(e,t,n){e.setAttribute(t,n)},W=function(e){var t,n,r,a;j(e)?(a=(r=e).parentNode,k.insertAfter(r,a),k.remove(a)):(t=e,n=k.create("figure",{"class":"image"}),k.insertAfter(n,t),n.appendChild(t),n.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable="false")},J=function(e,t){var n=e.getAttribute("style"),r=t(null!==n?n:"");0<r.length?(e.setAttribute("style",r),e.setAttribute("data-mce-style",r)):e.removeAttribute("style")},V=function(e,r){return function(e,t,n){e.style[t]?(e.style[t]=R(n),J(e,r)):F(e,t,n)}},G=function(e,t){return e.style[t]?A(e.style[t]):B(e,t)},$=function(e,t){var n=R(t);e.style.marginLeft=n,e.style.marginRight=n},X=function(e,t){var n=R(t);e.style.marginTop=n,e.style.marginBottom=n},q=function(e,t){var n=R(t);e.style.borderWidth=n},K=function(e,t){e.style.borderStyle=t},Q=function(e){return"FIGURE"===e.nodeName},Y=function(e,t){var n=l.document.createElement("img");return F(n,"style",t.style),(M(n)||""!==t.hspace)&&$(n,t.hspace),(D(n)||""!==t.vspace)&&X(n,t.vspace),(z(n)||""!==t.border)&&q(n,t.border),(H(n,"borderStyle")||""!==t.borderStyle)&&K(n,t.borderStyle),e(n.getAttribute("style"))},Z=function(e,t){return{src:B(t,"src"),alt:B(t,"alt"),title:B(t,"title"),width:G(t,"width"),height:G(t,"height"),"class":B(t,"class"),style:e(B(t,"style")),caption:j(t),hspace:M(t),vspace:D(t),border:z(t),borderStyle:H(t,"borderStyle")}},ee=function(e,t,n,r,a){n[r]!==t[r]&&a(e,r,n[r])},te=function(r,a){return function(e,t,n){r(e,n),J(e,a)}},ne=function(e,t,n){var r=Z(e,n);ee(n,r,t,"caption",function(e,t,n){return W(e)}),ee(n,r,t,"src",F),ee(n,r,t,"alt",F),ee(n,r,t,"title",F),ee(n,r,t,"width",V(0,e)),ee(n,r,t,"height",V(0,e)),ee(n,r,t,"class",F),ee(n,r,t,"style",te(function(e,t){return F(e,"style",t)},e)),ee(n,r,t,"hspace",te($,e)),ee(n,r,t,"vspace",te(X,e)),ee(n,r,t,"border",te(q,e)),ee(n,r,t,"borderStyle",te(K,e))},re=function(e,t){var n=e.dom.styles.parse(t),r=I(n),a=e.dom.styles.parse(e.dom.styles.serialize(r));return e.dom.styles.serialize(a)},ae=function(e){var t=e.selection.getNode(),n=e.dom.getParent(t,"figure.image");return n?e.dom.select("img",n)[0]:t&&("IMG"!==t.nodeName||t.getAttribute("data-mce-object")||t.getAttribute("data-mce-placeholder"))?null:t},oe=function(t,e){var n=t.dom,r=n.getParent(e.parentNode,function(e){return t.schema.getTextBlockElements()[e.nodeName]},t.getBody());return r?n.split(r,e):e},ie=function(t){var e=ae(t);return e?Z(function(e){return re(t,e)},e):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}},le=function(t,e){var n=function(e,t){var n=l.document.createElement("img");if(ne(e,E(t,{caption:!1}),n),F(n,"alt",t.alt),t.caption){var r=k.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(k.create("figcaption",{contentEditable:!0},"Caption")),r.contentEditable="false",r}return n}(function(e){return re(t,e)},e);t.dom.setAttrib(n,"data-mce-id","__mcenew"),t.focus(),t.selection.setContent(n.outerHTML);var r=t.dom.select('*[data-mce-id="__mcenew"]')[0];if(t.dom.setAttrib(r,"data-mce-id",null),Q(r)){var a=oe(t,r);t.selection.select(a)}else t.selection.select(r)},ue=function(e,t){var n=ae(e);n?t.src?function(t,e){var n,r=ae(t);if(ne(function(e){return re(t,e)},e,r),n=r,t.dom.setAttrib(n,"src",n.getAttribute("src")),Q(r.parentNode)){var a=r.parentNode;oe(t,a),t.selection.select(r.parentNode)}else t.selection.select(r),O(t,e,r)}(e,t):function(e,t){if(t){var n=e.dom.is(t.parentNode,"figure.image")?t.parentNode:t;e.dom.remove(n),e.focus(),e.nodeChanged(),e.dom.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}}(e,n):t.src&&le(e,t)},ce=function(n,r){r.find("#style").each(function(e){var t=Y(function(e){return re(n,e)},E({src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""},r.toJSON()));e.value(t)})},se=function(t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(o=t,function(e){var t=o.dom,n=e.control.rootControl;if(u(o)){var r=n.toJSON(),a=t.parseStyle(r.style);n.find("#vspace").value(""),n.find("#hspace").value(""),((a=I(a))["margin-top"]&&a["margin-bottom"]||a["margin-right"]&&a["margin-left"])&&(a["margin-top"]===a["margin-bottom"]?n.find("#vspace").value(A(a["margin-top"])):n.find("#vspace").value(""),a["margin-right"]===a["margin-left"]?n.find("#hspace").value(A(a["margin-right"])):n.find("#hspace").value("")),a["border-width"]?n.find("#border").value(A(a["border-width"])):n.find("#border").value(""),a["border-style"]?n.find("#borderStyle").value(a["border-style"]):n.find("#borderStyle").value(""),n.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(a))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(e){ce(t,e.control.rootControl)}},items:[{label:"Vertical space",name:"vspace"},{label:"Border width",name:"border"},{label:"Horizontal space",name:"hspace"},{label:"Border style",type:"listbox",name:"borderStyle",width:90,maxWidth:90,onselect:function(e){ce(t,e.control.rootControl)},values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]};var o},de=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},me=function(e,t){var n=e.find("#width")[0],r=e.find("#height")[0],a=e.find("#constrain")[0];n&&r&&a&&t(n,r,a.checked())},ge=function(e,t,n){var r=e.state.get("oldVal"),a=t.state.get("oldVal"),o=e.value(),i=t.value();n&&r&&a&&o&&i&&(o!==r?(i=Math.round(o/r*i),isNaN(i)||t.value(i)):(o=Math.round(i/a*o),isNaN(o)||e.value(o))),de(e,t)},fe=function(e){me(e,ge)},pe=function(){var e=function(e){fe(e.control.rootControl)};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},he=function(e){me(e,de)},ve=fe,be=function(e){e.meta=e.control.rootControl.toJSON()},ye=function(s,e){var t=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(e){var t,n,r,a,o,i,l,u,c;n=s,i=(t=e).meta||{},l=t.control,u=l.rootControl,(c=u.find("#image-list")[0])&&c.value(n.convertURL(l.value(),"src")),C.each(i,function(e,t){u.find("#"+t).value(e)}),i.width||i.height||(r=n.convertURL(l.value(),"src"),a=m(n),o=new RegExp("^(?:[a-z]+:)?//","i"),a&&!o.test(r)&&r.substring(0,a.length)!==a&&(r=a+r),l.value(r),_(n.documentBaseURI.toAbsolute(l.value()),function(e){e.width&&e.height&&d(n)&&(u.find("#width").value(e.width),u.find("#height").value(e.height),he(u))}))},onbeforecall:be},e];return r(s)&&t.push({name:"alt",type:"textbox",label:"Image description"}),a(s)&&t.push({name:"title",type:"textbox",label:"Image Title"}),d(s)&&t.push(pe()),n(s)&&t.push({name:"class",type:"listbox",label:"Class",values:T(n(s),function(e){e.value&&(e.textStyle=function(){return s.formatter.getCssText({inline:"img",classes:[e.value]})})})}),o(s)&&t.push({name:"caption",type:"checkbox",label:"Caption"}),t},xe=function(e,t){return{title:"General",type:"form",items:ye(e,t)}},we=ye,Ce=function(){return x.getOrDie("URL")},Se=function(e){return Ce().createObjectURL(e)},Ne=function(e){Ce().revokeObjectURL(e)},_e=tinymce.util.Tools.resolve("tinymce.ui.Factory"),Te=function(){};function Ae(i){var t=function(e,r,a,t){var o,n;(o=new(x.getOrDie("XMLHttpRequest"))).open("POST",i.url),o.withCredentials=i.credentials,o.upload.onprogress=function(e){t(e.loaded/e.total*100)},o.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e,t,n;o.status<200||300<=o.status?a("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?r((t=i.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):a("Invalid JSON: "+o.responseText)},(n=new l.FormData).append("file",e.blob(),e.filename()),o.send(n)};return i=C.extend({credentials:!1,handler:t},i),{upload:function(e){return i.url||i.handler!==t?(r=e,a=i.handler,new w(function(e,t){try{a(r,e,t,Te)}catch(n){t(n.message)}})):w.reject("Upload url missing from the settings.");var r,a}}}var Re=function(u){return function(e){var t=_e.get("Throbber"),n=e.control.rootControl,r=new t(n.getEl()),a=e.control.value(),o=Se(a),i=Ae({url:f(u),basePath:h(u),credentials:v(u),handler:p(u)}),l=function(){r.hide(),Ne(o)};return r.show(),L(a).then(function(e){var t=u.editorUpload.blobCache.create({blob:a,blobUri:o,name:a.name?a.name.replace(/\.[^\.]+$/,""):null,base64:e.split(",")[1]});return i.upload(t).then(function(e){var t=n.find("#src");return t.value(e),n.find("tabpanel")[0].activateTab(0),t.fire("change"),l(),e})})["catch"](function(e){u.windowManager.alert(e),l()})}},Ie=".jpg,.jpeg,.png,.gif",Oe=function(e){return{title:"Upload",type:"form",layout:"flex",direction:"column",align:"stretch",padding:"20 20 20 20",items:[{type:"container",layout:"flex",direction:"column",align:"center",spacing:10,items:[{text:"Browse for an image",type:"browsebutton",accept:Ie,onchange:Re(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:Ie,height:100,onchange:Re(e)}]}};function Le(r){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return r.apply(null,n)}}var Pe=function(t,e){var n=e.control.getRoot();ve(n),t.undoManager.transact(function(){var e=E(ie(t),n.toJSON());ue(t,e)}),t.editorUpload.uploadImagesAuto()};function Ue(o){function e(e){var n,t,r=ie(o);if(e&&(t={type:"listbox",label:"Image list",name:"image-list",values:T(e,function(e){e.value=o.convertURL(e.value||e.url,"src")},[{text:"None",value:""}]),value:r.src&&o.convertURL(r.src,"src"),onselect:function(e){var t=n.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),n.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){t=this}}),u(o)||s(o)||g(o)){var a=[xe(o,t)];u(o)&&a.push(se(o)),(s(o)||g(o))&&a.push(Oe(o)),n=o.windowManager.open({title:"Insert/edit image",data:r,bodyType:"tabpanel",body:a,onSubmit:Le(Pe,o)})}else n=o.windowManager.open({title:"Insert/edit image",data:r,body:we(o,t),onSubmit:Le(Pe,o)});he(n)}return{open:function(){t(o,e)}}}var Ee=function(e){e.addCommand("mceImage",Ue(e).open)},ke=function(o){return function(e){for(var t,n,r=e.length,a=function(e){e.attr("contenteditable",o?"true":null)};r--;)t=e[r],(n=t.attr("class"))&&/\bimage\b/.test(n)&&(t.attr("contenteditable",o?"false":null),C.each(t.getAll("figcaption"),a))}},Me=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",ke(!0)),e.serializer.addNodeFilter("figure",ke(!1))})},De=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:Ue(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:Ue(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){Me(e),De(e),Ee(e)})}(window);
\ No newline at end of file
-!function(s){"use strict";var r=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return r(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),$=tinymce.util.Tools.resolve("tinymce.util.Tools");function n(t,e){return i(s.document.createElement("canvas"),t,e)}function o(t){return t.getContext("2d")}function i(t,e,n){return t.width=e,t.height=n,t}var h={create:n,clone:function(t){var e;return o(e=n(t.width,t.height)).drawImage(t,0,0),e},resize:i,get2dContext:o,get3dContext:function(t){var e=null;try{e=t.getContext("webgl")||t.getContext("experimental-webgl")}catch(n){}return e||(e=null),e}},p={getWidth:function(t){return t.naturalWidth||t.width},getHeight:function(t){return t.naturalHeight||t.height}},g=window.Promise?window.Promise:function(){var t=function(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],l(t,r(o,this),r(a,this))},e=t.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(t){s.setTimeout(t,1)};function r(t,e){return function(){t.apply(e,arguments)}}var n=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function i(r){var o=this;null!==this._state?e(function(){var t=o._state?r.onFulfilled:r.onRejected;if(null!==t){var e;try{e=t(o._value)}catch(n){return void r.reject(n)}r.resolve(e)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function o(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void l(r(e,t),r(o,this),r(a,this))}this._state=!0,this._value=t,u.call(this)}catch(n){a.call(this,n)}}function a(t){this._state=!1,this._value=t,u.call(this)}function u(){for(var t=0,e=this._deferreds.length;t<e;t++)i.call(this,this._deferreds[t]);this._deferreds=null}function c(t,e,n,r){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.resolve=n,this.reject=r}function l(t,e,n){var r=!1;try{t(function(t){r||(r=!0,e(t))},function(t){r||(r=!0,n(t))})}catch(o){if(r)return;r=!0,n(o)}}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype.then=function(n,r){var o=this;return new t(function(t,e){i.call(o,new c(n,r,t,e))})},t.all=function(){var c=Array.prototype.slice.call(1===arguments.length&&n(arguments[0])?arguments[0]:arguments);return new t(function(o,i){if(0===c.length)return o([]);var a=c.length;function u(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){u(e,t)},i)}c[e]=t,0==--a&&o(c)}catch(r){i(r)}}for(var t=0;t<c.length;t++)u(t,c[t])})},t.resolve=function(e){return e&&"object"==typeof e&&e.constructor===t?e:new t(function(t){t(e)})},t.reject=function(n){return new t(function(t,e){e(n)})},t.race=function(o){return new t(function(t,e){for(var n=0,r=o.length;n<r;n++)o[n].then(t,e)})},t}(),a=function(t){return function(){return t}};function u(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}var c,l,f,d,m=a(!1),y=a(!0),v=m,b=y,w=function(){return x},x=(d={fold:function(t,e){return t()},is:v,isSome:v,isNone:b,getOr:f=function(t){return t},getOrThunk:l=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:f,orThunk:l,map:w,ap:w,each:function(){},bind:w,flatten:w,exists:v,forall:b,filter:w,equals:c=function(t){return t.isNone()},equals_:c,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(d),d),I=function(n){var t=function(){return n},e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:b,isNone:v,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return I(t(n))},ap:function(t){return t.fold(w,function(t){return I(t(n))})},each:function(t){t(n)},bind:r,flatten:t,exists:r,forall:r,filter:function(t){return t(n)?o:x},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(v,function(t){return e(n,t)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},T={some:I,none:w,from:function(t){return null===t||t===undefined?x:I(t)}},R="undefined"!=typeof s.window?s.window:Function("return this;")(),S=function(t,e){return function(t,e){for(var n=e!==undefined&&null!==e?e:R,r=0;r<t.length&&n!==undefined&&null!==n;++r)n=n[t[r]];return n}(t.split("."),e)},O={getOrDie:function(t,e){var n=S(t,e);if(n===undefined||null===n)throw t+" not available on this browser";return n}};function F(){return new(O.getOrDie("FileReader"))}var C={atob:function(t){return O.getOrDie("atob")(t)},requestAnimationFrame:function(t){O.getOrDie("requestAnimationFrame")(t)}};function E(u){return new g(function(t,e){var n=s.URL.createObjectURL(u),r=new s.Image,o=function(){r.removeEventListener("load",i),r.removeEventListener("error",a)};function i(){o(),t(r)}function a(){o(),e("Unable to load data of type "+u.type+": "+n)}r.addEventListener("load",i),r.addEventListener("error",a),r.src=n,r.complete&&i()})}function D(r){return new g(function(t,n){var e=new s.XMLHttpRequest;e.open("GET",r,!0),e.responseType="blob",e.onload=function(){200==this.status&&t(this.response)},e.onerror=function(){var t,e=this;n(0===this.status?((t=new Error("No access to download image")).code=18,t.name="SecurityError",t):new Error("Error "+e.status+" downloading image"))},e.send()})}function A(t){var e=t.split(","),n=/data:([^;]+)/.exec(e[0]);if(!n)return T.none();for(var r,o,i,a=n[1],u=e[1],c=C.atob(u),l=c.length,s=Math.ceil(l/1024),f=new Array(s),d=0;d<s;++d){for(var h=1024*d,p=Math.min(h+1024,l),g=new Array(p-h),m=h,y=0;m<p;++y,++m)g[y]=c[m].charCodeAt(0);f[d]=(r=g,new(O.getOrDie("Uint8Array"))(r))}return T.some((o=f,i={type:a},new(O.getOrDie("Blob"))(o,i)))}function _(n){return new g(function(t,e){A(n).fold(function(){e("uri is not base64: "+n)},t)})}function k(n){return new g(function(t){var e=F();e.onloadend=function(){t(e.result)},e.readAsDataURL(n)})}var L={blobToImage:E,imageToBlob:function(t){var e=t.src;return 0===e.indexOf("data:")?_(e):D(e)},blobToArrayBuffer:function(n){return new g(function(t){var e=F();e.onloadend=function(){t(e.result)},e.readAsArrayBuffer(n)})},blobToDataUri:k,blobToBase64:function(t){return k(t).then(function(t){return t.split(",")[1]})},dataUriToBlobSync:A,canvasToBlob:function(t,n,r){return n=n||"image/png",s.HTMLCanvasElement.prototype.toBlob?new g(function(e){t.toBlob(function(t){e(t)},n,r)}):_(t.toDataURL(n,r))},canvasToDataURL:function(t,e,n){return e=e||"image/png",t.then(function(t){return t.toDataURL(e,n)})},blobToCanvas:function(t){return E(t).then(function(t){var e,n;return e=t,s.URL.revokeObjectURL(e.src),n=h.create(p.getWidth(t),p.getHeight(t)),h.get2dContext(n).drawImage(t,0,0),n})},uriToBlob:function(t){return 0===t.indexOf("blob:")?D(t):0===t.indexOf("data:")?_(t):null}},P=function(t){return L.blobToImage(t)},B=function(t){return L.imageToBlob(t)};function H(t,e,n){var r=e.type;function o(e,n){return t.then(function(t){return L.canvasToDataURL(t,e,n)})}return{getType:a(r),toBlob:function(){return g.resolve(e)},toDataURL:function(){return n},toBase64:function(){return n.split(",")[1]},toAdjustedBlob:function(e,n){return t.then(function(t){return L.canvasToBlob(t,e,n)})},toAdjustedDataURL:o,toAdjustedBase64:function(t,e){return o(t,e).then(function(t){return t.split(",")[1]})},toCanvas:function(){return t.then(h.clone)}}}function M(e){return L.blobToDataUri(e).then(function(t){return H(L.blobToCanvas(e),e,t)})}var N={fromBlob:M,fromCanvas:function(e,t){return L.canvasToBlob(e,t).then(function(t){return H(g.resolve(e),t,e.toDataURL())})},fromImage:function(t){return L.imageToBlob(t).then(function(t){return M(t)})},fromBlobAndUrlSync:function(t,e){return H(L.blobToCanvas(t),t,e)}};function U(t,e,n){return n<(t=parseFloat(t))?t=n:t<e&&(t=e),t}var j=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];function G(t,e){var n,r,o,i,a=[],u=new Array(10);for(n=0;n<5;n++){for(r=0;r<5;r++)a[r]=e[r+5*n];for(r=0;r<5;r++){for(o=i=0;o<5;o++)i+=t[r+5*o]*a[o];u[r+5*n]=i}}return u}function z(t,n){return n=U(n,0,1),t.map(function(t,e){return e%6==0?t=1-(1-t)*n:t*=n,U(t,0,1)})}var V={identity:function(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]},adjust:z,multiply:G,adjustContrast:function(t,e){var n;return e=U(e,-1,1),G(t,[(n=(e*=100)<0?127+e/100*127:127*(n=0==(n=e%1)?j[e]:j[Math.floor(e)]*(1-n)+j[Math.floor(e)+1]*n)+127)/127,0,0,0,.5*(127-n),0,n/127,0,0,.5*(127-n),0,0,n/127,0,.5*(127-n),0,0,0,1,0,0,0,0,0,1])},adjustBrightness:function(t,e){return G(t,[1,0,0,0,e=U(255*e,-255,255),0,1,0,0,e,0,0,1,0,e,0,0,0,1,0,0,0,0,0,1])},adjustSaturation:function(t,e){var n;return G(t,[.3086*(1-(n=1+(0<(e=U(e,-1,1))?3*e:e)))+n,.6094*(1-n),.082*(1-n),0,0,.3086*(1-n),.6094*(1-n)+n,.082*(1-n),0,0,.3086*(1-n),.6094*(1-n),.082*(1-n)+n,0,0,0,0,0,1,0,0,0,0,0,1])},adjustHue:function(t,e){var n,r,o,i,a;return e=U(e,-180,180)/180*Math.PI,G(t,[(o=.213)+.787*(n=Math.cos(e))+(r=Math.sin(e))*-o,(i=.715)+n*-i+r*-i,(a=.072)+n*-a+.928*r,0,0,o+n*-o+.143*r,i+n*(1-i)+.14*r,a+n*-a+-.283*r,0,0,o+n*-o+-.787*r,i+n*-i+r*i,a+.928*n+r*a,0,0,0,0,0,1,0,0,0,0,0,1])},adjustColors:function(t,e,n,r){return G(t,[e=U(e,0,2),0,0,0,0,0,n=U(n,0,2),0,0,0,0,0,r=U(r,0,2),0,0,0,0,0,1,0,0,0,0,0,1])},adjustSepia:function(t,e){return G(t,z([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],e=U(e,0,1)))},adjustGrayscale:function(t,e){return G(t,z([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],e=U(e,0,1)))}};function W(a,u){return a.toCanvas().then(function(t){return e=t,n=a.getType(),r=u,i=h.get2dContext(e),o=function(t,e){var n,r,o,i,a,u=t.data,c=e[0],l=e[1],s=e[2],f=e[3],d=e[4],h=e[5],p=e[6],g=e[7],m=e[8],y=e[9],v=e[10],b=e[11],w=e[12],x=e[13],I=e[14],T=e[15],R=e[16],S=e[17],O=e[18],F=e[19];for(a=0;a<u.length;a+=4)n=u[a],r=u[a+1],o=u[a+2],i=u[a+3],u[a]=n*c+r*l+o*s+i*f+d,u[a+1]=n*h+r*p+o*g+i*m+y,u[a+2]=n*v+r*b+o*w+i*x+I,u[a+3]=n*T+r*R+o*S+i*O+F;return t}(i.getImageData(0,0,e.width,e.height),r),i.putImageData(o,0,0),N.fromCanvas(e,n);var e,n,r,o,i})}function q(u,c){return u.toCanvas().then(function(t){return e=t,n=u.getType(),r=c,a=h.get2dContext(e),o=a.getImageData(0,0,e.width,e.height),i=a.getImageData(0,0,e.width,e.height),i=function(t,e,n){var r,o,i,a,u,c,l,s,f,d,h,p,g,m,y,v,b;function w(t,e,n){return n<t?t=n:t<e&&(t=e),t}for(i=Math.round(Math.sqrt(n.length)),a=Math.floor(i/2),r=t.data,o=e.data,v=t.width,b=t.height,c=0;c<b;c++)for(u=0;u<v;u++){for(l=s=f=0,h=0;h<i;h++)for(d=0;d<i;d++)p=w(u+d-a,0,v-1),g=w(c+h-a,0,b-1),m=4*(g*v+p),y=n[h*i+d],l+=r[m]*y,s+=r[m+1]*y,f+=r[m+2]*y;o[m=4*(c*v+u)]=w(l,0,255),o[m+1]=w(s,0,255),o[m+2]=w(f,0,255)}return e}(o,i,r),a.putImageData(i,0,0),N.fromCanvas(e,n);var e,n,r,o,i,a})}function Y(u){return function(e,n){return e.toCanvas().then(function(t){return function(t,e,n){var r,o,i=h.get2dContext(t),a=new Array(256);for(o=0;o<a.length;o++)a[o]=u(o,n);return r=function(t,e){var n,r=t.data;for(n=0;n<r.length;n+=4)r[n]=e[r[n]],r[n+1]=e[r[n+1]],r[n+2]=e[r[n+2]];return t}(i.getImageData(0,0,t.width,t.height),a),i.putImageData(r,0,0),N.fromCanvas(t,e)}(t,e.getType(),n)})}}function X(n){return function(t,e){return W(t,n(V.identity(),e))}}function J(e){return function(t){return q(t,e)}}var K,Z={invert:(K=[-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0],function(t){return W(t,K)}),brightness:X(V.adjustBrightness),hue:X(V.adjustHue),saturate:X(V.adjustSaturation),contrast:X(V.adjustContrast),grayscale:X(V.adjustGrayscale),sepia:X(V.adjustSepia),colorize:function(t,e,n,r){return W(t,V.adjustColors(V.identity(),e,n,r))},sharpen:J([0,-1,0,-1,5,-1,0,-1,0]),emboss:J([-2,-1,0,-1,1,1,0,1,2]),gamma:Y(function(t,e){return 255*Math.pow(t/255,1-e)}),exposure:Y(function(t,e){return 255*(1-Math.exp(-t/255*e))}),colorFilter:W,convoluteFilter:q},Q={scale:function e(t,n,r){var o=p.getWidth(t),i=p.getHeight(t),a=n/o,u=r/i,c=!1;(a<.5||2<a)&&(a=a<.5?.5:2,c=!0),(u<.5||2<u)&&(u=u<.5?.5:2,c=!0);var l,s,f,d=(l=t,s=a,f=u,new g(function(t){var e=p.getWidth(l),n=p.getHeight(l),r=Math.floor(e*s),o=Math.floor(n*f),i=h.create(r,o),a=h.get2dContext(i);a.drawImage(l,0,0,e,n,0,0,r,o),t(i)}));return c?d.then(function(t){return e(t,n,r)}):d}},tt={rotate:function(c,l){return c.toCanvas().then(function(t){return e=t,n=c.getType(),r=l,o=h.create(e.width,e.height),i=h.get2dContext(o),90!=(r=r<(u=a=0)?360+r:r)&&270!=r||h.resize(o,o.height,o.width),90!=r&&180!=r||(a=o.width),270!=r&&180!=r||(u=o.height),i.translate(a,u),i.rotate(r*Math.PI/180),i.drawImage(e,0,0),N.fromCanvas(o,n);var e,n,r,o,i,a,u})},flip:function(a,u){return a.toCanvas().then(function(t){return e=t,n=a.getType(),r=u,o=h.create(e.width,e.height),i=h.get2dContext(o),"v"==r?(i.scale(1,-1),i.drawImage(e,0,-o.height)):(i.scale(-1,1),i.drawImage(e,-o.width,0)),N.fromCanvas(o,n);var e,n,r,o,i})},crop:function(c,l,s,f,d){return c.toCanvas().then(function(t){return e=t,n=c.getType(),r=l,o=s,i=f,a=d,u=h.create(i,a),h.get2dContext(u).drawImage(e,-r,-o),N.fromCanvas(u,n);var e,n,r,o,i,a,u})},resize:function(e,n,r){return e.toCanvas().then(function(t){return Q.scale(t,n,r).then(function(t){return N.fromCanvas(t,e.getType())})})}},et=function(){function t(t){this.littleEndian=!1,this._dv=new DataView(t)}return t.prototype.readByteAt=function(t){return this._dv.getUint8(t)},t.prototype.read=function(t,e){if(t+e>this.length())return null;for(var n=this.littleEndian?0:-8*(e-1),r=0,o=0;r<e;r++)o|=this.readByteAt(t+r)<<Math.abs(n+8*r);return o},t.prototype.BYTE=function(t){return this.read(t,1)},t.prototype.SHORT=function(t){return this.read(t,2)},t.prototype.LONG=function(t){return this.read(t,4)},t.prototype.SLONG=function(t){var e=this.read(t,4);return 2147483647<e?e-4294967296:e},t.prototype.CHAR=function(t){return String.fromCharCode(this.read(t,1))},t.prototype.STRING=function(t,e){return this.asArray("CHAR",t,e).join("")},t.prototype.SEGMENT=function(t,e){var n=this._dv.buffer;switch(arguments.length){case 2:return n.slice(t,t+e);case 1:return n.slice(t);default:return n}},t.prototype.asArray=function(t,e,n){for(var r=[],o=0;o<n;o++)r[o]=this[t](e+o);return r},t.prototype.length=function(){return this._dv?this._dv.byteLength:0},t}(),nt={274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},rt={36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},ot={0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},it={513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"},at={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},ut=function(){function t(t){this._offsets={tiffHeader:10,IFD0:null,IFD1:null,exifIFD:null,gpsIFD:null},this._tiffTags={};var e=this;if(e._reader=new et(t),e._idx=e._offsets.tiffHeader,65505!==e.SHORT(0)||"EXIF\0"!==e.STRING(4,5).toUpperCase())throw new Error("Exif data cannot be read or not available.");if(e._reader.littleEndian=18761==e.SHORT(e._idx),42!==e.SHORT(e._idx+=2))throw new Error("Invalid Exif data.");e._offsets.IFD0=e._offsets.tiffHeader+e.LONG(e._idx+=2),e._tiffTags=e.extractTags(e._offsets.IFD0,nt),"ExifIFDPointer"in e._tiffTags&&(e._offsets.exifIFD=e._offsets.tiffHeader+e._tiffTags.ExifIFDPointer,delete e._tiffTags.ExifIFDPointer),"GPSInfoIFDPointer"in e._tiffTags&&(e._offsets.gpsIFD=e._offsets.tiffHeader+e._tiffTags.GPSInfoIFDPointer,delete e._tiffTags.GPSInfoIFDPointer);var n=e.LONG(e._offsets.IFD0+12*e.SHORT(e._offsets.IFD0)+2);n&&(e._offsets.IFD1=e._offsets.tiffHeader+n)}return t.prototype.BYTE=function(t){return this._reader.BYTE(t)},t.prototype.SHORT=function(t){return this._reader.SHORT(t)},t.prototype.LONG=function(t){return this._reader.LONG(t)},t.prototype.SLONG=function(t){return this._reader.SLONG(t)},t.prototype.CHAR=function(t){return this._reader.CHAR(t)},t.prototype.STRING=function(t,e){return this._reader.STRING(t,e)},t.prototype.SEGMENT=function(t,e){return this._reader.SEGMENT(t,e)},t.prototype.asArray=function(t,e,n){for(var r=[],o=0;o<n;o++)r[o]=this[t](e+o);return r},t.prototype.length=function(){return this._reader.length()},t.prototype.UNDEFINED=function(){return this.BYTE.apply(this,arguments)},t.prototype.RATIONAL=function(t){return this.LONG(t)/this.LONG(t+4)},t.prototype.SRATIONAL=function(t){return this.SLONG(t)/this.SLONG(t+4)},t.prototype.ASCII=function(t){return this.CHAR(t)},t.prototype.TIFF=function(){return this._tiffTags},t.prototype.EXIF=function(){var t=null;if(this._offsets.exifIFD){try{t=this.extractTags(this._offsets.exifIFD,rt)}catch(r){return null}if(t.ExifVersion&&Array.isArray(t.ExifVersion)){for(var e=0,n="";e<t.ExifVersion.length;e++)n+=String.fromCharCode(t.ExifVersion[e]);t.ExifVersion=n}}return t},t.prototype.GPS=function(){var t=null;if(this._offsets.gpsIFD){try{t=this.extractTags(this._offsets.gpsIFD,ot)}catch(e){return null}t.GPSVersionID&&Array.isArray(t.GPSVersionID)&&(t.GPSVersionID=t.GPSVersionID.join("."))}return t},t.prototype.thumb=function(){var t=this;if(t._offsets.IFD1)try{var e=t.extractTags(t._offsets.IFD1,it);if("JPEGInterchangeFormat"in e)return t.SEGMENT(t._offsets.tiffHeader+e.JPEGInterchangeFormat,e.JPEGInterchangeFormatLength)}catch(n){}return null},t.prototype.extractTags=function(t,e){var n,r,o,i,a,u,c,l,s=this,f=[],d={},h={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},p={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(n=s.SHORT(t),r=0;r<n;r++)if(f=[],c=t+2+12*r,(o=e[s.SHORT(c)])!==undefined){if(i=h[s.SHORT(c+=2)],a=s.LONG(c+=2),!(u=p[i]))throw new Error("Invalid Exif data.");if(c+=4,4<u*a&&(c=s.LONG(c)+s._offsets.tiffHeader),c+u*a>=s.length())throw new Error("Invalid Exif data.");"ASCII"!==i?(f=s.asArray(i,c,a),l=1==a?f[0]:f,at.hasOwnProperty(o)&&"object"!=typeof l?d[o]=at[o][l]:d[o]=l):d[o]=s.STRING(c,a).replace(/\0$/,"").trim()}return d},t}(),ct=function(t){var e,n,r=[],o=0;for(e=2;e<=t.length();)if(65488<=(n=t.SHORT(e))&&n<=65495)e+=2;else{if(65498===n||65497===n)break;o=t.SHORT(e+2)+2,65505<=n&&n<=65519&&r.push({hex:n,name:"APP"+(15&n),start:e,length:o,segment:t.SEGMENT(e,o)}),e+=o}return r},lt=function(u){return L.blobToArrayBuffer(u).then(function(t){try{var e=new et(t);if(65496===e.SHORT(0)){var n=ct(e),r=n.filter(function(t){return"APP1"===t.name}),o={};if(!r.length)return g.reject("Headers did not include required information");var i=new ut(r[0].segment);return(o={tiff:i.TIFF(),exif:i.EXIF(),gps:i.GPS(),thumb:i.thumb()}).rawHeaders=n,o}return g.reject("Image was not a jpeg")}catch(a){return g.reject("Unsupported format or not an image: "+u.type+" (Exception: "+a.message+")")}})},st=function(t,e){return tt.rotate(t,e)},ft={invert:function(t){return Z.invert(t)},sharpen:function(t){return Z.sharpen(t)},emboss:function(t){return Z.emboss(t)},brightness:function(t,e){return Z.brightness(t,e)},hue:function(t,e){return Z.hue(t,e)},saturate:function(t,e){return Z.saturate(t,e)},contrast:function(t,e){return Z.contrast(t,e)},grayscale:function(t,e){return Z.grayscale(t,e)},sepia:function(t,e){return Z.sepia(t,e)},colorize:function(t,e,n,r){return Z.colorize(t,e,n,r)},gamma:function(t,e){return Z.gamma(t,e)},exposure:function(t,e){return Z.exposure(t,e)},flip:function(t,e){return tt.flip(t,e)},crop:function(t,e,n,r,o){return tt.crop(t,e,n,r,o)},resize:function(t,e,n){return tt.resize(t,e,n)},rotate:st,exifRotate:function(e){return e.toBlob().then(lt).then(function(t){switch(t.tiff.Orientation){case 6:return st(e,90);case 3:return st(e,180);case 8:return st(e,270);default:return e}},function(){return e})}},dt=function(t){return t.toBlob()},ht={blobToImageResult:function(t){return N.fromBlob(t)},fromBlobAndUrlSync:function(t,e){return N.fromBlobAndUrlSync(t,e)},imageToImageResult:function(t){return N.fromImage(t)},imageResultToBlob:function(t,e,n){return e===undefined&&n===undefined?dt(t):t.toAdjustedBlob(e,n)},imageResultToOriginalBlob:dt,imageResultToDataURL:function(t){return t.toDataURL()}},pt=function(){return O.getOrDie("URL")},gt={createObjectURL:function(t){return pt().createObjectURL(t)},revokeObjectURL:function(t){pt().revokeObjectURL(t)}},mt=tinymce.util.Tools.resolve("tinymce.util.Delay"),yt=tinymce.util.Tools.resolve("tinymce.util.Promise"),vt=tinymce.util.Tools.resolve("tinymce.util.URI"),bt=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),wt=tinymce.util.Tools.resolve("tinymce.ui.Factory"),xt=tinymce.util.Tools.resolve("tinymce.geom.Rect"),It=function(n){return new yt(function(t){var e=function(){n.removeEventListener("load",e),t(n)};n.complete?t(n):n.addEventListener("load",e)})},Tt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Rt=tinymce.util.Tools.resolve("tinymce.util.Observable"),St=tinymce.util.Tools.resolve("tinymce.util.VK"),Ot=0,Ft={create:function(t){return new(wt.get("Control").extend({Defaults:{classes:"imagepanel"},selection:function(t){return arguments.length?(this.state.set("rect",t),this):this.state.get("rect")},imageSize:function(){var t=this.state.get("viewRect");return{w:t.w,h:t.h}},toggleCropRect:function(t){this.state.set("cropEnabled",t)},imageSrc:function(t){var o=this,i=new s.Image;i.src=t,It(i).then(function(){var t,e,n=o.state.get("viewRect");if((e=o.$el.find("img"))[0])e.replaceWith(i);else{var r=s.document.createElement("div");r.className="mce-imagepanel-bg",o.getEl().appendChild(r),o.getEl().appendChild(i)}t={x:0,y:0,w:i.naturalWidth,h:i.naturalHeight},o.state.set("viewRect",t),o.state.set("rect",xt.inflate(t,-20,-20)),n&&n.w===t.w&&n.h===t.h||o.zoomFit(),o.repaintImage(),o.fire("load")})},zoom:function(t){return arguments.length?(this.state.set("zoom",t),this):this.state.get("zoom")},postRender:function(){return this.imageSrc(this.settings.imageSrc),this._super()},zoomFit:function(){var t,e,n,r,o,i;t=this.$el.find("img"),e=this.getEl().clientWidth,n=this.getEl().clientHeight,r=t[0].naturalWidth,o=t[0].naturalHeight,1<=(i=Math.min((e-10)/r,(n-10)/o))&&(i=1),this.zoom(i)},repaintImage:function(){var t,e,n,r,o,i,a,u,c,l,s;s=this.getEl(),c=this.zoom(),l=this.state.get("rect"),a=this.$el.find("img"),u=this.$el.find(".mce-imagepanel-bg"),o=s.offsetWidth,i=s.offsetHeight,n=a[0].naturalWidth*c,r=a[0].naturalHeight*c,t=Math.max(0,o/2-n/2),e=Math.max(0,i/2-r/2),a.css({left:t,top:e,width:n,height:r}),u.css({left:t,top:e,width:n,height:r}),this.cropRect&&(this.cropRect.setRect({x:l.x*c+t,y:l.y*c+e,w:l.w*c,h:l.h*c}),this.cropRect.setClampRect({x:t,y:e,w:n,h:r}),this.cropRect.setViewPortRect({x:0,y:0,w:o,h:i}))},bindStates:function(){var r=this;function n(t){r.cropRect=function(l,n,s,r,o){var f,a,t,i,e="mce-",u=e+"crid-"+Ot++;function d(t,e){return{x:e.x-t.x,y:e.y-t.y,w:e.w,h:e.h}}function c(t,e,n,r){var o,i,a,u,c;o=e.x,i=e.y,a=e.w,u=e.h,o+=n*t.deltaX,i+=r*t.deltaY,(a+=n*t.deltaW)<20&&(a=20),(u+=r*t.deltaH)<20&&(u=20),c=l=xt.clamp({x:o,y:i,w:a,h:u},s,"move"===t.name),c=d(s,c),f.fire("updateRect",{rect:c}),g(c)}function h(e){function t(t,e){e.h<0&&(e.h=0),e.w<0&&(e.w=0),Tt("#"+u+"-"+t,r).css({left:e.x,top:e.y,width:e.w,height:e.h})}$.each(a,function(t){Tt("#"+u+"-"+t.name,r).css({left:e.w*t.xMul+e.x,top:e.h*t.yMul+e.y})}),t("top",{x:n.x,y:n.y,w:n.w,h:e.y-n.y}),t("right",{x:e.x+e.w,y:e.y,w:n.w-e.x-e.w+n.x,h:e.h}),t("bottom",{x:n.x,y:e.y+e.h,w:n.w,h:n.h-e.y-e.h+n.y}),t("left",{x:n.x,y:e.y,w:e.x-n.x,h:e.h}),t("move",e)}function p(t){h(l=t)}function g(t){var e,n;p((e=s,{x:(n=t).x+e.x,y:n.y+e.y,w:n.w,h:n.h}))}return a=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}],i=["top","right","bottom","left"],Tt('<div id="'+u+'" class="'+e+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(r),$.each(i,function(t){Tt("#"+u,r).append('<div id="'+u+"-"+t+'"class="'+e+'croprect-block" style="display: none" data-mce-bogus="all">')}),$.each(a,function(t){Tt("#"+u,r).append('<div id="'+u+"-"+t.name+'" class="'+e+"croprect-handle "+e+"croprect-handle-"+t.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+t.label+'" aria-grabbed="false">')}),t=$.map(a,function(e){var n;return new(wt.get("DragHelper"))(u,{document:r.ownerDocument,handle:u+"-"+e.name,start:function(){n=l},drag:function(t){c(e,n,t.deltaX,t.deltaY)}})}),h(l),Tt(r).on("focusin focusout",function(t){Tt(t.target).attr("aria-grabbed","focus"===t.type)}),Tt(r).on("keydown",function(e){var i;function t(t,e,n,r,o){t.stopPropagation(),t.preventDefault(),c(i,n,r,o)}switch($.each(a,function(t){if(e.target.id===u+"-"+t.name)return i=t,!1}),e.keyCode){case St.LEFT:t(e,0,l,-10,0);break;case St.RIGHT:t(e,0,l,10,0);break;case St.UP:t(e,0,l,0,-10);break;case St.DOWN:t(e,0,l,0,10);break;case St.ENTER:case St.SPACEBAR:e.preventDefault(),o()}}),f=$.extend({toggleVisibility:function(t){var e;e=$.map(a,function(t){return"#"+u+"-"+t.name}).concat($.map(i,function(t){return"#"+u+"-"+t})).join(","),t?Tt(e,r).show():Tt(e,r).hide()},setClampRect:function(t){s=t,h(l)},setRect:p,getInnerRect:function(){return d(s,l)},setInnerRect:g,setViewPortRect:function(t){n=t,h(l)},destroy:function(){$.each(t,function(t){t.destroy()}),t=[]}},Rt)}(t,r.state.get("viewRect"),r.state.get("viewRect"),r.getEl(),function(){r.fire("crop")}),r.cropRect.on("updateRect",function(t){var e=t.rect,n=r.zoom();e={x:Math.round(e.x/n),y:Math.round(e.y/n),w:Math.round(e.w/n),h:Math.round(e.h/n)},r.state.set("rect",e)}),r.on("remove",r.cropRect.destroy)}r.state.on("change:cropEnabled",function(t){r.cropRect.toggleVisibility(t.value),r.repaintImage()}),r.state.on("change:zoom",function(){r.repaintImage()}),r.state.on("change:rect",function(t){var e=t.value;r.cropRect||n(e),r.cropRect.setRect(e)})}}))(t)}};function Ct(t){return{blob:t,url:gt.createObjectURL(t)}}function Et(t){t&>.revokeObjectURL(t.url)}function Dt(t){$.each(t,Et)}function At(i,a,t,e){var u,n,r,c,o,l,s,f,d,h,p,g,m,y,v,b,w,x,I,T,R,S,O,F,C,E,D,A=function(){var n=[],r=-1;function t(){return 0<r}function e(){return-1!==r&&r<n.length-1}return{data:n,add:function(t){var e;return e=n.splice(++r),n.push(t),{state:t,removed:e}},undo:function(){if(t())return n[--r]},redo:function(){if(e())return n[++r]},canUndo:t,canRedo:e}}(),_=function(t){return i.rtl?t.reverse():t};function k(t){var e,n,r,o;e=u.find("#w")[0],n=u.find("#h")[0],r=parseInt(e.value(),10),o=parseInt(n.value(),10),u.find("#constrain")[0].checked()&&F&&C&&r&&o&&("w"===t.control.settings.name?(o=Math.round(r*E),n.value(o)):(r=Math.round(o*D),e.value(r))),F=r,C=o}function L(t){return Math.round(100*t)+"%"}function P(){u.find("#undo").disabled(!A.canUndo()),u.find("#redo").disabled(!A.canRedo()),u.statusbar.find("#save").disabled(!A.canUndo())}function B(){u.find("#undo").disabled(!0),u.find("#redo").disabled(!0)}function H(t){t&&f.imageSrc(t.url)}function M(e){return function(){var t=$.grep(O,function(t){return t.settings.name!==e});$.each(t,function(t){t.hide()}),e.show(),e.focus()}}function N(t){H(c=Ct(t))}function U(t){H(a=Ct(t)),Dt(A.add(a).removed),P()}function j(){var e=f.selection();ht.blobToImageResult(a.blob).then(function(t){ft.crop(t,e.x,e.y,e.w,e.h).then(q).then(function(t){U(t),z()})})}var G=function(e){var n=[].slice.call(arguments,1);return function(){var t=c||a;ht.blobToImageResult(t.blob).then(function(t){e.apply(this,[t].concat(n)).then(q).then(N)})}};function z(){H(a),Et(c),M(n)(),P()}function V(){c?(U(c.blob),z()):function t(e,n){c?n():setTimeout(function(){0<e--?t(e,n):i.windowManager.alert("Error: failed to apply image operation.")},10)}(100,V)}function W(t){return wt.create("Form",{layout:"flex",direction:"row",labelGap:5,border:"0 0 1 0",align:"center",pack:"center",padding:"0 10 0 10",spacing:5,flex:0,minHeight:60,defaults:{classes:"imagetool",type:"button"},items:t})}var q=function(t){return t.toBlob()};function Y(t,e){return W(_([{text:"Back",onclick:z},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:V}])).hide().on("show",function(){B(),ht.blobToImageResult(a.blob).then(function(t){return e(t)}).then(q).then(function(t){var e=Ct(t);H(e),Et(c),c=e})})}function X(t,n,e,r,o){return W(_([{text:"Back",onclick:z},{type:"spacer",flex:1},{type:"slider",flex:1,ondragend:function(t){var e;e=t.value,ht.blobToImageResult(a.blob).then(function(t){return n(t,e)}).then(q).then(function(t){var e=Ct(t);H(e),Et(c),c=e})},minValue:i.rtl?o:r,maxValue:i.rtl?r:o,value:e,previewFilter:L},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:V}])).hide().on("show",function(){this.find("slider").value(e),B()})}o=W(_([{text:"Back",onclick:z},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:j}])).hide().on("show hide",function(t){f.toggleCropRect("show"===t.type)}).on("show",B),l=W(_([{text:"Back",onclick:z},{type:"spacer",flex:1},{type:"textbox",name:"w",label:"Width",size:4,onkeyup:k},{type:"textbox",name:"h",label:"Height",size:4,onkeyup:k},{type:"checkbox",name:"constrain",text:"Constrain proportions",checked:!0,onchange:function(t){!0===t.control.value()&&(E=C/F,D=F/C)}},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:"submit"}])).hide().on("submit",function(t){var e=parseInt(u.find("#w").value(),10),n=parseInt(u.find("#h").value(),10);t.preventDefault(),function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=[].slice.call(arguments,1);return function(){ht.blobToImageResult(a.blob).then(function(t){e.apply(this,[t].concat(r)).then(q).then(U)})}}(ft.resize,e,n)(),z()}).on("show",B),s=W(_([{text:"Back",onclick:z},{type:"spacer",flex:1},{icon:"fliph",tooltip:"Flip horizontally",onclick:G(ft.flip,"h")},{icon:"flipv",tooltip:"Flip vertically",onclick:G(ft.flip,"v")},{icon:"rotateleft",tooltip:"Rotate counterclockwise",onclick:G(ft.rotate,-90)},{icon:"rotateright",tooltip:"Rotate clockwise",onclick:G(ft.rotate,90)},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:V}])).hide().on("show",B),p=Y(0,ft.invert),I=Y(0,ft.sharpen),T=Y(0,ft.emboss),g=X(0,ft.brightness,0,-1,1),m=X(0,ft.hue,180,0,360),y=X(0,ft.saturate,0,-1,1),v=X(0,ft.contrast,0,-1,1),b=X(0,ft.grayscale,0,0,1),w=X(0,ft.sepia,0,0,1),x=function(t,o){function e(){var e,n,r;e=u.find("#r")[0].value(),n=u.find("#g")[0].value(),r=u.find("#b")[0].value(),ht.blobToImageResult(a.blob).then(function(t){return o(t,e,n,r)}).then(q).then(function(t){var e=Ct(t);H(e),Et(c),c=e})}var n=i.rtl?2:0,r=i.rtl?0:2;return W(_([{text:"Back",onclick:z},{type:"spacer",flex:1},{type:"slider",label:"R",name:"r",minValue:n,value:1,maxValue:r,ondragend:e,previewFilter:L},{type:"slider",label:"G",name:"g",minValue:n,value:1,maxValue:r,ondragend:e,previewFilter:L},{type:"slider",label:"B",name:"b",minValue:n,value:1,maxValue:r,ondragend:e,previewFilter:L},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:V}])).hide().on("show",function(){u.find("#r,#g,#b").value(1),B()})}(0,ft.colorize),R=X(0,ft.gamma,0,-1,1),S=X(0,ft.exposure,1,0,2),r=W(_([{text:"Back",onclick:z},{type:"spacer",flex:1},{text:"hue",icon:"hue",onclick:M(m)},{text:"saturate",icon:"saturate",onclick:M(y)},{text:"sepia",icon:"sepia",onclick:M(w)},{text:"emboss",icon:"emboss",onclick:M(T)},{text:"exposure",icon:"exposure",onclick:M(S)},{type:"spacer",flex:1}])).hide(),n=W(_([{tooltip:"Crop",icon:"crop",onclick:M(o)},{tooltip:"Resize",icon:"resize2",onclick:M(l)},{tooltip:"Orientation",icon:"orientation",onclick:M(s)},{tooltip:"Brightness",icon:"sun",onclick:M(g)},{tooltip:"Sharpen",icon:"sharpen",onclick:M(I)},{tooltip:"Contrast",icon:"contrast",onclick:M(v)},{tooltip:"Color levels",icon:"drop",onclick:M(x)},{tooltip:"Gamma",icon:"gamma",onclick:M(R)},{tooltip:"Invert",icon:"invert",onclick:M(p)}])),f=Ft.create({flex:1,imageSrc:a.url}),d=wt.create("Container",{layout:"flex",direction:"column",pack:"start",border:"0 1 0 0",padding:5,spacing:5,items:[{type:"button",icon:"undo",tooltip:"Undo",name:"undo",onclick:function(){H(a=A.undo()),P()}},{type:"button",icon:"redo",tooltip:"Redo",name:"redo",onclick:function(){H(a=A.redo()),P()}},{type:"button",icon:"zoomin",tooltip:"Zoom in",onclick:function(){var t=f.zoom();t<2&&(t+=.1),f.zoom(t)}},{type:"button",icon:"zoomout",tooltip:"Zoom out",onclick:function(){var t=f.zoom();.1<t&&(t-=.1),f.zoom(t)}}]}),h=wt.create("Container",{type:"container",layout:"flex",direction:"row",align:"stretch",flex:1,items:_([d,f])}),O=[n,o,l,s,r,p,g,m,y,v,b,w,x,I,T,R,S],(u=i.windowManager.open({layout:"flex",direction:"column",align:"stretch",minWidth:Math.min(bt.DOM.getViewPort().w,800),minHeight:Math.min(bt.DOM.getViewPort().h,650),title:"Edit image",items:O.concat([h]),buttons:_([{text:"Save",name:"save",subtype:"primary",onclick:function(){t(a.blob),u.close()}},{text:"Cancel",onclick:"close"}])})).on("close",function(){e(),Dt(A.data),c=A=null}),A.add(a),P(),f.on("load",function(){F=f.imageSize().w,C=f.imageSize().h,E=C/F,D=F/C,u.find("#w").value(F),u.find("#h").value(C)}),f.on("crop",j)}var _t,kt={edit:function(r,t){return new yt(function(e,n){return t.toBlob().then(function(t){At(r,Ct(t),e,n)})})}},Lt={getImageSize:function(t){var e,n;function r(t){return/^[0-9\.]+px$/.test(t)}return e=t.style.width,n=t.style.height,e||n?r(e)&&r(n)?{w:parseInt(e,10),h:parseInt(n,10)}:null:(e=t.width,n=t.height,e&&n?{w:parseInt(e,10),h:parseInt(n,10)}:null)},setImageSize:function(t,e){var n,r;e&&(n=t.style.width,r=t.style.height,(n||r)&&(t.style.width=e.w+"px",t.style.height=e.h+"px",t.removeAttribute("data-mce-style")),n=t.width,r=t.height,(n||r)&&(t.setAttribute("width",e.w),t.setAttribute("height",e.h)))},getNaturalImageSize:function(t){return{w:t.naturalWidth,h:t.naturalHeight}}},Pt=(_t="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&Array.prototype.isPrototypeOf(t)?"array":"object"===e&&String.prototype.isPrototypeOf(t)?"string":e}(t)===_t}),Bt=function(t,e){for(var n=0,r=t.length;n<r;n++){var o=t[n];if(e(o,n,t))return T.some(o)}return T.none()};Array.prototype.slice;Pt(Array.from)&&Array.from;var Ht=function(t){return null!==t&&t!==undefined},Mt=function(t,e){var n;return n=e.reduce(function(t,e){return Ht(t)?t[e]:undefined},t),Ht(n)?n:null},Nt=function(e){return new yt(function(n){var t=F();t.onload=function(t){var e=t.target;n(e.result)},t.readAsText(e)})},Ut=function(e,r,o){return new yt(function(t){var n;(n=new(O.getOrDie("XMLHttpRequest"))).onreadystatechange=function(){4===n.readyState&&t({status:n.status,blob:this.response})},n.open("GET",e,!0),n.withCredentials=o,$.each(r,function(t,e){n.setRequestHeader(e,t)}),n.responseType="blob",n.send()})},jt=function(t){var e;try{e=JSON.parse(t)}catch(n){}return e},Gt=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],zt=[{type:"key_missing",message:"The request did not include an api key."},{type:"key_not_found",message:"The provided api key could not be found."},{type:"domain_not_trusted",message:"The api key is not valid for the request origins."}],Vt=function(e){return"ImageProxy HTTP error: "+Bt(Gt,function(t){return e===t.code}).fold(a("Unknown ImageProxy error"),function(t){return t.message})},Wt=function(t){var e=Vt(t);return yt.reject(e)},qt=function(e){return Bt(zt,function(t){return t.type===e}).fold(a("Unknown service error"),function(t){return t.message})},Yt=function(t,e){return Nt(e).then(function(t){var e,n,r=(e=jt(t),"ImageProxy Service error: "+((n=Mt(e,["error","type"]))?qt(n):"Invalid JSON in service error message"));return yt.reject(r)})},Xt=function(t,e){return 400===(n=t)||403===n||500===n?Yt(0,e):Wt(t);var n},$t=Wt,Jt=function(t,e){var n,r,o,i={"Content-Type":"application/json;charset=UTF-8","tiny-api-key":e};return Ut((n=t,r=e,o=-1===n.indexOf("?")?"?":"&",/[?&]apiKey=/.test(n)||!r?n:n+o+"apiKey="+encodeURIComponent(r)),i,!1).then(function(t){return t.status<200||300<=t.status?Xt(t.status,t.blob):yt.resolve(t.blob)})},Kt=function(t,e,n){return e?Jt(t,e):Ut(t,{},n).then(function(t){return t.status<200||300<=t.status?$t(t.status):yt.resolve(t.blob)})},Zt=0,Qt=function(t,e){t.notificationManager.open({text:e,type:"error"})},te=function(t){return t.selection.getNode()},ee=function(t,e){var n=e.src;return 0===n.indexOf("data:")||0===n.indexOf("blob:")||new vt(n).host===t.documentBaseURI.host},ne=function(t,e){return-1!==$.inArray(t.getParam("imagetools_cors_hosts",[],"string[]"),new vt(e.src).host)},re=function(t,e){var n,r,o,i,a=e.src;return ne(t,e)?Kt(e.src,null,(r=t,o=e,-1!==$.inArray(r.getParam("imagetools_credentials_hosts",[],"string[]"),new vt(o.src).host))):ee(t,e)?B(e):(a=t.getParam("imagetools_proxy"),a+=(-1===a.indexOf("?")?"?":"&")+"url="+encodeURIComponent(e.src),n=(i=t).getParam("api_key",i.getParam("imagetools_api_key","","string"),"string"),Kt(a,n,!1))},oe=function(t){var e;return(e=t.editorUpload.blobCache.getByUri(te(t).src))?yt.resolve(e.blob()):re(t,te(t))},ie=function(t){clearTimeout(t.get())},ae=function(c,l,s,f,d){return l.toBlob().then(function(t){var e,n,r,o,i,a,u;return r=c.editorUpload.blobCache,e=(i=te(c)).src,c.getParam("images_reuse_filename",!1,"boolean")&&((o=r.getByUri(e))?(e=o.uri(),n=o.name()):(a=c,n=(u=e.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i))?a.dom.encode(u[1]):null)),o=r.create({id:"imagetools"+Zt++,blob:t,base64:l.toBase64(),uri:e,name:n}),r.add(o),c.undoManager.transact(function(){c.$(i).on("load",function t(){var e,n,r;c.$(i).off("load",t),c.nodeChanged(),s?c.editorUpload.uploadImagesAuto():(ie(f),e=c,n=f,r=mt.setEditorTimeout(e,function(){e.editorUpload.uploadImagesAuto()},e.getParam("images_upload_timeout",3e4,"number")),n.set(r))}),d&&c.$(i).attr({width:d.w,height:d.h}),c.$(i).attr({src:o.blobUri()}).removeAttr("data-mce-src")}),o})},ue=function(e,n,t,r){return function(){return e._scanForImages().then(u(oe,e)).then(ht.blobToImageResult).then(t).then(function(t){return ae(e,t,!1,n,r)},function(t){Qt(e,t)})}},ce=function(n,r,o){return function(){var t=Lt.getImageSize(te(n)),e=t?{w:t.h,h:t.w}:null;return ue(n,r,function(t){return ft.rotate(t,o)},e)()}},le=function(t,e,n){return function(){return ue(t,e,function(t){return ft.flip(t,n)})()}},se=function(e,r){return function(){var o=te(e),i=Lt.getNaturalImageSize(o),n=function(r){return new yt(function(n){P(r).then(function(t){var e=Lt.getNaturalImageSize(t);i.w===e.w&&i.h===e.h||Lt.getImageSize(o)&&Lt.setImageSize(o,e),gt.revokeObjectURL(t.src),n(r)})})};oe(e).then(ht.blobToImageResult).then(u(function(e,t){return kt.edit(e,t).then(n).then(ht.blobToImageResult).then(function(t){return ae(e,t,!0,r)},function(){})},e),function(t){Qt(e,t)})}},fe=function(t,e){return t.dom.is(e,"img:not([data-mce-object],[data-mce-placeholder])")&&(ee(t,e)||ne(t,e)||t.settings.imagetools_proxy)},de=ie,he=function(n,t){$.each({mceImageRotateLeft:ce(n,t,-90),mceImageRotateRight:ce(n,t,90),mceImageFlipVertical:le(n,t,"v"),mceImageFlipHorizontal:le(n,t,"h"),mceEditImage:se(n,t)},function(t,e){n.addCommand(e,t)})},pe=function(n,r,o){n.on("NodeChange",function(t){var e=o.get();e&&e.src!==t.element.src&&(de(r),n.editorUpload.uploadImagesAuto(),o.set(null)),fe(n,t.element)&&o.set(t.element)})},ge=function(t){t.addButton("rotateleft",{title:"Rotate counterclockwise",cmd:"mceImageRotateLeft"}),t.addButton("rotateright",{title:"Rotate clockwise",cmd:"mceImageRotateRight"}),t.addButton("flipv",{title:"Flip vertically",cmd:"mceImageFlipVertical"}),t.addButton("fliph",{title:"Flip horizontally",cmd:"mceImageFlipHorizontal"}),t.addButton("editimage",{title:"Edit image",cmd:"mceEditImage"}),t.addButton("imageoptions",{title:"Image options",icon:"options",cmd:"mceImage"})},me=function(t){t.addContextToolbar(u(fe,t),t.getParam("imagetools_toolbar","rotateleft rotateright | flipv fliph | crop editimage imageoptions"))};t.add("imagetools",function(t){var e=r(0),n=r(null);he(t,e),ge(t),me(t),pe(t,e,n)})}(window);
\ No newline at end of file
+!function(m){"use strict";var r=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return r(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),G=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(){},i=function(t){return function(){return t}};function a(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}var n,o,c,u,l=i(!1),f=i(!0),s=function(){return d},d=(n=function(t){return t.isNone()},u={fold:function(t,e){return t()},is:l,isSome:l,isNone:f,getOr:c=function(t){return t},getOrThunk:o=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:c,orThunk:o,map:s,each:e,bind:s,exists:l,forall:f,filter:s,equals:n,equals_:n,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(u),u),h=function(n){var t=i(n),e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:f,isNone:l,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return h(t(n))},each:function(t){t(n)},bind:r,exists:r,forall:r,filter:function(t){return t(n)?o:d},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(l,function(t){return e(n,t)})}};return o},g={some:h,none:s,from:function(t){return null===t||t===undefined?d:h(t)}};function p(t,e){return w(m.document.createElement("canvas"),t,e)}function v(t){var e=p(t.width,t.height);return y(e).drawImage(t,0,0),e}function y(t){return t.getContext("2d")}function w(t,e,n){return t.width=e,t.height=n,t}function b(t){return t.naturalWidth||t.width}function x(t){return t.naturalHeight||t.height}var k=window.Promise?window.Promise:function(){var i=function(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],f(t,r(o,this),r(c,this))},t=i.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(t){m.setTimeout(t,1)};function r(t,e){return function(){return t.apply(e,arguments)}}var n=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function a(r){var o=this;null!==this._state?t(function(){var t=o._state?r.onFulfilled:r.onRejected;if(null!==t){var e;try{e=t(o._value)}catch(n){return void r.reject(n)}r.resolve(e)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function o(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void f(r(e,t),r(o,this),r(c,this))}this._state=!0,this._value=t,u.call(this)}catch(n){c.call(this,n)}}function c(t){this._state=!1,this._value=t,u.call(this)}function u(){for(var t=0,e=this._deferreds;t<e.length;t++){var n=e[t];a.call(this,n)}this._deferreds=[]}function l(t,e,n,r){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.resolve=n,this.reject=r}function f(t,e,n){var r=!1;try{t(function(t){r||(r=!0,e(t))},function(t){r||(r=!0,n(t))})}catch(o){if(r)return;r=!0,n(o)}}return i.prototype["catch"]=function(t){return this.then(null,t)},i.prototype.then=function(n,r){var o=this;return new i(function(t,e){a.call(o,new l(n,r,t,e))})},i.all=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var u=Array.prototype.slice.call(1===t.length&&n(t[0])?t[0]:t);return new i(function(o,i){if(0===u.length)return o([]);var a=u.length;function c(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){c(e,t)},i)}u[e]=t,0==--a&&o(u)}catch(r){i(r)}}for(var t=0;t<u.length;t++)c(t,u[t])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(t){t(e)})},i.reject=function(n){return new i(function(t,e){e(n)})},i.race=function(o){return new i(function(t,e){for(var n=0,r=o;n<r.length;n++)r[n].then(t,e)})},i}();function R(t){var r,e=t.src;return 0===e.indexOf("data:")?M(e):(r=e,new k(function(t,n){var e=new m.XMLHttpRequest;e.open("GET",r,!0),e.responseType="blob",e.onload=function(){200===this.status&&t(this.response)},e.onerror=function(){var t,e=this;n(0===this.status?((t=new Error("No access to download image")).code=18,t.name="SecurityError",t):new Error("Error "+e.status+" downloading image"))},e.send()}))}function I(c){return new k(function(t,e){var n=m.URL.createObjectURL(c),r=new m.Image,o=function(){r.removeEventListener("load",i),r.removeEventListener("error",a)};function i(){o(),t(r)}function a(){o(),e("Unable to load data of type "+c.type+": "+n)}r.addEventListener("load",i),r.addEventListener("error",a),r.src=n,r.complete&&i()})}function M(n){return new k(function(t,e){(function(t){var e=t.split(","),n=/data:([^;]+)/.exec(e[0]);if(!n)return g.none();for(var r=n[1],o=e[1],i=m.atob(o),a=i.length,c=Math.ceil(a/1024),u=new Array(c),l=0;l<c;++l){for(var f=1024*l,s=Math.min(f+1024,a),d=new Array(s-f),h=f,p=0;h<s;++p,++h)d[p]=i[h].charCodeAt(0);u[l]=new Uint8Array(d)}return g.some(new m.Blob(u,{type:r}))})(n).fold(function(){e("uri is not base64: "+n)},t)})}function T(t,r,o){return r=r||"image/png",m.HTMLCanvasElement.prototype.toBlob?new k(function(e,n){t.toBlob(function(t){t?e(t):n()},r,o)}):M(t.toDataURL(r,o))}function U(t){return I(t).then(function(t){var e;e=t,m.URL.revokeObjectURL(e.src);var n=p(b(t),x(t));return y(n).drawImage(t,0,0),n})}function C(t,e,n){var r=e.type;function o(r,o){return t.then(function(t){return n=o,e=(e=r)||"image/png",t.toDataURL(e,n);var e,n})}return{getType:i(r),toBlob:function(){return k.resolve(e)},toDataURL:function(){return n},toBase64:function(){return n.split(",")[1]},toAdjustedBlob:function(e,n){return t.then(function(t){return T(t,e,n)})},toAdjustedDataURL:o,toAdjustedBase64:function(t,e){return o(t,e).then(function(t){return t.split(",")[1]})},toCanvas:function(){return t.then(v)}}}function A(e){return(n=e,new k(function(t){var e=new m.FileReader;e.onloadend=function(){t(e.result)},e.readAsDataURL(n)})).then(function(t){return C(U(e),e,t)});var n}function E(e,t){return T(e,t).then(function(t){return C(k.resolve(e),t,e.toDataURL())})}function O(t,e,n){var r="string"==typeof t?parseFloat(t):t;return n<r?r=n:r<e&&(r=e),r}var _=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];function j(t,e){for(var n,r=[],o=new Array(25),i=0;i<5;i++){for(var a=0;a<5;a++)r[a]=e[a+5*i];for(a=0;a<5;a++){for(var c=n=0;c<5;c++)n+=t[a+5*c]*r[c];o[a+5*i]=n}}return o}function z(t,n){return n=O(n,0,1),t.map(function(t,e){return e%6==0?t=1-(1-t)*n:t*=n,O(t,0,1)})}function L(a,c){return a.toCanvas().then(function(t){return e=t,n=a.getType(),r=c,o=y(e),i=function(t,e){for(var n,r,o,i,a=t.data,c=e[0],u=e[1],l=e[2],f=e[3],s=e[4],d=e[5],h=e[6],p=e[7],m=e[8],g=e[9],v=e[10],y=e[11],w=e[12],b=e[13],x=e[14],k=e[15],R=e[16],I=e[17],M=e[18],T=e[19],U=0;U<a.length;U+=4)n=a[U],r=a[U+1],o=a[U+2],i=a[U+3],a[U]=n*c+r*u+o*l+i*f+s,a[U+1]=n*d+r*h+o*p+i*m+g,a[U+2]=n*v+r*y+o*w+i*b+x,a[U+3]=n*k+r*R+o*I+i*M+T;return t}(o.getImageData(0,0,e.width,e.height),r),o.putImageData(i,0,0),E(e,n);var e,n,r,o,i})}function B(c,u){return c.toCanvas().then(function(t){return e=t,n=c.getType(),r=u,o=y(e),i=o.getImageData(0,0,e.width,e.height),a=o.getImageData(0,0,e.width,e.height),a=function(t,e,n){function r(t,e,n){return n<t?t=n:t<e&&(t=e),t}for(var o=Math.round(Math.sqrt(n.length)),i=Math.floor(o/2),a=t.data,c=e.data,u=t.width,l=t.height,f=0;f<l;f++)for(var s=0;s<u;s++){for(var d=0,h=0,p=0,m=0;m<o;m++)for(var g=0;g<o;g++){var v=r(s+g-i,0,u-1),y=r(f+m-i,0,l-1),w=4*(y*u+v),b=n[m*o+g];d+=a[w]*b,h+=a[w+1]*b,p+=a[w+2]*b}var x=4*(f*u+s);c[x]=r(d,0,255),c[x+1]=r(h,0,255),c[x+2]=r(p,0,255)}return e}(i,a,r),o.putImageData(a,0,0),E(e,n);var e,n,r,o,i,a})}function S(c){return function(e,n){return e.toCanvas().then(function(t){return function(t,e,n){for(var r=y(t),o=new Array(256),i=0;i<o.length;i++)o[i]=c(i,n);var a=function(t,e){for(var n=t.data,r=0;r<n.length;r+=4)n[r]=e[n[r]],n[r+1]=e[n[r+1]],n[r+2]=e[n[r+2]];return t}(r.getImageData(0,0,t.width,t.height),o);return r.putImageData(a,0,0),E(t,e)}(t,e.getType(),n)})}}function P(n){return function(t,e){return L(t,n([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],e))}}function H(e){return function(t){return B(t,e)}}var D,F=(D=[-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0,0,0,0,0,1],function(t){return L(t,D)}),V=P(function(t,e){return j(t,[1,0,0,0,e=O(255*e,-255,255),0,1,0,0,e,0,0,1,0,e,0,0,0,1,0,0,0,0,0,1])}),W=P(function(t,e){e=O(e,-180,180)/180*Math.PI;var n=Math.cos(e),r=Math.sin(e),o=.213,i=.715,a=.072;return j(t,[o+.787*n+r*-o,i+n*-i+r*-i,a+n*-a+.928*r,0,0,o+n*-o+.143*r,i+n*(1-i)+.14*r,a+n*-a+-.283*r,0,0,o+n*-o+-.787*r,i+n*-i+r*i,a+.928*n+r*a,0,0,0,0,0,1,0,0,0,0,0,1])}),N=P(function(t,e){var n=1+(0<(e=O(e,-1,1))?3*e:e);return j(t,[.3086*(1-n)+n,.6094*(1-n),.082*(1-n),0,0,.3086*(1-n),.6094*(1-n)+n,.082*(1-n),0,0,.3086*(1-n),.6094*(1-n),.082*(1-n)+n,0,0,0,0,0,1,0,0,0,0,0,1])}),q=P(function(t,e){var n;return e=O(e,-1,1),j(t,[(n=(e*=100)<0?127+e/100*127:127*(n=0==(n=e%1)?_[e]:_[Math.floor(e)]*(1-n)+_[Math.floor(e)+1]*n)+127)/127,0,0,0,.5*(127-n),0,n/127,0,0,.5*(127-n),0,0,n/127,0,.5*(127-n),0,0,0,1,0,0,0,0,0,1])}),$=P(function(t,e){return j(t,z([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],e=O(e,0,1)))}),X=P(function(t,e){return j(t,z([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],e=O(e,0,1)))}),Y=function(t,e,n,r){return L(t,(o=n,i=r,j([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],[O(e,0,2),0,0,0,0,0,o=O(o,0,2),0,0,0,0,0,i=O(i,0,2),0,0,0,0,0,1,0,0,0,0,0,1])));var o,i},K=H([0,-1,0,-1,5,-1,0,-1,0]),J=H([-2,-1,0,-1,1,1,0,1,2]),Z=S(function(t,e){return 255*Math.pow(t/255,1-e)}),Q=S(function(t,e){return 255*(1-Math.exp(-t/255*e))});function tt(t,e,n){var r=b(t),o=x(t),i=e/r,a=n/o,c=!1;(i<.5||2<i)&&(i=i<.5?.5:2,c=!0),(a<.5||2<a)&&(a=a<.5?.5:2,c=!0);var u,l,f,s=(u=t,l=i,f=a,new k(function(t){var e=b(u),n=x(u),r=Math.floor(e*l),o=Math.floor(n*f),i=p(r,o),a=y(i);a.drawImage(u,0,0,e,n,0,0,r,o),t(i)}));return c?s.then(function(t){return tt(t,e,n)}):s}function et(u,l){return u.toCanvas().then(function(t){return e=t,n=u.getType(),r=l,o=p(e.width,e.height),i=y(o),90!==(r=r<(c=a=0)?360+r:r)&&270!==r||w(o,o.height,o.width),90!==r&&180!==r||(a=o.width),270!==r&&180!==r||(c=o.height),i.translate(a,c),i.rotate(r*Math.PI/180),i.drawImage(e,0,0),E(o,n);var e,n,r,o,i,a,c})}function nt(a,c){return a.toCanvas().then(function(t){return e=t,n=a.getType(),r=c,o=p(e.width,e.height),i=y(o),"v"===r?(i.scale(1,-1),i.drawImage(e,0,-o.height)):(i.scale(-1,1),i.drawImage(e,-o.width,0)),E(o,n);var e,n,r,o,i})}function rt(a,c,u,l,f){return a.toCanvas().then(function(t){return e=t,n=a.getType(),r=c,o=u,y(i=p(l,f)).drawImage(e,-r,-o),E(i,n);var e,n,r,o,i})}var ot=function(t){return F(t)},it=function(t){return K(t)},at=function(t){return J(t)},ct=function(t,e){return Z(t,e)},ut=function(t,e){return Q(t,e)},lt=function(t,e,n,r){return Y(t,e,n,r)},ft=function(t,e){return V(t,e)},st=function(t,e){return W(t,e)},dt=function(t,e){return N(t,e)},ht=function(t,e){return q(t,e)},pt=function(t,e){return $(t,e)},mt=function(t,e){return X(t,e)},gt=function(t,e){return nt(t,e)},vt=function(t,e,n,r,o){return rt(t,e,n,r,o)},yt=function(t,e,n){return o=e,i=n,(r=t).toCanvas().then(function(t){return tt(t,o,i).then(function(t){return E(t,r.getType())})});var r,o,i},wt=function(t,e){return et(t,e)},bt=function(t){return A(t)},xt="undefined"!=typeof m.window?m.window:Function("return this;")(),kt=function(t,e){return function(t,e){for(var n=e!==undefined&&null!==e?e:xt,r=0;r<t.length&&n!==undefined&&null!==n;++r)n=n[t[r]];return n}(t.split("."),e)},Rt=function(t,e){var n=kt(t,e);if(n===undefined||null===n)throw new Error(t+" not available on this browser");return n},It=function(){return Rt("URL")},Mt={createObjectURL:function(t){return It().createObjectURL(t)},revokeObjectURL:function(t){It().revokeObjectURL(t)}},Tt=tinymce.util.Tools.resolve("tinymce.util.Delay"),Ut=tinymce.util.Tools.resolve("tinymce.util.Promise"),Ct=tinymce.util.Tools.resolve("tinymce.util.URI"),At=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Et=tinymce.util.Tools.resolve("tinymce.ui.Factory"),Ot=tinymce.util.Tools.resolve("tinymce.geom.Rect"),_t=function(n){return new Ut(function(t){var e=function(){n.removeEventListener("load",e),t(n)};n.complete?t(n):n.addEventListener("load",e)})},jt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),zt=tinymce.util.Tools.resolve("tinymce.util.Observable"),Lt=tinymce.util.Tools.resolve("tinymce.util.VK"),Bt=0,St={create:function(t){return new(Et.get("Control").extend({Defaults:{classes:"imagepanel"},selection:function(t){return arguments.length?(this.state.set("rect",t),this):this.state.get("rect")},imageSize:function(){var t=this.state.get("viewRect");return{w:t.w,h:t.h}},toggleCropRect:function(t){this.state.set("cropEnabled",t)},imageSrc:function(t){var o=this,i=new m.Image;i.src=t,_t(i).then(function(){var t,e,n=o.state.get("viewRect");if((e=o.$el.find("img"))[0])e.replaceWith(i);else{var r=m.document.createElement("div");r.className="mce-imagepanel-bg",o.getEl().appendChild(r),o.getEl().appendChild(i)}t={x:0,y:0,w:i.naturalWidth,h:i.naturalHeight},o.state.set("viewRect",t),o.state.set("rect",Ot.inflate(t,-20,-20)),n&&n.w===t.w&&n.h===t.h||o.zoomFit(),o.repaintImage(),o.fire("load")})},zoom:function(t){return arguments.length?(this.state.set("zoom",t),this):this.state.get("zoom")},postRender:function(){return this.imageSrc(this.settings.imageSrc),this._super()},zoomFit:function(){var t,e,n,r,o,i;t=this.$el.find("img"),e=this.getEl().clientWidth,n=this.getEl().clientHeight,r=t[0].naturalWidth,o=t[0].naturalHeight,1<=(i=Math.min((e-10)/r,(n-10)/o))&&(i=1),this.zoom(i)},repaintImage:function(){var t,e,n,r,o,i,a,c,u,l,f;f=this.getEl(),u=this.zoom(),l=this.state.get("rect"),a=this.$el.find("img"),c=this.$el.find(".mce-imagepanel-bg"),o=f.offsetWidth,i=f.offsetHeight,n=a[0].naturalWidth*u,r=a[0].naturalHeight*u,t=Math.max(0,o/2-n/2),e=Math.max(0,i/2-r/2),a.css({left:t,top:e,width:n,height:r}),c.css({left:t,top:e,width:n,height:r}),this.cropRect&&(this.cropRect.setRect({x:l.x*u+t,y:l.y*u+e,w:l.w*u,h:l.h*u}),this.cropRect.setClampRect({x:t,y:e,w:n,h:r}),this.cropRect.setViewPortRect({x:0,y:0,w:o,h:i}))},bindStates:function(){var r=this;function n(t){r.cropRect=function(l,n,f,r,o){var s,a,t,i,e="mce-",c=e+"crid-"+Bt++;function d(t,e){return{x:e.x-t.x,y:e.y-t.y,w:e.w,h:e.h}}function u(t,e,n,r){var o,i,a,c,u;o=e.x,i=e.y,a=e.w,c=e.h,o+=n*t.deltaX,i+=r*t.deltaY,(a+=n*t.deltaW)<20&&(a=20),(c+=r*t.deltaH)<20&&(c=20),u=l=Ot.clamp({x:o,y:i,w:a,h:c},f,"move"===t.name),u=d(f,u),s.fire("updateRect",{rect:u}),m(u)}function h(e){function t(t,e){e.h<0&&(e.h=0),e.w<0&&(e.w=0),jt("#"+c+"-"+t,r).css({left:e.x,top:e.y,width:e.w,height:e.h})}G.each(a,function(t){jt("#"+c+"-"+t.name,r).css({left:e.w*t.xMul+e.x,top:e.h*t.yMul+e.y})}),t("top",{x:n.x,y:n.y,w:n.w,h:e.y-n.y}),t("right",{x:e.x+e.w,y:e.y,w:n.w-e.x-e.w+n.x,h:e.h}),t("bottom",{x:n.x,y:e.y+e.h,w:n.w,h:n.h-e.y-e.h+n.y}),t("left",{x:n.x,y:e.y,w:e.x-n.x,h:e.h}),t("move",e)}function p(t){h(l=t)}function m(t){var e,n;p((e=f,{x:(n=t).x+e.x,y:n.y+e.y,w:n.w,h:n.h}))}return a=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}],i=["top","right","bottom","left"],jt('<div id="'+c+'" class="'+e+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(r),G.each(i,function(t){jt("#"+c,r).append('<div id="'+c+"-"+t+'"class="'+e+'croprect-block" style="display: none" data-mce-bogus="all">')}),G.each(a,function(t){jt("#"+c,r).append('<div id="'+c+"-"+t.name+'" class="'+e+"croprect-handle "+e+"croprect-handle-"+t.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+t.label+'" aria-grabbed="false">')}),t=G.map(a,function(e){var n;return new(Et.get("DragHelper"))(c,{document:r.ownerDocument,handle:c+"-"+e.name,start:function(){n=l},drag:function(t){u(e,n,t.deltaX,t.deltaY)}})}),h(l),jt(r).on("focusin focusout",function(t){jt(t.target).attr("aria-grabbed","focus"===t.type)}),jt(r).on("keydown",function(e){var i;function t(t,e,n,r,o){t.stopPropagation(),t.preventDefault(),u(i,n,r,o)}switch(G.each(a,function(t){if(e.target.id===c+"-"+t.name)return i=t,!1}),e.keyCode){case Lt.LEFT:t(e,0,l,-10,0);break;case Lt.RIGHT:t(e,0,l,10,0);break;case Lt.UP:t(e,0,l,0,-10);break;case Lt.DOWN:t(e,0,l,0,10);break;case Lt.ENTER:case Lt.SPACEBAR:e.preventDefault(),o()}}),s=G.extend({toggleVisibility:function(t){var e;e=G.map(a,function(t){return"#"+c+"-"+t.name}).concat(G.map(i,function(t){return"#"+c+"-"+t})).join(","),t?jt(e,r).show():jt(e,r).hide()},setClampRect:function(t){f=t,h(l)},setRect:p,getInnerRect:function(){return d(f,l)},setInnerRect:m,setViewPortRect:function(t){n=t,h(l)},destroy:function(){G.each(t,function(t){t.destroy()}),t=[]}},zt)}(t,r.state.get("viewRect"),r.state.get("viewRect"),r.getEl(),function(){r.fire("crop")}),r.cropRect.on("updateRect",function(t){var e=t.rect,n=r.zoom();e={x:Math.round(e.x/n),y:Math.round(e.y/n),w:Math.round(e.w/n),h:Math.round(e.h/n)},r.state.set("rect",e)}),r.on("remove",r.cropRect.destroy)}r.state.on("change:cropEnabled",function(t){r.cropRect.toggleVisibility(t.value),r.repaintImage()}),r.state.on("change:zoom",function(){r.repaintImage()}),r.state.on("change:rect",function(t){var e=t.value;r.cropRect||n(e),r.cropRect.setRect(e)})}}))(t)}};function Pt(t){return{blob:t,url:Mt.createObjectURL(t)}}function Ht(t){t&&Mt.revokeObjectURL(t.url)}function Dt(t){G.each(t,Ht)}function Ft(i,a,t,e){var c,n,r,u,o,l,f,s,d,h,p,m,g,v,y,w,b,x,k,R,I,M,T,U,C,A,E,O=function(){var n=[],r=-1;function t(){return 0<r}function e(){return-1!==r&&r<n.length-1}return{data:n,add:function(t){var e;return e=n.splice(++r),n.push(t),{state:t,removed:e}},undo:function(){if(t())return n[--r]},redo:function(){if(e())return n[++r]},canUndo:t,canRedo:e}}(),_=function(t){return i.rtl?t.reverse():t};function j(t){var e,n,r,o;e=c.find("#w")[0],n=c.find("#h")[0],r=parseInt(e.value(),10),o=parseInt(n.value(),10),c.find("#constrain")[0].checked()&&U&&C&&r&&o&&("w"===t.control.settings.name?(o=Math.round(r*A),n.value(o)):(r=Math.round(o*E),e.value(r))),U=r,C=o}function z(t){return Math.round(100*t)+"%"}function L(){c.find("#undo").disabled(!O.canUndo()),c.find("#redo").disabled(!O.canRedo()),c.statusbar.find("#save").disabled(!O.canUndo())}function B(){c.find("#undo").disabled(!0),c.find("#redo").disabled(!0)}function S(t){t&&s.imageSrc(t.url)}function P(e){return function(){var t=G.grep(T,function(t){return t.settings.name!==e});G.each(t,function(t){t.hide()}),e.show(),e.focus()}}function H(t){S(u=Pt(t))}function D(t){S(a=Pt(t)),Dt(O.add(a).removed),L()}function F(){var e=s.selection();bt(a.blob).then(function(t){vt(t,e.x,e.y,e.w,e.h).then($).then(function(t){D(t),W()})})}var V=function(e){var n=[].slice.call(arguments,1);return function(){bt((u||a).blob).then(function(t){e.apply(this,[t].concat(n)).then($).then(H)})}};function W(){S(a),Ht(u),P(n)(),L()}function N(){u?(D(u.blob),W()):function t(e,n){u?n():setTimeout(function(){0<e--?t(e,n):i.windowManager.alert("Error: failed to apply image operation.")},10)}(100,N)}function q(t){return Et.create("Form",{layout:"flex",direction:"row",labelGap:5,border:"0 0 1 0",align:"center",pack:"center",padding:"0 10 0 10",spacing:5,flex:0,minHeight:60,defaults:{classes:"imagetool",type:"button"},items:t})}var $=function(t){return t.toBlob()};function X(t,e){return q(_([{text:"Back",onclick:W},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:N}])).hide().on("show",function(){B(),bt(a.blob).then(function(t){return e(t)}).then($).then(function(t){var e=Pt(t);S(e),Ht(u),u=e})})}function Y(t,n,e,r,o){return q(_([{text:"Back",onclick:W},{type:"spacer",flex:1},{type:"slider",flex:1,ondragend:function(t){var e;e=t.value,bt(a.blob).then(function(t){return n(t,e)}).then($).then(function(t){var e=Pt(t);S(e),Ht(u),u=e})},minValue:i.rtl?o:r,maxValue:i.rtl?r:o,value:e,previewFilter:z},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:N}])).hide().on("show",function(){this.find("slider").value(e),B()})}o=q(_([{text:"Back",onclick:W},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:F}])).hide().on("show hide",function(t){s.toggleCropRect("show"===t.type)}).on("show",B),l=q(_([{text:"Back",onclick:W},{type:"spacer",flex:1},{type:"textbox",name:"w",label:"Width",size:4,onkeyup:j},{type:"textbox",name:"h",label:"Height",size:4,onkeyup:j},{type:"checkbox",name:"constrain",text:"Constrain proportions",checked:!0,onchange:function(t){!0===t.control.value()&&(A=C/U,E=U/C)}},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:"submit"}])).hide().on("submit",function(t){var e=parseInt(c.find("#w").value(),10),n=parseInt(c.find("#h").value(),10);t.preventDefault(),function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=[].slice.call(arguments,1);return function(){bt(a.blob).then(function(t){e.apply(this,[t].concat(r)).then($).then(D)})}}(yt,e,n)(),W()}).on("show",B),f=q(_([{text:"Back",onclick:W},{type:"spacer",flex:1},{icon:"fliph",tooltip:"Flip horizontally",onclick:V(gt,"h")},{icon:"flipv",tooltip:"Flip vertically",onclick:V(gt,"v")},{icon:"rotateleft",tooltip:"Rotate counterclockwise",onclick:V(wt,-90)},{icon:"rotateright",tooltip:"Rotate clockwise",onclick:V(wt,90)},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:N}])).hide().on("show",B),p=X(0,ot),k=X(0,it),R=X(0,at),m=Y(0,ft,0,-1,1),g=Y(0,st,180,0,360),v=Y(0,dt,0,-1,1),y=Y(0,ht,0,-1,1),w=Y(0,pt,0,0,1),b=Y(0,mt,0,0,1),x=function(t,o){function e(){var e,n,r;e=c.find("#r")[0].value(),n=c.find("#g")[0].value(),r=c.find("#b")[0].value(),bt(a.blob).then(function(t){return o(t,e,n,r)}).then($).then(function(t){var e=Pt(t);S(e),Ht(u),u=e})}var n=i.rtl?2:0,r=i.rtl?0:2;return q(_([{text:"Back",onclick:W},{type:"spacer",flex:1},{type:"slider",label:"R",name:"r",minValue:n,value:1,maxValue:r,ondragend:e,previewFilter:z},{type:"slider",label:"G",name:"g",minValue:n,value:1,maxValue:r,ondragend:e,previewFilter:z},{type:"slider",label:"B",name:"b",minValue:n,value:1,maxValue:r,ondragend:e,previewFilter:z},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:N}])).hide().on("show",function(){c.find("#r,#g,#b").value(1),B()})}(0,lt),I=Y(0,ct,0,-1,1),M=Y(0,ut,1,0,2),r=q(_([{text:"Back",onclick:W},{type:"spacer",flex:1},{text:"hue",icon:"hue",onclick:P(g)},{text:"saturate",icon:"saturate",onclick:P(v)},{text:"sepia",icon:"sepia",onclick:P(b)},{text:"emboss",icon:"emboss",onclick:P(R)},{text:"exposure",icon:"exposure",onclick:P(M)},{type:"spacer",flex:1}])).hide(),n=q(_([{tooltip:"Crop",icon:"crop",onclick:P(o)},{tooltip:"Resize",icon:"resize2",onclick:P(l)},{tooltip:"Orientation",icon:"orientation",onclick:P(f)},{tooltip:"Brightness",icon:"sun",onclick:P(m)},{tooltip:"Sharpen",icon:"sharpen",onclick:P(k)},{tooltip:"Contrast",icon:"contrast",onclick:P(y)},{tooltip:"Color levels",icon:"drop",onclick:P(x)},{tooltip:"Gamma",icon:"gamma",onclick:P(I)},{tooltip:"Invert",icon:"invert",onclick:P(p)}])),s=St.create({flex:1,imageSrc:a.url}),d=Et.create("Container",{layout:"flex",direction:"column",pack:"start",border:"0 1 0 0",padding:5,spacing:5,items:[{type:"button",icon:"undo",tooltip:"Undo",name:"undo",onclick:function(){S(a=O.undo()),L()}},{type:"button",icon:"redo",tooltip:"Redo",name:"redo",onclick:function(){S(a=O.redo()),L()}},{type:"button",icon:"zoomin",tooltip:"Zoom in",onclick:function(){var t=s.zoom();t<2&&(t+=.1),s.zoom(t)}},{type:"button",icon:"zoomout",tooltip:"Zoom out",onclick:function(){var t=s.zoom();.1<t&&(t-=.1),s.zoom(t)}}]}),h=Et.create("Container",{type:"container",layout:"flex",direction:"row",align:"stretch",flex:1,items:_([d,s])}),T=[n,o,l,f,r,p,m,g,v,y,w,b,x,k,R,I,M],(c=i.windowManager.open({layout:"flex",direction:"column",align:"stretch",minWidth:Math.min(At.DOM.getViewPort().w,800),minHeight:Math.min(At.DOM.getViewPort().h,650),title:"Edit image",items:T.concat([h]),buttons:_([{text:"Save",name:"save",subtype:"primary",onclick:function(){t(a.blob),c.close()}},{text:"Cancel",onclick:"close"}])})).on("close",function(){e(),Dt(O.data),u=O=null}),O.add(a),L(),s.on("load",function(){U=s.imageSize().w,C=s.imageSize().h,A=C/U,E=U/C,c.find("#w").value(U),c.find("#h").value(C)}),s.on("crop",F)}var Vt,Wt={edit:function(r,t){return new Ut(function(e,n){return t.toBlob().then(function(t){Ft(r,Pt(t),e,n)})})}},Nt={getImageSize:function(t){var e,n;function r(t){return/^[0-9\.]+px$/.test(t)}return e=t.style.width,n=t.style.height,e||n?r(e)&&r(n)?{w:parseInt(e,10),h:parseInt(n,10)}:null:(e=t.width,n=t.height,e&&n?{w:parseInt(e,10),h:parseInt(n,10)}:null)},setImageSize:function(t,e){var n,r;e&&(n=t.style.width,r=t.style.height,(n||r)&&(t.style.width=e.w+"px",t.style.height=e.h+"px",t.removeAttribute("data-mce-style")),n=t.width,r=t.height,(n||r)&&(t.setAttribute("width",e.w),t.setAttribute("height",e.h)))},getNaturalImageSize:function(t){return{w:t.naturalWidth,h:t.naturalHeight}}},qt=(Vt="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"===e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===Vt}),$t=(Array.prototype.slice,function(t,e){for(var n=0,r=t.length;n<r;n++){var o=t[n];if(e(o,n))return g.some(o)}return g.none()});qt(Array.from)&&Array.from;var Xt=function(t){return null!==t&&t!==undefined},Yt=function(t,e){var n;return n=e.reduce(function(t,e){return Xt(t)?t[e]:undefined},t),Xt(n)?n:null},Gt=function(e){return new Ut(function(n){var t=new(Rt("FileReader"));t.onload=function(t){var e=t.target;n(e.result)},t.readAsText(e)})},Kt=function(e,r,o){return new Ut(function(t){var n;(n=new(Rt("XMLHttpRequest"))).onreadystatechange=function(){4===n.readyState&&t({status:n.status,blob:this.response})},n.open("GET",e,!0),n.withCredentials=o,G.each(r,function(t,e){n.setRequestHeader(e,t)}),n.responseType="blob",n.send()})},Jt=function(t){var e;try{e=JSON.parse(t)}catch(n){}return e},Zt=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],Qt=[{type:"key_missing",message:"The request did not include an api key."},{type:"key_not_found",message:"The provided api key could not be found."},{type:"domain_not_trusted",message:"The api key is not valid for the request origins."}],te=function(e){return"ImageProxy HTTP error: "+$t(Zt,function(t){return e===t.code}).fold(i("Unknown ImageProxy error"),function(t){return t.message})},ee=function(t){var e=te(t);return Ut.reject(e)},ne=function(e){return $t(Qt,function(t){return t.type===e}).fold(i("Unknown service error"),function(t){return t.message})},re=function(t,e){return Gt(e).then(function(t){var e,n,r=(e=Jt(t),"ImageProxy Service error: "+((n=Yt(e,["error","type"]))?ne(n):"Invalid JSON in service error message"));return Ut.reject(r)})},oe=function(t,e){return 400===(n=t)||403===n||500===n?re(0,e):ee(t);var n},ie=ee,ae=function(t,e){var n,r,o,i={"Content-Type":"application/json;charset=UTF-8","tiny-api-key":e};return Kt((n=t,r=e,o=-1===n.indexOf("?")?"?":"&",/[?&]apiKey=/.test(n)||!r?n:n+o+"apiKey="+encodeURIComponent(r)),i,!1).then(function(t){return t.status<200||300<=t.status?oe(t.status,t.blob):Ut.resolve(t.blob)})},ce=function(t,e,n){return e?ae(t,e):Kt(t,{},n).then(function(t){return t.status<200||300<=t.status?ie(t.status):Ut.resolve(t.blob)})},ue=0,le=function(t,e){t.notificationManager.open({text:e,type:"error"})},fe=function(t){return t.selection.getNode()},se=function(t,e){var n=e.src;return 0===n.indexOf("data:")||0===n.indexOf("blob:")||new Ct(n).host===t.documentBaseURI.host},de=function(t,e){return-1!==G.inArray(t.getParam("imagetools_cors_hosts",[],"string[]"),new Ct(e.src).host)},he=function(t,e){var n,r,o,i,a=e.src;return de(t,e)?ce(e.src,null,(r=t,o=e,-1!==G.inArray(r.getParam("imagetools_credentials_hosts",[],"string[]"),new Ct(o.src).host))):se(t,e)?R(e):(a=t.getParam("imagetools_proxy"),a+=(-1===a.indexOf("?")?"?":"&")+"url="+encodeURIComponent(e.src),n=(i=t).getParam("api_key",i.getParam("imagetools_api_key","","string"),"string"),ce(a,n,!1))},pe=function(t){var e;return(e=t.editorUpload.blobCache.getByUri(fe(t).src))?Ut.resolve(e.blob()):he(t,fe(t))},me=function(t){clearTimeout(t.get())},ge=function(u,l,f,s,d){return l.toBlob().then(function(t){var e,n,r,o,i,a,c;return r=u.editorUpload.blobCache,e=(i=fe(u)).src,u.getParam("images_reuse_filename",!1,"boolean")&&((o=r.getByUri(e))?(e=o.uri(),n=o.name()):(a=u,n=(c=e.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i))?a.dom.encode(c[1]):null)),o=r.create({id:"imagetools"+ue++,blob:t,base64:l.toBase64(),uri:e,name:n}),r.add(o),u.undoManager.transact(function(){u.$(i).on("load",function t(){var e,n,r;u.$(i).off("load",t),u.nodeChanged(),f?u.editorUpload.uploadImagesAuto():(me(s),e=u,n=s,r=Tt.setEditorTimeout(e,function(){e.editorUpload.uploadImagesAuto()},e.getParam("images_upload_timeout",3e4,"number")),n.set(r))}),d&&u.$(i).attr({width:d.w,height:d.h}),u.$(i).attr({src:o.blobUri()}).removeAttr("data-mce-src")}),o})},ve=function(e,n,t,r){return function(){return e._scanForImages().then(a(pe,e)).then(bt).then(t).then(function(t){return ge(e,t,!1,n,r)},function(t){le(e,t)})}},ye=function(n,r,o){return function(){var t=Nt.getImageSize(fe(n)),e=t?{w:t.h,h:t.w}:null;return ve(n,r,function(t){return wt(t,o)},e)()}},we=function(t,e,n){return function(){return ve(t,e,function(t){return gt(t,n)})()}},be=function(e,r){return function(){var o=fe(e),i=Nt.getNaturalImageSize(o),n=function(r){return new Ut(function(n){var t;(t=r,I(t)).then(function(t){var e=Nt.getNaturalImageSize(t);i.w===e.w&&i.h===e.h||Nt.getImageSize(o)&&Nt.setImageSize(o,e),Mt.revokeObjectURL(t.src),n(r)})})};pe(e).then(bt).then(a(function(e,t){return Wt.edit(e,t).then(n).then(bt).then(function(t){return ge(e,t,!0,r)},function(){})},e),function(t){le(e,t)})}},xe=function(t,e){return t.dom.is(e,"img:not([data-mce-object],[data-mce-placeholder])")&&(se(t,e)||de(t,e)||t.settings.imagetools_proxy)},ke=me,Re=function(n,t){G.each({mceImageRotateLeft:ye(n,t,-90),mceImageRotateRight:ye(n,t,90),mceImageFlipVertical:we(n,t,"v"),mceImageFlipHorizontal:we(n,t,"h"),mceEditImage:be(n,t)},function(t,e){n.addCommand(e,t)})},Ie=function(n,r,o){n.on("NodeChange",function(t){var e=o.get();e&&e.src!==t.element.src&&(ke(r),n.editorUpload.uploadImagesAuto(),o.set(null)),xe(n,t.element)&&o.set(t.element)})},Me=function(t){t.addButton("rotateleft",{title:"Rotate counterclockwise",cmd:"mceImageRotateLeft"}),t.addButton("rotateright",{title:"Rotate clockwise",cmd:"mceImageRotateRight"}),t.addButton("flipv",{title:"Flip vertically",cmd:"mceImageFlipVertical"}),t.addButton("fliph",{title:"Flip horizontally",cmd:"mceImageFlipHorizontal"}),t.addButton("editimage",{title:"Edit image",cmd:"mceEditImage"}),t.addButton("imageoptions",{title:"Image options",icon:"options",cmd:"mceImage"})},Te=function(t){t.addContextToolbar(a(xe,t),t.getParam("imagetools_toolbar","rotateleft rotateright | flipv fliph | crop editimage imageoptions"))};t.add("imagetools",function(t){var e=r(0),n=r(null);Re(t,e),Me(t),Te(t),Ie(t,e,n)})}(window);
\ No newline at end of file
-!function(u){"use strict";var e,n,t,r,o,i,a,s,c=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),d=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),l=tinymce.util.Tools.resolve("tinymce.util.VK"),p=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),m=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),g=function(e){return e&&"BR"===e.nodeName},h=function(e){return e&&3===e.nodeType},y=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},N=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},S=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},C=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},O=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},b=g,T=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},D=function(e,n){return e&&e.nodeName in n},L=function(e,n){return!!g(n)&&!(!e.isBlock(n.nextSibling)||g(n.previousSibling))},E=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},w=function(e,n){return e.isChildOf(n,e.getRoot())},k=function(e,n){if(h(e))return{container:e,offset:n};var t=f.getNode(e,n);return h(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&h(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&h(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}},A=function(e){var n=e.cloneRange(),t=k(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=k(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},x=m.DOM,R=function(o){var i={},e=function(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=x.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):x.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r};return e(!0),o.collapsed||e(),i},I=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,x.remove(r),!n.hasChildNodes()&&x.isBlock(n)&&n.appendChild(x.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=x.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),A(n)},_=function(e){return function(){return e}},B=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}},P=_(!1),M=_(!0),U=P,F=M,j=function(){return H},H=(r={fold:function(e,n){return e()},is:U,isSome:U,isNone:F,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:t,orThunk:n,map:j,ap:j,each:function(){},bind:j,flatten:j,exists:U,forall:F,filter:j,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:_("none()")},Object.freeze&&Object.freeze(r),r),$=function(t){var e=function(){return t},n=function(){return o},r=function(e){return e(t)},o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:F,isNone:U,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return $(e(t))},ap:function(e){return e.fold(j,function(e){return $(e(t))})},each:function(e){e(t)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(t)?o:H},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(U,function(e){return n(t,e)})},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return o},q={some:$,none:j,from:function(e){return null===e||e===undefined?H:$(e)}},W=function(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"===n&&Array.prototype.isPrototypeOf(e)?"array":"object"===n&&String.prototype.isPrototypeOf(e)?"string":n}(e)===n}},z=W("string"),K=W("boolean"),V=W("function"),X=W("number"),Q=function(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o,e)}return r},Y=function(e,n){for(var t=0,r=e.length;t<r;t++)n(e[t],t,e)},G=function(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r,e)&&t.push(i)}return t},J=function(e,n,t){return Y(e,function(e){t=n(t,e)}),t},Z=function(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t,e))return q.some(o)}return q.none()},ee=Array.prototype.push,ne=function(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!Array.prototype.isPrototypeOf(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);ee.apply(n,e[t])}return n}(Q(e,n))},te=Array.prototype.slice,re=function(e){return 0===e.length?q.none():q.some(e[0])},oe=function(e){return 0===e.length?q.none():q.some(e[e.length-1])},ie=(V(Array.from)&&Array.from,"undefined"!=typeof u.window?u.window:Function("return this;")()),ue=function(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:ie,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)},ae=function(e,n){var t=ue(e,n);if(t===undefined||null===t)throw e+" not available on this browser";return t},se=function(e){var n,t=ue("ownerDocument.defaultView",e);return(n=t,ae("HTMLElement",n)).prototype.isPrototypeOf(e)},ce=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),fe=function(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",le(e,n))},de=function(e){var t,n,r,o=e.selection.getSelectedBlocks();return v.grep((t=e,n=o,r=v.map(n,function(e){var n=t.dom.getParent(e,"li,dd,dt",le(t,e));return n||e}),ce.unique(r)),function(e){return C(e)})},le=function(e,n){var t=e.dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},me=function(e,n){var t=e.dom.getParents(n,"ol,ul",le(e,n));return oe(t)},ge=function(n,e){var t=Q(e,function(e){return me(n,e).getOr(e)});return ce.unique(t)},pe={isList:function(e){var n=fe(e);return se(n)},getParentList:fe,getSelectedSubLists:function(e){var n,t,r,o=fe(e),i=e.selection.getSelectedBlocks();return r=i,(t=o)&&1===r.length&&r[0]===t?(n=o,v.grep(n.querySelectorAll("ol,ul,dl"),function(e){return y(e)})):v.grep(i,function(e){return y(e)&&o!==e})},getSelectedListItems:de,getClosestListRootElm:le,getSelectedDlItems:function(e){return G(de(e),S)},getSelectedListRoots:function(e){var n,t,r,o=(t=me(n=e,n.selection.getStart()),r=G(n.selection.getSelectedBlocks(),N),t.toArray().concat(r));return ge(e,o)}},ve=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:_(e)}},he={fromHtml:function(e,n){var t=(n||u.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw u.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ve(t.childNodes[0])},fromTag:function(e,n){var t=(n||u.document).createElement(e);return ve(t)},fromText:function(e,n){var t=(n||u.document).createTextNode(e);return ve(t)},fromDom:ve,fromPoint:function(e,n,t){var r=e.dom();return q.from(r.elementFromPoint(n,t)).map(ve)}},ye=function(e,n){for(var t=[],r=0;r<e.length;r++){var o=e[r];if(!o.isSome())return q.none();t.push(o.getOrDie())}return q.some(n.apply(null,t))},Ne=Object.keys,Se=function(){return ae("Node")},Ce=function(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)},Oe=function(e,n){return Ce(e,n,Se().DOCUMENT_POSITION_CONTAINED_BY)},be=function(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};var r=function(e){return Number(n.replace(t,"$"+e))};return De(r(1),r(2))},Te=function(){return De(0,0)},De=function(e,n){return{major:e,minor:n}},Le={nu:De,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Te():be(e,t)},unknown:Te},Ee="Firefox",we=function(e,n){return function(){return n===e}},ke=function(e){var n=e.current;return{current:n,version:e.version,isEdge:we("Edge",n),isChrome:we("Chrome",n),isIE:we("IE",n),isOpera:we("Opera",n),isFirefox:we(Ee,n),isSafari:we("Safari",n)}},Ae={unknown:function(){return ke({current:undefined,version:Le.unknown()})},nu:ke,edge:_("Edge"),chrome:_("Chrome"),ie:_("IE"),opera:_("Opera"),firefox:_(Ee),safari:_("Safari")},xe="Windows",Re="Android",Ie="Solaris",_e="FreeBSD",Be=function(e,n){return function(){return n===e}},Pe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:Be(xe,n),isiOS:Be("iOS",n),isAndroid:Be(Re,n),isOSX:Be("OSX",n),isLinux:Be("Linux",n),isSolaris:Be(Ie,n),isFreeBSD:Be(_e,n)}},Me={unknown:function(){return Pe({current:undefined,version:Le.unknown()})},nu:Pe,windows:_(xe),ios:_("iOS"),android:_(Re),linux:_("Linux"),osx:_("OSX"),solaris:_(Ie),freebsd:_(_e)},Ue=function(e,n){var t=String(n).toLowerCase();return Z(e,function(e){return e.search(t)})},Fe=function(e,t){return Ue(e,t).map(function(e){var n=Le.detect(e.versionRegexes,t);return{current:e.name,version:n}})},je=function(e,t){return Ue(e,t).map(function(e){var n=Le.detect(e.versionRegexes,t);return{current:e.name,version:n}})},He=function(e,n){return-1!==e.indexOf(n)},$e=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,qe=function(n){return function(e){return He(e,n)}},We=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return He(e,"edge/")&&He(e,"chrome")&&He(e,"safari")&&He(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,$e],search:function(e){return He(e,"chrome")&&!He(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return He(e,"msie")||He(e,"trident")}},{name:"Opera",versionRegexes:[$e,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:qe("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:qe("firefox")},{name:"Safari",versionRegexes:[$e,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(He(e,"safari")||He(e,"mobile/"))&&He(e,"applewebkit")}}],ze=[{name:"Windows",search:qe("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return He(e,"iphone")||He(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:qe("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:qe("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:qe("linux"),versionRegexes:[]},{name:"Solaris",search:qe("sunos"),versionRegexes:[]},{name:"FreeBSD",search:qe("freebsd"),versionRegexes:[]}],Ke={browsers:_(We),oses:_(ze)},Ve=function(e){var n,t,r,o,i,u,a,s,c,f,d,l=Ke.browsers(),m=Ke.oses(),g=Fe(l,e).fold(Ae.unknown,Ae.nu),p=je(m,e).fold(Me.unknown,Me.nu);return{browser:g,os:p,deviceType:(t=g,r=e,o=(n=p).isiOS()&&!0===/ipad/i.test(r),i=n.isiOS()&&!o,u=n.isAndroid()&&3===n.version.major,a=n.isAndroid()&&4===n.version.major,s=o||u||a&&!0===/mobile/i.test(r),c=n.isiOS()||n.isAndroid(),f=c&&!s,d=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(r),{isiPad:_(o),isiPhone:_(i),isTablet:_(s),isPhone:_(f),isTouch:_(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:_(d)})}},Xe={detect:(o=function(){var e=u.navigator.userAgent;return Ve(e)},a=!1,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return a||(a=!0,i=o.apply(null,e)),i})},Qe=(u.Node.ATTRIBUTE_NODE,u.Node.CDATA_SECTION_NODE,u.Node.COMMENT_NODE,u.Node.DOCUMENT_NODE,u.Node.DOCUMENT_TYPE_NODE,u.Node.DOCUMENT_FRAGMENT_NODE,u.Node.ELEMENT_NODE),Ye=(u.Node.TEXT_NODE,u.Node.PROCESSING_INSTRUCTION_NODE,u.Node.ENTITY_REFERENCE_NODE,u.Node.ENTITY_NODE,u.Node.NOTATION_NODE,Qe),Ge=function(e,n){return e.dom()===n.dom()},Je=Xe.detect().browser.isIE()?function(e,n){return Oe(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},Ze=function(e,n){var t=e.dom();if(t.nodeType!==Ye)return!1;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")},en=function(e){var n=e.dom();return q.from(n.parentNode).map(he.fromDom)},nn=function(e){var n=e.dom();return Q(n.childNodes,he.fromDom)},tn=function(e,n){var t=e.dom().childNodes;return q.from(t[n]).map(he.fromDom)},rn=function(e){return tn(e,0)},on=function(e){return tn(e,e.dom().childNodes.length-1)},un=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(n,t){en(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}),an=function(e,n){e.dom().appendChild(n.dom())},sn=function(n,e){Y(e,function(e){an(n,e)})},cn=function(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)},fn=function(e){return e.dom().nodeName.toLowerCase()},dn=function(e,n){var t=e.dom();!function(e,n){for(var t=Ne(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i,e)}}(n,function(e,n){!function(e,n,t){if(!(z(t)||K(t)||X(t)))throw u.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})},ln=function(e){return J(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})},mn=function(e,n,t){if(!z(t))throw u.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);e.style!==undefined&&e.style.setProperty(n,t)},gn=function(e){return n=e,t=!0,he.fromDom(n.dom().cloneNode(t));var n,t},pn=function(e,n){var t,r,o,i,u=(t=e,r=n,o=he.fromTag(r),i=ln(t),dn(o,i),o);un(e,u);var a=nn(e);return sn(u,a),cn(e),u},vn=function(e,n){an(e.item,n.list)},hn=function(f,e,d){var n=e.slice(0,d.depth);return oe(n).each(function(e){var n,t,r,o,i,u,a,s,c=(n=f,t=d.itemAttributes,r=d.content,o=he.fromTag("li",n),dn(o,t),sn(o,r),o);u=c,an((i=e).list,u),i.item=u,s=d,fn((a=e).list)!==s.listType&&(a.list=pn(a.list,s.listType)),dn(a.list,s.listAttributes)}),n},yn=function(e,n,t){var r,o=function(e,n,t){for(var r,o,i,u=[],a=0;a<t;a++)u.push((r=e,o=n.listType,i={list:he.fromTag(o,r),item:he.fromTag("li",r)},an(i.list,i.item),i));return u}(e,t,t.depth-n.length);return function(e){for(var n=1;n<e.length;n++)vn(e[n-1],e[n])}(o),function(e,n){for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",u=r.dom(),mn(u,o,i);var r,o,i,u;oe(e).each(function(e){dn(e.list,n.listAttributes),dn(e.item,n.itemAttributes),sn(e.item,n.content)})}(o,t),r=o,ye([oe(n),re(r)],vn),n.concat(o)},Nn=function(e){return Ze(e,"OL,UL")},Sn=function(e){return rn(e).map(Nn).getOr(!1)},Cn=function(e){return 0<e.depth},On=function(e){return e.isSelected},bn=function(e){var n=nn(e),t=on(e).map(Nn).getOr(!1)?n.slice(0,-1):n;return Q(t,gn)},Tn=Object.prototype.hasOwnProperty,Dn=(s=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Tn.call(o,i)&&(t[i]=s(t[i],o[i]))}return t}),Ln=function(n){Y(n,function(r,e){(function(e,n){for(var t=e[n].depth,r=n-1;0<=r;r--){if(e[r].depth===t)return q.some(e[r]);if(e[r].depth<t)break}return q.none()})(n,e).each(function(e){var n,t;t=e,(n=r).listType=t.listType,n.listAttributes=Dn({},t.listAttributes)})})},En=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return En(t())}}},wn=function(i,u,a,s){return rn(s).filter(Nn).fold(function(){u.each(function(e){Ge(e.start,s)&&a.set(!0)});var n,t,r,e=(n=s,t=i,r=a.get(),en(n).map(function(e){return{depth:t,isSelected:r,content:bn(n),itemAttributes:ln(n),listAttributes:ln(e),listType:fn(e)}}));u.each(function(e){Ge(e.end,s)&&a.set(!1)});var o=on(s).filter(Nn).map(function(e){return kn(i,u,a,e)}).getOr([]);return e.toArray().concat(o)},function(e){return kn(i,u,a,e)})},kn=function(n,t,r,e){return ne(nn(e),function(e){return(Nn(e)?kn:wn)(n+1,t,r,e)})},An=tinymce.util.Tools.resolve("tinymce.Env"),xn=function(e,n){var t,r,o,i,u=e.dom,a=e.schema.getBlockElements(),s=u.createFragment();if(e.settings.forced_root_block&&(o=e.settings.forced_root_block),o&&((r=u.create(o)).tagName===e.settings.forced_root_block&&u.setAttribs(r,e.settings.forced_root_block_attrs),D(n.firstChild,a)||s.appendChild(r)),n)for(;t=n.firstChild;){var c=t.nodeName;i||"SPAN"===c&&"bookmark"===t.getAttribute("data-mce-type")||(i=!0),D(t,a)?(s.appendChild(t),r=null):o?(r||(r=u.create(o),s.appendChild(r)),r.appendChild(t)):s.appendChild(t)}return e.settings.forced_root_block?i||An.ie&&!(10<An.ie)||r.appendChild(u.create("br",{"data-mce-bogus":"1"})):s.appendChild(u.create("br")),s},Rn=function(i,e){return Q(e,function(e){var n,t,r,o=(n=e.content,r=(t||u.document).createDocumentFragment(),Y(n,function(e){r.appendChild(e.dom())}),he.fromDom(r));return he.fromDom(xn(i,o.dom()))})},In=function(e,n){return Ln(n),(t=e.contentDocument,r=n,o=J(r,function(e,n){return n.depth>e.length?yn(t,e,n):hn(t,e,n)},[]),re(o).map(function(e){return e.list})).toArray();var t,r,o},_n=function(e){var n,t,r=Q(pe.getSelectedListItems(e),he.fromDom);return ye([Z(r,B(Sn)),Z((n=r,t=te.call(n,0),t.reverse(),t),B(Sn))],function(e,n){return{start:e,end:n}})},Bn=function(a,e,s){var n,t,r,o=(n=e,t=_n(a),r=En(!1),Q(n,function(e){return{sourceList:e,entries:kn(0,t,r,e)}}));Y(o,function(e){var n,t,r,o,i,u;n=e.entries,t=s,Y(G(n,On),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(t,e)}),r=e.sourceList,i=a,u=e.entries,o=ne(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var a=e[i],s=n(a);s!==t&&(r.push(o),o=[]),t=s,o.push(a)}return 0!==o.length&&r.push(o),r}(u,Cn),function(e){return re(e).map(Cn).getOr(!1)?In(i,e):Rn(i,e)}),Y(o,function(e){un(r,e)}),cn(e.sourceList)})},Pn=m.DOM,Mn=function(e,n,t){var r,o,i,u,a,s;for(i=Pn.select('span[data-mce-type="bookmark"]',n),a=xn(e,t),(r=Pn.createRng()).setStartAfter(t),r.setEndAfter(n),u=(o=r.extractContents()).firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){Pn.remove(u);break}e.dom.isEmpty(o)||Pn.insertAfter(o,n),Pn.insertAfter(a,n),E(e.dom,t.parentNode)&&(s=t.parentNode,v.each(i,function(e){s.parentNode.insertBefore(e,t.parentNode)}),Pn.remove(s)),Pn.remove(t),E(e.dom,n)&&Pn.remove(n)},Un=function(e){Ze(e,"DT")&&pn(e,"DD")},Fn=function(r,e,n){Y(n,"Indent"===e?Un:function(e){return n=r,void(Ze(t=e,"DD")?pn(t,"DT"):Ze(t,"DT")&&en(t).each(function(e){return Mn(n,e.dom(),t.dom())}));var n,t})},jn=function(e,n){var t=Q(pe.getSelectedListRoots(e),he.fromDom),r=Q(pe.getSelectedDlItems(e),he.fromDom),o=!1;if(t.length||r.length){var i=e.selection.getBookmark();Bn(e,t,n),Fn(e,n,r),e.selection.moveToBookmark(i),e.selection.setRng(A(e.selection.getRng())),e.nodeChanged(),o=!0}return o},Hn=function(e){return jn(e,"Indent")},$n=function(e){return jn(e,"Outdent")},qn=function(e){return jn(e,"Flatten")},Wn=function(t,e){v.each(e,function(e,n){t.setAttribute(n,e)})},zn=function(e,n,t){var r,o,i,u,a,s,c;r=e,o=n,u=(i=t)["list-style-type"]?i["list-style-type"]:null,r.setStyle(o,"list-style-type",u),a=e,Wn(s=n,(c=t)["list-attributes"]),v.each(a.select("li",s),function(e){Wn(e,c["list-item-attributes"])})},Kn=function(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&b(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(T(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o},Vn=function(f,d,l){void 0===l&&(l={});var e,n=f.selection.getRng(!0),m="LI",t=pe.getClosestListRootElm(f,f.selection.getStart(!0)),g=f.dom;"false"!==g.getContentEditable(f.selection.getNode())&&("DL"===(d=d.toUpperCase())&&(m="DT"),e=R(n),v.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Kn(t,e,!0,r),a=Kn(t,e,!1,r),s=[],c=n;c&&(s.push(c),c!==a);c=c.nextSibling);return v.each(s,function(e){if(T(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||b(e))return b(e)&&u.remove(e),void(o=null);var n=e.nextSibling;p.isBookmarkNode(e)&&(T(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(f,n,t),function(e){var n,t,r,o,i,u,a,s,c;(t=e.previousSibling)&&y(t)&&t.nodeName===d&&(r=t,o=l,i=g.getStyle(r,"list-style-type"),u=o?o["list-style-type"]:"",i===(u=null===u?"":u))?(n=t,e=g.rename(e,m),t.appendChild(e)):(n=g.create(d),e.parentNode.insertBefore(n,e),n.appendChild(e),e=g.rename(e,m)),a=g,s=e,c=["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],v.each(c,function(e){var n;return a.setStyle(s,((n={})[e]="",n))}),zn(g,n,l),Qn(f.dom,n)}),f.selection.setRng(I(e)))},Xn=function(e,n,t){return s=t,(a=n)&&s&&y(a)&&a.nodeName===s.nodeName&&(i=n,u=t,(o=e).getStyle(i,"list-style-type",!0)===o.getStyle(u,"list-style-type",!0))&&(r=t,n.className===r.className);var r,o,i,u,a,s},Qn=function(e,n){var t,r;if(t=n.nextSibling,Xn(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,Xn(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},Yn=function(n,e,t,r,o){if(e.nodeName!==r||Gn(o)){var i=R(n.selection.getRng(!0));v.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.rename(n,t);zn(e,o,r)}else zn(e,n,r)}(n.dom,e,r,o)}),n.selection.setRng(I(i))}else qn(n)},Gn=function(e){return"list-style-type"in e},Jn={toggleList:function(e,n,t){var r=pe.getParentList(e),o=pe.getSelectedSubLists(e);t=t||{},r&&0<o.length?Yn(e,r,o,n,t):function(e,n,t,r){if(n!==e.getBody())if(n)if(n.nodeName!==t||Gn(r)){var o=R(e.selection.getRng(!0));zn(e.dom,n,r),Qn(e.dom,e.dom.rename(n,t)),e.selection.setRng(I(o))}else qn(e);else Vn(e,t,r)}(e,r,n,t)},mergeWithAdjacentLists:Qn},Zn=m.DOM,et=function(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),E(e,r)&&Zn.remove(r)):Zn.setStyle(r,"listStyleType","none")),y(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)},nt=function(n,e){v.each(v.grep(n.select("ol,ul",e)),function(e){et(n,e)})},tt=function(e,n,t,r){var o,i,u=n.startContainer,a=n.startOffset;if(3===u.nodeType&&(t?a<u.data.length:0<a))return u;for(o=e.schema.getNonEmptyElements(),1===u.nodeType&&(u=f.getNode(u,a)),i=new d(u,r),t&&L(e.dom,u)&&i.next();u=i[t?"next":"prev2"]();){if("LI"===u.nodeName&&!u.hasChildNodes())return u;if(o[u.nodeName])return u;if(3===u.nodeType&&0<u.data.length)return u}},rt=function(e,n){var t=n.childNodes;return 1===t.length&&!y(t[0])&&e.isBlock(t[0])},ot=function(e,n,t){var r,o,i,u;if(o=rt(e,t)?t.firstChild:t,rt(i=e,u=n)&&i.remove(u.firstChild,!0),!E(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)},it=function(n,e,t){var r,o,i=e.parentNode;if(w(n,e)&&w(n,t)){y(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&b(i.previousSibling)&&n.remove(i.previousSibling),(r=t.lastChild)&&b(r)&&e.hasChildNodes()&&n.remove(r),E(n,t,!0)&&n.$(t).empty(),ot(n,e,t),o&&t.appendChild(o);var u=Je(he.fromDom(t),he.fromDom(e))?n.getParents(e,y,t):[];n.remove(e),Y(u,function(e){E(n,e)&&e!==n.getRoot()&&n.remove(e)})}},ut=function(e,n,t,r){var o,i,u,a=e.dom;if(a.isEmpty(r))i=t,u=r,(o=e).dom.$(u).empty(),it(o.dom,i,u),o.selection.setCursorLocation(u);else{var s=R(n);it(a,t,r),e.selection.setRng(I(s))}},at=function(e,n){var t,r,o,i=e.dom,u=e.selection,a=u.getStart(),s=pe.getClosestListRootElm(e,a),c=i.getParent(u.getStart(),"LI",s);if(c){if((t=c.parentNode)===e.getBody()&&E(i,t))return!0;if(r=A(u.getRng(!0)),(o=i.getParent(tt(e,r,n,s),"LI",s))&&o!==c)return n?ut(e,r,o,c):function(e,n,t,r){var o=R(n);it(e.dom,t,r);var i=I(o);e.selection.setRng(i)}(e,r,c,o),!0;if(!o&&!n)return qn(e),!0}return!1},st=function(e,n){return at(e,n)||function(o,i){var u=o.dom,e=o.selection.getStart(),a=pe.getClosestListRootElm(o,e),s=u.getParent(e,u.isBlock,a);if(s&&u.isEmpty(s)){var n=A(o.selection.getRng(!0)),c=u.getParent(tt(o,n,i,a),"LI",a);if(c)return o.undoManager.transact(function(){var e,n,t,r;n=s,t=a,r=(e=u).getParent(n.parentNode,e.isBlock,t),e.remove(n),r&&e.isEmpty(r)&&e.remove(r),Jn.mergeWithAdjacentLists(u,c.parentNode),o.selection.select(c,!0),o.selection.collapse(i)}),!0}return!1}(e,n)},ct=function(e,n){return e.selection.isCollapsed()?st(e,n):(r=(t=e).selection.getStart(),o=pe.getClosestListRootElm(t,r),!!(t.dom.getParent(r,"LI,DT,DD",o)||0<pe.getSelectedListItems(t).length)&&(t.undoManager.transact(function(){t.execCommand("Delete"),nt(t.dom,t.getBody())}),!0));var t,r,o},ft=function(n){n.on("keydown",function(e){e.keyCode===l.BACKSPACE?ct(n,!1)&&e.preventDefault():e.keyCode===l.DELETE&&ct(n,!0)&&e.preventDefault()})},dt=ct,lt=function(n){return{backspaceDelete:function(e){dt(n,e)}}},mt=function(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}},gt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerCase();"indent"===n?Hn(t):"outdent"===n&&$n(t)}),t.addCommand("InsertUnorderedList",function(e,n){Jn.toggleList(t,"UL",n)}),t.addCommand("InsertOrderedList",function(e,n){Jn.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){Jn.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){qn(t)}),t.addQueryStateHandler("InsertUnorderedList",mt(t,"UL")),t.addQueryStateHandler("InsertOrderedList",mt(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",mt(t,"DL"))},pt=function(e){return e.getParam("lists_indent_on_tab",!0)},vt=function(e){var n;pt(e)&&(n=e).on("keydown",function(e){e.keyCode!==l.TAB||l.metaKeyPressed(e)||n.undoManager.transact(function(){(e.shiftKey?$n(n):Hn(n))&&e.preventDefault()})}),ft(e)},ht=function(n,i){return function(e){var o=e.control;n.on("NodeChange",function(e){var n=function(e,n){for(var t=0;t<e.length;t++)if(n(e[t]))return t;return-1}(e.parents,O),t=-1!==n?e.parents.slice(0,n):e.parents,r=v.grep(t,y);o.active(0<r.length&&r[0].nodeName===i)})}},yt=function(e){var n,t,r;t="advlist",r=(n=e).settings.plugins?n.settings.plugins:"",-1===v.inArray(r.split(/[ ,]/),t)&&(e.addButton("numlist",{active:!1,title:"Numbered list",cmd:"InsertOrderedList",onPostRender:ht(e,"OL")}),e.addButton("bullist",{active:!1,title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:ht(e,"UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent"})};c.add("lists",function(e){return vt(e),yt(e),gt(e),lt(e)})}(window);
\ No newline at end of file
+!function(u){"use strict";var e,n,t,r,o,i,s,a,c,f=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),l=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),m=tinymce.util.Tools.resolve("tinymce.util.VK"),p=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),v=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),h=function(e){return e&&"BR"===e.nodeName},y=function(e){return e&&3===e.nodeType},N=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},S=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},C=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},O=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},b=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},T=h,E=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},L=function(e,n){return e&&e.nodeName in n},D=function(e,n){return!!h(n)&&!(!e.isBlock(n.nextSibling)||h(n.previousSibling))},w=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},k=function(e,n){return e.isChildOf(n,e.getRoot())},A=function(e,n){if(y(e))return{container:e,offset:n};var t=d.getNode(e,n);return y(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&y(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&y(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}},x=function(e){var n=e.cloneRange(),t=A(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=A(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},R=g.DOM,I=function(o){var i={},e=function(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=R.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):R.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r};return e(!0),o.collapsed||e(),i},_=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,R.remove(r),!n.hasChildNodes()&&R.isBlock(n)&&n.appendChild(R.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=R.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),x(n)},B=function(){},P=function(e){return function(){return e}},M=function(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}},U=P(!1),F=P(!0),j=function(){return H},H=(e=function(e){return e.isNone()},r={fold:function(e,n){return e()},is:U,isSome:U,isNone:F,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:P(null),getOrUndefined:P(undefined),or:t,orThunk:n,map:j,each:B,bind:j,exists:U,forall:F,filter:j,equals:e,equals_:e,toArray:function(){return[]},toString:P("none()")},Object.freeze&&Object.freeze(r),r),$=function(t){var e=P(t),n=function(){return o},r=function(e){return e(t)},o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:F,isNone:U,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:n,orThunk:n,map:function(e){return $(e(t))},each:function(e){e(t)},bind:r,exists:r,forall:r,filter:function(e){return e(t)?o:H},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(U,function(e){return n(t,e)})}};return o},q={some:$,none:j,from:function(e){return null===e||e===undefined?H:$(e)}},W=function(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"===n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"===n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}},V=W("string"),z=W("array"),K=W("boolean"),X=W("function"),Q=W("number"),Y=Array.prototype.slice,G=Array.prototype.push,J=function(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o)}return r},Z=function(e,n){for(var t=0,r=e.length;t<r;t++)n(e[t],t)},ee=function(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r)&&t.push(i)}return t},ne=function(e,n,t){return Z(e,function(e){t=n(t,e)}),t},te=function(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return q.some(o)}return q.none()},re=function(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!z(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);G.apply(n,e[t])}return n}(J(e,n))},oe=function(e){return 0===e.length?q.none():q.some(e[0])},ie=function(e){return 0===e.length?q.none():q.some(e[e.length-1])},ue=(X(Array.from)&&Array.from,"undefined"!=typeof u.window?u.window:Function("return this;")()),se=function(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:ue,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)},ae=function(e,n){var t=se(e,n);if(t===undefined||null===t)throw new Error(e+" not available on this browser");return t},ce=function(e){var n,t=se("ownerDocument.defaultView",e);return(n=t,ae("HTMLElement",n)).prototype.isPrototypeOf(e)},fe=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),de=function(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",me(e,n))},le=function(e){var t,n,r,o=e.selection.getSelectedBlocks();return v.grep((t=e,n=o,r=v.map(n,function(e){var n=t.dom.getParent(e,"li,dd,dt",me(t,e));return n||e}),fe.unique(r)),function(e){return O(e)})},me=function(e,n){var t=e.dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},ge=function(e,n){var t=e.dom.getParents(n,"ol,ul",me(e,n));return ie(t)},pe=function(n,e){var t=J(e,function(e){return ge(n,e).getOr(e)});return fe.unique(t)},ve={isList:function(e){var n=de(e);return ce(n)},getParentList:de,getSelectedSubLists:function(e){var n,t,r,o=de(e),i=e.selection.getSelectedBlocks();return r=i,(t=o)&&1===r.length&&r[0]===t?(n=o,v.grep(n.querySelectorAll("ol,ul,dl"),function(e){return N(e)})):v.grep(i,function(e){return N(e)&&o!==e})},getSelectedListItems:le,getClosestListRootElm:me,getSelectedDlItems:function(e){return ee(le(e),C)},getSelectedListRoots:function(e){var n,t,r,o=(t=ge(n=e,n.selection.getStart()),r=ee(n.selection.getSelectedBlocks(),S),t.toArray().concat(r));return pe(e,o)}},he=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:P(e)}},ye={fromHtml:function(e,n){var t=(n||u.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw u.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return he(t.childNodes[0])},fromTag:function(e,n){var t=(n||u.document).createElement(e);return he(t)},fromText:function(e,n){var t=(n||u.document).createTextNode(e);return he(t)},fromDom:he,fromPoint:function(e,n,t){var r=e.dom();return q.from(r.elementFromPoint(n,t)).map(he)}},Ne=function(e,n,t){return e.isSome()&&n.isSome()?q.some(t(e.getOrDie(),n.getOrDie())):q.none()},Se=Object.keys,Ce=function(){return ae("Node")},Oe=function(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)},be=function(e,n){return Oe(e,n,Ce().DOCUMENT_POSITION_CONTAINED_BY)},Te=function(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};var r=function(e){return Number(n.replace(t,"$"+e))};return Le(r(1),r(2))},Ee=function(){return Le(0,0)},Le=function(e,n){return{major:e,minor:n}},De={nu:Le,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Ee():Te(e,t)},unknown:Ee},we="Firefox",ke=function(e,n){return function(){return n===e}},Ae=function(e){var n=e.current;return{current:n,version:e.version,isEdge:ke("Edge",n),isChrome:ke("Chrome",n),isIE:ke("IE",n),isOpera:ke("Opera",n),isFirefox:ke(we,n),isSafari:ke("Safari",n)}},xe={unknown:function(){return Ae({current:undefined,version:De.unknown()})},nu:Ae,edge:P("Edge"),chrome:P("Chrome"),ie:P("IE"),opera:P("Opera"),firefox:P(we),safari:P("Safari")},Re="Windows",Ie="Android",_e="Solaris",Be="FreeBSD",Pe=function(e,n){return function(){return n===e}},Me=function(e){var n=e.current;return{current:n,version:e.version,isWindows:Pe(Re,n),isiOS:Pe("iOS",n),isAndroid:Pe(Ie,n),isOSX:Pe("OSX",n),isLinux:Pe("Linux",n),isSolaris:Pe(_e,n),isFreeBSD:Pe(Be,n)}},Ue={unknown:function(){return Me({current:undefined,version:De.unknown()})},nu:Me,windows:P(Re),ios:P("iOS"),android:P(Ie),linux:P("Linux"),osx:P("OSX"),solaris:P(_e),freebsd:P(Be)},Fe=function(e,n){var t=String(n).toLowerCase();return te(e,function(e){return e.search(t)})},je=function(e,t){return Fe(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},He=function(e,t){return Fe(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},$e=function(e,n){return-1!==e.indexOf(n)},qe=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,We=function(n){return function(e){return $e(e,n)}},Ve=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return $e(e,"edge/")&&$e(e,"chrome")&&$e(e,"safari")&&$e(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,qe],search:function(e){return $e(e,"chrome")&&!$e(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return $e(e,"msie")||$e(e,"trident")}},{name:"Opera",versionRegexes:[qe,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:We("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:We("firefox")},{name:"Safari",versionRegexes:[qe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return($e(e,"safari")||$e(e,"mobile/"))&&$e(e,"applewebkit")}}],ze=[{name:"Windows",search:We("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return $e(e,"iphone")||$e(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:We("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:We("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:We("linux"),versionRegexes:[]},{name:"Solaris",search:We("sunos"),versionRegexes:[]},{name:"FreeBSD",search:We("freebsd"),versionRegexes:[]}],Ke={browsers:P(Ve),oses:P(ze)},Xe=function(e){var n,t,r,o,i,u,s,a,c,f,d,l=Ke.browsers(),m=Ke.oses(),g=je(l,e).fold(xe.unknown,xe.nu),p=He(m,e).fold(Ue.unknown,Ue.nu);return{browser:g,os:p,deviceType:(t=g,r=e,o=(n=p).isiOS()&&!0===/ipad/i.test(r),i=n.isiOS()&&!o,u=n.isAndroid()&&3===n.version.major,s=n.isAndroid()&&4===n.version.major,a=o||u||s&&!0===/mobile/i.test(r),c=n.isiOS()||n.isAndroid(),f=c&&!a,d=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(r),{isiPad:P(o),isiPhone:P(i),isTablet:P(a),isPhone:P(f),isTouch:P(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:P(d)})}},Qe={detect:(o=function(){var e=u.navigator.userAgent;return Xe(e)},s=!1,function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return s||(s=!0,i=o.apply(null,e)),i})},Ye=(u.Node.ATTRIBUTE_NODE,u.Node.CDATA_SECTION_NODE,u.Node.COMMENT_NODE,u.Node.DOCUMENT_NODE,u.Node.DOCUMENT_TYPE_NODE,u.Node.DOCUMENT_FRAGMENT_NODE,u.Node.ELEMENT_NODE),Ge=(u.Node.TEXT_NODE,u.Node.PROCESSING_INSTRUCTION_NODE,u.Node.ENTITY_REFERENCE_NODE,u.Node.ENTITY_NODE,u.Node.NOTATION_NODE,Ye),Je=function(e,n){return e.dom()===n.dom()},Ze=Qe.detect().browser.isIE()?function(e,n){return be(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},en=function(e,n){var t=e.dom();if(t.nodeType!==Ge)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")},nn=function(e){return q.from(e.dom().parentNode).map(ye.fromDom)},tn=function(e){return J(e.dom().childNodes,ye.fromDom)},rn=function(e,n){var t=e.dom().childNodes;return q.from(t[n]).map(ye.fromDom)},on=function(e){return rn(e,0)},un=function(e){return rn(e,e.dom().childNodes.length-1)},sn=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(n,t){nn(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}),an=function(e,n){e.dom().appendChild(n.dom())},cn=function(n,e){Z(e,function(e){an(n,e)})},fn=function(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)},dn=function(e){return e.dom().nodeName.toLowerCase()},ln=(a=Ye,function(e){return e.dom().nodeType===a}),mn=function(e,n){var t=e.dom();!function(e,n){for(var t=Se(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i)}}(n,function(e,n){!function(e,n,t){if(!(V(t)||K(t)||Q(t)))throw u.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})},gn=function(e){return ne(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})},pn=function(e,n,t){if(!V(t))throw u.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);var r;(r=e).style!==undefined&&X(r.style.getPropertyValue)&&e.style.setProperty(n,t)},vn=function(e){return n=e,t=!0,ye.fromDom(n.dom().cloneNode(t));var n,t},hn=function(e,n){var t,r,o,i,u=(t=e,r=n,o=ye.fromTag(r),i=gn(t),mn(o,i),o);sn(e,u);var s=tn(e);return cn(u,s),fn(e),u},yn=function(e,n){an(e.item,n.list)},Nn=function(f,e,d){var n=e.slice(0,d.depth);return ie(n).each(function(e){var n,t,r,o,i,u,s,a,c=(n=f,t=d.itemAttributes,r=d.content,o=ye.fromTag("li",n),mn(o,t),cn(o,r),o);u=c,an((i=e).list,u),i.item=u,a=d,dn((s=e).list)!==a.listType&&(s.list=hn(s.list,a.listType)),mn(s.list,a.listAttributes)}),n},Sn=function(e,n,t){var r,o=function(e,n,t){for(var r,o,i,u=[],s=0;s<t;s++)u.push((r=e,o=n.listType,i={list:ye.fromTag(o,r),item:ye.fromTag("li",r)},an(i.list,i.item),i));return u}(e,t,t.depth-n.length);return function(e){for(var n=1;n<e.length;n++)yn(e[n-1],e[n])}(o),function(e,n){for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",u=r.dom(),pn(u,o,i);var r,o,i,u;ie(e).each(function(e){mn(e.list,n.listAttributes),mn(e.item,n.itemAttributes),cn(e.item,n.content)})}(o,t),r=o,Ne(ie(n),oe(r),yn),n.concat(o)},Cn=function(e){return en(e,"OL,UL")},On=function(e){return on(e).map(Cn).getOr(!1)},bn=function(e){return 0<e.depth},Tn=function(e){return e.isSelected},En=function(e){var n=tn(e),t=un(e).map(Cn).getOr(!1)?n.slice(0,-1):n;return J(t,vn)},Ln=Object.prototype.hasOwnProperty,Dn=(c=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Ln.call(o,i)&&(t[i]=c(t[i],o[i]))}return t}),wn=function(n){Z(n,function(r,e){(function(e,n){for(var t=e[n].depth,r=n-1;0<=r;r--){if(e[r].depth===t)return q.some(e[r]);if(e[r].depth<t)break}return q.none()})(n,e).each(function(e){var n,t;t=e,(n=r).listType=t.listType,n.listAttributes=Dn({},t.listAttributes)})})},kn=function(e){var n=e,t=function(){return n};return{get:t,set:function(e){n=e},clone:function(){return kn(t())}}},An=function(i,u,s,a){return on(a).filter(Cn).fold(function(){u.each(function(e){Je(e.start,a)&&s.set(!0)});var n,t,r,e=(n=a,t=i,r=s.get(),nn(n).filter(ln).map(function(e){return{depth:t,isSelected:r,content:En(n),itemAttributes:gn(n),listAttributes:gn(e),listType:dn(e)}}));u.each(function(e){Je(e.end,a)&&s.set(!1)});var o=un(a).filter(Cn).map(function(e){return xn(i,u,s,e)}).getOr([]);return e.toArray().concat(o)},function(e){return xn(i,u,s,e)})},xn=function(n,t,r,e){return re(tn(e),function(e){return(Cn(e)?xn:An)(n+1,t,r,e)})},Rn=tinymce.util.Tools.resolve("tinymce.Env"),In=function(e,n){var t,r,o,i,u=e.dom,s=e.schema.getBlockElements(),a=u.createFragment();if(e.settings.forced_root_block&&(o=e.settings.forced_root_block),o&&((r=u.create(o)).tagName===e.settings.forced_root_block&&u.setAttribs(r,e.settings.forced_root_block_attrs),L(n.firstChild,s)||a.appendChild(r)),n)for(;t=n.firstChild;){var c=t.nodeName;i||"SPAN"===c&&"bookmark"===t.getAttribute("data-mce-type")||(i=!0),L(t,s)?(a.appendChild(t),r=null):o?(r||(r=u.create(o),a.appendChild(r)),r.appendChild(t)):a.appendChild(t)}return e.settings.forced_root_block?i||Rn.ie&&!(10<Rn.ie)||r.appendChild(u.create("br",{"data-mce-bogus":"1"})):a.appendChild(u.create("br")),a},_n=function(i,e){return J(e,function(e){var n,t,r,o=(n=e.content,r=(t||u.document).createDocumentFragment(),Z(n,function(e){r.appendChild(e.dom())}),ye.fromDom(r));return ye.fromDom(In(i,o.dom()))})},Bn=function(e,n){return wn(n),(t=e.contentDocument,r=n,o=ne(r,function(e,n){return n.depth>e.length?Sn(t,e,n):Nn(t,e,n)},[]),oe(o).map(function(e){return e.list})).toArray();var t,r,o},Pn=function(e){var n,t,r=J(ve.getSelectedListItems(e),ye.fromDom);return Ne(te(r,M(On)),te((n=r,(t=Y.call(n,0)).reverse(),t),M(On)),function(e,n){return{start:e,end:n}})},Mn=function(s,e,a){var n,t,r,o=(n=e,t=Pn(s),r=kn(!1),J(n,function(e){return{sourceList:e,entries:xn(0,t,r,e)}}));Z(o,function(e){var n,t,r,o,i,u;n=e.entries,t=a,Z(ee(n,Tn),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(t,e)}),r=e.sourceList,i=s,u=e.entries,o=re(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var s=e[i],a=n(s);a!==t&&(r.push(o),o=[]),t=a,o.push(s)}return 0!==o.length&&r.push(o),r}(u,bn),function(e){return oe(e).map(bn).getOr(!1)?Bn(i,e):_n(i,e)}),Z(o,function(e){sn(r,e)}),fn(e.sourceList)})},Un=g.DOM,Fn=function(e,n,t){var r,o,i,u,s,a;for(i=Un.select('span[data-mce-type="bookmark"]',n),s=In(e,t),(r=Un.createRng()).setStartAfter(t),r.setEndAfter(n),u=(o=r.extractContents()).firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){Un.remove(u);break}e.dom.isEmpty(o)||Un.insertAfter(o,n),Un.insertAfter(s,n),w(e.dom,t.parentNode)&&(a=t.parentNode,v.each(i,function(e){a.parentNode.insertBefore(e,t.parentNode)}),Un.remove(a)),Un.remove(t),w(e.dom,n)&&Un.remove(n)},jn=function(e){en(e,"dt")&&hn(e,"dd")},Hn=function(r,e,n){Z(n,"Indent"===e?jn:function(e){return n=r,void(en(t=e,"dd")?hn(t,"dt"):en(t,"dt")&&nn(t).each(function(e){return Fn(n,e.dom(),t.dom())}));var n,t})},$n=function(e,n){var t=J(ve.getSelectedListRoots(e),ye.fromDom),r=J(ve.getSelectedDlItems(e),ye.fromDom),o=!1;if(t.length||r.length){var i=e.selection.getBookmark();Mn(e,t,n),Hn(e,n,r),e.selection.moveToBookmark(i),e.selection.setRng(x(e.selection.getRng())),e.nodeChanged(),o=!0}return o},qn=function(e){return $n(e,"Indent")},Wn=function(e){return $n(e,"Outdent")},Vn=function(e){return $n(e,"Flatten")},zn=function(t,e){v.each(e,function(e,n){t.setAttribute(n,e)})},Kn=function(e,n,t){var r,o,i,u,s,a,c;r=e,o=n,u=(i=t)["list-style-type"]?i["list-style-type"]:null,r.setStyle(o,"list-style-type",u),s=e,zn(a=n,(c=t)["list-attributes"]),v.each(s.select("li",a),function(e){zn(e,c["list-item-attributes"])})},Xn=function(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&T(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(E(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o},Qn=function(f,d,l){void 0===l&&(l={});var e,n=f.selection.getRng(!0),m="LI",t=ve.getClosestListRootElm(f,f.selection.getStart(!0)),g=f.dom;"false"!==g.getContentEditable(f.selection.getNode())&&("DL"===(d=d.toUpperCase())&&(m="DT"),e=I(n),v.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Xn(t,e,!0,r),s=Xn(t,e,!1,r),a=[],c=n;c&&(a.push(c),c!==s);c=c.nextSibling);return v.each(a,function(e){if(E(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||T(e))return T(e)&&u.remove(e),void(o=null);var n=e.nextSibling;p.isBookmarkNode(e)&&(E(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(f,n,t),function(e){var n,t,r,o,i,u,s,a,c;(t=e.previousSibling)&&N(t)&&t.nodeName===d&&(r=t,o=l,i=g.getStyle(r,"list-style-type"),u=o?o["list-style-type"]:"",i===(u=null===u?"":u))?(n=t,e=g.rename(e,m),t.appendChild(e)):(n=g.create(d),e.parentNode.insertBefore(n,e),n.appendChild(e),e=g.rename(e,m)),s=g,a=e,c=["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],v.each(c,function(e){var n;return s.setStyle(a,((n={})[e]="",n))}),Kn(g,n,l),Gn(f.dom,n)}),f.selection.setRng(_(e)))},Yn=function(e,n,t){return a=t,(s=n)&&a&&N(s)&&s.nodeName===a.nodeName&&(i=n,u=t,(o=e).getStyle(i,"list-style-type",!0)===o.getStyle(u,"list-style-type",!0))&&(r=t,n.className===r.className);var r,o,i,u,s,a},Gn=function(e,n){var t,r;if(t=n.nextSibling,Yn(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,Yn(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},Jn=function(n,e,t,r,o){if(e.nodeName!==r||Zn(o)){var i=I(n.selection.getRng(!0));v.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.rename(n,t);Kn(e,o,r)}else Kn(e,n,r)}(n.dom,e,r,o)}),n.selection.setRng(_(i))}else Vn(n)},Zn=function(e){return"list-style-type"in e},et={toggleList:function(e,n,t){var r=ve.getParentList(e),o=ve.getSelectedSubLists(e);t=t||{},r&&0<o.length?Jn(e,r,o,n,t):function(e,n,t,r){if(n!==e.getBody())if(n)if(n.nodeName!==t||Zn(r)){var o=I(e.selection.getRng(!0));Kn(e.dom,n,r),Gn(e.dom,e.dom.rename(n,t)),e.selection.setRng(_(o))}else Vn(e);else Qn(e,t,r)}(e,r,n,t)},mergeWithAdjacentLists:Gn},nt=g.DOM,tt=function(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),w(e,r)&&nt.remove(r)):nt.setStyle(r,"listStyleType","none")),N(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)},rt=function(n,e){v.each(v.grep(n.select("ol,ul",e)),function(e){tt(n,e)})},ot=function(e,n,t,r){var o,i,u=n.startContainer,s=n.startOffset;if(3===u.nodeType&&(t?s<u.data.length:0<s))return u;for(o=e.schema.getNonEmptyElements(),1===u.nodeType&&(u=d.getNode(u,s)),i=new l(u,r),t&&D(e.dom,u)&&i.next();u=i[t?"next":"prev2"]();){if("LI"===u.nodeName&&!u.hasChildNodes())return u;if(o[u.nodeName])return u;if(3===u.nodeType&&0<u.data.length)return u}},it=function(e,n){var t=n.childNodes;return 1===t.length&&!N(t[0])&&e.isBlock(t[0])},ut=function(e,n,t){var r,o,i,u;if(o=it(e,t)?t.firstChild:t,it(i=e,u=n)&&i.remove(u.firstChild,!0),!w(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)},st=function(n,e,t){var r,o,i=e.parentNode;if(k(n,e)&&k(n,t)){N(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&T(i.previousSibling)&&n.remove(i.previousSibling),(r=t.lastChild)&&T(r)&&e.hasChildNodes()&&n.remove(r),w(n,t,!0)&&n.$(t).empty(),ut(n,e,t),o&&t.appendChild(o);var u=Ze(ye.fromDom(t),ye.fromDom(e))?n.getParents(e,N,t):[];n.remove(e),Z(u,function(e){w(n,e)&&e!==n.getRoot()&&n.remove(e)})}},at=function(e,n,t,r){var o,i,u,s=e.dom;if(s.isEmpty(r))i=t,u=r,(o=e).dom.$(u).empty(),st(o.dom,i,u),o.selection.setCursorLocation(u);else{var a=I(n);st(s,t,r),e.selection.setRng(_(a))}},ct=function(e,n){var t,r,o,i=e.dom,u=e.selection,s=u.getStart(),a=ve.getClosestListRootElm(e,s),c=i.getParent(u.getStart(),"LI",a);if(c){if((t=c.parentNode)===e.getBody()&&w(i,t))return!0;if(r=x(u.getRng(!0)),(o=i.getParent(ot(e,r,n,a),"LI",a))&&o!==c)return n?at(e,r,o,c):function(e,n,t,r){var o=I(n);st(e.dom,t,r);var i=_(o);e.selection.setRng(i)}(e,r,c,o),!0;if(!o&&!n)return Vn(e),!0}return!1},ft=function(e,n){return ct(e,n)||function(o,i){var u=o.dom,e=o.selection.getStart(),s=ve.getClosestListRootElm(o,e),a=u.getParent(e,u.isBlock,s);if(a&&u.isEmpty(a)){var n=x(o.selection.getRng(!0)),c=u.getParent(ot(o,n,i,s),"LI",s);if(c)return o.undoManager.transact(function(){var e,n,t,r;n=a,t=s,r=(e=u).getParent(n.parentNode,e.isBlock,t),e.remove(n),r&&e.isEmpty(r)&&e.remove(r),et.mergeWithAdjacentLists(u,c.parentNode),o.selection.select(c,!0),o.selection.collapse(i)}),!0}return!1}(e,n)},dt=function(e,n){return e.selection.isCollapsed()?ft(e,n):(r=(t=e).selection.getStart(),o=ve.getClosestListRootElm(t,r),!!(t.dom.getParent(r,"LI,DT,DD",o)||0<ve.getSelectedListItems(t).length)&&(t.undoManager.transact(function(){t.execCommand("Delete"),rt(t.dom,t.getBody())}),!0));var t,r,o},lt=function(n){n.on("keydown",function(e){e.keyCode===m.BACKSPACE?dt(n,!1)&&e.preventDefault():e.keyCode===m.DELETE&&dt(n,!0)&&e.preventDefault()})},mt=dt,gt=function(n){return{backspaceDelete:function(e){mt(n,e)}}},pt=function(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}},vt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerCase();"indent"===n?qn(t):"outdent"===n&&Wn(t)}),t.addCommand("InsertUnorderedList",function(e,n){et.toggleList(t,"UL",n)}),t.addCommand("InsertOrderedList",function(e,n){et.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){et.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){Vn(t)}),t.addQueryStateHandler("InsertUnorderedList",pt(t,"UL")),t.addQueryStateHandler("InsertOrderedList",pt(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",pt(t,"DL"))},ht=function(e){return e.getParam("lists_indent_on_tab",!0)},yt=function(e){var n;ht(e)&&(n=e).on("keydown",function(e){e.keyCode!==m.TAB||m.metaKeyPressed(e)||n.undoManager.transact(function(){(e.shiftKey?Wn(n):qn(n))&&e.preventDefault()})}),lt(e)},Nt=function(n,i){return function(e){var o=e.control;n.on("NodeChange",function(e){var n=function(e,n){for(var t=0;t<e.length;t++)if(n(e[t]))return t;return-1}(e.parents,b),t=-1!==n?e.parents.slice(0,n):e.parents,r=v.grep(t,N);o.active(0<r.length&&r[0].nodeName===i)})}},St=function(e){var n,t,r;t="advlist",r=(n=e).settings.plugins?n.settings.plugins:"",-1===v.inArray(r.split(/[ ,]/),t)&&(e.addButton("numlist",{active:!1,title:"Numbered list",cmd:"InsertOrderedList",onPostRender:Nt(e,"OL")}),e.addButton("bullist",{active:!1,title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:Nt(e,"UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent"})};f.add("lists",function(e){return yt(e),St(e),vt(e),gt(e)})}(window);
\ No newline at end of file
-!function(v){"use strict";var l=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return l(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!e.get("powerpaste")||("undefined"!=typeof v.window.console&&v.window.console.log&&v.window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),0))},s=function(t,e){return{clipboard:t,quirks:e}},f=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},d=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},u=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},n=function(t,e){return t.fire("paste",{ieFake:e})},m={shouldPlainTextInform:function(t){return t.getParam("paste_plaintext_inform",!0)},shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam("paste_retain_style_properties")},getWordValidElements:function(t){return t.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")},shouldConvertWordFakeLists:function(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}},r=function(t,e,n){var r,o,i;"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),u(t,!1)):(e.pasteFormat.set("text"),u(t,!0),i=t,!1===n.get()&&m.shouldPlainTextInform(i)&&(o="Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",(r=t).notificationManager.open({text:r.translate(o),type:"info"}),n.set(!0))),t.focus()},c=function(t,n,e){t.addCommand("mceTogglePlainTextPaste",function(){r(t,n,e)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},h=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),b=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),t="x-tinymce/html",i="\x3c!-- "+t+" --\x3e",g=function(t){return i+t},p=function(t){return t.replace(i,"")},x=function(t){return-1!==t.indexOf(i)},P=function(){return t},w=tinymce.util.Tools.resolve("tinymce.html.Entities"),_=function(t){return t.replace(/\r?\n/g,"<br>")},D=function(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+w.encodeAllRaw(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",a=b.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===a.length?a[0]:b.map(a,function(t){return o+t+i}).join("")},T=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},C=function(t,e,n){return e?D(t,e,n):_(t)},k=tinymce.util.Tools.resolve("tinymce.html.DomParser"),S=tinymce.util.Tools.resolve("tinymce.html.Node"),O=tinymce.util.Tools.resolve("tinymce.html.Schema"),R=tinymce.util.Tools.resolve("tinymce.html.Serializer");function F(e,t){return b.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var E={filter:F,innerText:function(e){var n=O(),r=k({},n),o="",i=n.getShortEndedElements(),a=b.makeMap("script noscript style textarea video audio iframe object"," "),s=n.getBlockElements();return e=F(e,[/<!\[[^\]]+\]>/g]),function t(e){var n=e.name,r=e;if("br"!==n){if("wbr"!==n)if(i[n]&&(o+=" "),a[n])o+=" ";else{if(3===e.type&&(o+=e.value),!e.shortEnded&&(e=e.firstChild))for(;t(e),e=e.next;);s[n]&&r.next&&(o+="\n","p"===n&&(o+="\n"))}}else o+="\n"}(r.parse(e)),o},trimHtml:function(t){return t=F(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function(t){var e=0;return function(){return t+e++}},isMsEdge:function(){return-1!==v.navigator.userAgent.indexOf(" Edge/")}};function A(e){var n,t;return t=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],e=e.replace(/^[\u00a0 ]+/,""),b.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function I(t){var i,a,s=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function u(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!u(t,e))return!1}while(t=t.next);return!0}function e(e,n,r){var o=e._listLevel||s;o!==s&&(o<s?i&&(i=i.parent.parent):(a=i,i=null)),i&&i.name===n?i.append(e):(a=a||i,i=new S(n,1),1<r&&i.attr("start",""+r),e.wrap(i)),e.name="li",s<o&&a&&a.lastChild.append(i),s=o,function t(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;t(e),e=e.next;);}(e),u(e,/^\u00a0+/),u(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),u(e,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var l=0;l<r.length;l++)if("p"===(t=r[l]).name&&t.firstChild){var c=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(c)){e(t,"ul");continue}if(A(c)){var f=/([0-9]+)\./.exec(c),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else a=i,i=null}function M(n,r,o,i){var a,s={},t=n.dom.parseStyle(i);return b.each(t,function(t,e){switch(e){case"mso-list":(a=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(a[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgnore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!==t&&(s[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===m.getRetainStyleProps(n)||r&&r[e])&&(s[e]=t):o.remove()}),/(bold)/i.test(s["font-weight"])&&(delete s["font-weight"],o.wrap(new S("b",1))),/(italic)/i.test(s["font-style"])&&(delete s["font-style"],o.wrap(new S("i",1))),(s=n.dom.serializeStyle(s,o.name))||null}var B,H,j,L,N,$={preProcess:function(t,e){return m.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=m.getRetainStyleProps(r))&&(o=b.makeMap(e.split(/[, ]/))),t=E.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=m.getWordValidElements(r),i=O({valid_elements:n,valid_children:"-li[p]"});b.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrder.push("class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var a=k({},i);a.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",M(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),a.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),a.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),a.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1])&&(n="#"+n),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var s=a.parse(t);return m.shouldConvertWordFakeLists(r)&&I(s),t=R({validate:r.settings.validate},i).serialize(s)}(t,e):e},isWordContent:function(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},W=function(t,e){return{content:t,cancelled:e}},z=function(t,e,n,r){var o,i,a,s,u,l,c=f(t,e,n,r);return t.hasEventListeners("PastePostProcess")&&!c.isDefaultPrevented()?(o=t,i=c.content,a=n,s=r,u=o.dom.create("div",{style:"display:none"},i),l=d(o,u,a,s),W(l.node.innerHTML,l.isDefaultPrevented())):W(c.content,c.isDefaultPrevented())},U=function(t,e,n){var r=$.isWordContent(e),o=r?$.preProcess(t,e):e;return z(t,o,n,r)},V=function(t,e){var n,r;return t.insertContent((n=e,r=t.dom.create("body",{},n),b.each(r.querySelectorAll("meta"),function(t){return t.parentNode.removeChild(t)}),r.innerHTML),{merge:m.shouldMergeFormats(t),paste:!0}),!0},q=function(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)},K=function(t){return q(t)&&/.(gif|jpe?g|png)$/.test(t)},G=function(t,e,n){return!(!1!==t.selection.isCollapsed()||!q(e)||(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.execCommand("mceInsertLink",!1,o)}),0));var r,o,i},X=function(t,e,n){return!!K(e)&&(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.insertContent('<img src="'+o+'">')}),!0);var r,o,i},Y=function(t,e){var n,r;!1===m.isSmartPasteEnabled(t)?V(t,e):(n=t,r=e,b.each([G,X,V],function(t){return!0!==t(n,r,V)}))},Z=function(t){return function(){return t}},J=Z(!1),Q=Z(!0),tt=J,et=Q,nt=function(){return rt},rt=(L={fold:function(t,e){return t()},is:tt,isSome:tt,isNone:et,getOr:j=function(t){return t},getOrThunk:H=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:j,orThunk:H,map:nt,ap:nt,each:function(){},bind:nt,flatten:nt,exists:tt,forall:et,filter:nt,equals:B=function(t){return t.isNone()},equals_:B,toArray:function(){return[]},toString:Z("none()")},Object.freeze&&Object.freeze(L),L),ot=function(n){var t=function(){return n},e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:et,isNone:tt,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return ot(t(n))},ap:function(t){return t.fold(nt,function(t){return ot(t(n))})},each:function(t){t(n)},bind:r,flatten:t,exists:r,forall:r,filter:function(t){return t(n)?o:rt},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(tt,function(t){return e(n,t)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},it={some:ot,none:nt,from:function(t){return null===t||t===undefined?rt:ot(t)}},at=(N="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&Array.prototype.isPrototypeOf(t)?"array":"object"===e&&String.prototype.isPrototypeOf(t)?"string":e}(t)===N}),st=function(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o,t)}return r},ut=function(t,e){for(var n=0,r=t.length;n<r;n++)e(t[n],n,t)},lt=Array.prototype.slice,ct=at(Array.from)?Array.from:function(t){return lt.call(t)},ft=function(t){var n=it.none(),e=[],r=function(t){o()?a(t):e.push(t)},o=function(){return n.isSome()},i=function(t){ut(t,a)},a=function(e){n.each(function(t){v.setTimeout(function(){e(t)},0)})};return t(function(t){n=it.some(t),i(e),e=[]}),{get:r,map:function(n){return ft(function(e){r(function(t){e(n(t))})})},isReady:o}},dt={nu:ft,pure:function(e){return ft(function(t){t(e)})}},mt=function(e){var t=function(t){var r;e((r=t,function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=this;v.setTimeout(function(){r.apply(n,t)},0)}))},n=function(){return dt.nu(t)};return{map:function(r){return mt(function(n){t(function(t){var e=r(t);n(e)})})},bind:function(n){return mt(function(e){t(function(t){n(t).get(e)})})},anonBind:function(n){return mt(function(e){t(function(t){n.get(e)})})},toLazy:n,toCached:function(){var e=null;return mt(function(t){null===e&&(e=n()),e.get(t)})},get:t}},gt={nu:mt,pure:function(e){return mt(function(t){t(e)})}},pt=function(a,t){return t(function(r){var o=[],i=0;0===a.length?r([]):ut(a,function(t,e){var n;t.get((n=e,function(t){o[n]=t,++i>=a.length&&r(o)}))})})},vt=function(t,e){var n=st(t,e);return pt(n,gt.nu)},ht=function(t,e,n){var r=n||x(e),o=U(t,p(e),r);!1===o.cancelled&&Y(t,o.content)},yt=function(t,e){e=t.dom.encode(e).replace(/\r\n/g,"\n"),e=C(e,t.settings.forced_root_block,t.settings.forced_root_block_attrs),ht(t,e,!1)},bt=function(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e},xt=function(t,e){return e in t&&0<t[e].length},Pt=function(t){return xt(t,"text/html")||xt(t,"text/plain")},wt=E.createIdGenerator("mceclip"),_t=function(e,t,n){var r,o,i,a,s="paste"===t.type?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&s){var u=(i=(o=s).items?st(ct(o.items),function(t){return t.getAsFile()}):[],a=o.files?ct(o.files):[],function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r,t)&&n.push(i)}return n}(0<i.length?i:a,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)}));if(0<u.length)return t.preventDefault(),(r=u,vt(r,function(r){return gt.nu(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})).get(function(t){n&&e.selection.setRng(n),ut(t,function(t){!function(t,e){var n,r,o,i,a,s,u,l=(n=e.uri,-1!==(r=n.indexOf(","))?n.substr(r+1):null),c=wt(),f=t.settings.images_reuse_filename&&e.blob.name?(o=t,i=e.blob.name,(a=i.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))?o.dom.encode(a[1]):null):c,d=new v.Image;if(d.src=e.uri,s=t.settings,u=d,!s.images_dataimg_filter||s.images_dataimg_filter(u)){var m,g=t.editorUpload.blobCache,p=void 0;(m=g.findFirst(function(t){return t.base64()===l}))?p=m:(p=g.create(c,e.blob,l,f),g.add(p)),ht(t,'<img src="'+p.blobUri()+'">',!1)}else ht(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}return!1},Dt=function(t){return o.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode},Tt=function(c,f,d){var m,g=0;function p(t,e,n,r){var o,i;xt(t,"text/html")?o=t["text/html"]:(o=f.getHtml(),r=r||x(o),f.isDefaultContent(o)&&(n=!0)),o=E.trimHtml(o),f.remove(),i=!1===r&&T(o),o.length&&!i||(n=!0),n&&(o=xt(t,"text/plain")&&i?t["text/plain"]:E.innerText(o)),f.isDefaultContent(o)?e||c.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?yt(c,o):ht(c,o,r)}c.on("keydown",function(t){function e(t){Dt(t)&&!t.isDefaultPrevented()&&f.remove()}if(Dt(t)&&!t.isDefaultPrevented()){if((m=t.shiftKey&&86===t.keyCode)&&h.webkit&&-1!==v.navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),g=(new Date).getTime(),h.ie&&m)return t.preventDefault(),void n(c,!0);f.remove(),f.create(),c.once("keyup",e),c.once("paste",function(){c.off("keyup",e)})}}),c.on("paste",function(t){var e,n,r,o=(new Date).getTime(),i=(e=c,n=bt(t.clipboardData||e.getDoc().dataTransfer),E.isMsEdge()?b.extend(n,{"text/html":""}):n),a=(new Date).getTime()-o,s=(new Date).getTime()-g-a<1e3,u="text"===d.get()||m,l=xt(i,P());m=!1,t.isDefaultPrevented()||(r=t.clipboardData,-1!==v.navigator.userAgent.indexOf("Android")&&r&&r.items&&0===r.items.length)?f.remove():Pt(i)||!_t(c,t,f.getLastRng()||c.selection.getRng())?(s||t.preventDefault(),!h.ie||s&&!t.ieFake||xt(i,"text/html")||(f.create(),c.dom.bind(f.getEl(),"paste",function(t){t.stopPropagation()}),c.getDoc().execCommand("Paste",!1,null),i["text/html"]=f.getHtml()),xt(i,"text/html")?(t.preventDefault(),l||(l=x(i["text/html"])),p(i,s,u,l)):y.setEditorTimeout(c,function(){p(i,s,u,l)},0)):f.remove()})},Ct=function(t){return h.ie&&t.inline?v.document.body:t.getBody()},kt=function(e,t,n){var r;Ct(r=e)!==r.getBody()&&e.dom.bind(t,"paste keyup",function(t){Rt(e,n)||e.fire("paste")})},St=function(t){return t.dom.get("mcepastebin")},Ot=function(t,e){return e===t},Rt=function(t,e){var n,r=St(t);return(n=r)&&"mcepastebin"===n.id&&Ot(e,r.innerHTML)},Ft=function(a){var s=l(null),u="%MCEPASTEBIN%";return{create:function(){return e=s,n=u,o=(t=a).dom,i=t.getBody(),e.set(t.selection.getRng()),r=t.dom.add(Ct(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(h.ie||h.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",!0)?65535:-65535),o.bind(r,"beforedeactivate focusin focusout",function(t){t.stopPropagation()}),kt(t,r,n),r.focus(),void t.selection.select(r,!0);var t,e,n,r,o,i},remove:function(){return function(t,e){if(St(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(a,s)},getEl:function(){return St(a)},getHtml:function(){return function(n){var e,t,r,o,i,a=function(t,e){t.appendChild(e),n.dom.remove(e,!0)};for(t=b.grep(Ct(n).childNodes,function(t){return"mcepastebin"===t.id}),e=t.shift(),b.each(t,function(t){a(e,t)}),r=(o=n.dom.select("div[id=mcepastebin]",e)).length-1;0<=r;r--)i=n.dom.create("div"),e.insertBefore(i,o[r]),a(i,o[r]);return e?e.innerHTML:""}(a)},getLastRng:function(){return s.get()},isDefault:function(){return Rt(a,u)},isDefaultContent:function(t){return Ot(u,t)}}},Et=function(n,t){var e=Ft(n);return n.on("preInit",function(){return Tt(a=n,e,t),void a.parser.addNodeFilter("img",function(t,e,n){var r,o=function(t){t.attr("data-mce-object")||s===h.transparentSrc||t.remove()};if(!a.settings.paste_data_images&&(r=n).data&&!0===r.data.paste)for(var i=t.length;i--;)(s=t[i].attributes.map.src)&&(0===s.indexOf("webkit-fake-url")?o(t[i]):a.settings.allow_html_data_urls||0!==s.indexOf("data:")||o(t[i]))});var a,s}),{pasteFormat:t,pasteHtml:function(t,e){return ht(n,t,e)},pasteText:function(t){return yt(n,t)},pasteImageData:function(t,e){return _t(n,t,e)},getDataTransferItems:bt,hasHtmlOrText:Pt,hasContentType:xt}},At=function(){},It=function(t,e,n){if(r=t,!1!==h.iOS||r===undefined||"function"!=typeof r.setData||!0===E.isMsEdge())return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(P(),e),!0}catch(o){return!1}var r},Mt=function(t,e,n,r){It(t.clipboardData,e.html,e.text)?(t.preventDefault(),r()):n(e.html,r)},Bt=function(s){return function(t,e){var n=g(t),r=s.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=s.dom.create("div",{contenteditable:"true"},n);s.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),s.dom.add(s.getBody(),r);var i=s.selection.getRng();o.focus();var a=s.dom.createRng();a.selectNodeContents(o),s.selection.setRng(a),setTimeout(function(){s.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}},Ht=function(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}},jt=function(t){return!t.selection.isCollapsed()||!!(e=t).dom.getParent(e.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",e.getBody());var e},Lt=function(t){var e,n;t.on("cut",(e=t,function(t){jt(e)&&Mt(t,Ht(e),Bt(e),function(){setTimeout(function(){e.execCommand("Delete")},0)})})),t.on("copy",(n=t,function(t){jt(n)&&Mt(t,Ht(n),Bt(n),At)}))},Nt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),$t=function(t,e){return Nt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())},Wt=function(t,e){t.focus(),t.selection.setRng(e)},zt=function(a,s,u){m.shouldBlockDrop(a)&&a.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),m.shouldPasteDataImages(a)||a.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),a.on("drop",function(t){var e,n;if(n=$t(a,t),!t.isDefaultPrevented()&&!u.get()){e=s.getDataTransferItems(t.dataTransfer);var r,o=s.hasContentType(e,P());if((s.hasHtmlOrText(e)&&(!(r=e["text/plain"])||0!==r.indexOf("file://"))||!s.pasteImageData(t,n))&&n&&m.shouldFilterDrop(a)){var i=e["mce-internal"]||e["text/html"]||e["text/plain"];i&&(t.preventDefault(),y.setEditorTimeout(a,function(){a.undoManager.transact(function(){e["mce-internal"]&&a.execCommand("Delete"),Wt(a,n),i=E.trimHtml(i),e["text/html"]?s.pasteHtml(i,o):s.pasteText(i)})}))}}}),a.on("dragstart",function(t){u.set(!0)}),a.on("dragover dragend",function(t){m.shouldPasteDataImages(a)&&!1===u.get()&&(t.preventDefault(),Wt(a,$t(a,t))),"dragend"===t.type&&u.set(!1)})},Ut=function(t){var e=t.plugins.paste,n=m.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=m.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function Vt(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function qt(t,e){if(!$.isWordContent(e))return e;var n=[];b.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*","g");return e=E.filter(e,[[r,"$1"]]),e=E.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function Kt(t,e,n,r){if(r||n)return e;var l,o=m.getWebkitStyles(t);if(!1===m.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(l=o.split(/[, ]/)),l){var c=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=c.parseStyle(c.decode(n)),i={};if("none"===l)return e+r;for(var a=0;a<l.length;a++){var s=o[l[a]],u=c.getStyle(f,l[a],!0);/color/.test(l[a])&&(s=c.toHex(s),u=c.toHex(u)),u!==s&&(i[l[a]]=s)}return(i=c.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function Gt(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}var Xt=function(t){var e,n;h.webkit&&Vt(t,Kt),h.ie&&(Vt(t,qt),n=Gt,(e=t).on("PastePostProcess",function(t){n(e,t.node)}))},Yt=function(t,e,n){var r=n.control;r.active("text"===e.pasteFormat.get()),t.on("PastePlainTextToggle",function(t){r.active(t.state)})},Zt=function(t,e){var n=function(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}(Yt,t,e);t.addButton("pastetext",{active:!1,icon:"pastetext",tooltip:"Paste as text",cmd:"mceTogglePlainTextPaste",onPostRender:n}),t.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:e.pasteFormat,cmd:"mceTogglePlainTextPaste",onPostRender:n})};e.add("paste",function(t){if(!1===a(t)){var e=l(!1),n=l(!1),r=l(m.isPasteAsTextEnabled(t)?"text":"html"),o=Et(t,r),i=Xt(t);return Zt(t,o),c(t,o,e),Ut(t),Lt(t),zt(t,o,n),s(o,i)}})}(window);
\ No newline at end of file
+!function(v){"use strict";var p=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return p(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!e.get("powerpaste")||("undefined"!=typeof v.window.console&&v.window.console.log&&v.window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),0))},u=function(t,e){return{clipboard:t,quirks:e}},d=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},m=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},s=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},n=function(t,e){return t.fire("paste",{ieFake:e})},g={shouldPlainTextInform:function(t){return t.getParam("paste_plaintext_inform",!0)},shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam("paste_retain_style_properties")},getWordValidElements:function(t){return t.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")},shouldConvertWordFakeLists:function(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}},r=function(t,e,n){var r,o,i;"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),s(t,!1)):(e.pasteFormat.set("text"),s(t,!0),i=t,!1===n.get()&&g.shouldPlainTextInform(i)&&(o="Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",(r=t).notificationManager.open({text:r.translate(o),type:"info"}),n.set(!0))),t.focus()},c=function(t,n,e){t.addCommand("mceTogglePlainTextPaste",function(){r(t,n,e)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},h=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),b=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),t="x-tinymce/html",i="\x3c!-- "+t+" --\x3e",l=function(t){return i+t},f=function(t){return t.replace(i,"")},w=function(t){return-1!==t.indexOf(i)},x=function(){return t},_=tinymce.util.Tools.resolve("tinymce.html.Entities"),P=function(t){return t.replace(/\r?\n/g,"<br>")},T=function(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+_.encodeAllRaw(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",a=b.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===a.length?a[0]:b.map(a,function(t){return o+t+i}).join("")},D=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},C=function(t,e,n){return e?T(t,e,n):P(t)},k=tinymce.util.Tools.resolve("tinymce.html.DomParser"),F=tinymce.util.Tools.resolve("tinymce.html.Serializer"),E=tinymce.util.Tools.resolve("tinymce.html.Node"),R=tinymce.util.Tools.resolve("tinymce.html.Schema");function I(e,t){return b.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var O={filter:I,innerText:function(e){var n=R(),r=k({},n),o="",i=n.getShortEndedElements(),a=b.makeMap("script noscript style textarea video audio iframe object"," "),u=n.getBlockElements();return e=I(e,[/<!\[[^\]]+\]>/g]),function t(e){var n=e.name,r=e;if("br"!==n){if("wbr"!==n)if(i[n]&&(o+=" "),a[n])o+=" ";else{if(3===e.type&&(o+=e.value),!e.shortEnded&&(e=e.firstChild))for(;t(e),e=e.next;);u[n]&&r.next&&(o+="\n","p"===n&&(o+="\n"))}}else o+="\n"}(r.parse(e)),o},trimHtml:function(t){return t=I(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function(t){var e=0;return function(){return t+e++}},isMsEdge:function(){return-1!==v.navigator.userAgent.indexOf(" Edge/")}};function S(e){var n,t;return t=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],e=e.replace(/^[\u00a0 ]+/,""),b.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function A(t){var i,a,u=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function s(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!s(t,e))return!1}while(t=t.next);return!0}function e(e,n,r){var o=e._listLevel||u;o!==u&&(o<u?i&&(i=i.parent.parent):(a=i,i=null)),i&&i.name===n?i.append(e):(a=a||i,i=new E(n,1),1<r&&i.attr("start",""+r),e.wrap(i)),e.name="li",u<o&&a&&a.lastChild.append(i),u=o,function t(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;t(e),e=e.next;);}(e),s(e,/^\u00a0+/),s(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),s(e,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var c=0;c<r.length;c++)if("p"===(t=r[c]).name&&t.firstChild){var l=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(l)){e(t,"ul");continue}if(S(l)){var f=/([0-9]+)\./.exec(l),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else a=i,i=null}function j(n,r,o,i){var a,u={},t=n.dom.parseStyle(i);return b.each(t,function(t,e){switch(e){case"mso-list":(a=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(a[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgnore=!0,o.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!==t&&(u[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===g.getRetainStyleProps(n)||r&&r[e])&&(u[e]=t):o.remove()}),/(bold)/i.test(u["font-weight"])&&(delete u["font-weight"],o.wrap(new E("b",1))),/(italic)/i.test(u["font-style"])&&(delete u["font-style"],o.wrap(new E("i",1))),(u=n.dom.serializeStyle(u,o.name))||null}var M,L,N,B,H,$,W,U,z,V={preProcess:function(t,e){return g.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=g.getRetainStyleProps(r))&&(o=b.makeMap(e.split(/[, ]/))),t=O.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=g.getWordValidElements(r),i=R({valid_elements:n,valid_children:"-li[p]"});b.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrder.push("class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var a=k({},i);a.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",j(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),a.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),a.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),a.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1])&&(n="#"+n),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var u=a.parse(t);return g.shouldConvertWordFakeLists(r)&&A(u),t=F({validate:r.settings.validate},i).serialize(u)}(t,e):e},isWordContent:function(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},K=function(t,e){return{content:t,cancelled:e}},q=function(t,e,n,r){var o,i,a,u,s,c,l=d(t,e,n,r),f=function(t,e){var n=k({},t.schema);n.addNodeFilter("meta",function(t){b.each(t,function(t){return t.remove()})});var r=n.parse(e,{forced_root_block:!1,isRootContent:!0});return F({validate:t.settings.validate},t.schema).serialize(r)}(t,l.content);return t.hasEventListeners("PastePostProcess")&&!l.isDefaultPrevented()?(i=f,a=n,u=r,s=(o=t).dom.create("div",{style:"display:none"},i),c=m(o,s,a,u),K(c.node.innerHTML,c.isDefaultPrevented())):K(f,l.isDefaultPrevented())},G=function(t,e,n){var r=V.isWordContent(e),o=r?V.preProcess(t,e):e;return q(t,o,n,r)},X=function(t,e){return t.insertContent(e,{merge:g.shouldMergeFormats(t),paste:!0}),!0},Y=function(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)},Z=function(t){return Y(t)&&/.(gif|jpe?g|png)$/.test(t)},J=function(t,e,n){return!(!1!==t.selection.isCollapsed()||!Y(e)||(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.execCommand("mceInsertLink",!1,o)}),0));var r,o,i},Q=function(t,e,n){return!!Z(e)&&(o=e,i=n,(r=t).undoManager.extra(function(){i(r,o)},function(){r.insertContent('<img src="'+o+'">')}),!0);var r,o,i},tt=function(t,e){var n,r;!1===g.isSmartPasteEnabled(t)?X(t,e):(n=t,r=e,b.each([J,Q,X],function(t){return!0!==t(n,r,X)}))},et=function(){},nt=function(t){return function(){return t}},rt=nt(!1),ot=nt(!0),it=function(){return at},at=(M=function(t){return t.isNone()},B={fold:function(t,e){return t()},is:rt,isSome:rt,isNone:ot,getOr:N=function(t){return t},getOrThunk:L=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:nt(null),getOrUndefined:nt(undefined),or:N,orThunk:L,map:it,each:et,bind:it,exists:rt,forall:ot,filter:it,equals:M,equals_:M,toArray:function(){return[]},toString:nt("none()")},Object.freeze&&Object.freeze(B),B),ut=function(n){var t=nt(n),e=function(){return o},r=function(t){return t(n)},o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:ot,isNone:rt,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(t){return ut(t(n))},each:function(t){t(n)},bind:r,exists:r,forall:r,filter:function(t){return t(n)?o:at},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(rt,function(t){return e(n,t)})}};return o},st={some:ut,none:it,from:function(t){return null===t||t===undefined?at:ut(t)}},ct=(H="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"===e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===H}),lt=Array.prototype.slice,ft=function(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o)}return r},dt=function(t,e){for(var n=0,r=t.length;n<r;n++)e(t[n],n)},mt=ct(Array.from)?Array.from:function(t){return lt.call(t)},pt={},gt={exports:pt};$=undefined,W=pt,U=gt,z=undefined,function(t){"object"==typeof W&&void 0!==U?U.exports=t():"function"==typeof $&&$.amd?$([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function i(a,u,s){function c(e,t){if(!u[e]){if(!a[e]){var n="function"==typeof z&&z;if(!t&&n)return n(e,!0);if(l)return l(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[e]={exports:{}};a[e][0].call(o.exports,function(t){return c(a[e][1][t]||t)},o,o.exports,i,a,u,s)}return u[e].exports}for(var l="function"==typeof z&&z,t=0;t<s.length;t++)c(s[t]);return c}({1:[function(t,e,n){var r,o,i=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(t){r=a}try{o="function"==typeof clearTimeout?clearTimeout:u}catch(t){o=u}}();var c,l=[],f=!1,d=-1;function m(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&p())}function p(){if(!f){var t=s(m);f=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,f=!1,function(t){if(o===clearTimeout)return clearTimeout(t);if((o===u||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(t);try{o(t)}catch(e){try{return o.call(null,t)}catch(e){return o.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function v(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new g(t,e)),1!==l.length||f||s(p)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=v,i.addListener=v,i.once=v,i.off=v,i.removeListener=v,i.removeAllListeners=v,i.emit=v,i.prependListener=v,i.prependOnceListener=v,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(t,f,e){(function(n){!function(t){var e=setTimeout;function r(){}function a(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(t,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,a._immediateFn(function(){var t=1===r._state?o.onFulfilled:o.onRejected;if(null!==t){var e;try{e=t(r._value)}catch(n){return void u(o.promise,n)}i(o.promise,e)}else(1===r._state?i:u)(o.promise,r._value)})):r._deferreds.push(o)}function i(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof a)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void l((r=n,o=e,function(){r.apply(o,arguments)}),t)}t._state=1,t._value=e,s(t)}catch(i){u(t,i)}var r,o}function u(t,e){t._state=2,t._value=e,s(t)}function s(t){2===t._state&&0===t._deferreds.length&&a._immediateFn(function(){t._handled||a._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)o(t,t._deferreds[e]);t._deferreds=null}function c(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function l(t,e){var n=!1;try{t(function(t){n||(n=!0,i(e,t))},function(t){n||(n=!0,u(e,t))})}catch(r){if(n)return;n=!0,u(e,r)}}a.prototype["catch"]=function(t){return this.then(null,t)},a.prototype.then=function(t,e){var n=new this.constructor(r);return o(this,new c(t,e,n)),n},a.all=function(t){var s=Array.prototype.slice.call(t);return new a(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){u(e,t)},i)}s[e]=t,0==--a&&o(s)}catch(r){i(r)}}for(var t=0;t<s.length;t++)u(t,s[t])})},a.resolve=function(e){return e&&"object"==typeof e&&e.constructor===a?e:new a(function(t){t(e)})},a.reject=function(n){return new a(function(t,e){e(n)})},a.race=function(o){return new a(function(t,e){for(var n=0,r=o.length;n<r;n++)o[n].then(t,e)})},a._immediateFn="function"==typeof n?function(t){n(t)}:function(t){e(t,0)},a._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},a._setImmediateFn=function(t){a._immediateFn=t},a._setUnhandledRejectionFn=function(t){a._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=a:t.Promise||(t.Promise=a)}(this)}).call(this,t("timers").setImmediate)},{timers:3}],3:[function(s,t,c){(function(t,e){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},a=0;function u(t,e){this._id=t,this._clearFn=e}c.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(t){t.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},c.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},c._unrefActive=c.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},c.setImmediate="function"==typeof t?t:function(t){var e=a++,n=!(arguments.length<2)&&o.call(arguments,1);return i[e]=!0,r(function(){i[e]&&(n?t.apply(null,n):t.call(null),c.clearImmediate(e))}),e},c.clearImmediate="function"==typeof e?e:function(t){delete i[t]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,e,n){var r=t("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});var vt=gt.exports.boltExport,ht=function(t){var n=st.none(),e=[],r=function(t){o()?a(t):e.push(t)},o=function(){return n.isSome()},i=function(t){dt(t,a)},a=function(e){n.each(function(t){v.setTimeout(function(){e(t)},0)})};return t(function(t){n=st.some(t),i(e),e=[]}),{get:r,map:function(n){return ht(function(e){r(function(t){e(n(t))})})},isReady:o}},yt={nu:ht,pure:function(e){return ht(function(t){t(e)})}},bt=function(t){v.setTimeout(function(){throw t},0)},wt=function(n){var t=function(t){n().then(t,bt)};return{map:function(t){return wt(function(){return n().then(t)})},bind:function(e){return wt(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return wt(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return yt.nu(t)},toCached:function(){var t=null;return wt(function(){return null===t&&(t=n()),t})},toPromise:n,get:t}},xt=function(t){return wt(function(){return new vt(t)})},_t=function(a,t){return t(function(r){var o=[],i=0;0===a.length?r([]):dt(a,function(t,e){var n;t.get((n=e,function(t){o[n]=t,++i>=a.length&&r(o)}))})})},Pt=function(t,e){return n=ft(t,e),_t(n,xt);var n},Tt=function(t,e,n){var r=n||w(e),o=G(t,f(e),r);!1===o.cancelled&&tt(t,o.content)},Dt=function(t,e){e=t.dom.encode(e).replace(/\r\n/g,"\n"),e=C(e,t.settings.forced_root_block,t.settings.forced_root_block_attrs),Tt(t,e,!1)},Ct=function(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e},kt=function(t,e){return e in t&&0<t[e].length},Ft=function(t){return kt(t,"text/html")||kt(t,"text/plain")},Et=O.createIdGenerator("mceclip"),Rt=function(e,t,n){var r,o,i,a,u="paste"===t.type?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&u){var s=(i=(o=u).items?ft(mt(o.items),function(t){return t.getAsFile()}):[],a=o.files?mt(o.files):[],function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r)&&n.push(i)}return n}(0<i.length?i:a,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)}));if(0<s.length)return t.preventDefault(),(r=s,Pt(r,function(r){return xt(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})).get(function(t){n&&e.selection.setRng(n),dt(t,function(t){!function(t,e){var n,r,o,i,a,u,s,c=(n=e.uri,-1!==(r=n.indexOf(","))?n.substr(r+1):null),l=Et(),f=t.settings.images_reuse_filename&&e.blob.name?(o=t,i=e.blob.name,(a=i.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))?o.dom.encode(a[1]):null):l,d=new v.Image;if(d.src=e.uri,u=t.settings,s=d,!u.images_dataimg_filter||u.images_dataimg_filter(s)){var m,p=t.editorUpload.blobCache,g=void 0;(m=p.findFirst(function(t){return t.base64()===c}))?g=m:(g=p.create(l,e.blob,c,f),p.add(g)),Tt(t,'<img src="'+g.blobUri()+'">',!1)}else Tt(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}return!1},It=function(t){return o.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode},Ot=function(s,c,l){var e,f,d=(e=p(st.none()),{clear:function(){e.set(st.none())},set:function(t){e.set(st.some(t))},isSet:function(){return e.get().isSome()},on:function(t){e.get().each(t)}});function m(t,e,n,r){var o,i;kt(t,"text/html")?o=t["text/html"]:(o=c.getHtml(),r=r||w(o),c.isDefaultContent(o)&&(n=!0)),o=O.trimHtml(o),c.remove(),i=!1===r&&D(o),o.length&&!i||(n=!0),n&&(o=kt(t,"text/plain")&&i?t["text/plain"]:O.innerText(o)),c.isDefaultContent(o)?e||s.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?Dt(s,o):Tt(s,o,r)}s.on("keydown",function(t){function e(t){It(t)&&!t.isDefaultPrevented()&&c.remove()}if(It(t)&&!t.isDefaultPrevented()){if((f=t.shiftKey&&86===t.keyCode)&&h.webkit&&-1!==v.navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),d.set(t),window.setTimeout(function(){d.clear()},100),h.ie&&f)return t.preventDefault(),void n(s,!0);c.remove(),c.create(),s.once("keyup",e),s.once("paste",function(){s.off("keyup",e)})}}),s.on("paste",function(t){var e,n,r,o=d.isSet(),i=(e=s,n=Ct(t.clipboardData||e.getDoc().dataTransfer),O.isMsEdge()?b.extend(n,{"text/html":""}):n),a="text"===l.get()||f,u=kt(i,x());f=!1,t.isDefaultPrevented()||(r=t.clipboardData,-1!==v.navigator.userAgent.indexOf("Android")&&r&&r.items&&0===r.items.length)?c.remove():Ft(i)||!Rt(s,t,c.getLastRng()||s.selection.getRng())?(o||t.preventDefault(),!h.ie||o&&!t.ieFake||kt(i,"text/html")||(c.create(),s.dom.bind(c.getEl(),"paste",function(t){t.stopPropagation()}),s.getDoc().execCommand("Paste",!1,null),i["text/html"]=c.getHtml()),kt(i,"text/html")?(t.preventDefault(),u||(u=w(i["text/html"])),m(i,o,a,u)):y.setEditorTimeout(s,function(){m(i,o,a,u)},0)):c.remove()})},St=function(t){return h.ie&&t.inline?v.document.body:t.getBody()},At=function(e,t,n){var r;St(r=e)!==r.getBody()&&e.dom.bind(t,"paste keyup",function(t){Lt(e,n)||e.fire("paste")})},jt=function(t){return t.dom.get("mcepastebin")},Mt=function(t,e){return e===t},Lt=function(t,e){var n,r=jt(t);return(n=r)&&"mcepastebin"===n.id&&Mt(e,r.innerHTML)},Nt=function(a){var u=p(null),s="%MCEPASTEBIN%";return{create:function(){return e=u,n=s,o=(t=a).dom,i=t.getBody(),e.set(t.selection.getRng()),r=t.dom.add(St(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(h.ie||h.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",!0)?65535:-65535),o.bind(r,"beforedeactivate focusin focusout",function(t){t.stopPropagation()}),At(t,r,n),r.focus(),void t.selection.select(r,!0);var t,e,n,r,o,i},remove:function(){return function(t,e){if(jt(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(a,u)},getEl:function(){return jt(a)},getHtml:function(){return function(n){var e,t,r,o,i,a=function(t,e){t.appendChild(e),n.dom.remove(e,!0)};for(t=b.grep(St(n).childNodes,function(t){return"mcepastebin"===t.id}),e=t.shift(),b.each(t,function(t){a(e,t)}),r=(o=n.dom.select("div[id=mcepastebin]",e)).length-1;0<=r;r--)i=n.dom.create("div"),e.insertBefore(i,o[r]),a(i,o[r]);return e?e.innerHTML:""}(a)},getLastRng:function(){return u.get()},isDefault:function(){return Lt(a,s)},isDefaultContent:function(t){return Mt(s,t)}}},Bt=function(n,t){var e=Nt(n);return n.on("preInit",function(){return Ot(a=n,e,t),void a.parser.addNodeFilter("img",function(t,e,n){var r,o=function(t){t.attr("data-mce-object")||u===h.transparentSrc||t.remove()};if(!a.settings.paste_data_images&&(r=n).data&&!0===r.data.paste)for(var i=t.length;i--;)(u=t[i].attributes.map.src)&&(0===u.indexOf("webkit-fake-url")?o(t[i]):a.settings.allow_html_data_urls||0!==u.indexOf("data:")||o(t[i]))});var a,u}),{pasteFormat:t,pasteHtml:function(t,e){return Tt(n,t,e)},pasteText:function(t){return Dt(n,t)},pasteImageData:function(t,e){return Rt(n,t,e)},getDataTransferItems:Ct,hasHtmlOrText:Ft,hasContentType:kt}},Ht=function(){},$t=function(t,e,n){if(r=t,!1!==h.iOS||r===undefined||"function"!=typeof r.setData||!0===O.isMsEdge())return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(x(),e),!0}catch(o){return!1}var r},Wt=function(t,e,n,r){$t(t.clipboardData,e.html,e.text)?(t.preventDefault(),r()):n(e.html,r)},Ut=function(u){return function(t,e){var n=l(t),r=u.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=u.dom.create("div",{contenteditable:"true"},n);u.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),u.dom.add(u.getBody(),r);var i=u.selection.getRng();o.focus();var a=u.dom.createRng();a.selectNodeContents(o),u.selection.setRng(a),setTimeout(function(){u.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}},zt=function(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}},Vt=function(t){return!t.selection.isCollapsed()||!!(e=t).dom.getParent(e.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",e.getBody());var e},Kt=function(t){var e,n;t.on("cut",(e=t,function(t){Vt(e)&&Wt(t,zt(e),Ut(e),function(){setTimeout(function(){e.execCommand("Delete")},0)})})),t.on("copy",(n=t,function(t){Vt(n)&&Wt(t,zt(n),Ut(n),Ht)}))},qt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),Gt=function(t,e){return qt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())},Xt=function(t,e){t.focus(),t.selection.setRng(e)},Yt=function(a,u,s){g.shouldBlockDrop(a)&&a.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),g.shouldPasteDataImages(a)||a.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),a.on("drop",function(t){var e,n;if(n=Gt(a,t),!t.isDefaultPrevented()&&!s.get()){e=u.getDataTransferItems(t.dataTransfer);var r,o=u.hasContentType(e,x());if((u.hasHtmlOrText(e)&&(!(r=e["text/plain"])||0!==r.indexOf("file://"))||!u.pasteImageData(t,n))&&n&&g.shouldFilterDrop(a)){var i=e["mce-internal"]||e["text/html"]||e["text/plain"];i&&(t.preventDefault(),y.setEditorTimeout(a,function(){a.undoManager.transact(function(){e["mce-internal"]&&a.execCommand("Delete"),Xt(a,n),i=O.trimHtml(i),e["text/html"]?u.pasteHtml(i,o):u.pasteText(i)})}))}}}),a.on("dragstart",function(t){s.set(!0)}),a.on("dragover dragend",function(t){g.shouldPasteDataImages(a)&&!1===s.get()&&(t.preventDefault(),Xt(a,Gt(a,t))),"dragend"===t.type&&s.set(!1)})},Zt=function(t){var e=t.plugins.paste,n=g.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=g.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function Jt(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function Qt(t,e){if(!V.isWordContent(e))return e;var n=[];b.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*","g");return e=O.filter(e,[[r,"$1"]]),e=O.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function te(t,e,n,r){if(r||n)return e;var c,o=g.getWebkitStyles(t);if(!1===g.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(c=o.split(/[, ]/)),c){var l=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=l.parseStyle(l.decode(n)),i={};if("none"===c)return e+r;for(var a=0;a<c.length;a++){var u=o[c[a]],s=l.getStyle(f,c[a],!0);/color/.test(c[a])&&(u=l.toHex(u),s=l.toHex(s)),s!==u&&(i[c[a]]=u)}return(i=l.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function ee(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}var ne=function(t){var e,n;h.webkit&&Jt(t,te),h.ie&&(Jt(t,Qt),n=ee,(e=t).on("PastePostProcess",function(t){n(e,t.node)}))},re=function(t,e,n){var r=n.control;r.active("text"===e.pasteFormat.get()),t.on("PastePlainTextToggle",function(t){r.active(t.state)})},oe=function(t,e){var n=function(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}(re,t,e);t.addButton("pastetext",{active:!1,icon:"pastetext",tooltip:"Paste as text",cmd:"mceTogglePlainTextPaste",onPostRender:n}),t.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:e.pasteFormat,cmd:"mceTogglePlainTextPaste",onPostRender:n})};e.add("paste",function(t){if(!1===a(t)){var e=p(!1),n=p(!1),r=p(g.isPasteAsTextEnabled(t)?"text":"html"),o=Bt(t,r),i=ne(t);return oe(t,o),c(t,o,e),Zt(t),Kt(t),Yt(t,o,n),u(o,i)}})}(window);
\ No newline at end of file
-!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t){t.addCommand("mcePrint",function(){t.getWin().print()})},i=function(t){t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print"})};t.add("print",function(t){n(t),i(t),t.addShortcut("Meta+P","","mcePrint")})}();
\ No newline at end of file
+!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.Env"),i=function(t){t.addCommand("mcePrint",function(){n.ie&&n.ie<=11?t.getDoc().execCommand("print",!1,null):t.getWin().print()})},e=function(t){t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print"})};t.add("print",function(t){i(t),e(t),t.addShortcut("Meta+P","","mcePrint")})}();
\ No newline at end of file
-!function(m){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),y=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},x=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},C=function(e){return function(){return e}},o=function(e){return e};function b(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}var t,n,r,i,u,g=function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}},c=function(e){return e()},a=C(!1),l=C(!0),f=a,s=l,d=function(){return h},h=(i={fold:function(e,t){return e()},is:f,isSome:f,isNone:s,getOr:r=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:r,orThunk:n,map:d,ap:d,each:function(){},bind:d,flatten:d,exists:f,forall:s,filter:d,equals:t=function(e){return e.isNone()},equals_:t,toArray:function(){return[]},toString:C("none()")},Object.freeze&&Object.freeze(i),i),p=function(n){var e=function(){return n},t=function(){return o},r=function(e){return e(n)},o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:s,isNone:f,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return p(e(n))},ap:function(e){return e.fold(d,function(e){return p(e(n))})},each:function(e){e(n)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(n)?o:h},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(f,function(e){return t(n,e)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},S={some:p,none:d,from:function(e){return null===e||e===undefined?h:p(e)}},v=function(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&Array.prototype.isPrototypeOf(e)?"array":"object"===t&&String.prototype.isPrototypeOf(e)?"string":t}(e)===t}},w=v("string"),R=v("array"),T=v("boolean"),D=v("function"),O=v("number"),N=(u=Array.prototype.indexOf)===undefined?function(e,t){return j(e,t)}:function(e,t){return u.call(e,t)},E=function(e,t){return-1<N(e,t)},A=function(e,t){return L(e,t).isSome()},k=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o,e)}return r},P=function(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)},I=function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r,e)&&n.push(i)}return n},B=function(e,t){if(0===e.length)return[];for(var n=t(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var a=e[i],c=t(a);c!==n&&(r.push(o),o=[]),n=c,o.push(a)}return 0!==o.length&&r.push(o),r},W=function(e,t,n){return function(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n,e)}(e,function(e){n=t(n,e)}),n},M=function(e,t,n){return P(e,function(e){n=t(n,e)}),n},_=function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n,e))return S.some(o)}return S.none()},L=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n,e))return S.some(n);return S.none()},j=function(e,t){for(var n=0,r=e.length;n<r;++n)if(e[n]===t)return n;return-1},F=Array.prototype.push,z=function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!Array.prototype.isPrototypeOf(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);F.apply(t,e[n])}return t},H=function(e,t){var n=k(e,t);return z(n)},U=function(e,t){for(var n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n,e))return!1;return!0},q=Array.prototype.slice,V=function(e){var t=q.call(e,0);return t.reverse(),t},G=function(e,t){var n=q.call(e,0);return n.sort(t),n},Y=(D(Array.from)&&Array.from,Object.keys),X=function(e,t){for(var n=Y(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i,e)}},K=function(e,r){return J(e,function(e,t,n){return{k:t,v:r(e,t,n)}})},J=function(r,o){var i={};return X(r,function(e,t){var n=o(e,t,r);i[n.k]=n.v}),i},$=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(t.length!==n.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+n.length+" arguments");var r={};return P(t,function(e,t){r[e]=C(n[t])}),r}},Q=function(e){return e.slice(0).sort()},Z=function(e,t){throw new Error("All required keys ("+Q(e).join(", ")+") were not specified. Specified keys were: "+Q(t).join(", ")+".")},ee=function(e){throw new Error("Unsupported keys for object: "+Q(e).join(", "))},te=function(t,e){if(!R(e))throw new Error("The "+t+" fields must be an array. Was: "+e+".");P(e,function(e){if(!w(e))throw new Error("The value "+e+" in the "+t+" fields was not a string.")})},ne=function(e){var n=Q(e);_(n,function(e,t){return t<n.length-1&&e===n[t+1]}).each(function(e){throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+n.join(", ")+"].")})},re=function(o,i){var u=o.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return te("required",o),te("optional",i),ne(u),function(t){var n=Y(t);U(o,function(e){return E(n,e)})||Z(o,n);var e=I(n,function(e){return!E(u,e)});0<e.length&&ee(e);var r={};return P(o,function(e){r[e]=C(t[e])}),P(i,function(e){r[e]=C(Object.prototype.hasOwnProperty.call(t,e)?S.some(t[e]):S.none())}),r}},oe=(m.Node.ATTRIBUTE_NODE,m.Node.CDATA_SECTION_NODE,m.Node.COMMENT_NODE),ie=m.Node.DOCUMENT_NODE,ue=(m.Node.DOCUMENT_TYPE_NODE,m.Node.DOCUMENT_FRAGMENT_NODE,m.Node.ELEMENT_NODE),ae=m.Node.TEXT_NODE,ce=(m.Node.PROCESSING_INSTRUCTION_NODE,m.Node.ENTITY_REFERENCE_NODE,m.Node.ENTITY_NODE,m.Node.NOTATION_NODE,function(e){return e.dom().nodeName.toLowerCase()}),le=function(e){return e.dom().nodeType},fe=function(t){return function(e){return le(e)===t}},se=function(e){return le(e)===oe||"#comment"===ce(e)},de=fe(ue),me=fe(ae),ge=fe(ie),he=function(e,t,n){if(!(w(n)||T(n)||O(n)))throw m.console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")},pe=function(e,t,n){he(e.dom(),t,n)},ve=function(e,t){var n=e.dom();X(t,function(e,t){he(n,t,e)})},be=function(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n},we=function(e,t){var n=e.dom();return!(!n||!n.hasAttribute)&&n.hasAttribute(t)},ye=function(e,t){e.dom().removeAttribute(t)},xe=function(e){return M(e.dom().attributes,function(e,t){return e[t.name]=t.value,e},{})},Ce=function(e,t){return-1!==e.indexOf(t)},Se=function(e){return e.style!==undefined},Re=function(n){var r,o=!1;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o||(o=!0,r=n.apply(null,e)),r}},Te=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:C(e)}},De={fromHtml:function(e,t){var n=(t||m.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw m.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Te(n.childNodes[0])},fromTag:function(e,t){var n=(t||m.document).createElement(e);return Te(n)},fromText:function(e,t){var n=(t||m.document).createTextNode(e);return Te(n)},fromDom:Te,fromPoint:function(e,t,n){var r=e.dom();return S.from(r.elementFromPoint(t,n)).map(Te)}},Oe=function(e){var t=me(e)?e.dom().parentNode:e.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)},Ne=Re(function(){return Ee(De.fromDom(m.document))}),Ee=function(e){var t=e.dom().body;if(null===t||t===undefined)throw new Error("Body is not available yet");return De.fromDom(t)},Ae=function(e,t,n){if(!w(n))throw m.console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);Se(e)&&e.style.setProperty(t,n)},ke=function(e,t,n){var r=e.dom();Ae(r,t,n)},Pe=function(e,t){var n=e.dom();X(t,function(e,t){Ae(n,t,e)})},Ie=function(e,t){var n=e.dom(),r=m.window.getComputedStyle(n).getPropertyValue(t),o=""!==r||Oe(e)?r:Be(n,t);return null===o?undefined:o},Be=function(e,t){return Se(e)?e.style.getPropertyValue(t):""},We=function(e,t){var n=e.dom(),r=Be(n,t);return S.from(r).filter(function(e){return 0<e.length})},Me=function(e,t){var n,r,o=e.dom();r=t,Se(n=o)&&n.style.removeProperty(r),we(e,"style")&&""===be(e,"style").replace(/^\s+|\s+$/g,"")&&ye(e,"style")},_e="undefined"!=typeof m.window?m.window:Function("return this;")(),Le=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:_e,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},je=function(e,t){var n=Le(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n},Fe=function(){return je("Node")},ze=function(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)},He=function(e,t){return ze(e,t,Fe().DOCUMENT_POSITION_CONTAINED_BY)},Ue=function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}return undefined}(e,t);if(!n)return{major:0,minor:0};var r=function(e){return Number(t.replace(n,"$"+e))};return Ve(r(1),r(2))},qe=function(){return Ve(0,0)},Ve=function(e,t){return{major:e,minor:t}},Ge={nu:Ve,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?qe():Ue(e,n)},unknown:qe},Ye="Firefox",Xe=function(e,t){return function(){return t===e}},Ke=function(e){var t=e.current;return{current:t,version:e.version,isEdge:Xe("Edge",t),isChrome:Xe("Chrome",t),isIE:Xe("IE",t),isOpera:Xe("Opera",t),isFirefox:Xe(Ye,t),isSafari:Xe("Safari",t)}},Je={unknown:function(){return Ke({current:undefined,version:Ge.unknown()})},nu:Ke,edge:C("Edge"),chrome:C("Chrome"),ie:C("IE"),opera:C("Opera"),firefox:C(Ye),safari:C("Safari")},$e="Windows",Qe="Android",Ze="Solaris",et="FreeBSD",tt=function(e,t){return function(){return t===e}},nt=function(e){var t=e.current;return{current:t,version:e.version,isWindows:tt($e,t),isiOS:tt("iOS",t),isAndroid:tt(Qe,t),isOSX:tt("OSX",t),isLinux:tt("Linux",t),isSolaris:tt(Ze,t),isFreeBSD:tt(et,t)}},rt={unknown:function(){return nt({current:undefined,version:Ge.unknown()})},nu:nt,windows:C($e),ios:C("iOS"),android:C(Qe),linux:C("Linux"),osx:C("OSX"),solaris:C(Ze),freebsd:C(et)},ot=function(e,t){var n=String(t).toLowerCase();return _(e,function(e){return e.search(n)})},it=function(e,n){return ot(e,n).map(function(e){var t=Ge.detect(e.versionRegexes,n);return{current:e.name,version:t}})},ut=function(e,n){return ot(e,n).map(function(e){var t=Ge.detect(e.versionRegexes,n);return{current:e.name,version:t}})},at=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ct=function(t){return function(e){return Ce(e,t)}},lt=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Ce(e,"edge/")&&Ce(e,"chrome")&&Ce(e,"safari")&&Ce(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,at],search:function(e){return Ce(e,"chrome")&&!Ce(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Ce(e,"msie")||Ce(e,"trident")}},{name:"Opera",versionRegexes:[at,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:ct("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:ct("firefox")},{name:"Safari",versionRegexes:[at,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Ce(e,"safari")||Ce(e,"mobile/"))&&Ce(e,"applewebkit")}}],ft=[{name:"Windows",search:ct("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Ce(e,"iphone")||Ce(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:ct("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:ct("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:ct("linux"),versionRegexes:[]},{name:"Solaris",search:ct("sunos"),versionRegexes:[]},{name:"FreeBSD",search:ct("freebsd"),versionRegexes:[]}],st={browsers:C(lt),oses:C(ft)},dt=function(e){var t,n,r,o,i,u,a,c,l,f,s,d=st.browsers(),m=st.oses(),g=it(d,e).fold(Je.unknown,Je.nu),h=ut(m,e).fold(rt.unknown,rt.nu);return{browser:g,os:h,deviceType:(n=g,r=e,o=(t=h).isiOS()&&!0===/ipad/i.test(r),i=t.isiOS()&&!o,u=t.isAndroid()&&3===t.version.major,a=t.isAndroid()&&4===t.version.major,c=o||u||a&&!0===/mobile/i.test(r),l=t.isiOS()||t.isAndroid(),f=l&&!c,s=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(r),{isiPad:C(o),isiPhone:C(i),isTablet:C(c),isPhone:C(f),isTouch:C(l),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:C(s)})}},mt={detect:Re(function(){var e=m.navigator.userAgent;return dt(e)})},gt=ue,ht=ie,pt=function(e,t){var n=e.dom();if(n.nodeType!==gt)return!1;if(n.matches!==undefined)return n.matches(t);if(n.msMatchesSelector!==undefined)return n.msMatchesSelector(t);if(n.webkitMatchesSelector!==undefined)return n.webkitMatchesSelector(t);if(n.mozMatchesSelector!==undefined)return n.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},vt=function(e){return e.nodeType!==gt&&e.nodeType!==ht||0===e.childElementCount},bt=function(e,t){return e.dom()===t.dom()},wt=mt.detect().browser.isIE()?function(e,t){return He(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},yt=pt,xt=function(e){return De.fromDom(e.dom().ownerDocument)},Ct=function(e){var t=e.dom();return S.from(t.parentNode).map(De.fromDom)},St=function(e,t){for(var n=D(t)?t:C(!1),r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=De.fromDom(i);if(o.push(u),!0===n(u))break;r=i}return o},Rt=function(e){var t=e.dom();return S.from(t.previousSibling).map(De.fromDom)},Tt=function(e){var t=e.dom();return S.from(t.nextSibling).map(De.fromDom)},Dt=function(e){var t=e.dom();return k(t.childNodes,De.fromDom)},Ot=function(e,t){var n=e.dom().childNodes;return S.from(n[t]).map(De.fromDom)},Nt=($("element","offset"),function(t,n){Ct(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})}),Et=function(e,t){Tt(e).fold(function(){Ct(e).each(function(e){kt(e,t)})},function(e){Nt(e,t)})},At=function(t,n){Ot(t,0).fold(function(){kt(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})},kt=function(e,t){e.dom().appendChild(t.dom())},Pt=function(e,t){Nt(e,t),kt(t,e)},It=function(r,o){P(o,function(e,t){var n=0===t?r:o[t-1];Et(n,e)})},Bt=function(t,e){P(e,function(e){kt(t,e)})},Wt=function(e){e.dom().textContent="",P(Dt(e),function(e){Mt(e)})},Mt=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},_t=function(e){var t,n=Dt(e);0<n.length&&(t=e,P(n,function(e){Nt(t,e)})),Mt(e)},Lt=$("width","height"),jt=$("rows","columns"),Ft=$("row","column"),zt=$("x","y"),Ht=$("element","rowspan","colspan"),Ut=$("element","rowspan","colspan","isNew"),qt={dimensions:Lt,grid:jt,address:Ft,coords:zt,extended:$("element","rowspan","colspan","row","column"),detail:Ht,detailnew:Ut,rowdata:$("element","cells","section"),elementnew:$("element","isNew"),rowdatanew:$("element","cells","section","isNew"),rowcells:$("cells","section"),rowdetails:$("details","section"),bounds:$("startRow","startCol","finishRow","finishCol")},Vt=function(e,t){var n=[];return P(Dt(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(Vt(e,t))}),n},Gt=function(e,t,n){return r=function(e){return pt(e,t)},I(St(e,n),r);var r},Yt=function(e,t){return n=function(e){return pt(e,t)},I(Dt(e),n);var n},Xt=function(e,t){return n=t,o=(r=e)===undefined?m.document:r.dom(),vt(o)?[]:k(o.querySelectorAll(n),De.fromDom);var n,r,o};function Kt(e,t,n,r,o){return e(n,r)?S.some(n):D(o)&&o(n)?S.none():t(n,r,o)}var Jt,$t,Qt,Zt,en,tn=function(e,t,n){for(var r=e.dom(),o=D(n)?n:C(!1);r.parentNode;){r=r.parentNode;var i=De.fromDom(r);if(t(i))return S.some(i);if(o(i))break}return S.none()},nn=function(e,t,n){return tn(e,function(e){return pt(e,t)},n)},rn=function(e,t){return n=function(e){return pt(e,t)},_(e.dom().childNodes,x(n,De.fromDom)).map(De.fromDom);var n},on=function(e,t){return n=t,o=(r=e)===undefined?m.document:r.dom(),vt(o)?S.none():S.from(o.querySelector(n)).map(De.fromDom);var n,r,o},un=function(e,t,n){return Kt(pt,nn,e,t,n)},an=function(e,t,n){return H(Dt(e),function(e){return pt(e,t)?n(e)?[e]:[]:an(e,t,n)})},cn={firstLayer:function(e,t){return an(e,t,C(!0))},filterFirstLayer:an},ln=function(e,t,n){var r=n!==undefined?n:C(!1);return r(t)?S.none():E(e,ce(t))?S.some(t):nn(t,e.join(","),function(e){return pt(e,"table")||r(e)})},fn=function(t,e){return Ct(e).map(function(e){return Yt(e,t)})},sn=b(fn,"th,td"),dn=b(fn,"tr"),mn=function(e,t){return parseInt(be(e,t),10)},gn={cell:function(e,t){return ln(["td","th"],e,t)},firstCell:function(e){return on(e,"th,td")},cells:function(e){return cn.firstLayer(e,"th,td")},neighbourCells:sn,table:function(e,t){return un(e,"table",t)},row:function(e,t){return ln(["tr"],e,t)},rows:function(e){return cn.firstLayer(e,"tr")},notCell:function(e,t){return ln(["caption","tr","tbody","tfoot","thead"],e,t)},neighbourRows:dn,attr:mn,grid:function(e,t,n){var r=mn(e,t),o=mn(e,n);return qt.grid(r,o)}},hn=function(e){var t=gn.rows(e);return k(t,function(e){var t=e,n=Ct(t).map(function(e){var t=ce(e);return"tfoot"===t||"thead"===t||"tbody"===t?t:"tbody"}).getOr("tbody"),r=k(gn.cells(e),function(e){var t=we(e,"rowspan")?parseInt(be(e,"rowspan"),10):1,n=we(e,"colspan")?parseInt(be(e,"colspan"),10):1;return qt.detail(e,t,n)});return qt.rowdata(t,r,n)})},pn=function(e,n){return k(e,function(e){var t=k(gn.cells(e),function(e){var t=we(e,"rowspan")?parseInt(be(e,"rowspan"),10):1,n=we(e,"colspan")?parseInt(be(e,"colspan"),10):1;return qt.detail(e,t,n)});return qt.rowdata(e,t,n.section())})},vn=function(e,t){return e+","+t},bn=function(e,t){var n=H(e.all(),function(e){return e.cells()});return I(n,t)},wn={generate:function(e){var f={},t=[],n=e.length,s=0;P(e,function(e,c){var l=[];P(e.cells(),function(e,t){for(var n=0;f[vn(c,n)]!==undefined;)n++;for(var r=qt.extended(e.element(),e.rowspan(),e.colspan(),c,n),o=0;o<e.colspan();o++)for(var i=0;i<e.rowspan();i++){var u=n+o,a=vn(c+i,u);f[a]=r,s=Math.max(s,u+1)}l.push(r)}),t.push(qt.rowdata(e.element(),l,e.section()))});var r=qt.grid(n,s);return{grid:C(r),access:C(f),all:C(t)}},getAt:function(e,t,n){var r=e.access()[vn(t,n)];return r!==undefined?S.some(r):S.none()},findItem:function(e,t,n){var r=bn(e,function(e){return n(t,e.element())});return 0<r.length?S.some(r[0]):S.none()},filterItems:bn,justCells:function(e){var t=k(e.all(),function(e){return e.cells()});return z(t)}},yn=$("minRow","minCol","maxRow","maxCol"),xn=function(e,t){var n,i,r,u,a,c,l,o,f,s,d=function(e){return pt(e.element(),t)},m=hn(e),g=wn.generate(m),h=(i=d,r=(n=g).grid().columns(),u=n.grid().rows(),a=r,l=c=0,X(n.access(),function(e){if(i(e)){var t=e.row(),n=t+e.rowspan()-1,r=e.column(),o=r+e.colspan()-1;t<u?u=t:c<n&&(c=n),r<a?a=r:l<o&&(l=o)}}),yn(u,a,c,l)),p="th:not("+t+"),td:not("+t+")",v=cn.filterFirstLayer(e,"th,td",function(e){return pt(e,p)});return P(v,Mt),function(e,t,n,r){for(var o,i,u,a=t.grid().columns(),c=t.grid().rows(),l=0;l<c;l++)for(var f=!1,s=0;s<a;s++)l<n.minRow()||l>n.maxRow()||s<n.minCol()||s>n.maxCol()||(wn.getAt(t,l,s).filter(r).isNone()?(o=f,i=e[l].element(),u=De.fromTag("td"),kt(u,De.fromTag("br")),(o?kt:At)(i,u)):f=!0)}(m,g,h,d),o=e,f=h,s=I(cn.firstLayer(o,"tr"),function(e){return 0===e.dom().childElementCount}),P(s,Mt),f.minCol()!==f.maxCol()&&f.minRow()!==f.maxRow()||P(cn.firstLayer(o,"th,td"),function(e){ye(e,"rowspan"),ye(e,"colspan")}),ye(o,"width"),ye(o,"height"),Me(o,"width"),Me(o,"height"),e},Cn=(Jt=me,$t="text",Qt=function(e){return Jt(e)?S.from(e.dom().nodeValue):S.none()},Zt=mt.detect().browser,{get:function(e){if(!Jt(e))throw new Error("Can only get "+$t+" value of a "+$t+" node");return en(e).getOr("")},getOption:en=Zt.isIE()&&10===Zt.version.major?function(e){try{return Qt(e)}catch(t){return S.none()}}:Qt,set:function(e,t){if(!Jt(e))throw new Error("Can only set raw "+$t+" value of a "+$t+" node");e.dom().nodeValue=t}}),Sn=function(e){return Cn.get(e)},Rn=function(e){return Cn.getOption(e)},Tn=function(e,t){Cn.set(e,t)},Dn=function(e){return"img"===ce(e)?1:Rn(e).fold(function(){return Dt(e).length},function(e){return e.length})},On=["img","br"],Nn=function(e){return Rn(e).filter(function(e){return 0!==e.trim().length||-1<e.indexOf("\xa0")}).isSome()||E(On,ce(e))},En=function(e){return r=Nn,(o=function(e){for(var t=0;t<e.childNodes.length;t++){if(r(De.fromDom(e.childNodes[t])))return S.some(De.fromDom(e.childNodes[t]));var n=o(e.childNodes[t]);if(n.isSome())return n}return S.none()})(e.dom());var r,o},An=function(e){return kn(e,Nn)},kn=function(e,i){var u=function(e){for(var t=Dt(e),n=t.length-1;0<=n;n--){var r=t[n];if(i(r))return S.some(r);var o=u(r);if(o.isSome())return o}return S.none()};return u(e)},Pn=function(e,t){return De.fromDom(e.dom().cloneNode(t))},In=function(e){return Pn(e,!1)},Bn=function(e){return Pn(e,!0)},Wn=function(e,t){var n,r,o,i,u=(n=e,r=t,o=De.fromTag(r),i=xe(n),ve(o,i),o),a=Dt(Bn(e));return Bt(u,a),u},Mn=function(){var e=De.fromTag("td");return kt(e,De.fromTag("br")),e},_n=function(e,t,n){var r=Wn(e,t);return X(n,function(e,t){null===e?ye(r,t):pe(r,t,e)}),r},Ln=function(e){return e},jn=function(e){return function(){return De.fromTag("tr",e.dom())}},Fn=function(d,e,m){return{row:jn(e),cell:function(e){var r,o,i,t,n,u,a,c=xt(e.element()),l=De.fromTag(ce(e.element()),c.dom()),f=m.getOr(["strong","em","b","i","span","font","h1","h2","h3","h4","h5","h6","p","div"]),s=0<f.length?(r=e.element(),o=l,i=f,En(r).map(function(e){var t=i.join(","),n=Gt(e,t,function(e){return bt(e,r)});return W(n,function(e,t){var n=In(t);return ye(n,"contenteditable"),kt(e,n),n},o)}).getOr(o)):l;return kt(s,De.fromTag("br")),t=e.element(),n=l,u=t.dom(),a=n.dom(),Se(u)&&Se(a)&&(a.style.cssText=u.style.cssText),Me(l,"height"),1!==e.colspan()&&Me(e.element(),"width"),d(e.element(),l),l},replace:_n,gap:Mn}},zn=function(e){return{row:jn(e),cell:Mn,replace:Ln,gap:Mn}},Hn=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"];function Un(){return{up:C({selector:nn,closest:un,predicate:tn,all:St}),down:C({selector:Xt,predicate:Vt}),styles:C({get:Ie,getRaw:We,set:ke,remove:Me}),attrs:C({get:be,set:pe,remove:ye,copyTo:function(e,t){var n=xe(e);ve(t,n)}}),insert:C({before:Nt,after:Et,afterAll:It,append:kt,appendAll:Bt,prepend:At,wrap:Pt}),remove:C({unwrap:_t,remove:Mt}),create:C({nu:De.fromTag,clone:function(e){return De.fromDom(e.dom().cloneNode(!1))},text:De.fromText}),query:C({comparePosition:function(e,t){return e.dom().compareDocumentPosition(t.dom())},prevSibling:Rt,nextSibling:Tt}),property:C({children:Dt,name:ce,parent:Ct,document:function(e){return e.dom().ownerDocument},isText:me,isComment:se,isElement:de,getText:Sn,setText:Tn,isBoundary:function(e){return!!de(e)&&("body"===ce(e)||E(Hn,ce(e)))},isEmptyTag:function(e){return!!de(e)&&E(["br","img","hr","input"],ce(e))}}),eq:bt,is:yt}}var qn=$("left","right"),Vn=function(e,t,n){var r=e.property().children(t);return L(r,b(e.eq,n)).map(function(e){return{before:C(r.slice(0,e)),after:C(r.slice(e+1))}})},Gn=function(n,r,o){return Vn(n,r,o).map(function(e){var t=n.create().clone(r);return n.insert().appendAll(t,e.before().concat([o])),n.insert().appendAll(r,e.after()),n.insert().before(r,t),qn(t,r)})},Yn=function(n,r,e){return Vn(n,r,e).map(function(e){var t=n.create().clone(r);return n.insert().appendAll(t,e.after()),n.insert().after(r,t),qn(r,t)})},Xn=function(i,e,u,a){var r=$("first","second","splits"),c=function(e,t,o){var n=r(e,S.none(),o);return u(e)?r(e,t,o):i.property().parent(e).bind(function(r){return a(i,r,e).map(function(e){var t=[{first:e.left,second:e.right}],n=u(r)?r:e.left();return c(n,S.some(e.right()),o.concat(t))}).getOr(n)})};return c(e,S.none(),[])},Kn=function(r,o,e,t){var n=o(r,e);return W(t,function(e,t){var n=o(r,t);return Jn(r,e,n)},n)},Jn=function(t,e,n){return e.bind(function(e){return n.filter(b(t.eq,e))})},$n=function(e,t,n){return 0<n.length?Kn(e,t,(r=n)[0],r.slice(1)):S.none();var r},Qn=function(e,t){return b(e.eq,t)},Zn=function(t,e,n,r){var o=r!==undefined?r:C(!1),i=[e].concat(t.up().all(e)),u=[n].concat(t.up().all(n)),a=function(t){return L(t,o).fold(function(){return t},function(e){return t.slice(0,e+1)})},c=a(i),l=a(u),f=_(c,function(e){return A(l,Qn(t,e))});return{firstpath:C(c),secondpath:C(l),shared:C(f)}},er=function(t,e,n){var r=Zn(t,e,n);return r.shared().bind(function(e){return function(o,i,e,t){var u=o.property().children(i);if(o.eq(i,e[0]))return S.some([e[0]]);if(o.eq(i,t[0]))return S.some([t[0]]);var n=function(e){var t=V(e),n=L(t,Qn(o,i)).getOr(-1),r=n<t.length-1?t[n+1]:t[n];return L(u,Qn(o,r))},r=n(e),a=n(t);return r.bind(function(r){return a.map(function(e){var t=Math.min(r,e),n=Math.max(r,e);return u.slice(t,n+1)})})}(t,e,r.firstpath(),r.secondpath())})},tr=Zn,nr=function(e,t,n){return $n(e,t,n)},rr=function(e,t,n){return er(e,t,n)},or=function(e,t,n,r){return tr(e,t,n,r)},ir=function(e,t,n){return Gn(e,t,n)},ur=function(e,t,n){return Yn(e,t,n)},ar=function(e,t,n,r){return Xn(e,t,n,r)},cr=Un(),lr={sharedOne:function(n,e){return nr(cr,function(e,t){return n(t)},e)},subset:function(e,t){return rr(cr,e,t)},ancestors:function(e,t,n){return or(cr,e,t,n)},breakToLeft:function(e,t){return ir(cr,e,t)},breakToRight:function(e,t){return ur(cr,e,t)},breakPath:function(e,t,r){return ar(cr,e,t,function(e,t,n){return r(t,n)})}},fr=function(e,t){return t.column()>=e.startCol()&&t.column()+t.colspan()-1<=e.finishCol()&&t.row()>=e.startRow()&&t.row()+t.rowspan()-1<=e.finishRow()},sr=function(e,t){var n=t.column(),r=t.column()+t.colspan()-1,o=t.row(),i=t.row()+t.rowspan()-1;return n<=e.finishCol()&&r>=e.startCol()&&o<=e.finishRow()&&i>=e.startRow()},dr=function(e,t){for(var n=!0,r=b(fr,t),o=t.startRow();o<=t.finishRow();o++)for(var i=t.startCol();i<=t.finishCol();i++)n=n&&wn.getAt(e,o,i).exists(r);return n?S.some(t):S.none()},mr=function(e,t,n){var r=wn.findItem(e,t,bt),o=wn.findItem(e,n,bt);return r.bind(function(r){return o.map(function(e){return t=r,n=e,qt.bounds(Math.min(t.row(),n.row()),Math.min(t.column(),n.column()),Math.max(t.row()+t.rowspan()-1,n.row()+n.rowspan()-1),Math.max(t.column()+t.colspan()-1,n.column()+n.colspan()-1));var t,n})})},gr=mr,hr=function(t,e,n){return mr(t,e,n).bind(function(e){return dr(t,e)})},pr=function(r,e,o,i){return wn.findItem(r,e,bt).bind(function(e){var t=0<o?e.row()+e.rowspan()-1:e.row(),n=0<i?e.column()+e.colspan()-1:e.column();return wn.getAt(r,t+o,n+i).map(function(e){return e.element()})})},vr=function(n,e,t){return gr(n,e,t).map(function(e){var t=wn.filterItems(n,b(sr,e));return k(t,function(e){return e.element()})})},br=function(e,t){return wn.findItem(e,t,function(e,t){return wt(t,e)}).bind(function(e){return e.element()})},wr=function(e){var t=hn(e);return wn.generate(t)},yr=function(n,r,o){return gn.table(n).bind(function(e){var t=wr(e);return pr(t,n,r,o)})},xr=function(e,t,n){var r=wr(e);return vr(r,t,n)},Cr=function(e,t,n,r,o){var i=wr(e),u=bt(e,n)?t:br(i,t),a=bt(e,o)?r:br(i,r);return vr(i,u,a)},Sr=function(e,t,n){var r=wr(e);return hr(r,t,n)},Rr=function(e,t){return nn(e,"table")},Tr=re(["boxes","start","finish"],[]),Dr=function(a,c,r){var l=function(t){return function(e){return r(e)||bt(e,t)}};return bt(a,c)?S.some(Tr({boxes:S.some([a]),start:a,finish:c})):Rr(a).bind(function(u){return Rr(c).bind(function(i){if(bt(u,i))return S.some(Tr({boxes:xr(u,a,c),start:a,finish:c}));if(wt(u,i)){var e=0<(t=Gt(c,"td,th",l(u))).length?t[t.length-1]:c;return S.some(Tr({boxes:Cr(u,a,u,c,i),start:a,finish:e}))}if(wt(i,u)){var t,n=0<(t=Gt(a,"td,th",l(i))).length?t[t.length-1]:a;return S.some(Tr({boxes:Cr(i,a,u,c,i),start:a,finish:n}))}return lr.ancestors(a,c).shared().bind(function(e){return un(e,"table",r).bind(function(e){var t=Gt(c,"td,th",l(e)),n=0<t.length?t[t.length-1]:c,r=Gt(a,"td,th",l(e)),o=0<r.length?r[r.length-1]:a;return S.some(Tr({boxes:Cr(e,a,u,c,i),start:o,finish:n}))})})})})},Or=Dr,Nr=function(e,t){var n=Xt(e,t);return 0<n.length?S.some(n):S.none()},Er=function(e,t,n,r,o){return(i=e,u=o,_(i,function(e){return pt(e,u)})).bind(function(e){return yr(e,t,n).bind(function(e){return n=r,nn(t=e,"table").bind(function(e){return on(e,n).bind(function(e){return Dr(e,t).bind(function(t){return t.boxes().map(function(e){return{boxes:C(e),start:C(t.start()),finish:C(t.finish())}})})})});var t,n})});var i,u},Ar=function(e,t,r){return on(e,t).bind(function(n){return on(e,r).bind(function(t){return lr.sharedOne(Rr,[n,t]).map(function(e){return{first:C(n),last:C(t),table:C(e)}})})})},kr=function(e,t){return Nr(e,t)},Pr=function(o,e,t){return Ar(o,e,t).bind(function(n){var e=function(e){return bt(o,e)},t=nn(n.first(),"thead,tfoot,tbody,table",e),r=nn(n.last(),"thead,tfoot,tbody,table",e);return t.bind(function(t){return r.bind(function(e){return bt(t,e)?Sr(n.table(),n.first(),n.last()):S.none()})})})},Ir="data-mce-selected",Br="data-mce-first-selected",Wr="data-mce-last-selected",Mr={selected:C(Ir),selectedSelector:C("td[data-mce-selected],th[data-mce-selected]"),attributeSelector:C("[data-mce-selected]"),firstSelected:C(Br),firstSelectedSelector:C("td[data-mce-first-selected],th[data-mce-first-selected]"),lastSelected:C(Wr),lastSelectedSelector:C("td[data-mce-last-selected],th[data-mce-last-selected]")},_r=function(u){if(!R(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var a=[],n={};return P(u,function(e,r){var t=Y(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!R(i))throw new Error("case arguments must be an array");a.push(o),n[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var n=new Array(e),t=0;t<n.length;t++)n[t]=arguments[t];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[r].apply(null,n)},match:function(e){var t=Y(e);if(a.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+a.join(",")+"\nActual: "+t.join(","));if(!U(a,function(e){return E(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+a.join(", "));return e[o].apply(null,n)},log:function(e){m.console.log(e,{constructors:a,constructor:o,params:n})}}}}),n},Lr=_r([{none:[]},{multiple:["elements"]},{single:["selection"]}]),jr={cata:function(e,t,n,r){return e.fold(t,n,r)},none:Lr.none,multiple:Lr.multiple,single:Lr.single},Fr=function(e,t){return jr.cata(t.get(),C([]),o,C([e]))},zr=function(n,e){return jr.cata(e.get(),S.none,function(t,e){return 0===t.length?S.none():Pr(n,Mr.firstSelectedSelector(),Mr.lastSelectedSelector()).bind(function(e){return 1<t.length?S.some({bounds:C(e),cells:C(t)}):S.none()})},S.none)},Hr=function(e,t){var n=Fr(e,t);return 0<n.length&&U(n,function(e){return we(e,"rowspan")&&1<parseInt(be(e,"rowspan"),10)||we(e,"colspan")&&1<parseInt(be(e,"colspan"),10)})?S.some(n):S.none()},Ur=Fr,qr=function(e){return{element:C(e),mergable:S.none,unmergable:S.none,selection:C([e])}},Vr=$("element","clipboard","generators"),Gr={noMenu:qr,forMenu:function(e,t,n){return{element:C(n),mergable:C(zr(t,e)),unmergable:C(Hr(n,e)),selection:C(Ur(n,e))}},notCell:function(e){return qr(e)},paste:Vr,pasteRows:function(e,t,n,r,o){return{element:C(n),mergable:S.none,unmergable:S.none,selection:C(Ur(n,e)),clipboard:C(r),generators:C(o)}}},Yr=function(f,e,s,d){f.on("BeforeGetContent",function(n){!0===n.selection&&jr.cata(e.get(),y,function(e){var t;n.preventDefault(),(t=e,gn.table(t[0]).map(Bn).map(function(e){return[xn(e,Mr.attributeSelector())]})).each(function(e){var t;n.content="text"===n.format?k(e,function(e){return e.dom().innerText}).join(""):(t=f,k(e,function(e){return t.selection.serializer.serialize(e.dom(),{})}).join(""))})},y)}),f.on("BeforeSetContent",function(l){!0===l.selection&&!0===l.paste&&S.from(f.dom.getParent(f.selection.getStart(),"th,td")).each(function(e){var c=De.fromDom(e);gn.table(c).each(function(t){var e,n,r,o=I((e=l.content,(r=(n||m.document).createElement("div")).innerHTML=e,Dt(De.fromDom(r))),function(e){return"meta"!==ce(e)});if(1===o.length&&"table"===ce(o[0])){l.preventDefault();var i=De.fromDom(f.getDoc()),u=zn(i),a=Gr.paste(c,o[0],u);s.pasteCells(t,a).each(function(e){f.selection.setRng(e),f.focus(),d.clear(t)})}})})})};function Xr(r,o){var e=function(e){var t=o(e);if(t<=0||null===t){var n=Ie(e,r);return parseFloat(n)||0}return t},i=function(o,e){return M(e,function(e,t){var n=Ie(o,t),r=n===undefined?0:parseInt(n,10);return isNaN(r)?e:e+r},0)};return{set:function(e,t){if(!O(t)&&!t.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+t);var n=e.dom();Se(n)&&(n.style[r]=t+"px")},get:e,getOuter:e,aggregate:i,max:function(e,t,n){var r=i(e,n);return r<t?t-r:0}}}var Kr=Xr("height",function(e){var t=e.dom();return Oe(e)?t.getBoundingClientRect().height:t.offsetHeight}),Jr=function(e){return Kr.get(e)},$r=function(e){return Kr.getOuter(e)},Qr=Xr("width",function(e){return e.dom().offsetWidth}),Zr=function(e){return Qr.get(e)},eo=function(e){return Qr.getOuter(e)},to=mt.detect(),no=function(e,t,n){return r=Ie(e,t),o=n,i=parseFloat(r),isNaN(i)?o:i;var r,o,i},ro=function(e){return to.browser.isIE()||to.browser.isEdge()?(n=no(t=e,"padding-top",0),r=no(t,"padding-bottom",0),o=no(t,"border-top-width",0),i=no(t,"border-bottom-width",0),u=t.dom().getBoundingClientRect().height,"border-box"===Ie(t,"box-sizing")?u:u-n-r-(o+i)):no(e,"height",Jr(e));var t,n,r,o,i,u},oo=/(\d+(\.\d+)?)(\w|%)*/,io=/(\d+(\.\d+)?)%/,uo=/(\d+(\.\d+)?)px|em/,ao=function(e,t){ke(e,"height",t+"px")},co=function(e,t,n,r){var o,i,u,a,c,l,f,s,d,m=parseInt(e,10);return s=l="%",d=(f=e).length-l.length,""!==s&&(f.length<s.length||f.substr(d,d+s.length)!==s)||"table"===ce(t)?m:(o=t,i=m,u=n,a=r,c=gn.table(o).map(function(e){var t=u(e);return Math.floor(i/100*t)}).getOr(i),a(o,c),c)},lo=function(e){var t,n=We(t=e,"height").getOrThunk(function(){return ro(t)+"px"});return n?co(n,e,Jr,ao):Jr(e)},fo=function(e,t){return we(e,t)?parseInt(be(e,t),10):1},so=function(e){return We(e,"width").fold(function(){return S.from(be(e,"width"))},function(e){return S.some(e)})},mo=function(e,t){return e/t.pixelWidth()*100},go={percentageBasedSizeRegex:C(io),pixelBasedSizeRegex:C(uo),setPixelWidth:function(e,t){ke(e,"width",t+"px")},setPercentageWidth:function(e,t){ke(e,"width",t+"%")},setHeight:ao,getPixelWidth:function(t,n){return so(t).fold(function(){return Zr(t)},function(e){return function(e,t,n){if(uo.test(t)){var r=uo.exec(t);return parseInt(r[1],10)}if(io.test(t)){var o=io.exec(t),i=parseFloat(o[1]);return i/100*n.pixelWidth()}return Zr(e)}(t,e,n)})},getPercentageWidth:function(t,n){return so(t).fold(function(){var e=Zr(t);return mo(e,n)},function(e){return function(e,t,n){if(io.test(t)){var r=io.exec(t);return parseFloat(r[1])}var o=Zr(e);return mo(o,n)}(t,e,n)})},getGenericWidth:function(e){return so(e).bind(function(e){if(oo.test(e)){var t=oo.exec(e);return S.some({width:C(t[1]),unit:C(t[3])})}return S.none()})},setGenericWidth:function(e,t,n){ke(e,"width",t+n)},getHeight:function(e){return n="rowspan",lo(t=e)/fo(t,n);var t,n},getRawWidth:so},ho=function(n,r){go.getGenericWidth(n).each(function(e){var t=e.width()/2;go.setGenericWidth(n,t,e.unit()),go.setGenericWidth(r,t,e.unit())})},po=function(n,r){return{left:C(n),top:C(r),translate:function(e,t){return po(n+e,r+t)}}},vo=po,bo=function(e,t){return e!==undefined?e:t!==undefined?t:0},wo=function(e){var t,n,r=e.dom().ownerDocument,o=r.body,i=(t=De.fromDom(r),(n=t.dom())===n.window&&t instanceof m.Window?t:ge(t)?n.defaultView||n.parentWindow:null),u=r.documentElement,a=bo(i.pageYOffset,u.scrollTop),c=bo(i.pageXOffset,u.scrollLeft),l=bo(u.clientTop,o.clientTop),f=bo(u.clientLeft,o.clientLeft);return yo(e).translate(c-f,a-l)},yo=function(e){var t,n,r,o=e.dom(),i=o.ownerDocument,u=i.body,a=De.fromDom(i.documentElement);return u===o?vo(u.offsetLeft,u.offsetTop):(t=e,n=a||De.fromDom(m.document.documentElement),tn(t,b(bt,n)).isSome()?(r=o.getBoundingClientRect(),vo(r.left,r.top)):vo(0,0))},xo=$("row","y"),Co=$("col","x"),So=function(e){return wo(e).left()+eo(e)},Ro=function(e){return wo(e).left()},To=function(e,t){return Co(e,Ro(t))},Do=function(e,t){return Co(e,So(t))},Oo=function(e){return wo(e).top()},No=function(n,t,r){if(0===r.length)return[];var e=k(r.slice(1),function(e,t){return e.map(function(e){return n(t,e)})}),o=r[r.length-1].map(function(e){return t(r.length-1,e)});return e.concat([o])},Eo={delta:o,positions:b(No,function(e,t){return xo(e,Oo(t))},function(e,t){return xo(e,Oo(t)+$r(t))}),edge:Oo},Ao={delta:o,edge:Ro,positions:b(No,To,Do)},ko={height:Eo,rtl:{delta:function(e,t){return-e},edge:So,positions:b(No,Do,To)},ltr:Ao},Po={ltr:ko.ltr,rtl:ko.rtl};function Io(t){var n=function(e){return t(e).isRtl()?Po.rtl:Po.ltr};return{delta:function(e,t){return n(t).delta(e,t)},edge:function(e){return n(e).edge(e)},positions:function(e,t){return n(t).positions(e)}}}var Bo,Wo=function(e){var t=hn(e);return wn.generate(t).grid()},Mo=Object.prototype.hasOwnProperty,_o=(Bo=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Mo.call(o,i)&&(n[i]=Bo(n[i],o[i]))}return n}),Lo=function(e){for(var t=[],n=function(e){t.push(e)},r=0;r<e.length;r++)e[r].each(n);return t},jo=function(e,t){for(var n=0;n<e.length;n++){var r=t(e[n],n);if(r.isSome())return r}return S.none()},Fo=function(e,t,n,r){n===r?ye(e,t):pe(e,t,n)},zo=function(o,e){var i=[],u=[],t=function(e,t){0<e.length?function(e,t){var n=rn(o,t).getOrThunk(function(){var e=De.fromTag(t,xt(o).dom());return kt(o,e),e});Wt(n);var r=k(e,function(e){e.isNew()&&i.push(e.element());var t=e.element();return Wt(t),P(e.cells(),function(e){e.isNew()&&u.push(e.element()),Fo(e.element(),"colspan",e.colspan(),1),Fo(e.element(),"rowspan",e.rowspan(),1),kt(t,e.element())}),t});Bt(n,r)}(e,t):rn(o,t).each(Mt)},n=[],r=[],a=[];return P(e,function(e){switch(e.section()){case"thead":n.push(e);break;case"tbody":r.push(e);break;case"tfoot":a.push(e)}}),t(n,"thead"),t(r,"tbody"),t(a,"tfoot"),{newRows:C(i),newCells:C(u)}},Ho=function(e){return k(e,function(e){var n=In(e.element());return P(e.cells(),function(e){var t=Bn(e.element());Fo(t,"colspan",e.colspan(),1),Fo(t,"rowspan",e.rowspan(),1),kt(n,t)}),n})},Uo=function(e,t){var n=be(e,t);return n===undefined||""===n?[]:n.split(" ")},qo=function(e){return e.dom().classList!==undefined},Vo=function(e,t){return o=t,i=Uo(n=e,r="class").concat([o]),pe(n,r,i.join(" ")),!0;var n,r,o,i},Go=function(e,t){return o=t,0<(i=I(Uo(n=e,r="class"),function(e){return e!==o})).length?pe(n,r,i.join(" ")):ye(n,r),!1;var n,r,o,i},Yo=function(e,t){qo(e)?e.dom().classList.add(t):Vo(e,t)},Xo=function(e){0===(qo(e)?e.dom().classList:Uo(e,"class")).length&&ye(e,"class")},Ko=function(e,t){return qo(e)&&e.dom().classList.contains(t)},Jo=function(e,t){for(var n=[],r=0;r<e;r++)n.push(t(r));return n},$o=function(e,t){for(var n=[],r=e;r<t;r++)n.push(r);return n},Qo=function(t,n){if(n<0||n>=t.length-1)return S.none();var e=t[n].fold(function(){var e=V(t.slice(0,n));return jo(e,function(e,t){return e.map(function(e){return{value:e,delta:t+1}})})},function(e){return S.some({value:e,delta:0})}),r=t[n+1].fold(function(){var e=t.slice(n+1);return jo(e,function(e,t){return e.map(function(e){return{value:e,delta:t+1}})})},function(e){return S.some({value:e,delta:1})});return e.bind(function(n){return r.map(function(e){var t=e.delta+n.delta;return Math.abs(e.value-n.value)/t})})},Zo=function(e,t,n){var r=e();return _(r,t).orThunk(function(){return S.from(r[0]).orThunk(n)}).map(function(e){return e.element()})},ei=function(n){var e=n.grid(),t=$o(0,e.columns()),r=$o(0,e.rows());return k(t,function(t){return Zo(function(){return H(r,function(e){return wn.getAt(n,e,t).filter(function(e){return e.column()===t}).fold(C([]),function(e){return[e]})})},function(e){return 1===e.colspan()},function(){return wn.getAt(n,0,t)})})},ti=function(n){var e=n.grid(),t=$o(0,e.rows()),r=$o(0,e.columns());return k(t,function(t){return Zo(function(){return H(r,function(e){return wn.getAt(n,t,e).filter(function(e){return e.row()===t}).fold(C([]),function(e){return[e]})})},function(e){return 1===e.rowspan()},function(){return wn.getAt(n,t,0)})})},ni=function(e){var t=e.replace(/\./g,"-");return{resolve:function(e){return t+"-"+e}}},ri={resolve:ni("ephox-snooker").resolve},oi=function(e,t,n,r,o){var i=De.fromTag("div");return Pe(i,{position:"absolute",left:t-r/2+"px",top:n+"px",height:o+"px",width:r+"px"}),ve(i,{"data-column":e,role:"presentation"}),i},ii=function(e,t,n,r,o){var i=De.fromTag("div");return Pe(i,{position:"absolute",left:t+"px",top:n-o/2+"px",height:o+"px",width:r+"px"}),ve(i,{"data-row":e,role:"presentation"}),i},ui=ri.resolve("resizer-bar"),ai=ri.resolve("resizer-rows"),ci=ri.resolve("resizer-cols"),li=function(e){var t=Xt(e.parent(),"."+ui);P(t,Mt)},fi=function(n,e,r){var o=n.origin();P(e,function(e,t){e.each(function(e){var t=r(o,e);Yo(t,ui),kt(n.parent(),t)})})},si=function(e,t,n,r,o,i){var u,a,c,l,f=wo(t),s=0<n.length?o.positions(n,t):[];u=e,a=s,c=f,l=eo(t),fi(u,a,function(e,t){var n=ii(t.row(),c.left()-e.left(),t.y()-e.top(),l,7);return Yo(n,ai),n});var d,m,g,h,p=0<r.length?i.positions(r,t):[];d=e,m=p,g=f,h=$r(t),fi(d,m,function(e,t){var n=oi(t.col(),t.x()-e.left(),g.top()-e.top(),7,h);return Yo(n,ci),n})},di=function(e,t){var n=Xt(e.parent(),"."+ui);P(n,t)},mi={refresh:function(e,t,n,r){li(e);var o=hn(t),i=wn.generate(o),u=ti(i),a=ei(i);si(e,t,u,a,n,r)},hide:function(e){di(e,function(e){ke(e,"display","none")})},show:function(e){di(e,function(e){ke(e,"display","block")})},destroy:li,isRowBar:function(e){return Ko(e,ai)},isColBar:function(e){return Ko(e,ci)}},gi=function(e,t){return qt.rowcells(t,e.section())},hi=function(e,t){return e.cells()[t]},pi={addCell:function(e,t,n){var r=e.cells(),o=r.slice(0,t),i=r.slice(t),u=o.concat([n]).concat(i);return gi(e,u)},setCells:gi,mutateCell:function(e,t,n){e.cells()[t]=n},getCell:hi,getCellElement:function(e,t){return hi(e,t).element()},mapCells:function(e,t){var n=e.cells(),r=k(n,t);return qt.rowcells(r,e.section())},cellLength:function(e){return e.cells().length}},vi=function(e,t){if(0===e.length)return 0;var n=e[0];return L(e,function(e){return!t(n.element(),e.element())}).fold(function(){return e.length},function(e){return e})},bi=function(e,t,n,r){var o,i,u,a,c=(o=e,i=t,o[i]).cells().slice(n),l=vi(c,r),f=(u=e,a=n,k(u,function(e){return pi.getCell(e,a)})).slice(t),s=vi(f,r);return{colspan:C(l),rowspan:C(s)}},wi=function(o,i){var u=k(o,function(e,t){return k(e.cells(),function(e,t){return!1})});return k(o,function(e,r){var t=H(e.cells(),function(e,t){if(!1===u[r][t]){var n=bi(o,r,t,i);return function(e,t,n,r){for(var o=e;o<e+n;o++)for(var i=t;i<t+r;i++)u[o][i]=!0}(r,t,n.rowspan(),n.colspan()),[qt.detailnew(e.element(),n.rowspan(),n.colspan(),e.isNew())]}return[]});return qt.rowdetails(t,e.section())})},yi=function(e,t,n){for(var r=[],o=0;o<e.grid().rows();o++){for(var i=[],u=0;u<e.grid().columns();u++){var a=wn.getAt(e,o,u).map(function(e){return qt.elementnew(e.element(),n)}).getOrThunk(function(){return qt.elementnew(t.gap(),!0)});i.push(a)}var c=qt.rowcells(i,e.all()[o].section());r.push(c)}return r},xi=function(e,r){return k(e,function(e){var t,n=(t=e.details(),jo(t,function(e){return Ct(e.element()).map(function(e){var t=Ct(e).isNone();return qt.elementnew(e,t)})}).getOrThunk(function(){return qt.elementnew(r.row(),!0)}));return qt.rowdatanew(n.element(),e.details(),e.section(),n.isNew())})},Ci=function(e,t){var n=wi(e,bt);return xi(n,t)},Si=function(e,t){var n=z(k(e.all(),function(e){return e.cells()}));return _(n,function(e){return bt(t,e.element())})},Ri=function(a,c,l,f,s){return function(n,r,e,o,i){var t=hn(r),u=wn.generate(t);return c(u,e).map(function(e){var t=yi(u,o,!1),n=a(t,e,bt,s(o)),r=Ci(n.grid(),o);return{grid:C(r),cursor:n.cursor}}).fold(function(){return S.none()},function(e){var t=zo(r,e.grid());return l(r,e.grid(),i),f(r),mi.refresh(n,r,ko.height,i),S.some({cursor:e.cursor,newRows:t.newRows,newCells:t.newCells})})}},Ti=Ci,Di=function(t,e){return gn.cell(e.element()).bind(function(e){return Si(t,e)})},Oi=function(t,e){var n=k(e.selection(),function(e){return gn.cell(e).bind(function(e){return Si(t,e)})}),r=Lo(n);return 0<r.length?S.some(r):S.none()},Ni=function(t,n){return gn.cell(n.element()).bind(function(e){return Si(t,e).map(function(e){return _o(e,{generators:n.generators,clipboard:n.clipboard})})})},Ei=function(t,e){var n=k(e.selection(),function(e){return gn.cell(e).bind(function(e){return Si(t,e)})}),r=Lo(n);return 0<r.length?S.some(_o({cells:r},{generators:e.generators,clipboard:e.clipboard})):S.none()},Ai=function(e,t){return t.mergable()},ki=function(e,t){return t.unmergable()},Pi=function(n){return{is:function(e){return n===e},isValue:l,isError:a,getOr:C(n),getOrThunk:C(n),getOrDie:C(n),or:function(e){return Pi(n)},orThunk:function(e){return Pi(n)},fold:function(e,t){return t(n)},map:function(e){return Pi(e(n))},mapError:function(e){return Pi(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return S.some(n)}}},Ii=function(n){return{is:a,isValue:a,isError:l,getOr:o,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return Ii(n)},mapError:function(e){return Ii(e(n))},each:y,bind:function(e){return Ii(n)},exists:a,forall:l,toOption:S.none}},Bi={value:Pi,error:Ii},Wi=function(e,t){return k(e,function(){return qt.elementnew(t.cell(),!0)})},Mi=function(t,e,n){return t.concat(Jo(e,function(e){return pi.setCells(t[t.length-1],Wi(t[t.length-1].cells(),n))}))},_i=function(e,t,n){return k(e,function(e){return pi.setCells(e,e.cells().concat(Wi($o(0,t),n)))})},Li=function(e,t,n){if(e.row()>=t.length||e.column()>pi.cellLength(t[0]))return Bi.error("invalid start address out of table bounds, row: "+e.row()+", column: "+e.column());var r=t.slice(e.row()),o=r[0].cells().slice(e.column()),i=pi.cellLength(n[0]),u=n.length;return Bi.value({rowDelta:C(r.length-u),colDelta:C(o.length-i)})},ji=function(e,t){var n=pi.cellLength(e[0]),r=pi.cellLength(t[0]);return{rowDelta:C(0),colDelta:C(n-r)}},Fi=function(e,t,n){var r=t.colDelta()<0?_i:o;return(t.rowDelta()<0?Mi:o)(r(e,Math.abs(t.colDelta()),n),Math.abs(t.rowDelta()),n)},zi=function(e,t,n,r){if(0===e.length)return e;for(var o=t.startRow();o<=t.finishRow();o++)for(var i=t.startCol();i<=t.finishCol();i++)pi.mutateCell(e[o],i,qt.elementnew(r(),!1));return e},Hi=function(e,t,n,r){for(var o=!0,i=0;i<e.length;i++)for(var u=0;u<pi.cellLength(e[0]);u++){var a=n(pi.getCellElement(e[i],u),t);!0===a&&!1===o?pi.mutateCell(e[i],u,qt.elementnew(r(),!0)):!0===a&&(o=!1)}return e},Ui=function(i,n,u,a){if(0<n&&n<i.length){var e=i[n-1].cells(),t=(r=u,M(e,function(e,t){return A(e,function(e){return r(e.element(),t.element())})?e:e.concat([t])},[]));P(t,function(r){for(var o=S.none(),e=function(n){for(var e=function(t){var e=i[n].cells()[t];u(e.element(),r.element())&&(o.isNone()&&(o=S.some(a())),o.each(function(e){pi.mutateCell(i[n],t,qt.elementnew(e,!0))}))},t=0;t<pi.cellLength(i[0]);t++)e(t)},t=n;t<i.length;t++)e(t)})}var r;return i},qi=function(n,r,o,i,u){return Li(n,r,o).map(function(e){var t=Fi(r,e,i);return function(e,t,n,r,o){for(var i,u,a,c,l,f=e.row(),s=e.column(),d=f+n.length,m=s+pi.cellLength(n[0]),g=f;g<d;g++)for(var h=s;h<m;h++){i=t,u=g,a=h,c=void 0,c=b(o,pi.getCell(i[u],a).element()),l=i[u],1<i.length&&1<pi.cellLength(l)&&(0<a&&c(pi.getCellElement(l,a-1))||a<l.length-1&&c(pi.getCellElement(l,a+1))||0<u&&c(pi.getCellElement(i[u-1],a))||u<i.length-1&&c(pi.getCellElement(i[u+1],a)))&&Hi(t,pi.getCellElement(t[g],h),o,r.cell);var p=pi.getCellElement(n[g-f],h-s),v=r.replace(p);pi.mutateCell(t[g],h,qt.elementnew(v,!0))}return t}(n,t,o,i,u)})},Vi=function(e,t,n,r,o){Ui(t,e,o,r.cell);var i=ji(n,t),u=Fi(n,i,r),a=ji(t,u),c=Fi(t,a,r);return c.slice(0,e).concat(u).concat(c.slice(e,c.length))},Gi=function(n,r,e,o,i){var t=n.slice(0,r),u=n.slice(r),a=pi.mapCells(n[e],function(e,t){return 0<r&&r<n.length&&o(pi.getCellElement(n[r-1],t),pi.getCellElement(n[r],t))?pi.getCell(n[r],t):qt.elementnew(i(e.element(),o),!0)});return t.concat([a]).concat(u)},Yi=function(e,n,r,o,i){return k(e,function(e){var t=0<n&&n<pi.cellLength(e)&&o(pi.getCellElement(e,n-1),pi.getCellElement(e,n))?pi.getCell(e,n):qt.elementnew(i(pi.getCellElement(e,r),o),!0);return pi.addCell(e,n,t)})},Xi=function(e,r,o,i,u){var a=o+1;return k(e,function(e,t){var n=t===r?qt.elementnew(u(pi.getCellElement(e,o),i),!0):pi.getCell(e,o);return pi.addCell(e,a,n)})},Ki=function(e,t,n,r,o){var i=t+1,u=e.slice(0,i),a=e.slice(i),c=pi.mapCells(e[t],function(e,t){return t===n?qt.elementnew(o(e.element(),r),!0):e});return u.concat([c]).concat(a)},Ji=function(e,t,n){return e.slice(0,t).concat(e.slice(n+1))},$i=function(e,n,r){var t=k(e,function(e){var t=e.cells().slice(0,n).concat(e.cells().slice(r+1));return qt.rowcells(t,e.section())});return I(t,function(e){return 0<e.cells().length})},Qi=function(e){return e.dom().textContent},Zi=function(e,n,r,o){return k(e,function(e){return pi.mapCells(e,function(e){return t=e,A(n,function(e){return r(t.element(),e.element())})?qt.elementnew(o(e.element(),r),!0):e;var t})})},eu=function(e,t,n,r){return pi.getCellElement(e[t],n)!==undefined&&0<t&&r(pi.getCellElement(e[t-1],n),pi.getCellElement(e[t],n))},tu=function(e,t,n){return 0<t&&n(pi.getCellElement(e,t-1),pi.getCellElement(e,t))},nu=function(n,r,o,e){var t=H(n,function(e,t){return eu(n,t,r,o)||tu(e,r,o)?[]:[pi.getCell(e,r)]});return Zi(n,t,o,e)},ru=function(n,r,o,e){var i=n[r],t=H(i.cells(),function(e,t){return eu(n,r,t,o)||tu(i,t,o)?[]:[e]});return Zi(n,t,o,e)},ou=function(e,r,o,i){var t=B(e,function(e){return ce(pi.getCell(e,r).element())});return H(t,function(e){return"th"===ce(pi.getCell(e[0],r).element())?e:(t=k(e,function(e){var t=pi.getCell(e,r);return{row:e,text:Qi(t.element())}}),n=G(t,function(e,t){var n=o(e.text,t.text);return i?n:-1*n}),k(n,function(e){return e.row}));var t,n})},iu=function(e,t,o,i){var n=e[t].cells(),r=k(n,function(e){return Qi(e.element())}),u=k(e,function(e){return{zippedCells:k(e.cells(),function(e,t){return{cell:e,reference:n[t],referenceText:r[t]}}),section:e.section()}});return k(u,function(e){var t=B(e.zippedCells,function(e){return ce(e.reference.element())}),n=H(t,function(e){return"th"===ce(e[0].reference.element())?e:G(e,function(e,t){var n=o(e.referenceText,t.referenceText);return i?n:-1*n})}),r=k(n,function(e){return e.cell});return qt.rowcells(r,e.section)})},uu=function(e){return{fold:e}},au=function(){return uu(function(e,t,n,r,o){return e()})},cu=function(i){return uu(function(e,t,n,r,o){return t(i)})},lu=function(i,u){return uu(function(e,t,n,r,o){return n(i,u)})},fu=function(i,u,a){return uu(function(e,t,n,r,o){return r(i,u,a)})},su=function(i,u){return uu(function(e,t,n,r,o){return o(i,u)})},du=function(e,t,i,u){var n,r,a=e.slice(0),o=(r=t,0===(n=e).length?au():1===n.length?cu(0):0===r?lu(0,1):r===n.length-1?su(r-1,r):0<r&&r<n.length-1?fu(r-1,r,r+1):au()),c=function(e){return k(e,C(0))},l=C(c(a)),f=function(e,t){if(0<=i){var n=Math.max(u.minCellWidth(),a[t]-i);return c(a.slice(0,e)).concat([i,n-a[t]]).concat(c(a.slice(t+1)))}var r=Math.max(u.minCellWidth(),a[e]+i),o=a[e]-r;return c(a.slice(0,e)).concat([r-a[e],o]).concat(c(a.slice(t+1)))},s=f;return o.fold(l,function(e){return u.singleColumnWidth(a[e],i)},s,function(e,t,n){return f(t,n)},function(e,t){if(0<=i)return c(a.slice(0,t)).concat([i]);var n=Math.max(u.minCellWidth(),a[t]+i);return c(a.slice(0,t)).concat([n-a[t]])})},mu=function(e,t){return we(e,t)&&1<parseInt(be(e,t),10)},gu={hasColspan:function(e){return mu(e,"colspan")},hasRowspan:function(e){return mu(e,"rowspan")},minWidth:C(10),minHeight:C(10),getInt:function(e,t){return parseInt(Ie(e,t),10)}},hu=function(e,t,n){return We(e,t).fold(function(){return n(e)+"px"},function(e){return e})},pu=function(e){return hu(e,"width",go.getPixelWidth)},vu=function(e){return hu(e,"height",go.getHeight)},bu=function(e,t,n,r,o){var i=ei(e),u=k(i,function(e){return e.map(t.edge)});return k(i,function(e,t){return e.filter(g(gu.hasColspan)).fold(function(){var e=Qo(u,t);return r(e)},function(e){return n(e,o)})})},wu=function(e){return e.map(function(e){return e+"px"}).getOr("")},yu=function(e,t,n,r){var o=ti(e),i=k(o,function(e){return e.map(t.edge)});return k(o,function(e,t){return e.filter(g(gu.hasRowspan)).fold(function(){var e=Qo(i,t);return r(e)},function(e){return n(e)})})},xu={getRawWidths:function(e,t){return bu(e,t,pu,wu)},getPixelWidths:function(e,t,n){return bu(e,t,go.getPixelWidth,function(e){return e.getOrThunk(n.minCellWidth)},n)},getPercentageWidths:function(e,t,n){return bu(e,t,go.getPercentageWidth,function(e){return e.fold(function(){return n.minCellWidth()},function(e){return e/n.pixelWidth()*100})},n)},getPixelHeights:function(e,t){return yu(e,t,go.getHeight,function(e){return e.getOrThunk(gu.minHeight)})},getRawHeights:function(e,t){return yu(e,t,vu,wu)}},Cu=function(e,t,n){for(var r=0,o=e;o<t;o++)r+=n[o]!==undefined?n[o]:0;return r},Su=function(e,n){var t=wn.justCells(e);return k(t,function(e){var t=Cu(e.column(),e.column()+e.colspan(),n);return{element:e.element,width:C(t),colspan:e.colspan}})},Ru=function(e,n){var t=wn.justCells(e);return k(t,function(e){var t=Cu(e.row(),e.row()+e.rowspan(),n);return{element:e.element,height:C(t),rowspan:e.rowspan}})},Tu=function(e,n){return k(e.all(),function(e,t){return{element:e.element,height:C(n[t])}})},Du=function(e){var t=parseInt(e,10),n=o;return{width:C(t),pixelWidth:C(t),getWidths:xu.getPixelWidths,getCellDelta:n,singleColumnWidth:function(e,t){return[Math.max(gu.minWidth(),e+t)-e]},minCellWidth:gu.minWidth,setElementWidth:go.setPixelWidth,setTableWidth:function(e,t,n){var r=W(t,function(e,t){return e+t},0);go.setPixelWidth(e,r)}}},Ou=function(e,t){if(go.percentageBasedSizeRegex().test(t)){var n=go.percentageBasedSizeRegex().exec(t);return o=n[1],i=e,u=parseFloat(o),a=Zr(i),{width:C(u),pixelWidth:C(a),getWidths:xu.getPercentageWidths,getCellDelta:function(e){return e/a*100},singleColumnWidth:function(e,t){return[100-e]},minCellWidth:function(){return gu.minWidth()/a*100},setElementWidth:go.setPercentageWidth,setTableWidth:function(e,t,n){var r=u+n;go.setPercentageWidth(e,r)}}}if(go.pixelBasedSizeRegex().test(t)){var r=go.pixelBasedSizeRegex().exec(t);return Du(r[1])}var o,i,u,a,c=Zr(e);return Du(c)},Nu=function(t){return go.getRawWidth(t).fold(function(){var e=Zr(t);return Du(e)},function(e){return Ou(t,e)})},Eu=function(e){return wn.generate(e)},Au=function(e){var t=hn(e);return Eu(t)},ku=function(e,t,n,r){var o=Nu(e),i=o.getCellDelta(t),u=Au(e),a=o.getWidths(u,r,o),c=du(a,n,i,o),l=k(c,function(e,t){return e+a[t]}),f=Su(u,l);P(f,function(e){o.setElementWidth(e.element(),e.width())}),n===u.grid().columns()-1&&o.setTableWidth(e,l,i)},Pu=function(e,n,r,t){var o=Au(e),i=xu.getPixelHeights(o,t),u=k(i,function(e,t){return r===t?Math.max(n+e,gu.minHeight()):e}),a=Ru(o,u),c=Tu(o,u);P(c,function(e){go.setHeight(e.element(),e.height())}),P(a,function(e){go.setHeight(e.element(),e.height())});var l=W(u,function(e,t){return e+t},0);go.setHeight(e,l)},Iu=function(e,t,n){var r=Nu(e),o=Eu(t),i=r.getWidths(o,n,r),u=Su(o,i);P(u,function(e){r.setElementWidth(e.element(),e.width())});var a=W(i,function(e,t){return t+e},0);0<u.length&&r.setTableWidth(e,a)},Bu=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return Bu(n())}}},Wu=function(r,o,i){if(0===o.length)throw new Error("You must specify at least one required field.");return te("required",o),ne(o),function(t){var n=Y(t);U(o,function(e){return E(n,e)})||Z(o,n),r(o,n);var e=I(o,function(e){return!i.validate(t[e],e)});return 0<e.length&&function(e,t){throw new Error("All values need to be of type: "+t+". Keys ("+Q(e).join(", ")+") were not.")}(e,i.label),t}},Mu=function(t,e){var n=I(e,function(e){return!E(t,e)});0<n.length&&ee(n)},_u=function(e){return Wu(Mu,e,{validate:D,label:"function"})},Lu=function(e){var t=we(e,"colspan")?parseInt(be(e,"colspan"),10):1,n=we(e,"rowspan")?parseInt(be(e,"rowspan"),10):1;return{element:C(e),colspan:C(t),rowspan:C(n)}},ju=_u(["cell","row","replace","gap"]),Fu=function(r,e){ju(r);var n=Bu(S.none()),o=e!==undefined?e:Lu,i=function(e){var t,n=o(e);return t=n,r.cell(t)},u=function(e){var t=i(e);return n.get().isNone()&&n.set(S.some(t)),a=S.some({item:e,replacement:t}),t},a=S.none();return{getOrInit:function(t,n){return a.fold(function(){return u(t)},function(e){return n(t,e.item)?e.replacement:u(t)})},cursor:n.get}},zu=function(o,a){return function(n){var r=Bu(S.none());ju(n);var i=[],u=function(e){var t=n.replace(e,a,{scope:o});return i.push({item:e,sub:t}),r.get().isNone()&&r.set(S.some(t)),t};return{replaceOrInit:function(t,n){return(r=t,o=n,_(i,function(e){return o(e.item,r)})).fold(function(){return u(t)},function(e){return n(t,e.item)?e.sub:u(t)});var r,o},cursor:r.get}}},Hu=function(n){ju(n);var e=Bu(S.none());return{combine:function(t){return e.get().isNone()&&e.set(S.some(t)),function(){var e=n.cell({element:C(t),colspan:C(1),rowspan:C(1)});return Me(e,"width"),Me(t,"width"),e}},cursor:e.get}},Uu=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","table","thead","tfoot","tbody","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],qu=function(e,t){var n=e.property().name(t);return E(Uu,n)},Vu=function(e,t){return E(["br","img","hr","input"],e.property().name(t))},Gu=qu,Yu=function(e,t){var n=e.property().name(t);return E(["ol","ul"],n)},Xu=Vu,Ku=Un(),Ju=function(e){return Gu(Ku,e)},$u=function(e){return Yu(Ku,e)},Qu=function(e){return Xu(Ku,e)},Zu=function(e){var t,i=function(e){return"br"===ce(e)},n=function(o){return An(o).bind(function(n){var r=Tt(n).map(function(e){return!!Ju(e)||(Qu(e)?"img"!==ce(e):void 0)}).getOr(!1);return Ct(n).map(function(e){return!0===r||"li"===ce(t=e)||tn(t,$u).isSome()||i(n)||Ju(e)&&!bt(o,e)?[]:[De.fromTag("br")];var t})}).getOr([])},r=0===(t=H(e,function(e){var t=Dt(e);return U(t,function(e){return i(e)||me(e)&&0===Sn(e).trim().length})?[]:t.concat(n(e))})).length?[De.fromTag("br")]:t;Wt(e[0]),Bt(e[0],r)},ea=function(e){0===gn.cells(e).length&&Mt(e)},ta=$("grid","cursor"),na=function(e,t,n){return ra(e,t,n).orThunk(function(){return ra(e,0,0)})},ra=function(e,t,n){return S.from(e[t]).bind(function(e){return S.from(e.cells()[n]).bind(function(e){return S.from(e.element())})})},oa=function(e,t,n){return ta(e,ra(e,t,n))},ia=function(e){return M(e,function(e,t){return A(e,function(e){return e.row()===t.row()})?e:e.concat([t])},[]).sort(function(e,t){return e.row()-t.row()})},ua=function(e){return M(e,function(e,t){return A(e,function(e){return e.column()===t.column()})?e:e.concat([t])},[]).sort(function(e,t){return e.column()-t.column()})},aa=function(e,t,n){var r=pn(e,n),o=wn.generate(r);return yi(o,t,!0)},ca=function(a){return function(e,t,n,r,o,i,u){return Ri(function(e,t,n,r){return a(e,t,i,u)},Di,y,y,Fu)(e,t,n,r,o)}},la=Iu,fa={insertRowBefore:Ri(function(e,t,n,r){var o=t.row(),i=t.row(),u=Gi(e,i,o,n,r.getOrInit);return oa(u,i,t.column())},Di,y,y,Fu),insertRowsBefore:Ri(function(e,t,n,r){var o=t[0].row(),i=t[0].row(),u=ia(t),a=M(u,function(e,t){return Gi(e,i,o,n,r.getOrInit)},e);return oa(a,i,t[0].column())},Oi,y,y,Fu),insertRowAfter:Ri(function(e,t,n,r){var o=t.row(),i=t.row()+t.rowspan(),u=Gi(e,i,o,n,r.getOrInit);return oa(u,i,t.column())},Di,y,y,Fu),insertRowsAfter:Ri(function(e,t,n,r){var o=ia(t),i=o[o.length-1].row(),u=o[o.length-1].row()+o[o.length-1].rowspan(),a=M(o,function(e,t){return Gi(e,u,i,n,r.getOrInit)},e);return oa(a,u,t[0].column())},Oi,y,y,Fu),insertColumnBefore:Ri(function(e,t,n,r){var o=t.column(),i=t.column(),u=Yi(e,i,o,n,r.getOrInit);return oa(u,t.row(),i)},Di,la,y,Fu),insertColumnsBefore:Ri(function(e,t,n,r){var o=ua(t),i=o[0].column(),u=o[0].column(),a=M(o,function(e,t){return Yi(e,u,i,n,r.getOrInit)},e);return oa(a,t[0].row(),u)},Oi,la,y,Fu),insertColumnAfter:Ri(function(e,t,n,r){var o=t.column(),i=t.column()+t.colspan(),u=Yi(e,i,o,n,r.getOrInit);return oa(u,t.row(),i)},Di,la,y,Fu),insertColumnsAfter:Ri(function(e,t,n,r){var o=t[t.length-1].column(),i=t[t.length-1].column()+t[t.length-1].colspan(),u=ua(t),a=M(u,function(e,t){return Yi(e,i,o,n,r.getOrInit)},e);return oa(a,t[0].row(),i)},Oi,la,y,Fu),splitCellIntoColumns:Ri(function(e,t,n,r){var o=Xi(e,t.row(),t.column(),n,r.getOrInit);return oa(o,t.row(),t.column())},Di,la,y,Fu),splitCellIntoRows:Ri(function(e,t,n,r){var o=Ki(e,t.row(),t.column(),n,r.getOrInit);return oa(o,t.row(),t.column())},Di,y,y,Fu),eraseColumns:Ri(function(e,t,n,r){var o=ua(t),i=$i(e,o[0].column(),o[o.length-1].column()),u=na(i,t[0].row(),t[0].column());return ta(i,u)},Oi,la,ea,Fu),eraseRows:Ri(function(e,t,n,r){var o=ia(t),i=Ji(e,o[0].row(),o[o.length-1].row()),u=na(i,t[0].row(),t[0].column());return ta(i,u)},Oi,y,ea,Fu),makeColumnHeader:Ri(function(e,t,n,r){var o=nu(e,t.column(),n,r.replaceOrInit);return oa(o,t.row(),t.column())},Di,y,y,zu("row","th")),unmakeColumnHeader:Ri(function(e,t,n,r){var o=nu(e,t.column(),n,r.replaceOrInit);return oa(o,t.row(),t.column())},Di,y,y,zu(null,"td")),makeRowHeader:Ri(function(e,t,n,r){var o=ru(e,t.row(),n,r.replaceOrInit);return oa(o,t.row(),t.column())},Di,y,y,zu("col","th")),unmakeRowHeader:Ri(function(e,t,n,r){var o=ru(e,t.row(),n,r.replaceOrInit);return oa(o,t.row(),t.column())},Di,y,y,zu(null,"td")),mergeCells:Ri(function(e,t,n,r){var o=t.cells();Zu(o);var i=zi(e,t.bounds(),n,C(o[0]));return ta(i,S.from(o[0]))},Ai,y,y,Hu),unmergeCells:Ri(function(e,t,n,r){var o=W(t,function(e,t){return Hi(e,t,n,r.combine(t))},e);return ta(o,S.from(t[0]))},ki,la,y,Hu),pasteCells:Ri(function(e,n,t,r){var o,i,u,a,c=(o=n.clipboard(),i=n.generators(),u=hn(o),a=wn.generate(u),yi(a,i,!0)),l=qt.address(n.row(),n.column());return qi(l,e,c,n.generators(),t).fold(function(){return ta(e,S.some(n.element()))},function(e){var t=na(e,n.row(),n.column());return ta(e,t)})},Ni,la,y,Fu),pasteRowsBefore:Ri(function(e,t,n,r){var o=e[t.cells[0].row()],i=t.cells[0].row(),u=aa(t.clipboard(),t.generators(),o),a=Vi(i,e,u,t.generators(),n),c=na(a,t.cells[0].row(),t.cells[0].column());return ta(a,c)},Ei,y,y,Fu),pasteRowsAfter:Ri(function(e,t,n,r){var o=e[t.cells[0].row()],i=t.cells[t.cells.length-1].row()+t.cells[t.cells.length-1].rowspan(),u=aa(t.clipboard(),t.generators(),o),a=Vi(i,e,u,t.generators(),n),c=na(a,t.cells[0].row(),t.cells[0].column());return ta(a,c)},Ei,y,y,Fu),sortRows:ca(function(e,t,n,r){var o=ou(e,t.column(),n,r);return oa(o,t.row(),t.column())}),sortColumns:ca(function(e,t,n,r){var o=iu(e,t.row(),n,r);return oa(o,t.row(),t.column())})},sa=function(e){return De.fromDom(e.getBody())},da=function(e){return e.getBoundingClientRect().width},ma=function(e){return e.getBoundingClientRect().height},ga=function(t){return function(e){return bt(e,sa(t))}},ha=function(e){return/^[0-9]+$/.test(e)&&(e+="px"),e},pa=function(e){var t=Xt(e,"td[data-mce-style],th[data-mce-style]");ye(e,"data-mce-style"),P(t,function(e){ye(e,"data-mce-style")})},va={isRtl:C(!1)},ba={isRtl:C(!0)},wa={directionAt:function(e){return"rtl"==("rtl"===Ie(e,"direction")?"rtl":"ltr")?ba:va}},ya=["tableprops","tabledelete","|","tableinsertrowbefore","tableinsertrowafter","tabledeleterow","|","tableinsertcolbefore","tableinsertcolafter","tabledeletecol"],xa={"border-collapse":"collapse",width:"100%"},Ca={border:"1"},Sa=function(e){return e.getParam("table_cell_advtab",!0,"boolean")},Ra=function(e){return e.getParam("table_row_advtab",!0,"boolean")},Ta=function(e){return e.getParam("table_advtab",!0,"boolean")},Da=function(e){return e.getParam("table_style_by_css",!1,"boolean")},Oa=function(e){return e.getParam("table_cell_class_list",[],"array")},Na=function(e){return e.getParam("table_row_class_list",[],"array")},Ea=function(e){return e.getParam("table_class_list",[],"array")},Aa=function(e){return!1===e.getParam("table_responsive_width")},ka=function(e,t){return e.fire("newrow",{node:t})},Pa=function(e,t){return e.fire("newcell",{node:t})},Ia=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},Ba=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},Wa=function(f,e){var t,n=function(e){return"table"===ce(sa(e))},s=(t=f.getParam("table_clone_elements"),w(t)?S.some(t.split(/[ ,]/)):Array.isArray(t)?S.some(t):S.none()),r=function(u,a,c,l){return function(e,t){pa(e);var n=l(),r=De.fromDom(f.getDoc()),o=Io(wa.directionAt),i=Fn(c,r,s);return a(e)?u(n,e,t,i,o).bind(function(e){return P(e.newRows(),function(e){ka(f,e.dom())}),P(e.newCells(),function(e){Pa(f,e.dom())}),e.cursor().map(function(e){var t=f.dom.createRng();return t.setStart(e.dom(),0),t.setEnd(e.dom(),0),t})}):S.none()}};return{deleteRow:r(fa.eraseRows,function(e){var t=Wo(e);return!1===n(f)||1<t.rows()},y,e),deleteColumn:r(fa.eraseColumns,function(e){var t=Wo(e);return!1===n(f)||1<t.columns()},y,e),insertRowsBefore:r(fa.insertRowsBefore,l,y,e),insertRowsAfter:r(fa.insertRowsAfter,l,y,e),insertColumnsBefore:r(fa.insertColumnsBefore,l,ho,e),insertColumnsAfter:r(fa.insertColumnsAfter,l,ho,e),mergeCells:r(fa.mergeCells,l,y,e),unmergeCells:r(fa.unmergeCells,l,y,e),pasteRowsBefore:r(fa.pasteRowsBefore,l,y,e),pasteRowsAfter:r(fa.pasteRowsAfter,l,y,e),pasteCells:r(fa.pasteCells,l,y,e)}},Ma=function(e,t,r){var n=hn(e),o=wn.generate(n);return Oi(o,t).map(function(e){var t=yi(o,r,!1).slice(e[0].row(),e[e.length-1].row()+e[e.length-1].rowspan()),n=Ti(t,r);return Ho(n)})},_a=tinymce.util.Tools.resolve("tinymce.util.Tools"),La=function(e,t,n){n&&e.formatter.apply("align"+n,{},t)},ja=function(e,t,n){n&&e.formatter.apply("valign"+n,{},t)},Fa=function(t,n){_a.each("left center right".split(" "),function(e){t.formatter.remove("align"+e,{},n)})},za=function(t,n){_a.each("top middle bottom".split(" "),function(e){t.formatter.remove("valign"+e,{},n)})},Ha=function(o,e,i){var t;return t=function(e,t){for(var n=0;n<t.length;n++){var r=o.getStyle(t[n],i);if(void 0===e&&(e=r),e!==r)return""}return e}(t,o.select("td,th",e))},Ua=function(e,t){var n=e.dom,r=t.control.rootControl,o=r.toJSON(),i=n.parseStyle(o.style);i["border-style"]=o.borderStyle,i["border-color"]=o.borderColor,i["background-color"]=o.backgroundColor,i.width=o.width?ha(o.width):"",i.height=o.height?ha(o.height):"",r.find("#style").value(n.serializeStyle(n.parseStyle(n.serializeStyle(i))))},qa=function(e,t){var n=e.dom,r=t.control.rootControl,o=r.toJSON(),i=n.parseStyle(o.style);r.find("#borderStyle").value(i["border-style"]||""),r.find("#borderColor").value(i["border-color"]||""),r.find("#backgroundColor").value(i["background-color"]||""),r.find("#width").value(i.width||""),r.find("#height").value(i.height||"")},Va={createStyleForm:function(n){var e=function(){var e=n.getParam("color_picker_callback");if(e)return function(t){return e.call(n,function(e){t.control.value(e).fire("change")},t.control.value())}};return{title:"Advanced",type:"form",defaults:{onchange:b(Ua,n)},items:[{label:"Style",name:"style",type:"textbox",onchange:b(qa,n)},{type:"form",padding:0,formItemDefaults:{layout:"grid",alignH:["start","right"]},defaults:{size:7},items:[{label:"Border style",type:"listbox",name:"borderStyle",width:90,onselect:b(Ua,n),values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]},{label:"Border color",type:"colorbox",name:"borderColor",onaction:e()},{label:"Background color",type:"colorbox",name:"backgroundColor",onaction:e()}]}]}},buildListItems:function(e,r,t){var o=function(e,n){return n=n||[],_a.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=o(e.menu):(t.value=e.value,r&&r(t)),n.push(t)}),n};return o(e,t||[])},updateStyleField:Ua,extractAdvancedStyles:function(e,t){var n=e.parseStyle(e.getAttrib(t,"style")),r={};return n["border-style"]&&(r.borderStyle=n["border-style"]),n["border-color"]&&(r.borderColor=n["border-color"]),n["background-color"]&&(r.backgroundColor=n["background-color"]),r.style=e.serializeStyle(n),r},updateAdvancedFields:qa,syncAdvancedStyleFields:function(e,t){t.control.rootControl.find("#style")[0].getEl().isEqualNode(m.document.activeElement)?qa(e,t):Ua(e,t)}},Ga=function(r,o,e){var i,u=r.dom;function a(e,t,n){(1===o.length||n)&&u.setAttrib(e,t,n)}function c(e,t,n){(1===o.length||n)&&u.setStyle(e,t,n)}Sa(r)&&Va.syncAdvancedStyleFields(r,e),i=e.control.rootControl.toJSON(),r.undoManager.transact(function(){_a.each(o,function(e){var t,n;a(e,"scope",i.scope),1===o.length?a(e,"style",i.style):(t=e,n=i.style,delete t.dataset.mceStyle,t.style.cssText+=";"+n),a(e,"class",i["class"]),c(e,"width",ha(i.width)),c(e,"height",ha(i.height)),i.type&&e.nodeName.toLowerCase()!==i.type&&(e=u.rename(e,i.type)),1===o.length&&(Fa(r,e),za(r,e)),i.align&&La(r,e,i.align),i.valign&&ja(r,e,i.valign)}),r.focus()})},Ya=function(t){var e,n,r,o=[];if(o=t.dom.select("td[data-mce-selected],th[data-mce-selected]"),e=t.dom.getParent(t.selection.getStart(),"td,th"),!o.length&&e&&o.push(e),e=e||o[0]){var i,u,a,c;1<o.length?n={width:"",height:"",scope:"","class":"",align:"",valign:"",style:"",type:e.nodeName.toLowerCase()}:(u=e,a=(i=t).dom,c={width:a.getStyle(u,"width")||a.getAttrib(u,"width"),height:a.getStyle(u,"height")||a.getAttrib(u,"height"),scope:a.getAttrib(u,"scope"),"class":a.getAttrib(u,"class"),type:u.nodeName.toLowerCase(),style:"",align:"",valign:""},_a.each("left center right".split(" "),function(e){i.formatter.matchNode(u,"align"+e)&&(c.align=e)}),_a.each("top middle bottom".split(" "),function(e){i.formatter.matchNode(u,"valign"+e)&&(c.valign=e)}),Sa(i)&&_a.extend(c,Va.extractAdvancedStyles(a,u)),n=c),0<Oa(t).length&&(r={name:"class",type:"listbox",label:"Class",values:Va.buildListItems(Oa(t),function(e){e.value&&(e.textStyle=function(){return t.formatter.getCssText({block:"td",classes:[e.value]})})})});var l={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",layout:"grid",columns:2,labelGapCalc:!1,padding:0,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width",onchange:b(Va.updateStyleField,t)},{label:"Height",name:"height",onchange:b(Va.updateStyleField,t)},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"H Align",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"V Align",name:"valign",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}]},r]};Sa(t)?t.windowManager.open({title:"Cell properties",bodyType:"tabpanel",data:n,body:[{title:"General",type:"form",items:l},Va.createStyleForm(t)],onsubmit:b(Ga,t,o)}):t.windowManager.open({title:"Cell properties",data:n,body:l,onsubmit:b(Ga,t,o)})}};function Xa(f,s,d,e){var m=f.dom;function g(e,t,n){(1===s.length||n)&&m.setAttrib(e,t,n)}Ra(f)&&Va.syncAdvancedStyleFields(f,e);var h=e.control.rootControl.toJSON();f.undoManager.transact(function(){_a.each(s,function(e){var t,n,r,o,i,u,a,c,l;g(e,"scope",h.scope),g(e,"style",h.style),g(e,"class",h["class"]),t=e,n="height",r=ha(h.height),(1===s.length||r)&&m.setStyle(t,n,r),h.type!==e.parentNode.nodeName.toLowerCase()&&(o=f.dom,i=e,u=h.type,a=o.getParent(i,"table"),c=i.parentNode,(l=o.select(u,a)[0])||(l=o.create(u),a.firstChild?"CAPTION"===a.firstChild.nodeName?o.insertAfter(l,a.firstChild):a.insertBefore(l,a.firstChild):a.appendChild(l)),l.appendChild(i),c.hasChildNodes()||o.remove(c)),h.align!==d.align&&(Fa(f,e),La(f,e,h.align))}),f.focus()})}var Ka=function(t){var e,n,r,o,i,u,a,c,l,f,s=t.dom,d=[];e=s.getParent(t.selection.getStart(),"table"),n=s.getParent(t.selection.getStart(),"td,th"),_a.each(e.rows,function(t){_a.each(t.cells,function(e){if(s.getAttrib(e,"data-mce-selected")||e===n)return d.push(t),!1})}),(r=d[0])&&(1<d.length?i={height:"",scope:"",style:"","class":"",align:"",type:r.parentNode.nodeName.toLowerCase()}:(c=r,l=(a=t).dom,f={height:l.getStyle(c,"height")||l.getAttrib(c,"height"),scope:l.getAttrib(c,"scope"),"class":l.getAttrib(c,"class"),align:"",style:"",type:c.parentNode.nodeName.toLowerCase()},_a.each("left center right".split(" "),function(e){a.formatter.matchNode(c,"align"+e)&&(f.align=e)}),Ra(a)&&_a.extend(f,Va.extractAdvancedStyles(l,c)),i=f),0<Na(t).length&&(o={name:"class",type:"listbox",label:"Class",values:Va.buildListItems(Na(t),function(e){e.value&&(e.textStyle=function(){return t.formatter.getCssText({block:"tr",classes:[e.value]})})})}),u={type:"form",columns:2,padding:0,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"Header",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"},o]},Ra(t)?t.windowManager.open({title:"Row properties",data:i,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},Va.createStyleForm(t)],onsubmit:b(Xa,t,d,i)}):t.windowManager.open({title:"Row properties",data:i,body:u,onsubmit:b(Xa,t,d,i)}))},Ja=tinymce.util.Tools.resolve("tinymce.Env"),$a={styles:{"border-collapse":"collapse",width:"100%"},attributes:{border:"1"},percentages:!0},Qa=function(e,t,n,r,o){void 0===o&&(o=$a);var i=De.fromTag("table");Pe(i,o.styles),ve(i,o.attributes);var u=De.fromTag("tbody");kt(i,u);for(var a=[],c=0;c<e;c++){for(var l=De.fromTag("tr"),f=0;f<t;f++){var s=c<n||f<r?De.fromTag("th"):De.fromTag("td");f<r&&pe(s,"scope","row"),c<n&&pe(s,"scope","col"),kt(s,De.fromTag("br")),o.percentages&&ke(s,"width",100/t+"%"),kt(l,s)}a.push(l)}return Bt(u,a),i},Za=function(e,t){e.selection.select(t.dom(),!0),e.selection.collapse(!0)},ec=function(r,e,t){var n,o,i=r.getParam("table_default_styles",xa,"object"),u={styles:i,attributes:(o=r,o.getParam("table_default_attributes",Ca,"object")),percentages:(n=i.width,w(n)&&-1!==n.indexOf("%")&&!Aa(r))},a=Qa(t,e,0,0,u);pe(a,"data-mce-id","__mce");var c,l,f,s=(c=a,l=De.fromTag("div"),f=De.fromDom(c.dom().cloneNode(!0)),kt(l,f),l.dom().innerHTML);return r.insertContent(s),on(sa(r),'table[data-mce-id="__mce"]').map(function(e){var t,n;return Aa(r)&&ke(e,"width",Ie(e,"width")),ye(e,"data-mce-id"),t=r,P(Xt(e,"tr"),function(e){ka(t,e.dom()),P(Xt(e,"th,td"),function(e){Pa(t,e.dom())})}),n=r,on(e,"td,th").each(b(Za,n)),e.dom()}).getOr(null)};function tc(e,t,n,r){if("TD"===t.tagName||"TH"===t.tagName)e.setStyle(t,n,r);else if(t.children)for(var o=0;o<t.children.length;o++)tc(e,t.children[o],n,r)}var nc=function(e,t,n){var r,o,i=e.dom;Ta(e)&&Va.syncAdvancedStyleFields(e,n),!1===(o=n.control.rootControl.toJSON())["class"]&&delete o["class"],e.undoManager.transact(function(){t||(t=ec(e,o.cols||1,o.rows||1)),function(e,t,n){var r,o=e.dom,i={},u={};if(i["class"]=n["class"],u.height=ha(n.height),o.getAttrib(t,"width")&&!Da(e)?i.width=(r=n.width)?r.replace(/px$/,""):"":u.width=ha(n.width),Da(e)?(u["border-width"]=ha(n.border),u["border-spacing"]=ha(n.cellspacing),_a.extend(i,{"data-mce-border-color":n.borderColor,"data-mce-cell-padding":n.cellpadding,"data-mce-border":n.border})):_a.extend(i,{border:n.border,cellpadding:n.cellpadding,cellspacing:n.cellspacing}),Da(e)&&t.children)for(var a=0;a<t.children.length;a++)tc(o,t.children[a],{"border-width":ha(n.border),"border-color":n.borderColor,padding:ha(n.cellpadding)});n.style?_a.extend(u,o.parseStyle(n.style)):u=_a.extend({},o.parseStyle(o.getAttrib(t,"style")),u),i.style=o.serializeStyle(u),o.setAttribs(t,i)}(e,t,o),(r=i.select("caption",t)[0])&&!o.caption&&i.remove(r),!r&&o.caption&&((r=i.create("caption")).innerHTML=Ja.ie?"\xa0":'<br data-mce-bogus="1"/>',t.insertBefore(r,t.firstChild)),Fa(e,t),o.align&&La(e,t,o.align),e.focus(),e.addVisual()})},rc=function(t,e){var n,r,o,i,u,a,c,l,f,s,d=t.dom,m={};!0===e?(n=d.getParent(t.selection.getStart(),"table"))&&(c=n,l=(a=t).dom,f={width:l.getStyle(c,"width")||l.getAttrib(c,"width"),height:l.getStyle(c,"height")||l.getAttrib(c,"height"),cellspacing:l.getStyle(c,"border-spacing")||l.getAttrib(c,"cellspacing"),cellpadding:l.getAttrib(c,"data-mce-cell-padding")||l.getAttrib(c,"cellpadding")||Ha(a.dom,c,"padding"),border:l.getAttrib(c,"data-mce-border")||l.getAttrib(c,"border")||Ha(a.dom,c,"border"),borderColor:l.getAttrib(c,"data-mce-border-color"),caption:!!l.select("caption",c)[0],"class":l.getAttrib(c,"class")},_a.each("left center right".split(" "),function(e){a.formatter.matchNode(c,"align"+e)&&(f.align=e)}),Ta(a)&&_a.extend(f,Va.extractAdvancedStyles(l,c)),m=f):(r={label:"Cols",name:"cols"},o={label:"Rows",name:"rows"}),0<Ea(t).length&&(m["class"]&&(m["class"]=m["class"].replace(/\s*mce\-item\-table\s*/g,"")),i={name:"class",type:"listbox",label:"Class",values:Va.buildListItems(Ea(t),function(e){e.value&&(e.textStyle=function(){return t.formatter.getCssText({block:"table",classes:[e.value]})})})}),u={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",labelGapCalc:!1,padding:0,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:(s=t,s.getParam("table_appearance_options",!0,"boolean")?[r,o,{label:"Width",name:"width",onchange:b(Va.updateStyleField,t)},{label:"Height",name:"height",onchange:b(Va.updateStyleField,t)},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"}]:[r,o,{label:"Width",name:"width",onchange:b(Va.updateStyleField,t)},{label:"Height",name:"height",onchange:b(Va.updateStyleField,t)}])},{label:"Alignment",name:"align",type:"listbox",text:"None",values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},i]},Ta(t)?t.windowManager.open({title:"Table properties",data:m,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},Va.createStyleForm(t)],onsubmit:b(nc,t,n)}):t.windowManager.open({title:"Table properties",data:m,body:u,onsubmit:b(nc,t,n)})},oc=_a.each,ic=function(a,t,c,l,n){var r=ga(a),e=function(e){return function(){return S.from(a.dom.getParent(a.selection.getStart(),e)).map(De.fromDom)}},o=e("caption"),f=e("th,td"),s=function(e){return gn.table(e,r)},d=function(e){return{width:da(e.dom()),height:da(e.dom())}},i=function(n){f().each(function(t){s(t).each(function(i){var e=Gr.forMenu(l,i,t),u=d(i);n(i,e).each(function(e){var t,n,r,o;t=a,n=u,o=d(r=i),n.width===o.width&&n.height===o.height||(Ia(t,r.dom(),n.width,n.height),Ba(t,r.dom(),o.width,o.height)),a.selection.setRng(e),a.focus(),c.clear(i),pa(i)})})})},u=function(e){return f().bind(function(o){return s(o).bind(function(e){var t=De.fromDom(a.getDoc()),n=Gr.forMenu(l,e,o),r=Fn(y,t,S.none());return Ma(e,n,r)})})},m=function(u){n.get().each(function(e){var i=k(e,function(e){return Bn(e)});f().each(function(o){s(o).each(function(t){var e=De.fromDom(a.getDoc()),n=zn(e),r=Gr.pasteRows(l,t,o,i,n);u(t,r).each(function(e){a.selection.setRng(e),a.focus(),c.clear(t)})})})})};oc({mceTableSplitCells:function(){i(t.unmergeCells)},mceTableMergeCells:function(){i(t.mergeCells)},mceTableInsertRowBefore:function(){i(t.insertRowsBefore)},mceTableInsertRowAfter:function(){i(t.insertRowsAfter)},mceTableInsertColBefore:function(){i(t.insertColumnsBefore)},mceTableInsertColAfter:function(){i(t.insertColumnsAfter)},mceTableDeleteCol:function(){i(t.deleteColumn)},mceTableDeleteRow:function(){i(t.deleteRow)},mceTableCutRow:function(e){n.set(u()),i(t.deleteRow)},mceTableCopyRow:function(e){n.set(u())},mceTablePasteRowBefore:function(e){m(t.pasteRowsBefore)},mceTablePasteRowAfter:function(e){m(t.pasteRowsAfter)},mceTableDelete:function(){f().orThunk(o).each(function(e){gn.table(e,r).filter(g(r)).each(function(e){var t=De.fromText("");Et(e,t),Mt(e);var n=a.dom.createRng();n.setStart(t.dom(),0),n.setEnd(t.dom(),0),a.selection.setRng(n)})})}},function(e,t){a.addCommand(t,e)}),oc({mceInsertTable:b(rc,a),mceTableProps:b(rc,a,!0),mceTableRowProps:b(Ka,a),mceTableCellProps:b(Ya,a)},function(n,e){a.addCommand(e,function(e,t){n(t)})})},uc=function(e){var t=S.from(e.dom().documentElement).map(De.fromDom).getOr(e);return{parent:C(t),view:C(e),origin:C(vo(0,0))}},ac=function(e,t){return{parent:C(t),view:C(e),origin:C(vo(0,0))}};function cc(e){var n=$.apply(null,e),r=[];return{bind:function(e){if(e===undefined)throw"Event bind error: undefined handler";r.push(e)},unbind:function(t){r=I(r,function(e){return e!==t})},trigger:function(){var t=n.apply(null,arguments);P(r,function(e){e(t)})}}}var lc={create:function(e){return{registry:K(e,function(e){return{bind:e.bind,unbind:e.unbind}}),trigger:K(e,function(e){return e.trigger})}}},fc={mode:_u(["compare","extract","mutate","sink"]),sink:_u(["element","start","stop","destroy"]),api:_u(["forceDrop","drop","move","delayDrop"])},sc={resolve:ni("ephox-dragster").resolve},dc=function(m,g){return function(e){if(m(e)){var t,n,r,o,i,u,a,c=De.fromDom(e.target),l=function(){e.stopPropagation()},f=function(){e.preventDefault()},s=x(f,l),d=(t=c,n=e.clientX,r=e.clientY,o=l,i=f,u=s,a=e,{target:C(t),x:C(n),y:C(r),stop:o,prevent:i,kill:u,raw:C(a)});g(d)}}},mc=function(e,t,n,r){return o=e,i=t,u=!1,a=dc(n,r),o.dom().addEventListener(i,a,u),{unbind:b(gc,o,i,a,u)};var o,i,u,a},gc=function(e,t,n,r){e.dom().removeEventListener(t,n,r)},hc=C(!0),pc=function(e,t,n){return mc(e,t,hc,n)},vc=fc.mode({compare:function(e,t){return vo(t.left()-e.left(),t.top()-e.top())},extract:function(e){return S.some(vo(e.x(),e.y()))},sink:function(e,t){var n,r,o,i=(n=t,r=_o({layerClass:sc.resolve("blocker")},n),o=De.fromTag("div"),pe(o,"role","presentation"),Pe(o,{position:"fixed",left:"0px",top:"0px",width:"100%",height:"100%"}),Yo(o,sc.resolve("blocker")),Yo(o,r.layerClass),{element:function(){return o},destroy:function(){Mt(o)}}),u=pc(i.element(),"mousedown",e.forceDrop),a=pc(i.element(),"mouseup",e.drop),c=pc(i.element(),"mousemove",e.move),l=pc(i.element(),"mouseout",e.delayDrop);return fc.sink({element:i.element,start:function(e){kt(e,i.element())},stop:function(){Mt(i.element())},destroy:function(){i.destroy(),a.unbind(),c.unbind(),l.unbind(),u.unbind()}})},mutate:function(e,t){e.mutate(t.left(),t.top())}});function bc(){var i=S.none(),u=lc.create({move:cc(["info"])});return{onEvent:function(e,o){o.extract(e).each(function(e){var t,n,r;(t=o,n=e,r=i.map(function(e){return t.compare(e,n)}),i=S.some(n),r).each(function(e){u.trigger.move(e)})})},reset:function(){i=S.none()},events:u.registry}}function wc(){var e={onEvent:function(e,t){},reset:y},t=bc(),n=e;return{on:function(){n.reset(),n=t},off:function(){n.reset(),n=e},isOn:function(){return n===t},onEvent:function(e,t){n.onEvent(e,t)},events:t.events}}var yc=function(t,n,e){var r,o,i,u=!1,a=lc.create({start:cc([]),stop:cc([])}),c=wc(),l=function(){d.stop(),c.isOn()&&(c.off(),a.trigger.stop())},f=(r=l,o=200,i=null,{cancel:function(){null!==i&&(m.clearTimeout(i),i=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==i&&m.clearTimeout(i),i=m.setTimeout(function(){r.apply(null,e),i=null},o)}});c.events.move.bind(function(e){n.mutate(t,e.info())});var s=function(t){return function(){var e=Array.prototype.slice.call(arguments,0);if(u)return t.apply(null,e)}},d=n.sink(fc.api({forceDrop:l,drop:s(l),move:s(function(e,t){f.cancel(),c.onEvent(e,n)}),delayDrop:s(f.throttle)}),e);return{element:d.element,go:function(e){d.start(e),c.on(),a.trigger.start()},on:function(){u=!0},off:function(){u=!1},destroy:function(){d.destroy()},events:a.registry}},xc={transform:function(e,t){var n=t!==undefined?t:{},r=n.mode!==undefined?n.mode:vc;return yc(e,r,t)}},Cc=function(e,t,n){return un(e,t,n).isSome()};function Sc(){var n,r=lc.create({drag:cc(["xDelta","yDelta","target"])}),o=S.none(),e={mutate:function(e,t){n.trigger.drag(e,t)},events:(n=lc.create({drag:cc(["xDelta","yDelta"])})).registry};return e.events.drag.bind(function(t){o.each(function(e){r.trigger.drag(t.xDelta(),t.yDelta(),e)})}),{assign:function(e){o=S.some(e)},get:function(){return o},mutate:e.mutate,events:r.registry}}var Rc=ri.resolve("resizer-bar-dragging");function Tc(e,n){var r=ko.height,t=function(o,t,i){var n=Sc(),r=xc.transform(n,{}),u=S.none(),e=function(e,t){return S.from(be(e,t))};n.events.drag.bind(function(n){e(n.target(),"data-row").each(function(e){var t=gu.getInt(n.target(),"top");ke(n.target(),"top",t+n.yDelta()+"px")}),e(n.target(),"data-column").each(function(e){var t=gu.getInt(n.target(),"left");ke(n.target(),"left",t+n.xDelta()+"px")})});var a=function(e,t){return gu.getInt(e,t)-parseInt(be(e,"data-initial-"+t),10)};r.events.stop.bind(function(){n.get().each(function(r){u.each(function(n){e(r,"data-row").each(function(e){var t=a(r,"top");ye(r,"data-initial-top"),d.trigger.adjustHeight(n,t,parseInt(e,10))}),e(r,"data-column").each(function(e){var t=a(r,"left");ye(r,"data-initial-left"),d.trigger.adjustWidth(n,t,parseInt(e,10))}),mi.refresh(o,n,i,t)})})});var c=function(e,t){d.trigger.startAdjust(),n.assign(e),pe(e,"data-initial-"+t,parseInt(Ie(e,t),10)),Yo(e,Rc),ke(e,"opacity","0.2"),r.go(o.parent())},l=pc(o.parent(),"mousedown",function(e){mi.isRowBar(e.target())&&c(e.target(),"top"),mi.isColBar(e.target())&&c(e.target(),"left")}),f=function(e){return bt(e,o.view())},s=pc(o.view(),"mouseover",function(e){"table"===ce(e.target())||Cc(e.target(),"table",f)?(u="table"===ce(e.target())?S.some(e.target()):nn(e.target(),"table",f)).each(function(e){mi.refresh(o,e,i,t)}):Oe(e.target())&&mi.destroy(o)}),d=lc.create({adjustHeight:cc(["table","delta","row"]),adjustWidth:cc(["table","delta","column"]),startAdjust:cc([])});return{destroy:function(){l.unbind(),s.unbind(),r.destroy(),mi.destroy(o)},refresh:function(e){mi.refresh(o,e,i,t)},on:r.on,off:r.off,hideBars:b(mi.hide,o),showBars:b(mi.show,o),events:d.registry}}(e,n,r),o=lc.create({beforeResize:cc(["table"]),afterResize:cc(["table"]),startDrag:cc([])});return t.events.adjustHeight.bind(function(e){o.trigger.beforeResize(e.table());var t=r.delta(e.delta());Pu(e.table(),t,e.row(),r),o.trigger.afterResize(e.table())}),t.events.startAdjust.bind(function(e){o.trigger.startDrag()}),t.events.adjustWidth.bind(function(e){o.trigger.beforeResize(e.table());var t=n.delta(e.delta(),e.table());ku(e.table(),t,e.column(),n),o.trigger.afterResize(e.table())}),{on:t.on,off:t.off,hideBars:t.hideBars,showBars:t.showBars,destroy:t.destroy,events:o.registry}}var Dc=function(e,t){return e.inline?ac(sa(e),(n=De.fromTag("div"),Pe(n,{position:"static",height:"0",width:"0",padding:"0",margin:"0",border:"0"}),kt(Ne(),n),n)):uc(De.fromDom(e.getDoc()));var n},Oc=function(e,t){e.inline&&Mt(t.parent())},Nc=function(u){var a,c,o=S.none(),i=S.none(),l=S.none(),f=/(\d+(\.\d+)?)%/,s=function(e){return"TABLE"===e.nodeName};return u.on("init",function(){var e,t=Io(wa.directionAt),n=Dc(u);if(l=S.some(n),("table"===(e=u.getParam("object_resizing",!0))||e)&&u.getParam("table_resize_bars",!0,"boolean")){var r=Tc(n,t);r.on(),r.events.startDrag.bind(function(e){o=S.some(u.selection.getRng())}),r.events.beforeResize.bind(function(e){var t=e.table().dom();Ia(u,t,da(t),ma(t))}),r.events.afterResize.bind(function(e){var t=e.table(),n=t.dom();pa(t),o.each(function(e){u.selection.setRng(e),u.focus()}),Ba(u,n,da(n),ma(n)),u.undoManager.add()}),i=S.some(r)}}),u.on("ObjectResizeStart",function(e){var t,n=e.target;s(n)&&(a=e.width,t=n,c=u.dom.getStyle(t,"width")||u.dom.getAttrib(t,"width"))}),u.on("ObjectResized",function(e){var t=e.target;if(s(t)){var n=t;if(f.test(c)){var r=parseFloat(f.exec(c)[1]),o=e.width*r/a;u.dom.setStyle(n,"width",o+"%")}else{var i=[];_a.each(n.rows,function(e){_a.each(e.cells,function(e){var t=u.dom.getStyle(e,"width",!0);i.push({cell:e,width:t})})}),_a.each(i,function(e){u.dom.setStyle(e.cell,"width",e.width),u.dom.setAttrib(e.cell,"width",null)})}}}),{lazyResize:function(){return i},lazyWire:function(){return l.getOr(uc(De.fromDom(u.getBody())))},destroy:function(){i.each(function(e){e.destroy()}),l.each(function(e){Oc(u,e)})}}},Ec=function(e){return{fold:e}},Ac=function(o){return Ec(function(e,t,n,r){return e(o)})},kc=function(o){return Ec(function(e,t,n,r){return t(o)})},Pc=function(o,i){return Ec(function(e,t,n,r){return n(o,i)})},Ic=function(o){return Ec(function(e,t,n,r){return r(o)})},Bc=function(n,e){return gn.table(n,e).bind(function(e){var t=gn.cells(e);return L(t,function(e){return bt(n,e)}).map(function(e){return{index:C(e),all:C(t)}})})},Wc=function(t,e){return Bc(t,e).fold(function(){return Ac(t)},function(e){return e.index()+1<e.all().length?Pc(t,e.all()[e.index()+1]):Ic(t)})},Mc=function(t,e){return Bc(t,e).fold(function(){return Ac()},function(e){return 0<=e.index()-1?Pc(t,e.all()[e.index()-1]):kc(t)})},_c=_r([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Lc={before:_c.before,on:_c.on,after:_c.after,cata:function(e,t,n,r){return e.fold(t,n,r)},getStart:function(e){return e.fold(o,o,o)}},jc=_r([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Fc=$("start","soffset","finish","foffset"),zc=function(e){var t,n=e.match({domRange:function(e){return De.fromDom(e.startContainer)},relative:function(e,t){return Lc.getStart(e)},exact:function(e,t,n,r){return e}});return t=n.dom().ownerDocument.defaultView,De.fromDom(t)},Hc=jc.relative,Uc=jc.exact,qc=function(e,t,n,r){var o,i,u,a,c,l=(i=t,u=n,a=r,(c=xt(o=e).dom().createRange()).setStart(o.dom(),i),c.setEnd(u.dom(),a),c),f=bt(e,n)&&t===r;return l.collapsed&&!f},Vc=function(e,t){e.selectNodeContents(t.dom())},Gc=function(e,t,n){var r,o,i=e.document.createRange();return r=i,t.fold(function(e){r.setStartBefore(e.dom())},function(e,t){r.setStart(e.dom(),t)},function(e){r.setStartAfter(e.dom())}),o=i,n.fold(function(e){o.setEndBefore(e.dom())},function(e,t){o.setEnd(e.dom(),t)},function(e){o.setEndAfter(e.dom())}),i},Yc=function(e,t,n,r,o){var i=e.document.createRange();return i.setStart(t.dom(),n),i.setEnd(r.dom(),o),i},Xc=function(e){return{left:C(e.left),top:C(e.top),right:C(e.right),bottom:C(e.bottom),width:C(e.width),height:C(e.height)}},Kc=_r([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),Jc=function(e,t,n){return t(De.fromDom(n.startContainer),n.startOffset,De.fromDom(n.endContainer),n.endOffset)},$c=function(e,t){var o,n,r,i=(o=e,t.match({domRange:function(e){return{ltr:C(e),rtl:S.none}},relative:function(e,t){return{ltr:Re(function(){return Gc(o,e,t)}),rtl:Re(function(){return S.some(Gc(o,t,e))})}},exact:function(e,t,n,r){return{ltr:Re(function(){return Yc(o,e,t,n,r)}),rtl:Re(function(){return S.some(Yc(o,n,r,e,t))})}}}));return(r=(n=i).ltr()).collapsed?n.rtl().filter(function(e){return!1===e.collapsed}).map(function(e){return Kc.rtl(De.fromDom(e.endContainer),e.endOffset,De.fromDom(e.startContainer),e.startOffset)}).getOrThunk(function(){return Jc(0,Kc.ltr,r)}):Jc(0,Kc.ltr,r)},Qc=function(i,e){return $c(i,e).match({ltr:function(e,t,n,r){var o=i.document.createRange();return o.setStart(e.dom(),t),o.setEnd(n.dom(),r),o},rtl:function(e,t,n,r){var o=i.document.createRange();return o.setStart(n.dom(),r),o.setEnd(e.dom(),t),o}})},Zc=function(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom},el=function(n,r,e,t,o){var i=function(e){var t=n.dom().createRange();return t.setStart(r.dom(),e),t.collapse(!0),t},u=Sn(r).length,a=function(e,t,n,r,o){if(0===o)return 0;if(t===r)return o-1;for(var i=r,u=1;u<o;u++){var a=e(u),c=Math.abs(t-a.left);if(n<=a.bottom){if(n<a.top||i<c)return u-1;i=c}}return 0}(function(e){return i(e).getBoundingClientRect()},e,t,o.right,u);return i(a)},tl=function(t,n,r,o){var e=t.dom().createRange();e.selectNode(n.dom());var i=e.getClientRects();return jo(i,function(e){return Zc(e,r,o)?S.some(e):S.none()}).map(function(e){return el(t,n,r,o,e)})},nl=function(t,e,n,r){var o=t.dom().createRange(),i=Dt(e);return jo(i,function(e){return o.selectNode(e.dom()),Zc(o.getBoundingClientRect(),n,r)?rl(t,e,n,r):S.none()})},rl=function(e,t,n,r){return(me(t)?tl:nl)(e,t,n,r)},ol=function(e,t){return t-e.left<e.right-t},il=function(e,t,n){var r=e.dom().createRange();return r.selectNode(t.dom()),r.collapse(n),r},ul=function(t,e,n){var r=t.dom().createRange();r.selectNode(e.dom());var o=r.getBoundingClientRect(),i=ol(o,n);return(!0===i?En:An)(e).map(function(e){return il(t,e,i)})},al=function(e,t,n){var r=t.dom().getBoundingClientRect(),o=ol(r,n);return S.some(il(e,t,o))},cl=function(e,t,n,r){var o=e.dom().createRange();o.selectNode(t.dom());var i=o.getBoundingClientRect();return function(e,t,n,r){var o=e.dom().createRange();o.selectNode(t.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,n)),a=Math.max(i.top,Math.min(i.bottom,r));return rl(e,t,u,a)}(e,t,Math.max(i.left,Math.min(i.right,n)),Math.max(i.top,Math.min(i.bottom,r)))},ll=document.caretPositionFromPoint?function(n,e,t){return S.from(n.dom().caretPositionFromPoint(e,t)).bind(function(e){if(null===e.offsetNode)return S.none();var t=n.dom().createRange();return t.setStart(e.offsetNode,e.offset),t.collapse(),S.some(t)})}:document.caretRangeFromPoint?function(e,t,n){return S.from(e.dom().caretRangeFromPoint(t,n))}:function(o,i,t){return De.fromPoint(o,i,t).bind(function(r){var e=function(){return e=o,n=i,(0===Dt(t=r).length?al:ul)(e,t,n);var e,t,n};return 0===Dt(r).length?e():cl(o,r,i,t).orThunk(e)})},fl=function(e,t){var n=ce(e);return"input"===n?Lc.after(e):E(["br","img"],n)?0===t?Lc.before(e):Lc.after(e):Lc.on(e,t)},sl=function(e,t){var n=e.fold(Lc.before,fl,Lc.after),r=t.fold(Lc.before,fl,Lc.after);return Hc(n,r)},dl=function(e,t,n,r){var o=fl(e,t),i=fl(n,r);return Hc(o,i)},ml=function(e,t){S.from(e.getSelection()).each(function(e){e.removeAllRanges(),e.addRange(t)})},gl=function(e,t,n,r,o){var i=Yc(e,t,n,r,o);ml(e,i)},hl=function(s,e){return $c(s,e).match({ltr:function(e,t,n,r){gl(s,e,t,n,r)},rtl:function(e,t,n,r){var o,i,u,a,c,l=s.getSelection();if(l.setBaseAndExtent)l.setBaseAndExtent(e.dom(),t,n.dom(),r);else if(l.extend)try{i=e,u=t,a=n,c=r,(o=l).collapse(i.dom(),u),o.extend(a.dom(),c)}catch(f){gl(s,n,r,e,t)}else gl(s,n,r,e,t)}})},pl=function(e){var o=zc(e).dom(),t=function(e,t,n,r){return Yc(o,e,t,n,r)},n=e.match({domRange:function(e){var t=De.fromDom(e.startContainer),n=De.fromDom(e.endContainer);return dl(t,e.startOffset,n,e.endOffset)},relative:sl,exact:dl});return $c(o,n).match({ltr:t,rtl:t})},vl=function(e){var t=De.fromDom(e.anchorNode),n=De.fromDom(e.focusNode);return qc(t,e.anchorOffset,n,e.focusOffset)?S.some(Fc(t,e.anchorOffset,n,e.focusOffset)):function(e){if(0<e.rangeCount){var t=e.getRangeAt(0),n=e.getRangeAt(e.rangeCount-1);return S.some(Fc(De.fromDom(t.startContainer),t.startOffset,De.fromDom(n.endContainer),n.endOffset))}return S.none()}(e)},bl=function(e,t){var n,r,o=(n=t,r=e.document.createRange(),Vc(r,n),r);ml(e,o)},wl=function(e){return(t=e,S.from(t.getSelection()).filter(function(e){return 0<e.rangeCount}).bind(vl)).map(function(e){return Uc(e.start(),e.soffset(),e.finish(),e.foffset())});var t},yl=function(e,t){var n,r,o,i=Qc(e,t);return r=(n=i).getClientRects(),0<(o=0<r.length?r[0]:n.getBoundingClientRect()).width||0<o.height?S.some(o).map(Xc):S.none()},xl=function(e,t,n){return r=e,o=t,i=n,u=De.fromDom(r.document),ll(u,o,i).map(function(e){return Fc(De.fromDom(e.startContainer),e.startOffset,De.fromDom(e.endContainer),e.endOffset)});var r,o,i,u},Cl=tinymce.util.Tools.resolve("tinymce.util.VK"),Sl=function(e,t,n,r){return Ol(e,t,Wc(n),r)},Rl=function(e,t,n,r){return Ol(e,t,Mc(n),r)},Tl=function(e,t){var n=Uc(t,0,t,0);return pl(n)},Dl=function(e,t){var n,r=Xt(t,"tr");return(n=r,0===n.length?S.none():S.some(n[n.length-1])).bind(function(e){return on(e,"td,th").map(function(e){return Tl(0,e)})})},Ol=function(r,e,t,o,n){return t.fold(S.none,S.none,function(e,t){return En(t).map(function(e){return Tl(0,e)})},function(n){return gn.table(n,e).bind(function(e){var t=Gr.noMenu(n);return r.undoManager.transact(function(){o.insertRowsAfter(e,t)}),Dl(0,e)})})},Nl=["table","li","dl"],El=function(t,n,r,o){if(t.keyCode===Cl.TAB){var i=sa(n),u=function(e){var t=ce(e);return bt(e,i)||E(Nl,t)},e=n.selection.getRng();if(e.collapsed){var a=De.fromDom(e.startContainer);gn.cell(a,u).each(function(e){t.preventDefault(),(t.shiftKey?Rl:Sl)(n,u,e,r,o).each(function(e){n.selection.setRng(e)})})}}},Al={response:$("selection","kill")},kl=function(t){return function(e){return e===t}},Pl=kl(38),Il=kl(40),Bl={ltr:{isBackward:kl(37),isForward:kl(39)},rtl:{isBackward:kl(39),isForward:kl(37)},isUp:Pl,isDown:Il,isNavigation:function(e){return 37<=e&&e<=40}},Wl=function(e,t){var n=Qc(e,t);return{start:C(De.fromDom(n.startContainer)),soffset:C(n.startOffset),finish:C(De.fromDom(n.endContainer)),foffset:C(n.endOffset)}},Ml=function(e,t,n,r){return{start:C(Lc.on(e,t)),finish:C(Lc.on(n,r))}};function _l(a){return{elementFromPoint:function(e,t){return De.fromPoint(De.fromDom(a.document),e,t)},getRect:function(e){return e.dom().getBoundingClientRect()},getRangedRect:function(e,t,n,r){var o=Uc(e,t,n,r);return yl(a,o).map(function(e){return K(e,c)})},getSelection:function(){return wl(a).map(function(e){return Wl(a,e)})},fromSitus:function(e){var t=Hc(e.start(),e.finish());return Wl(a,t)},situsFromPoint:function(e,t){return xl(a,e,t).map(function(e){return{start:C(Lc.on(e.start(),e.soffset())),finish:C(Lc.on(e.finish(),e.foffset()))}})},clearSelection:function(){a.getSelection().removeAllRanges()},setSelection:function(e){var t,n,r,o,i,u;t=a,n=e.start(),r=e.soffset(),o=e.finish(),i=e.foffset(),u=dl(n,r,o,i),hl(t,u)},setRelativeSelection:function(e,t){var n,r;n=a,r=sl(e,t),hl(n,r)},selectContents:function(e){bl(a,e)},getInnerHeight:function(){return a.innerHeight},getScrollY:function(){var e,t,n,r;return(e=De.fromDom(a.document),t=e!==undefined?e.dom():m.document,n=t.body.scrollLeft||t.documentElement.scrollLeft,r=t.body.scrollTop||t.documentElement.scrollTop,vo(n,r)).top()},scrollBy:function(e,t){var n,r,o;n=e,r=t,((o=De.fromDom(a.document))!==undefined?o.dom():m.document).defaultView.scrollBy(n,r)}}}mt.detect().browser.isSafari();var Ll=function(n,e,r,t,o){return bt(r,t)?S.none():Or(r,t,e).bind(function(e){var t=e.boxes().getOr([]);return 0<t.length?(o(n,t,e.start(),e.finish()),S.some(Al.response(S.some(Ml(r,0,r,Dn(r))),!0))):S.none()})},jl={sync:function(n,r,e,t,o,i,u){return bt(e,o)&&t===i?S.none():un(e,"td,th",r).bind(function(t){return un(o,"td,th",r).bind(function(e){return Ll(n,r,t,e,u)})})},detect:Ll,update:function(e,t,n,r,o){return Er(r,e,t,o.firstSelectedSelector(),o.lastSelectedSelector()).map(function(e){return o.clear(n),o.selectRange(n,e.boxes(),e.start(),e.finish()),e.boxes()})}},Fl=re(["left","top","right","bottom"],[]),zl={nu:Fl,moveUp:function(e,t){return Fl({left:e.left(),top:e.top()-t,right:e.right(),bottom:e.bottom()-t})},moveDown:function(e,t){return Fl({left:e.left(),top:e.top()+t,right:e.right(),bottom:e.bottom()+t})},moveBottomTo:function(e,t){var n=e.bottom()-e.top();return Fl({left:e.left(),top:t-n,right:e.right(),bottom:t})},moveTopTo:function(e,t){var n=e.bottom()-e.top();return Fl({left:e.left(),top:t,right:e.right(),bottom:t+n})},getTop:function(e){return e.top()},getBottom:function(e){return e.bottom()},translate:function(e,t,n){return Fl({left:e.left()+t,top:e.top()+n,right:e.right()+t,bottom:e.bottom()+n})},toString:function(e){return"("+e.left()+", "+e.top()+") -> ("+e.right()+", "+e.bottom()+")"}},Hl=function(e){return zl.nu({left:e.left,top:e.top,right:e.right,bottom:e.bottom})},Ul=function(e,t){return S.some(e.getRect(t))},ql=function(e,t,n){return de(t)?Ul(e,t).map(Hl):me(t)?(r=e,o=t,i=n,0<=i&&i<Dn(o)?r.getRangedRect(o,i,o,i+1):0<i?r.getRangedRect(o,i-1,o,i):S.none()).map(Hl):S.none();var r,o,i},Vl=function(e,t){return de(t)?Ul(e,t).map(Hl):me(t)?e.getRangedRect(t,0,t,Dn(t)).map(Hl):S.none()},Gl=$("item","mode"),Yl=function(e,t,n,r){return void 0===r&&(r=Xl),e.property().parent(t).map(function(e){return Gl(e,r)})},Xl=function(e,t,n,r){return void 0===r&&(r=Kl),n.sibling(e,t).map(function(e){return Gl(e,r)})},Kl=function(e,t,n,r){void 0===r&&(r=Kl);var o=e.property().children(t);return n.first(o).map(function(e){return Gl(e,r)})},Jl=[{current:Yl,next:Xl,fallback:S.none()},{current:Xl,next:Kl,fallback:S.some(Yl)},{current:Kl,next:Kl,fallback:S.some(Xl)}],$l=function(t,n,r,o,e){return void 0===e&&(e=Jl),_(e,function(e){return e.current===r}).bind(function(e){return e.current(t,n,o,e.next).orThunk(function(){return e.fallback.bind(function(e){return $l(t,n,e,o)})})})},Ql=function(){return{sibling:function(e,t){return e.query().prevSibling(t)},first:function(e){return 0<e.length?S.some(e[e.length-1]):S.none()}}},Zl=function(){return{sibling:function(e,t){return e.query().nextSibling(t)},first:function(e){return 0<e.length?S.some(e[0]):S.none()}}},ef=function(t,e,n,r,o,i){return $l(t,e,r,o).bind(function(e){return i(e.item())?S.none():n(e.item())?S.some(e.item()):ef(t,e.item(),n,e.mode(),o,i)})},tf=function(t){return function(e){return 0===t.property().children(e).length}},nf=function(e,t,n,r){return ef(e,t,n,Xl,Ql(),r)},rf=function(e,t,n,r){return ef(e,t,n,Xl,Zl(),r)},of=Un(),uf=function(e,t){return r=t,nf(n=of,e,tf(n),r);var n,r},af=function(e,t){return r=t,rf(n=of,e,tf(n),r);var n,r},cf=_r([{none:[]},{retry:["caret"]}]),lf=function(t,e,r){return(n=e,o=Ju,Kt(function(e){return o(e)},tn,n,o,i)).fold(C(!1),function(e){return Vl(t,e).exists(function(e){return n=e,(t=r).left()<n.left()||Math.abs(n.right()-t.left())<1||t.left()>n.right();var t,n})});var n,o,i},ff={point:zl.getTop,adjuster:function(e,t,n,r,o){var i=zl.moveUp(o,5);return Math.abs(n.top()-r.top())<1?cf.retry(i):n.bottom()<o.top()?cf.retry(i):n.bottom()===o.top()?cf.retry(zl.moveUp(o,1)):lf(e,t,o)?cf.retry(zl.translate(i,5,0)):cf.none()},move:zl.moveUp,gather:uf},sf={point:zl.getBottom,adjuster:function(e,t,n,r,o){var i=zl.moveDown(o,5);return Math.abs(n.bottom()-r.bottom())<1?cf.retry(i):n.top()>o.bottom()?cf.retry(i):n.top()===o.bottom()?cf.retry(zl.moveDown(o,1)):lf(e,t,o)?cf.retry(zl.translate(i,5,0)):cf.none()},move:zl.moveDown,gather:af},df=function(n,r,o,i,u){return 0===u?S.some(i):(c=n,l=i.left(),f=r.point(i),c.elementFromPoint(l,f).filter(function(e){return"table"===ce(e)}).isSome()?(t=i,a=u-1,df(n,e=r,o,e.move(t,5),a)):n.situsFromPoint(i.left(),r.point(i)).bind(function(e){return e.start().fold(S.none,function(t,e){return Vl(n,t,e).bind(function(e){return r.adjuster(n,t,e,o,i).fold(S.none,function(e){return df(n,r,o,e,u-1)})}).orThunk(function(){return S.some(i)})},S.none)}));var e,t,a,c,l,f},mf=function(t,n,e){var r,o,i,u=t.move(e,5),a=df(n,t,e,u,100).getOr(u);return(r=t,o=a,i=n,r.point(o)>i.getInnerHeight()?S.some(r.point(o)-i.getInnerHeight()):r.point(o)<0?S.some(-r.point(o)):S.none()).fold(function(){return n.situsFromPoint(a.left(),t.point(a))},function(e){return n.scrollBy(0,e),n.situsFromPoint(a.left(),t.point(a)-e)})},gf={tryUp:b(mf,ff),tryDown:b(mf,sf),ieTryUp:function(e,t){return e.situsFromPoint(t.left(),t.top()-5)},ieTryDown:function(e,t){return e.situsFromPoint(t.left(),t.bottom()+5)},getJumpSize:C(5)},hf=_r([{none:["message"]},{success:[]},{failedUp:["cell"]},{failedDown:["cell"]}]),pf=function(e){return un(e,"tr")},vf={verify:function(a,e,t,n,r,c,o){return un(n,"td,th",o).bind(function(u){return un(e,"td,th",o).map(function(i){return bt(u,i)?bt(n,u)&&Dn(u)===r?c(i):hf.none("in same cell"):lr.sharedOne(pf,[u,i]).fold(function(){return t=i,n=u,r=(e=a).getRect(t),(o=e.getRect(n)).right>r.left&&o.left<r.right?hf.success():c(i);var e,t,n,r,o},function(e){return c(i)})})}).getOr(hf.none("default"))},cata:function(e,t,n,r,o){return e.fold(t,n,r,o)},adt:hf},bf=$("element","offset"),wf=($("element","deltaOffset"),$("element","start","finish"),$("begin","end"),$("element","text"),$("ancestor","descendants","element","index"),$("parent","children","element","index")),yf=function(e,t){return L(e,b(bt,t))},xf=function(e){return"br"===ce(e)},Cf=function(e,t,n){return t(e,n).bind(function(e){return me(e)&&0===Sn(e).trim().length?Cf(e,t,n):S.some(e)})},Sf=function(t,e,n,r){return(o=e,i=n,Ot(o,i).filter(xf).orThunk(function(){return Ot(o,i-1).filter(xf)})).bind(function(e){return r.traverse(e).fold(function(){return Cf(e,r.gather,t).map(r.relative)},function(e){return(r=e,Ct(r).bind(function(t){var n=Dt(t);return yf(n,r).map(function(e){return wf(t,n,r,e)})})).map(function(e){return Lc.on(e.parent(),e.index())});var r})});var o,i},Rf=function(e,t,n,r){var o,i,u;return(xf(t)?(o=e,i=t,(u=r).traverse(i).orThunk(function(){return Cf(i,u.gather,o)}).map(u.relative)):Sf(e,t,n,r)).map(function(e){return{start:C(e),finish:C(e)}})},Tf=function(e){return vf.cata(e,function(e){return S.none()},function(){return S.none()},function(e){return S.some(bf(e,0))},function(e){return S.some(bf(e,Dn(e)))})},Df=mt.detect(),Of=function(r,o,i,u,a,c){return 0===c?S.none():Af(r,o,i,u,a).bind(function(e){var t=r.fromSitus(e),n=vf.verify(r,i,u,t.finish(),t.foffset(),a.failure,o);return vf.cata(n,function(){return S.none()},function(){return S.some(e)},function(e){return bt(i,e)&&0===u?Nf(r,i,u,zl.moveUp,a):Of(r,o,e,0,a,c-1)},function(e){return bt(i,e)&&u===Dn(e)?Nf(r,i,u,zl.moveDown,a):Of(r,o,e,Dn(e),a,c-1)})})},Nf=function(t,e,n,r,o){return ql(t,e,n).bind(function(e){return Ef(t,o,r(e,gf.getJumpSize()))})},Ef=function(e,t,n){return Df.browser.isChrome()||Df.browser.isSafari()||Df.browser.isFirefox()||Df.browser.isEdge()?t.otherRetry(e,n):Df.browser.isIE()?t.ieRetry(e,n):S.none()},Af=function(t,e,n,r,o){return ql(t,n,r).bind(function(e){return Ef(t,o,e)})},kf=function(t,n,r){return(o=t,i=n,u=r,o.getSelection().bind(function(r){return Rf(i,r.finish(),r.foffset(),u).fold(function(){return S.some(bf(r.finish(),r.foffset()))},function(e){var t=o.fromSitus(e),n=vf.verify(o,r.finish(),r.foffset(),t.finish(),t.foffset(),u.failure,i);return Tf(n)})})).bind(function(e){return Of(t,n,e.element(),e.offset(),r,20).map(t.fromSitus)});var o,i,u},Pf=mt.detect(),If=function(e,t){return tn(e,function(e){return Ct(e).exists(function(e){return bt(e,t)})},n).isSome();var n},Bf=function(t,r,o,e,i){return un(e,"td,th",r).bind(function(n){return un(n,"table",r).bind(function(e){return If(i,e)?kf(t,r,o).bind(function(t){return un(t.finish(),"td,th",r).map(function(e){return{start:C(n),finish:C(e),range:C(t)}})}):S.none()})})},Wf=function(e,t,n,r,o,i){return Pf.browser.isIE()?S.none():i(r,t).orThunk(function(){return Bf(e,t,n,r,o).map(function(e){var t=e.range();return Al.response(S.some(Ml(t.start(),t.soffset(),t.finish(),t.foffset())),!0)})})},Mf=function(e,t,n,r,o,i,u){return Bf(e,n,r,o,i).bind(function(e){return jl.detect(t,n,e.start(),e.finish(),u)})},_f=function(e,u){return un(e,"tr",u).bind(function(i){return un(i,"table",u).bind(function(e){var t,n,r,o=Xt(e,"tr");return bt(i,o[0])?(t=e,n=function(e){return An(e).isSome()},r=u,nf(of,t,n,r)).map(function(e){var t=Dn(e);return Al.response(S.some(Ml(e,t,e,t)),!0)}):S.none()})})},Lf=function(e,u){return un(e,"tr",u).bind(function(i){return un(i,"table",u).bind(function(e){var t,n,r,o=Xt(e,"tr");return bt(i,o[o.length-1])?(t=e,n=function(e){return En(e).isSome()},r=u,rf(of,t,n,r)).map(function(e){return Al.response(S.some(Ml(e,0,e,0)),!0)}):S.none()})})},jf=function(e,t){return un(e,"td,th",t)},Ff={down:{traverse:Tt,gather:af,relative:Lc.before,otherRetry:gf.tryDown,ieRetry:gf.ieTryDown,failure:vf.adt.failedDown},up:{traverse:Rt,gather:uf,relative:Lc.before,otherRetry:gf.tryUp,ieRetry:gf.ieTryUp,failure:vf.adt.failedUp}},zf=$("rows","cols"),Hf={mouse:function(e,t,n,r){var o,i,u,a,c,l,f=_l(e),s=(o=f,i=t,u=n,a=r,c=S.none(),l=function(){c=S.none()},{mousedown:function(e){a.clear(i),c=jf(e.target(),u)},mouseover:function(e){c.each(function(r){a.clear(i),jf(e.target(),u).each(function(n){Or(r,n,u).each(function(e){var t=e.boxes().getOr([]);(1<t.length||1===t.length&&!bt(r,n))&&(a.selectRange(i,t,e.start(),e.finish()),o.selectContents(n))})})})},mouseup:function(){c.each(l)}});return{mousedown:s.mousedown,mouseover:s.mouseover,mouseup:s.mouseup}},keyboard:function(e,c,l,f){var s=_l(e),d=function(){return f.clear(c),S.none()};return{keydown:function(e,t,n,r,o,i){var u=e.raw().which,a=!0===e.raw().shiftKey;return Nr(c,f.selectedSelector()).fold(function(){return Bl.isDown(u)&&a?b(Mf,s,c,l,Ff.down,r,t,f.selectRange):Bl.isUp(u)&&a?b(Mf,s,c,l,Ff.up,r,t,f.selectRange):Bl.isDown(u)?b(Wf,s,l,Ff.down,r,t,Lf):Bl.isUp(u)?b(Wf,s,l,Ff.up,r,t,_f):S.none},function(t){var e=function(e){return function(){return jo(e,function(e){return jl.update(e.rows(),e.cols(),c,t,f)}).fold(function(){return Ar(c,f.firstSelectedSelector(),f.lastSelectedSelector()).map(function(e){var t=Bl.isDown(u)||i.isForward(u)?Lc.after:Lc.before;return s.setRelativeSelection(Lc.on(e.first(),0),t(e.table())),f.clear(c),Al.response(S.none(),!0)})},function(e){return S.some(Al.response(S.none(),!0))})}};return Bl.isDown(u)&&a?e([zf(1,0)]):Bl.isUp(u)&&a?e([zf(-1,0)]):i.isBackward(u)&&a?e([zf(0,-1),zf(-1,0)]):i.isForward(u)&&a?e([zf(0,1),zf(1,0)]):Bl.isNavigation(u)&&!1===a?d:S.none})()},keyup:function(t,n,r,o,i){return Nr(c,f.selectedSelector()).fold(function(){var e=t.raw().which;return 0==(!0===t.raw().shiftKey)?S.none():Bl.isNavigation(e)?jl.sync(c,l,n,r,o,i,f.selectRange):S.none()},S.none)}}}},Uf=function(r,e){P(e,function(e){var t,n;n=e,qo(t=r)?t.dom().classList.remove(n):Go(t,n),Xo(t)})},qf={byClass:function(o){var t,n,i=(t=o.selected(),function(e){Yo(e,t)}),r=(n=[o.selected(),o.lastSelected(),o.firstSelected()],function(e){Uf(e,n)}),u=function(e){var t=Xt(e,o.selectedSelector());P(t,r)};return{clear:u,selectRange:function(e,t,n,r){u(e),P(t,i),Yo(n,o.firstSelected()),Yo(r,o.lastSelected())},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}},byAttr:function(o){var n=function(e){ye(e,o.selected()),ye(e,o.firstSelected()),ye(e,o.lastSelected())},i=function(e){pe(e,o.selected(),"1")},u=function(e){var t=Xt(e,o.selectedSelector());P(t,n)};return{clear:u,selectRange:function(e,t,n,r){u(e),P(t,i),pe(n,o.firstSelected(),"1"),pe(r,o.lastSelected(),"1")},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}}},Vf=function(e){return!1===Ko(De.fromDom(e.target),"ephox-snooker-resizer-bar")};function Gf(h,p){var v=re(["mousedown","mouseover","mouseup","keyup","keydown"],[]),b=S.none(),w=qf.byAttr(Mr);return h.on("init",function(e){var r=h.getWin(),o=sa(h),t=ga(h),n=Hf.mouse(r,o,t,w),a=Hf.keyboard(r,o,t,w),c=function(e,t){!0===e.raw().shiftKey&&(t.kill()&&e.kill(),t.selection().each(function(e){var t=Hc(e.start(),e.finish()),n=Qc(r,t);h.selection.setRng(n)}))},i=function(e){var t=f(e);if(t.raw().shiftKey&&Bl.isNavigation(t.raw().which)){var n=h.selection.getRng(),r=De.fromDom(n.startContainer),o=De.fromDom(n.endContainer);a.keyup(t,r,n.startOffset,o,n.endOffset).each(function(e){c(t,e)})}},u=function(e){var t=f(e);p().each(function(e){e.hideBars()});var n=h.selection.getRng(),r=De.fromDom(h.selection.getStart()),o=De.fromDom(n.startContainer),i=De.fromDom(n.endContainer),u=wa.directionAt(r).isRtl()?Bl.rtl:Bl.ltr;a.keydown(t,o,n.startOffset,i,n.endOffset,u).each(function(e){c(t,e)}),p().each(function(e){e.showBars()})},l=function(e){return e.hasOwnProperty("x")&&e.hasOwnProperty("y")},f=function(e){var t=De.fromDom(e.target),n=function(){e.stopPropagation()},r=function(){e.preventDefault()},o=x(r,n);return{target:C(t),x:C(l(e)?e.x:null),y:C(l(e)?e.y:null),stop:n,prevent:r,kill:o,raw:C(e)}},s=function(e){return 0===e.button},d=function(e){s(e)&&Vf(e)&&n.mousedown(f(e))},m=function(e){var t;(t=e).buttons!==undefined&&0==(1&t.buttons)||!Vf(e)||n.mouseover(f(e))},g=function(e){s(e)&&Vf(e)&&n.mouseup(f(e))};h.on("mousedown",d),h.on("mouseover",m),h.on("mouseup",g),h.on("keyup",i),h.on("keydown",u),h.on("nodechange",function(){var e=h.selection,t=De.fromDom(e.getStart()),n=De.fromDom(e.getEnd());lr.sharedOne(gn.table,[t,n]).fold(function(){w.clear(o)},y)}),b=S.some(v({mousedown:d,mouseover:m,mouseup:g,keyup:i,keydown:u}))}),{clear:w.clear,destroy:function(){b.each(function(e){})}}}var Yf=_a.each,Xf=function(t){var n=[];function e(e){return function(){t.execCommand(e)}}Yf("inserttable tableprops deletetable | cell row column".split(" "),function(e){"|"===e?n.push({text:"-"}):n.push(t.menuItems[e])}),t.addButton("table",{type:"menubutton",title:"Table",menu:n}),t.addButton("tableprops",{title:"Table properties",onclick:e("mceTableProps"),icon:"table"}),t.addButton("tabledelete",{title:"Delete table",onclick:e("mceTableDelete")}),t.addButton("tablecellprops",{title:"Cell properties",onclick:e("mceTableCellProps")}),t.addButton("tablemergecells",{title:"Merge cells",onclick:e("mceTableMergeCells")}),t.addButton("tablesplitcells",{title:"Split cell",onclick:e("mceTableSplitCells")}),t.addButton("tableinsertrowbefore",{title:"Insert row before",onclick:e("mceTableInsertRowBefore")}),t.addButton("tableinsertrowafter",{title:"Insert row after",onclick:e("mceTableInsertRowAfter")}),t.addButton("tabledeleterow",{title:"Delete row",onclick:e("mceTableDeleteRow")}),t.addButton("tablerowprops",{title:"Row properties",onclick:e("mceTableRowProps")}),t.addButton("tablecutrow",{title:"Cut row",onclick:e("mceTableCutRow")}),t.addButton("tablecopyrow",{title:"Copy row",onclick:e("mceTableCopyRow")}),t.addButton("tablepasterowbefore",{title:"Paste row before",onclick:e("mceTablePasteRowBefore")}),t.addButton("tablepasterowafter",{title:"Paste row after",onclick:e("mceTablePasteRowAfter")}),t.addButton("tableinsertcolbefore",{title:"Insert column before",onclick:e("mceTableInsertColBefore")}),t.addButton("tableinsertcolafter",{title:"Insert column after",onclick:e("mceTableInsertColAfter")}),t.addButton("tabledeletecol",{title:"Delete column",onclick:e("mceTableDeleteCol")})},Kf=function(t){var e,n=""===(e=t.getParam("table_toolbar",ya))||!1===e?[]:w(e)?e.split(/[ ,]/):R(e)?e:[];0<n.length&&t.addContextToolbar(function(e){return t.dom.is(e,"table")&&t.getBody().contains(e)},n.join(" "))},Jf=function(o,n){var r=S.none(),i=[],u=[],a=[],c=[],l=function(e){e.disabled(!0)},f=function(e){e.disabled(!1)},e=function(){var t=this;i.push(t),r.fold(function(){l(t)},function(e){f(t)})},t=function(){var t=this;u.push(t),r.fold(function(){l(t)},function(e){f(t)})};o.on("init",function(){o.on("nodechange",function(e){var t=S.from(o.dom.getParent(o.selection.getStart(),"th,td"));(r=t.bind(function(e){var t=De.fromDom(e);return gn.table(t).map(function(e){return Gr.forMenu(n,e,t)})})).fold(function(){P(i,l),P(u,l),P(a,l),P(c,l)},function(t){P(i,f),P(u,f),P(a,function(e){e.disabled(t.mergable().isNone())}),P(c,function(e){e.disabled(t.unmergable().isNone())})})})});var s=function(e,t,n,r){var o,i,u,a,c,l=r.getEl().getElementsByTagName("table")[0],f=r.isRtl()||"tl-tr"===r.parent().rel;for(l.nextSibling.innerHTML=t+1+" x "+(n+1),f&&(t=9-t),i=0;i<10;i++)for(o=0;o<10;o++)a=l.rows[i].childNodes[o].firstChild,c=(f?t<=o:o<=t)&&i<=n,e.dom.toggleClass(a,"mce-active",c),c&&(u=a);return u.parentNode},d=!1===o.getParam("table_grid",!0,"boolean")?{text:"Table",icon:"table",context:"table",onclick:m("mceInsertTable")}:{text:"Table",icon:"table",context:"table",ariaHideMenu:!0,onclick:function(e){e.aria&&(this.parent().hideAll(),e.stopImmediatePropagation(),o.execCommand("mceInsertTable"))},onshow:function(){s(o,0,0,this.menu.items()[0])},onhide:function(){var e=this.menu.items()[0].getEl().getElementsByTagName("a");o.dom.removeClass(e,"mce-active"),o.dom.addClass(e[0],"mce-active")},menu:[{type:"container",html:function(){var e="";e='<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';for(var t=0;t<10;t++){e+="<tr>";for(var n=0;n<10;n++)e+='<td role="gridcell" tabindex="-1"><a id="mcegrid'+(10*t+n)+'" href="#" data-mce-x="'+n+'" data-mce-y="'+t+'"></a></td>';e+="</tr>"}return e+="</table>",e+='<div class="mce-text-center" role="presentation">1 x 1</div>'}(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(e){var t,n,r=e.target;"A"===r.tagName.toUpperCase()&&(t=parseInt(r.getAttribute("data-mce-x"),10),n=parseInt(r.getAttribute("data-mce-y"),10),(this.isRtl()||"tl-tr"===this.parent().rel)&&(t=9-t),t===this.lastX&&n===this.lastY||(s(o,t,n,e.control),this.lastX=t,this.lastY=n))},onclick:function(e){var t=this;"A"===e.target.tagName.toUpperCase()&&(e.preventDefault(),e.stopPropagation(),t.parent().cancel(),o.undoManager.transact(function(){ec(o,t.lastX+1,t.lastY+1)}),o.addVisual())}}]};function m(e){return function(){o.execCommand(e)}}var g={text:"Table properties",context:"table",onPostRender:e,onclick:m("mceTableProps")},h={text:"Delete table",context:"table",onPostRender:e,cmd:"mceTableDelete"},p={text:"Row",context:"table",menu:[{text:"Insert row before",onclick:m("mceTableInsertRowBefore"),onPostRender:t},{text:"Insert row after",onclick:m("mceTableInsertRowAfter"),onPostRender:t},{text:"Delete row",onclick:m("mceTableDeleteRow"),onPostRender:t},{text:"Row properties",onclick:m("mceTableRowProps"),onPostRender:t},{text:"-"},{text:"Cut row",onclick:m("mceTableCutRow"),onPostRender:t},{text:"Copy row",onclick:m("mceTableCopyRow"),onPostRender:t},{text:"Paste row before",onclick:m("mceTablePasteRowBefore"),onPostRender:t},{text:"Paste row after",onclick:m("mceTablePasteRowAfter"),onPostRender:t}]},v={text:"Column",context:"table",menu:[{text:"Insert column before",onclick:m("mceTableInsertColBefore"),onPostRender:t},{text:"Insert column after",onclick:m("mceTableInsertColAfter"),onPostRender:t},{text:"Delete column",onclick:m("mceTableDeleteCol"),onPostRender:t}]},b={separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:m("mceTableCellProps"),onPostRender:t},{text:"Merge cells",onclick:m("mceTableMergeCells"),onPostRender:function(){var t=this;a.push(t),r.fold(function(){l(t)},function(e){t.disabled(e.mergable().isNone())})}},{text:"Split cell",onclick:m("mceTableSplitCells"),onPostRender:function(){var t=this;c.push(t),r.fold(function(){l(t)},function(e){t.disabled(e.unmergable().isNone())})}}]};o.addMenuItem("inserttable",d),o.addMenuItem("tableprops",g),o.addMenuItem("deletetable",h),o.addMenuItem("row",p),o.addMenuItem("column",v),o.addMenuItem("cell",b)},$f=function(n,r){return{insertTable:function(e,t){return ec(n,e,t)},setClipboardRows:function(e){return t=r,n=k(e,De.fromDom),void t.set(S.from(n));var t,n},getClipboardRows:function(){return r.get().fold(function(){},function(e){return k(e,function(e){return e.dom()})})}}};e.add("table",function(t){var n,r=Nc(t),e=Gf(t,r.lazyResize),o=Wa(t,r.lazyWire),i=(n=t,{get:function(){var e=sa(n);return kr(e,Mr.selectedSelector()).fold(function(){return n.selection.getStart()===undefined?jr.none():jr.single(n.selection)},function(e){return jr.multiple(e)})}}),u=Bu(S.none());return ic(t,o,e,i,u),Yr(t,i,o,e),Jf(t,i),Xf(t),Kf(t),t.on("PreInit",function(){t.serializer.addTempAttr(Mr.firstSelected()),t.serializer.addTempAttr(Mr.lastSelected())}),t.getParam("table_tab_navigation",!0,"boolean")&&t.on("keydown",function(e){El(e,t,o,r.lazyWire)}),t.on("remove",function(){r.destroy(),e.destroy()}),$f(t,u)})}(window);
\ No newline at end of file
+!function(m){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),y=function(){},x=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},C=function(e){return function(){return e}},o=function(e){return e};function b(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}var t,n,r,i,g=function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}},f=C(!1),u=C(!0),a=function(){return c},c=(t=function(e){return e.isNone()},i={fold:function(e,t){return e()},is:f,isSome:f,isNone:u,getOr:r=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:C(null),getOrUndefined:C(undefined),or:r,orThunk:n,map:a,each:y,bind:a,exists:f,forall:u,filter:a,equals:t,equals_:t,toArray:function(){return[]},toString:C("none()")},Object.freeze&&Object.freeze(i),i),l=function(n){var e=C(n),t=function(){return o},r=function(e){return e(n)},o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:u,isNone:f,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return l(e(n))},each:function(e){e(n)},bind:r,exists:r,forall:r,filter:function(e){return e(n)?o:c},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(f,function(e){return t(n,e)})}};return o},R={some:l,none:a,from:function(e){return null===e||e===undefined?c:l(e)}},s=function(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"===t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}},d=s("string"),h=s("array"),p=s("boolean"),v=s("function"),w=s("number"),S=Array.prototype.slice,T=Array.prototype.indexOf,D=Array.prototype.push,O=function(e,t){return n=e,r=t,-1<T.call(n,r);var n,r},N=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1},E=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r},k=function(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)},A=function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n},P=function(e,t,n){return function(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n)}(e,function(e){n=t(n,e)}),n},I=function(e,t,n){return k(e,function(e){n=t(n,e)}),n},B=function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return R.some(o)}return R.none()},W=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return R.some(n);return R.none()},M=function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!h(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);D.apply(t,e[n])}return t},_=function(e,t){var n=E(e,t);return M(n)},L=function(e,t){for(var n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n))return!1;return!0},F=function(e){var t=S.call(e,0);return t.reverse(),t},j=(v(Array.from)&&Array.from,Object.keys),z=function(e,t){for(var n=j(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}},H=function(e,n){return U(e,function(e,t){return{k:t,v:n(e,t)}})},U=function(e,r){var o={};return z(e,function(e,t){var n=r(e,t);o[n.k]=n.v}),o},q=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(t.length!==n.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+n.length+" arguments");var r={};return k(t,function(e,t){r[e]=C(n[t])}),r}},V=function(e){return e.slice(0).sort()},G=function(e,t){throw new Error("All required keys ("+V(e).join(", ")+") were not specified. Specified keys were: "+V(t).join(", ")+".")},Y=function(e){throw new Error("Unsupported keys for object: "+V(e).join(", "))},X=function(t,e){if(!h(e))throw new Error("The "+t+" fields must be an array. Was: "+e+".");k(e,function(e){if(!d(e))throw new Error("The value "+e+" in the "+t+" fields was not a string.")})},K=function(e){var n=V(e);B(n,function(e,t){return t<n.length-1&&e===n[t+1]}).each(function(e){throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+n.join(", ")+"].")})},J=function(o,i){var u=o.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return X("required",o),X("optional",i),K(u),function(t){var n=j(t);L(o,function(e){return O(n,e)})||G(o,n);var e=A(n,function(e){return!O(u,e)});0<e.length&&Y(e);var r={};return k(o,function(e){r[e]=C(t[e])}),k(i,function(e){r[e]=C(Object.prototype.hasOwnProperty.call(t,e)?R.some(t[e]):R.none())}),r}},$=(m.Node.ATTRIBUTE_NODE,m.Node.CDATA_SECTION_NODE,m.Node.COMMENT_NODE),Q=m.Node.DOCUMENT_NODE,Z=(m.Node.DOCUMENT_TYPE_NODE,m.Node.DOCUMENT_FRAGMENT_NODE,m.Node.ELEMENT_NODE),ee=m.Node.TEXT_NODE,te=(m.Node.PROCESSING_INSTRUCTION_NODE,m.Node.ENTITY_REFERENCE_NODE,m.Node.ENTITY_NODE,m.Node.NOTATION_NODE,"undefined"!=typeof m.window?m.window:Function("return this;")()),ne=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:te,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},re=function(e,t){var n=ne(e,t);if(n===undefined||null===n)throw new Error(e+" not available on this browser");return n},oe=function(e){return e.dom().nodeName.toLowerCase()},ie=function(e){return e.dom().nodeType},ue=function(t){return function(e){return ie(e)===t}},ae=function(e){return ie(e)===$||"#comment"===oe(e)},ce=ue(Z),le=ue(ee),fe=function(e,t,n){if(!(d(n)||p(n)||w(n)))throw m.console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")},se=function(e,t,n){fe(e.dom(),t,n)},de=function(e,t){var n=e.dom();z(t,function(e,t){fe(n,t,e)})},me=function(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n},ge=function(e,t){var n=e.dom();return!(!n||!n.hasAttribute)&&n.hasAttribute(t)},he=function(e,t){e.dom().removeAttribute(t)},pe=function(e){return I(e.dom().attributes,function(e,t){return e[t.name]=t.value,e},{})},ve=function(e,t){return-1!==e.indexOf(t)},be=function(e){return e.style!==undefined&&v(e.style.getPropertyValue)},we=function(n){var r,o=!1;return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return o||(o=!0,r=n.apply(null,e)),r}},ye=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:C(e)}},xe={fromHtml:function(e,t){var n=(t||m.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw m.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ye(n.childNodes[0])},fromTag:function(e,t){var n=(t||m.document).createElement(e);return ye(n)},fromText:function(e,t){var n=(t||m.document).createTextNode(e);return ye(n)},fromDom:ye,fromPoint:function(e,t,n){var r=e.dom();return R.from(r.elementFromPoint(t,n)).map(ye)}},Ce=function(e){var t=le(e)?e.dom().parentNode:e.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)},Re=we(function(){return Se(xe.fromDom(m.document))}),Se=function(e){var t=e.dom().body;if(null===t||t===undefined)throw new Error("Body is not available yet");return xe.fromDom(t)},Te=function(e,t,n){if(!d(n))throw m.console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);be(e)&&e.style.setProperty(t,n)},De=function(e,t,n){var r=e.dom();Te(r,t,n)},Oe=function(e,t){var n=e.dom();z(t,function(e,t){Te(n,t,e)})},Ne=function(e,t){var n=e.dom(),r=m.window.getComputedStyle(n).getPropertyValue(t),o=""!==r||Ce(e)?r:Ee(n,t);return null===o?undefined:o},Ee=function(e,t){return be(e)?e.style.getPropertyValue(t):""},ke=function(e,t){var n=e.dom(),r=Ee(n,t);return R.from(r).filter(function(e){return 0<e.length})},Ae=function(e,t){var n,r,o=e.dom();r=t,be(n=o)&&n.style.removeProperty(r),ge(e,"style")&&""===me(e,"style").replace(/^\s+|\s+$/g,"")&&he(e,"style")},Pe=function(){return re("Node")},Ie=function(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)},Be=function(e,t){return Ie(e,t,Pe().DOCUMENT_POSITION_CONTAINED_BY)},We=function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}return undefined}(e,t);if(!n)return{major:0,minor:0};var r=function(e){return Number(t.replace(n,"$"+e))};return _e(r(1),r(2))},Me=function(){return _e(0,0)},_e=function(e,t){return{major:e,minor:t}},Le={nu:_e,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?Me():We(e,n)},unknown:Me},Fe="Firefox",je=function(e,t){return function(){return t===e}},ze=function(e){var t=e.current;return{current:t,version:e.version,isEdge:je("Edge",t),isChrome:je("Chrome",t),isIE:je("IE",t),isOpera:je("Opera",t),isFirefox:je(Fe,t),isSafari:je("Safari",t)}},He={unknown:function(){return ze({current:undefined,version:Le.unknown()})},nu:ze,edge:C("Edge"),chrome:C("Chrome"),ie:C("IE"),opera:C("Opera"),firefox:C(Fe),safari:C("Safari")},Ue="Windows",qe="Android",Ve="Solaris",Ge="FreeBSD",Ye=function(e,t){return function(){return t===e}},Xe=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Ye(Ue,t),isiOS:Ye("iOS",t),isAndroid:Ye(qe,t),isOSX:Ye("OSX",t),isLinux:Ye("Linux",t),isSolaris:Ye(Ve,t),isFreeBSD:Ye(Ge,t)}},Ke={unknown:function(){return Xe({current:undefined,version:Le.unknown()})},nu:Xe,windows:C(Ue),ios:C("iOS"),android:C(qe),linux:C("Linux"),osx:C("OSX"),solaris:C(Ve),freebsd:C(Ge)},Je=function(e,t){var n=String(t).toLowerCase();return B(e,function(e){return e.search(n)})},$e=function(e,n){return Je(e,n).map(function(e){var t=Le.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Qe=function(e,n){return Je(e,n).map(function(e){var t=Le.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Ze=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,et=function(t){return function(e){return ve(e,t)}},tt=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return ve(e,"edge/")&&ve(e,"chrome")&&ve(e,"safari")&&ve(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ze],search:function(e){return ve(e,"chrome")&&!ve(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return ve(e,"msie")||ve(e,"trident")}},{name:"Opera",versionRegexes:[Ze,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:et("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:et("firefox")},{name:"Safari",versionRegexes:[Ze,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(ve(e,"safari")||ve(e,"mobile/"))&&ve(e,"applewebkit")}}],nt=[{name:"Windows",search:et("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return ve(e,"iphone")||ve(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:et("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:et("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:et("linux"),versionRegexes:[]},{name:"Solaris",search:et("sunos"),versionRegexes:[]},{name:"FreeBSD",search:et("freebsd"),versionRegexes:[]}],rt={browsers:C(tt),oses:C(nt)},ot=function(e){var t,n,r,o,i,u,a,c,l,f,s,d=rt.browsers(),m=rt.oses(),g=$e(d,e).fold(He.unknown,He.nu),h=Qe(m,e).fold(Ke.unknown,Ke.nu);return{browser:g,os:h,deviceType:(n=g,r=e,o=(t=h).isiOS()&&!0===/ipad/i.test(r),i=t.isiOS()&&!o,u=t.isAndroid()&&3===t.version.major,a=t.isAndroid()&&4===t.version.major,c=o||u||a&&!0===/mobile/i.test(r),l=t.isiOS()||t.isAndroid(),f=l&&!c,s=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(r),{isiPad:C(o),isiPhone:C(i),isTablet:C(c),isPhone:C(f),isTouch:C(l),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:C(s)})}},it={detect:we(function(){var e=m.navigator.userAgent;return ot(e)})},ut=Z,at=Q,ct=function(e,t){var n=e.dom();if(n.nodeType!==ut)return!1;var r=n;if(r.matches!==undefined)return r.matches(t);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(t);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(t);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},lt=function(e){return e.nodeType!==ut&&e.nodeType!==at||0===e.childElementCount},ft=function(e,t){return e.dom()===t.dom()},st=it.detect().browser.isIE()?function(e,t){return Be(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},dt=ct,mt=function(e){return xe.fromDom(e.dom().ownerDocument)},gt=function(e){return R.from(e.dom().parentNode).map(xe.fromDom)},ht=function(e,t){for(var n=v(t)?t:f,r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=xe.fromDom(i);if(o.push(u),!0===n(u))break;r=i}return o},pt=function(e){return R.from(e.dom().previousSibling).map(xe.fromDom)},vt=function(e){return R.from(e.dom().nextSibling).map(xe.fromDom)},bt=function(e){return E(e.dom().childNodes,xe.fromDom)},wt=function(e,t){var n=e.dom().childNodes;return R.from(n[t]).map(xe.fromDom)},yt=(q("element","offset"),function(t,n){gt(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})}),xt=function(e,t){vt(e).fold(function(){gt(e).each(function(e){Rt(e,t)})},function(e){yt(e,t)})},Ct=function(t,n){wt(t,0).fold(function(){Rt(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})},Rt=function(e,t){e.dom().appendChild(t.dom())},St=function(e,t){yt(e,t),Rt(t,e)},Tt=function(r,o){k(o,function(e,t){var n=0===t?r:o[t-1];xt(n,e)})},Dt=function(t,e){k(e,function(e){Rt(t,e)})},Ot=function(e){e.dom().textContent="",k(bt(e),function(e){Nt(e)})},Nt=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},Et=function(e){var t,n=bt(e);0<n.length&&(t=e,k(n,function(e){yt(t,e)})),Nt(e)},kt=(q("width","height"),q("width","height"),q("rows","columns")),At=q("row","column"),Pt=(q("x","y"),q("element","rowspan","colspan")),It=q("element","rowspan","colspan","isNew"),Bt=q("element","rowspan","colspan","row","column"),Wt=q("element","cells","section"),Mt=q("element","isNew"),_t=q("element","cells","section","isNew"),Lt=q("cells","section"),Ft=q("details","section"),jt=q("startRow","startCol","finishRow","finishCol"),zt=function(e,t){var n=[];return k(bt(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(zt(e,t))}),n},Ht=function(e,t,n){return r=function(e){return ct(e,t)},A(ht(e,n),r);var r},Ut=function(e,t){return n=function(e){return ct(e,t)},A(bt(e),n);var n},qt=function(e,t){return n=t,o=(r=e)===undefined?m.document:r.dom(),lt(o)?[]:E(o.querySelectorAll(n),xe.fromDom);var n,r,o};function Vt(e,t,n,r,o){return e(n,r)?R.some(n):v(o)&&o(n)?R.none():t(n,r,o)}var Gt,Yt,Xt,Kt=function(e,t,n){for(var r=e.dom(),o=v(n)?n:C(!1);r.parentNode;){r=r.parentNode;var i=xe.fromDom(r);if(t(i))return R.some(i);if(o(i))break}return R.none()},Jt=function(e,t,n){return Kt(e,function(e){return ct(e,t)},n)},$t=function(e,t){return n=function(e){return ct(e,t)},B(e.dom().childNodes,function(e){return n(xe.fromDom(e))}).map(xe.fromDom);var n},Qt=function(e,t){return n=t,o=(r=e)===undefined?m.document:r.dom(),lt(o)?R.none():R.from(o.querySelector(n)).map(xe.fromDom);var n,r,o},Zt=function(e,t,n){return Vt(ct,Jt,e,t,n)},en=function(e,t,n){return _(bt(e),function(e){return ct(e,t)?n(e)?[e]:[]:en(e,t,n)})},tn={firstLayer:function(e,t){return en(e,t,C(!0))},filterFirstLayer:en},nn=function(e,t,n){return void 0===n&&(n=f),n(t)?R.none():O(e,oe(t))?R.some(t):Jt(t,e.join(","),function(e){return ct(e,"table")||n(e)})},rn=function(t,e){return gt(e).map(function(e){return Ut(e,t)})},on=b(rn,"th,td"),un=b(rn,"tr"),an=function(e,t){return parseInt(me(e,t),10)},cn={cell:function(e,t){return nn(["td","th"],e,t)},firstCell:function(e){return Qt(e,"th,td")},cells:function(e){return tn.firstLayer(e,"th,td")},neighbourCells:on,table:function(e,t){return Zt(e,"table",t)},row:function(e,t){return nn(["tr"],e,t)},rows:function(e){return tn.firstLayer(e,"tr")},notCell:function(e,t){return nn(["caption","tr","tbody","tfoot","thead"],e,t)},neighbourRows:un,attr:an,grid:function(e,t,n){var r=an(e,t),o=an(e,n);return kt(r,o)}},ln=function(e){var t=cn.rows(e);return E(t,function(e){var t=e,n=gt(t).map(function(e){var t=oe(e);return"tfoot"===t||"thead"===t||"tbody"===t?t:"tbody"}).getOr("tbody"),r=E(cn.cells(e),function(e){var t=ge(e,"rowspan")?parseInt(me(e,"rowspan"),10):1,n=ge(e,"colspan")?parseInt(me(e,"colspan"),10):1;return Pt(e,t,n)});return Wt(t,r,n)})},fn=function(e,n){return E(e,function(e){var t=E(cn.cells(e),function(e){var t=ge(e,"rowspan")?parseInt(me(e,"rowspan"),10):1,n=ge(e,"colspan")?parseInt(me(e,"colspan"),10):1;return Pt(e,t,n)});return Wt(e,t,n.section())})},sn=function(e,t){return e+","+t},dn=function(e,t){var n=_(e.all(),function(e){return e.cells()});return A(n,t)},mn={generate:function(e){var l={},t=[],n=e.length,f=0;k(e,function(e,a){var c=[];k(e.cells(),function(e){for(var t=0;l[sn(a,t)]!==undefined;)t++;for(var n=Bt(e.element(),e.rowspan(),e.colspan(),a,t),r=0;r<e.colspan();r++)for(var o=0;o<e.rowspan();o++){var i=t+r,u=sn(a+o,i);l[u]=n,f=Math.max(f,i+1)}c.push(n)}),t.push(Wt(e.element(),c,e.section()))});var r=kt(n,f);return{grid:C(r),access:C(l),all:C(t)}},getAt:function(e,t,n){var r=e.access()[sn(t,n)];return r!==undefined?R.some(r):R.none()},findItem:function(e,t,n){var r=dn(e,function(e){return n(t,e.element())});return 0<r.length?R.some(r[0]):R.none()},filterItems:dn,justCells:function(e){var t=E(e.all(),function(e){return e.cells()});return M(t)}},gn=q("minRow","minCol","maxRow","maxCol"),hn=function(e,t){var n,i,r,u,a,c,l,o,f,s,d=function(e){return ct(e.element(),t)},m=ln(e),g=mn.generate(m),h=(i=d,r=(n=g).grid().columns(),u=n.grid().rows(),a=r,l=c=0,z(n.access(),function(e){if(i(e)){var t=e.row(),n=t+e.rowspan()-1,r=e.column(),o=r+e.colspan()-1;t<u?u=t:c<n&&(c=n),r<a?a=r:l<o&&(l=o)}}),gn(u,a,c,l)),p="th:not("+t+"),td:not("+t+")",v=tn.filterFirstLayer(e,"th,td",function(e){return ct(e,p)});return k(v,Nt),function(e,t,n,r){for(var o,i,u,a=t.grid().columns(),c=t.grid().rows(),l=0;l<c;l++)for(var f=!1,s=0;s<a;s++)l<n.minRow()||l>n.maxRow()||s<n.minCol()||s>n.maxCol()||(mn.getAt(t,l,s).filter(r).isNone()?(o=f,i=e[l].element(),u=xe.fromTag("td"),Rt(u,xe.fromTag("br")),(o?Rt:Ct)(i,u)):f=!0)}(m,g,h,d),o=e,f=h,s=A(tn.firstLayer(o,"tr"),function(e){return 0===e.dom().childElementCount}),k(s,Nt),f.minCol()!==f.maxCol()&&f.minRow()!==f.maxRow()||k(tn.firstLayer(o,"th,td"),function(e){he(e,"rowspan"),he(e,"colspan")}),he(o,"width"),he(o,"height"),Ae(o,"width"),Ae(o,"height"),e},pn=(Gt=le,Yt="text",{get:function(e){if(!Gt(e))throw new Error("Can only get "+Yt+" value of a "+Yt+" node");return Xt(e).getOr("")},getOption:Xt=function(e){return Gt(e)?R.from(e.dom().nodeValue):R.none()},set:function(e,t){if(!Gt(e))throw new Error("Can only set raw "+Yt+" value of a "+Yt+" node");e.dom().nodeValue=t}}),vn=function(e){return pn.get(e)},bn=function(e){return pn.getOption(e)},wn=function(e,t){pn.set(e,t)},yn=function(e){return"img"===oe(e)?1:bn(e).fold(function(){return bt(e).length},function(e){return e.length})},xn=["img","br"],Cn=function(e){return bn(e).filter(function(e){return 0!==e.trim().length||-1<e.indexOf("\xa0")}).isSome()||O(xn,oe(e))},Rn=function(e){return o=Cn,(i=function(e){for(var t=0;t<e.childNodes.length;t++){var n=xe.fromDom(e.childNodes[t]);if(o(n))return R.some(n);var r=i(e.childNodes[t]);if(r.isSome())return r}return R.none()})(e.dom());var o,i},Sn=function(e){return Tn(e,Cn)},Tn=function(e,i){var u=function(e){for(var t=bt(e),n=t.length-1;0<=n;n--){var r=t[n];if(i(r))return R.some(r);var o=u(r);if(o.isSome())return o}return R.none()};return u(e)},Dn=function(e,t){return xe.fromDom(e.dom().cloneNode(t))},On=function(e){return Dn(e,!1)},Nn=function(e){return Dn(e,!0)},En=function(e,t){var n,r,o,i,u=(n=e,r=t,o=xe.fromTag(r),i=pe(n),de(o,i),o),a=bt(Nn(e));return Dt(u,a),u},kn=function(){var e=xe.fromTag("td");return Rt(e,xe.fromTag("br")),e},An=function(e,t,n){var r=En(e,t);return z(n,function(e,t){null===e?he(r,t):se(r,t,e)}),r},Pn=function(e){return e},In=function(e){return function(){return xe.fromTag("tr",e.dom())}},Bn=function(d,e,m){return{row:In(e),cell:function(e){var r,o,i,t,n,u,a,c=mt(e.element()),l=xe.fromTag(oe(e.element()),c.dom()),f=m.getOr(["strong","em","b","i","span","font","h1","h2","h3","h4","h5","h6","p","div"]),s=0<f.length?(r=e.element(),o=l,i=f,Rn(r).map(function(e){var t=i.join(","),n=Ht(e,t,function(e){return ft(e,r)});return P(n,function(e,t){var n=On(t);return he(n,"contenteditable"),Rt(e,n),n},o)}).getOr(o)):l;return Rt(s,xe.fromTag("br")),t=e.element(),n=l,u=t.dom(),a=n.dom(),be(u)&&be(a)&&(a.style.cssText=u.style.cssText),Ae(l,"height"),1!==e.colspan()&&Ae(e.element(),"width"),d(e.element(),l),l},replace:An,gap:kn}},Wn=function(e){return{row:In(e),cell:kn,replace:Pn,gap:kn}},Mn=function(e,t){return t.column()>=e.startCol()&&t.column()+t.colspan()-1<=e.finishCol()&&t.row()>=e.startRow()&&t.row()+t.rowspan()-1<=e.finishRow()},_n=function(e,t){var n=t.column(),r=t.column()+t.colspan()-1,o=t.row(),i=t.row()+t.rowspan()-1;return n<=e.finishCol()&&r>=e.startCol()&&o<=e.finishRow()&&i>=e.startRow()},Ln=function(e,t){for(var n=!0,r=b(Mn,t),o=t.startRow();o<=t.finishRow();o++)for(var i=t.startCol();i<=t.finishCol();i++)n=n&&mn.getAt(e,o,i).exists(r);return n?R.some(t):R.none()},Fn=function(e,t,n){var r=mn.findItem(e,t,ft),o=mn.findItem(e,n,ft);return r.bind(function(r){return o.map(function(e){return t=r,n=e,jt(Math.min(t.row(),n.row()),Math.min(t.column(),n.column()),Math.max(t.row()+t.rowspan()-1,n.row()+n.rowspan()-1),Math.max(t.column()+t.colspan()-1,n.column()+n.colspan()-1));var t,n})})},jn=Fn,zn=function(t,e,n){return Fn(t,e,n).bind(function(e){return Ln(t,e)})},Hn=function(r,e,o,i){return mn.findItem(r,e,ft).bind(function(e){var t=0<o?e.row()+e.rowspan()-1:e.row(),n=0<i?e.column()+e.colspan()-1:e.column();return mn.getAt(r,t+o,n+i).map(function(e){return e.element()})})},Un=function(n,e,t){return jn(n,e,t).map(function(e){var t=mn.filterItems(n,b(_n,e));return E(t,function(e){return e.element()})})},qn=function(e,t){return mn.findItem(e,t,function(e,t){return st(t,e)}).map(function(e){return e.element()})},Vn=function(e){var t=ln(e);return mn.generate(t)},Gn=function(n,r,o){return cn.table(n).bind(function(e){var t=Vn(e);return Hn(t,n,r,o)})},Yn=function(e,t,n){var r=Vn(e);return Un(r,t,n)},Xn=function(e,t,n,r,o){var i=Vn(e),u=ft(e,n)?R.some(t):qn(i,t),a=ft(e,o)?R.some(r):qn(i,r);return u.bind(function(t){return a.bind(function(e){return Un(i,t,e)})})},Kn=function(e,t,n){var r=Vn(e);return zn(r,t,n)},Jn=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"];function $n(){return{up:C({selector:Jt,closest:Zt,predicate:Kt,all:ht}),down:C({selector:qt,predicate:zt}),styles:C({get:Ne,getRaw:ke,set:De,remove:Ae}),attrs:C({get:me,set:se,remove:he,copyTo:function(e,t){var n=pe(e);de(t,n)}}),insert:C({before:yt,after:xt,afterAll:Tt,append:Rt,appendAll:Dt,prepend:Ct,wrap:St}),remove:C({unwrap:Et,remove:Nt}),create:C({nu:xe.fromTag,clone:function(e){return xe.fromDom(e.dom().cloneNode(!1))},text:xe.fromText}),query:C({comparePosition:function(e,t){return e.dom().compareDocumentPosition(t.dom())},prevSibling:pt,nextSibling:vt}),property:C({children:bt,name:oe,parent:gt,document:function(e){return e.dom().ownerDocument},isText:le,isComment:ae,isElement:ce,getText:vn,setText:wn,isBoundary:function(e){return!!ce(e)&&("body"===oe(e)||O(Jn,oe(e)))},isEmptyTag:function(e){return!!ce(e)&&O(["br","img","hr","input"],oe(e))}}),eq:ft,is:dt}}var Qn=q("left","right"),Zn=q("first","second","splits"),er=function(e,t,n){var r=e.property().children(t);return W(r,b(e.eq,n)).map(function(e){return{before:C(r.slice(0,e)),after:C(r.slice(e+1))}})},tr=function(r,o,e,t){var n=o(r,e);return P(t,function(e,t){var n=o(r,t);return nr(r,e,n)},n)},nr=function(t,e,n){return e.bind(function(e){return n.filter(b(t.eq,e))})},rr=function(e,t){return b(e.eq,t)},or=function(t,e,n,r){void 0===r&&(r=f);var o=[e].concat(t.up().all(e)),i=[n].concat(t.up().all(n)),u=function(t){return W(t,r).fold(function(){return t},function(e){return t.slice(0,e+1)})},a=u(o),c=u(i),l=B(a,function(e){return N(c,rr(t,e))});return{firstpath:C(a),secondpath:C(c),shared:C(l)}},ir={sharedOne:function(e,t,n){return 0<n.length?tr(e,t,(r=n)[0],r.slice(1)):R.none();var r},subset:function(t,e,n){var r=or(t,e,n);return r.shared().bind(function(e){return function(o,i,e,t){var u=o.property().children(i);if(o.eq(i,e[0]))return R.some([e[0]]);if(o.eq(i,t[0]))return R.some([t[0]]);var n=function(e){var t=F(e),n=W(t,rr(o,i)).getOr(-1),r=n<t.length-1?t[n+1]:t[n];return W(u,rr(o,r))},r=n(e),a=n(t);return r.bind(function(r){return a.map(function(e){var t=Math.min(r,e),n=Math.max(r,e);return u.slice(t,n+1)})})}(t,e,r.firstpath(),r.secondpath())})},ancestors:or,breakToLeft:function(n,r,o){return er(n,r,o).map(function(e){var t=n.create().clone(r);return n.insert().appendAll(t,e.before().concat([o])),n.insert().appendAll(r,e.after()),n.insert().before(r,t),Qn(t,r)})},breakToRight:function(n,r,e){return er(n,r,e).map(function(e){var t=n.create().clone(r);return n.insert().appendAll(t,e.after()),n.insert().after(r,t),Qn(r,t)})},breakPath:function(i,e,u,a){var c=function(e,t,o){var n=Zn(e,R.none(),o);return u(e)?Zn(e,t,o):i.property().parent(e).bind(function(r){return a(i,r,e).map(function(e){var t=[{first:e.left,second:e.right}],n=u(r)?r:e.left();return c(n,R.some(e.right()),o.concat(t))})}).getOr(n)};return c(e,R.none(),[])}},ur=$n(),ar={sharedOne:function(n,e){return ir.sharedOne(ur,function(e,t){return n(t)},e)},subset:function(e,t){return ir.subset(ur,e,t)},ancestors:function(e,t,n){return ir.ancestors(ur,e,t,n)},breakToLeft:function(e,t){return ir.breakToLeft(ur,e,t)},breakToRight:function(e,t){return ir.breakToRight(ur,e,t)},breakPath:function(e,t,r){return ir.breakPath(ur,e,t,function(e,t,n){return r(t,n)})}},cr={create:J(["boxes","start","finish"],[])},lr=function(e){return Jt(e,"table")},fr=function(a,c,r){var l=function(t){return function(e){return r!==undefined&&r(e)||ft(e,t)}};return ft(a,c)?R.some(cr.create({boxes:R.some([a]),start:a,finish:c})):lr(a).bind(function(u){return lr(c).bind(function(i){if(ft(u,i))return R.some(cr.create({boxes:Yn(u,a,c),start:a,finish:c}));if(st(u,i)){var e=0<(t=Ht(c,"td,th",l(u))).length?t[t.length-1]:c;return R.some(cr.create({boxes:Xn(u,a,u,c,i),start:a,finish:e}))}if(st(i,u)){var t,n=0<(t=Ht(a,"td,th",l(i))).length?t[t.length-1]:a;return R.some(cr.create({boxes:Xn(i,a,u,c,i),start:a,finish:n}))}return ar.ancestors(a,c).shared().bind(function(e){return Zt(e,"table",r).bind(function(e){var t=Ht(c,"td,th",l(e)),n=0<t.length?t[t.length-1]:c,r=Ht(a,"td,th",l(e)),o=0<r.length?r[r.length-1]:a;return R.some(cr.create({boxes:Xn(e,a,u,c,i),start:o,finish:n}))})})})})},sr=fr,dr=function(e,t){var n=qt(e,t);return 0<n.length?R.some(n):R.none()},mr=function(e,t,n,r,o){return(i=e,u=o,B(i,function(e){return ct(e,u)})).bind(function(e){return Gn(e,t,n).bind(function(e){return n=r,Jt(t=e,"table").bind(function(e){return Qt(e,n).bind(function(e){return fr(e,t).bind(function(t){return t.boxes().map(function(e){return{boxes:C(e),start:C(t.start()),finish:C(t.finish())}})})})});var t,n})});var i,u},gr=function(e,t,r){return Qt(e,t).bind(function(n){return Qt(e,r).bind(function(t){return ar.sharedOne(lr,[n,t]).map(function(e){return{first:C(n),last:C(t),table:C(e)}})})})},hr=function(e,t){return dr(e,t)},pr=function(o,e,t){return gr(o,e,t).bind(function(n){var e=function(e){return ft(o,e)},t=Jt(n.first(),"thead,tfoot,tbody,table",e),r=Jt(n.last(),"thead,tfoot,tbody,table",e);return t.bind(function(t){return r.bind(function(e){return ft(t,e)?Kn(n.table(),n.first(),n.last()):R.none()})})})},vr="data-mce-selected",br="data-mce-first-selected",wr="data-mce-last-selected",yr={selected:C(vr),selectedSelector:C("td[data-mce-selected],th[data-mce-selected]"),attributeSelector:C("[data-mce-selected]"),firstSelected:C(br),firstSelectedSelector:C("td[data-mce-first-selected],th[data-mce-first-selected]"),lastSelected:C(wr),lastSelectedSelector:C("td[data-mce-last-selected],th[data-mce-last-selected]")},xr=function(u){if(!h(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var a=[],n={};return k(u,function(e,r){var t=j(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!h(i))throw new Error("case arguments must be an array");a.push(o),n[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var n=new Array(e),t=0;t<n.length;t++)n[t]=arguments[t];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[r].apply(null,n)},match:function(e){var t=j(e);if(a.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+a.join(",")+"\nActual: "+t.join(","));if(!L(a,function(e){return O(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+a.join(", "));return e[o].apply(null,n)},log:function(e){m.console.log(e,{constructors:a,constructor:o,params:n})}}}}),n},Cr=xr([{none:[]},{multiple:["elements"]},{single:["selection"]}]),Rr={cata:function(e,t,n,r){return e.fold(t,n,r)},none:Cr.none,multiple:Cr.multiple,single:Cr.single},Sr=function(e,t){return Rr.cata(t.get(),C([]),o,C([e]))},Tr=function(n,e){return Rr.cata(e.get(),R.none,function(t,e){return 0===t.length?R.none():pr(n,yr.firstSelectedSelector(),yr.lastSelectedSelector()).bind(function(e){return 1<t.length?R.some({bounds:C(e),cells:C(t)}):R.none()})},R.none)},Dr=function(e,t){var n=Sr(e,t);return 0<n.length&&L(n,function(e){return ge(e,"rowspan")&&1<parseInt(me(e,"rowspan"),10)||ge(e,"colspan")&&1<parseInt(me(e,"colspan"),10)})?R.some(n):R.none()},Or=Sr,Nr=function(e){return{element:C(e),mergable:R.none,unmergable:R.none,selection:C([e])}},Er=q("element","clipboard","generators"),kr={noMenu:Nr,forMenu:function(e,t,n){return{element:C(n),mergable:C(Tr(t,e)),unmergable:C(Dr(n,e)),selection:C(Or(n,e))}},notCell:function(e){return Nr(e)},paste:Er,pasteRows:function(e,t,n,r,o){return{element:C(n),mergable:R.none,unmergable:R.none,selection:C(Or(n,e)),clipboard:C(r),generators:C(o)}}},Ar=function(f,e,s,d){f.on("BeforeGetContent",function(n){!0===n.selection&&Rr.cata(e.get(),y,function(e){var t;n.preventDefault(),(t=e,cn.table(t[0]).map(Nn).map(function(e){return[hn(e,yr.attributeSelector())]})).each(function(e){var t;n.content="text"===n.format?E(e,function(e){return e.dom().innerText}).join(""):(t=f,E(e,function(e){return t.selection.serializer.serialize(e.dom(),{})}).join(""))})},y)}),f.on("BeforeSetContent",function(l){!0===l.selection&&!0===l.paste&&R.from(f.dom.getParent(f.selection.getStart(),"th,td")).each(function(e){var c=xe.fromDom(e);cn.table(c).each(function(t){var e,n,r,o=A((e=l.content,(r=(n||m.document).createElement("div")).innerHTML=e,bt(xe.fromDom(r))),function(e){return"meta"!==oe(e)});if(1===o.length&&"table"===oe(o[0])){l.preventDefault();var i=xe.fromDom(f.getDoc()),u=Wn(i),a=kr.paste(c,o[0],u);s.pasteCells(t,a).each(function(e){f.selection.setRng(e),f.focus(),d.clear(t)})}})})})};function Pr(r,o){var e=function(e){var t=o(e);if(t<=0||null===t){var n=Ne(e,r);return parseFloat(n)||0}return t},i=function(o,e){return I(e,function(e,t){var n=Ne(o,t),r=n===undefined?0:parseInt(n,10);return isNaN(r)?e:e+r},0)};return{set:function(e,t){if(!w(t)&&!t.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+t);var n=e.dom();be(n)&&(n.style[r]=t+"px")},get:e,getOuter:e,aggregate:i,max:function(e,t,n){var r=i(e,n);return r<t?t-r:0}}}var Ir=Pr("height",function(e){var t=e.dom();return Ce(e)?t.getBoundingClientRect().height:t.offsetHeight}),Br=function(e){return Ir.get(e)},Wr=function(e){return Ir.getOuter(e)},Mr=Pr("width",function(e){return e.dom().offsetWidth}),_r=function(e){return Mr.get(e)},Lr=function(e){return Mr.getOuter(e)},Fr=it.detect(),jr=function(e,t,n){return r=Ne(e,t),o=n,i=parseFloat(r),isNaN(i)?o:i;var r,o,i},zr=function(e){return Fr.browser.isIE()||Fr.browser.isEdge()?(n=jr(t=e,"padding-top",0),r=jr(t,"padding-bottom",0),o=jr(t,"border-top-width",0),i=jr(t,"border-bottom-width",0),u=t.dom().getBoundingClientRect().height,"border-box"===Ne(t,"box-sizing")?u:u-n-r-(o+i)):jr(e,"height",Br(e));var t,n,r,o,i,u},Hr=/(\d+(\.\d+)?)(\w|%)*/,Ur=/(\d+(\.\d+)?)%/,qr=/(\d+(\.\d+)?)px|em/,Vr=function(e,t){De(e,"height",t+"px")},Gr=function(e,t,n,r){var o,i,u,a,c,l,f,s,d,m=parseInt(e,10);return s=l="%",d=(f=e).length-l.length,""!==s&&(f.length<s.length||f.substr(d,d+s.length)!==s)||"table"===oe(t)?m:(o=t,i=m,u=n,a=r,c=cn.table(o).map(function(e){var t=u(e);return Math.floor(i/100*t)}).getOr(i),a(o,c),c)},Yr=function(e){var t,n=ke(t=e,"height").getOrThunk(function(){return zr(t)+"px"});return n?Gr(n,e,Br,Vr):Br(e)},Xr=function(e,t){return ge(e,t)?parseInt(me(e,t),10):1},Kr=function(e){return ke(e,"width").fold(function(){return R.from(me(e,"width"))},function(e){return R.some(e)})},Jr=function(e,t){return e/t.pixelWidth()*100},$r={percentageBasedSizeRegex:C(Ur),pixelBasedSizeRegex:C(qr),setPixelWidth:function(e,t){De(e,"width",t+"px")},setPercentageWidth:function(e,t){De(e,"width",t+"%")},setHeight:Vr,getPixelWidth:function(t,n){return Kr(t).fold(function(){return _r(t)},function(e){return function(e,t,n){var r=qr.exec(t);if(null!==r)return parseInt(r[1],10);var o=Ur.exec(t);if(null!==o){var i=parseFloat(o[1]);return i/100*n.pixelWidth()}return _r(e)}(t,e,n)})},getPercentageWidth:function(t,n){return Kr(t).fold(function(){var e=_r(t);return Jr(e,n)},function(e){return function(e,t,n){var r=Ur.exec(t);if(null!==r)return parseFloat(r[1]);var o=_r(e);return Jr(o,n)}(t,e,n)})},getGenericWidth:function(e){return Kr(e).bind(function(e){var t=Hr.exec(e);return null!==t?R.some({width:C(parseFloat(t[1])),unit:C(t[3])}):R.none()})},setGenericWidth:function(e,t,n){De(e,"width",t+n)},getHeight:function(e){return n="rowspan",Yr(t=e)/Xr(t,n);var t,n},getRawWidth:Kr},Qr=function(n,r){$r.getGenericWidth(n).each(function(e){var t=e.width()/2;$r.setGenericWidth(n,t,e.unit()),$r.setGenericWidth(r,t,e.unit())})},Zr=function(n,r){return{left:C(n),top:C(r),translate:function(e,t){return Zr(n+e,r+t)}}},eo=Zr,to=function(e,t){return e!==undefined?e:t!==undefined?t:0},no=function(e){var t=e.dom().ownerDocument,n=t.body,r=t.defaultView,o=t.documentElement,i=to(r.pageYOffset,o.scrollTop),u=to(r.pageXOffset,o.scrollLeft),a=to(o.clientTop,n.clientTop),c=to(o.clientLeft,n.clientLeft);return ro(e).translate(u-c,i-a)},ro=function(e){var t,n=e.dom(),r=n.ownerDocument.body;return r===n?eo(r.offsetLeft,r.offsetTop):Ce(e)?(t=n.getBoundingClientRect(),eo(t.left,t.top)):eo(0,0)},oo=q("row","y"),io=q("col","x"),uo=function(e){return no(e).left()+Lr(e)},ao=function(e){return no(e).left()},co=function(e,t){return io(e,ao(t))},lo=function(e,t){return io(e,uo(t))},fo=function(e){return no(e).top()},so=function(e,t){return oo(e,fo(t))},mo=function(e,t){return oo(e,fo(t)+Wr(t))},go=function(n,t,r){if(0===r.length)return[];var e=E(r.slice(1),function(e,t){return e.map(function(e){return n(t,e)})}),o=r[r.length-1].map(function(e){return t(r.length-1,e)});return e.concat([o])},ho={height:{delta:o,positions:function(e){return go(so,mo,e)},edge:fo},rtl:{delta:function(e){return-e},edge:uo,positions:function(e){return go(lo,co,e)}},ltr:{delta:o,edge:ao,positions:function(e){return go(co,lo,e)}}},po={ltr:ho.ltr,rtl:ho.rtl};function vo(t){var n=function(e){return t(e).isRtl()?po.rtl:po.ltr};return{delta:function(e,t){return n(t).delta(e,t)},edge:function(e){return n(e).edge(e)},positions:function(e,t){return n(t).positions(e,t)}}}var bo=function(e){var t=ln(e);return mn.generate(t).grid()},wo=function(){return(wo=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},yo=function(e){for(var t=[],n=function(e){t.push(e)},r=0;r<e.length;r++)e[r].each(n);return t},xo=function(e,t){for(var n=0;n<e.length;n++){var r=t(e[n],n);if(r.isSome())return r}return R.none()},Co=function(e,t,n,r){n===r?he(e,t):se(e,t,n)},Ro=function(o,e){var i=[],u=[],t=function(e,t){0<e.length?function(e,t){var n=$t(o,t).getOrThunk(function(){var e=xe.fromTag(t,mt(o).dom());return Rt(o,e),e});Ot(n);var r=E(e,function(e){e.isNew()&&i.push(e.element());var t=e.element();return Ot(t),k(e.cells(),function(e){e.isNew()&&u.push(e.element()),Co(e.element(),"colspan",e.colspan(),1),Co(e.element(),"rowspan",e.rowspan(),1),Rt(t,e.element())}),t});Dt(n,r)}(e,t):$t(o,t).each(Nt)},n=[],r=[],a=[];return k(e,function(e){switch(e.section()){case"thead":n.push(e);break;case"tbody":r.push(e);break;case"tfoot":a.push(e)}}),t(n,"thead"),t(r,"tbody"),t(a,"tfoot"),{newRows:C(i),newCells:C(u)}},So=function(e){return E(e,function(e){var n=On(e.element());return k(e.cells(),function(e){var t=Nn(e.element());Co(t,"colspan",e.colspan(),1),Co(t,"rowspan",e.rowspan(),1),Rt(n,t)}),n})},To=function(e,t){var n=me(e,t);return n===undefined||""===n?[]:n.split(" ")},Do=function(e){return e.dom().classList!==undefined},Oo=function(e,t){return o=t,i=To(n=e,r="class").concat([o]),se(n,r,i.join(" ")),!0;var n,r,o,i},No=function(e,t){return o=t,0<(i=A(To(n=e,r="class"),function(e){return e!==o})).length?se(n,r,i.join(" ")):he(n,r),!1;var n,r,o,i},Eo=function(e,t){Do(e)?e.dom().classList.add(t):Oo(e,t)},ko=function(e){0===(Do(e)?e.dom().classList:To(e,"class")).length&&he(e,"class")},Ao=function(e,t){return Do(e)&&e.dom().classList.contains(t)},Po=function(e,t){for(var n=[],r=e;r<t;r++)n.push(r);return n},Io=function(t,n){if(n<0||n>=t.length-1)return R.none();var e=t[n].fold(function(){var e=F(t.slice(0,n));return xo(e,function(e,t){return e.map(function(e){return{value:e,delta:t+1}})})},function(e){return R.some({value:e,delta:0})}),r=t[n+1].fold(function(){var e=t.slice(n+1);return xo(e,function(e,t){return e.map(function(e){return{value:e,delta:t+1}})})},function(e){return R.some({value:e,delta:1})});return e.bind(function(n){return r.map(function(e){var t=e.delta+n.delta;return Math.abs(e.value-n.value)/t})})},Bo=function(e,t,n){var r=e();return B(r,t).orThunk(function(){return R.from(r[0]).orThunk(n)}).map(function(e){return e.element()})},Wo=function(n){var e=n.grid(),t=Po(0,e.columns()),r=Po(0,e.rows());return E(t,function(t){return Bo(function(){return _(r,function(e){return mn.getAt(n,e,t).filter(function(e){return e.column()===t}).fold(C([]),function(e){return[e]})})},function(e){return 1===e.colspan()},function(){return mn.getAt(n,0,t)})})},Mo=function(n){var e=n.grid(),t=Po(0,e.rows()),r=Po(0,e.columns());return E(t,function(t){return Bo(function(){return _(r,function(e){return mn.getAt(n,t,e).filter(function(e){return e.row()===t}).fold(C([]),function(e){return[e]})})},function(e){return 1===e.rowspan()},function(){return mn.getAt(n,t,0)})})},_o=function(e){var t=e.replace(/\./g,"-");return{resolve:function(e){return t+"-"+e}}},Lo={resolve:_o("ephox-snooker").resolve},Fo=function(e,t,n,r,o){var i=xe.fromTag("div");return Oe(i,{position:"absolute",left:t-r/2+"px",top:n+"px",height:o+"px",width:r+"px"}),de(i,{"data-column":e,role:"presentation"}),i},jo=function(e,t,n,r,o){var i=xe.fromTag("div");return Oe(i,{position:"absolute",left:t+"px",top:n-o/2+"px",height:o+"px",width:r+"px"}),de(i,{"data-row":e,role:"presentation"}),i},zo=Lo.resolve("resizer-bar"),Ho=Lo.resolve("resizer-rows"),Uo=Lo.resolve("resizer-cols"),qo=function(e){var t=qt(e.parent(),"."+zo);k(t,Nt)},Vo=function(n,e,r){var o=n.origin();k(e,function(e,t){e.each(function(e){var t=r(o,e);Eo(t,zo),Rt(n.parent(),t)})})},Go=function(e,t,n,r,o,i){var u,a,c,l,f=no(t),s=0<n.length?o.positions(n,t):[];u=e,a=s,c=f,l=Lr(t),Vo(u,a,function(e,t){var n=jo(t.row(),c.left()-e.left(),t.y()-e.top(),l,7);return Eo(n,Ho),n});var d,m,g,h,p=0<r.length?i.positions(r,t):[];d=e,m=p,g=f,h=Wr(t),Vo(d,m,function(e,t){var n=Fo(t.col(),t.x()-e.left(),g.top()-e.top(),7,h);return Eo(n,Uo),n})},Yo=function(e,t){var n=qt(e.parent(),"."+zo);k(n,t)},Xo=function(e,t,n,r){qo(e);var o=ln(t),i=mn.generate(o),u=Mo(i),a=Wo(i);Go(e,t,u,a,n,r)},Ko=function(e){Yo(e,function(e){De(e,"display","none")})},Jo=function(e){Yo(e,function(e){De(e,"display","block")})},$o=qo,Qo=function(e){return Ao(e,Ho)},Zo=function(e){return Ao(e,Uo)},ei=function(e,t){return Lt(t,e.section())},ti=function(e,t){return e.cells()[t]},ni={addCell:function(e,t,n){var r=e.cells(),o=r.slice(0,t),i=r.slice(t),u=o.concat([n]).concat(i);return ei(e,u)},setCells:ei,mutateCell:function(e,t,n){e.cells()[t]=n},getCell:ti,getCellElement:function(e,t){return ti(e,t).element()},mapCells:function(e,t){var n=e.cells(),r=E(n,t);return Lt(r,e.section())},cellLength:function(e){return e.cells().length}},ri=function(e,t){if(0===e.length)return 0;var n=e[0];return W(e,function(e){return!t(n.element(),e.element())}).fold(function(){return e.length},function(e){return e})},oi=function(e,t,n,r){var o,i,u,a,c=(o=e,i=t,o[i]).cells().slice(n),l=ri(c,r),f=(u=e,a=n,E(u,function(e){return ni.getCell(e,a)})).slice(t),s=ri(f,r);return{colspan:C(l),rowspan:C(s)}},ii=function(o,i){var u=E(o,function(e,t){return E(e.cells(),function(e,t){return!1})});return E(o,function(e,r){var t=_(e.cells(),function(e,t){if(!1===u[r][t]){var n=oi(o,r,t,i);return function(e,t,n,r){for(var o=e;o<e+n;o++)for(var i=t;i<t+r;i++)u[o][i]=!0}(r,t,n.rowspan(),n.colspan()),[It(e.element(),n.rowspan(),n.colspan(),e.isNew())]}return[]});return Ft(t,e.section())})},ui=function(e,t,n){for(var r=[],o=0;o<e.grid().rows();o++){for(var i=[],u=0;u<e.grid().columns();u++){var a=mn.getAt(e,o,u).map(function(e){return Mt(e.element(),n)}).getOrThunk(function(){return Mt(t.gap(),!0)});i.push(a)}var c=Lt(i,e.all()[o].section());r.push(c)}return r},ai=function(e,r){return E(e,function(e){var t,n=(t=e.details(),xo(t,function(e){return gt(e.element()).map(function(e){var t=gt(e).isNone();return Mt(e,t)})}).getOrThunk(function(){return Mt(r.row(),!0)}));return _t(n.element(),e.details(),e.section(),n.isNew())})},ci=function(e,t){var n=ii(e,ft);return ai(n,t)},li=function(e,t){var n=M(E(e.all(),function(e){return e.cells()}));return B(n,function(e){return ft(t,e.element())})},fi=function(a,c,l,f,s){return function(n,r,e,o,i){var t=ln(r),u=mn.generate(t);return c(u,e).map(function(e){var t=ui(u,o,!1),n=a(t,e,ft,s(o)),r=ci(n.grid(),o);return{grid:C(r),cursor:n.cursor}}).fold(function(){return R.none()},function(e){var t=Ro(r,e.grid());return l(r,e.grid(),i),f(r),Xo(n,r,ho.height,i),R.some({cursor:e.cursor,newRows:t.newRows,newCells:t.newCells})})}},si=function(t,e){return cn.cell(e.element()).bind(function(e){return li(t,e)})},di=function(t,e){var n=E(e.selection(),function(e){return cn.cell(e).bind(function(e){return li(t,e)})}),r=yo(n);return 0<r.length?R.some({cells:r,generators:e.generators,clipboard:e.clipboard}):R.none()},mi=function(t,e){var n=E(e.selection(),function(e){return cn.cell(e).bind(function(e){return li(t,e)})}),r=yo(n);return 0<r.length?R.some(r):R.none()},gi=function(n){return{is:function(e){return n===e},isValue:u,isError:f,getOr:C(n),getOrThunk:C(n),getOrDie:C(n),or:function(e){return gi(n)},orThunk:function(e){return gi(n)},fold:function(e,t){return t(n)},map:function(e){return gi(e(n))},mapError:function(e){return gi(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return R.some(n)}}},hi=function(n){return{is:f,isValue:f,isError:u,getOr:o,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return hi(n)},mapError:function(e){return hi(e(n))},each:y,bind:function(e){return hi(n)},exists:f,forall:u,toOption:R.none}},pi={value:gi,error:hi,fromOption:function(e,t){return e.fold(function(){return hi(t)},gi)}},vi=function(e,t){return E(e,function(){return Mt(t.cell(),!0)})},bi=function(t,e,n){return t.concat(function(e,t){for(var n=[],r=0;r<e;r++)n.push(t(r));return n}(e,function(e){return ni.setCells(t[t.length-1],vi(t[t.length-1].cells(),n))}))},wi=function(e,t,n){return E(e,function(e){return ni.setCells(e,e.cells().concat(vi(Po(0,t),n)))})},yi=function(e,t,n){if(e.row()>=t.length||e.column()>ni.cellLength(t[0]))return pi.error("invalid start address out of table bounds, row: "+e.row()+", column: "+e.column());var r=t.slice(e.row()),o=r[0].cells().slice(e.column()),i=ni.cellLength(n[0]),u=n.length;return pi.value({rowDelta:C(r.length-u),colDelta:C(o.length-i)})},xi=function(e,t){var n=ni.cellLength(e[0]),r=ni.cellLength(t[0]);return{rowDelta:C(0),colDelta:C(n-r)}},Ci=function(e,t,n){var r=t.colDelta()<0?wi:o;return(t.rowDelta()<0?bi:o)(r(e,Math.abs(t.colDelta()),n),Math.abs(t.rowDelta()),n)},Ri=function(e,t,n,r){if(0===e.length)return e;for(var o=t.startRow();o<=t.finishRow();o++)for(var i=t.startCol();i<=t.finishCol();i++)ni.mutateCell(e[o],i,Mt(r(),!1));return e},Si=function(e,t,n,r){for(var o=!0,i=0;i<e.length;i++)for(var u=0;u<ni.cellLength(e[0]);u++){var a=n(ni.getCellElement(e[i],u),t);!0===a&&!1===o?ni.mutateCell(e[i],u,Mt(r(),!0)):!0===a&&(o=!1)}return e},Ti=function(i,n,u,a){if(0<n&&n<i.length){var e=i[n-1].cells(),t=(r=u,I(e,function(e,t){return N(e,function(e){return r(e.element(),t.element())})?e:e.concat([t])},[]));k(t,function(r){for(var o=R.none(),e=function(n){for(var e=function(t){var e=i[n].cells()[t];u(e.element(),r.element())&&(o.isNone()&&(o=R.some(a())),o.each(function(e){ni.mutateCell(i[n],t,Mt(e,!0))}))},t=0;t<ni.cellLength(i[0]);t++)e(t)},t=n;t<i.length;t++)e(t)})}var r;return i},Di=function(n,r,o,i,u){return yi(n,r,o).map(function(e){var t=Ci(r,e,i);return function(e,t,n,r,o){for(var i,u,a,c,l,f=e.row(),s=e.column(),d=f+n.length,m=s+ni.cellLength(n[0]),g=f;g<d;g++)for(var h=s;h<m;h++){i=t,u=g,a=h,l=c=void 0,c=b(o,ni.getCell(i[u],a).element()),l=i[u],1<i.length&&1<ni.cellLength(l)&&(0<a&&c(ni.getCellElement(l,a-1))||a<l.cells().length-1&&c(ni.getCellElement(l,a+1))||0<u&&c(ni.getCellElement(i[u-1],a))||u<i.length-1&&c(ni.getCellElement(i[u+1],a)))&&Si(t,ni.getCellElement(t[g],h),o,r.cell);var p=ni.getCellElement(n[g-f],h-s),v=r.replace(p);ni.mutateCell(t[g],h,Mt(v,!0))}return t}(n,t,o,i,u)})},Oi=function(e,t,n,r,o){Ti(t,e,o,r.cell);var i=xi(n,t),u=Ci(n,i,r),a=xi(t,u),c=Ci(t,a,r);return c.slice(0,e).concat(u).concat(c.slice(e,c.length))},Ni=function(n,r,e,o,i){var t=n.slice(0,r),u=n.slice(r),a=ni.mapCells(n[e],function(e,t){return 0<r&&r<n.length&&o(ni.getCellElement(n[r-1],t),ni.getCellElement(n[r],t))?ni.getCell(n[r],t):Mt(i(e.element(),o),!0)});return t.concat([a]).concat(u)},Ei=function(e,n,r,o,i){return E(e,function(e){var t=0<n&&n<ni.cellLength(e)&&o(ni.getCellElement(e,n-1),ni.getCellElement(e,n))?ni.getCell(e,n):Mt(i(ni.getCellElement(e,r),o),!0);return ni.addCell(e,n,t)})},ki=function(e,r,o,i,u){var a=o+1;return E(e,function(e,t){var n=t===r?Mt(u(ni.getCellElement(e,o),i),!0):ni.getCell(e,o);return ni.addCell(e,a,n)})},Ai=function(e,t,n,r,o){var i=t+1,u=e.slice(0,i),a=e.slice(i),c=ni.mapCells(e[t],function(e,t){return t===n?Mt(o(e.element(),r),!0):e});return u.concat([c]).concat(a)},Pi=function(e,t,n){return e.slice(0,t).concat(e.slice(n+1))},Ii=function(e,n,r){var t=E(e,function(e){var t=e.cells().slice(0,n).concat(e.cells().slice(r+1));return Lt(t,e.section())});return A(t,function(e){return 0<e.cells().length})},Bi=function(e,n,r,o){return E(e,function(e){return ni.mapCells(e,function(e){return t=e,N(n,function(e){return r(t.element(),e.element())})?Mt(o(e.element(),r),!0):e;var t})})},Wi=function(e,t,n,r){return ni.getCellElement(e[t],n)!==undefined&&0<t&&r(ni.getCellElement(e[t-1],n),ni.getCellElement(e[t],n))},Mi=function(e,t,n){return 0<t&&n(ni.getCellElement(e,t-1),ni.getCellElement(e,t))},_i=function(n,r,o,e){var t=_(n,function(e,t){return Wi(n,t,r,o)||Mi(e,r,o)?[]:[ni.getCell(e,r)]});return Bi(n,t,o,e)},Li=function(n,r,o,e){var i=n[r],t=_(i.cells(),function(e,t){return Wi(n,r,t,o)||Mi(i,t,o)?[]:[e]});return Bi(n,t,o,e)},Fi=xr([{none:[]},{only:["index"]},{left:["index","next"]},{middle:["prev","index","next"]},{right:["prev","index"]}]),ji=wo({},Fi),zi=function(e,t,i,u){var n,r,a=e.slice(0),o=(r=t,0===(n=e).length?ji.none():1===n.length?ji.only(0):0===r?ji.left(0,1):r===n.length-1?ji.right(r-1,r):0<r&&r<n.length-1?ji.middle(r-1,r,r+1):ji.none()),c=function(e){return E(e,C(0))},l=C(c(a)),f=function(e,t){if(0<=i){var n=Math.max(u.minCellWidth(),a[t]-i);return c(a.slice(0,e)).concat([i,n-a[t]]).concat(c(a.slice(t+1)))}var r=Math.max(u.minCellWidth(),a[e]+i),o=a[e]-r;return c(a.slice(0,e)).concat([r-a[e],o]).concat(c(a.slice(t+1)))},s=f;return o.fold(l,function(e){return u.singleColumnWidth(a[e],i)},s,function(e,t,n){return f(t,n)},function(e,t){if(0<=i)return c(a.slice(0,t)).concat([i]);var n=Math.max(u.minCellWidth(),a[t]+i);return c(a.slice(0,t)).concat([n-a[t]])})},Hi=function(e,t){return ge(e,t)&&1<parseInt(me(e,t),10)},Ui={hasColspan:function(e){return Hi(e,"colspan")},hasRowspan:function(e){return Hi(e,"rowspan")},minWidth:C(10),minHeight:C(10),getInt:function(e,t){return parseInt(Ne(e,t),10)}},qi=function(e,t,n){return ke(e,t).fold(function(){return n(e)+"px"},function(e){return e})},Vi=function(e,t){return qi(e,"width",function(e){return $r.getPixelWidth(e,t)})},Gi=function(e){return qi(e,"height",$r.getHeight)},Yi=function(e,t,n,r,o){var i=Wo(e),u=E(i,function(e){return e.map(t.edge)});return E(i,function(e,t){return e.filter(g(Ui.hasColspan)).fold(function(){var e=Io(u,t);return r(e)},function(e){return n(e,o)})})},Xi=function(e){return e.map(function(e){return e+"px"}).getOr("")},Ki=function(e,t,n,r){var o=Mo(e),i=E(o,function(e){return e.map(t.edge)});return E(o,function(e,t){return e.filter(g(Ui.hasRowspan)).fold(function(){var e=Io(i,t);return r(e)},function(e){return n(e)})})},Ji={getRawWidths:function(e,t,n){return Yi(e,t,Vi,Xi,n)},getPixelWidths:function(e,t,n){return Yi(e,t,$r.getPixelWidth,function(e){return e.getOrThunk(n.minCellWidth)},n)},getPercentageWidths:function(e,t,n){return Yi(e,t,$r.getPercentageWidth,function(e){return e.fold(function(){return n.minCellWidth()},function(e){return e/n.pixelWidth()*100})},n)},getPixelHeights:function(e,t){return Ki(e,t,$r.getHeight,function(e){return e.getOrThunk(Ui.minHeight)})},getRawHeights:function(e,t){return Ki(e,t,Gi,Xi)}},$i=function(e,t,n){for(var r=0,o=e;o<t;o++)r+=n[o]!==undefined?n[o]:0;return r},Qi=function(e,n){var t=mn.justCells(e);return E(t,function(e){var t=$i(e.column(),e.column()+e.colspan(),n);return{element:e.element,width:C(t),colspan:e.colspan}})},Zi=function(e,n){var t=mn.justCells(e);return E(t,function(e){var t=$i(e.row(),e.row()+e.rowspan(),n);return{element:e.element,height:C(t),rowspan:e.rowspan}})},eu=function(e,n){return E(e.all(),function(e,t){return{element:e.element,height:C(n[t])}})},tu=function(e){var t=o;return{width:C(e),pixelWidth:C(e),getWidths:Ji.getPixelWidths,getCellDelta:t,singleColumnWidth:function(e,t){return[Math.max(Ui.minWidth(),e+t)-e]},minCellWidth:Ui.minWidth,setElementWidth:$r.setPixelWidth,setTableWidth:function(e,t,n){var r=P(t,function(e,t){return e+t},0);$r.setPixelWidth(e,r)}}},nu=function(e,t){var n,r,o,i,u=$r.percentageBasedSizeRegex().exec(t);if(null!==u)return n=u[1],r=e,o=parseFloat(n),i=_r(r),{width:C(o),pixelWidth:C(i),getWidths:Ji.getPercentageWidths,getCellDelta:function(e){return e/i*100},singleColumnWidth:function(e,t){return[100-e]},minCellWidth:function(){return Ui.minWidth()/i*100},setElementWidth:$r.setPercentageWidth,setTableWidth:function(e,t,n){var r=n/100*o;$r.setPercentageWidth(e,o+r)}};var a=$r.pixelBasedSizeRegex().exec(t);if(null!==a){var c=parseInt(a[1],10);return tu(c)}var l=_r(e);return tu(l)},ru=function(t){return $r.getRawWidth(t).fold(function(){var e=_r(t);return tu(e)},function(e){return nu(t,e)})},ou=function(e){return mn.generate(e)},iu=function(e){var t=ln(e);return ou(t)},uu=function(e,t,n,r){var o=ru(e),i=o.getCellDelta(t),u=iu(e),a=o.getWidths(u,r,o),c=zi(a,n,i,o),l=E(c,function(e,t){return e+a[t]}),f=Qi(u,l);k(f,function(e){o.setElementWidth(e.element(),e.width())}),n===u.grid().columns()-1&&o.setTableWidth(e,l,i)},au=function(e,n,r,t){var o=iu(e),i=Ji.getPixelHeights(o,t),u=E(i,function(e,t){return r===t?Math.max(n+e,Ui.minHeight()):e}),a=Zi(o,u),c=eu(o,u);k(c,function(e){$r.setHeight(e.element(),e.height())}),k(a,function(e){$r.setHeight(e.element(),e.height())});var l=P(u,function(e,t){return e+t},0);$r.setHeight(e,l)},cu=function(e,t,n){var r=ru(e),o=ou(t),i=r.getWidths(o,n,r),u=Qi(o,i);k(u,function(e){r.setElementWidth(e.element(),e.width())}),0<u.length&&r.setTableWidth(e,i,r.getCellDelta(0))},lu=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return lu(n())}}},fu=function(r,o,i){if(0===o.length)throw new Error("You must specify at least one required field.");return X("required",o),K(o),function(t){var n=j(t);L(o,function(e){return O(n,e)})||G(o,n),r(o,n);var e=A(o,function(e){return!i.validate(t[e],e)});return 0<e.length&&function(e,t){throw new Error("All values need to be of type: "+t+". Keys ("+V(e).join(", ")+") were not.")}(e,i.label),t}},su=function(t,e){var n=A(e,function(e){return!O(t,e)});0<n.length&&Y(n)},du=function(e){return fu(su,e,{validate:v,label:"function"})},mu=du(["cell","row","replace","gap"]),gu=function(e){var t=ge(e,"colspan")?parseInt(me(e,"colspan"),10):1,n=ge(e,"rowspan")?parseInt(me(e,"rowspan"),10):1;return{element:C(e),colspan:C(t),rowspan:C(n)}},hu=function(r,o){void 0===o&&(o=gu),mu(r);var n=lu(R.none()),i=function(e){var t,n=o(e);return t=n,r.cell(t)},u=function(e){var t=i(e);return n.get().isNone()&&n.set(R.some(t)),a=R.some({item:e,replacement:t}),t},a=R.none();return{getOrInit:function(t,n){return a.fold(function(){return u(t)},function(e){return n(t,e.item)?e.replacement:u(t)})},cursor:n.get}},pu=function(a,c){return function(r){var o=lu(R.none());mu(r);var i=[],u=function(e){var t={scope:a},n=r.replace(e,c,t);return i.push({item:e,sub:n}),o.get().isNone()&&o.set(R.some(n)),n};return{replaceOrInit:function(t,n){return(r=t,o=n,B(i,function(e){return o(e.item,r)})).fold(function(){return u(t)},function(e){return n(t,e.item)?e.sub:u(t)});var r,o},cursor:o.get}}},vu=function(n){mu(n);var e=lu(R.none());return{combine:function(t){return e.get().isNone()&&e.set(R.some(t)),function(){var e=n.cell({element:C(t),colspan:C(1),rowspan:C(1)});return Ae(e,"width"),Ae(t,"width"),e}},cursor:e.get}},bu=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","table","thead","tfoot","tbody","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],wu=function(e,t){var n=e.property().name(t);return O(bu,n)},yu=function(e,t){return O(["br","img","hr","input"],e.property().name(t))},xu=wu,Cu=function(e,t){var n=e.property().name(t);return O(["ol","ul"],n)},Ru=yu,Su=$n(),Tu=function(e){return xu(Su,e)},Du=function(e){return Cu(Su,e)},Ou=function(e){return Ru(Su,e)},Nu=function(e){var t,i=function(e){return"br"===oe(e)},n=function(o){return Sn(o).bind(function(n){var r=vt(n).map(function(e){return!!Tu(e)||!!Ou(e)&&"img"!==oe(e)}).getOr(!1);return gt(n).map(function(e){return!0===r||"li"===oe(t=e)||Kt(t,Du).isSome()||i(n)||Tu(e)&&!ft(o,e)?[]:[xe.fromTag("br")];var t})}).getOr([])},r=0===(t=_(e,function(e){var t=bt(e);return L(t,function(e){return i(e)||le(e)&&0===vn(e).trim().length})?[]:t.concat(n(e))})).length?[xe.fromTag("br")]:t;Ot(e[0]),Dt(e[0],r)},Eu=function(e){0===cn.cells(e).length&&Nt(e)},ku=q("grid","cursor"),Au=function(e,t,n){return Pu(e,t,n).orThunk(function(){return Pu(e,0,0)})},Pu=function(e,t,n){return R.from(e[t]).bind(function(e){return R.from(e.cells()[n]).bind(function(e){return R.from(e.element())})})},Iu=function(e,t,n){return ku(e,Pu(e,t,n))},Bu=function(e){return I(e,function(e,t){return N(e,function(e){return e.row()===t.row()})?e:e.concat([t])},[]).sort(function(e,t){return e.row()-t.row()})},Wu=function(e){return I(e,function(e,t){return N(e,function(e){return e.column()===t.column()})?e:e.concat([t])},[]).sort(function(e,t){return e.column()-t.column()})},Mu=function(e,t,n){var r=fn(e,n),o=mn.generate(r);return ui(o,t,!0)},_u=cu,Lu={insertRowBefore:fi(function(e,t,n,r){var o=t.row(),i=t.row(),u=Ni(e,i,o,n,r.getOrInit);return Iu(u,i,t.column())},si,y,y,hu),insertRowsBefore:fi(function(e,t,n,r){var o=t[0].row(),i=t[0].row(),u=Bu(t),a=I(u,function(e,t){return Ni(e,i,o,n,r.getOrInit)},e);return Iu(a,i,t[0].column())},mi,y,y,hu),insertRowAfter:fi(function(e,t,n,r){var o=t.row(),i=t.row()+t.rowspan(),u=Ni(e,i,o,n,r.getOrInit);return Iu(u,i,t.column())},si,y,y,hu),insertRowsAfter:fi(function(e,t,n,r){var o=Bu(t),i=o[o.length-1].row(),u=o[o.length-1].row()+o[o.length-1].rowspan(),a=I(o,function(e,t){return Ni(e,u,i,n,r.getOrInit)},e);return Iu(a,u,t[0].column())},mi,y,y,hu),insertColumnBefore:fi(function(e,t,n,r){var o=t.column(),i=t.column(),u=Ei(e,i,o,n,r.getOrInit);return Iu(u,t.row(),i)},si,_u,y,hu),insertColumnsBefore:fi(function(e,t,n,r){var o=Wu(t),i=o[0].column(),u=o[0].column(),a=I(o,function(e,t){return Ei(e,u,i,n,r.getOrInit)},e);return Iu(a,t[0].row(),u)},mi,_u,y,hu),insertColumnAfter:fi(function(e,t,n,r){var o=t.column(),i=t.column()+t.colspan(),u=Ei(e,i,o,n,r.getOrInit);return Iu(u,t.row(),i)},si,_u,y,hu),insertColumnsAfter:fi(function(e,t,n,r){var o=t[t.length-1].column(),i=t[t.length-1].column()+t[t.length-1].colspan(),u=Wu(t),a=I(u,function(e,t){return Ei(e,i,o,n,r.getOrInit)},e);return Iu(a,t[0].row(),i)},mi,_u,y,hu),splitCellIntoColumns:fi(function(e,t,n,r){var o=ki(e,t.row(),t.column(),n,r.getOrInit);return Iu(o,t.row(),t.column())},si,_u,y,hu),splitCellIntoRows:fi(function(e,t,n,r){var o=Ai(e,t.row(),t.column(),n,r.getOrInit);return Iu(o,t.row(),t.column())},si,y,y,hu),eraseColumns:fi(function(e,t,n,r){var o=Wu(t),i=Ii(e,o[0].column(),o[o.length-1].column()),u=Au(i,t[0].row(),t[0].column());return ku(i,u)},mi,_u,Eu,hu),eraseRows:fi(function(e,t,n,r){var o=Bu(t),i=Pi(e,o[0].row(),o[o.length-1].row()),u=Au(i,t[0].row(),t[0].column());return ku(i,u)},mi,y,Eu,hu),makeColumnHeader:fi(function(e,t,n,r){var o=_i(e,t.column(),n,r.replaceOrInit);return Iu(o,t.row(),t.column())},si,y,y,pu("row","th")),unmakeColumnHeader:fi(function(e,t,n,r){var o=_i(e,t.column(),n,r.replaceOrInit);return Iu(o,t.row(),t.column())},si,y,y,pu(null,"td")),makeRowHeader:fi(function(e,t,n,r){var o=Li(e,t.row(),n,r.replaceOrInit);return Iu(o,t.row(),t.column())},si,y,y,pu("col","th")),unmakeRowHeader:fi(function(e,t,n,r){var o=Li(e,t.row(),n,r.replaceOrInit);return Iu(o,t.row(),t.column())},si,y,y,pu(null,"td")),mergeCells:fi(function(e,t,n,r){var o=t.cells();Nu(o);var i=Ri(e,t.bounds(),n,C(o[0]));return ku(i,R.from(o[0]))},function(e,t){return t.mergable()},y,y,vu),unmergeCells:fi(function(e,t,n,r){var o=P(t,function(e,t){return Si(e,t,n,r.combine(t))},e);return ku(o,R.from(t[0]))},function(e,t){return t.unmergable()},_u,y,vu),pasteCells:fi(function(e,n,t,r){var o,i,u,a,c=(o=n.clipboard(),i=n.generators(),u=ln(o),a=mn.generate(u),ui(a,i,!0)),l=At(n.row(),n.column());return Di(l,e,c,n.generators(),t).fold(function(){return ku(e,R.some(n.element()))},function(e){var t=Au(e,n.row(),n.column());return ku(e,t)})},function(t,n){return cn.cell(n.element()).bind(function(e){return li(t,e).map(function(e){return wo(wo({},e),{generators:n.generators,clipboard:n.clipboard})})})},_u,y,hu),pasteRowsBefore:fi(function(e,t,n,r){var o=e[t.cells[0].row()],i=t.cells[0].row(),u=Mu(t.clipboard(),t.generators(),o),a=Oi(i,e,u,t.generators(),n),c=Au(a,t.cells[0].row(),t.cells[0].column());return ku(a,c)},di,y,y,hu),pasteRowsAfter:fi(function(e,t,n,r){var o=e[t.cells[0].row()],i=t.cells[t.cells.length-1].row()+t.cells[t.cells.length-1].rowspan(),u=Mu(t.clipboard(),t.generators(),o),a=Oi(i,e,u,t.generators(),n),c=Au(a,t.cells[0].row(),t.cells[0].column());return ku(a,c)},di,y,y,hu)},Fu=function(e){return xe.fromDom(e.getBody())},ju=function(e){return e.getBoundingClientRect().width},zu=function(e){return e.getBoundingClientRect().height},Hu=function(t){return function(e){return ft(e,Fu(t))}},Uu=function(e){return/^[0-9]+$/.test(e)&&(e+="px"),e},qu=function(e){var t=qt(e,"td[data-mce-style],th[data-mce-style]");he(e,"data-mce-style"),k(t,function(e){he(e,"data-mce-style")})},Vu={isRtl:C(!1)},Gu={isRtl:C(!0)},Yu={directionAt:function(e){return"rtl"==("rtl"===Ne(e,"direction")?"rtl":"ltr")?Gu:Vu}},Xu=["tableprops","tabledelete","|","tableinsertrowbefore","tableinsertrowafter","tabledeleterow","|","tableinsertcolbefore","tableinsertcolafter","tabledeletecol"],Ku={"border-collapse":"collapse",width:"100%"},Ju={border:"1"},$u=function(e){return e.getParam("table_cell_advtab",!0,"boolean")},Qu=function(e){return e.getParam("table_row_advtab",!0,"boolean")},Zu=function(e){return e.getParam("table_advtab",!0,"boolean")},ea=function(e){return e.getParam("table_style_by_css",!1,"boolean")},ta=function(e){return e.getParam("table_cell_class_list",[],"array")},na=function(e){return e.getParam("table_row_class_list",[],"array")},ra=function(e){return e.getParam("table_class_list",[],"array")},oa=function(e){return!1===e.getParam("table_responsive_width")},ia=function(e,t){return e.fire("newrow",{node:t})},ua=function(e,t){return e.fire("newcell",{node:t})},aa=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},ca=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},la=function(f,e){var t,n=function(e){return"table"===oe(Fu(e))},s=(t=f.getParam("table_clone_elements"),d(t)?R.some(t.split(/[ ,]/)):Array.isArray(t)?R.some(t):R.none()),r=function(u,a,c,l){return function(e,t){qu(e);var n=l(),r=xe.fromDom(f.getDoc()),o=vo(Yu.directionAt),i=Bn(c,r,s);return a(e)?u(n,e,t,i,o).bind(function(e){return k(e.newRows(),function(e){ia(f,e.dom())}),k(e.newCells(),function(e){ua(f,e.dom())}),e.cursor().map(function(e){var t=f.dom.createRng();return t.setStart(e.dom(),0),t.setEnd(e.dom(),0),t})}):R.none()}};return{deleteRow:r(Lu.eraseRows,function(e){var t=bo(e);return!1===n(f)||1<t.rows()},y,e),deleteColumn:r(Lu.eraseColumns,function(e){var t=bo(e);return!1===n(f)||1<t.columns()},y,e),insertRowsBefore:r(Lu.insertRowsBefore,u,y,e),insertRowsAfter:r(Lu.insertRowsAfter,u,y,e),insertColumnsBefore:r(Lu.insertColumnsBefore,u,Qr,e),insertColumnsAfter:r(Lu.insertColumnsAfter,u,Qr,e),mergeCells:r(Lu.mergeCells,u,y,e),unmergeCells:r(Lu.unmergeCells,u,y,e),pasteRowsBefore:r(Lu.pasteRowsBefore,u,y,e),pasteRowsAfter:r(Lu.pasteRowsAfter,u,y,e),pasteCells:r(Lu.pasteCells,u,y,e)}},fa=function(e,t,r){var n=ln(e),o=mn.generate(n);return mi(o,t).map(function(e){var t=ui(o,r,!1).slice(e[0].row(),e[e.length-1].row()+e[e.length-1].rowspan()),n=ci(t,r);return So(n)})},sa=tinymce.util.Tools.resolve("tinymce.util.Tools"),da=function(e,t,n){n&&e.formatter.apply("align"+n,{},t)},ma=function(e,t,n){n&&e.formatter.apply("valign"+n,{},t)},ga=function(t,n){sa.each("left center right".split(" "),function(e){t.formatter.remove("align"+e,{},n)})},ha=function(t,n){sa.each("top middle bottom".split(" "),function(e){t.formatter.remove("valign"+e,{},n)})},pa=function(o,e,i){var t;return t=function(e,t){for(var n=0;n<t.length;n++){var r=o.getStyle(t[n],i);if(void 0===e&&(e=r),e!==r)return""}return e}(t,o.select("td,th",e))},va=function(e,t){var n=e.dom,r=t.control.rootControl,o=r.toJSON(),i=n.parseStyle(o.style);i["border-style"]=o.borderStyle,i["border-color"]=o.borderColor,i["background-color"]=o.backgroundColor,i.width=o.width?Uu(o.width):"",i.height=o.height?Uu(o.height):"",r.find("#style").value(n.serializeStyle(n.parseStyle(n.serializeStyle(i))))},ba=function(e,t){var n=e.dom,r=t.control.rootControl,o=r.toJSON(),i=n.parseStyle(o.style);r.find("#borderStyle").value(i["border-style"]||""),r.find("#borderColor").value(i["border-color"]||""),r.find("#backgroundColor").value(i["background-color"]||""),r.find("#width").value(i.width||""),r.find("#height").value(i.height||"")},wa={createStyleForm:function(n){var e=function(){var e=n.getParam("color_picker_callback");if(e)return function(t){return e.call(n,function(e){t.control.value(e).fire("change")},t.control.value())}};return{title:"Advanced",type:"form",defaults:{onchange:b(va,n)},items:[{label:"Style",name:"style",type:"textbox",onchange:b(ba,n)},{type:"form",padding:0,formItemDefaults:{layout:"grid",alignH:["start","right"]},defaults:{size:7},items:[{label:"Border style",type:"listbox",name:"borderStyle",width:90,onselect:b(va,n),values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]},{label:"Border color",type:"colorbox",name:"borderColor",onaction:e()},{label:"Background color",type:"colorbox",name:"backgroundColor",onaction:e()}]}]}},buildListItems:function(e,r,t){var o=function(e,n){return n=n||[],sa.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=o(e.menu):(t.value=e.value,r&&r(t)),n.push(t)}),n};return o(e,t||[])},updateStyleField:va,extractAdvancedStyles:function(e,t){var n=e.parseStyle(e.getAttrib(t,"style")),r={};return n["border-style"]&&(r.borderStyle=n["border-style"]),n["border-color"]&&(r.borderColor=n["border-color"]),n["background-color"]&&(r.backgroundColor=n["background-color"]),r.style=e.serializeStyle(n),r},updateAdvancedFields:ba,syncAdvancedStyleFields:function(e,t){t.control.rootControl.find("#style")[0].getEl().isEqualNode(m.document.activeElement)?ba(e,t):va(e,t)}},ya=function(r,o,e){var i,u=r.dom;function a(e,t,n){(1===o.length||n)&&u.setAttrib(e,t,n)}function c(e,t,n){(1===o.length||n)&&u.setStyle(e,t,n)}$u(r)&&wa.syncAdvancedStyleFields(r,e),i=e.control.rootControl.toJSON(),r.undoManager.transact(function(){sa.each(o,function(e){var t,n;a(e,"scope",i.scope),1===o.length?a(e,"style",i.style):(t=e,n=i.style,delete t.dataset.mceStyle,t.style.cssText+=";"+n),a(e,"class",i["class"]),c(e,"width",Uu(i.width)),c(e,"height",Uu(i.height)),i.type&&e.nodeName.toLowerCase()!==i.type&&(e=u.rename(e,i.type)),1===o.length&&(ga(r,e),ha(r,e)),i.align&&da(r,e,i.align),i.valign&&ma(r,e,i.valign)}),r.focus()})},xa=function(t){var e,n,r,o=[];if(o=t.dom.select("td[data-mce-selected],th[data-mce-selected]"),e=t.dom.getParent(t.selection.getStart(),"td,th"),!o.length&&e&&o.push(e),e=e||o[0]){var i,u,a,c;1<o.length?n={width:"",height:"",scope:"","class":"",align:"",valign:"",style:"",type:e.nodeName.toLowerCase()}:(u=e,a=(i=t).dom,c={width:a.getStyle(u,"width")||a.getAttrib(u,"width"),height:a.getStyle(u,"height")||a.getAttrib(u,"height"),scope:a.getAttrib(u,"scope"),"class":a.getAttrib(u,"class"),type:u.nodeName.toLowerCase(),style:"",align:"",valign:""},sa.each("left center right".split(" "),function(e){i.formatter.matchNode(u,"align"+e)&&(c.align=e)}),sa.each("top middle bottom".split(" "),function(e){i.formatter.matchNode(u,"valign"+e)&&(c.valign=e)}),$u(i)&&sa.extend(c,wa.extractAdvancedStyles(a,u)),n=c),0<ta(t).length&&(r={name:"class",type:"listbox",label:"Class",values:wa.buildListItems(ta(t),function(e){e.value&&(e.textStyle=function(){return t.formatter.getCssText({block:"td",classes:[e.value]})})})});var l={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",layout:"grid",columns:2,labelGapCalc:!1,padding:0,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width",onchange:b(wa.updateStyleField,t)},{label:"Height",name:"height",onchange:b(wa.updateStyleField,t)},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"H Align",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"V Align",name:"valign",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}]},r]};$u(t)?t.windowManager.open({title:"Cell properties",bodyType:"tabpanel",data:n,body:[{title:"General",type:"form",items:l},wa.createStyleForm(t)],onsubmit:b(ya,t,o)}):t.windowManager.open({title:"Cell properties",data:n,body:l,onsubmit:b(ya,t,o)})}};function Ca(f,s,d,e){var m=f.dom;function g(e,t,n){(1===s.length||n)&&m.setAttrib(e,t,n)}Qu(f)&&wa.syncAdvancedStyleFields(f,e);var h=e.control.rootControl.toJSON();f.undoManager.transact(function(){sa.each(s,function(e){var t,n,r,o,i,u,a,c,l;g(e,"scope",h.scope),g(e,"style",h.style),g(e,"class",h["class"]),t=e,n="height",r=Uu(h.height),(1===s.length||r)&&m.setStyle(t,n,r),h.type!==e.parentNode.nodeName.toLowerCase()&&(o=f.dom,i=e,u=h.type,a=o.getParent(i,"table"),c=i.parentNode,(l=o.select(u,a)[0])||(l=o.create(u),a.firstChild?"CAPTION"===a.firstChild.nodeName?o.insertAfter(l,a.firstChild):a.insertBefore(l,a.firstChild):a.appendChild(l)),l.appendChild(i),c.hasChildNodes()||o.remove(c)),h.align!==d.align&&(ga(f,e),da(f,e,h.align))}),f.focus()})}var Ra=function(t){var e,n,r,o,i,u,a,c,l,f,s=t.dom,d=[];e=s.getParent(t.selection.getStart(),"table"),n=s.getParent(t.selection.getStart(),"td,th"),sa.each(e.rows,function(t){sa.each(t.cells,function(e){if(s.getAttrib(e,"data-mce-selected")||e===n)return d.push(t),!1})}),(r=d[0])&&(1<d.length?i={height:"",scope:"",style:"","class":"",align:"",type:r.parentNode.nodeName.toLowerCase()}:(c=r,l=(a=t).dom,f={height:l.getStyle(c,"height")||l.getAttrib(c,"height"),scope:l.getAttrib(c,"scope"),"class":l.getAttrib(c,"class"),align:"",style:"",type:c.parentNode.nodeName.toLowerCase()},sa.each("left center right".split(" "),function(e){a.formatter.matchNode(c,"align"+e)&&(f.align=e)}),Qu(a)&&sa.extend(f,wa.extractAdvancedStyles(l,c)),i=f),0<na(t).length&&(o={name:"class",type:"listbox",label:"Class",values:wa.buildListItems(na(t),function(e){e.value&&(e.textStyle=function(){return t.formatter.getCssText({block:"tr",classes:[e.value]})})})}),u={type:"form",columns:2,padding:0,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"Header",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"},o]},Qu(t)?t.windowManager.open({title:"Row properties",data:i,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},wa.createStyleForm(t)],onsubmit:b(Ca,t,d,i)}):t.windowManager.open({title:"Row properties",data:i,body:u,onsubmit:b(Ca,t,d,i)}))},Sa=tinymce.util.Tools.resolve("tinymce.Env"),Ta={styles:{"border-collapse":"collapse",width:"100%"},attributes:{border:"1"},percentages:!0},Da=function(e,t,n,r,o){void 0===o&&(o=Ta);var i=xe.fromTag("table");Oe(i,o.styles),de(i,o.attributes);var u=xe.fromTag("tbody");Rt(i,u);for(var a=[],c=0;c<e;c++){for(var l=xe.fromTag("tr"),f=0;f<t;f++){var s=c<n||f<r?xe.fromTag("th"):xe.fromTag("td");f<r&&se(s,"scope","row"),c<n&&se(s,"scope","col"),Rt(s,xe.fromTag("br")),o.percentages&&De(s,"width",100/t+"%"),Rt(l,s)}a.push(l)}return Dt(u,a),i},Oa=function(e,t){e.selection.select(t.dom(),!0),e.selection.collapse(!0)},Na=function(r,e,t){var n,o,i=r.getParam("table_default_styles",Ku,"object"),u={styles:i,attributes:(o=r,o.getParam("table_default_attributes",Ju,"object")),percentages:(n=i.width,d(n)&&-1!==n.indexOf("%")&&!oa(r))},a=Da(t,e,0,0,u);se(a,"data-mce-id","__mce");var c,l,f,s=(c=a,l=xe.fromTag("div"),f=xe.fromDom(c.dom().cloneNode(!0)),Rt(l,f),l.dom().innerHTML);return r.insertContent(s),Qt(Fu(r),'table[data-mce-id="__mce"]').map(function(e){var t,n;return oa(r)&&De(e,"width",Ne(e,"width")),he(e,"data-mce-id"),t=r,k(qt(e,"tr"),function(e){ia(t,e.dom()),k(qt(e,"th,td"),function(e){ua(t,e.dom())})}),n=r,Qt(e,"td,th").each(b(Oa,n)),e.dom()}).getOr(null)};function Ea(e,t,n,r){if("TD"===t.tagName||"TH"===t.tagName)e.setStyle(t,n,r);else if(t.children)for(var o=0;o<t.children.length;o++)Ea(e,t.children[o],n,r)}var ka,Aa=function(e,t,n){var r,o,i=e.dom;Zu(e)&&wa.syncAdvancedStyleFields(e,n),!1===(o=n.control.rootControl.toJSON())["class"]&&delete o["class"],e.undoManager.transact(function(){t||(t=Na(e,o.cols||1,o.rows||1)),function(e,t,n){var r,o=e.dom,i={},u={};if(i["class"]=n["class"],u.height=Uu(n.height),o.getAttrib(t,"width")&&!ea(e)?i.width=(r=n.width)?r.replace(/px$/,""):"":u.width=Uu(n.width),ea(e)?(u["border-width"]=Uu(n.border),u["border-spacing"]=Uu(n.cellspacing),sa.extend(i,{"data-mce-border-color":n.borderColor,"data-mce-cell-padding":n.cellpadding,"data-mce-border":n.border})):sa.extend(i,{border:n.border,cellpadding:n.cellpadding,cellspacing:n.cellspacing}),ea(e)&&t.children)for(var a=0;a<t.children.length;a++)Ea(o,t.children[a],{"border-width":Uu(n.border),"border-color":n.borderColor,padding:Uu(n.cellpadding)});n.style?sa.extend(u,o.parseStyle(n.style)):u=sa.extend({},o.parseStyle(o.getAttrib(t,"style")),u),i.style=o.serializeStyle(u),o.setAttribs(t,i)}(e,t,o),(r=i.select("caption",t)[0])&&!o.caption&&i.remove(r),!r&&o.caption&&((r=i.create("caption")).innerHTML=Sa.ie?"\xa0":'<br data-mce-bogus="1"/>',t.insertBefore(r,t.firstChild)),ga(e,t),o.align&&da(e,t,o.align),e.focus(),e.addVisual()})},Pa=function(t,e){var n,r,o,i,u,a,c,l,f,s,d=t.dom,m={};!0===e?(n=d.getParent(t.selection.getStart(),"table"))&&(c=n,l=(a=t).dom,f={width:l.getStyle(c,"width")||l.getAttrib(c,"width"),height:l.getStyle(c,"height")||l.getAttrib(c,"height"),cellspacing:l.getStyle(c,"border-spacing")||l.getAttrib(c,"cellspacing"),cellpadding:l.getAttrib(c,"data-mce-cell-padding")||l.getAttrib(c,"cellpadding")||pa(a.dom,c,"padding"),border:l.getAttrib(c,"data-mce-border")||l.getAttrib(c,"border")||pa(a.dom,c,"border"),borderColor:l.getAttrib(c,"data-mce-border-color"),caption:!!l.select("caption",c)[0],"class":l.getAttrib(c,"class")},sa.each("left center right".split(" "),function(e){a.formatter.matchNode(c,"align"+e)&&(f.align=e)}),Zu(a)&&sa.extend(f,wa.extractAdvancedStyles(l,c)),m=f):(r={label:"Cols",name:"cols"},o={label:"Rows",name:"rows"}),0<ra(t).length&&(m["class"]&&(m["class"]=m["class"].replace(/\s*mce\-item\-table\s*/g,"")),i={name:"class",type:"listbox",label:"Class",values:wa.buildListItems(ra(t),function(e){e.value&&(e.textStyle=function(){return t.formatter.getCssText({block:"table",classes:[e.value]})})})}),u={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",labelGapCalc:!1,padding:0,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:(s=t,s.getParam("table_appearance_options",!0,"boolean")?[r,o,{label:"Width",name:"width",onchange:b(wa.updateStyleField,t)},{label:"Height",name:"height",onchange:b(wa.updateStyleField,t)},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"}]:[r,o,{label:"Width",name:"width",onchange:b(wa.updateStyleField,t)},{label:"Height",name:"height",onchange:b(wa.updateStyleField,t)}])},{label:"Alignment",name:"align",type:"listbox",text:"None",values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},i]},Zu(t)?t.windowManager.open({title:"Table properties",data:m,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},wa.createStyleForm(t)],onsubmit:b(Aa,t,n)}):t.windowManager.open({title:"Table properties",data:m,body:u,onsubmit:b(Aa,t,n)})},Ia=sa.each,Ba=function(a,t,c,l,n){var r=Hu(a),e=function(e){return function(){return R.from(a.dom.getParent(a.selection.getStart(),e)).map(xe.fromDom)}},o=e("caption"),f=e("th,td"),s=function(e){return cn.table(e,r)},d=function(e){return{width:ju(e.dom()),height:ju(e.dom())}},i=function(n){f().each(function(t){s(t).each(function(i){var e=kr.forMenu(l,i,t),u=d(i);n(i,e).each(function(e){var t,n,r,o;t=a,n=u,o=d(r=i),n.width===o.width&&n.height===o.height||(aa(t,r.dom(),n.width,n.height),ca(t,r.dom(),o.width,o.height)),a.selection.setRng(e),a.focus(),c.clear(i),qu(i)})})})},u=function(e){return f().bind(function(o){return s(o).bind(function(e){var t=xe.fromDom(a.getDoc()),n=kr.forMenu(l,e,o),r=Bn(y,t,R.none());return fa(e,n,r)})})},m=function(u){n.get().each(function(e){var i=E(e,function(e){return Nn(e)});f().each(function(o){s(o).each(function(t){var e=xe.fromDom(a.getDoc()),n=Wn(e),r=kr.pasteRows(l,t,o,i,n);u(t,r).each(function(e){a.selection.setRng(e),a.focus(),c.clear(t)})})})})};Ia({mceTableSplitCells:function(){i(t.unmergeCells)},mceTableMergeCells:function(){i(t.mergeCells)},mceTableInsertRowBefore:function(){i(t.insertRowsBefore)},mceTableInsertRowAfter:function(){i(t.insertRowsAfter)},mceTableInsertColBefore:function(){i(t.insertColumnsBefore)},mceTableInsertColAfter:function(){i(t.insertColumnsAfter)},mceTableDeleteCol:function(){i(t.deleteColumn)},mceTableDeleteRow:function(){i(t.deleteRow)},mceTableCutRow:function(e){n.set(u()),i(t.deleteRow)},mceTableCopyRow:function(e){n.set(u())},mceTablePasteRowBefore:function(e){m(t.pasteRowsBefore)},mceTablePasteRowAfter:function(e){m(t.pasteRowsAfter)},mceTableDelete:function(){f().orThunk(o).each(function(e){cn.table(e,r).filter(g(r)).each(function(e){var t=xe.fromText("");xt(e,t),Nt(e);var n=a.dom.createRng();n.setStart(t.dom(),0),n.setEnd(t.dom(),0),a.selection.setRng(n)})})}},function(e,t){a.addCommand(t,e)}),Ia({mceInsertTable:b(Pa,a),mceTableProps:b(Pa,a,!0),mceTableRowProps:b(Ra,a),mceTableCellProps:b(xa,a)},function(n,e){a.addCommand(e,function(e,t){n(t)})})},Wa=function(e){var t=R.from(e.dom().documentElement).map(xe.fromDom).getOr(e);return{parent:C(t),view:C(e),origin:C(eo(0,0))}},Ma=function(e,t){return{parent:C(t),view:C(e),origin:C(eo(0,0))}},_a=function(e){var r=q.apply(null,e),o=[];return{bind:function(e){if(e===undefined)throw new Error("Event bind error: undefined handler");o.push(e)},unbind:function(t){o=A(o,function(e){return e!==t})},trigger:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=r.apply(null,e);k(o,function(e){e(n)})}}},La={create:function(e){return{registry:H(e,function(e){return{bind:e.bind,unbind:e.unbind}}),trigger:H(e,function(e){return e.trigger})}}},Fa=function(m,g){return function(e){if(m(e)){var t,n,r,o,i,u,a,c=xe.fromDom(e.target),l=function(){e.stopPropagation()},f=function(){e.preventDefault()},s=x(f,l),d=(t=c,n=e.clientX,r=e.clientY,o=l,i=f,u=s,a=e,{target:C(t),x:C(n),y:C(r),stop:o,prevent:i,kill:u,raw:C(a)});g(d)}}},ja=function(e,t,n,r){return o=e,i=t,u=!1,a=Fa(n,r),o.dom().addEventListener(i,a,u),{unbind:b(za,o,i,a,u)};var o,i,u,a},za=function(e,t,n,r){e.dom().removeEventListener(t,n,r)},Ha=C(!0),Ua=function(e,t,n){return ja(e,t,Ha,n)},qa=Object.prototype.hasOwnProperty,Va=(ka=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o=e[r];for(var i in o)qa.call(o,i)&&(n[i]=ka(n[i],o[i]))}return n}),Ga={resolve:_o("ephox-dragster").resolve},Ya=du(["compare","extract","mutate","sink"]),Xa=du(["element","start","stop","destroy"]),Ka=du(["forceDrop","drop","move","delayDrop"]),Ja=Ya({compare:function(e,t){return eo(t.left()-e.left(),t.top()-e.top())},extract:function(e){return R.some(eo(e.x(),e.y()))},sink:function(e,t){var n,r,o,i=(n=t,r=Va({layerClass:Ga.resolve("blocker")},n),o=xe.fromTag("div"),se(o,"role","presentation"),Oe(o,{position:"fixed",left:"0px",top:"0px",width:"100%",height:"100%"}),Eo(o,Ga.resolve("blocker")),Eo(o,r.layerClass),{element:function(){return o},destroy:function(){Nt(o)}}),u=Ua(i.element(),"mousedown",e.forceDrop),a=Ua(i.element(),"mouseup",e.drop),c=Ua(i.element(),"mousemove",e.move),l=Ua(i.element(),"mouseout",e.delayDrop);return Xa({element:i.element,start:function(e){Rt(e,i.element())},stop:function(){Nt(i.element())},destroy:function(){i.destroy(),a.unbind(),c.unbind(),l.unbind(),u.unbind()}})},mutate:function(e,t){e.mutate(t.left(),t.top())}});function $a(){var i=R.none(),u=La.create({move:_a(["info"])});return{onEvent:function(e,o){o.extract(e).each(function(e){var t,n,r;(t=o,n=e,r=i.map(function(e){return t.compare(e,n)}),i=R.some(n),r).each(function(e){u.trigger.move(e)})})},reset:function(){i=R.none()},events:u.registry}}function Qa(){var e={onEvent:y,reset:y},t=$a(),n=e;return{on:function(){n.reset(),n=t},off:function(){n.reset(),n=e},isOn:function(){return n===t},onEvent:function(e,t){n.onEvent(e,t)},events:t.events}}var Za=function(t,n,e){var r,o,i,u=!1,a=La.create({start:_a([]),stop:_a([])}),c=Qa(),l=function(){d.stop(),c.isOn()&&(c.off(),a.trigger.stop())},f=(r=l,o=200,i=null,{cancel:function(){null!==i&&(m.clearTimeout(i),i=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==i&&m.clearTimeout(i),i=m.setTimeout(function(){r.apply(null,e),i=null},o)}});c.events.move.bind(function(e){n.mutate(t,e.info())});var s=function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];u&&n.apply(null,e)}},d=n.sink(Ka({forceDrop:l,drop:s(l),move:s(function(e){f.cancel(),c.onEvent(e,n)}),delayDrop:s(f.throttle)}),e);return{element:d.element,go:function(e){d.start(e),c.on(),a.trigger.start()},on:function(){u=!0},off:function(){u=!1},destroy:function(){d.destroy()},events:a.registry}},ec=function(e,t){void 0===t&&(t={});var n=t.mode!==undefined?t.mode:Ja;return Za(e,n,t)},tc=function(){var n,r=La.create({drag:_a(["xDelta","yDelta","target"])}),o=R.none(),e={mutate:function(e,t){n.trigger.drag(e,t)},events:(n=La.create({drag:_a(["xDelta","yDelta"])})).registry};return e.events.drag.bind(function(t){o.each(function(e){r.trigger.drag(t.xDelta(),t.yDelta(),e)})}),{assign:function(e){o=R.some(e)},get:function(){return o},mutate:e.mutate,events:r.registry}},nc=function(e){return"true"===me(e,"contenteditable")},rc=Lo.resolve("resizer-bar-dragging"),oc=function(o,t,i){var n=tc(),r=ec(n,{}),u=R.none(),e=function(e,t){return R.from(me(e,t))};n.events.drag.bind(function(n){e(n.target(),"data-row").each(function(e){var t=Ui.getInt(n.target(),"top");De(n.target(),"top",t+n.yDelta()+"px")}),e(n.target(),"data-column").each(function(e){var t=Ui.getInt(n.target(),"left");De(n.target(),"left",t+n.xDelta()+"px")})});var a=function(e,t){return Ui.getInt(e,t)-parseInt(me(e,"data-initial-"+t),10)};r.events.stop.bind(function(){n.get().each(function(r){u.each(function(n){e(r,"data-row").each(function(e){var t=a(r,"top");he(r,"data-initial-top"),m.trigger.adjustHeight(n,t,parseInt(e,10))}),e(r,"data-column").each(function(e){var t=a(r,"left");he(r,"data-initial-left"),m.trigger.adjustWidth(n,t,parseInt(e,10))}),Xo(o,n,i,t)})})});var c=function(e,t){m.trigger.startAdjust(),n.assign(e),se(e,"data-initial-"+t,parseInt(Ne(e,t),10)),Eo(e,rc),De(e,"opacity","0.2"),r.go(o.parent())},l=Ua(o.parent(),"mousedown",function(e){Qo(e.target())&&c(e.target(),"top"),Zo(e.target())&&c(e.target(),"left")}),f=function(e){return ft(e,o.view())},s=function(e){return Zt(e,"table",f).filter(function(e){return(t=e,n=f,Zt(t,"[contenteditable]",n)).exists(nc);var t,n})},d=Ua(o.view(),"mouseover",function(e){s(e.target()).fold(function(){Ce(e.target())&&$o(o)},function(e){u=R.some(e),Xo(o,e,i,t)})}),m=La.create({adjustHeight:_a(["table","delta","row"]),adjustWidth:_a(["table","delta","column"]),startAdjust:_a([])});return{destroy:function(){l.unbind(),d.unbind(),r.destroy(),$o(o)},refresh:function(e){Xo(o,e,i,t)},on:r.on,off:r.off,hideBars:b(Ko,o),showBars:b(Jo,o),events:m.registry}},ic=function(e,n){var r=ho.height,t=oc(e,n,r),o=La.create({beforeResize:_a(["table"]),afterResize:_a(["table"]),startDrag:_a([])});return t.events.adjustHeight.bind(function(e){o.trigger.beforeResize(e.table());var t=r.delta(e.delta(),e.table());au(e.table(),t,e.row(),r),o.trigger.afterResize(e.table())}),t.events.startAdjust.bind(function(e){o.trigger.startDrag()}),t.events.adjustWidth.bind(function(e){o.trigger.beforeResize(e.table());var t=n.delta(e.delta(),e.table());uu(e.table(),t,e.column(),n),o.trigger.afterResize(e.table())}),{on:t.on,off:t.off,hideBars:t.hideBars,showBars:t.showBars,destroy:t.destroy,events:o.registry}},uc=function(e,t){return e.inline?Ma(Fu(e),(n=xe.fromTag("div"),Oe(n,{position:"static",height:"0",width:"0",padding:"0",margin:"0",border:"0"}),Rt(Re(),n),n)):Wa(xe.fromDom(e.getDoc()));var n},ac=function(e,t){e.inline&&Nt(t.parent())},cc=function(u){var a,c,o=R.none(),i=R.none(),l=R.none(),f=/(\d+(\.\d+)?)%/,s=function(e){return"TABLE"===e.nodeName};return u.on("init",function(){var e,t=vo(Yu.directionAt),n=uc(u);if(l=R.some(n),("table"===(e=u.getParam("object_resizing",!0))||e)&&u.getParam("table_resize_bars",!0,"boolean")){var r=ic(n,t);r.on(),r.events.startDrag.bind(function(e){o=R.some(u.selection.getRng())}),r.events.beforeResize.bind(function(e){var t=e.table().dom();aa(u,t,ju(t),zu(t))}),r.events.afterResize.bind(function(e){var t=e.table(),n=t.dom();qu(t),o.each(function(e){u.selection.setRng(e),u.focus()}),ca(u,n,ju(n),zu(n)),u.undoManager.add()}),i=R.some(r)}}),u.on("ObjectResizeStart",function(e){var t,n=e.target;s(n)&&(a=e.width,t=n,c=u.dom.getStyle(t,"width")||u.dom.getAttrib(t,"width"))}),u.on("ObjectResized",function(e){var t=e.target;if(s(t)){var n=t;if(f.test(c)){var r=parseFloat(f.exec(c)[1]),o=e.width*r/a;u.dom.setStyle(n,"width",o+"%")}else{var i=[];sa.each(n.rows,function(e){sa.each(e.cells,function(e){var t=u.dom.getStyle(e,"width",!0);i.push({cell:e,width:t})})}),sa.each(i,function(e){u.dom.setStyle(e.cell,"width",e.width),u.dom.setAttrib(e.cell,"width",null)})}}}),{lazyResize:function(){return i},lazyWire:function(){return l.getOr(Wa(xe.fromDom(u.getBody())))},destroy:function(){i.each(function(e){e.destroy()}),l.each(function(e){ac(u,e)})}}},lc=xr([{none:["current"]},{first:["current"]},{middle:["current","target"]},{last:["current"]}]),fc=wo(wo({},lc),{none:function(e){return void 0===e&&(e=undefined),lc.none(e)}}),sc=function(n,e){return cn.table(n,e).bind(function(e){var t=cn.cells(e);return W(t,function(e){return ft(n,e)}).map(function(e){return{index:C(e),all:C(t)}})})},dc=function(t,e){return sc(t,e).fold(function(){return fc.none(t)},function(e){return e.index()+1<e.all().length?fc.middle(t,e.all()[e.index()+1]):fc.last(t)})},mc=function(t,e){return sc(t,e).fold(function(){return fc.none()},function(e){return 0<=e.index()-1?fc.middle(t,e.all()[e.index()-1]):fc.first(t)})},gc={create:q("start","soffset","finish","foffset")},hc=xr([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),pc={before:hc.before,on:hc.on,after:hc.after,cata:function(e,t,n,r){return e.fold(t,n,r)},getStart:function(e){return e.fold(o,o,o)}},vc=xr([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),bc={domRange:vc.domRange,relative:vc.relative,exact:vc.exact,exactFromRange:function(e){return vc.exact(e.start(),e.soffset(),e.finish(),e.foffset())},getWin:function(e){var t,n=e.match({domRange:function(e){return xe.fromDom(e.startContainer)},relative:function(e,t){return pc.getStart(e)},exact:function(e,t,n,r){return e}});return t=n,xe.fromDom(t.dom().ownerDocument.defaultView)},range:gc.create},wc=function(e,t){e.selectNodeContents(t.dom())},yc=function(e,t,n){var r,o,i=e.document.createRange();return r=i,t.fold(function(e){r.setStartBefore(e.dom())},function(e,t){r.setStart(e.dom(),t)},function(e){r.setStartAfter(e.dom())}),o=i,n.fold(function(e){o.setEndBefore(e.dom())},function(e,t){o.setEnd(e.dom(),t)},function(e){o.setEndAfter(e.dom())}),i},xc=function(e,t,n,r,o){var i=e.document.createRange();return i.setStart(t.dom(),n),i.setEnd(r.dom(),o),i},Cc=function(e){return{left:C(e.left),top:C(e.top),right:C(e.right),bottom:C(e.bottom),width:C(e.width),height:C(e.height)}},Rc=xr([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),Sc=function(e,t,n){return t(xe.fromDom(n.startContainer),n.startOffset,xe.fromDom(n.endContainer),n.endOffset)},Tc=function(e,t){var o,n,r,i=(o=e,t.match({domRange:function(e){return{ltr:C(e),rtl:R.none}},relative:function(e,t){return{ltr:we(function(){return yc(o,e,t)}),rtl:we(function(){return R.some(yc(o,t,e))})}},exact:function(e,t,n,r){return{ltr:we(function(){return xc(o,e,t,n,r)}),rtl:we(function(){return R.some(xc(o,n,r,e,t))})}}}));return(r=(n=i).ltr()).collapsed?n.rtl().filter(function(e){return!1===e.collapsed}).map(function(e){return Rc.rtl(xe.fromDom(e.endContainer),e.endOffset,xe.fromDom(e.startContainer),e.startOffset)}).getOrThunk(function(){return Sc(0,Rc.ltr,r)}):Sc(0,Rc.ltr,r)},Dc=function(i,e){return Tc(i,e).match({ltr:function(e,t,n,r){var o=i.document.createRange();return o.setStart(e.dom(),t),o.setEnd(n.dom(),r),o},rtl:function(e,t,n,r){var o=i.document.createRange();return o.setStart(n.dom(),r),o.setEnd(e.dom(),t),o}})},Oc=function(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom},Nc=function(n,r,e,t,o){var i=function(e){var t=n.dom().createRange();return t.setStart(r.dom(),e),t.collapse(!0),t},u=vn(r).length,a=function(e,t,n,r,o){if(0===o)return 0;if(t===r)return o-1;for(var i=r,u=1;u<o;u++){var a=e(u),c=Math.abs(t-a.left);if(n<=a.bottom){if(n<a.top||i<c)return u-1;i=c}}return 0}(function(e){return i(e).getBoundingClientRect()},e,t,o.right,u);return i(a)},Ec=function(e,t,n,r){return le(t)?function(t,n,r,o){var e=t.dom().createRange();e.selectNode(n.dom());var i=e.getClientRects();return xo(i,function(e){return Oc(e,r,o)?R.some(e):R.none()}).map(function(e){return Nc(t,n,r,o,e)})}(e,t,n,r):(i=t,u=n,a=r,c=(o=e).dom().createRange(),l=bt(i),xo(l,function(e){return c.selectNode(e.dom()),Oc(c.getBoundingClientRect(),u,a)?Ec(o,e,u,a):R.none()}));var o,i,u,a,c,l},kc=function(e,t){return t-e.left<e.right-t},Ac=function(e,t,n){var r=e.dom().createRange();return r.selectNode(t.dom()),r.collapse(n),r},Pc=function(t,e,n){var r=t.dom().createRange();r.selectNode(e.dom());var o=r.getBoundingClientRect(),i=kc(o,n);return(!0===i?Rn:Sn)(e).map(function(e){return Ac(t,e,i)})},Ic=function(e,t,n){var r=t.dom().getBoundingClientRect(),o=kc(r,n);return R.some(Ac(e,t,o))},Bc=function(e,t,n,r){var o=e.dom().createRange();o.selectNode(t.dom());var i=o.getBoundingClientRect();return function(e,t,n,r){var o=e.dom().createRange();o.selectNode(t.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,n)),a=Math.max(i.top,Math.min(i.bottom,r));return Ec(e,t,u,a)}(e,t,Math.max(i.left,Math.min(i.right,n)),Math.max(i.top,Math.min(i.bottom,r)))},Wc=document.caretPositionFromPoint?function(n,e,t){return R.from(n.dom().caretPositionFromPoint(e,t)).bind(function(e){if(null===e.offsetNode)return R.none();var t=n.dom().createRange();return t.setStart(e.offsetNode,e.offset),t.collapse(),R.some(t)})}:document.caretRangeFromPoint?function(e,t,n){return R.from(e.dom().caretRangeFromPoint(t,n))}:function(o,i,t){return xe.fromPoint(o,i,t).bind(function(r){var e=function(){return e=o,n=i,(0===bt(t=r).length?Ic:Pc)(e,t,n);var e,t,n};return 0===bt(r).length?e():Bc(o,r,i,t).orThunk(e)})},Mc=function(e,t){var n=oe(e);return"input"===n?pc.after(e):O(["br","img"],n)?0===t?pc.before(e):pc.after(e):pc.on(e,t)},_c=function(e,t){var n=e.fold(pc.before,Mc,pc.after),r=t.fold(pc.before,Mc,pc.after);return bc.relative(n,r)},Lc=function(e,t,n,r){var o=Mc(e,t),i=Mc(n,r);return bc.relative(o,i)},Fc=function(e,t,n,r){var o,i,u,a,c,l=(i=t,u=n,a=r,(c=mt(o=e).dom().createRange()).setStart(o.dom(),i),c.setEnd(u.dom(),a),c),f=ft(e,n)&&t===r;return l.collapsed&&!f},jc=function(e,t){R.from(e.getSelection()).each(function(e){e.removeAllRanges(),e.addRange(t)})},zc=function(e,t,n,r,o){var i=xc(e,t,n,r,o);jc(e,i)},Hc=function(s,e){return Tc(s,e).match({ltr:function(e,t,n,r){zc(s,e,t,n,r)},rtl:function(e,t,n,r){var o,i,u,a,c,l=s.getSelection();if(l.setBaseAndExtent)l.setBaseAndExtent(e.dom(),t,n.dom(),r);else if(l.extend)try{i=e,u=t,a=n,c=r,(o=l).collapse(i.dom(),u),o.extend(a.dom(),c)}catch(f){zc(s,n,r,e,t)}else zc(s,n,r,e,t)}})},Uc=function(e){var o=bc.getWin(e).dom(),t=function(e,t,n,r){return xc(o,e,t,n,r)},n=e.match({domRange:function(e){var t=xe.fromDom(e.startContainer),n=xe.fromDom(e.endContainer);return Lc(t,e.startOffset,n,e.endOffset)},relative:_c,exact:Lc});return Tc(o,n).match({ltr:t,rtl:t})},qc=function(e){var t=xe.fromDom(e.anchorNode),n=xe.fromDom(e.focusNode);return Fc(t,e.anchorOffset,n,e.focusOffset)?R.some(gc.create(t,e.anchorOffset,n,e.focusOffset)):function(e){if(0<e.rangeCount){var t=e.getRangeAt(0),n=e.getRangeAt(e.rangeCount-1);return R.some(gc.create(xe.fromDom(t.startContainer),t.startOffset,xe.fromDom(n.endContainer),n.endOffset))}return R.none()}(e)},Vc=function(e,t){var n,r,o=(n=t,r=e.document.createRange(),wc(r,n),r);jc(e,o)},Gc=function(e){return(t=e,R.from(t.getSelection()).filter(function(e){return 0<e.rangeCount}).bind(qc)).map(function(e){return bc.exact(e.start(),e.soffset(),e.finish(),e.foffset())});var t},Yc=function(e,t){var n,r,o,i=Dc(e,t);return r=(n=i).getClientRects(),0<(o=0<r.length?r[0]:n.getBoundingClientRect()).width||0<o.height?R.some(o).map(Cc):R.none()},Xc=function(e,t,n){return r=e,o=t,i=n,u=xe.fromDom(r.document),Wc(u,o,i).map(function(e){return gc.create(xe.fromDom(e.startContainer),e.startOffset,xe.fromDom(e.endContainer),e.endOffset)});var r,o,i,u},Kc=tinymce.util.Tools.resolve("tinymce.util.VK"),Jc=function(e,t,n,r){return el(e,t,dc(n),r)},$c=function(e,t,n,r){return el(e,t,mc(n),r)},Qc=function(e,t){var n=bc.exact(t,0,t,0);return Uc(n)},Zc=function(e,t){var n,r=qt(t,"tr");return(n=r,0===n.length?R.none():R.some(n[n.length-1])).bind(function(e){return Qt(e,"td,th").map(function(e){return Qc(0,e)})})},el=function(r,e,t,o,n){return t.fold(R.none,R.none,function(e,t){return Rn(t).map(function(e){return Qc(0,e)})},function(n){return cn.table(n,e).bind(function(e){var t=kr.noMenu(n);return r.undoManager.transact(function(){o.insertRowsAfter(e,t)}),Zc(0,e)})})},tl=["table","li","dl"],nl=function(t,n,r,o){if(t.keyCode===Kc.TAB){var i=Fu(n),u=function(e){var t=oe(e);return ft(e,i)||O(tl,t)},e=n.selection.getRng();if(e.collapsed){var a=xe.fromDom(e.startContainer);cn.cell(a,u).each(function(e){t.preventDefault(),(t.shiftKey?$c:Jc)(n,u,e,r,o).each(function(e){n.selection.setRng(e)})})}}},rl={create:q("selection","kill")},ol=function(e,t,n,r){return{start:C(pc.on(e,t)),finish:C(pc.on(n,r))}},il={convertToRange:function(e,t){var n=Dc(e,t);return gc.create(xe.fromDom(n.startContainer),n.startOffset,xe.fromDom(n.endContainer),n.endOffset)},makeSitus:ol},ul=function(n,e,r,t,o){return ft(r,t)?R.none():sr(r,t,e).bind(function(e){var t=e.boxes().getOr([]);return 0<t.length?(o(n,t,e.start(),e.finish()),R.some(rl.create(R.some(il.makeSitus(r,0,r,yn(r))),!0))):R.none()})},al={sync:function(n,r,e,t,o,i,u){return ft(e,o)&&t===i?R.none():Zt(e,"td,th",r).bind(function(t){return Zt(o,"td,th",r).bind(function(e){return ul(n,r,t,e,u)})})},detect:ul,update:function(e,t,n,r,o){return mr(r,e,t,o.firstSelectedSelector(),o.lastSelectedSelector()).map(function(e){return o.clear(n),o.selectRange(n,e.boxes(),e.start(),e.finish()),e.boxes()})}},cl=q("item","mode"),ll=function(e,t,n,r){return void 0===r&&(r=fl),e.property().parent(t).map(function(e){return cl(e,r)})},fl=function(e,t,n,r){return void 0===r&&(r=sl),n.sibling(e,t).map(function(e){return cl(e,r)})},sl=function(e,t,n,r){void 0===r&&(r=sl);var o=e.property().children(t);return n.first(o).map(function(e){return cl(e,r)})},dl=[{current:ll,next:fl,fallback:R.none()},{current:fl,next:sl,fallback:R.some(ll)},{current:sl,next:sl,fallback:R.some(fl)}],ml=function(t,n,r,o,e){return void 0===e&&(e=dl),B(e,function(e){return e.current===r}).bind(function(e){return e.current(t,n,o,e.next).orThunk(function(){return e.fallback.bind(function(e){return ml(t,n,e,o)})})})},gl=function(){return{sibling:function(e,t){return e.query().prevSibling(t)},first:function(e){return 0<e.length?R.some(e[e.length-1]):R.none()}}},hl=function(){return{sibling:function(e,t){return e.query().nextSibling(t)},first:function(e){return 0<e.length?R.some(e[0]):R.none()}}},pl=function(t,e,n,r,o,i){return ml(t,e,r,o).bind(function(e){return i(e.item())?R.none():n(e.item())?R.some(e.item()):pl(t,e.item(),n,e.mode(),o,i)})},vl=function(t){return function(e){return 0===t.property().children(e).length}},bl=function(e,t,n,r){return pl(e,t,n,fl,gl(),r)},wl=function(e,t,n,r){return pl(e,t,n,fl,hl(),r)},yl=$n(),xl=function(e,t){return r=t,bl(n=yl,e,vl(n),r);var n,r},Cl=function(e,t){return r=t,wl(n=yl,e,vl(n),r);var n,r},Rl=q("element","offset"),Sl=(q("element","deltaOffset"),q("element","start","finish"),q("begin","end"),q("element","text"),xr([{none:["message"]},{success:[]},{failedUp:["cell"]},{failedDown:["cell"]}])),Tl=function(e){return Zt(e,"tr")},Dl=wo(wo({},Sl),{verify:function(a,e,t,n,r,c,o){return Zt(n,"td,th",o).bind(function(u){return Zt(e,"td,th",o).map(function(i){return ft(u,i)?ft(n,u)&&yn(u)===r?c(i):Sl.none("in same cell"):ar.sharedOne(Tl,[u,i]).fold(function(){return t=i,n=u,r=(e=a).getRect(t),(o=e.getRect(n)).right>r.left&&o.left<r.right?Sl.success():c(i);var e,t,n,r,o},function(e){return c(i)})})}).getOr(Sl.none("default"))},cata:function(e,t,n,r,o){return e.fold(t,n,r,o)}}),Ol=(q("ancestor","descendants","element","index"),q("parent","children","element","index")),Nl=function(e,t){return W(e,b(ft,t))},El=function(e){return"br"===oe(e)},kl=function(e,t,n){return t(e,n).bind(function(e){return le(e)&&0===vn(e).trim().length?kl(e,t,n):R.some(e)})},Al=function(t,e,n,r){return(o=e,i=n,wt(o,i).filter(El).orThunk(function(){return wt(o,i-1).filter(El)})).bind(function(e){return r.traverse(e).fold(function(){return kl(e,r.gather,t).map(r.relative)},function(e){return(r=e,gt(r).bind(function(t){var n=bt(t);return Nl(n,r).map(function(e){return Ol(t,n,r,e)})})).map(function(e){return pc.on(e.parent(),e.index())});var r})});var o,i},Pl=function(e,t,n,r){var o,i,u;return(El(t)?(o=e,i=t,(u=r).traverse(i).orThunk(function(){return kl(i,u.gather,o)}).map(u.relative)):Al(e,t,n,r)).map(function(e){return{start:C(e),finish:C(e)}})},Il=function(e){return Dl.cata(e,function(e){return R.none()},function(){return R.none()},function(e){return R.some(Rl(e,0))},function(e){return R.some(Rl(e,yn(e)))})},Bl=J(["left","top","right","bottom"],[]),Wl={nu:Bl,moveUp:function(e,t){return Bl({left:e.left(),top:e.top()-t,right:e.right(),bottom:e.bottom()-t})},moveDown:function(e,t){return Bl({left:e.left(),top:e.top()+t,right:e.right(),bottom:e.bottom()+t})},moveBottomTo:function(e,t){var n=e.bottom()-e.top();return Bl({left:e.left(),top:t-n,right:e.right(),bottom:t})},moveTopTo:function(e,t){var n=e.bottom()-e.top();return Bl({left:e.left(),top:t,right:e.right(),bottom:t+n})},getTop:function(e){return e.top()},getBottom:function(e){return e.bottom()},translate:function(e,t,n){return Bl({left:e.left()+t,top:e.top()+n,right:e.right()+t,bottom:e.bottom()+n})},toString:function(e){return"("+e.left()+", "+e.top()+") -> ("+e.right()+", "+e.bottom()+")"}},Ml=function(e){return Wl.nu({left:e.left,top:e.top,right:e.right,bottom:e.bottom})},_l=function(e,t){return R.some(e.getRect(t))},Ll=function(e,t,n){return ce(t)?_l(e,t).map(Ml):le(t)?(r=e,o=t,i=n,0<=i&&i<yn(o)?r.getRangedRect(o,i,o,i+1):0<i?r.getRangedRect(o,i-1,o,i):R.none()).map(Ml):R.none();var r,o,i},Fl=function(e,t){return ce(t)?_l(e,t).map(Ml):le(t)?e.getRangedRect(t,0,t,yn(t)).map(Ml):R.none()},jl=xr([{none:[]},{retry:["caret"]}]),zl=function(t,e,r){return(n=e,o=Tu,Vt(function(e,t){return t(e)},Kt,n,o,i)).fold(C(!1),function(e){return Fl(t,e).exists(function(e){return n=e,(t=r).left()<n.left()||Math.abs(n.right()-t.left())<1||t.left()>n.right();var t,n})});var n,o,i},Hl={point:Wl.getTop,adjuster:function(e,t,n,r,o){var i=Wl.moveUp(o,5);return Math.abs(n.top()-r.top())<1?jl.retry(i):n.bottom()<o.top()?jl.retry(i):n.bottom()===o.top()?jl.retry(Wl.moveUp(o,1)):zl(e,t,o)?jl.retry(Wl.translate(i,5,0)):jl.none()},move:Wl.moveUp,gather:xl},Ul={point:Wl.getBottom,adjuster:function(e,t,n,r,o){var i=Wl.moveDown(o,5);return Math.abs(n.bottom()-r.bottom())<1?jl.retry(i):n.top()>o.bottom()?jl.retry(i):n.top()===o.bottom()?jl.retry(Wl.moveDown(o,1)):zl(e,t,o)?jl.retry(Wl.translate(i,5,0)):jl.none()},move:Wl.moveDown,gather:Cl},ql=function(n,r,o,i,u){return 0===u?R.some(i):(c=n,l=i.left(),f=r.point(i),c.elementFromPoint(l,f).filter(function(e){return"table"===oe(e)}).isSome()?(t=i,a=u-1,ql(n,e=r,o,e.move(t,5),a)):n.situsFromPoint(i.left(),r.point(i)).bind(function(e){return e.start().fold(R.none,function(t){return Fl(n,t).bind(function(e){return r.adjuster(n,t,e,o,i).fold(R.none,function(e){return ql(n,r,o,e,u-1)})}).orThunk(function(){return R.some(i)})},R.none)}));var e,t,a,c,l,f},Vl=function(t,n,e){var r,o,i,u=t.move(e,5),a=ql(n,t,e,u,100).getOr(u);return(r=t,o=a,i=n,r.point(o)>i.getInnerHeight()?R.some(r.point(o)-i.getInnerHeight()):r.point(o)<0?R.some(-r.point(o)):R.none()).fold(function(){return n.situsFromPoint(a.left(),t.point(a))},function(e){return n.scrollBy(0,e),n.situsFromPoint(a.left(),t.point(a)-e)})},Gl={tryUp:b(Vl,Hl),tryDown:b(Vl,Ul),ieTryUp:function(e,t){return e.situsFromPoint(t.left(),t.top()-5)},ieTryDown:function(e,t){return e.situsFromPoint(t.left(),t.bottom()+5)},getJumpSize:C(5)},Yl=it.detect(),Xl=function(r,o,i,u,a,c){return 0===c?R.none():$l(r,o,i,u,a).bind(function(e){var t=r.fromSitus(e),n=Dl.verify(r,i,u,t.finish(),t.foffset(),a.failure,o);return Dl.cata(n,function(){return R.none()},function(){return R.some(e)},function(e){return ft(i,e)&&0===u?Kl(r,i,u,Wl.moveUp,a):Xl(r,o,e,0,a,c-1)},function(e){return ft(i,e)&&u===yn(e)?Kl(r,i,u,Wl.moveDown,a):Xl(r,o,e,yn(e),a,c-1)})})},Kl=function(t,e,n,r,o){return Ll(t,e,n).bind(function(e){return Jl(t,o,r(e,Gl.getJumpSize()))})},Jl=function(e,t,n){return Yl.browser.isChrome()||Yl.browser.isSafari()||Yl.browser.isFirefox()||Yl.browser.isEdge()?t.otherRetry(e,n):Yl.browser.isIE()?t.ieRetry(e,n):R.none()},$l=function(t,e,n,r,o){return Ll(t,n,r).bind(function(e){return Jl(t,o,e)})},Ql=function(t,n,r){return(o=t,i=n,u=r,o.getSelection().bind(function(r){return Pl(i,r.finish(),r.foffset(),u).fold(function(){return R.some(Rl(r.finish(),r.foffset()))},function(e){var t=o.fromSitus(e),n=Dl.verify(o,r.finish(),r.foffset(),t.finish(),t.foffset(),u.failure,i);return Il(n)})})).bind(function(e){return Xl(t,n,e.element(),e.offset(),r,20).map(t.fromSitus)});var o,i,u},Zl=it.detect(),ef=function(e,t){return Kt(e,function(e){return gt(e).exists(function(e){return ft(e,t)})},n).isSome();var n},tf=function(t,r,o,e,i){return Zt(e,"td,th",r).bind(function(n){return Zt(n,"table",r).bind(function(e){return ef(i,e)?Ql(t,r,o).bind(function(t){return Zt(t.finish(),"td,th",r).map(function(e){return{start:C(n),finish:C(e),range:C(t)}})}):R.none()})})},nf=function(e,t,n,r,o,i){return Zl.browser.isIE()?R.none():i(r,t).orThunk(function(){return tf(e,t,n,r,o).map(function(e){var t=e.range();return rl.create(R.some(il.makeSitus(t.start(),t.soffset(),t.finish(),t.foffset())),!0)})})},rf=function(e,t,n,r,o,i,u){return tf(e,n,r,o,i).bind(function(e){return al.detect(t,n,e.start(),e.finish(),u)})},of=function(e,u){return Zt(e,"tr",u).bind(function(i){return Zt(i,"table",u).bind(function(e){var t,n,r,o=qt(e,"tr");return ft(i,o[0])?(t=e,n=function(e){return Sn(e).isSome()},r=u,bl(yl,t,n,r)).map(function(e){var t=yn(e);return rl.create(R.some(il.makeSitus(e,t,e,t)),!0)}):R.none()})})},uf=function(e,u){return Zt(e,"tr",u).bind(function(i){return Zt(i,"table",u).bind(function(e){var t,n,r,o=qt(e,"tr");return ft(i,o[o.length-1])?(t=e,n=function(e){return Rn(e).isSome()},r=u,wl(yl,t,n,r)).map(function(e){return rl.create(R.some(il.makeSitus(e,0,e,0)),!0)}):R.none()})})},af=function(e,t){return Zt(e,"td,th",t)},cf={down:{traverse:vt,gather:Cl,relative:pc.before,otherRetry:Gl.tryDown,ieRetry:Gl.ieTryDown,failure:Dl.failedDown},up:{traverse:pt,gather:xl,relative:pc.before,otherRetry:Gl.tryUp,ieRetry:Gl.ieTryUp,failure:Dl.failedUp}},lf=function(t){return function(e){return e===t}},ff=lf(38),sf=lf(40),df={ltr:{isBackward:lf(37),isForward:lf(39)},rtl:{isBackward:lf(39),isForward:lf(37)},isUp:ff,isDown:sf,isNavigation:function(e){return 37<=e&&e<=40}},mf=function(e){return{left:e.left(),top:e.top(),right:e.right(),bottom:e.bottom(),width:e.width(),height:e.height()}},gf=(it.detect().browser.isSafari(),function(a){return{elementFromPoint:function(e,t){return xe.fromPoint(xe.fromDom(a.document),e,t)},getRect:function(e){return e.dom().getBoundingClientRect()},getRangedRect:function(e,t,n,r){var o=bc.exact(e,t,n,r);return Yc(a,o).map(mf)},getSelection:function(){return Gc(a).map(function(e){return il.convertToRange(a,e)})},fromSitus:function(e){var t=bc.relative(e.start(),e.finish());return il.convertToRange(a,t)},situsFromPoint:function(e,t){return Xc(a,e,t).map(function(e){return ol(e.start(),e.soffset(),e.finish(),e.foffset())})},clearSelection:function(){a.getSelection().removeAllRanges()},setSelection:function(e){var t,n,r,o,i,u;t=a,n=e.start(),r=e.soffset(),o=e.finish(),i=e.foffset(),u=Lc(n,r,o,i),Hc(t,u)},setRelativeSelection:function(e,t){var n,r;n=a,r=_c(e,t),Hc(n,r)},selectContents:function(e){Vc(a,e)},getInnerHeight:function(){return a.innerHeight},getScrollY:function(){var e,t,n,r;return(e=xe.fromDom(a.document),t=e!==undefined?e.dom():m.document,n=t.body.scrollLeft||t.documentElement.scrollLeft,r=t.body.scrollTop||t.documentElement.scrollTop,eo(n,r)).top()},scrollBy:function(e,t){var n,r,o;n=e,r=t,((o=xe.fromDom(a.document))!==undefined?o.dom():m.document).defaultView.scrollBy(n,r)}}}),hf=q("rows","cols"),pf={mouse:function(e,t,n,r){var o,i,u,a,c,l,f=gf(e),s=(o=f,i=t,u=n,a=r,c=R.none(),l=function(){c=R.none()},{mousedown:function(e){a.clear(i),c=af(e.target(),u)},mouseover:function(e){c.each(function(r){a.clear(i),af(e.target(),u).each(function(n){sr(r,n,u).each(function(e){var t=e.boxes().getOr([]);(1<t.length||1===t.length&&!ft(r,n))&&(a.selectRange(i,t,e.start(),e.finish()),o.selectContents(n))})})})},mouseup:function(e){c.each(l)}});return{mousedown:s.mousedown,mouseover:s.mouseover,mouseup:s.mouseup}},keyboard:function(e,l,f,s){var d=gf(e),m=function(){return s.clear(l),R.none()};return{keydown:function(e,t,n,r,o,i){var u=e.raw(),a=u.which,c=!0===u.shiftKey;return dr(l,s.selectedSelector()).fold(function(){return df.isDown(a)&&c?b(rf,d,l,f,cf.down,r,t,s.selectRange):df.isUp(a)&&c?b(rf,d,l,f,cf.up,r,t,s.selectRange):df.isDown(a)?b(nf,d,f,cf.down,r,t,uf):df.isUp(a)?b(nf,d,f,cf.up,r,t,of):R.none},function(t){var e=function(e){return function(){return xo(e,function(e){return al.update(e.rows(),e.cols(),l,t,s)}).fold(function(){return gr(l,s.firstSelectedSelector(),s.lastSelectedSelector()).map(function(e){var t=df.isDown(a)||i.isForward(a)?pc.after:pc.before;return d.setRelativeSelection(pc.on(e.first(),0),t(e.table())),s.clear(l),rl.create(R.none(),!0)})},function(e){return R.some(rl.create(R.none(),!0))})}};return df.isDown(a)&&c?e([hf(1,0)]):df.isUp(a)&&c?e([hf(-1,0)]):i.isBackward(a)&&c?e([hf(0,-1),hf(-1,0)]):i.isForward(a)&&c?e([hf(0,1),hf(1,0)]):df.isNavigation(a)&&!1===c?m:R.none})()},keyup:function(n,r,o,i,u){return dr(l,s.selectedSelector()).fold(function(){var e=n.raw(),t=e.which;return 0==(!0===e.shiftKey)?R.none():df.isNavigation(t)?al.sync(l,f,r,o,i,u,s.selectRange):R.none()},R.none)}}}},vf=function(r,e){k(e,function(e){var t,n;n=e,Do(t=r)?t.dom().classList.remove(n):No(t,n),ko(t)})},bf={byClass:function(o){var t,n,i=(t=o.selected(),function(e){Eo(e,t)}),r=(n=[o.selected(),o.lastSelected(),o.firstSelected()],function(e){vf(e,n)}),u=function(e){var t=qt(e,o.selectedSelector());k(t,r)};return{clear:u,selectRange:function(e,t,n,r){u(e),k(t,i),Eo(n,o.firstSelected()),Eo(r,o.lastSelected())},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}},byAttr:function(o){var n=function(e){he(e,o.selected()),he(e,o.firstSelected()),he(e,o.lastSelected())},i=function(e){se(e,o.selected(),"1")},u=function(e){var t=qt(e,o.selectedSelector());k(t,n)};return{clear:u,selectRange:function(e,t,n,r){u(e),k(t,i),se(n,o.firstSelected(),"1"),se(r,o.lastSelected(),"1")},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}}},wf=function(e){return!1===Ao(xe.fromDom(e.target),"ephox-snooker-resizer-bar")};function yf(h,p){var v=J(["mousedown","mouseover","mouseup","keyup","keydown"],[]),b=R.none(),w=bf.byAttr(yr);return h.on("init",function(e){var r=h.getWin(),o=Fu(h),t=Hu(h),n=pf.mouse(r,o,t,w),a=pf.keyboard(r,o,t,w),c=function(e,t){!0===e.raw().shiftKey&&(t.kill()&&e.kill(),t.selection().each(function(e){var t=bc.relative(e.start(),e.finish()),n=Dc(r,t);h.selection.setRng(n)}))},i=function(e){var t=f(e);if(t.raw().shiftKey&&df.isNavigation(t.raw().which)){var n=h.selection.getRng(),r=xe.fromDom(n.startContainer),o=xe.fromDom(n.endContainer);a.keyup(t,r,n.startOffset,o,n.endOffset).each(function(e){c(t,e)})}},u=function(e){var t=f(e);p().each(function(e){e.hideBars()});var n=h.selection.getRng(),r=xe.fromDom(h.selection.getStart()),o=xe.fromDom(n.startContainer),i=xe.fromDom(n.endContainer),u=Yu.directionAt(r).isRtl()?df.rtl:df.ltr;a.keydown(t,o,n.startOffset,i,n.endOffset,u).each(function(e){c(t,e)}),p().each(function(e){e.showBars()})},l=function(e){return e.hasOwnProperty("x")&&e.hasOwnProperty("y")},f=function(e){var t=xe.fromDom(e.target),n=function(){e.stopPropagation()},r=function(){e.preventDefault()},o=x(r,n);return{target:C(t),x:C(l(e)?e.x:null),y:C(l(e)?e.y:null),stop:n,prevent:r,kill:o,raw:C(e)}},s=function(e){return 0===e.button},d=function(e){s(e)&&wf(e)&&n.mousedown(f(e))},m=function(e){var t;((t=e).buttons===undefined||Sa.ie&&12<=Sa.ie&&0===t.buttons||0!=(1&t.buttons))&&wf(e)&&n.mouseover(f(e))},g=function(e){s(e)&&wf(e)&&n.mouseup(f(e))};h.on("mousedown",d),h.on("mouseover",m),h.on("mouseup",g),h.on("keyup",i),h.on("keydown",u),h.on("nodechange",function(){var e=h.selection,t=xe.fromDom(e.getStart()),n=xe.fromDom(e.getEnd());ar.sharedOne(cn.table,[t,n]).fold(function(){w.clear(o)},y)}),b=R.some(v({mousedown:d,mouseover:m,mouseup:g,keyup:i,keydown:u}))}),{clear:w.clear,destroy:function(){b.each(function(e){})}}}var xf=sa.each,Cf=function(t){var n=[];function e(e){return function(){t.execCommand(e)}}xf("inserttable tableprops deletetable | cell row column".split(" "),function(e){"|"===e?n.push({text:"-"}):n.push(t.menuItems[e])}),t.addButton("table",{type:"menubutton",title:"Table",menu:n}),t.addButton("tableprops",{title:"Table properties",onclick:e("mceTableProps"),icon:"table"}),t.addButton("tabledelete",{title:"Delete table",onclick:e("mceTableDelete")}),t.addButton("tablecellprops",{title:"Cell properties",onclick:e("mceTableCellProps")}),t.addButton("tablemergecells",{title:"Merge cells",onclick:e("mceTableMergeCells")}),t.addButton("tablesplitcells",{title:"Split cell",onclick:e("mceTableSplitCells")}),t.addButton("tableinsertrowbefore",{title:"Insert row before",onclick:e("mceTableInsertRowBefore")}),t.addButton("tableinsertrowafter",{title:"Insert row after",onclick:e("mceTableInsertRowAfter")}),t.addButton("tabledeleterow",{title:"Delete row",onclick:e("mceTableDeleteRow")}),t.addButton("tablerowprops",{title:"Row properties",onclick:e("mceTableRowProps")}),t.addButton("tablecutrow",{title:"Cut row",onclick:e("mceTableCutRow")}),t.addButton("tablecopyrow",{title:"Copy row",onclick:e("mceTableCopyRow")}),t.addButton("tablepasterowbefore",{title:"Paste row before",onclick:e("mceTablePasteRowBefore")}),t.addButton("tablepasterowafter",{title:"Paste row after",onclick:e("mceTablePasteRowAfter")}),t.addButton("tableinsertcolbefore",{title:"Insert column before",onclick:e("mceTableInsertColBefore")}),t.addButton("tableinsertcolafter",{title:"Insert column after",onclick:e("mceTableInsertColAfter")}),t.addButton("tabledeletecol",{title:"Delete column",onclick:e("mceTableDeleteCol")})},Rf=function(t){var e,n=""===(e=t.getParam("table_toolbar",Xu))||!1===e?[]:d(e)?e.split(/[ ,]/):h(e)?e:[];0<n.length&&t.addContextToolbar(function(e){return t.dom.is(e,"table")&&t.getBody().contains(e)},n.join(" "))},Sf=function(o,n){var r=R.none(),i=[],u=[],a=[],c=[],l=function(e){e.disabled(!0)},f=function(e){e.disabled(!1)},e=function(){var t=this;i.push(t),r.fold(function(){l(t)},function(e){f(t)})},t=function(){var t=this;u.push(t),r.fold(function(){l(t)},function(e){f(t)})};o.on("init",function(){o.on("nodechange",function(e){var t=R.from(o.dom.getParent(o.selection.getStart(),"th,td"));(r=t.bind(function(e){var t=xe.fromDom(e);return cn.table(t).map(function(e){return kr.forMenu(n,e,t)})})).fold(function(){k(i,l),k(u,l),k(a,l),k(c,l)},function(t){k(i,f),k(u,f),k(a,function(e){e.disabled(t.mergable().isNone())}),k(c,function(e){e.disabled(t.unmergable().isNone())})})})});var s=function(e,t,n,r){var o,i,u,a,c,l=r.getEl().getElementsByTagName("table")[0],f=r.isRtl()||"tl-tr"===r.parent().rel;for(l.nextSibling.innerHTML=t+1+" x "+(n+1),f&&(t=9-t),i=0;i<10;i++)for(o=0;o<10;o++)a=l.rows[i].childNodes[o].firstChild,c=(f?t<=o:o<=t)&&i<=n,e.dom.toggleClass(a,"mce-active",c),c&&(u=a);return u.parentNode},d=!1===o.getParam("table_grid",!0,"boolean")?{text:"Table",icon:"table",context:"table",onclick:m("mceInsertTable")}:{text:"Table",icon:"table",context:"table",ariaHideMenu:!0,onclick:function(e){e.aria&&(this.parent().hideAll(),e.stopImmediatePropagation(),o.execCommand("mceInsertTable"))},onshow:function(){s(o,0,0,this.menu.items()[0])},onhide:function(){var e=this.menu.items()[0].getEl().getElementsByTagName("a");o.dom.removeClass(e,"mce-active"),o.dom.addClass(e[0],"mce-active")},menu:[{type:"container",html:function(){var e="";e='<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';for(var t=0;t<10;t++){e+="<tr>";for(var n=0;n<10;n++)e+='<td role="gridcell" tabindex="-1"><a id="mcegrid'+(10*t+n)+'" href="#" data-mce-x="'+n+'" data-mce-y="'+t+'"></a></td>';e+="</tr>"}return e+="</table>",e+='<div class="mce-text-center" role="presentation">1 x 1</div>'}(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(e){var t,n,r=e.target;"A"===r.tagName.toUpperCase()&&(t=parseInt(r.getAttribute("data-mce-x"),10),n=parseInt(r.getAttribute("data-mce-y"),10),(this.isRtl()||"tl-tr"===this.parent().rel)&&(t=9-t),t===this.lastX&&n===this.lastY||(s(o,t,n,e.control),this.lastX=t,this.lastY=n))},onclick:function(e){var t=this;"A"===e.target.tagName.toUpperCase()&&(e.preventDefault(),e.stopPropagation(),t.parent().cancel(),o.undoManager.transact(function(){Na(o,t.lastX+1,t.lastY+1)}),o.addVisual())}}]};function m(e){return function(){o.execCommand(e)}}var g={text:"Table properties",context:"table",onPostRender:e,onclick:m("mceTableProps")},h={text:"Delete table",context:"table",onPostRender:e,cmd:"mceTableDelete"},p={text:"Row",context:"table",menu:[{text:"Insert row before",onclick:m("mceTableInsertRowBefore"),onPostRender:t},{text:"Insert row after",onclick:m("mceTableInsertRowAfter"),onPostRender:t},{text:"Delete row",onclick:m("mceTableDeleteRow"),onPostRender:t},{text:"Row properties",onclick:m("mceTableRowProps"),onPostRender:t},{text:"-"},{text:"Cut row",onclick:m("mceTableCutRow"),onPostRender:t},{text:"Copy row",onclick:m("mceTableCopyRow"),onPostRender:t},{text:"Paste row before",onclick:m("mceTablePasteRowBefore"),onPostRender:t},{text:"Paste row after",onclick:m("mceTablePasteRowAfter"),onPostRender:t}]},v={text:"Column",context:"table",menu:[{text:"Insert column before",onclick:m("mceTableInsertColBefore"),onPostRender:t},{text:"Insert column after",onclick:m("mceTableInsertColAfter"),onPostRender:t},{text:"Delete column",onclick:m("mceTableDeleteCol"),onPostRender:t}]},b={separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:m("mceTableCellProps"),onPostRender:t},{text:"Merge cells",onclick:m("mceTableMergeCells"),onPostRender:function(){var t=this;a.push(t),r.fold(function(){l(t)},function(e){t.disabled(e.mergable().isNone())})}},{text:"Split cell",onclick:m("mceTableSplitCells"),onPostRender:function(){var t=this;c.push(t),r.fold(function(){l(t)},function(e){t.disabled(e.unmergable().isNone())})}}]};o.addMenuItem("inserttable",d),o.addMenuItem("tableprops",g),o.addMenuItem("deletetable",h),o.addMenuItem("row",p),o.addMenuItem("column",v),o.addMenuItem("cell",b)},Tf=function(n,r){return{insertTable:function(e,t){return Na(n,e,t)},setClipboardRows:function(e){return t=r,n=E(e,xe.fromDom),void t.set(R.from(n));var t,n},getClipboardRows:function(){return r.get().fold(function(){},function(e){return E(e,function(e){return e.dom()})})}}};e.add("table",function(t){var n,r=cc(t),e=yf(t,r.lazyResize),o=la(t,r.lazyWire),i=(n=t,{get:function(){var e=Fu(n);return hr(e,yr.selectedSelector()).fold(function(){return n.selection.getStart()===undefined?Rr.none():Rr.single(n.selection)},function(e){return Rr.multiple(e)})}}),u=lu(R.none());return Ba(t,o,e,i,u),Ar(t,i,o,e),Sf(t,i),Cf(t),Rf(t),t.on("PreInit",function(){t.serializer.addTempAttr(yr.firstSelected()),t.serializer.addTempAttr(yr.lastSelected())}),t.getParam("table_tab_navigation",!0,"boolean")&&t.on("keydown",function(e){nl(e,t,o,r.lazyWire)}),t.on("remove",function(){r.destroy(),e.destroy()}),Tf(t,u)})}(window);
\ No newline at end of file
-!function(l){"use strict";var t,n,e,r,a,o=function(t){var n=t,e=function(){return n};return{get:e,set:function(t){n=t},clone:function(){return o(e())}}},i=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=function(t){return function(){return t}},u=f(!1),s=f(!0),c=u,d=s,g=function(){return m},m=(r={fold:function(t,n){return t()},is:c,isSome:c,isNone:d,getOr:e=function(t){return t},getOrThunk:n=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:e,orThunk:n,map:g,ap:g,each:function(){},bind:g,flatten:g,exists:c,forall:d,filter:g,equals:t=function(t){return t.isNone()},equals_:t,toArray:function(){return[]},toString:f("none()")},Object.freeze&&Object.freeze(r),r),h=function(e){var t=function(){return e},n=function(){return a},r=function(t){return t(e)},a={fold:function(t,n){return n(e)},is:function(t){return e===t},isSome:d,isNone:c,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:n,orThunk:n,map:function(t){return h(t(e))},ap:function(t){return t.fold(g,function(t){return h(t(e))})},each:function(t){t(e)},bind:r,flatten:t,exists:r,forall:r,filter:function(t){return t(e)?a:m},equals:function(t){return t.is(e)},equals_:function(t,n){return t.fold(c,function(t){return n(e,t)})},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return a},p={some:h,none:g,from:function(t){return null===t||t===undefined?m:h(t)}},v=(a="function",function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"===n&&Array.prototype.isPrototypeOf(t)?"array":"object"===n&&String.prototype.isPrototypeOf(t)?"string":n}(t)===a}),O=function(t,n){for(var e=[],r=0,a=t.length;r<a;r++){var o=t[r];n(o,r,t)&&e.push(o)}return e},y=Array.prototype.slice,P=(v(Array.from)&&Array.from,Object.hasOwnProperty),x=function(t,n){return P.call(t,n)},T=function(t){return x(t,"start")&&x(t,"end")},b=function(t){return!x(t,"end")&&!x(t,"replacement")},k=function(t){return x(t,"replacement")},C=function(t){return n=t,e=function(t,n){return t.start.length===n.start.length?0:t.start.length>n.start.length?-1:1},(r=y.call(n,0)).sort(e),r;var n,e,r},D=function(t){return{inlinePatterns:C(O(t,T)),blockPatterns:C(O(t,b)),replacementPatterns:O(t,k)}},S=function(n){return{setPatterns:function(t){n.set(D(t))},getPatterns:function(){return n.get().inlinePatterns.concat(n.get().blockPatterns,n.get().replacementPatterns)}}},A=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"***",end:"***",format:["bold","italic"]},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],N=function(t){var n,e,r=(n=t,e="textpattern_patterns",x(n,e)?p.from(n[e]):p.none()).getOr(A);return D(r)},R=tinymce.util.Tools.resolve("tinymce.util.Delay"),w=tinymce.util.Tools.resolve("tinymce.util.VK"),I=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),j=tinymce.util.Tools.resolve("tinymce.util.Tools"),E=function(t,n){for(var e=0;e<t.length;e++){var r=t[e];if(0===n.indexOf(r.start)&&(!r.end||n.lastIndexOf(r.end)===n.length-r.end.length))return r}},q=function(t,n,e){if(!1!==n.collapsed){var r=n.startContainer,a=r.data,o=!0===e?1:0;if(3===r.nodeType){var i=function(t,n,e,r){var a,o,i,f,u,s;for(o=0;o<t.length;o++)if((a=t[o]).end!==undefined&&(f=a,u=e,s=r,n.substr(u-f.end.length-s,f.end.length)===f.end)&&0<e-r-(i=a).end.length-i.start.length)return a}(t,a,n.startOffset,o);if(i!==undefined){var f=a.lastIndexOf(i.end,n.startOffset-o),u=a.lastIndexOf(i.start,f-i.end.length);if(f=a.indexOf(i.end,u+i.start.length),-1!==u){var s=l.document.createRange();s.setStart(r,u),s.setEnd(r,f+i.end.length);var c=E(t,s.toString());if(!(i===undefined||c!==i||r.data.length<=i.start.length+i.end.length))return{pattern:i,startOffset:u,endOffset:f}}}}}},L=function(t){return t&&3===t.nodeType},M=function(t,n,e){var r=t.dom.createRng();r.setStart(n,e),r.setEnd(n,e),t.selection.setRng(r)},U=function(n,t,e){var r=n.selection.getRng();return p.from(q(t,r,e)).map(function(t){return function(a,o,i,f){var u=j.isArray(i.pattern.format)?i.pattern.format:[i.pattern.format];if(0!==j.grep(u,function(t){var n=a.formatter.get(t);return n&&n[0].inline}).length)return a.undoManager.transact(function(){var t,n,e,r;t=o,n=i.pattern,e=i.endOffset,r=i.startOffset,(t=0<r?t.splitText(r):t).splitText(e-r+n.end.length),t.deleteData(0,n.start.length),t.deleteData(t.data.length-n.end.length,n.end.length),o=t,f&&a.selection.setCursorLocation(o.nextSibling,1),u.forEach(function(t){a.formatter.apply(t,{},o)})}),o}(n,r.startContainer,t,e)})},_=function(s,t,c){var n=s.selection.getRng(),l=n.startContainer;n.collapsed&&L(l)&&function(t,n,e){for(var r=0;r<t.length;r++){var a=e.lastIndexOf(t[r].start,n);if(-1!==a)return p.some({pattern:t[r],startOffset:a})}return p.none()}(t,n.startOffset,l.data).each(function(t){var n,e,r,a,o,i,f,u=c?p.some((n=l,r=(e=t).startOffset+e.pattern.start.length,a=n.data.slice(r,r+1),n.deleteData(r,1),a)):p.none();o=s,f=t,(i=l).deleteData(f.startOffset,f.pattern.start.length),o.insertContent(f.pattern.replacement),p.from(i.nextSibling).filter(L).each(function(t){t.insertData(0,i.data),o.dom.remove(i)}),u.each(function(t){return function(t,n){var e=t.selection.getRng(),r=e.startContainer;if(L(r)){var a=e.startOffset;r.insertData(a,n),M(t,r,a+n.length)}else{var o=t.dom.doc.createTextNode(n);e.insertNode(o),M(t,o,o.length)}}(s,t)})})},z=function(t,n,e){for(var r=0;r<t.length;r++)if(e(t[r],n))return!0},K=function(t,n){var e,r,a,o;e=t,r=n.replacementPatterns,_(e,r,!1),a=t,o=n.inlinePatterns,U(a,o,!1).each(function(t){M(a,t,t.data.length)}),function(t,n){var e,r,a,o,i,f,u,s,c,l,d;if(e=t.selection,r=t.dom,e.isCollapsed()&&(u=r.getParent(e.getStart(),"p"))){for(c=new I(u,u);i=c.next();)if(L(i)){o=i;break}if(o){if(!(s=E(n,o.data)))return;if(a=(l=e.getRng(!0)).startContainer,d=l.startOffset,o===a&&(d=Math.max(0,d-s.start.length)),j.trim(o.data).length===s.start.length)return;s.format&&(f=t.formatter.get(s.format))&&f[0].block&&(o.deleteData(0,s.start.length),t.formatter.apply(s.format,{},o),l.setStart(a,d),l.collapse(!0),e.setRng(l)),s.cmd&&t.undoManager.transact(function(){o.deleteData(0,s.start.length),t.execCommand(s.cmd)})}}}(t,n.blockPatterns)},V=function(t,n){var e,r,a,o;e=t,r=n.replacementPatterns,_(e,r,!0),a=t,o=n.inlinePatterns,U(a,o,!0).each(function(t){var n=t.data.slice(-1);if(/[\u00a0 ]/.test(n)){t.deleteData(t.data.length-1,1);var e=a.dom.doc.createTextNode(n);a.dom.insertAfter(e,t.parentNode),M(a,e,1)}})},W=function(t,n){return z(t,n,function(t,n){return t.charCodeAt(0)===n.charCode})},B=function(t,n){return z(t,n,function(t,n){return t===n.keyCode&&!1===w.modifierPressed(n)})},F=function(n,e){var r=[",",".",";",":","!","?"],a=[32];n.on("keydown",function(t){13!==t.keyCode||w.modifierPressed(t)||K(n,e.get())},!0),n.on("keyup",function(t){B(a,t)&&V(n,e.get())}),n.on("keypress",function(t){W(r,t)&&R.setEditorTimeout(n,function(){V(n,e.get())})})};i.add("textpattern",function(t){var n=o(N(t.settings));return F(t,n),S(n)})}(window);
\ No newline at end of file
+!function(l){"use strict";var t,n,e,r,a,o=function(t){var n=t,e=function(){return n};return{get:e,set:function(t){n=t},clone:function(){return o(e())}}},i=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=function(){},u=function(t){return function(){return t}},s=u(!1),c=u(!0),d=function(){return g},g=(t=function(t){return t.isNone()},r={fold:function(t,n){return t()},is:s,isSome:s,isNone:c,getOr:e=function(t){return t},getOrThunk:n=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:e,orThunk:n,map:d,each:f,bind:d,exists:s,forall:c,filter:d,equals:t,equals_:t,toArray:function(){return[]},toString:u("none()")},Object.freeze&&Object.freeze(r),r),m=function(e){var t=u(e),n=function(){return a},r=function(t){return t(e)},a={fold:function(t,n){return n(e)},is:function(t){return e===t},isSome:c,isNone:s,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:n,orThunk:n,map:function(t){return m(t(e))},each:function(t){t(e)},bind:r,exists:r,forall:r,filter:function(t){return t(e)?a:g},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(t){return t.is(e)},equals_:function(t,n){return t.fold(s,function(t){return n(e,t)})}};return a},h={some:m,none:d,from:function(t){return null===t||t===undefined?g:m(t)}},p=(a="function",function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"===n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"===n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===a}),v=Array.prototype.slice,y=function(t,n){for(var e=[],r=0,a=t.length;r<a;r++){var o=t[r];n(o,r)&&e.push(o)}return e},O=(p(Array.from)&&Array.from,Object.hasOwnProperty),P=function(t,n){return O.call(t,n)},x=function(t){return P(t,"start")&&P(t,"end")},T=function(t){return!P(t,"end")&&!P(t,"replacement")},b=function(t){return P(t,"replacement")},k=function(t){return n=t,e=function(t,n){return t.start.length===n.start.length?0:t.start.length>n.start.length?-1:1},(r=v.call(n,0)).sort(e),r;var n,e,r},C=function(t){return{inlinePatterns:k(y(t,x)),blockPatterns:k(y(t,T)),replacementPatterns:y(t,b)}},D=function(n){return{setPatterns:function(t){n.set(C(t))},getPatterns:function(){return function(){for(var t=0,n=0,e=arguments.length;n<e;n++)t+=arguments[n].length;var r=Array(t),a=0;for(n=0;n<e;n++)for(var o=arguments[n],i=0,f=o.length;i<f;i++,a++)r[a]=o[i];return r}(n.get().inlinePatterns,n.get().blockPatterns,n.get().replacementPatterns)}}},S=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"***",end:"***",format:["bold","italic"]},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],A=function(t){var n,e,r=(n=t,e="textpattern_patterns",P(n,e)?h.from(n[e]):h.none()).getOr(S);return C(r)},N=tinymce.util.Tools.resolve("tinymce.util.Delay"),R=tinymce.util.Tools.resolve("tinymce.util.VK"),w=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),I=tinymce.util.Tools.resolve("tinymce.util.Tools"),j=function(t,n){for(var e=0;e<t.length;e++){var r=t[e];if(0===n.indexOf(r.start)&&(!r.end||n.lastIndexOf(r.end)===n.length-r.end.length))return r}},E=function(t,n,e){if(!1!==n.collapsed){var r=n.startContainer,a=r.data,o=!0===e?1:0;if(3===r.nodeType){var i=function(t,n,e,r){var a,o,i,f,u,s;for(o=0;o<t.length;o++)if((a=t[o]).end!==undefined&&(f=a,u=e,s=r,n.substr(u-f.end.length-s,f.end.length)===f.end)&&0<e-r-(i=a).end.length-i.start.length)return a}(t,a,n.startOffset,o);if(i!==undefined){var f=a.lastIndexOf(i.end,n.startOffset-o),u=a.lastIndexOf(i.start,f-i.end.length);if(f=a.indexOf(i.end,u+i.start.length),-1!==u){var s=l.document.createRange();s.setStart(r,u),s.setEnd(r,f+i.end.length);var c=j(t,s.toString());if(!(i===undefined||c!==i||r.data.length<=i.start.length+i.end.length))return{pattern:i,startOffset:u,endOffset:f}}}}}},q=function(t){return t&&3===t.nodeType},L=function(t,n,e){var r=t.dom.createRng();r.setStart(n,e),r.setEnd(n,e),t.selection.setRng(r)},M=function(n,t,e){var r=n.selection.getRng();return h.from(E(t,r,e)).map(function(t){return function(a,o,i,f){var u=I.isArray(i.pattern.format)?i.pattern.format:[i.pattern.format];if(0!==I.grep(u,function(t){var n=a.formatter.get(t);return n&&n[0].inline}).length)return a.undoManager.transact(function(){var t,n,e,r;t=o,n=i.pattern,e=i.endOffset,r=i.startOffset,(t=0<r?t.splitText(r):t).splitText(e-r+n.end.length),t.deleteData(0,n.start.length),t.deleteData(t.data.length-n.end.length,n.end.length),o=t,f&&a.selection.setCursorLocation(o.nextSibling,1),u.forEach(function(t){a.formatter.apply(t,{},o)})}),o}(n,r.startContainer,t,e)})},U=function(s,t,c){var n=s.selection.getRng(),l=n.startContainer;n.collapsed&&q(l)&&function(t,n,e){for(var r=0;r<t.length;r++){var a=e.lastIndexOf(t[r].start,n);if(-1!==a)return h.some({pattern:t[r],startOffset:a})}return h.none()}(t,n.startOffset,l.data).each(function(t){var n,e,r,a,o,i,f,u=c?h.some((n=l,r=(e=t).startOffset+e.pattern.start.length,a=n.data.slice(r,r+1),n.deleteData(r,1),a)):h.none();o=s,f=t,(i=l).deleteData(f.startOffset,f.pattern.start.length),o.insertContent(f.pattern.replacement),h.from(i.nextSibling).filter(q).each(function(t){t.insertData(0,i.data),o.dom.remove(i)}),u.each(function(t){return function(t,n){var e=t.selection.getRng(),r=e.startContainer;if(q(r)){var a=e.startOffset;r.insertData(a,n),L(t,r,a+n.length)}else{var o=t.dom.doc.createTextNode(n);e.insertNode(o),L(t,o,o.length)}}(s,t)})})},_=function(t,n,e){for(var r=0;r<t.length;r++)if(e(t[r],n))return!0},z=function(t,n){var e,r,a,o;e=t,r=n.replacementPatterns,U(e,r,!1),a=t,o=n.inlinePatterns,M(a,o,!1).each(function(t){L(a,t,t.data.length)}),function(t,n){var e,r,a,o,i,f,u,s,c,l,d;if(e=t.selection,r=t.dom,e.isCollapsed()&&(u=r.getParent(e.getStart(),"p"))){for(c=new w(u,u);i=c.next();)if(q(i)){o=i;break}if(o){if(!(s=j(n,o.data)))return;if(a=(l=e.getRng(!0)).startContainer,d=l.startOffset,o===a&&(d=Math.max(0,d-s.start.length)),I.trim(o.data).length===s.start.length)return;s.format&&(f=t.formatter.get(s.format))&&f[0].block&&(o.deleteData(0,s.start.length),t.formatter.apply(s.format,{},o),l.setStart(a,d),l.collapse(!0),e.setRng(l)),s.cmd&&t.undoManager.transact(function(){o.deleteData(0,s.start.length),t.execCommand(s.cmd)})}}}(t,n.blockPatterns)},K=function(t,n){var e,r,a,o;e=t,r=n.replacementPatterns,U(e,r,!0),a=t,o=n.inlinePatterns,M(a,o,!0).each(function(t){var n=t.data.slice(-1);if(/[\u00a0 ]/.test(n)){t.deleteData(t.data.length-1,1);var e=a.dom.doc.createTextNode(n);a.dom.insertAfter(e,t.parentNode),L(a,e,1)}})},V=function(t,n){return _(t,n,function(t,n){return t.charCodeAt(0)===n.charCode})},W=function(t,n){return _(t,n,function(t,n){return t===n.keyCode&&!1===R.modifierPressed(n)})},B=function(n,e){var r=[",",".",";",":","!","?"],a=[32];n.on("keydown",function(t){13!==t.keyCode||R.modifierPressed(t)||z(n,e.get())},!0),n.on("keyup",function(t){W(a,t)&&K(n,e.get())}),n.on("keypress",function(t){V(r,t)&&N.setEditorTimeout(n,function(){K(n,e.get())})})};i.add("textpattern",function(t){var n=o(A(t.settings));return B(t,n),D(n)})}(window);
\ No newline at end of file
-!function(r){"use strict";var n,e,t,o,u,i,c=function(n){var e=n,t=function(){return e};return{get:t,set:function(n){e=n},clone:function(){return c(t())}}},a=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=function(n){return{isEnabled:function(){return n.get()}}},l=function(n,e){return n.fire("VisualChars",{state:e})},d={"\xa0":"nbsp","\xad":"shy"},s=function(n,e){var t,r="";for(t in n)r+=t;return new RegExp("["+r+"]",e?"g":"")},m=function(n){var e,t="";for(e in n)t&&(t+=","),t+="span.mce-"+n[e];return t},N={charMap:d,regExp:s(d),regExpGlobal:s(d,!0),selector:m(d),charMapToRegExp:s,charMapToSelector:m},E=function(n){return function(){return n}},g=E(!1),h=E(!0),v=g,T=h,p=function(){return O},O=(o={fold:function(n,e){return n()},is:v,isSome:v,isNone:T,getOr:t=function(n){return n},getOrThunk:e=function(n){return n()},getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:t,orThunk:e,map:p,ap:p,each:function(){},bind:p,flatten:p,exists:v,forall:T,filter:p,equals:n=function(n){return n.isNone()},equals_:n,toArray:function(){return[]},toString:E("none()")},Object.freeze&&Object.freeze(o),o),y=function(t){var n=function(){return t},e=function(){return o},r=function(n){return n(t)},o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:T,isNone:v,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(n){return y(n(t))},ap:function(n){return n.fold(p,function(n){return y(n(t))})},each:function(n){n(t)},bind:r,flatten:n,exists:r,forall:r,filter:function(n){return n(t)?o:O},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(v,function(n){return e(t,n)})},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return o},D=function(n){return null===n||n===undefined?O:y(n)},_=(u="function",function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"===e&&Array.prototype.isPrototypeOf(n)?"array":"object"===e&&String.prototype.isPrototypeOf(n)?"string":e}(n)===u}),C=function(n,e){for(var t=0,r=n.length;t<r;t++)e(n[t],t,n)},M=(Array.prototype.slice,_(Array.from)&&Array.from,function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:E(n)}}),b={fromHtml:function(n,e){var t=(e||r.document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw r.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return M(t.childNodes[0])},fromTag:function(n,e){var t=(e||r.document).createElement(n);return M(t)},fromText:function(n,e){var t=(e||r.document).createTextNode(n);return M(t)},fromDom:M,fromPoint:function(n,e,t){var r=n.dom();return D(r.elementFromPoint(e,t)).map(M)}},k=(r.Node.ATTRIBUTE_NODE,r.Node.CDATA_SECTION_NODE,r.Node.COMMENT_NODE,r.Node.DOCUMENT_NODE,r.Node.DOCUMENT_TYPE_NODE,r.Node.DOCUMENT_FRAGMENT_NODE,r.Node.ELEMENT_NODE,r.Node.TEXT_NODE),w=(r.Node.PROCESSING_INSTRUCTION_NODE,r.Node.ENTITY_REFERENCE_NODE,r.Node.ENTITY_NODE,r.Node.NOTATION_NODE,function(n){return n.dom().nodeValue}),S=(i=k,function(n){return n.dom().nodeType===i}),x=function(n){return'<span data-mce-bogus="1" class="mce-'+N.charMap[n]+'">'+n+"</span>"},A=function(n,e){var t=[],r=function(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var u=n[o];r[o]=e(u,o,n)}return r}(n.dom().childNodes,b.fromDom);return C(r,function(n){e(n)&&(t=t.concat([n])),t=t.concat(A(n,e))}),t},P={isMatch:function(n){return S(n)&&w(n)!==undefined&&N.regExp.test(w(n))},filterDescendants:A,findParentElm:function(n,e){for(;n.parentNode;){if(n.parentNode===e)return n;n=n.parentNode}},replaceWithSpans:function(n){return n.replace(N.regExpGlobal,x)}},R=function(t,n){var r,o,e=P.filterDescendants(b.fromDom(n),P.isMatch);C(e,function(n){var e=P.replaceWithSpans(w(n));for(o=t.dom.create("div",null,e);r=o.lastChild;)t.dom.insertAfter(r,n.dom());t.dom.remove(n.dom())})},I=function(e,n){var t=e.dom.select(N.selector,n);C(t,function(n){e.dom.remove(n,1)})},B=R,U=I,V=function(n){var e=n.getBody(),t=n.selection.getBookmark(),r=P.findParentElm(n.selection.getNode(),e);r=r!==undefined?r:e,I(n,r),R(n,r),n.selection.moveToBookmark(t)},j=function(n,e){var t,r=n.getBody(),o=n.selection;e.set(!e.get()),l(n,e.get()),t=o.getBookmark(),!0===e.get()?B(n,r):U(n,r),o.moveToBookmark(t)},q=function(n,e){n.addCommand("mceVisualChars",function(){j(n,e)})},G=tinymce.util.Tools.resolve("tinymce.util.Delay"),H=function(e,t){var r=G.debounce(function(){V(e)},300);!1!==e.settings.forced_root_block&&e.on("keydown",function(n){!0===t.get()&&(13===n.keyCode?V(e):r())})},L=function(n){return n.getParam("visualchars_default_state",!1)},F=function(e,t){e.on("init",function(){var n=!L(e);t.set(n),j(e,t)})},Y=function(t){return function(n){var e=n.control;t.on("VisualChars",function(n){e.active(n.state)})}};a.add("visualchars",function(n){var e,t=c(!1);return q(n,t),(e=n).addButton("visualchars",{active:!1,title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:Y(e)}),e.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:Y(e),selectable:!0,context:"view",prependToContext:!0}),H(n,t),F(n,t),f(t)})}(window);
\ No newline at end of file
+!function(r){"use strict";var n,e,t,o,i,u,c=function(n){var e=n,t=function(){return e};return{get:t,set:function(n){e=n},clone:function(){return c(t())}}},a=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=function(n){return{isEnabled:function(){return n.get()}}},d=function(n,e){return n.fire("VisualChars",{state:e})},s=function(){},l=function(n){return function(){return n}},m=l(!1),N=l(!0),g=function(){return E},E=(n=function(n){return n.isNone()},o={fold:function(n,e){return n()},is:m,isSome:m,isNone:N,getOr:t=function(n){return n},getOrThunk:e=function(n){return n()},getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:l(null),getOrUndefined:l(undefined),or:t,orThunk:e,map:g,each:s,bind:g,exists:m,forall:N,filter:g,equals:n,equals_:n,toArray:function(){return[]},toString:l("none()")},Object.freeze&&Object.freeze(o),o),h=function(t){var n=l(t),e=function(){return o},r=function(n){return n(t)},o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:N,isNone:m,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(n){return h(n(t))},each:function(n){n(t)},bind:r,exists:r,forall:r,filter:function(n){return n(t)?o:E},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(m,function(n){return e(t,n)})}};return o},v=function(n){return null===n||n===undefined?E:h(n)},T=(i="function",function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"===e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"===e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===i}),p=(Array.prototype.slice,function(n,e){for(var t=0,r=n.length;t<r;t++)e(n[t],t)}),O=(T(Array.from)&&Array.from,function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:l(n)}}),y={fromHtml:function(n,e){var t=(e||r.document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw r.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return O(t.childNodes[0])},fromTag:function(n,e){var t=(e||r.document).createElement(n);return O(t)},fromText:function(n,e){var t=(e||r.document).createTextNode(n);return O(t)},fromDom:O,fromPoint:function(n,e,t){var r=n.dom();return v(r.elementFromPoint(e,t)).map(O)}},D=(r.Node.ATTRIBUTE_NODE,r.Node.CDATA_SECTION_NODE,r.Node.COMMENT_NODE,r.Node.DOCUMENT_NODE,r.Node.DOCUMENT_TYPE_NODE,r.Node.DOCUMENT_FRAGMENT_NODE,r.Node.ELEMENT_NODE,r.Node.TEXT_NODE),_=(r.Node.PROCESSING_INSTRUCTION_NODE,r.Node.ENTITY_REFERENCE_NODE,r.Node.ENTITY_NODE,r.Node.NOTATION_NODE,"undefined"!=typeof r.window?r.window:Function("return this;")(),function(n){return n.dom().nodeValue}),C=(u=D,function(n){return n.dom().nodeType===u}),w={"\xa0":"nbsp","\xad":"shy"},M=function(n,e){var t,r="";for(t in n)r+=t;return new RegExp("["+r+"]",e?"g":"")},b=function(n){var e,t="";for(e in n)t&&(t+=","),t+="span.mce-"+n[e];return t},k={charMap:w,regExp:M(w),regExpGlobal:M(w,!0),selector:b(w),charMapToRegExp:M,charMapToSelector:b},S=function(n){return'<span data-mce-bogus="1" class="mce-'+k.charMap[n]+'">'+n+"</span>"},A=function(n,e){var t=[],r=function(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var i=n[o];r[o]=e(i,o)}return r}(n.dom().childNodes,y.fromDom);return p(r,function(n){e(n)&&(t=t.concat([n])),t=t.concat(A(n,e))}),t},x={isMatch:function(n){var e=_(n);return C(n)&&e!==undefined&&k.regExp.test(e)},filterDescendants:A,findParentElm:function(n,e){for(;n.parentNode;){if(n.parentNode===e)return n;n=n.parentNode}},replaceWithSpans:function(n){return n.replace(k.regExpGlobal,S)}},P=function(t,n){var r,o,e=x.filterDescendants(y.fromDom(n),x.isMatch);p(e,function(n){var e=x.replaceWithSpans(t.dom.encode(_(n)));for(o=t.dom.create("div",null,e);r=o.lastChild;)t.dom.insertAfter(r,n.dom());t.dom.remove(n.dom())})},R=function(e,n){var t=e.dom.select(k.selector,n);p(t,function(n){e.dom.remove(n,1)})},I=P,B=R,U=function(n){var e=n.getBody(),t=n.selection.getBookmark(),r=x.findParentElm(n.selection.getNode(),e);r=r!==undefined?r:e,R(n,r),P(n,r),n.selection.moveToBookmark(t)},V=function(n,e){var t,r=n.getBody(),o=n.selection;e.set(!e.get()),d(n,e.get()),t=o.getBookmark(),!0===e.get()?I(n,r):B(n,r),o.moveToBookmark(t)},j=function(n,e){n.addCommand("mceVisualChars",function(){V(n,e)})},q=tinymce.util.Tools.resolve("tinymce.util.Delay"),F=function(e,t){var r=q.debounce(function(){U(e)},300);!1!==e.settings.forced_root_block&&e.on("keydown",function(n){!0===t.get()&&(13===n.keyCode?U(e):r())})},G=function(n){return n.getParam("visualchars_default_state",!1)},H=function(e,t){e.on("init",function(){var n=!G(e);t.set(n),V(e,t)})},L=function(t){return function(n){var e=n.control;t.on("VisualChars",function(n){e.active(n.state)})}};a.add("visualchars",function(n){var e,t=c(!1);return j(n,t),(e=n).addButton("visualchars",{active:!1,title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:L(e)}),e.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:L(e),selectable:!0,context:"view",prependToContext:!0}),F(n,t),H(n,t),f(t)})}(window);
\ No newline at end of file
-!function(){"use strict";var e,n,t,r,o,u=tinymce.util.Tools.resolve("tinymce.PluginManager"),T=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),i=tinymce.util.Tools.resolve("tinymce.Env"),E="[-'\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]",c="[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]",a="[\xb1+*/,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]",f="[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]",l="\\r",s="\\n",A="[\x0B\f\x85\u2028\u2029]",N="[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]",R="[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]",d="[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]",g="[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22ff<>]",p="[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]",M={characterIndices:{ALETTER:0,MIDNUMLET:1,MIDLETTER:2,MIDNUM:3,NUMERIC:4,CR:5,LF:6,NEWLINE:7,EXTEND:8,FORMAT:9,KATAKANA:10,EXTENDNUMLET:11,AT:12,OTHER:13},SETS:[new RegExp("[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]"),new RegExp(E),new RegExp(c),new RegExp(a),new RegExp(f),new RegExp(l),new RegExp(s),new RegExp(A),new RegExp(N),new RegExp(R),new RegExp(d),new RegExp(g),new RegExp("@")],EMPTY_STRING:"",PUNCTUATION:new RegExp("^"+p+"$"),WHITESPACE:/^\s+$/},I=function(e){return function(){return e}},L=I(!1),y=I(!0),m=function(){return h},h=(r={fold:function(e,n){return e()},is:L,isSome:L,isNone:y,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:t,orThunk:n,map:m,ap:m,each:function(){},bind:m,flatten:m,exists:L,forall:y,filter:m,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:I("none()")},Object.freeze&&Object.freeze(r),r),w=(o="function",function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"===n&&Array.prototype.isPrototypeOf(e)?"array":"object"===n&&String.prototype.isPrototypeOf(e)?"string":n}(e)===o}),U=(Array.prototype.slice,w(Array.from)&&Array.from,M.SETS),v=M.characterIndices.OTHER,x=function(e){var n,t,r=v,o=U.length;for(n=0;n<o;++n)if((t=U[n])&&t.test(e)){r=n;break}return r},D=function(e){var t,r,n=(t=x,r={},function(e){if(r[e])return r[e];var n=t(e);return r[e]=n});return function(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var u=e[o];r[o]=n(u,o,e)}return r}(e.split(""),n)},C=M.characterIndices,O=function(e,n){var t,r,o=e[n],u=e[n+1];return!(n<0||n>e.length-1&&0!==n||o===C.ALETTER&&u===C.ALETTER||(r=e[n+2],o===C.ALETTER&&(u===C.MIDLETTER||u===C.MIDNUMLET||u===C.AT)&&r===C.ALETTER||(t=e[n-1],(o===C.MIDLETTER||o===C.MIDNUMLET||u===C.AT)&&u===C.ALETTER&&t===C.ALETTER||!(o!==C.NUMERIC&&o!==C.ALETTER||u!==C.NUMERIC&&u!==C.ALETTER)||(o===C.MIDNUM||o===C.MIDNUMLET)&&u===C.NUMERIC&&t===C.NUMERIC||o===C.NUMERIC&&(u===C.MIDNUM||u===C.MIDNUMLET)&&r===C.NUMERIC||o===C.EXTEND||o===C.FORMAT||t===C.EXTEND||t===C.FORMAT||u===C.EXTEND||u===C.FORMAT||o===C.CR&&u===C.LF||o!==C.NEWLINE&&o!==C.CR&&o!==C.LF&&u!==C.NEWLINE&&u!==C.CR&&u!==C.LF&&(o===C.KATAKANA&&u===C.KATAKANA||u===C.EXTENDNUMLET&&(o===C.ALETTER||o===C.NUMERIC||o===C.KATAKANA||o===C.EXTENDNUMLET)||o===C.EXTENDNUMLET&&(u===C.ALETTER||u===C.NUMERIC||u===C.KATAKANA)||o===C.AT))))},b=M.EMPTY_STRING,S=M.WHITESPACE,K=M.PUNCTUATION,P=function(e,n,t){var r=function(e,n){var t;for(t=n;t<e.length;++t){var r=e.charAt(t);if(S.test(r))break}return t}(n,t+1),o=n.substring(t+1,r);return"://"===o.substr(0,3)?{word:e+o,index:r}:{word:e,index:t}},F=function(e,n){return function(e,n){var t,r,o,u,i=0,E=D(e),T=E.length,c=[],a=[];for(n||(n={}),n.ignoreCase&&(e=e.toLowerCase()),r=n.includePunctuation,o=n.includeWhitespace;i<T;++i)if(t=e.charAt(i),c.push(t),O(E,i)){if((c=c.join(b))&&(o||!S.test(c))&&(r||!K.test(c)))if("http"===(u=c)||"https"===u){var f=P(c,e,i);a.push(f.word),i=f.index}else a.push(c);c=[]}return a}(e.replace(/\ufeff/g,""),n)},W=function(e,n){return i.ie?function(e,n){for(var t,r=n.getBlockElements(),o=n.getShortEndedElements(),u=n.getWhiteSpaceElements(),i="",E=new T(e,e);e=E.next();)3===e.nodeType?i+=e.data:(r[(t=e).nodeName]||o[t.nodeName]||u[t.nodeName])&&(i+=" ");return i}(e,n):e.innerText},X=function(e){return F((n=e,n.removed?"":W(n.getBody(),n.schema))).length;var n},k=function(e){return{getCount:function(){return X(e)}}},j=tinymce.util.Tools.resolve("tinymce.util.Delay"),_=tinymce.util.Tools.resolve("tinymce.util.I18n"),H=function(t){var r=function(e){return _.translate(["{0} words",X(e)])},o=function(){t.theme.panel.find("#wordcount").text(r(t))};t.on("init",function(){var e=t.theme.panel&&t.theme.panel.find("#statusbar")[0],n=j.debounce(o,300);e&&j.setEditorTimeout(t,function(){e.insert({type:"label",name:"wordcount",text:r(t),classes:"wordcount",disabled:t.settings.readonly},0),t.on("setcontent beforeaddundo undo redo keyup",n)},0)})};u.add("wordcount",function(e){return H(e),k(e)})}();
\ No newline at end of file
+!function(){"use strict";var e,n,t,r,o,u=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),i=tinymce.util.Tools.resolve("tinymce.Env"),E="[-'\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]",T="[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]",a="[\xb1+*/,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]",f="[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]",s="\\r",l="\\n",A="[\x0B\f\x85\u2028\u2029]",N="[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]",R="[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]",d="[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]",g="[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22ff<>]",p="[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]",M={characterIndices:{ALETTER:0,MIDNUMLET:1,MIDLETTER:2,MIDNUM:3,NUMERIC:4,CR:5,LF:6,NEWLINE:7,EXTEND:8,FORMAT:9,KATAKANA:10,EXTENDNUMLET:11,AT:12,OTHER:13},SETS:[new RegExp("[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]"),new RegExp(E),new RegExp(T),new RegExp(a),new RegExp(f),new RegExp(s),new RegExp(l),new RegExp(A),new RegExp(N),new RegExp(R),new RegExp(d),new RegExp(g),new RegExp("@")],EMPTY_STRING:"",PUNCTUATION:new RegExp("^"+p+"$"),WHITESPACE:/^\s+$/},I=function(){},L=function(e){return function(){return e}},m=L(!1),y=L(!0),h=function(){return w},w=(e=function(e){return e.isNone()},r={fold:function(e,n){return e()},is:m,isSome:m,isNone:y,getOr:t=function(e){return e},getOrThunk:n=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:L(null),getOrUndefined:L(undefined),or:t,orThunk:n,map:h,each:I,bind:h,exists:m,forall:y,filter:h,equals:e,equals_:e,toArray:function(){return[]},toString:L("none()")},Object.freeze&&Object.freeze(r),r),U=(o="function",function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"===n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"===n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===o}),v=(Array.prototype.slice,U(Array.from)&&Array.from,M.SETS),x=M.characterIndices.OTHER,D=function(e){var n,t,r=x,o=v.length;for(n=0;n<o;++n)if((t=v[n])&&t.test(e)){r=n;break}return r},C=function(e){var t,r,n=(t=D,r={},function(e){if(r[e])return r[e];var n=t(e);return r[e]=n});return function(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var u=e[o];r[o]=n(u,o)}return r}(e.split(""),n)},O=M.characterIndices,b=function(e,n){var t,r,o=e[n],u=e[n+1];return!(n<0||n>e.length-1&&0!==n||o===O.ALETTER&&u===O.ALETTER||(r=e[n+2],o===O.ALETTER&&(u===O.MIDLETTER||u===O.MIDNUMLET||u===O.AT)&&r===O.ALETTER||(t=e[n-1],(o===O.MIDLETTER||o===O.MIDNUMLET||u===O.AT)&&u===O.ALETTER&&t===O.ALETTER||!(o!==O.NUMERIC&&o!==O.ALETTER||u!==O.NUMERIC&&u!==O.ALETTER)||(o===O.MIDNUM||o===O.MIDNUMLET)&&u===O.NUMERIC&&t===O.NUMERIC||o===O.NUMERIC&&(u===O.MIDNUM||u===O.MIDNUMLET)&&r===O.NUMERIC||o===O.EXTEND||o===O.FORMAT||t===O.EXTEND||t===O.FORMAT||u===O.EXTEND||u===O.FORMAT||o===O.CR&&u===O.LF||o!==O.NEWLINE&&o!==O.CR&&o!==O.LF&&u!==O.NEWLINE&&u!==O.CR&&u!==O.LF&&(o===O.KATAKANA&&u===O.KATAKANA||u===O.EXTENDNUMLET&&(o===O.ALETTER||o===O.NUMERIC||o===O.KATAKANA||o===O.EXTENDNUMLET)||o===O.EXTENDNUMLET&&(u===O.ALETTER||u===O.NUMERIC||u===O.KATAKANA)||o===O.AT))))},S=M.EMPTY_STRING,K=M.WHITESPACE,P=M.PUNCTUATION,F=function(e,n,t){var r=function(e,n){var t;for(t=n;t<e.length;++t){var r=e.charAt(t);if(K.test(r))break}return t}(n,t+1),o=n.substring(t+1,r);return"://"===o.substr(0,3)?{word:e+o,index:r}:{word:e,index:t}},W=function(e,n){return function(e,n){var t,r,o,u,i=0,E=C(e),c=E.length,T=[],a=[];for(n||(n={}),n.ignoreCase&&(e=e.toLowerCase()),r=n.includePunctuation,o=n.includeWhitespace;i<c;++i)if(t=e.charAt(i),T.push(t),b(E,i)){if((T=T.join(S))&&(o||!K.test(T))&&(r||!P.test(T)))if("http"===(u=T)||"https"===u){var f=F(T,e,i);a.push(f.word),i=f.index}else a.push(T);T=[]}return a}(e.replace(/\ufeff/g,""),n)},X=function(e,n){return i.ie?function(e,n){for(var t,r=n.getBlockElements(),o=n.getShortEndedElements(),u=n.getWhiteSpaceElements(),i="",E=new c(e,e);e=E.next();)3===e.nodeType?i+=e.data:(r[(t=e).nodeName]||o[t.nodeName]||u[t.nodeName])&&(i+=" ");return i}(e,n):e.innerText},k=function(e){return W((n=e,n.removed?"":X(n.getBody(),n.schema))).length;var n},j=function(e){return{getCount:function(){return k(e)}}},_=tinymce.util.Tools.resolve("tinymce.util.Delay"),H=tinymce.util.Tools.resolve("tinymce.util.I18n"),z=function(t){var r=function(e){return H.translate(["{0} words",k(e)])},o=function(){t.theme.panel.find("#wordcount").text(r(t))};t.on("init",function(){var e=t.theme.panel&&t.theme.panel.find("#statusbar")[0],n=_.debounce(o,300);e&&_.setEditorTimeout(t,function(){e.insert({type:"label",name:"wordcount",text:r(t),classes:"wordcount",disabled:t.settings.readonly},0),t.on("setcontent beforeaddundo undo redo keyup",n)},0)})};u.add("wordcount",function(e){return z(e),j(e)})}();
\ No newline at end of file
--- /dev/null
+// Variables
+// Syntax: <control>-(<sub control>)-<bg|border|text>-(<state>)-(<extra>);
+// Example: @btn-primary-bg-hover-hlight;
+
+@prefix: mce;
+
+// Default font
+@font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+@font-size: 14px;
+@line-height: 20px;
+@has-gradients: false;
+@has-radius: false;
+@has-boxshadow: false;
+@has-button-borders: true;
+
+// Text colors
+@text: #b5b9bf;
+@text-inverse: #000000;
+@text-disabled: #6e737a;
+@text-shadow: 0 1px 1px hsla(hue(@text-inverse), saturation(@text-inverse), lightness(@text-inverse), 0.75);
+@text-error: #b94a48;
+@text-warning: #c09853;
+@text-success: #468847;
+@text-link: #2980b9;
+
+// Button
+@btn-text: #b5b9bf;
+@btn-text-shadow: #000000;
+@btn-border-top: rgba(0,0,0,0);
+@btn-border-right: rgba(0,0,0,0);
+@btn-border-bottom: rgba(0,0,0,0);
+@btn-border-left: rgba(0,0,0,0);
+@btn-caret-border: @btn-text;
+@btn-text-disabled: @text-disabled;
+@btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+@btn-box-shadow-active: inset 0 2px 4px rgba(0, 0, 0, .15), 0 1px 2px rgba(0, 0, 0, .05);
+@btn-box-disabled-opacity: 0.4;
+@btn-bg: #333;
+@btn-bg-hlight: #454f59;
+@btn-bg-hover: darken(@btn-bg, 5%);
+@btn-bg-hlight-hover: darken(@btn-bg-hlight, 5%);
+@btn-border-hover: darken(@btn-bg, 20%);
+@btn-border-active: darken(@btn-bg, 20%);
+@btn-padding: 4px 10px;
+
+@btn-primary-bg: #006fa6;
+@btn-primary-bg-hlight: #005580;
+@btn-primary-bg-hover: darken(@btn-primary-bg, 5%);
+@btn-primary-bg-hover-hlight: darken(@btn-primary-bg-hlight, 5%);
+@btn-primary-text: #ffffff;
+@btn-primary-text-shadow: #333333;
+@btn-primary-border-top: mix(@btn-border-top, @btn-primary-bg, 50%);
+@btn-primary-border-right: mix(@btn-border-right, @btn-primary-bg, 50%);
+@btn-primary-border-bottom: mix(@btn-border-bottom, @btn-primary-bg, 50%);
+@btn-primary-border-left: mix(@btn-border-left, @btn-primary-bg, 50%);
+@btn-primary-border: transparent;
+@btn-primary-border-hover: transparent;
+
+// Button group
+@btn-group-border-width: 1px;
+
+// Menu
+@menuitem-text: #dddddd;
+@menu-bg: #2f3740;
+@menu-margin: -1px 0 0;
+@menu-border: #202a33;
+@menubar-border: mix(@panel-border, @panel-bg, 60%);
+@menuitem-text-inverse: #ffffff;
+@menubar-bg-active: darken(@btn-bg, 10%);
+@menuitem-bg-hover: #0081C2;
+@menuitem-bg-selected: #006fa6;
+@menuitem-bg-selected-hlight: #005580;
+@menuitem-bg-disabled: #CCC;
+@menuitem-caret: @menuitem-text;
+@menuitem-caret-selected: @menuitem-text-inverse;
+@menuitem-separator-top: #25313f;
+@menuitem-separator-bottom: #424f5f;
+@menuitem-bg-active: #0085c7;
+@menuitem-text-active: #ffffff;
+@menuitem-preview-border-active: #08608c;
+@menubar-menubtn-text: #b5b9bf;
+
+// Panel
+@panel-border: #232b33;
+@panel-bg: #333333;
+@panel-bg-hlight: #404952;
+
+// Tabs
+@tab-border: #202a33;
+@tab-bg: #303942;
+@tab-bg-hover: #404952;
+@tab-bg-active: #404952;
+@tabs-bg: #303942;
+
+// Tooltip
+@tooltip-bg: #000;
+@tooltip-text: white;
+@tooltip-font-size: 11px;
+
+// Notification
+@notification-font-size: 14px;
+@notification-bg: #f0f0f0;
+@notification-border: #cccccc;
+@notification-text: #333333;
+@notification-success-bg: #dff0d8;
+@notification-success-border: #d6e9c6;
+@notification-success-text: #3c763d;
+@notification-info-bg: #d9edf7;
+@notification-info-border: #779ecb;
+@notification-info-text: #31708f;
+@notification-warning-bg: #fcf8e3;
+@notification-warning-border: #faebcc;
+@notification-warning-text: #8a6d3b;
+@notification-error-bg: #f2dede;
+@notification-error-border: #ebccd1;
+@notification-error-text: #a94442;
+
+// Infobox
+@infobox-bg: @notification-bg;
+@infobox-border: @notification-border;
+@infobox-text: @notification-text;
+@infobox-success-bg: @notification-success-bg;
+@infobox-success-border: @notification-success-border;
+@infobox-success-text: @notification-success-text;
+@infobox-info-bg: @notification-info-bg;
+@infobox-info-border: @notification-info-border;
+@infobox-info-text: @notification-info-text;
+@infobox-warning-bg: @notification-warning-bg;
+@infobox-warning-border: @notification-warning-border;
+@infobox-warning-text: @notification-warning-text;
+@infobox-error-bg: @notification-error-bg;
+@infobox-error-border: @notification-error-border;
+@infobox-error-text: @notification-error-text;
+
+// Window
+@window-border: #9e9e9e;
+@window-head-border: @window-border;
+@window-head-close: mix(@text, @window-bg, 60%);
+@window-head-close-hover: mix(@text, @window-bg, 40%);
+@window-foot-border: @window-border;
+@window-foot-bg: @window-bg;
+@window-fullscreen-bg: #FFF;
+@window-modalblock-bg: #000;
+@window-modalblock-opacity: 0.3;
+@window-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+@window-bg: #333;
+@window-title-font-size: 20px;
+
+// Popover
+@popover-bg: @window-bg;
+@popover-arrow-width: 10px;
+@popover-arrow: @window-bg;
+@popover-arrow-outer-width: @popover-arrow-width + 1;
+@popover-arrow-outer: rgba(0, 0, 0, 0.25);
+
+// Floatpanel
+@floatpanel-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+
+// Checkbox
+@checkbox-bg: @btn-bg;
+@checkbox-bg-hlight: @btn-bg-hlight;
+@checkbox-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
+@checkbox-border: #202a33;
+@checkbox-border-focus: #1e7dad;
+
+// Path
+@path-text: @text;
+@path-bg-focus: #666;
+@path-text-focus: #fff;
+
+// Textbox
+@textbox-text-placeholder: #aaa;
+@textbox-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+@textbox-bg: #515c67;
+@textbox-border: #202a33;
+@textbox-border-focus: #1e7dad;
+
+// Selectbox
+@selectbox-bg: @textbox-bg;
+@selectbox-border: @textbox-border;
+
+// Throbber
+@throbber-bg: #fff url('img/loader.gif') no-repeat center center;
+
+// Combobox
+@combobox-border: @textbox-border;
+@combobox-error-text: @text-error;
+@combobox-warning-text: @text-warning;
+@combobox-success-text: @text-success;
+
+// Colorpicker
+@colorpicker-border: @textbox-border;
+@colorpicker-hue-bg: #fff;
+@colorpicker-hue-border: #333;
+
+// Grid
+@grid-bg-active: @menuitem-bg-active;
+@grid-border-active: #d6d6d6;
+@grid-border: #d6d6d6;
+
+// Misc
+@colorbtn-backcolor-bg: #384552;
+@iframe-border: @panel-border;
+
+// Slider
+@slider-border: #202a33;
+@slider-bg: #515c67;
+@slider-handle-border: #000000;
+@slider-handle-bg: #454f59;
+@slider-handle-bg-focus: #BBB;
+
+// Progress
+@progress-border: #202a33;
+@progress-bar-bg: #515c67;
+@progress-bar-bg-hlight: #515c67;
+@progress-text: #c4c4c4;
+
+// Flow layout
+@flow-layout-spacing: 2px;
+
+// Table
+
+@table-row-even: #fafafa;
+@table-row-hover: darken(@table-row-even, 10%);
\ No newline at end of file
--- /dev/null
+.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#3399ff !important}.mce-edit-focus{outline:1px dotted #333}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1}.mce-content-body p,.mce-content-body div,.mce-content-body h1,.mce-content-body h2,.mce-content-body h3,.mce-content-body h4,.mce-content-body h5,.mce-content-body h6{line-height:1.2em}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2d8ac7}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #7ACAFF}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2d8ac7}.mce-content-body a[data-mce-selected],.mce-content-body code[data-mce-selected]{background:#bfe6ff}.mce-content-body hr{cursor:default}
\ No newline at end of file
--- /dev/null
+body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid #F00;cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#3399ff !important}.mce-edit-focus{outline:1px dotted #333}.mce-resize-bar-dragging{background-color:blue;opacity:.25;filter:alpha(opacity=25);zoom:1}.mce-content-body p,.mce-content-body div,.mce-content-body h1,.mce-content-body h2,.mce-content-body h3,.mce-content-body h4,.mce-content-body h5,.mce-content-body h6{line-height:1.2em}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2d8ac7}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #7ACAFF}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2d8ac7}.mce-content-body a[data-mce-selected],.mce-content-body code[data-mce-selected]{background:#bfe6ff}.mce-content-body hr{cursor:default}
\ No newline at end of file
--- /dev/null
+Icons are generated and provided by the http://icomoon.io service.
--- /dev/null
+{
+ "IcoMoonType": "selection",
+ "icons": [
+ {
+ "icon": {
+ "paths": [
+ "M704 832v-37.004c151.348-61.628 256-193.82 256-346.996 0-212.078-200.576-384-448-384s-448 171.922-448 384c0 153.176 104.654 285.368 256 346.996v37.004h-192l-64-96v224h320v-222.812c-100.9-51.362-170.666-161.54-170.666-289.188 0-176.732 133.718-320 298.666-320 164.948 0 298.666 143.268 298.666 320 0 127.648-69.766 237.826-170.666 289.188v222.812h320v-224l-64 96h-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57376,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 0,
+ "order": 1,
+ "prevSize": 32,
+ "code": 57376,
+ "name": "charmap",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 0
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256 64v896l256-256 256 256v-896h-512zM704 789.49l-192-192-192 192v-661.49h384v661.49z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57363,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 1,
+ "order": 2,
+ "prevSize": 32,
+ "code": 57363,
+ "name": "bookmark",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 1
+ },
+ {
+ "icon": {
+ "paths": [
+ "M927.274 230.216l-133.49-133.488c-21.104-21.104-49.232-32.728-79.198-32.728s-58.094 11.624-79.196 32.726l-165.492 165.49c-43.668 43.668-43.668 114.724 0 158.392l2.746 2.746 67.882-67.882-2.746-2.746c-6.132-6.132-6.132-16.494 0-22.626l165.492-165.492c4.010-4.008 8.808-4.608 11.312-4.608s7.302 0.598 11.312 4.61l133.49 133.488c6.132 6.134 6.132 16.498 0.002 22.628l-165.494 165.494c-4.008 4.008-8.806 4.608-11.31 4.608s-7.302-0.6-11.312-4.612l-2.746-2.746-67.88 67.884 2.742 2.742c21.106 21.108 49.23 32.728 79.2 32.728s58.094-11.624 79.196-32.726l165.494-165.492c43.662-43.666 43.662-114.72-0.004-158.39zM551.356 600.644l-67.882 67.882 2.746 2.746c4.008 4.008 4.61 8.806 4.61 11.31 0 2.506-0.598 7.302-4.606 11.314l-165.494 165.49c-4.010 4.010-8.81 4.61-11.314 4.61s-7.304-0.6-11.314-4.61l-133.492-133.486c-4.010-4.010-4.61-8.81-4.61-11.314s0.598-7.3 4.61-11.312l165.49-165.488c4.010-4.012 8.81-4.612 11.314-4.612s7.304 0.6 11.314 4.612l2.746 2.742 67.882-67.88-2.746-2.746c-21.104-21.104-49.23-32.726-79.196-32.726s-58.092 11.624-79.196 32.726l-165.488 165.486c-21.106 21.104-32.73 49.234-32.73 79.198s11.624 58.094 32.726 79.198l133.49 133.49c21.106 21.102 49.232 32.726 79.198 32.726s58.092-11.624 79.196-32.726l165.494-165.492c21.104-21.104 32.722-49.23 32.722-79.196s-11.624-58.094-32.726-79.196l-2.744-2.746zM800 838c-9.724 0-19.45-3.708-26.87-11.13l-128-127.998c-14.844-14.84-14.844-38.898 0-53.738 14.84-14.844 38.896-14.844 53.736 0l128 128c14.844 14.84 14.844 38.896 0 53.736-7.416 7.422-17.142 11.13-26.866 11.13zM608 960c-17.674 0-32-14.326-32-32v-128c0-17.674 14.326-32 32-32s32 14.326 32 32v128c0 17.674-14.326 32-32 32zM928 640h-128c-17.674 0-32-14.326-32-32s14.326-32 32-32h128c17.674 0 32 14.326 32 32s-14.326 32-32 32zM224 186c9.724 0 19.45 3.708 26.87 11.13l128 128c14.842 14.84 14.842 38.898 0 53.738-14.84 14.844-38.898 14.844-53.738 0l-128-128c-14.842-14.84-14.842-38.898 0-53.738 7.418-7.422 17.144-11.13 26.868-11.13zM416 64c17.674 0 32 14.326 32 32v128c0 17.674-14.326 32-32 32s-32-14.326-32-32v-128c0-17.674 14.326-32 32-32zM96 384h128c17.674 0 32 14.326 32 32s-14.326 32-32 32h-128c-17.674 0-32-14.326-32-32s14.326-32 32-32z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57362,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 2,
+ "order": 3,
+ "prevSize": 32,
+ "code": 57362,
+ "name": "link",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 2
+ },
+ {
+ "icon": {
+ "paths": [
+ "M927.274 230.216l-133.49-133.488c-21.104-21.104-49.232-32.728-79.198-32.728s-58.094 11.624-79.196 32.726l-165.492 165.49c-43.668 43.668-43.668 114.724 0 158.392l2.746 2.746 67.882-67.882-2.746-2.746c-6.132-6.132-6.132-16.494 0-22.626l165.492-165.492c4.010-4.008 8.808-4.608 11.312-4.608s7.302 0.598 11.312 4.61l133.49 133.488c6.132 6.134 6.132 16.498 0.002 22.628l-165.494 165.494c-4.008 4.008-8.806 4.608-11.31 4.608s-7.302-0.6-11.312-4.612l-2.746-2.746-67.88 67.884 2.742 2.742c21.106 21.108 49.23 32.728 79.2 32.728s58.094-11.624 79.196-32.726l165.494-165.492c43.662-43.666 43.662-114.72-0.004-158.39zM551.356 600.644l-67.882 67.882 2.746 2.746c4.008 4.008 4.61 8.806 4.61 11.31 0 2.506-0.598 7.302-4.606 11.314l-165.494 165.49c-4.010 4.010-8.81 4.61-11.314 4.61s-7.304-0.6-11.314-4.61l-133.492-133.486c-4.010-4.010-4.61-8.81-4.61-11.314s0.598-7.3 4.61-11.312l165.49-165.488c4.010-4.012 8.81-4.612 11.314-4.612s7.304 0.6 11.314 4.612l2.746 2.742 67.882-67.88-2.746-2.746c-21.104-21.104-49.23-32.726-79.196-32.726s-58.092 11.624-79.196 32.726l-165.488 165.486c-21.106 21.104-32.73 49.234-32.73 79.198s11.624 58.094 32.726 79.198l133.49 133.49c21.106 21.102 49.232 32.726 79.198 32.726s58.092-11.624 79.196-32.726l165.494-165.492c21.104-21.104 32.722-49.23 32.722-79.196s-11.624-58.094-32.726-79.196l-2.744-2.746zM352 710c-9.724 0-19.45-3.71-26.87-11.128-14.84-14.84-14.84-38.898 0-53.738l320-320c14.84-14.84 38.896-14.84 53.736 0 14.844 14.84 14.844 38.9 0 53.74l-320 320c-7.416 7.416-17.142 11.126-26.866 11.126z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57361,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 3,
+ "order": 4,
+ "prevSize": 32,
+ "code": 57361,
+ "name": "unlink",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 3
+ },
+ {
+ "icon": {
+ "paths": [
+ "M576 281.326v-217.326l336.002 336-336.002 336v-222.096c-390.906-9.17-315 247.096-256 446.096-288-320-212.092-690.874 256-678.674z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57360,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 4,
+ "order": 5,
+ "prevSize": 32,
+ "code": 57360,
+ "name": "redo",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 4
+ },
+ {
+ "icon": {
+ "paths": [
+ "M704 960c59-199 134.906-455.266-256-446.096v222.096l-336.002-336 336.002-336v217.326c468.092-12.2 544 358.674 256 678.674z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57359,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 5,
+ "order": 6,
+ "prevSize": 32,
+ "code": 57359,
+ "name": "undo",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 5
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256.428 424.726c105.8 0 191.572 91.17 191.572 203.638 0 112.464-85.772 203.636-191.572 203.636-105.802 0-191.572-91.17-191.572-203.636l-0.856-29.092c0-224.93 171.54-407.272 383.144-407.272v116.364c-73.1 0-141.826 30.26-193.516 85.204-9.954 10.578-19.034 21.834-27.224 33.656 9.784-1.64 19.806-2.498 30.024-2.498zM768.428 424.726c105.8 0 191.572 91.17 191.572 203.638 0 112.464-85.772 203.636-191.572 203.636-105.802 0-191.572-91.17-191.572-203.636l-0.856-29.092c0-224.93 171.54-407.272 383.144-407.272v116.364c-73.1 0-141.826 30.26-193.516 85.204-9.956 10.578-19.036 21.834-27.224 33.656 9.784-1.64 19.806-2.498 30.024-2.498z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57358,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 6,
+ "order": 7,
+ "prevSize": 32,
+ "code": 57358,
+ "name": "blockquote",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 6
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 192h896v128h-896zM384 576h576v128h-576zM384 384h576v128h-576zM64 768h896v128h-896zM64 384l224 160-224 160z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57356,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 7,
+ "order": 8,
+ "prevSize": 32,
+ "code": 57356,
+ "name": "indent",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 7
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 192h896v128h-896zM64 576h576v128h-576zM64 384h576v128h-576zM64 768h896v128h-896zM960 384l-224 160 224 160z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57357,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 8,
+ "order": 9,
+ "prevSize": 32,
+ "code": 57357,
+ "name": "outdent",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 8
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 128h576v128h-576zM384 448h576v128h-576zM384 768h576v128h-576zM320 530v-146h-64v-320h-128v64h64v256h-64v64h128v50l-128 60v146h128v64h-128v64h128v64h-128v64h192v-320h-128v-50z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57355,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 9,
+ "order": 10,
+ "prevSize": 32,
+ "code": 57355,
+ "name": "numlist",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 9
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 128h576v128h-576zM384 448h576v128h-576zM384 768h576v128h-576zM128 192c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM128 512c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM128 832c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57354,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 10,
+ "order": 11,
+ "prevSize": 32,
+ "code": 57354,
+ "name": "bullist",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 10
+ },
+ {
+ "icon": {
+ "paths": [
+ "M888 384h-56v-256h64v-64h-320v64h64v256h-256v-256h64v-64h-320v64h64v256h-56c-39.6 0-72 32.4-72 72v432c0 39.6 32.4 72 72 72h240c39.6 0 72-32.4 72-72v-312h128v312c0 39.6 32.4 72 72 72h240c39.6 0 72-32.4 72-72v-432c0-39.6-32.4-72-72-72zM348 896h-184c-19.8 0-36-14.4-36-32s16.2-32 36-32h184c19.8 0 36 14.4 36 32s-16.2 32-36 32zM544 512h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32zM860 896h-184c-19.8 0-36-14.4-36-32s16.2-32 36-32h184c19.8 0 36 14.4 36 32s-16.2 32-36 32z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57353,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 11,
+ "order": 12,
+ "prevSize": 32,
+ "code": 57353,
+ "name": "searchreplace",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 11
+ },
+ {
+ "icon": {
+ "paths": [
+ "M704 384v-160c0-17.6-14.4-32-32-32h-160v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-160c-17.602 0-32 14.4-32 32v512c0 17.6 14.398 32 32 32h224v192h384l192-192v-384h-192zM320 128.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 320v-64h384v64h-384zM704 869.49v-101.49h101.49l-101.49 101.49zM832 704h-192v192h-256v-448h448v256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57352,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 12,
+ "order": 13,
+ "prevSize": 32,
+ "code": 57352,
+ "name": "paste",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 12
+ },
+ {
+ "icon": {
+ "paths": [
+ "M832 320h-192v-64l-192-192h-384v704h384v192h576v-448l-192-192zM832 410.51l101.49 101.49h-101.49v-101.49zM448 154.51l101.49 101.49h-101.49v-101.49zM128 128h256v192h192v384h-448v-576zM960 896h-448v-128h128v-384h128v192h192v320z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57393,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 13,
+ "order": 14,
+ "prevSize": 32,
+ "code": 57393,
+ "name": "copy",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 13
+ },
+ {
+ "icon": {
+ "paths": [
+ "M960 512h-265.876c-50.078-35.42-114.43-54.86-182.124-54.86-89.206 0-164.572-50.242-164.572-109.712 0-59.47 75.366-109.714 164.572-109.714 75.058 0 140.308 35.576 159.12 82.286h113.016c-7.93-50.644-37.58-97.968-84.058-132.826-50.88-38.16-117.676-59.174-188.078-59.174-70.404 0-137.196 21.014-188.074 59.174-54.788 41.090-86.212 99.502-86.212 160.254s31.424 119.164 86.212 160.254c1.956 1.466 3.942 2.898 5.946 4.316h-265.872v64h512.532c58.208 17.106 100.042 56.27 100.042 100.572 0 59.468-75.368 109.71-164.572 109.71-75.060 0-140.308-35.574-159.118-82.286h-113.016c7.93 50.64 37.582 97.968 84.060 132.826 50.876 38.164 117.668 59.18 188.072 59.18 70.402 0 137.198-21.016 188.074-59.174 54.79-41.090 86.208-99.502 86.208-160.254 0-35.298-10.654-69.792-30.294-100.572h204.012v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57389,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 19,
+ "order": 15,
+ "prevSize": 32,
+ "code": 57389,
+ "name": "strikethrough",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 14
+ },
+ {
+ "icon": {
+ "paths": [
+ "M192 832h576v64h-576v-64zM640 128v384c0 31.312-14.7 61.624-41.39 85.352-30.942 27.502-73.068 42.648-118.61 42.648-45.544 0-87.668-15.146-118.608-42.648-26.692-23.728-41.392-54.040-41.392-85.352v-384h-128v384c0 141.382 128.942 256 288 256s288-114.618 288-256v-384h-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57388,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 20,
+ "order": 16,
+ "prevSize": 32,
+ "code": 57388,
+ "name": "underline",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 15
+ },
+ {
+ "icon": {
+ "paths": [
+ "M832 128v64h-144l-256 640h144v64h-448v-64h144l256-640h-144v-64h448z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57387,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 21,
+ "order": 17,
+ "prevSize": 32,
+ "code": 57387,
+ "name": "italic",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 16
+ },
+ {
+ "icon": {
+ "paths": [
+ "M625.442 494.182c48.074-38.15 78.558-94.856 78.558-158.182 0-114.876-100.29-208-224-208h-224v768h288c123.712 0 224-93.124 224-208 0-88.196-59.118-163.562-142.558-193.818zM384 304c0-26.51 21.49-48 48-48h67.204c42.414 0 76.796 42.98 76.796 96s-34.382 96-76.796 96h-115.204v-144zM547.2 768h-115.2c-26.51 0-48-21.49-48-48v-144h163.2c42.418 0 76.8 42.98 76.8 96s-34.382 96-76.8 96z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57386,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 22,
+ "order": 18,
+ "prevSize": 32,
+ "code": 57386,
+ "name": "bold",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 17
+ },
+ {
+ "icon": {
+ "paths": [
+ "M850.746 242.746l-133.492-133.49c-24.888-24.892-74.054-45.256-109.254-45.256h-416c-35.2 0-64 28.8-64 64v768c0 35.2 28.8 64 64 64h640c35.2 0 64-28.8 64-64v-544c0-35.2-20.366-84.364-45.254-109.254zM805.49 287.998c6.792 6.796 13.792 19.162 18.894 32.002h-184.384v-184.386c12.84 5.1 25.204 12.1 32 18.896l133.49 133.488zM831.884 896h-639.77c-0.040-0.034-0.082-0.076-0.114-0.116v-767.77c0.034-0.040 0.076-0.082 0.114-0.114h383.886v256h256v511.884c-0.034 0.040-0.076 0.082-0.116 0.116z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57345,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 23,
+ "order": 19,
+ "prevSize": 32,
+ "code": 57345,
+ "name": "newdocument",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 18
+ },
+ {
+ "icon": {
+ "paths": [
+ "M960 880v-591.938l-223.938-224.062h-592.062c-44.182 0-80 35.816-80 80v736c0 44.184 35.818 80 80 80h736c44.184 0 80-35.816 80-80zM576 192h64v192h-64v-192zM704 832h-384v-255.882c0.034-0.042 0.076-0.082 0.116-0.118h383.77c0.040 0.036 0.082 0.076 0.116 0.118l-0.002 255.882zM832 832h-64v-256c0-35.2-28.8-64-64-64h-384c-35.2 0-64 28.8-64 64v256h-64v-640h64v192c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-171.010l128 128.072v490.938z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57344,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 24,
+ "order": 20,
+ "prevSize": 32,
+ "code": 57344,
+ "name": "save",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 19
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 192v704h896v-704h-896zM384 640v-128h256v128h-256zM640 704v128h-256v-128h256zM640 320v128h-256v-128h256zM320 320v128h-192v-128h192zM128 512h192v128h-192v-128zM704 512h192v128h-192v-128zM704 448v-128h192v128h-192zM128 704h192v128h-192v-128zM704 832v-128h192v128h-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57371,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 25,
+ "order": 21,
+ "prevSize": 32,
+ "code": 57371,
+ "name": "table",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 20
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 140c99.366 0 192.782 38.694 263.042 108.956s108.958 163.678 108.958 263.044-38.696 192.782-108.958 263.042-163.676 108.958-263.042 108.958-192.782-38.696-263.044-108.958-108.956-163.676-108.956-263.042 38.694-192.782 108.956-263.044 163.678-108.956 263.044-108.956zM512 64c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448v0zM320 384c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM576 384c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64zM512 656c-101.84 0-192.56-36.874-251.166-94.328 23.126 117.608 126.778 206.328 251.166 206.328 124.388 0 228.040-88.72 251.168-206.328-58.608 57.454-149.328 94.328-251.168 94.328z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57377,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 26,
+ "order": 22,
+ "prevSize": 32,
+ "code": 57377,
+ "name": "emoticons",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 21
+ },
+ {
+ "icon": {
+ "paths": [
+ "M480 384l-192-192 128-128h-352v352l128-128 192 192zM640 480l192-192 128 128v-352h-352l128 128-192 192zM544 640l192 192-128 128h352v-352l-128 128-192-192zM384 544l-192 192-128-128v352h352l-128-128 192-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57379,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 27,
+ "order": 23,
+ "prevSize": 32,
+ "code": 57379,
+ "name": "fullscreen",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 22
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 448h896v128h-896z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57372,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 28,
+ "order": 24,
+ "prevSize": 32,
+ "code": 57372,
+ "name": "hr",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 23
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 768h512v128h-512v-128zM768 192h-220.558l-183.766 512h-132.288l183.762-512h-223.15v-128h576v128zM929.774 896l-129.774-129.774-129.774 129.774-62.226-62.226 129.774-129.774-129.774-129.774 62.226-62.226 129.774 129.774 129.774-129.774 62.226 62.226-129.774 129.774 129.774 129.774-62.226 62.226z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57373,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 29,
+ "order": 25,
+ "prevSize": 32,
+ "code": 57373,
+ "name": "removefromat",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 24
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256 128h512v128h-512v-128zM896 320h-768c-35.2 0-64 28.8-64 64v256c0 35.2 28.796 64 64 64h128v192h512v-192h128c35.2 0 64-28.8 64-64v-256c0-35.2-28.8-64-64-64zM704 832h-384v-256h384v256zM910.4 416c0 25.626-20.774 46.4-46.398 46.4s-46.402-20.774-46.402-46.4 20.778-46.4 46.402-46.4c25.626 0 46.398 20.774 46.398 46.4z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57378,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 30,
+ "order": 26,
+ "prevSize": 32,
+ "code": 57378,
+ "name": "print",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 25
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57390,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 31,
+ "order": 27,
+ "prevSize": 32,
+ "code": 57390,
+ "name": "visualchars",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 26
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448zM64 896l224-192-224-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57391,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 32,
+ "order": 28,
+ "prevSize": 32,
+ "code": 57391,
+ "name": "ltr",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 27
+ },
+ {
+ "icon": {
+ "paths": [
+ "M416 704l-192-192 192-192-64-64-256 256 256 256zM672 256l-64 64 192 192-192 192 64 64 256-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57367,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 38,
+ "order": 29,
+ "prevSize": 32,
+ "code": 57367,
+ "name": "code",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 28
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448 704h128v128h-128v-128zM704 256c35.346 0 64 28.654 64 64v166l-228 154h-92v-64l192-128v-64h-320v-128h384zM512 64c-119.666 0-232.166 46.6-316.784 131.216-84.614 84.618-131.216 197.118-131.216 316.784 0 119.664 46.602 232.168 131.216 316.784 84.618 84.616 197.118 131.216 316.784 131.216 119.664 0 232.168-46.6 316.784-131.216 84.616-84.616 131.216-197.12 131.216-316.784 0-119.666-46.6-232.166-131.216-316.784-84.616-84.616-197.12-131.216-316.784-131.216z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57366,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 39,
+ "order": 30,
+ "prevSize": 32,
+ "code": 57366,
+ "name": "help",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 29
+ },
+ {
+ "icon": {
+ "paths": [
+ "M896 128h-768c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h768c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM896 831.884c-0.012 0.014-0.030 0.028-0.042 0.042l-191.958-319.926-160 128-224-288-191.968 479.916c-0.010-0.010-0.022-0.022-0.032-0.032v-639.77c0.034-0.040 0.076-0.082 0.114-0.114h767.77c0.040 0.034 0.082 0.076 0.116 0.116v639.768zM640 352c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96-53.019 0-96 42.981-96 96z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57364,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 40,
+ "order": 31,
+ "prevSize": 32,
+ "code": 57364,
+ "name": "image",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 30
+ },
+ {
+ "icon": {
+ "paths": [
+ "M896 128h-768c-35.2 0-64 28.8-64 64v640c0 35.2 28.8 64 64 64h768c35.2 0 64-28.8 64-64v-640c0-35.2-28.8-64-64-64zM256 832h-128v-128h128v128zM256 576h-128v-128h128v128zM256 320h-128v-128h128v128zM704 832h-384v-640h384v640zM896 832h-128v-128h128v128zM896 576h-128v-128h128v128zM896 320h-128v-128h128v128zM384 320v384l288-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57365,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 41,
+ "order": 32,
+ "prevSize": 32,
+ "code": 57365,
+ "name": "media",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 31
+ },
+ {
+ "icon": {
+ "paths": [
+ "M77.798 304.624l81.414 50.882c50.802-81.114 128.788-143.454 221.208-174.246l-30.366-91.094c-113.748 37.898-209.728 114.626-272.256 214.458zM673.946 90.166l-30.366 91.094c92.422 30.792 170.404 93.132 221.208 174.248l81.412-50.882c-62.526-99.834-158.506-176.562-272.254-214.46zM607.974 704.008c-4.808 0-9.692-1.090-14.286-3.386l-145.688-72.844v-211.778c0-17.672 14.328-32 32-32s32 14.328 32 32v172.222l110.31 55.156c15.806 7.902 22.214 27.124 14.31 42.932-5.604 11.214-16.908 17.696-28.646 17.698zM512 192c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384 0-212.078-171.922-384-384-384zM512 864c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.058 0 288 128.942 288 288 0 159.058-128.942 288-288 288z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57368,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 42,
+ "order": 33,
+ "prevSize": 32,
+ "code": 57368,
+ "name": "insertdatetime",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 32
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 455.746c45.318-49.92 97.162-92.36 153.272-125.124 90.332-52.744 192.246-80.622 294.728-80.622 102.48 0 204.396 27.878 294.726 80.624 56.112 32.764 107.956 75.204 153.274 125.124v-117.432c-33.010-28.118-68.124-53.14-104.868-74.594-105.006-61.314-223.658-93.722-343.132-93.722s-238.128 32.408-343.134 93.72c-36.742 21.454-71.856 46.478-104.866 74.596v117.43zM512 320c-183.196 0-345.838 100.556-448 256 102.162 155.448 264.804 256 448 256 183.196 0 345.838-100.552 448-256-102.162-155.444-264.804-256-448-256zM512 512c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.348 28.654-64 64-64s64 28.652 64 64zM728.066 696.662c-67.434 39.374-140.128 59.338-216.066 59.338s-148.632-19.964-216.066-59.338c-51.554-30.104-98.616-71.31-138.114-120.662 39.498-49.35 86.56-90.558 138.116-120.66 13.276-7.752 26.758-14.74 40.426-20.982-10.512 23.742-16.362 50.008-16.362 77.642 0 106.040 85.962 192 192 192 106.040 0 192-85.96 192-192 0-27.634-5.85-53.9-16.36-77.642 13.668 6.244 27.15 13.23 40.426 20.982 51.554 30.102 98.616 71.31 138.116 120.66-39.498 49.352-86.56 90.558-138.116 120.662z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57369,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 43,
+ "order": 34,
+ "prevSize": 32,
+ "code": 57369,
+ "name": "preview",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 33
+ },
+ {
+ "icon": {
+ "paths": [
+ "M651.168 283.834c-24.612-81.962-28.876-91.834-107.168-91.834h-64c-79.618 0-82.664 10.152-108.418 96 0 0.002 0 0.002-0.002 0.004l-143.998 479.996h113.636l57.6-192h226.366l57.6 192h113.63l-145.246-484.166zM437.218 448l38.4-136c10.086-33.618 36.38-30 36.38-30s26.294-3.618 36.38 30h0.004l38.4 136h-149.564z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57370,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 44,
+ "order": 35,
+ "prevSize": 32,
+ "code": 57370,
+ "name": "forecolor",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 34
+ },
+ {
+ "icon": {
+ "paths": [
+ "M576 64c247.424 0 448 200.576 448 448s-200.576 448-448 448v-96c94.024 0 182.418-36.614 248.902-103.098 66.484-66.484 103.098-154.878 103.098-248.902 0-94.022-36.614-182.418-103.098-248.902-66.484-66.484-154.878-103.098-248.902-103.098-94.022 0-182.418 36.614-248.902 103.098-51.14 51.138-84.582 115.246-97.306 184.902h186.208l-224 256-224-256h164.57c31.060-217.102 217.738-384 443.43-384zM768 448v128h-256v-320h128v192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57384,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 45,
+ "order": 36,
+ "prevSize": 32,
+ "code": 57384,
+ "name": "restoredraft",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 35
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1024 592.458v-160.916l-159.144-15.914c-8.186-30.042-20.088-58.548-35.21-84.98l104.596-127.838-113.052-113.050-127.836 104.596c-26.434-15.124-54.942-27.026-84.982-35.208l-15.914-159.148h-160.916l-15.914 159.146c-30.042 8.186-58.548 20.086-84.98 35.208l-127.838-104.594-113.050 113.050 104.596 127.836c-15.124 26.432-27.026 54.94-35.21 84.98l-159.146 15.916v160.916l159.146 15.914c8.186 30.042 20.086 58.548 35.21 84.982l-104.596 127.836 113.048 113.048 127.838-104.596c26.432 15.124 54.94 27.028 84.98 35.21l15.916 159.148h160.916l15.914-159.144c30.042-8.186 58.548-20.088 84.982-35.21l127.836 104.596 113.048-113.048-104.596-127.836c15.124-26.434 27.028-54.942 35.21-84.98l159.148-15.92zM704 576l-128 128h-128l-128-128v-128l128-128h128l128 128v128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57346,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 46,
+ "order": 37,
+ "prevSize": 32,
+ "code": 57346,
+ "name": "fullpage",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 36
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 206v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57375,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 47,
+ "order": 38,
+ "prevSize": 32,
+ "code": 57375,
+ "name": "superscript",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 37
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 910v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57374,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 48,
+ "order": 39,
+ "prevSize": 32,
+ "code": 57374,
+ "name": "subscript",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 38
+ },
+ {
+ "icon": {
+ "paths": [
+ "M704 384v-160c0-17.6-14.4-32-32-32h-160v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-160c-17.602 0-32 14.4-32 32v512c0 17.6 14.398 32 32 32h224v192h576v-576h-192zM320 128.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 320v-64h384v64h-384zM832 896h-448v-448h448v448zM448 512v128h32l32-64h64v192h-48v64h160v-64h-48v-192h64l32 64h32v-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "pastetext"
+ ],
+ "defaultCode": 57397,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 49,
+ "order": 40,
+ "prevSize": 32,
+ "code": 57397,
+ "name": "pastetext",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 39
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 256h64v64h-64zM640 384h64v64h-64zM640 512h64v64h-64zM640 640h64v64h-64zM512 512h64v64h-64zM512 640h64v64h-64zM384 640h64v64h-64zM768 384h64v64h-64zM768 512h64v64h-64zM768 640h64v64h-64zM768 768h64v64h-64zM640 768h64v64h-64zM512 768h64v64h-64zM384 768h64v64h-64zM256 768h64v64h-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "resize",
+ "dots"
+ ],
+ "defaultCode": 57394,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 50,
+ "order": 41,
+ "prevSize": 32,
+ "code": 57394,
+ "name": "resize",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 40
+ },
+ {
+ "icon": {
+ "paths": [
+ "M928 128h-416l-32-64h-352l-64 128h896zM840.34 704h87.66l32-448h-896l64 640h356.080c-104.882-37.776-180.080-138.266-180.080-256 0-149.982 122.018-272 272-272 149.98 0 272 122.018 272 272 0 21.678-2.622 43.15-7.66 64zM874.996 849.75l-134.496-110.692c17.454-28.922 27.5-62.814 27.5-99.058 0-106.040-85.96-192-192-192s-192 85.96-192 192 85.96 192 192 192c36.244 0 70.138-10.046 99.058-27.5l110.692 134.496c22.962 26.678 62.118 28.14 87.006 3.252l5.492-5.492c24.888-24.888 23.426-64.044-3.252-87.006zM576 764c-68.484 0-124-55.516-124-124s55.516-124 124-124 124 55.516 124 124-55.516 124-124 124z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "browse"
+ ],
+ "defaultCode": 57396,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 51,
+ "order": 42,
+ "prevSize": 32,
+ "code": 57396,
+ "name": "browse",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 41
+ },
+ {
+ "icon": {
+ "paths": [
+ "M864.408 670.132c-46.47-46.47-106.938-68.004-161.082-62.806l-63.326-63.326 192-192c0 0 128-128 0-256l-320 320-320-320c-128 128 0 256 0 256l192 192-63.326 63.326c-54.144-5.198-114.61 16.338-161.080 62.806-74.98 74.98-85.112 186.418-22.626 248.9 62.482 62.482 173.92 52.354 248.9-22.626 46.47-46.468 68.002-106.938 62.806-161.080l63.326-63.326 63.328 63.328c-5.196 54.144 16.336 114.61 62.806 161.078 74.978 74.98 186.418 85.112 248.898 22.626 62.488-62.482 52.356-173.918-22.624-248.9zM353.124 758.578c-2.212 24.332-15.020 49.826-35.14 69.946-22.212 22.214-51.080 35.476-77.218 35.476-10.524 0-25.298-2.228-35.916-12.848-21.406-21.404-17.376-73.132 22.626-113.136 22.212-22.214 51.080-35.476 77.218-35.476 10.524 0 25.298 2.228 35.916 12.848 13.112 13.11 13.47 32.688 12.514 43.19zM512 608c-35.346 0-64-28.654-64-64s28.654-64 64-64 64 28.654 64 64-28.654 64-64 64zM819.152 851.152c-10.62 10.62-25.392 12.848-35.916 12.848-26.138 0-55.006-13.262-77.218-35.476-20.122-20.12-32.928-45.614-35.138-69.946-0.958-10.502-0.6-30.080 12.514-43.192 10.618-10.622 25.39-12.848 35.916-12.848 26.136 0 55.006 13.262 77.216 35.474 40.004 40.008 44.032 91.736 22.626 113.14z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57351,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 14,
+ "order": 43,
+ "prevSize": 32,
+ "code": 57351,
+ "name": "cut",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 42
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 192h896v128h-896zM64 576h896v128h-896zM64 384h896v128h-896zM64 768h896v128h-896z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57350,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 15,
+ "order": 44,
+ "prevSize": 32,
+ "code": 57350,
+ "name": "alignjustify",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 43
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 192h896v128h-896zM64 576h896v128h-896zM256 384h512v128h-512zM256 768h512v128h-512z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57348,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 16,
+ "order": 45,
+ "prevSize": 32,
+ "code": 57348,
+ "name": "aligncenter",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 44
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 192h896v128h-896zM64 576h896v128h-896zM384 384h576v128h-576zM384 768h576v128h-576z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57349,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 17,
+ "order": 46,
+ "prevSize": 32,
+ "code": 57349,
+ "name": "alignright",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 45
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 192h896v128h-896zM64 576h896v128h-896zM64 384h576v128h-576zM64 768h576v128h-576z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57347,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 18,
+ "order": 47,
+ "prevSize": 32,
+ "code": 57347,
+ "name": "alignleft",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 46
+ },
+ {
+ "icon": {
+ "paths": [
+ "M320 128c-123.712 0-224 100.288-224 224s100.288 224 224 224v320h128v-640h64v640h128v-640h128v-128h-448zM960 512l-224 192 224 192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57392,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 33,
+ "order": 48,
+ "prevSize": 32,
+ "code": 57392,
+ "name": "rtl",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 47
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 384h128v64h-128zM512 768h128v64h-128zM576 576h128v64h-128zM768 576v192h-64v64h128v-256zM384 576h128v64h-128zM320 768h128v64h-128zM320 384h128v64h-128zM192 192v256h64v-192h64v-64zM704 448h128v-256h-64v192h-64zM64 64v896h896v-896h-896zM896 896h-768v-768h768v768zM192 576v256h64v-192h64v-64zM576 192h128v64h-128zM384 192h128v64h-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57382,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 34,
+ "order": 49,
+ "prevSize": 32,
+ "code": 57382,
+ "name": "template",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 48
+ },
+ {
+ "icon": {
+ "paths": [
+ "M816 64l16 384h-640l16-384h32l16 320h512l16-320h32zM208 960l-16-320h640l-16 320h-32l-16-256h-512l-16 256h-32zM64 512h128v64h-128zM256 512h128v64h-128zM448 512h128v64h-128zM640 512h128v64h-128zM832 512h128v64h-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57383,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 35,
+ "order": 50,
+ "prevSize": 32,
+ "code": 57383,
+ "name": "pagebreak",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 49
+ },
+ {
+ "icon": {
+ "paths": [
+ "M960 128v-64h-192c-35.202 0-64 28.8-64 64v320c0 15.856 5.858 30.402 15.496 41.614l-303.496 260.386-142-148-82 70 224 288 416-448h128v-64h-192v-320h192zM256 512h64v-384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v384h64v-192h128v192zM128 256v-128h128v128h-128zM640 448v-96c0-35.2-8.8-64-44-64 35.2 0 44-28.8 44-64v-96c0-35.2-28.8-64-64-64h-192v448h192c35.2 0 64-28.8 64-64zM448 128h128v128h-128v-128zM448 320h128v128h-128v-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57380,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 36,
+ "order": 51,
+ "prevSize": 32,
+ "code": 57380,
+ "name": "spellcheck",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 50
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448 512h-128v-128h128v-128h128v128h128v128h-128v128h-128v-128zM960 576v320h-896v-320h128v192h640v-192h128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57381,
+ "grid": 0
+ },
+ "attrs": [],
+ "properties": {
+ "id": 37,
+ "order": 52,
+ "prevSize": 32,
+ "code": 57381,
+ "name": "nonbreaking",
+ "ligatures": ""
+ },
+ "setIdx": 0,
+ "setId": 2,
+ "iconIdx": 51
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256 352v-128c0-53.020 42.98-96 96-96h32v-128h-32c-123.712 0-224 100.288-224 224v128c0 53.020-42.98 96-96 96h-32v128h32c53.020 0 96 42.98 96 96v128c0 123.71 100.288 224 224 224h32v-128h-32c-53.020 0-96-42.98-96-96v-128c0-62.684-25.758-119.342-67.254-160 41.496-40.658 67.254-97.316 67.254-160z",
+ "M1024 352v-128c0-53.020-42.98-96-96-96h-32v-128h32c123.71 0 224 100.288 224 224v128c0 53.020 42.98 96 96 96h32v128h-32c-53.020 0-96 42.98-96 96v128c0 123.71-100.29 224-224 224h-32v-128h32c53.020 0 96-42.98 96-96v-128c0-62.684 25.758-119.342 67.254-160-41.496-40.658-67.254-97.316-67.254-160z",
+ "M768 320.882c0 70.692-57.308 128-128 128s-128-57.308-128-128c0-70.692 57.308-128 128-128s128 57.308 128 128z",
+ "M640 511.118c-70.692 0-128 57.308-128 128 0 68.732 32 123.216 130.156 127.852-29.19 41.126-73.156 57.366-130.156 62.7v76c0 0 256 22.332 256-266.55-0.25-70.694-57.306-128.002-128-128.002z"
+ ],
+ "width": 1280,
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "code",
+ "semicolon",
+ "curly-braces"
+ ],
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 1,
+ "id": 0,
+ "prevSize": 16,
+ "code": 58883,
+ "name": "codesample"
+ },
+ "setIdx": 1,
+ "setId": 1,
+ "iconIdx": 0
+ }
+ ],
+ "height": 1024,
+ "metadata": {
+ "name": "tinymce-small"
+ },
+ "preferences": {
+ "showGlyphs": true,
+ "showQuickUse": true,
+ "showQuickUse2": true,
+ "showSVGs": true,
+ "fontPref": {
+ "prefix": "icon-",
+ "metadata": {
+ "fontFamily": "tinymce-small",
+ "majorVersion": 1,
+ "minorVersion": 0
+ },
+ "metrics": {
+ "emSize": 1024,
+ "baseline": 6.25,
+ "whitespace": 50
+ },
+ "showMetrics": false,
+ "showMetadata": false,
+ "showVersion": false,
+ "embed": false
+ },
+ "imagePref": {
+ "prefix": "icon-",
+ "png": true,
+ "useClassSelector": true,
+ "color": 4473924,
+ "bgColor": 16777215
+ },
+ "historySize": 100,
+ "showCodes": true
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="tinymce-small" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode=" " horiz-adv-x="512" d="" />
+<glyph unicode="" glyph-name="save" d="M960 80v591.938l-223.938 224.062h-592.062c-44.182 0-80-35.816-80-80v-736c0-44.184 35.818-80 80-80h736c44.184 0 80 35.816 80 80zM576 768h64v-192h-64v192zM704 128h-384v255.882c0.034 0.042 0.076 0.082 0.116 0.118h383.77c0.040-0.036 0.082-0.076 0.116-0.118l-0.002-255.882zM832 128h-64v256c0 35.2-28.8 64-64 64h-384c-35.2 0-64-28.8-64-64v-256h-64v640h64v-192c0-35.2 28.8-64 64-64h320c35.2 0 64 28.8 64 64v171.010l128-128.072v-490.938z" />
+<glyph unicode="" glyph-name="newdocument" d="M850.746 717.254l-133.492 133.49c-24.888 24.892-74.054 45.256-109.254 45.256h-416c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v544c0 35.2-20.366 84.364-45.254 109.254zM805.49 672.002c6.792-6.796 13.792-19.162 18.894-32.002h-184.384v184.386c12.84-5.1 25.204-12.1 32-18.896l133.49-133.488zM831.884 64h-639.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h383.886v-256h256v-511.884c-0.034-0.040-0.076-0.082-0.116-0.116z" />
+<glyph unicode="" glyph-name="fullpage" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
+<glyph unicode="" glyph-name="alignleft" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h576v-128h-576zM64 192h576v-128h-576z" />
+<glyph unicode="" glyph-name="aligncenter" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM256 576h512v-128h-512zM256 192h512v-128h-512z" />
+<glyph unicode="" glyph-name="alignright" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM384 576h576v-128h-576zM384 192h576v-128h-576z" />
+<glyph unicode="" glyph-name="alignjustify" d="M64 768h896v-128h-896zM64 384h896v-128h-896zM64 576h896v-128h-896zM64 192h896v-128h-896z" />
+<glyph unicode="" glyph-name="cut" d="M864.408 289.868c-46.47 46.47-106.938 68.004-161.082 62.806l-63.326 63.326 192 192c0 0 128 128 0 256l-320-320-320 320c-128-128 0-256 0-256l192-192-63.326-63.326c-54.144 5.198-114.61-16.338-161.080-62.806-74.98-74.98-85.112-186.418-22.626-248.9 62.482-62.482 173.92-52.354 248.9 22.626 46.47 46.468 68.002 106.938 62.806 161.080l63.326 63.326 63.328-63.328c-5.196-54.144 16.336-114.61 62.806-161.078 74.978-74.98 186.418-85.112 248.898-22.626 62.488 62.482 52.356 173.918-22.624 248.9zM353.124 201.422c-2.212-24.332-15.020-49.826-35.14-69.946-22.212-22.214-51.080-35.476-77.218-35.476-10.524 0-25.298 2.228-35.916 12.848-21.406 21.404-17.376 73.132 22.626 113.136 22.212 22.214 51.080 35.476 77.218 35.476 10.524 0 25.298-2.228 35.916-12.848 13.112-13.11 13.47-32.688 12.514-43.19zM512 352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM819.152 108.848c-10.62-10.62-25.392-12.848-35.916-12.848-26.138 0-55.006 13.262-77.218 35.476-20.122 20.12-32.928 45.614-35.138 69.946-0.958 10.502-0.6 30.080 12.514 43.192 10.618 10.622 25.39 12.848 35.916 12.848 26.136 0 55.006-13.262 77.216-35.474 40.004-40.008 44.032-91.736 22.626-113.14z" />
+<glyph unicode="" glyph-name="paste" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h384l192 192v384h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM704 90.51v101.49h101.49l-101.49-101.49zM832 256h-192v-192h-256v448h448v-256z" />
+<glyph unicode="" glyph-name="searchreplace" d="M888 576h-56v256h64v64h-320v-64h64v-256h-256v256h64v64h-320v-64h64v-256h-56c-39.6 0-72-32.4-72-72v-432c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v312h128v-312c0-39.6 32.4-72 72-72h240c39.6 0 72 32.4 72 72v432c0 39.6-32.4 72-72 72zM348 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM860 64h-184c-19.8 0-36 14.4-36 32s16.2 32 36 32h184c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
+<glyph unicode="" glyph-name="bullist" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM128 768c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 448c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM128 128c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64z" />
+<glyph unicode="" glyph-name="numlist" d="M384 832h576v-128h-576zM384 512h576v-128h-576zM384 192h576v-128h-576zM320 430v146h-64v320h-128v-64h64v-256h-64v-64h128v-50l-128-60v-146h128v-64h-128v-64h128v-64h-128v-64h192v320h-128v50z" />
+<glyph unicode="" glyph-name="indent" d="M64 768h896v-128h-896zM384 384h576v-128h-576zM384 576h576v-128h-576zM64 192h896v-128h-896zM64 576l224-160-224-160z" />
+<glyph unicode="" glyph-name="outdent" d="M64 768h896v-128h-896zM64 384h576v-128h-576zM64 576h576v-128h-576zM64 192h896v-128h-896zM960 576l-224-160 224-160z" />
+<glyph unicode="" glyph-name="blockquote" d="M256.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.954-10.578-19.034-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498zM768.428 535.274c105.8 0 191.572-91.17 191.572-203.638 0-112.464-85.772-203.636-191.572-203.636-105.802 0-191.572 91.17-191.572 203.636l-0.856 29.092c0 224.93 171.54 407.272 383.144 407.272v-116.364c-73.1 0-141.826-30.26-193.516-85.204-9.956-10.578-19.036-21.834-27.224-33.656 9.784 1.64 19.806 2.498 30.024 2.498z" />
+<glyph unicode="" glyph-name="undo" d="M704 0c59 199 134.906 455.266-256 446.096v-222.096l-336.002 336 336.002 336v-217.326c468.092 12.2 544-358.674 256-678.674z" />
+<glyph unicode="" glyph-name="redo" d="M576 678.674v217.326l336.002-336-336.002-336v222.096c-390.906 9.17-315-247.096-256-446.096-288 320-212.092 690.874 256 678.674z" />
+<glyph unicode="" glyph-name="unlink" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM352 250c-9.724 0-19.45 3.71-26.87 11.128-14.84 14.84-14.84 38.898 0 53.738l320 320c14.84 14.84 38.896 14.84 53.736 0 14.844-14.84 14.844-38.9 0-53.74l-320-320c-7.416-7.416-17.142-11.126-26.866-11.126z" />
+<glyph unicode="" glyph-name="link" d="M927.274 729.784l-133.49 133.488c-21.104 21.104-49.232 32.728-79.198 32.728s-58.094-11.624-79.196-32.726l-165.492-165.49c-43.668-43.668-43.668-114.724 0-158.392l2.746-2.746 67.882 67.882-2.746 2.746c-6.132 6.132-6.132 16.494 0 22.626l165.492 165.492c4.010 4.008 8.808 4.608 11.312 4.608s7.302-0.598 11.312-4.61l133.49-133.488c6.132-6.134 6.132-16.498 0.002-22.628l-165.494-165.494c-4.008-4.008-8.806-4.608-11.31-4.608s-7.302 0.6-11.312 4.612l-2.746 2.746-67.88-67.884 2.742-2.742c21.106-21.108 49.23-32.728 79.2-32.728s58.094 11.624 79.196 32.726l165.494 165.492c43.662 43.666 43.662 114.72-0.004 158.39zM551.356 359.356l-67.882-67.882 2.746-2.746c4.008-4.008 4.61-8.806 4.61-11.31 0-2.506-0.598-7.302-4.606-11.314l-165.494-165.49c-4.010-4.010-8.81-4.61-11.314-4.61s-7.304 0.6-11.314 4.61l-133.492 133.486c-4.010 4.010-4.61 8.81-4.61 11.314s0.598 7.3 4.61 11.312l165.49 165.488c4.010 4.012 8.81 4.612 11.314 4.612s7.304-0.6 11.314-4.612l2.746-2.742 67.882 67.88-2.746 2.746c-21.104 21.104-49.23 32.726-79.196 32.726s-58.092-11.624-79.196-32.726l-165.488-165.486c-21.106-21.104-32.73-49.234-32.73-79.198s11.624-58.094 32.726-79.198l133.49-133.49c21.106-21.102 49.232-32.726 79.198-32.726s58.092 11.624 79.196 32.726l165.494 165.492c21.104 21.104 32.722 49.23 32.722 79.196s-11.624 58.094-32.726 79.196l-2.744 2.746zM800 122c-9.724 0-19.45 3.708-26.87 11.13l-128 127.998c-14.844 14.84-14.844 38.898 0 53.738 14.84 14.844 38.896 14.844 53.736 0l128-128c14.844-14.84 14.844-38.896 0-53.736-7.416-7.422-17.142-11.13-26.866-11.13zM608 0c-17.674 0-32 14.326-32 32v128c0 17.674 14.326 32 32 32s32-14.326 32-32v-128c0-17.674-14.326-32-32-32zM928 320h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32h128c17.674 0 32-14.326 32-32s-14.326-32-32-32zM224 774c9.724 0 19.45-3.708 26.87-11.13l128-128c14.842-14.84 14.842-38.898 0-53.738-14.84-14.844-38.898-14.844-53.738 0l-128 128c-14.842 14.84-14.842 38.898 0 53.738 7.418 7.422 17.144 11.13 26.868 11.13zM416 896c17.674 0 32-14.326 32-32v-128c0-17.674-14.326-32-32-32s-32 14.326-32 32v128c0 17.674 14.326 32 32 32zM96 576h128c17.674 0 32-14.326 32-32s-14.326-32-32-32h-128c-17.674 0-32 14.326-32 32s14.326 32 32 32z" />
+<glyph unicode="" glyph-name="bookmark" d="M256 896v-896l256 256 256-256v896h-512zM704 170.51l-192 192-192-192v661.49h384v-661.49z" />
+<glyph unicode="" glyph-name="image" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM896 128.116c-0.012-0.014-0.030-0.028-0.042-0.042l-191.958 319.926-160-128-224 288-191.968-479.916c-0.010 0.010-0.022 0.022-0.032 0.032v639.77c0.034 0.040 0.076 0.082 0.114 0.114h767.77c0.040-0.034 0.082-0.076 0.116-0.116v-639.768zM640 608c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96s-96-42.981-96-96z" />
+<glyph unicode="" glyph-name="media" d="M896 832h-768c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h768c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM256 128h-128v128h128v-128zM256 384h-128v128h128v-128zM256 640h-128v128h128v-128zM704 128h-384v640h384v-640zM896 128h-128v128h128v-128zM896 384h-128v128h128v-128zM896 640h-128v128h128v-128zM384 640v-384l288 192z" />
+<glyph unicode="" glyph-name="help" d="M448 256h128v-128h-128v128zM704 704c35.346 0 64-28.654 64-64v-166l-228-154h-92v64l192 128v64h-320v128h384zM512 896c-119.666 0-232.166-46.6-316.784-131.216-84.614-84.618-131.216-197.118-131.216-316.784 0-119.664 46.602-232.168 131.216-316.784 84.618-84.616 197.118-131.216 316.784-131.216 119.664 0 232.168 46.6 316.784 131.216s131.216 197.12 131.216 316.784c0 119.666-46.6 232.166-131.216 316.784-84.616 84.616-197.12 131.216-316.784 131.216z" />
+<glyph unicode="" glyph-name="code" d="M416 256l-192 192 192 192-64 64-256-256 256-256zM672 704l-64-64 192-192-192-192 64-64 256 256z" />
+<glyph unicode="" glyph-name="insertdatetime" d="M77.798 655.376l81.414-50.882c50.802 81.114 128.788 143.454 221.208 174.246l-30.366 91.094c-113.748-37.898-209.728-114.626-272.256-214.458zM673.946 869.834l-30.366-91.094c92.422-30.792 170.404-93.132 221.208-174.248l81.412 50.882c-62.526 99.834-158.506 176.562-272.254 214.46zM607.974 255.992c-4.808 0-9.692 1.090-14.286 3.386l-145.688 72.844v211.778c0 17.672 14.328 32 32 32s32-14.328 32-32v-172.222l110.31-55.156c15.806-7.902 22.214-27.124 14.31-42.932-5.604-11.214-16.908-17.696-28.646-17.698zM512 768c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384s-171.922 384-384 384zM512 96c-159.058 0-288 128.942-288 288s128.942 288 288 288c159.058 0 288-128.942 288-288s-128.942-288-288-288z" />
+<glyph unicode="" glyph-name="preview" d="M64 504.254c45.318 49.92 97.162 92.36 153.272 125.124 90.332 52.744 192.246 80.622 294.728 80.622 102.48 0 204.396-27.878 294.726-80.624 56.112-32.764 107.956-75.204 153.274-125.124v117.432c-33.010 28.118-68.124 53.14-104.868 74.594-105.006 61.314-223.658 93.722-343.132 93.722s-238.128-32.408-343.134-93.72c-36.742-21.454-71.856-46.478-104.866-74.596v-117.43zM512 640c-183.196 0-345.838-100.556-448-256 102.162-155.448 264.804-256 448-256s345.838 100.552 448 256c-102.162 155.444-264.804 256-448 256zM512 448c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.348 28.654 64 64 64s64-28.652 64-64zM728.066 263.338c-67.434-39.374-140.128-59.338-216.066-59.338s-148.632 19.964-216.066 59.338c-51.554 30.104-98.616 71.31-138.114 120.662 39.498 49.35 86.56 90.558 138.116 120.66 13.276 7.752 26.758 14.74 40.426 20.982-10.512-23.742-16.362-50.008-16.362-77.642 0-106.040 85.962-192 192-192 106.040 0 192 85.96 192 192 0 27.634-5.85 53.9-16.36 77.642 13.668-6.244 27.15-13.23 40.426-20.982 51.554-30.102 98.616-71.31 138.116-120.66-39.498-49.352-86.56-90.558-138.116-120.662z" />
+<glyph unicode="" glyph-name="forecolor" d="M651.168 676.166c-24.612 81.962-28.876 91.834-107.168 91.834h-64c-79.618 0-82.664-10.152-108.418-96 0-0.002 0-0.002-0.002-0.004l-143.998-479.996h113.636l57.6 192h226.366l57.6-192h113.63l-145.246 484.166zM437.218 512l38.4 136c10.086 33.618 36.38 30 36.38 30s26.294 3.618 36.38-30h0.004l38.4-136h-149.564z" />
+<glyph unicode="" glyph-name="table" d="M64 768v-704h896v704h-896zM384 320v128h256v-128h-256zM640 256v-128h-256v128h256zM640 640v-128h-256v128h256zM320 640v-128h-192v128h192zM128 448h192v-128h-192v128zM704 448h192v-128h-192v128zM704 512v128h192v-128h-192zM128 256h192v-128h-192v128zM704 128v128h192v-128h-192z" />
+<glyph unicode="" glyph-name="hr" d="M64 512h896v-128h-896z" />
+<glyph unicode="" glyph-name="removeformat" d="M64 192h512v-128h-512v128zM768 768h-220.558l-183.766-512h-132.288l183.762 512h-223.15v128h576v-128zM929.774 64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774-62.226-62.226z" />
+<glyph unicode="" glyph-name="subscript" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="" glyph-name="superscript" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="" glyph-name="charmap" d="M704 128v37.004c151.348 61.628 256 193.82 256 346.996 0 212.078-200.576 384-448 384s-448-171.922-448-384c0-153.176 104.654-285.368 256-346.996v-37.004h-192l-64 96v-224h320v222.812c-100.9 51.362-170.666 161.54-170.666 289.188 0 176.732 133.718 320 298.666 320s298.666-143.268 298.666-320c0-127.648-69.766-237.826-170.666-289.188v-222.812h320v224l-64-96h-192z" />
+<glyph unicode="" glyph-name="emoticons" d="M512 820c99.366 0 192.782-38.694 263.042-108.956s108.958-163.678 108.958-263.044-38.696-192.782-108.958-263.042-163.676-108.958-263.042-108.958-192.782 38.696-263.044 108.958-108.956 163.676-108.956 263.042 38.694 192.782 108.956 263.044 163.678 108.956 263.044 108.956zM512 896c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448v0zM320 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM576 576c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM512 304c-101.84 0-192.56 36.874-251.166 94.328 23.126-117.608 126.778-206.328 251.166-206.328s228.040 88.72 251.168 206.328c-58.608-57.454-149.328-94.328-251.168-94.328z" />
+<glyph unicode="" glyph-name="print" d="M256 832h512v-128h-512v128zM896 640h-768c-35.2 0-64-28.8-64-64v-256c0-35.2 28.796-64 64-64h128v-192h512v192h128c35.2 0 64 28.8 64 64v256c0 35.2-28.8 64-64 64zM704 128h-384v256h384v-256zM910.4 544c0-25.626-20.774-46.4-46.398-46.4s-46.402 20.774-46.402 46.4 20.778 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
+<glyph unicode="" glyph-name="fullscreen" d="M480 576l-192 192 128 128h-352v-352l128 128 192-192zM640 480l192 192 128-128v352h-352l128-128-192-192zM544 320l192-192-128-128h352v352l-128-128-192 192zM384 416l-192-192-128 128v-352h352l-128 128 192 192z" />
+<glyph unicode="" glyph-name="spellcheck" d="M960 832v64h-192c-35.202 0-64-28.8-64-64v-320c0-15.856 5.858-30.402 15.496-41.614l-303.496-260.386-142 148-82-70 224-288 416 448h128v64h-192v320h192zM256 448h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192h128v-192zM128 704v128h128v-128h-128zM640 512v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64zM448 832h128v-128h-128v128zM448 640h128v-128h-128v128z" />
+<glyph unicode="" glyph-name="nonbreaking" d="M448 448h-128v128h128v128h128v-128h128v-128h-128v-128h-128v128zM960 384v-320h-896v320h128v-192h640v192h128z" />
+<glyph unicode="" glyph-name="template" d="M512 576h128v-64h-128zM512 192h128v-64h-128zM576 384h128v-64h-128zM768 384v-192h-64v-64h128v256zM384 384h128v-64h-128zM320 192h128v-64h-128zM320 576h128v-64h-128zM192 768v-256h64v192h64v64zM704 512h128v256h-64v-192h-64zM64 896v-896h896v896h-896zM896 64h-768v768h768v-768zM192 384v-256h64v192h64v64zM576 768h128v-64h-128zM384 768h128v-64h-128z" />
+<glyph unicode="" glyph-name="pagebreak" d="M816 896l16-384h-640l16 384h32l16-320h512l16 320h32zM208 0l-16 320h640l-16-320h-32l-16 256h-512l-16-256h-32zM64 448h128v-64h-128zM256 448h128v-64h-128zM448 448h128v-64h-128zM640 448h128v-64h-128zM832 448h128v-64h-128z" />
+<glyph unicode="" glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
+<glyph unicode="" glyph-name="bold" d="M625.442 465.818c48.074 38.15 78.558 94.856 78.558 158.182 0 114.876-100.29 208-224 208h-224v-768h288c123.712 0 224 93.124 224 208 0 88.196-59.118 163.562-142.558 193.818zM384 656c0 26.51 21.49 48 48 48h67.204c42.414 0 76.796-42.98 76.796-96s-34.382-96-76.796-96h-115.204v144zM547.2 192h-115.2c-26.51 0-48 21.49-48 48v144h163.2c42.418 0 76.8-42.98 76.8-96s-34.382-96-76.8-96z" />
+<glyph unicode="" glyph-name="italic" d="M832 832v-64h-144l-256-640h144v-64h-448v64h144l256 640h-144v64h448z" />
+<glyph unicode="" glyph-name="underline" d="M192 128h576v-64h-576v64zM640 832v-384c0-31.312-14.7-61.624-41.39-85.352-30.942-27.502-73.068-42.648-118.61-42.648-45.544 0-87.668 15.146-118.608 42.648-26.692 23.728-41.392 54.040-41.392 85.352v384h-128v-384c0-141.382 128.942-256 288-256s288 114.618 288 256v384h-128z" />
+<glyph unicode="" glyph-name="strikethrough" d="M960 448h-265.876c-50.078 35.42-114.43 54.86-182.124 54.86-89.206 0-164.572 50.242-164.572 109.712s75.366 109.714 164.572 109.714c75.058 0 140.308-35.576 159.12-82.286h113.016c-7.93 50.644-37.58 97.968-84.058 132.826-50.88 38.16-117.676 59.174-188.078 59.174-70.404 0-137.196-21.014-188.074-59.174-54.788-41.090-86.212-99.502-86.212-160.254s31.424-119.164 86.212-160.254c1.956-1.466 3.942-2.898 5.946-4.316h-265.872v-64h512.532c58.208-17.106 100.042-56.27 100.042-100.572 0-59.468-75.368-109.71-164.572-109.71-75.060 0-140.308 35.574-159.118 82.286h-113.016c7.93-50.64 37.582-97.968 84.060-132.826 50.876-38.164 117.668-59.18 188.072-59.18 70.402 0 137.198 21.016 188.074 59.174 54.79 41.090 86.208 99.502 86.208 160.254 0 35.298-10.654 69.792-30.294 100.572h204.012v64z" />
+<glyph unicode="" glyph-name="visualchars" d="M384 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448z" />
+<glyph unicode="" glyph-name="ltr" d="M448 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM64 64l224 192-224 192z" />
+<glyph unicode="" glyph-name="rtl" d="M320 832c-123.712 0-224-100.288-224-224s100.288-224 224-224v-320h128v640h64v-640h128v640h128v128h-448zM960 448l-224-192 224-192z" />
+<glyph unicode="" glyph-name="copy" d="M832 640h-192v64l-192 192h-384v-704h384v-192h576v448l-192 192zM832 549.49l101.49-101.49h-101.49v101.49zM448 805.49l101.49-101.49h-101.49v101.49zM128 832h256v-192h192v-384h-448v576zM960 64h-448v128h128v384h128v-192h192v-320z" />
+<glyph unicode="" glyph-name="resize" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
+<glyph unicode="" glyph-name="browse" d="M928 832h-416l-32 64h-352l-64-128h896zM840.34 256h87.66l32 448h-896l64-640h356.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM874.996 110.25l-134.496 110.692c17.454 28.922 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l110.692-134.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM576 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
+<glyph unicode="" glyph-name="pastetext" d="M704 576v160c0 17.6-14.4 32-32 32h-160v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-160c-17.602 0-32-14.4-32-32v-512c0-17.6 14.398-32 32-32h224v-192h576v576h-192zM320 831.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 640v64h384v-64h-384zM832 64h-448v448h448v-448zM448 448v-128h32l32 64h64v-192h-48v-64h160v64h-48v192h64l32-64h32v128z" />
+<glyph unicode="" glyph-name="codesample" d="M200.015 577.994v103.994c0 43.077 34.919 77.997 77.997 77.997h26v103.994h-26c-100.51 0-181.991-81.481-181.991-181.991v-103.994c0-43.077-34.919-77.997-77.997-77.997h-26v-103.994h26c43.077 0 77.997-34.919 77.997-77.997v-103.994c0-100.509 81.481-181.991 181.991-181.991h26v103.994h-26c-43.077 0-77.997 34.919-77.997 77.997v103.994c0 50.927-20.928 96.961-54.642 129.994 33.714 33.032 54.642 79.065 54.642 129.994zM823.985 577.994v103.994c0 43.077-34.919 77.997-77.997 77.997h-26v103.994h26c100.509 0 181.991-81.481 181.991-181.991v-103.994c0-43.077 34.919-77.997 77.997-77.997h26v-103.994h-26c-43.077 0-77.997-34.919-77.997-77.997v-103.994c0-100.509-81.482-181.991-181.991-181.991h-26v103.994h26c43.077 0 77.997 34.919 77.997 77.997v103.994c0 50.927 20.928 96.961 54.642 129.994-33.714 33.032-54.642 79.065-54.642 129.994zM615.997 603.277c0-57.435-46.56-103.994-103.994-103.994s-103.994 46.56-103.994 103.994c0 57.435 46.56 103.994 103.994 103.994s103.994-46.56 103.994-103.994zM512 448.717c-57.435 0-103.994-46.56-103.994-103.994 0-55.841 26-100.107 105.747-103.875-23.715-33.413-59.437-46.608-105.747-50.94v-61.747c0 0 207.991-18.144 207.991 216.561-0.202 57.437-46.56 103.996-103.994 103.996z" />
+</font></defs></svg>
\ No newline at end of file
--- /dev/null
+{
+ "IcoMoonType": "selection",
+ "icons": [
+ {
+ "icon": {
+ "paths": [
+ "M576.234 289.27l242.712-81.432 203.584 606.784-242.712 81.432zM0 896h256v-704h-256v704zM64 320h128v64h-128v-64zM320 896h256v-704h-256v704zM384 320h128v64h-128v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "books",
+ "library",
+ "archive"
+ ],
+ "defaultCode": 57458,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 523,
+ "id": 1722,
+ "prevSize": 32,
+ "code": 59665,
+ "name": "books",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 0
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 416v192c0 17.672 14.328 32 32 32h960c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32h-960c-17.672 0-32 14.328-32 32z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "minus",
+ "minimize",
+ "subtract"
+ ],
+ "defaultCode": 58229,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 597,
+ "id": 1723,
+ "prevSize": 32,
+ "code": 59705,
+ "name": "minus",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 1
+ },
+ {
+ "icon": {
+ "paths": [
+ "M992 384h-352v-352c0-17.672-14.328-32-32-32h-192c-17.672 0-32 14.328-32 32v352h-352c-17.672 0-32 14.328-32 32v192c0 17.672 14.328 32 32 32h352v352c0 17.672 14.328 32 32 32h192c17.672 0 32-14.328 32-32v-352h352c17.672 0 32-14.328 32-32v-192c0-17.672-14.328-32-32-32z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "plus",
+ "add",
+ "sum"
+ ],
+ "defaultCode": 58230,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 598,
+ "id": 1724,
+ "prevSize": 32,
+ "code": 59706,
+ "name": "plus",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 2
+ },
+ {
+ "icon": {
+ "paths": [
+ "M521.6 44.8l-67.2 67.2-86.4-86.4-86.4 86.4 86.4 86.4-368 368 432 432 518.4-518.4-428.8-435.2zM435.2 825.6l-262.4-262.4 35.2-35.2 576-51.2-348.8 348.8zM953.6 550.4c-6.4 6.4-16 16-28.8 32-28.8 32-41.6 64-41.6 89.6v0 0 0 0 0 0 0c0 16 6.4 35.2 22.4 48 12.8 12.8 32 22.4 48 22.4s35.2-6.4 48-22.4 22.4-32 22.4-48v0 0 0 0 0 0 0c0-25.6-12.8-54.4-41.6-89.6-9.6-16-22.4-25.6-28.8-32v0z"
+ ],
+ "attrs": [
+ {}
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "fill"
+ ],
+ "grid": 16
+ },
+ "attrs": [
+ {}
+ ],
+ "properties": {
+ "order": 599,
+ "id": 1695,
+ "prevSize": 32,
+ "code": 59650,
+ "name": "fill"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 3
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 694.4h1024v128h-1024v-128z",
+ "M0 928h1024v64h-1024v-64z",
+ "M0 393.6h1024v192h-1024v-192z",
+ "M0 32h1024v256h-1024v-256z"
+ ],
+ "attrs": [
+ {},
+ {},
+ {},
+ {}
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "borderwidth"
+ ],
+ "grid": 16
+ },
+ "attrs": [
+ {},
+ {},
+ {},
+ {}
+ ],
+ "properties": {
+ "order": 524,
+ "id": 1696,
+ "prevSize": 32,
+ "code": 59651,
+ "name": "borderwidth"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 4
+ },
+ {
+ "icon": {
+ "paths": [
+ "M739.2 332.8l-502.4 502.4h-185.6v-185.6l502.4-502.4 185.6 185.6zM803.2 272l-185.6-185.6 67.2-67.2c22.4-22.4 54.4-22.4 76.8 0l108.8 108.8c22.4 22.4 22.4 54.4 0 76.8l-67.2 67.2zM41.6 912h940.8v112h-940.8v-112z"
+ ],
+ "attrs": [
+ {}
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "line"
+ ],
+ "grid": 16
+ },
+ "attrs": [
+ {}
+ ],
+ "properties": {
+ "order": 525,
+ "id": 1697,
+ "prevSize": 32,
+ "code": 59652,
+ "name": "line"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 5
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 480h1024v64h-1024v-64z",
+ "M304 48v339.2h-67.2v-272h-67.2v-67.2z",
+ "M444.8 265.6v54.4h134.4v67.2h-201.6v-153.6l134.4-64v-54.4h-134.4v-67.2h201.6v153.6z",
+ "M854.4 48v339.2h-204.8v-67.2h137.6v-67.2h-137.6v-70.4h137.6v-67.2h-137.6v-67.2z",
+ "M115.2 793.6c3.2-57.6 38.4-83.2 108.8-83.2 38.4 0 67.2 9.6 86.4 25.6s25.6 35.2 25.6 70.4v112c0 25.6 0 28.8 9.6 41.6h-73.6c-3.2-9.6-3.2-9.6-6.4-19.2-22.4 19.2-41.6 25.6-70.4 25.6-54.4 0-89.6-32-89.6-76.8s28.8-70.4 99.2-80l38.4-6.4c16-3.2 22.4-6.4 22.4-16 0-12.8-12.8-22.4-38.4-22.4s-41.6 9.6-44.8 28.8h-67.2zM262.4 844.8c-6.4 3.2-12.8 6.4-25.6 6.4l-25.6 6.4c-25.6 6.4-38.4 16-38.4 28.8 0 16 12.8 25.6 35.2 25.6s41.6-9.6 54.4-32v-35.2z",
+ "M390.4 624h73.6v112c22.4-16 41.6-22.4 67.2-22.4 64 0 105.6 51.2 105.6 124.8 0 76.8-44.8 134.4-108.8 134.4-32 0-48-9.6-67.2-35.2v28.8h-70.4v-342.4zM460.8 838.4c0 41.6 22.4 70.4 51.2 70.4s51.2-28.8 51.2-70.4c0-44.8-19.2-70.4-51.2-70.4-28.8 0-51.2 28.8-51.2 70.4z",
+ "M851.2 806.4c-3.2-22.4-19.2-35.2-44.8-35.2-32 0-51.2 25.6-51.2 70.4 0 48 19.2 73.6 51.2 73.6 25.6 0 41.6-12.8 44.8-41.6l70.4 3.2c-9.6 60.8-54.4 96-118.4 96-73.6 0-121.6-51.2-121.6-128 0-80 48-131.2 124.8-131.2 64 0 108.8 35.2 112 96h-67.2z"
+ ],
+ "attrs": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "count"
+ ],
+ "grid": 16
+ },
+ "attrs": [
+ {},
+ {},
+ {},
+ {},
+ {},
+ {},
+ {}
+ ],
+ "properties": {
+ "order": 526,
+ "id": 1698,
+ "prevSize": 32,
+ "code": 59653,
+ "name": "count"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 6
+ },
+ {
+ "icon": {
+ "paths": [
+ "M553.6 656l-118.4-118.4c80-89.6 137.6-195.2 172.8-304h137.6v-92.8h-326.4v-92.8h-92.8v92.8h-326.4v92.8h518.4c-32 89.6-80 176-147.2 249.6-44.8-48-80-99.2-108.8-156.8h-92.8c35.2 76.8 80 147.2 137.6 211.2l-236.8 233.6 67.2 67.2 233.6-233.6 144 144c3.2 0 38.4-92.8 38.4-92.8zM816 419.2h-92.8l-208 560h92.8l51.2-140.8h220.8l51.2 140.8h92.8l-208-560zM691.2 745.6l76.8-201.6 76.8 201.6h-153.6z"
+ ],
+ "attrs": [
+ {}
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "translate"
+ ],
+ "grid": 16
+ },
+ "attrs": [
+ {}
+ ],
+ "properties": {
+ "order": 527,
+ "id": 1699,
+ "prevSize": 32,
+ "code": 59655,
+ "name": "translate"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 7
+ },
+ {
+ "icon": {
+ "paths": [
+ "M576 64h128v128h-128v-128z",
+ "M576 320h128v128h-128v-128z",
+ "M320 320h128v128h-128v-128z",
+ "M576 576h128v128h-128v-128z",
+ "M320 576h128v128h-128v-128z",
+ "M320 832h128v128h-128v-128z",
+ "M576 832h128v128h-128v-128z",
+ "M320 64h128v128h-128v-128z"
+ ],
+ "attrs": [
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "drag"
+ ],
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ },
+ {
+ "opacity": 1,
+ "visibility": false
+ }
+ ],
+ "properties": {
+ "order": 528,
+ "id": 1700,
+ "prevSize": 32,
+ "code": 59656,
+ "name": "drag",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 8
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1024 590.444l-512-397.426-512 397.428v-162.038l512-397.426 512 397.428zM896 576v384h-256v-256h-256v256h-256v-384l384-288z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "home"
+ ],
+ "defaultCode": 57345,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 529,
+ "id": 1701,
+ "prevSize": 32,
+ "code": 59659,
+ "name": "home",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 9
+ },
+ {
+ "icon": {
+ "paths": [
+ "M839.432 199.43c27.492 27.492 50.554 78.672 55.552 120.57h-318.984v-318.984c41.898 4.998 93.076 28.060 120.568 55.552l142.864 142.862zM512 384v-384h-368c-44 0-80 36-80 80v864c0 44 36 80 80 80h672c44 0 80-36 80-80v-560h-384zM576 768v192h-192v-192h-160l256-256 256 256h-160z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "upload"
+ ],
+ "defaultCode": 57474,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 530,
+ "id": 1702,
+ "prevSize": 32,
+ "code": 59668,
+ "name": "upload",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 10
+ },
+ {
+ "icon": {
+ "paths": [
+ "M928 64h-832c-52.8 0-96 43.2-96 96v512c0 52.8 43.2 96 96 96h160v256l307.2-256h364.8c52.8 0 96-43.2 96-96v-512c0-52.8-43.2-96-96-96zM896 640h-379.142l-196.858 174.714v-174.714h-192v-448h768v448z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "bubble"
+ ],
+ "defaultCode": 57703,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 600,
+ "id": 1703,
+ "prevSize": 32,
+ "code": 59676,
+ "name": "bubble",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 11
+ },
+ {
+ "icon": {
+ "paths": [
+ "M622.826 702.736c-22.11-3.518-22.614-64.314-22.614-64.314s64.968-64.316 79.128-150.802c38.090 0 61.618-91.946 23.522-124.296 1.59-34.054 48.96-267.324-190.862-267.324-239.822 0-192.45 233.27-190.864 267.324-38.094 32.35-14.57 124.296 23.522 124.296 14.158 86.486 79.128 150.802 79.128 150.802s-0.504 60.796-22.614 64.314c-71.22 11.332-337.172 128.634-337.172 257.264h896c0-128.63-265.952-245.932-337.174-257.264z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "user"
+ ],
+ "defaultCode": 57733,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 601,
+ "id": 1704,
+ "prevSize": 32,
+ "code": 59677,
+ "name": "user",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 12
+ },
+ {
+ "icon": {
+ "paths": [
+ "M592 448h-16v-192c0-105.87-86.13-192-192-192h-128c-105.87 0-192 86.13-192 192v192h-16c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h544c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48zM192 256c0-35.29 28.71-64 64-64h128c35.29 0 64 28.71 64 64v192h-256v-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "lock"
+ ],
+ "defaultCode": 57811,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 602,
+ "id": 1705,
+ "prevSize": 32,
+ "code": 59686,
+ "name": "lock"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 13
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 64c105.87 0 192 86.13 192 192v192h-128v-192c0-35.29-28.71-64-64-64h-128c-35.29 0-64 28.71-64 64v192h16c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48h-544c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h400v-192c0-105.87 86.13-192 192-192h128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "unlock"
+ ],
+ "defaultCode": 57812,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 603,
+ "id": 1706,
+ "prevSize": 32,
+ "code": 59687,
+ "name": "unlock"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 14
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448 128v-16c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576zM256 256v-128h128v128h-128zM832 432c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-576v128h576v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h192v-128h-192v-16zM640 576v-128h128v128h-128zM448 752c0-26.4-21.6-48-48-48h-160c-26.4 0-48 21.6-48 48v16h-192v128h192v16c0 26.4 21.6 48 48 48h160c26.4 0 48-21.6 48-48v-16h576v-128h-576v-16zM256 896v-128h128v128h-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "settings"
+ ],
+ "defaultCode": 57819,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 604,
+ "id": 1707,
+ "prevSize": 32,
+ "code": 59688,
+ "name": "settings",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 15
+ },
+ {
+ "icon": {
+ "paths": [
+ "M192 1024h640l64-704h-768zM640 128v-128h-256v128h-320v192l64-64h768l64 64v-192h-320zM576 128h-128v-64h128v64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "remove2"
+ ],
+ "defaultCode": 57935,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 605,
+ "id": 1708,
+ "prevSize": 32,
+ "code": 59690,
+ "name": "remove2",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 16
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 64h256v256h-256zM384 384h256v256h-256zM384 704h256v256h-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "menu"
+ ],
+ "defaultCode": 58025,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 606,
+ "id": 1709,
+ "prevSize": 32,
+ "code": 59693,
+ "name": "menu",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 17
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1009.956 915.76l-437.074-871.112c-16.742-29.766-38.812-44.648-60.882-44.648s-44.14 14.882-60.884 44.648l-437.074 871.112c-33.486 59.532-5 108.24 63.304 108.24h869.308c68.302 0 96.792-48.708 63.302-108.24zM512 896c-35.346 0-64-28.654-64-64 0-35.348 28.654-64 64-64 35.348 0 64 28.652 64 64 0 35.346-28.652 64-64 64zM556 704h-88l-20-256c0-35.346 28.654-64 64-64s64 28.654 64 64l-20 256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "warning"
+ ],
+ "defaultCode": 58198,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 531,
+ "id": 1710,
+ "prevSize": 32,
+ "code": 59696,
+ "name": "warning"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 18
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448 704h128v128h-128zM704 256c35.346 0 64 28.654 64 64v192l-192 128h-128v-64l192-128v-64h-320v-128h384zM512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156 78.572 78.572 183.038 121.844 294.156 121.844 111.118 0 215.584-43.272 294.156-121.844 78.572-78.572 121.844-183.038 121.844-294.156 0-111.118-43.272-215.584-121.844-294.156-78.572-78.572-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512 0-282.77 229.23-512 512-512z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "question"
+ ],
+ "defaultCode": 58201,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 532,
+ "id": 1711,
+ "prevSize": 32,
+ "code": 59697,
+ "name": "question",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 19
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 896c-212.078 0-384-171.922-384-384s171.922-384 384-384c212.078 0 384 171.922 384 384 0 212.078-171.922 384-384 384zM768 576h-192v192h-128v-192h-192v-128h192v-192h128v192h192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "pluscircle"
+ ],
+ "defaultCode": 58206,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 533,
+ "id": 1712,
+ "prevSize": 32,
+ "code": 59698,
+ "name": "pluscircle",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 20
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM448 192h128v128h-128v-128zM640 832h-256v-64h64v-256h-64v-64h192v320h64v64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "info"
+ ],
+ "defaultCode": 58211,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 534,
+ "id": 1713,
+ "prevSize": 32,
+ "code": 59699,
+ "name": "info"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 21
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1024 736 736 0h-448l-288 288v448l288 288h448l288-288v-448l-288-288zM576 832h-128v-128h128v128zM576 576h-128v-384h128v384z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "notice"
+ ],
+ "defaultCode": 58218,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 535,
+ "id": 1714,
+ "prevSize": 32,
+ "code": 59700,
+ "name": "notice"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 22
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 640l192 192 320-320 320 320 192-192-511.998-512z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "arrowup"
+ ],
+ "defaultCode": 58288,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 536,
+ "id": 1715,
+ "prevSize": 32,
+ "code": 59707,
+ "name": "arrowup",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 23
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 0l-192 192 320 320-320 320 192 192 512-512z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "arrowright"
+ ],
+ "defaultCode": 58289,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 537,
+ "id": 1716,
+ "prevSize": 32,
+ "code": 59708,
+ "name": "arrowright",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 24
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1024 384l-192-192-320 320-320-320-192 192 512 511.998z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "arrowdown"
+ ],
+ "defaultCode": 58290,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 538,
+ "id": 1717,
+ "prevSize": 32,
+ "code": 59709,
+ "name": "arrowdown",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 25
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 640l-256-256-256 256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "arrowup2"
+ ],
+ "defaultCode": 58292,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 539,
+ "id": 1718,
+ "prevSize": 32,
+ "code": 59711,
+ "name": "arrowup2",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 26
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256 384l256 256 256-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "arrowdown2"
+ ],
+ "defaultCode": 58294,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 540,
+ "id": 1719,
+ "prevSize": 32,
+ "code": 59712,
+ "name": "arrowdown2",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 27
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256 256l256 256 256-256zM255.996 575.996l256 256 256-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "menu2"
+ ],
+ "defaultCode": 58393,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 541,
+ "id": 1720,
+ "prevSize": 32,
+ "code": 59713,
+ "name": "menu2",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 28
+ },
+ {
+ "icon": {
+ "paths": [
+ "M704 576l128-128v512h-768v-768h512l-128 128h-256v512h512zM960 64v352l-130.744-130.744-354.746 354.744h-90.51v-90.512l354.744-354.744-130.744-130.744z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "newtab"
+ ],
+ "defaultCode": 58492,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 607,
+ "id": 1721,
+ "prevSize": 32,
+ "code": 59745,
+ "name": "newtab",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 29
+ },
+ {
+ "icon": {
+ "paths": [
+ "M960 256v-64l-448 128-448-128v64l320 128v256l-128 448h64l192-448 192 448h64l-128-448v-256zM416 160q0-40 28-68t68-28 68 28 28 68-28 68-68 28-68-28-28-68z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 16,
+ "tags": [
+ "a11y"
+ ]
+ },
+ "attrs": [],
+ "properties": {
+ "order": 608,
+ "id": 1694,
+ "prevSize": 32,
+ "code": 59648,
+ "name": "a11y"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 30
+ },
+ {
+ "icon": {
+ "paths": [
+ "M892.8 982.4l-89.6-89.6c-70.4 80-172.8 131.2-288 131.2-208 0-380.8-166.4-384-377.6 0 0 0 0 0 0 0-3.2 0-3.2 0-6.4s0-3.2 0-6.4v0c0 0 0 0 0-3.2 0 0 0-3.2 0-3.2 3.2-105.6 48-211.2 105.6-304l-192-192 44.8-44.8 182.4 182.4c0 0 0 0 0 0l569.6 569.6c0 0 0 0 0 0l99.2 99.2-48 44.8zM896 633.6c0 0 0 0 0 0 0-3.2 0-6.4 0-6.4-9.6-316.8-384-627.2-384-627.2s-108.8 89.6-208 220.8l70.4 70.4c6.4-9.6 16-22.4 22.4-32 41.6-51.2 83.2-96 115.2-128v0c32 32 73.6 76.8 115.2 128 108.8 137.6 169.6 265.6 172.8 371.2 0 0 0 3.2 0 3.2v0 0c0 3.2 0 3.2 0 6.4s0 3.2 0 3.2v0 0c0 22.4-3.2 41.6-9.6 64l76.8 76.8c16-41.6 28.8-89.6 28.8-137.6 0 0 0 0 0 0 0-3.2 0-3.2 0-6.4s-0-3.2-0-6.4z"
+ ],
+ "attrs": [
+ {}
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "invert"
+ ],
+ "grid": 16,
+ "defaultCode": 58882
+ },
+ "attrs": [
+ {}
+ ],
+ "properties": {
+ "order": 609,
+ "id": 0,
+ "prevSize": 32,
+ "code": 58882,
+ "name": "invert"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 31
+ },
+ {
+ "icon": {
+ "paths": [
+ "M928 128h-416l-32-64h-352l-64 128h896zM904.34 704h74.86l44.8-448h-1024l64 640h484.080c-104.882-37.776-180.080-138.266-180.080-256 0-149.982 122.018-272 272-272 149.98 0 272 122.018 272 272 0 21.678-2.622 43.15-7.66 64zM1002.996 913.75l-198.496-174.692c17.454-28.92 27.5-62.814 27.5-99.058 0-106.040-85.96-192-192-192s-192 85.96-192 192 85.96 192 192 192c36.244 0 70.138-10.046 99.058-27.5l174.692 198.496c22.962 26.678 62.118 28.14 87.006 3.252l5.492-5.492c24.888-24.888 23.426-64.044-3.252-87.006zM640 764c-68.484 0-124-55.516-124-124s55.516-124 124-124 124 55.516 124 124-55.516 124-124 124z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57396,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 0,
+ "order": 610,
+ "prevSize": 32,
+ "code": 57396,
+ "name": "browse",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 32
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 256h64v64h-64zM640 384h64v64h-64zM640 512h64v64h-64zM640 640h64v64h-64zM512 512h64v64h-64zM512 640h64v64h-64zM384 640h64v64h-64zM768 384h64v64h-64zM768 512h64v64h-64zM768 640h64v64h-64zM768 768h64v64h-64zM640 768h64v64h-64zM512 768h64v64h-64zM384 768h64v64h-64zM256 768h64v64h-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "resize",
+ "dots"
+ ],
+ "defaultCode": 57394,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 1,
+ "order": 611,
+ "prevSize": 32,
+ "code": 57394,
+ "name": "resize",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 33
+ },
+ {
+ "icon": {
+ "paths": [
+ "M832 256h-192v-64l-192-192h-448v768h384v256h640v-576l-192-192zM832 346.51l101.49 101.49h-101.49v-101.49zM448 90.51l101.49 101.49h-101.49v-101.49zM64 64h320v192h192v448h-512v-640zM960 960h-512v-192h192v-448h128v192h192v448z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "copy"
+ ],
+ "defaultCode": 57393,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 2,
+ "order": 612,
+ "prevSize": 32,
+ "code": 57393,
+ "name": "copy",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 34
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256 64h512v128h-128v768h-128v-768h-128v768h-128v-448c-123.712 0-224-100.288-224-224s100.288-224 224-224zM960 896l-256-224 256-224z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "rtl"
+ ],
+ "defaultCode": 57392,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 3,
+ "order": 613,
+ "prevSize": 32,
+ "code": 57392,
+ "name": "rtl",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 35
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448 64h512v128h-128v768h-128v-768h-128v768h-128v-448c-123.712 0-224-100.288-224-224s100.288-224 224-224zM64 448l256 224-256 224z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "ltr"
+ ],
+ "defaultCode": 57391,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 4,
+ "order": 542,
+ "prevSize": 32,
+ "code": 57391,
+ "name": "ltr",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 36
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 64h512v128h-128v768h-128v-768h-128v768h-128v-448c-123.712 0-224-100.288-224-224s100.288-224 224-224z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "visualchars"
+ ],
+ "defaultCode": 57390,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 5,
+ "order": 543,
+ "prevSize": 32,
+ "code": 57390,
+ "name": "visualchars",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 37
+ },
+ {
+ "icon": {
+ "paths": [
+ "M731.42 517.036c63.92 47.938 100.58 116.086 100.58 186.964s-36.66 139.026-100.58 186.964c-59.358 44.518-137.284 69.036-219.42 69.036-82.138 0-160.062-24.518-219.42-69.036-63.92-47.938-100.58-116.086-100.58-186.964h128c0 69.382 87.926 128 192 128 104.074 0 192-58.618 192-128 0-69.382-87.926-128-192-128-82.138 0-160.062-24.518-219.42-69.036-63.92-47.94-100.58-116.086-100.58-186.964 0-70.878 36.66-139.024 100.58-186.964 59.358-44.518 137.282-69.036 219.42-69.036 82.136 0 160.062 24.518 219.42 69.036 63.92 47.94 100.58 116.086 100.58 186.964h-128c0-69.382-87.926-128-192-128-104.074 0-192 58.618-192 128 0 69.382 87.926 128 192 128 82.136 0 160.062 24.518 219.42 69.036zM0 512h1024v64h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "strikethrough"
+ ],
+ "defaultCode": 57389,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 6,
+ "order": 544,
+ "prevSize": 32,
+ "code": 57389,
+ "name": "strikethrough",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 38
+ },
+ {
+ "icon": {
+ "paths": [
+ "M704 64h128v416c0 159.058-143.268 288-320 288-176.73 0-320-128.942-320-288v-416h128v416c0 40.166 18.238 78.704 51.354 108.506 36.896 33.204 86.846 51.494 140.646 51.494 53.8 0 103.75-18.29 140.646-51.494 33.116-29.802 51.354-68.34 51.354-108.506v-416zM192 832h640v128h-640z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "underline"
+ ],
+ "defaultCode": 57388,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 7,
+ "order": 545,
+ "prevSize": 32,
+ "code": 57388,
+ "name": "underline",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 39
+ },
+ {
+ "icon": {
+ "paths": [
+ "M896 64v64h-128l-320 768h128v64h-448v-64h128l320-768h-128v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "italic"
+ ],
+ "defaultCode": 57387,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 8,
+ "order": 546,
+ "prevSize": 32,
+ "code": 57387,
+ "name": "italic",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 40
+ },
+ {
+ "icon": {
+ "paths": [
+ "M707.88 484.652c37.498-44.542 60.12-102.008 60.12-164.652 0-141.16-114.842-256-256-256h-320v896h384c141.158 0 256-114.842 256-256 0-92.956-49.798-174.496-124.12-219.348zM384 192h101.5c55.968 0 101.5 57.42 101.5 128s-45.532 128-101.5 128h-101.5v-256zM543 832h-159v-256h159c58.45 0 106 57.42 106 128s-47.55 128-106 128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "bold0"
+ ],
+ "defaultCode": 57386,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 9,
+ "order": 547,
+ "prevSize": 32,
+ "code": 57386,
+ "name": "bold",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 41
+ },
+ {
+ "icon": {
+ "paths": [
+ "M576 64c247.424 0 448 200.576 448 448s-200.576 448-448 448v-96c94.024 0 182.418-36.614 248.902-103.098 66.484-66.484 103.098-154.878 103.098-248.902 0-94.022-36.614-182.418-103.098-248.902-66.484-66.484-154.878-103.098-248.902-103.098-94.022 0-182.418 36.614-248.902 103.098-51.14 51.138-84.582 115.246-97.306 184.902h186.208l-224 256-224-256h164.57c31.060-217.102 217.738-384 443.43-384zM768 448v128h-256v-320h128v192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "restoredraft"
+ ],
+ "defaultCode": 57384,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 11,
+ "order": 548,
+ "prevSize": 32,
+ "code": 57384,
+ "name": "restoredraft",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 42
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 512h128v64h-128zM192 512h192v64h-192zM448 512h128v64h-128zM640 512h192v64h-192zM896 512h128v64h-128zM880 0l16 448h-768l16-448h32l16 384h640l16-384zM144 1024l-16-384h768l-16 384h-32l-16-320h-640l-16 320z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "pagebreak"
+ ],
+ "defaultCode": 57383,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 12,
+ "order": 549,
+ "prevSize": 32,
+ "code": 57383,
+ "name": "pagebreak",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 43
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 192h128v64h-128zM576 192h128v64h-128zM896 192v256h-192v-64h128v-128h-64v-64zM320 384h128v64h-128zM512 384h128v64h-128zM192 256v128h64v64h-128v-256h192v64zM384 576h128v64h-128zM576 576h128v64h-128zM896 576v256h-192v-64h128v-128h-64v-64zM320 768h128v64h-128zM512 768h128v64h-128zM192 640v128h64v64h-128v-256h192v64zM960 64h-896v896h896v-896zM1024 0v0 1024h-1024v-1024h1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "template"
+ ],
+ "defaultCode": 57382,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 13,
+ "order": 550,
+ "prevSize": 32,
+ "code": 57382,
+ "name": "template",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 44
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448 576h-192v-128h192v-192h128v192h192v128h-192v192h-128zM1024 640v384h-1024v-384h128v256h768v-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "nonbreaking"
+ ],
+ "defaultCode": 57381,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 14,
+ "order": 551,
+ "prevSize": 32,
+ "code": 57381,
+ "name": "nonbreaking",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 45
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 256h128v192h64v-384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v384h64v-192zM128 64h128v128h-128v-128zM960 64v-64h-192c-35.202 0-64 28.8-64 64v320c0 35.2 28.798 64 64 64h192v-64h-192v-320h192zM640 160v-96c0-35.2-28.8-64-64-64h-192v448h192c35.2 0 64-28.8 64-64v-96c0-35.2-8.8-64-44-64 35.2 0 44-28.8 44-64zM576 384h-128v-128h128v128zM576 192h-128v-128h128v128zM832 576l-416 448-224-288 82-70 142 148 352-302z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "spellchecker"
+ ],
+ "defaultCode": 57380,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 15,
+ "order": 552,
+ "prevSize": 32,
+ "code": 57380,
+ "name": "spellchecker",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 46
+ },
+ {
+ "icon": {
+ "paths": [
+ "M704 896h256l64-128v256h-384v-214.214c131.112-56.484 224-197.162 224-361.786 0-214.432-157.598-382.266-352-382.266-194.406 0-352 167.832-352 382.266 0 164.624 92.886 305.302 224 361.786v214.214h-384v-256l64 128h256v-32.59c-187.63-66.46-320-227.402-320-415.41 0-247.424 229.23-448 512-448 282.77 0 512 200.576 512 448 0 188.008-132.37 348.95-320 415.41v32.59z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "charmap"
+ ],
+ "defaultCode": 57376,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 19,
+ "order": 614,
+ "prevSize": 32,
+ "code": 57376,
+ "name": "charmap",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 47
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 206v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "sup"
+ ],
+ "defaultCode": 57375,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 20,
+ "order": 615,
+ "prevSize": 32,
+ "code": 57375,
+ "name": "sup",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 48
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 910v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM676 256h-136l-188 188-188-188h-136l256 256-256 256h136l188-188 188 188h136l-256-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "sub"
+ ],
+ "defaultCode": 57374,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 21,
+ "order": 616,
+ "prevSize": 32,
+ "code": 57374,
+ "name": "sub",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 49
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 896h576v128h-576zM192 0h704v128h-704zM277.388 832l204.688-784.164 123.85 32.328-196.25 751.836zM929.774 1024l-129.774-129.774-129.774 129.774-62.226-62.226 129.774-129.774-129.774-129.774 62.226-62.226 129.774 129.774 129.774-129.774 62.226 62.226-129.774 129.774 129.774 129.774z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "removeformat"
+ ],
+ "defaultCode": 57373,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 22,
+ "order": 617,
+ "prevSize": 32,
+ "code": 57373,
+ "name": "removeformat",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 50
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 448h1024v128h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "hr"
+ ],
+ "defaultCode": 57372,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 23,
+ "order": 618,
+ "prevSize": 32,
+ "code": 57372,
+ "name": "hr",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 51
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64v896h1024v-896h-1024zM384 640v-192h256v192h-256zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "table"
+ ],
+ "defaultCode": 57371,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 24,
+ "order": 619,
+ "prevSize": 32,
+ "code": 57371,
+ "name": "table",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 52
+ },
+ {
+ "icon": {
+ "paths": [
+ "M322.018 832l57.6-192h264.764l57.6 192h113.632l-191.996-640h-223.236l-192 640h113.636zM475.618 320h72.764l57.6 192h-187.964l57.6-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "forecolor"
+ ],
+ "defaultCode": 57370,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 25,
+ "order": 620,
+ "prevSize": 32,
+ "code": 57370,
+ "name": "forecolor",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 53
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 320c-209.368 0-395.244 100.556-512 256 116.756 155.446 302.632 256 512 256 209.368 0 395.244-100.554 512-256-116.756-155.444-302.632-256-512-256zM448 448c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64 28.654-64 64-64zM773.616 705.296c-39.648 20.258-81.652 35.862-124.846 46.376-44.488 10.836-90.502 16.328-136.77 16.328-46.266 0-92.282-5.492-136.768-16.324-43.194-10.518-85.198-26.122-124.846-46.376-63.020-32.202-120.222-76.41-167.64-129.298 47.418-52.888 104.62-97.1 167.64-129.298 32.336-16.522 66.242-29.946 101.082-40.040-19.888 30.242-31.468 66.434-31.468 105.336 0 106.040 85.962 192 192 192 106.038 0 192-85.96 192-192 0-38.902-11.582-75.094-31.466-105.34 34.838 10.096 68.744 23.52 101.082 40.042 63.022 32.198 120.218 76.408 167.638 129.298-47.42 52.886-104.618 97.1-167.638 129.296zM860.918 243.722c-108.72-55.554-226.112-83.722-348.918-83.722-122.806 0-240.198 28.168-348.918 83.722-58.772 30.032-113.732 67.904-163.082 112.076v109.206c55.338-58.566 120.694-107.754 192.194-144.29 99.62-50.904 207.218-76.714 319.806-76.714s220.186 25.81 319.804 76.716c71.502 36.536 136.858 85.724 192.196 144.29v-109.206c-49.35-44.174-104.308-82.046-163.082-112.078z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "preview"
+ ],
+ "defaultCode": 57369,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 26,
+ "order": 553,
+ "prevSize": 32,
+ "code": 57369,
+ "name": "preview",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 54
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 192c-212.076 0-384 171.922-384 384s171.922 384 384 384c212.074 0 384-171.922 384-384s-171.926-384-384-384zM715.644 779.646c-54.392 54.396-126.716 84.354-203.644 84.354s-149.25-29.958-203.646-84.354c-54.396-54.394-84.354-126.718-84.354-203.646s29.958-149.25 84.354-203.646c54.396-54.396 126.718-84.354 203.646-84.354s149.252 29.958 203.642 84.354c54.402 54.396 84.358 126.718 84.358 203.646s-29.958 149.252-84.356 203.646zM325.93 203.862l-42.94-85.878c-98.874 49.536-179.47 130.132-229.006 229.008l85.876 42.94c40.248-80.336 105.732-145.822 186.070-186.070zM884.134 389.93l85.878-42.938c-49.532-98.876-130.126-179.472-229.004-229.008l-42.944 85.878c80.338 40.248 145.824 105.732 186.070 186.068zM512 384h-64v192c0 10.11 4.7 19.11 12.022 24.972l-0.012 0.016 160 128 39.976-49.976-147.986-118.39v-176.622z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "inserttime"
+ ],
+ "defaultCode": 57368,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 27,
+ "order": 554,
+ "prevSize": 32,
+ "code": 57368,
+ "name": "inserttime",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 55
+ },
+ {
+ "icon": {
+ "paths": [
+ "M320 256l-256 256 256 256h128l-256-256 256-256zM704 256h-128l256 256-256 256h128l256-256z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "code"
+ ],
+ "defaultCode": 57367,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 28,
+ "order": 555,
+ "prevSize": 32,
+ "code": 57367,
+ "name": "code",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 56
+ },
+ {
+ "icon": {
+ "paths": [
+ "M448 704h128v128h-128zM704 256c35.346 0 64 28.654 64 64v192l-192 128h-128v-64l192-128v-64h-320v-128h384zM512 96c-111.118 0-215.584 43.272-294.156 121.844s-121.844 183.038-121.844 294.156c0 111.118 43.272 215.584 121.844 294.156 78.572 78.572 183.038 121.844 294.156 121.844 111.118 0 215.584-43.272 294.156-121.844 78.572-78.572 121.844-183.038 121.844-294.156 0-111.118-43.272-215.584-121.844-294.156-78.572-78.572-183.038-121.844-294.156-121.844zM512 0v0c282.77 0 512 229.23 512 512s-229.23 512-512 512c-282.77 0-512-229.23-512-512 0-282.77 229.23-512 512-512z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "help"
+ ],
+ "defaultCode": 57366,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 29,
+ "order": 556,
+ "prevSize": 32,
+ "code": 57366,
+ "name": "help",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 57
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 128v768h1024v-768h-1024zM192 832h-128v-128h128v128zM192 576h-128v-128h128v128zM192 320h-128v-128h128v128zM768 832h-512v-640h512v640zM960 832h-128v-128h128v128zM960 576h-128v-128h128v128zM960 320h-128v-128h128v128zM384 320v384l256-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "media"
+ ],
+ "defaultCode": 57365,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 30,
+ "order": 557,
+ "prevSize": 32,
+ "code": 57365,
+ "name": "media",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 58
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 128v832h1024v-832h-1024zM960 896h-896v-704h896v704zM704 352c0-53.019 42.981-96 96-96s96 42.981 96 96c0 53.019-42.981 96-96 96-53.019 0-96-42.981-96-96zM896 832h-768l192-512 256 320 128-96z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "image"
+ ],
+ "defaultCode": 57364,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 31,
+ "order": 558,
+ "prevSize": 32,
+ "code": 57364,
+ "name": "image",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 59
+ },
+ {
+ "icon": {
+ "paths": [
+ "M192 0v1024l320-320 320 320v-1024h-640zM768 869.49l-256-256-256 256v-805.49h512v805.49z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "anchor"
+ ],
+ "defaultCode": 57363,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 32,
+ "order": 559,
+ "prevSize": 32,
+ "code": 57363,
+ "name": "anchor",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 60
+ },
+ {
+ "icon": {
+ "paths": [
+ "M476.888 675.114c4.56 9.048 6.99 19.158 6.99 29.696 0 17.616-6.744 34.058-18.992 46.308l-163.38 163.38c-12.248 12.248-28.696 18.992-46.308 18.992s-34.060-6.744-46.308-18.992l-99.38-99.38c-12.248-12.25-18.992-28.696-18.992-46.308s6.744-34.060 18.992-46.308l163.38-163.382c12.248-12.246 28.696-18.992 46.308-18.992 10.538 0 20.644 2.43 29.696 6.988l65.338-65.336c-27.87-21.41-61.44-32.16-95.034-32.16-39.986 0-79.972 15.166-110.308 45.502l-163.38 163.382c-60.67 60.67-60.67 159.95 0 220.618l99.38 99.382c30.334 30.332 70.32 45.5 110.306 45.5 39.988 0 79.974-15.168 110.308-45.502l163.38-163.38c55.82-55.82 60.238-144.298 13.344-205.346l-65.34 65.338zM978.496 144.884l-99.38-99.382c-30.334-30.336-70.32-45.502-110.308-45.502-39.986 0-79.97 15.166-110.306 45.502l-163.382 163.382c-55.82 55.82-60.238 144.298-13.342 205.342l65.338-65.34c-4.558-9.050-6.988-19.16-6.988-29.694 0-17.616 6.744-34.060 18.992-46.308l163.382-163.382c12.246-12.248 28.694-18.994 46.306-18.994 17.616 0 34.060 6.746 46.308 18.994l99.38 99.382c12.248 12.248 18.992 28.694 18.992 46.308s-6.744 34.060-18.992 46.308l-163.38 163.382c-12.248 12.248-28.694 18.992-46.308 18.992-10.536 0-20.644-2.43-29.696-6.99l-65.338 65.338c27.872 21.41 61.44 32.16 95.034 32.16 39.988 0 79.974-15.168 110.308-45.504l163.38-163.38c60.672-60.666 60.672-159.944 0-220.614zM233.368 278.624l-191.994-191.994 45.256-45.256 191.994 191.994zM384 0h64v192h-64zM0 384h192v64h-192zM790.632 745.376l191.996 191.996-45.256 45.256-191.996-191.996zM576 832h64v192h-64zM832 576h192v64h-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "unlink"
+ ],
+ "defaultCode": 57362,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 33,
+ "order": 560,
+ "prevSize": 32,
+ "code": 57362,
+ "name": "unlink",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 61
+ },
+ {
+ "icon": {
+ "paths": [
+ "M320 704c17.6 17.6 47.274 16.726 65.942-1.942l316.118-316.116c18.668-18.668 19.54-48.342 1.94-65.942s-47.274-16.726-65.942 1.942l-316.116 316.116c-18.668 18.668-19.542 48.342-1.942 65.942zM476.888 675.112c4.56 9.050 6.99 19.16 6.99 29.696 0 17.616-6.744 34.060-18.992 46.308l-163.382 163.382c-12.248 12.248-28.694 18.992-46.308 18.992s-34.060-6.744-46.308-18.992l-99.382-99.382c-12.248-12.248-18.992-28.694-18.992-46.308s6.744-34.060 18.992-46.308l163.382-163.382c12.248-12.248 28.694-18.994 46.308-18.994 10.536 0 20.644 2.43 29.696 6.99l65.338-65.338c-27.87-21.41-61.44-32.16-95.034-32.16-39.986 0-79.972 15.166-110.308 45.502l-163.382 163.382c-60.67 60.67-60.67 159.948 0 220.618l99.382 99.382c30.334 30.332 70.32 45.5 110.306 45.5 39.988 0 79.974-15.168 110.308-45.502l163.382-163.382c55.82-55.82 60.238-144.298 13.344-205.344l-65.34 65.34zM978.498 144.884l-99.382-99.382c-30.334-30.336-70.32-45.502-110.308-45.502-39.986 0-79.972 15.166-110.308 45.502l-163.382 163.382c-55.82 55.82-60.238 144.298-13.342 205.342l65.338-65.34c-4.558-9.050-6.988-19.16-6.988-29.694 0-17.616 6.744-34.060 18.992-46.308l163.382-163.382c12.248-12.248 28.694-18.994 46.308-18.994s34.060 6.746 46.308 18.994l99.382 99.382c12.248 12.248 18.992 28.694 18.992 46.308s-6.744 34.060-18.992 46.308l-163.382 163.382c-12.248 12.248-28.694 18.992-46.308 18.992-10.536 0-20.644-2.43-29.696-6.99l-65.338 65.338c27.872 21.41 61.44 32.16 95.034 32.16 39.988 0 79.974-15.168 110.308-45.502l163.382-163.382c60.67-60.666 60.67-159.944 0-220.614z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "link"
+ ],
+ "defaultCode": 57361,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 34,
+ "order": 561,
+ "prevSize": 32,
+ "code": 57361,
+ "name": "link",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 62
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM256 320v384l-256-192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "outdent"
+ ],
+ "defaultCode": 57357,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 38,
+ "order": 562,
+ "prevSize": 32,
+ "code": 57357,
+ "name": "outdent",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 63
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 448h640v128h-640zM384 640h640v128h-640zM0 832h1024v128h-1024zM0 704v-384l256 192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "indent"
+ ],
+ "defaultCode": 57356,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 39,
+ "order": 563,
+ "prevSize": 32,
+ "code": 57356,
+ "name": "indent",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 64
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 832h640v128h-640zM384 448h640v128h-640zM384 64h640v128h-640zM192 0v256h-64v-192h-64v-64zM128 526v50h128v64h-192v-146l128-60v-50h-128v-64h192v146zM256 704v320h-192v-64h128v-64h-128v-64h128v-64h-128v-64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "numlist"
+ ],
+ "defaultCode": 57355,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 40,
+ "order": 621,
+ "prevSize": 32,
+ "code": 57355,
+ "name": "numlist",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 65
+ },
+ {
+ "icon": {
+ "paths": [
+ "M384 64h640v128h-640v-128zM384 448h640v128h-640v-128zM384 832h640v128h-640v-128zM0 128c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128zM0 512c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128zM0 896c0-70.692 57.308-128 128-128 70.692 0 128 57.308 128 128 0 70.692-57.308 128-128 128-70.692 0-128-57.308-128-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "bullist"
+ ],
+ "defaultCode": 57354,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 41,
+ "order": 622,
+ "prevSize": 32,
+ "code": 57354,
+ "name": "bullist",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 66
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 0h384v64h-384zM576 0h384v64h-384zM952 320h-56v-256h-256v256h-256v-256h-256v256h-56c-39.6 0-72 32.4-72 72v560c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-376h128v376c0 39.6 32.4 72 72 72h304c39.6 0 72-32.4 72-72v-560c0-39.6-32.4-72-72-72zM348 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32zM544 512h-64c-17.6 0-32-14.4-32-32s14.4-32 32-32h64c17.6 0 32 14.4 32 32s-14.4 32-32 32zM924 960h-248c-19.8 0-36-14.4-36-32s16.2-32 36-32h248c19.8 0 36 14.4 36 32s-16.2 32-36 32z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "searchreplace"
+ ],
+ "defaultCode": 57353,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 42,
+ "order": 623,
+ "prevSize": 32,
+ "code": 57353,
+ "name": "searchreplace",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 67
+ },
+ {
+ "icon": {
+ "paths": [
+ "M832 320v-160c0-17.6-14.4-32-32-32h-224v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-224c-17.602 0-32 14.4-32 32v640c0 17.6 14.398 32 32 32h288v192h448l192-192v-512h-192zM384 64.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 256v-64h512v64h-512zM832 933.49v-101.49h101.49l-101.49 101.49zM960 768h-192v192h-320v-576h512v384z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "paste"
+ ],
+ "defaultCode": 57352,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 43,
+ "order": 624,
+ "prevSize": 32,
+ "code": 57352,
+ "name": "paste",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 68
+ },
+ {
+ "icon": {
+ "paths": [
+ "M890.774 709.154c-45.654-45.556-103.728-69.072-157.946-69.072h-29.112l-63.904-64.008 255.62-256.038c63.904-64.010 63.904-192.028 0-256.038l-383.43 384.056-383.432-384.054c-63.904 64.008-63.904 192.028 0 256.038l255.622 256.034-63.906 64.008h-29.114c-54.22 0-112.292 23.518-157.948 69.076-81.622 81.442-92.65 202.484-24.63 270.35 29.97 29.902 70.288 44.494 112.996 44.494 54.216 0 112.29-23.514 157.946-69.072 53.584-53.464 76.742-124 67.084-185.348l65.384-65.488 65.376 65.488c-9.656 61.348 13.506 131.882 67.084 185.348 45.662 45.558 103.732 69.072 157.948 69.072 42.708 0 83.024-14.592 112.994-44.496 68.020-67.866 56.988-188.908-24.632-270.35zM353.024 845.538c-7.698 17.882-19.010 34.346-33.626 48.926-14.636 14.604-31.172 25.918-49.148 33.624-16.132 6.916-32.96 10.568-48.662 10.568-15.146 0-36.612-3.402-52.862-19.612-16.136-16.104-19.52-37.318-19.52-52.288 0-15.542 3.642-32.21 10.526-48.212 7.7-17.884 19.014-34.346 33.626-48.926 14.634-14.606 31.172-25.914 49.15-33.624 16.134-6.914 32.96-10.568 48.664-10.568 15.146 0 36.612 3.4 52.858 19.614 16.134 16.098 19.522 37.316 19.522 52.284 0.002 15.542-3.638 32.216-10.528 48.214zM512.004 666.596c-49.914 0-90.376-40.532-90.376-90.526 0-49.992 40.462-90.52 90.376-90.52s90.372 40.528 90.372 90.52c0 49.998-40.46 90.526-90.372 90.526zM855.272 919.042c-16.248 16.208-37.712 19.612-52.86 19.612-15.704 0-32.53-3.652-48.666-10.568-17.972-7.706-34.508-19.020-49.142-33.624-14.614-14.58-25.926-31.042-33.626-48.926-6.886-15.998-10.526-32.672-10.526-48.212 0-14.966 3.384-36.188 19.52-52.286 16.246-16.208 37.712-19.614 52.86-19.614 15.7 0 32.53 3.654 48.66 10.568 17.978 7.708 34.516 19.018 49.15 33.624 14.61 14.58 25.924 31.042 33.626 48.926 6.884 15.998 10.526 32.67 10.526 48.212-0.002 14.97-3.39 36.186-19.522 52.288z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "cut"
+ ],
+ "defaultCode": 57351,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 44,
+ "order": 625,
+ "prevSize": 32,
+ "code": 57351,
+ "name": "cut",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 69
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64h1024v128h-1024zM0 256h1024v128h-1024zM0 448h1024v128h-1024zM0 640h1024v128h-1024zM0 832h1024v128h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "alignjustify"
+ ],
+ "defaultCode": 57350,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 45,
+ "order": 626,
+ "prevSize": 32,
+ "code": 57350,
+ "name": "alignjustify",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 70
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64h1024v128h-1024zM384 256h640v128h-640zM384 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "alignright"
+ ],
+ "defaultCode": 57349,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 46,
+ "order": 627,
+ "prevSize": 32,
+ "code": 57349,
+ "name": "alignright",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 71
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64h1024v128h-1024zM192 256h640v128h-640zM192 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "aligncenter"
+ ],
+ "defaultCode": 57348,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 47,
+ "order": 564,
+ "prevSize": 32,
+ "code": 57348,
+ "name": "aligncenter",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 72
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64h1024v128h-1024zM0 256h640v128h-640zM0 640h640v128h-640zM0 448h1024v128h-1024zM0 832h1024v128h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "alignleft"
+ ],
+ "defaultCode": 57347,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 48,
+ "order": 565,
+ "prevSize": 32,
+ "code": 57347,
+ "name": "alignleft",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 73
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1024 592.458v-160.916l-159.144-15.914c-8.186-30.042-20.088-58.548-35.21-84.98l104.596-127.838-113.052-113.050-127.836 104.596c-26.434-15.124-54.942-27.026-84.982-35.208l-15.914-159.148h-160.916l-15.914 159.146c-30.042 8.186-58.548 20.086-84.98 35.208l-127.838-104.594-113.050 113.050 104.596 127.836c-15.124 26.432-27.026 54.94-35.21 84.98l-159.146 15.916v160.916l159.146 15.914c8.186 30.042 20.086 58.548 35.21 84.982l-104.596 127.836 113.048 113.048 127.838-104.596c26.432 15.124 54.94 27.028 84.98 35.21l15.916 159.148h160.916l15.914-159.144c30.042-8.186 58.548-20.088 84.982-35.21l127.836 104.596 113.048-113.048-104.596-127.836c15.124-26.434 27.028-54.942 35.21-84.98l159.148-15.92zM704 576l-128 128h-128l-128-128v-128l128-128h128l128 128v128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "fullpage"
+ ],
+ "defaultCode": 57346,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 49,
+ "order": 566,
+ "prevSize": 32,
+ "code": 57346,
+ "name": "fullpage",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 74
+ },
+ {
+ "icon": {
+ "paths": [
+ "M903.432 199.43l-142.864-142.862c-31.112-31.112-92.568-56.568-136.568-56.568h-480c-44 0-80 36-80 80v864c0 44 36 80 80 80h736c44 0 80-36 80-80v-608c0-44-25.456-105.458-56.568-136.57zM858.178 244.686c3.13 3.13 6.25 6.974 9.28 11.314h-163.458v-163.456c4.34 3.030 8.184 6.15 11.314 9.28l142.864 142.862zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16h480c4.832 0 10.254 0.61 16 1.704v254.296h254.296c1.094 5.746 1.704 11.166 1.704 16v608z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "newdocument"
+ ],
+ "defaultCode": 57345,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 50,
+ "order": 567,
+ "prevSize": 32,
+ "code": 57345,
+ "name": "newdocument",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 75
+ },
+ {
+ "icon": {
+ "paths": [
+ "M896 0h-896v1024h1024v-896l-128-128zM512 128h128v256h-128v-256zM896 896h-768v-768h64v320h576v-320h74.978l53.022 53.018v714.982z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "save"
+ ],
+ "defaultCode": 57344,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 51,
+ "order": 568,
+ "prevSize": 32,
+ "code": 57344,
+ "name": "save",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 76
+ },
+ {
+ "icon": {
+ "paths": [
+ "M128 544l288 288 480-480-128-128-352 352-160-160z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "defaultCode": 57395,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 52,
+ "order": 569,
+ "prevSize": 32,
+ "code": 57395,
+ "name": "checkbox",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 77
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 512v128h32l32-64h64v256h-48v64h224v-64h-48v-256h64l32 64h32v-128zM832 320v-160c0-17.6-14.4-32-32-32h-224v-64c0-35.2-28.8-64-64-64h-128c-35.204 0-64 28.8-64 64v64h-224c-17.602 0-32 14.4-32 32v640c0 17.6 14.398 32 32 32h288v192h640v-704h-192zM384 64.114c0.034-0.038 0.072-0.078 0.114-0.114h127.768c0.042 0.036 0.082 0.076 0.118 0.114l0 63.886h-128v-63.886zM192 256v-64h512v64h-512zM960 960h-512v-576h512v576z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "pastetext"
+ ],
+ "defaultCode": 57397,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 53,
+ "order": 570,
+ "prevSize": 32,
+ "code": 57397,
+ "name": "pastetext",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 78
+ },
+ {
+ "icon": {
+ "paths": [
+ "M1024 0v384l-138.26-138.26-212 212-107.48-107.48 212-212-138.26-138.26zM245.74 138.26l212 212-107.48 107.48-212-212-138.26 138.26v-384h384zM885.74 778.26l138.26-138.26v384h-384l138.26-138.26-212-212 107.48-107.48zM457.74 673.74l-212 212 138.26 138.26h-384v-384l138.26 138.26 212-212z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "fullscreen"
+ ],
+ "defaultCode": 57379,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 16,
+ "order": 571,
+ "prevSize": 32,
+ "code": 57379,
+ "name": "fullscreen",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 79
+ },
+ {
+ "icon": {
+ "paths": [
+ "M256 64h512v128h-512zM960 256h-896c-35.2 0-64 28.8-64 64v320c0 35.2 28.796 64 64 64h192v256h512v-256h192c35.2 0 64-28.8 64-64v-320c0-35.2-28.8-64-64-64zM704 896h-384v-320h384v320zM974.4 352c0 25.626-20.774 46.4-46.398 46.4-25.626 0-46.402-20.774-46.402-46.4s20.776-46.4 46.402-46.4c25.626 0 46.398 20.774 46.398 46.4z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "print"
+ ],
+ "defaultCode": 57378,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 17,
+ "order": 572,
+ "prevSize": 32,
+ "code": 57378,
+ "name": "print",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 80
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.228-512 512 0 282.77 229.228 512 512 512 282.77 0 512-229.23 512-512 0-282.772-229.23-512-512-512zM512 944c-238.586 0-432-193.412-432-432 0-238.586 193.414-432 432-432 238.59 0 432 193.414 432 432 0 238.588-193.41 432-432 432zM384 320c0 35.346-28.654 64-64 64s-64-28.654-64-64 28.654-64 64-64 64 28.654 64 64zM768 320c0 35.346-28.652 64-64 64s-64-28.654-64-64 28.652-64 64-64 64 28.654 64 64zM512 652c141.074 0 262.688-57.532 318.462-123.192-20.872 171.22-156.288 303.192-318.462 303.192-162.118 0-297.498-132.026-318.444-303.168 55.786 65.646 177.386 123.168 318.444 123.168z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "emoticons"
+ ],
+ "defaultCode": 57377,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 18,
+ "order": 573,
+ "prevSize": 32,
+ "code": 57377,
+ "name": "emoticons",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 81
+ },
+ {
+ "icon": {
+ "paths": [
+ "M225 448c123.712 0 224 100.29 224 224 0 123.712-100.288 224-224 224-123.712 0-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.634 11.636-22.252 24.016-31.83 37.020 11.438-1.8 23.16-2.746 35.104-2.746zM801 448c123.71 0 224 100.29 224 224 0 123.712-100.29 224-224 224-123.71 0-224-100.288-224-224l-1-32c0-247.424 200.576-448 448-448v128c-85.474 0-165.834 33.286-226.274 93.726-11.636 11.636-22.254 24.016-31.832 37.020 11.44-1.8 23.16-2.746 35.106-2.746z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "blockquote"
+ ],
+ "defaultCode": 57358,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 37,
+ "order": 574,
+ "prevSize": 32,
+ "code": 57358,
+ "name": "blockquote",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 82
+ },
+ {
+ "icon": {
+ "paths": [
+ "M761.862 1024c113.726-206.032 132.888-520.306-313.862-509.824v253.824l-384-384 384-384v248.372c534.962-13.942 594.57 472.214 313.862 775.628z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "undo"
+ ],
+ "defaultCode": 57359,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 36,
+ "order": 628,
+ "prevSize": 32,
+ "code": 57359,
+ "name": "undo",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 83
+ },
+ {
+ "icon": {
+ "paths": [
+ "M576 248.372v-248.372l384 384-384 384v-253.824c-446.75-10.482-427.588 303.792-313.86 509.824-280.712-303.414-221.1-789.57 313.86-775.628z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "redo"
+ ],
+ "defaultCode": 57360,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 35,
+ "order": 629,
+ "prevSize": 32,
+ "code": 57360,
+ "name": "redo",
+ "ligatures": ""
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 84
+ },
+ {
+ "icon": {
+ "paths": [
+ "M199.995 381.998v-104.002c0-43.078 34.923-78.001 78.001-78.001h26v-104.002h-26c-100.518 0-182.003 81.485-182.003 182.003v104.002c0 43.078-34.923 78.001-78.001 78.001h-26v104.002h26c43.078 0 78.001 34.923 78.001 78.001v104.002c0 100.515 81.485 182.003 182.003 182.003h26v-104.002h-26c-43.078 0-78.001-34.923-78.001-78.001v-104.002c0-50.931-20.928-96.966-54.646-130.002 33.716-33.036 54.646-79.072 54.646-130.002z",
+ "M824.005 381.998v-104.002c0-43.078-34.923-78.001-78.001-78.001h-26v-104.002h26c100.515 0 182.003 81.485 182.003 182.003v104.002c0 43.078 34.923 78.001 78.001 78.001h26v104.002h-26c-43.078 0-78.001 34.923-78.001 78.001v104.002c0 100.515-81.488 182.003-182.003 182.003h-26v-104.002h26c43.078 0 78.001-34.923 78.001-78.001v-104.002c0-50.931 20.928-96.966 54.646-130.002-33.716-33.036-54.646-79.072-54.646-130.002z",
+ "M616.002 356.715c0 57.439-46.562 104.002-104.002 104.002s-104.002-46.562-104.002-104.002c0-57.439 46.562-104.002 104.002-104.002s104.002 46.562 104.002 104.002z",
+ "M512 511.283c-57.439 0-104.002 46.562-104.002 104.002 0 55.845 26 100.115 105.752 103.88-23.719 33.417-59.441 46.612-105.752 50.944v61.751c0 0 208.003 18.144 208.003-216.577-0.202-57.441-46.56-104.004-104.002-104.004z"
+ ],
+ "width": 1024,
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "code",
+ "semicolon",
+ "curly-braces"
+ ],
+ "grid": 16,
+ "defaultCode": 58883
+ },
+ "attrs": [],
+ "properties": {
+ "order": 630,
+ "id": 1,
+ "prevSize": 32,
+ "code": 58883,
+ "name": "codesample"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 85
+ },
+ {
+ "icon": {
+ "paths": [
+ "M864.626 473.162c-65.754-183.44-205.11-348.15-352.626-473.162-147.516 125.012-286.87 289.722-352.626 473.162-40.664 113.436-44.682 236.562 12.584 345.4 65.846 125.14 198.632 205.438 340.042 205.438s274.196-80.298 340.040-205.44c57.27-108.838 53.25-231.962 12.586-345.398zM738.764 758.956c-43.802 83.252-132.812 137.044-226.764 137.044-55.12 0-108.524-18.536-152.112-50.652 13.242 1.724 26.632 2.652 40.112 2.652 117.426 0 228.668-67.214 283.402-171.242 44.878-85.292 40.978-173.848 23.882-244.338 14.558 28.15 26.906 56.198 36.848 83.932 22.606 63.062 40.024 156.34-5.368 242.604z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "drop"
+ ],
+ "defaultCode": 57381,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 87,
+ "order": 631,
+ "prevSize": 32,
+ "code": 59701,
+ "ligatures": "droplet, color9",
+ "name": "drop"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 86
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 128h-512l-256 256 512 576 512-576-256-256zM512 778.666v-2.666h-2.37l-14.222-16h16.592v-16h-30.814l-14.222-16h45.036v-16h-59.258l-14.222-16h73.48v-16h-87.704l-14.222-16h101.926v-16h-116.148l-14.222-16h130.37v-16h-144.592l-14.222-16h158.814v-16h-173.038l-14.222-16h187.26v-16h-201.482l-14.222-16h215.704v-16h-229.926l-14.222-16h244.148v-16h-258.372l-14.222-16h272.594v-16h-286.816l-14.222-16h301.038v-16h-315.26l-14.222-16h329.482v-16h-343.706l-7.344-8.262 139.072-139.072h211.978v3.334h215.314l16 16h-231.314v16h247.314l16 16h-263.314v16h279.314l16 16h-295.314v16h311.314l16 16h-327.314v16h343.312l7.738 7.738-351.050 394.928z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "diamond",
+ "gem",
+ "jewelry",
+ "dualtone"
+ ],
+ "defaultCode": 57889,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 635,
+ "order": 632,
+ "prevSize": 32,
+ "code": 60327,
+ "ligatures": "diamond2, gem2",
+ "name": "sharpen"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 87
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM128 512c0-212.078 171.922-384 384-384v768c-212.078 0-384-171.922-384-384z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "contrast"
+ ],
+ "defaultCode": 58104,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 854,
+ "order": 633,
+ "prevSize": 32,
+ "code": 60628,
+ "ligatures": "contrast",
+ "name": "contrast"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 88
+ },
+ {
+ "icon": {
+ "paths": [
+ "M893.254 221.254l-90.508-90.508-290.746 290.744-290.746-290.744-90.508 90.506 290.746 290.748-290.746 290.746 90.508 90.508 290.746-290.746 290.746 290.746 90.508-90.51-290.744-290.744z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "remove"
+ ],
+ "defaultCode": 60778,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 24,
+ "order": 634,
+ "prevSize": 32,
+ "code": 60778,
+ "ligatures": "cross2, cancel3",
+ "name": "remove22"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 89
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64v384c0 35.346 28.654 64 64 64s64-28.654 64-64v-229.488l677.488 677.488h-229.488c-35.346 0-64 28.652-64 64 0 35.346 28.654 64 64 64h384c35.346 0 64-28.654 64-64v-384c0-35.348-28.654-64-64-64s-64 28.652-64 64v229.488l-677.488-677.488h229.488c35.346 0 64-28.654 64-64s-28.652-64-64-64h-384c-35.346 0-64 28.654-64 64z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "resize2"
+ ],
+ "defaultCode": 58329,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 1097,
+ "order": 575,
+ "prevSize": 32,
+ "code": 60921,
+ "ligatures": "arrow-resize2, diagonal2",
+ "name": "resize2"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 90
+ },
+ {
+ "icon": {
+ "paths": [
+ "M483.2 640l-147.2-336c-9.6-25.6-19.2-44.8-25.6-54.4s-16-12.8-25.6-12.8c-16 0-25.6 3.2-28.8 3.2v-70.4c9.6-6.4 25.6-6.4 38.4-9.6 32 0 57.6 6.4 73.6 22.4 6.4 6.4 12.8 16 19.2 25.6 6.4 12.8 12.8 25.6 16 41.6l121.6 291.2 150.4-371.2h92.8l-198.4 470.4v224h-86.4v-224z",
+ "M0 0v1024h1024v-1024h-1024zM960 960h-896v-896h896v896z"
+ ],
+ "attrs": [
+ {},
+ {}
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "gamma2"
+ ],
+ "grid": 16,
+ "defaultCode": 58880
+ },
+ "attrs": [
+ {},
+ {}
+ ],
+ "properties": {
+ "order": 576,
+ "id": 1,
+ "prevSize": 32,
+ "code": 58880,
+ "name": "gamma"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 91
+ },
+ {
+ "icon": {
+ "paths": [
+ "M627.2 880h-579.2v-396.8h579.2v396.8zM553.6 553.6h-435.2v256h435.2v-256z",
+ "M259.2 227.2c176-176 457.6-176 633.6 0s176 457.6 0 633.6c-121.6 121.6-297.6 160-454.4 108.8 121.6 28.8 262.4-9.6 361.6-108.8 150.4-150.4 160-384 22.4-521.6-121.6-121.6-320-128-470.4-19.2l86.4 86.4-294.4 22.4 22.4-294.4 92.8 92.8z"
+ ],
+ "attrs": [
+ {},
+ {}
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "orientation"
+ ],
+ "grid": 16,
+ "defaultCode": 58881
+ },
+ "attrs": [
+ {},
+ {}
+ ],
+ "properties": {
+ "order": 577,
+ "id": 0,
+ "prevSize": 32,
+ "code": 58881,
+ "name": "orientation"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 92
+ },
+ {
+ "icon": {
+ "paths": [
+ "M768 544v352h-640v-640h352l128-128h-512c-52.8 0-96 43.2-96 96v704c0 52.8 43.2 96 96 96h704c52.798 0 96-43.2 96-96v-512l-128 128z",
+ "M864 0l-608 608v160h160l608-608c0-96-64-160-160-160zM416 640l-48-48 480-480 48 48-480 480z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "pencil",
+ "write",
+ "edit"
+ ],
+ "defaultCode": 57361,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 68,
+ "order": 578,
+ "prevSize": 32,
+ "code": 59669,
+ "ligatures": "pencil7, write7",
+ "name": "editimage"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 93
+ },
+ {
+ "icon": {
+ "paths": [
+ "M607.998 128.014c-212.070 0-383.986 171.916-383.986 383.986h-191.994l246.848 246.848 246.848-246.848h-191.994c0-151.478 122.798-274.276 274.276-274.276 151.48 0 274.276 122.798 274.276 274.276 0 151.48-122.796 274.276-274.276 274.276v109.71c212.070 0 383.986-171.916 383.986-383.986s-171.916-383.986-383.986-383.986z"
+ ],
+ "width": 1024,
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "rotate-ccw",
+ "ccw",
+ "arrow"
+ ],
+ "defaultCode": 60072,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 22,
+ "order": 579,
+ "prevSize": 32,
+ "code": 60072,
+ "ligatures": "rotate-ccw3, ccw4",
+ "name": "rotateleft"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 94
+ },
+ {
+ "icon": {
+ "paths": [
+ "M416.002 128.014c212.070 0 383.986 171.916 383.986 383.986h191.994l-246.848 246.848-246.848-246.848h191.994c0-151.478-122.798-274.276-274.276-274.276-151.48 0-274.276 122.798-274.276 274.276 0 151.48 122.796 274.276 274.276 274.276v109.71c-212.070 0-383.986-171.916-383.986-383.986s171.916-383.986 383.986-383.986z"
+ ],
+ "width": 1024,
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "rotate-cw",
+ "cw",
+ "arrow"
+ ],
+ "defaultCode": 60073,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 580,
+ "id": 1679,
+ "prevSize": 32,
+ "code": 60073,
+ "ligatures": "rotate-cw3, cw4",
+ "name": "rotateright"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 95
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 384h1024v-384zM1024 960v-384h-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "flip-vertical",
+ "mirror"
+ ],
+ "defaultCode": 57663,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 403,
+ "order": 581,
+ "prevSize": 32,
+ "code": 60074,
+ "ligatures": "flip-vertical, mirror",
+ "name": "flipv"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 96
+ },
+ {
+ "icon": {
+ "paths": [
+ "M576 0v1024h384zM0 1024h384v-1024z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "flip-horizontal",
+ "mirror"
+ ],
+ "defaultCode": 57664,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 405,
+ "order": 582,
+ "prevSize": 32,
+ "code": 60076,
+ "ligatures": "flip-horizontal, mirror3",
+ "name": "fliph"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 97
+ },
+ {
+ "icon": {
+ "paths": [
+ "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384 0 212.078 171.922 384 384 384 95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM448 192h-128v128h-128v128h128v128h128v-128h128v-128h-128z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "zoom-in",
+ "magnifier",
+ "magnifier-plus",
+ "enlarge"
+ ],
+ "defaultCode": 57788,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 534,
+ "order": 583,
+ "prevSize": 32,
+ "code": 60213,
+ "ligatures": "zoom-in3, magnifier9",
+ "name": "zoomin"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 98
+ },
+ {
+ "icon": {
+ "paths": [
+ "M992.262 871.396l-242.552-206.294c-25.074-22.566-51.89-32.926-73.552-31.926 57.256-67.068 91.842-154.078 91.842-249.176 0-212.078-171.922-384-384-384-212.076 0-384 171.922-384 384 0 212.078 171.922 384 384 384 95.098 0 182.108-34.586 249.176-91.844-1 21.662 9.36 48.478 31.926 73.552l206.294 242.552c35.322 39.246 93.022 42.554 128.22 7.356s31.892-92.898-7.354-128.22zM384 640c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.614 256-256 256zM192 320h384v128h-384z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "zoom-out",
+ "magnifier",
+ "magnifier-minus",
+ "reduce"
+ ],
+ "defaultCode": 57789,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 535,
+ "order": 584,
+ "prevSize": 32,
+ "code": 60214,
+ "ligatures": "zoom-out3, magnifier10",
+ "name": "zoomout"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 99
+ },
+ {
+ "icon": {
+ "paths": [
+ "M64 192h896v192h-896zM64 448h896v192h-896zM64 704h896v192h-896z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "menu",
+ "list",
+ "options",
+ "lines",
+ "hamburger"
+ ],
+ "defaultCode": 58031,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "order": 585,
+ "id": 1448,
+ "prevSize": 32,
+ "code": 60522,
+ "ligatures": "menu3, list4",
+ "name": "options"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 100
+ },
+ {
+ "icon": {
+ "paths": [
+ "M512 832c35.346 0 64 28.654 64 64v64c0 35.346-28.654 64-64 64s-64-28.654-64-64v-64c0-35.346 28.654-64 64-64zM512 192c-35.346 0-64-28.654-64-64v-64c0-35.346 28.654-64 64-64s64 28.654 64 64v64c0 35.346-28.654 64-64 64zM960 448c35.346 0 64 28.654 64 64s-28.654 64-64 64h-64c-35.348 0-64-28.654-64-64s28.652-64 64-64h64zM192 512c0 35.346-28.654 64-64 64h-64c-35.346 0-64-28.654-64-64s28.654-64 64-64h64c35.346 0 64 28.654 64 64zM828.784 738.274l45.256 45.258c24.992 24.99 24.992 65.516 0 90.508-24.994 24.992-65.518 24.992-90.51 0l-45.256-45.256c-24.992-24.99-24.992-65.516 0-90.51 24.994-24.992 65.518-24.992 90.51-0zM195.216 285.726l-45.256-45.256c-24.994-24.994-24.994-65.516 0-90.51s65.516-24.994 90.51 0l45.256 45.256c24.994 24.994 24.994 65.516 0 90.51s-65.516 24.994-90.51 0zM828.784 285.726c-24.992 24.992-65.516 24.992-90.51 0-24.992-24.994-24.992-65.516 0-90.51l45.256-45.254c24.992-24.994 65.516-24.994 90.51 0 24.992 24.994 24.992 65.516 0 90.51l-45.256 45.254zM195.216 738.274c24.992-24.992 65.518-24.992 90.508 0 24.994 24.994 24.994 65.52 0 90.51l-45.254 45.256c-24.994 24.992-65.516 24.992-90.51 0s-24.994-65.518 0-90.508l45.256-45.258z",
+ "M512 256c-141.384 0-256 114.616-256 256 0 141.382 114.616 256 256 256 141.382 0 256-114.618 256-256 0-141.384-114.616-256-256-256zM512 672c-88.366 0-160-71.634-160-160s71.634-160 160-160 160 71.634 160 160-71.634 160-160 160z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "sun",
+ "weather"
+ ],
+ "defaultCode": 58094,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 844,
+ "order": 635,
+ "prevSize": 32,
+ "code": 60620,
+ "ligatures": "sun2, weather21",
+ "name": "sun"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 101
+ },
+ {
+ "icon": {
+ "paths": [
+ "M715.812 64.48c-60.25-34.784-124.618-55.904-189.572-64.48 122.936 160.082 144.768 384.762 37.574 570.42-107.2 185.67-312.688 279.112-512.788 252.68 39.898 51.958 90.376 97.146 150.628 131.934 245.908 141.974 560.37 57.72 702.344-188.198 141.988-245.924 57.732-560.372-188.186-702.356z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "moon",
+ "night",
+ "sleep"
+ ],
+ "defaultCode": 58105,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 855,
+ "order": 636,
+ "prevSize": 32,
+ "code": 60621,
+ "ligatures": "moon, night",
+ "name": "moon"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 102
+ },
+ {
+ "icon": {
+ "paths": [
+ "M672 1024l192-192-320-320 320-320-192-192-512 512z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "arrow-left",
+ "left",
+ "previous"
+ ],
+ "defaultCode": 58291,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 1056,
+ "order": 637,
+ "prevSize": 32,
+ "code": 60864,
+ "ligatures": "arrow-left, left4",
+ "name": "arrowleft"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 103
+ },
+ {
+ "icon": {
+ "paths": [
+ "M832 256l192-192-64-64-192 192h-448v-192h-128v192h-192v128h192v512h512v192h128v-192h192v-128h-192v-448zM320 320h320l-320 320v-320zM384 704l320-320v320h-320z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "tags": [
+ "crop",
+ "resize",
+ "cut"
+ ],
+ "defaultCode": 58428,
+ "grid": 16
+ },
+ "attrs": [],
+ "properties": {
+ "id": 1201,
+ "order": 638,
+ "prevSize": 32,
+ "code": 61048,
+ "ligatures": "crop, resize",
+ "name": "crop"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 104
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64v896h1024v-896h-1024zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tablerowprops"
+ ],
+ "defaultCode": 58880,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1680,
+ "order": 639,
+ "prevSize": 32,
+ "code": 58884,
+ "name": "tablerowprops"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 105
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64v896h1024v-896h-1024zM640 704v192h-256v-192h256zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192zM704 896v-192h256v192h-256z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tablecellprops"
+ ],
+ "defaultCode": 58881,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1681,
+ "order": 640,
+ "prevSize": 32,
+ "code": 58885,
+ "name": "tablecellprops"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 106
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64v832h1024v-832h-1024zM320 832h-256v-192h256v192zM320 576h-256v-192h256v192zM640 832h-256v-192h256v192zM640 576h-256v-192h256v192zM960 832h-256v-192h256v192zM960 576h-256v-192h256v192zM960 320h-896v-192h896v192z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "table2"
+ ],
+ "defaultCode": 58882,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1682,
+ "order": 641,
+ "prevSize": 32,
+ "code": 58886,
+ "name": "table2"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 107
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64v896h1024v-896h-1024zM384 896v-448h576v448h-576zM640 192v192h-256v-192h256zM320 192v192h-256v-192h256zM64 448h256v192h-256v-192zM704 384v-192h256v192h-256zM64 704h256v192h-256v-192z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tablemergecells"
+ ],
+ "defaultCode": 58884,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1683,
+ "order": 586,
+ "prevSize": 32,
+ "code": 58887,
+ "name": "tablemergecells"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 108
+ },
+ {
+ "icon": {
+ "paths": [
+ "M320 771.2v-182.4h-182.4v-89.6h182.4v-182.4h86.4v182.4h185.6v89.6h-185.6v182.4zM0 64v896h1024v-896h-1024zM640 896h-576v-704h576v704zM960 896h-256v-192h256v192zM960 640h-256v-192h256v192zM960 384h-256v-192h256v192z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tableinsertcolbefore"
+ ],
+ "defaultCode": 58885,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1684,
+ "order": 587,
+ "prevSize": 32,
+ "code": 58888,
+ "name": "tableinsertcolbefore"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 109
+ },
+ {
+ "icon": {
+ "paths": [
+ "M704 316.8v182.4h182.4v89.6h-182.4v182.4h-86.4v-182.4h-185.6v-89.6h185.6v-182.4zM0 64v896h1024v-896h-1024zM320 896h-256v-192h256v192zM320 640h-256v-192h256v192zM320 384h-256v-192h256v192zM960 896h-576v-704h576v704z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tableinsertcolafter"
+ ],
+ "defaultCode": 58886,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1685,
+ "order": 588,
+ "prevSize": 32,
+ "code": 58889,
+ "name": "tableinsertcolafter"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 110
+ },
+ {
+ "icon": {
+ "paths": [
+ "M691.2 451.2h-144v144h-70.4v-144h-144v-67.2h144v-144h70.4v144h144zM0 64v896h1024v-896h-1024zM320 896h-256v-192h256v192zM640 896h-256v-192h256v192zM960 896h-256v-192h256v192zM960 643.2h-896v-451.2h896v451.2z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tableinsertrowbefore"
+ ],
+ "defaultCode": 58887,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1686,
+ "order": 589,
+ "prevSize": 32,
+ "code": 58890,
+ "name": "tableinsertrowbefore"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 111
+ },
+ {
+ "icon": {
+ "paths": [
+ "M332.8 636.8h144v-144h70.4v144h144v67.2h-144v144h-70.4v-144h-144zM0 64v896h1024v-896h-1024zM384 192h256v192h-256v-192zM64 192h256v192h-256v-192zM960 896h-896v-451.2h896v451.2zM960 384h-256v-192h256v192z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tableinsertrowafter"
+ ],
+ "defaultCode": 58888,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1687,
+ "order": 590,
+ "prevSize": 32,
+ "code": 58891,
+ "name": "tableinsertrowafter"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 112
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64v896h1024v-896h-1024zM384 192h256v192h-256v-192zM320 896h-256v-192h256v192zM320 640h-256v-192h256v192zM320 384h-256v-192h256v192zM960 896h-576v-448h576v448zM960 384h-256v-192h256v192zM864 803.2l-60.8 60.8-131.2-131.2-131.2 131.2-60.8-60.8 131.2-131.2-131.2-131.2 60.8-60.8 131.2 131.2 131.2-131.2 60.8 60.8-131.2 131.2z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tablesplitcells"
+ ],
+ "defaultCode": 58890,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1688,
+ "order": 591,
+ "prevSize": 32,
+ "code": 58893,
+ "name": "tablesplitcells"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 113
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64h1024v896h-1024v-896zM60.8 192v704h899.2v-704h-899.2zM809.6 748.8l-96 96-204.8-204.8-204.8 204.8-96-96 204.8-204.8-204.8-204.8 96-96 204.8 204.8 204.8-204.8 96 96-204.8 204.8z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tabledelete"
+ ],
+ "defaultCode": 58891,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1689,
+ "order": 592,
+ "prevSize": 32,
+ "code": 58894,
+ "name": "tabledelete"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 114
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64v832h1024v-832h-1024zM640 832h-256v-192h256v192zM640 576h-256v-192h256v192zM640 320h-256v-192h256v192zM960 832h-256v-192h256v192zM960 576h-256v-192h256v192zM960 320h-256v-192h256v192z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tableleftheader"
+ ],
+ "defaultCode": 58922,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1690,
+ "order": 593,
+ "prevSize": 32,
+ "code": 58922,
+ "name": "tableleftheader"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 115
+ },
+ {
+ "icon": {
+ "paths": [
+ "M0 64v832h1024v-832h-1024zM320 832h-256v-192h256v192zM320 576h-256v-192h256v192zM640 832h-256v-192h256v192zM640 576h-256v-192h256v192zM960 832h-256v-192h256v192zM960 576h-256v-192h256v192z"
+ ],
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "isMulticolor": false,
+ "tags": [
+ "tabletopheader"
+ ],
+ "defaultCode": 58923,
+ "grid": 16
+ },
+ "attrs": [
+ {
+ "fill": "rgb(0, 0, 0)"
+ }
+ ],
+ "properties": {
+ "id": 1691,
+ "order": 594,
+ "prevSize": 32,
+ "code": 58923,
+ "name": "tabletopheader"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 116
+ },
+ {
+ "icon": {
+ "paths": [
+ "M886.4 387.2l-156.8 156.8 160 160-76.8 76.8-160-160-156.8 156.8-76.8-73.6 160-160-163.2-163.2 76.8-76.8 163.2 163.2 156.8-156.8 73.6 76.8zM0 64v896h1024v-896h-1024zM960 384h-22.4l-64 64h86.4v192h-89.6l64 64h25.6v192h-896v-192h310.4l64-64h-374.4v-192h371.2l-64-64h-307.2v-192h896v192z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 16,
+ "tags": [
+ "tabledeleterow"
+ ],
+ "defaultCode": 59392
+ },
+ "attrs": [],
+ "properties": {
+ "order": 595,
+ "id": 1693,
+ "prevSize": 32,
+ "code": 59392,
+ "name": "tabledeleterow"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 117
+ },
+ {
+ "icon": {
+ "paths": [
+ "M320 460.8l64 64v12.8l-64 64v-140.8zM640 537.6l64 64v-137.6l-64 64v9.6zM1024 64v896h-1024v-896h1024zM960 192h-256v51.2l-12.8-12.8-51.2 51.2v-89.6h-256v89.6l-51.2-51.2-12.8 12.8v-51.2h-256v704h256v-118.4l35.2 35.2 28.8-28.8v115.2h256v-115.2l48 48 16-16v83.2h256v-707.2zM672 297.6l-156.8 156.8-163.2-163.2-76.8 76.8 163.2 163.2-156.8 156.8 76.8 76.8 156.8-156.8 160 160 76.8-76.8-160-160 156.8-156.8-76.8-76.8z"
+ ],
+ "attrs": [],
+ "isMulticolor": false,
+ "grid": 16,
+ "tags": [
+ "tabledeletecol"
+ ],
+ "defaultCode": 59393
+ },
+ "attrs": [],
+ "properties": {
+ "order": 596,
+ "id": 1692,
+ "prevSize": 32,
+ "code": 59393,
+ "name": "tabledeletecol"
+ },
+ "setIdx": 2,
+ "setId": 1,
+ "iconIdx": 118
+ }
+ ],
+ "height": 1024,
+ "metadata": {
+ "name": "tinymce"
+ },
+ "preferences": {
+ "showGlyphs": true,
+ "showQuickUse": true,
+ "showQuickUse2": true,
+ "showSVGs": true,
+ "fontPref": {
+ "prefix": "icon-",
+ "metadata": {
+ "fontFamily": "tinymce",
+ "majorVersion": 1,
+ "minorVersion": 0
+ },
+ "metrics": {
+ "emSize": 1024,
+ "baseline": 6.25,
+ "whitespace": 50
+ },
+ "resetPoint": 59649,
+ "embed": false
+ },
+ "imagePref": {
+ "prefix": "icon-",
+ "png": true,
+ "useClassSelector": true,
+ "color": 4473924,
+ "bgColor": 16777215
+ },
+ "historySize": 100,
+ "gridSize": 16,
+ "showGrid": true,
+ "showCodes": true,
+ "showLiga": false
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="tinymce" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode=" " horiz-adv-x="512" d="" />
+<glyph unicode="" glyph-name="save" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" />
+<glyph unicode="" glyph-name="newdocument" d="M903.432 760.57l-142.864 142.862c-31.112 31.112-92.568 56.568-136.568 56.568h-480c-44 0-80-36-80-80v-864c0-44 36-80 80-80h736c44 0 80 36 80 80v608c0 44-25.456 105.458-56.568 136.57zM858.178 715.314c3.13-3.13 6.25-6.974 9.28-11.314h-163.458v163.456c4.34-3.030 8.184-6.15 11.314-9.28l142.864-142.862zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16h480c4.832 0 10.254-0.61 16-1.704v-254.296h254.296c1.094-5.746 1.704-11.166 1.704-16v-608z" />
+<glyph unicode="" glyph-name="fullpage" d="M1024 367.542v160.916l-159.144 15.914c-8.186 30.042-20.088 58.548-35.21 84.98l104.596 127.838-113.052 113.050-127.836-104.596c-26.434 15.124-54.942 27.026-84.982 35.208l-15.914 159.148h-160.916l-15.914-159.146c-30.042-8.186-58.548-20.086-84.98-35.208l-127.838 104.594-113.050-113.050 104.596-127.836c-15.124-26.432-27.026-54.94-35.21-84.98l-159.146-15.916v-160.916l159.146-15.914c8.186-30.042 20.086-58.548 35.21-84.982l-104.596-127.836 113.048-113.048 127.838 104.596c26.432-15.124 54.94-27.028 84.98-35.21l15.916-159.148h160.916l15.914 159.144c30.042 8.186 58.548 20.088 84.982 35.21l127.836-104.596 113.048 113.048-104.596 127.836c15.124 26.434 27.028 54.942 35.21 84.98l159.148 15.92zM704 384l-128-128h-128l-128 128v128l128 128h128l128-128v-128z" />
+<glyph unicode="" glyph-name="alignleft" d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="" glyph-name="aligncenter" d="M0 896h1024v-128h-1024zM192 704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="" glyph-name="alignright" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="" glyph-name="alignjustify" d="M0 896h1024v-128h-1024zM0 704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0 128h1024v-128h-1024z" />
+<glyph unicode="" glyph-name="cut" d="M890.774 250.846c-45.654 45.556-103.728 69.072-157.946 69.072h-29.112l-63.904 64.008 255.62 256.038c63.904 64.010 63.904 192.028 0 256.038l-383.43-384.056-383.432 384.054c-63.904-64.008-63.904-192.028 0-256.038l255.622-256.034-63.906-64.008h-29.114c-54.22 0-112.292-23.518-157.948-69.076-81.622-81.442-92.65-202.484-24.63-270.35 29.97-29.902 70.288-44.494 112.996-44.494 54.216 0 112.29 23.514 157.946 69.072 53.584 53.464 76.742 124 67.084 185.348l65.384 65.488 65.376-65.488c-9.656-61.348 13.506-131.882 67.084-185.348 45.662-45.558 103.732-69.072 157.948-69.072 42.708 0 83.024 14.592 112.994 44.496 68.020 67.866 56.988 188.908-24.632 270.35zM353.024 114.462c-7.698-17.882-19.010-34.346-33.626-48.926-14.636-14.604-31.172-25.918-49.148-33.624-16.132-6.916-32.96-10.568-48.662-10.568-15.146 0-36.612 3.402-52.862 19.612-16.136 16.104-19.52 37.318-19.52 52.288 0 15.542 3.642 32.21 10.526 48.212 7.7 17.884 19.014 34.346 33.626 48.926 14.634 14.606 31.172 25.914 49.15 33.624 16.134 6.914 32.96 10.568 48.664 10.568 15.146 0 36.612-3.4 52.858-19.614 16.134-16.098 19.522-37.316 19.522-52.284 0.002-15.542-3.638-32.216-10.528-48.214zM512.004 293.404c-49.914 0-90.376 40.532-90.376 90.526 0 49.992 40.462 90.52 90.376 90.52s90.372-40.528 90.372-90.52c0-49.998-40.46-90.526-90.372-90.526zM855.272 40.958c-16.248-16.208-37.712-19.612-52.86-19.612-15.704 0-32.53 3.652-48.666 10.568-17.972 7.706-34.508 19.020-49.142 33.624-14.614 14.58-25.926 31.042-33.626 48.926-6.886 15.998-10.526 32.672-10.526 48.212 0 14.966 3.384 36.188 19.52 52.286 16.246 16.208 37.712 19.614 52.86 19.614 15.7 0 32.53-3.654 48.66-10.568 17.978-7.708 34.516-19.018 49.15-33.624 14.61-14.58 25.924-31.042 33.626-48.926 6.884-15.998 10.526-32.67 10.526-48.212-0.002-14.97-3.39-36.186-19.522-52.288z" />
+<glyph unicode="" glyph-name="paste" d="M832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h448l192 192v512h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM832 26.51v101.49h101.49l-101.49-101.49zM960 192h-192v-192h-320v576h512v-384z" />
+<glyph unicode="" glyph-name="searchreplace" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" />
+<glyph unicode="" glyph-name="bullist" d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384 128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" />
+<glyph unicode="" glyph-name="numlist" d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384 896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128 434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256 256v-320h-192v64h128v64h-128v64h128v64h-128v64z" />
+<glyph unicode="" glyph-name="indent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0 256v384l256-192z" />
+<glyph unicode="" glyph-name="outdent" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256 640v-384l-256 192z" />
+<glyph unicode="" glyph-name="blockquote" d="M225 512c123.712 0 224-100.29 224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020 11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224 0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020 11.44 1.8 23.16 2.746 35.106 2.746z" />
+<glyph unicode="" glyph-name="undo" d="M761.862-64c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" />
+<glyph unicode="" glyph-name="redo" d="M576 711.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" />
+<glyph unicode="" glyph-name="link" d="M320 256c17.6-17.6 47.274-16.726 65.942 1.942l316.118 316.116c18.668 18.668 19.54 48.342 1.94 65.942s-47.274 16.726-65.942-1.942l-316.116-316.116c-18.668-18.668-19.542-48.342-1.942-65.942zM476.888 284.888c4.56-9.050 6.99-19.16 6.99-29.696 0-17.616-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.382 99.382c-12.248 12.248-18.992 28.694-18.992 46.308s6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994 10.536 0 20.644-2.43 29.696-6.99l65.338 65.338c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-60.67-60.67-60.67-159.948 0-220.618l99.382-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c55.82 55.82 60.238 144.298 13.344 205.344l-65.34-65.34zM978.498 815.116l-99.382 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.972-15.166-110.308-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.248 12.248 28.694 18.994 46.308 18.994s34.060-6.746 46.308-18.994l99.382-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.382-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.502l163.382 163.382c60.67 60.666 60.67 159.944 0 220.614z" />
+<glyph unicode="" glyph-name="unlink" d="M476.888 284.886c4.56-9.048 6.99-19.158 6.99-29.696 0-17.616-6.744-34.058-18.992-46.308l-163.38-163.38c-12.248-12.248-28.696-18.992-46.308-18.992s-34.060 6.744-46.308 18.992l-99.38 99.38c-12.248 12.25-18.992 28.696-18.992 46.308s6.744 34.060 18.992 46.308l163.38 163.382c12.248 12.246 28.696 18.992 46.308 18.992 10.538 0 20.644-2.43 29.696-6.988l65.338 65.336c-27.87 21.41-61.44 32.16-95.034 32.16-39.986 0-79.972-15.166-110.308-45.502l-163.38-163.382c-60.67-60.67-60.67-159.95 0-220.618l99.38-99.382c30.334-30.332 70.32-45.5 110.306-45.5 39.988 0 79.974 15.168 110.308 45.502l163.38 163.38c55.82 55.82 60.238 144.298 13.344 205.346l-65.34-65.338zM978.496 815.116l-99.38 99.382c-30.334 30.336-70.32 45.502-110.308 45.502-39.986 0-79.97-15.166-110.306-45.502l-163.382-163.382c-55.82-55.82-60.238-144.298-13.342-205.342l65.338 65.34c-4.558 9.050-6.988 19.16-6.988 29.694 0 17.616 6.744 34.060 18.992 46.308l163.382 163.382c12.246 12.248 28.694 18.994 46.306 18.994 17.616 0 34.060-6.746 46.308-18.994l99.38-99.382c12.248-12.248 18.992-28.694 18.992-46.308s-6.744-34.060-18.992-46.308l-163.38-163.382c-12.248-12.248-28.694-18.992-46.308-18.992-10.536 0-20.644 2.43-29.696 6.99l-65.338-65.338c27.872-21.41 61.44-32.16 95.034-32.16 39.988 0 79.974 15.168 110.308 45.504l163.38 163.38c60.672 60.666 60.672 159.944 0 220.614zM233.368 681.376l-191.994 191.994 45.256 45.256 191.994-191.994zM384 960h64v-192h-64zM0 576h192v-64h-192zM790.632 214.624l191.996-191.996-45.256-45.256-191.996 191.996zM576 128h64v-192h-64zM832 384h192v-64h-192z" />
+<glyph unicode="" glyph-name="anchor" d="M192 960v-1024l320 320 320-320v1024h-640zM768 90.51l-256 256-256-256v805.49h512v-805.49z" />
+<glyph unicode="" glyph-name="image" d="M0 832v-832h1024v832h-1024zM960 64h-896v704h896v-704zM704 608c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM896 128h-768l192 512 256-320 128 96z" />
+<glyph unicode="" glyph-name="media" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" />
+<glyph unicode="" glyph-name="help" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" />
+<glyph unicode="" glyph-name="code" d="M320 704l-256-256 256-256h128l-256 256 256 256zM704 704h-128l256-256-256-256h128l256 256z" />
+<glyph unicode="" glyph-name="inserttime" d="M512 768c-212.076 0-384-171.922-384-384s171.922-384 384-384c212.074 0 384 171.922 384 384s-171.926 384-384 384zM715.644 180.354c-54.392-54.396-126.716-84.354-203.644-84.354s-149.25 29.958-203.646 84.354c-54.396 54.394-84.354 126.718-84.354 203.646s29.958 149.25 84.354 203.646c54.396 54.396 126.718 84.354 203.646 84.354s149.252-29.958 203.642-84.354c54.402-54.396 84.358-126.718 84.358-203.646s-29.958-149.252-84.356-203.646zM325.93 756.138l-42.94 85.878c-98.874-49.536-179.47-130.132-229.006-229.008l85.876-42.94c40.248 80.336 105.732 145.822 186.070 186.070zM884.134 570.070l85.878 42.938c-49.532 98.876-130.126 179.472-229.004 229.008l-42.944-85.878c80.338-40.248 145.824-105.732 186.070-186.068zM512 576h-64v-192c0-10.11 4.7-19.11 12.022-24.972l-0.012-0.016 160-128 39.976 49.976-147.986 118.39v176.622z" />
+<glyph unicode="" glyph-name="preview" d="M512 640c-209.368 0-395.244-100.556-512-256 116.756-155.446 302.632-256 512-256s395.244 100.554 512 256c-116.756 155.444-302.632 256-512 256zM448 512c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM773.616 254.704c-39.648-20.258-81.652-35.862-124.846-46.376-44.488-10.836-90.502-16.328-136.77-16.328-46.266 0-92.282 5.492-136.768 16.324-43.194 10.518-85.198 26.122-124.846 46.376-63.020 32.202-120.222 76.41-167.64 129.298 47.418 52.888 104.62 97.1 167.64 129.298 32.336 16.522 66.242 29.946 101.082 40.040-19.888-30.242-31.468-66.434-31.468-105.336 0-106.040 85.962-192 192-192s192 85.96 192 192c0 38.902-11.582 75.094-31.466 105.34 34.838-10.096 68.744-23.52 101.082-40.042 63.022-32.198 120.218-76.408 167.638-129.298-47.42-52.886-104.618-97.1-167.638-129.296zM860.918 716.278c-108.72 55.554-226.112 83.722-348.918 83.722s-240.198-28.168-348.918-83.722c-58.772-30.032-113.732-67.904-163.082-112.076v-109.206c55.338 58.566 120.694 107.754 192.194 144.29 99.62 50.904 207.218 76.714 319.806 76.714s220.186-25.81 319.804-76.716c71.502-36.536 136.858-85.724 192.196-144.29v109.206c-49.35 44.174-104.308 82.046-163.082 112.078z" />
+<glyph unicode="" glyph-name="forecolor" d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996 640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6 192z" />
+<glyph unicode="" glyph-name="table" d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
+<glyph unicode="" glyph-name="hr" d="M0 512h1024v-128h-1024z" />
+<glyph unicode="" glyph-name="removeformat" d="M0 64h576v-128h-576zM192 960h704v-128h-704zM277.388 128l204.688 784.164 123.85-32.328-196.25-751.836zM929.774-64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774z" />
+<glyph unicode="" glyph-name="sub" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="" glyph-name="sup" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" />
+<glyph unicode="" glyph-name="charmap" d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224 361.786 0 214.432-157.598 382.266-352 382.266-194.406 0-352-167.832-352-382.266 0-164.624 92.886-305.302 224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320 227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576 512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" />
+<glyph unicode="" glyph-name="emoticons" d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512 282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM512 16c-238.586 0-432 193.412-432 432 0 238.586 193.414 432 432 432 238.59 0 432-193.414 432-432 0-238.588-193.41-432-432-432zM384 640c0-35.346-28.654-64-64-64s-64 28.654-64 64 28.654 64 64 64 64-28.654 64-64zM768 640c0-35.346-28.652-64-64-64s-64 28.654-64 64 28.652 64 64 64 64-28.654 64-64zM512 308c141.074 0 262.688 57.532 318.462 123.192-20.872-171.22-156.288-303.192-318.462-303.192-162.118 0-297.498 132.026-318.444 303.168 55.786-65.646 177.386-123.168 318.444-123.168z" />
+<glyph unicode="" glyph-name="print" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" />
+<glyph unicode="" glyph-name="fullscreen" d="M1024 960v-384l-138.26 138.26-212-212-107.48 107.48 212 212-138.26 138.26zM245.74 821.74l212-212-107.48-107.48-212 212-138.26-138.26v384h384zM885.74 181.74l138.26 138.26v-384h-384l138.26 138.26-212 212 107.48 107.48zM457.74 286.26l-212-212 138.26-138.26h-384v384l138.26-138.26 212 212z" />
+<glyph unicode="" glyph-name="spellchecker" d="M128 704h128v-192h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128 896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2 28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832 384l-416-448-224 288 82 70 142-148 352 302z" />
+<glyph unicode="" glyph-name="nonbreaking" d="M448 384h-192v128h192v192h128v-192h192v-128h-192v-192h-128zM1024 320v-384h-1024v384h128v-256h768v256z" />
+<glyph unicode="" glyph-name="template" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" />
+<glyph unicode="" glyph-name="pagebreak" d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448 448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880 960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16 384h768l-16-384h-32l-16 320h-640l-16-320z" />
+<glyph unicode="" glyph-name="restoredraft" d="M576 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM768 512v-128h-256v320h128v-192z" />
+<glyph unicode="" glyph-name="bold" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" />
+<glyph unicode="" glyph-name="italic" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" />
+<glyph unicode="" glyph-name="underline" d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320 128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506 36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646 51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192 128h640v-128h-640z" />
+<glyph unicode="" glyph-name="strikethrough" d="M731.42 442.964c63.92-47.938 100.58-116.086 100.58-186.964s-36.66-139.026-100.58-186.964c-59.358-44.518-137.284-69.036-219.42-69.036-82.138 0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58 186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926 128-192 128-82.138 0-160.062 24.518-219.42 69.036-63.92 47.94-100.58 116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282 69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94 100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192 128s-192-58.618-192-128c0-69.382 87.926-128 192-128 82.136 0 160.062-24.518 219.42-69.036zM0 448h1024v-64h-1024z" />
+<glyph unicode="" glyph-name="visualchars" d="M384 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224z" />
+<glyph unicode="" glyph-name="ltr" d="M448 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM64 512l256-224-256-224z" />
+<glyph unicode="" glyph-name="rtl" d="M256 896h512v-128h-128v-768h-128v768h-128v-768h-128v448c-123.712 0-224 100.288-224 224s100.288 224 224 224zM960 64l-256 224 256 224z" />
+<glyph unicode="" glyph-name="copy" d="M832 704h-192v64l-192 192h-448v-768h384v-256h640v576l-192 192zM832 613.49l101.49-101.49h-101.49v101.49zM448 869.49l101.49-101.49h-101.49v101.49zM64 896h320v-192h192v-448h-512v640zM960 0h-512v192h192v448h128v-192h192v-448z" />
+<glyph unicode="" glyph-name="resize" d="M768 704h64v-64h-64zM640 576h64v-64h-64zM640 448h64v-64h-64zM640 320h64v-64h-64zM512 448h64v-64h-64zM512 320h64v-64h-64zM384 320h64v-64h-64zM768 576h64v-64h-64zM768 448h64v-64h-64zM768 320h64v-64h-64zM768 192h64v-64h-64zM640 192h64v-64h-64zM512 192h64v-64h-64zM384 192h64v-64h-64zM256 192h64v-64h-64z" />
+<glyph unicode="" glyph-name="checkbox" d="M128 416l288-288 480 480-128 128-352-352-160 160z" />
+<glyph unicode="" glyph-name="browse" d="M928 832h-416l-32 64h-352l-64-128h896zM904.34 256h74.86l44.8 448h-1024l64-640h484.080c-104.882 37.776-180.080 138.266-180.080 256 0 149.982 122.018 272 272 272 149.98 0 272-122.018 272-272 0-21.678-2.622-43.15-7.66-64zM1002.996 46.25l-198.496 174.692c17.454 28.92 27.5 62.814 27.5 99.058 0 106.040-85.96 192-192 192s-192-85.96-192-192 85.96-192 192-192c36.244 0 70.138 10.046 99.058 27.5l174.692-198.496c22.962-26.678 62.118-28.14 87.006-3.252l5.492 5.492c24.888 24.888 23.426 64.044-3.252 87.006zM640 196c-68.484 0-124 55.516-124 124s55.516 124 124 124 124-55.516 124-124-55.516-124-124-124z" />
+<glyph unicode="" glyph-name="pastetext" d="M512 448v-128h32l32 64h64v-256h-48v-64h224v64h-48v256h64l32-64h32v128zM832 640v160c0 17.6-14.4 32-32 32h-224v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-224c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM384 895.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886h-128v63.886zM192 704v64h512v-64h-512zM960 0h-512v576h512v-576z" />
+<glyph unicode="" glyph-name="gamma" d="M483.2 320l-147.2 336c-9.6 25.6-19.2 44.8-25.6 54.4s-16 12.8-25.6 12.8c-16 0-25.6-3.2-28.8-3.2v70.4c9.6 6.4 25.6 6.4 38.4 9.6 32 0 57.6-6.4 73.6-22.4 6.4-6.4 12.8-16 19.2-25.6 6.4-12.8 12.8-25.6 16-41.6l121.6-291.2 150.4 371.2h92.8l-198.4-470.4v-224h-86.4v224zM0 960v-1024h1024v1024h-1024zM960 0h-896v896h896v-896z" />
+<glyph unicode="" glyph-name="orientation" d="M627.2 80h-579.2v396.8h579.2v-396.8zM553.6 406.4h-435.2v-256h435.2v256zM259.2 732.8c176 176 457.6 176 633.6 0s176-457.6 0-633.6c-121.6-121.6-297.6-160-454.4-108.8 121.6-28.8 262.4 9.6 361.6 108.8 150.4 150.4 160 384 22.4 521.6-121.6 121.6-320 128-470.4 19.2l86.4-86.4-294.4-22.4 22.4 294.4 92.8-92.8z" />
+<glyph unicode="" glyph-name="invert" d="M892.8-22.4l-89.6 89.6c-70.4-80-172.8-131.2-288-131.2-208 0-380.8 166.4-384 377.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4v0c0 0 0 0 0 3.2 0 0 0 3.2 0 3.2 3.2 105.6 48 211.2 105.6 304l-192 192 44.8 44.8 182.4-182.4c0 0 0 0 0 0l569.6-569.6c0 0 0 0 0 0l99.2-99.2-48-44.8zM896 326.4c0 0 0 0 0 0 0 3.2 0 6.4 0 6.4-9.6 316.8-384 627.2-384 627.2s-108.8-89.6-208-220.8l70.4-70.4c6.4 9.6 16 22.4 22.4 32 41.6 51.2 83.2 96 115.2 128v0c32-32 73.6-76.8 115.2-128 108.8-137.6 169.6-265.6 172.8-371.2 0 0 0-3.2 0-3.2v0 0c0-3.2 0-3.2 0-6.4s0-3.2 0-3.2v0 0c0-22.4-3.2-41.6-9.6-64l76.8-76.8c16 41.6 28.8 89.6 28.8 137.6 0 0 0 0 0 0 0 3.2 0 3.2 0 6.4s0 3.2 0 6.4z" />
+<glyph unicode="" glyph-name="codesample" d="M199.995 578.002v104.002c0 43.078 34.923 78.001 78.001 78.001h26v104.002h-26c-100.518 0-182.003-81.485-182.003-182.003v-104.002c0-43.078-34.923-78.001-78.001-78.001h-26v-104.002h26c43.078 0 78.001-34.923 78.001-78.001v-104.002c0-100.515 81.485-182.003 182.003-182.003h26v104.002h-26c-43.078 0-78.001 34.923-78.001 78.001v104.002c0 50.931-20.928 96.966-54.646 130.002 33.716 33.036 54.646 79.072 54.646 130.002zM824.005 578.002v104.002c0 43.078-34.923 78.001-78.001 78.001h-26v104.002h26c100.515 0 182.003-81.485 182.003-182.003v-104.002c0-43.078 34.923-78.001 78.001-78.001h26v-104.002h-26c-43.078 0-78.001-34.923-78.001-78.001v-104.002c0-100.515-81.488-182.003-182.003-182.003h-26v104.002h26c43.078 0 78.001 34.923 78.001 78.001v104.002c0 50.931 20.928 96.966 54.646 130.002-33.716 33.036-54.646 79.072-54.646 130.002zM616.002 603.285c0-57.439-46.562-104.002-104.002-104.002s-104.002 46.562-104.002 104.002c0 57.439 46.562 104.002 104.002 104.002s104.002-46.562 104.002-104.002zM512 448.717c-57.439 0-104.002-46.562-104.002-104.002 0-55.845 26-100.115 105.752-103.88-23.719-33.417-59.441-46.612-105.752-50.944v-61.751c0 0 208.003-18.144 208.003 216.577-0.202 57.441-46.56 104.004-104.002 104.004z" />
+<glyph unicode="" glyph-name="tablerowprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
+<glyph unicode="" glyph-name="tablecellprops" d="M0 896v-896h1024v896h-1024zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" />
+<glyph unicode="" glyph-name="table2" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-896v192h896v-192z" />
+<glyph unicode="" glyph-name="tablemergecells" d="M0 896v-896h1024v896h-1024zM384 64v448h576v-448h-576zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192z" />
+<glyph unicode="" glyph-name="tableinsertcolbefore" d="M320 188.8v182.4h-182.4v89.6h182.4v182.4h86.4v-182.4h185.6v-89.6h-185.6v-182.4zM0 896v-896h1024v896h-1024zM640 64h-576v704h576v-704zM960 64h-256v192h256v-192zM960 320h-256v192h256v-192zM960 576h-256v192h256v-192z" />
+<glyph unicode="" glyph-name="tableinsertcolafter" d="M704 643.2v-182.4h182.4v-89.6h-182.4v-182.4h-86.4v182.4h-185.6v89.6h185.6v182.4zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v704h576v-704z" />
+<glyph unicode="" glyph-name="tableinsertrowbefore" d="M691.2 508.8h-144v-144h-70.4v144h-144v67.2h144v144h70.4v-144h144zM0 896v-896h1024v896h-1024zM320 64h-256v192h256v-192zM640 64h-256v192h256v-192zM960 64h-256v192h256v-192zM960 316.8h-896v451.2h896v-451.2z" />
+<glyph unicode="" glyph-name="tableinsertrowafter" d="M332.8 323.2h144v144h70.4v-144h144v-67.2h-144v-144h-70.4v144h-144zM0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM64 768h256v-192h-256v192zM960 64h-896v451.2h896v-451.2zM960 576h-256v192h256v-192z" />
+<glyph unicode="" glyph-name="tablesplitcells" d="M0 896v-896h1024v896h-1024zM384 768h256v-192h-256v192zM320 64h-256v192h256v-192zM320 320h-256v192h256v-192zM320 576h-256v192h256v-192zM960 64h-576v448h576v-448zM960 576h-256v192h256v-192zM864 156.8l-60.8-60.8-131.2 131.2-131.2-131.2-60.8 60.8 131.2 131.2-131.2 131.2 60.8 60.8 131.2-131.2 131.2 131.2 60.8-60.8-131.2-131.2z" />
+<glyph unicode="" glyph-name="tabledelete" d="M0 896h1024v-896h-1024v896zM60.8 768v-704h899.2v704h-899.2zM809.6 211.2l-96-96-204.8 204.8-204.8-204.8-96 96 204.8 204.8-204.8 204.8 96 96 204.8-204.8 204.8 204.8 96-96-204.8-204.8z" />
+<glyph unicode="" glyph-name="tableleftheader" d="M0 896v-832h1024v832h-1024zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM640 640h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192zM960 640h-256v192h256v-192z" />
+<glyph unicode="" glyph-name="tabletopheader" d="M0 896v-832h1024v832h-1024zM320 128h-256v192h256v-192zM320 384h-256v192h256v-192zM640 128h-256v192h256v-192zM640 384h-256v192h256v-192zM960 128h-256v192h256v-192zM960 384h-256v192h256v-192z" />
+<glyph unicode="" glyph-name="tabledeleterow" d="M886.4 572.8l-156.8-156.8 160-160-76.8-76.8-160 160-156.8-156.8-76.8 73.6 160 160-163.2 163.2 76.8 76.8 163.2-163.2 156.8 156.8 73.6-76.8zM0 896v-896h1024v896h-1024zM960 576h-22.4l-64-64h86.4v-192h-89.6l64-64h25.6v-192h-896v192h310.4l64 64h-374.4v192h371.2l-64 64h-307.2v192h896v-192z" />
+<glyph unicode="" glyph-name="tabledeletecol" d="M320 499.2l64-64v-12.8l-64-64v140.8zM640 422.4l64-64v137.6l-64-64v-9.6zM1024 896v-896h-1024v896h1024zM960 768h-256v-51.2l-12.8 12.8-51.2-51.2v89.6h-256v-89.6l-51.2 51.2-12.8-12.8v51.2h-256v-704h256v118.4l35.2-35.2 28.8 28.8v-115.2h256v115.2l48-48 16 16v-83.2h256v707.2zM672 662.4l-156.8-156.8-163.2 163.2-76.8-76.8 163.2-163.2-156.8-156.8 76.8-76.8 156.8 156.8 160-160 76.8 76.8-160 160 156.8 156.8-76.8 76.8z" />
+<glyph unicode="" glyph-name="a11y" d="M960 704v64l-448-128-448 128v-64l320-128v-256l-128-448h64l192 448 192-448h64l-128 448v256zM416 800q0 40 28 68t68 28 68-28 28-68-28-68-68-28-68 28-28 68z" />
+<glyph unicode="" glyph-name="toc" d="M0 896h128v-128h-128v128zM192 896h832v-128h-832v128zM192 704h128v-128h-128v128zM384 704h640v-128h-640v128zM384 512h128v-128h-128v128zM576 512h448v-128h-448v128zM0 320h128v-128h-128v128zM192 320h832v-128h-832v128zM192 128h128v-128h-128v128zM384 128h640v-128h-640v128z" />
+<glyph unicode="" glyph-name="fill" d="M521.6 915.2l-67.2-67.2-86.4 86.4-86.4-86.4 86.4-86.4-368-368 432-432 518.4 518.4-428.8 435.2zM435.2 134.4l-262.4 262.4 35.2 35.2 576 51.2-348.8-348.8zM953.6 409.6c-6.4-6.4-16-16-28.8-32-28.8-32-41.6-64-41.6-89.6v0 0 0 0 0 0 0c0-16 6.4-35.2 22.4-48 12.8-12.8 32-22.4 48-22.4s35.2 6.4 48 22.4 22.4 32 22.4 48v0 0 0 0 0 0 0c0 25.6-12.8 54.4-41.6 89.6-9.6 16-22.4 25.6-28.8 32v0z" />
+<glyph unicode="" glyph-name="borderwidth" d="M0 265.6h1024v-128h-1024v128zM0 32h1024v-64h-1024v64zM0 566.4h1024v-192h-1024v192zM0 928h1024v-256h-1024v256z" />
+<glyph unicode="" glyph-name="line" d="M739.2 627.2l-502.4-502.4h-185.6v185.6l502.4 502.4 185.6-185.6zM803.2 688l-185.6 185.6 67.2 67.2c22.4 22.4 54.4 22.4 76.8 0l108.8-108.8c22.4-22.4 22.4-54.4 0-76.8l-67.2-67.2zM41.6 48h940.8v-112h-940.8v112z" />
+<glyph unicode="" glyph-name="count" d="M0 480h1024v-64h-1024v64zM304 912v-339.2h-67.2v272h-67.2v67.2zM444.8 694.4v-54.4h134.4v-67.2h-201.6v153.6l134.4 64v54.4h-134.4v67.2h201.6v-153.6zM854.4 912v-339.2h-204.8v67.2h137.6v67.2h-137.6v70.4h137.6v67.2h-137.6v67.2zM115.2 166.4c3.2 57.6 38.4 83.2 108.8 83.2 38.4 0 67.2-9.6 86.4-25.6s25.6-35.2 25.6-70.4v-112c0-25.6 0-28.8 9.6-41.6h-73.6c-3.2 9.6-3.2 9.6-6.4 19.2-22.4-19.2-41.6-25.6-70.4-25.6-54.4 0-89.6 32-89.6 76.8s28.8 70.4 99.2 80l38.4 6.4c16 3.2 22.4 6.4 22.4 16 0 12.8-12.8 22.4-38.4 22.4s-41.6-9.6-44.8-28.8h-67.2zM262.4 115.2c-6.4-3.2-12.8-6.4-25.6-6.4l-25.6-6.4c-25.6-6.4-38.4-16-38.4-28.8 0-16 12.8-25.6 35.2-25.6s41.6 9.6 54.4 32v35.2zM390.4 336h73.6v-112c22.4 16 41.6 22.4 67.2 22.4 64 0 105.6-51.2 105.6-124.8 0-76.8-44.8-134.4-108.8-134.4-32 0-48 9.6-67.2 35.2v-28.8h-70.4v342.4zM460.8 121.6c0-41.6 22.4-70.4 51.2-70.4s51.2 28.8 51.2 70.4c0 44.8-19.2 70.4-51.2 70.4-28.8 0-51.2-28.8-51.2-70.4zM851.2 153.6c-3.2 22.4-19.2 35.2-44.8 35.2-32 0-51.2-25.6-51.2-70.4 0-48 19.2-73.6 51.2-73.6 25.6 0 41.6 12.8 44.8 41.6l70.4-3.2c-9.6-60.8-54.4-96-118.4-96-73.6 0-121.6 51.2-121.6 128 0 80 48 131.2 124.8 131.2 64 0 108.8-35.2 112-96h-67.2z" />
+<glyph unicode="" glyph-name="reload" d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77 0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0 233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928 448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694 138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216 228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" />
+<glyph unicode="" glyph-name="translate" d="M553.6 304l-118.4 118.4c80 89.6 137.6 195.2 172.8 304h137.6v92.8h-326.4v92.8h-92.8v-92.8h-326.4v-92.8h518.4c-32-89.6-80-176-147.2-249.6-44.8 48-80 99.2-108.8 156.8h-92.8c35.2-76.8 80-147.2 137.6-211.2l-236.8-233.6 67.2-67.2 233.6 233.6 144-144c3.2 0 38.4 92.8 38.4 92.8zM816 540.8h-92.8l-208-560h92.8l51.2 140.8h220.8l51.2-140.8h92.8l-208 560zM691.2 214.4l76.8 201.6 76.8-201.6h-153.6z" />
+<glyph unicode="" glyph-name="drag" d="M576 896h128v-128h-128v128zM576 640h128v-128h-128v128zM320 640h128v-128h-128v128zM576 384h128v-128h-128v128zM320 384h128v-128h-128v128zM320 128h128v-128h-128v128zM576 128h128v-128h-128v128zM320 896h128v-128h-128v128z" />
+<glyph unicode="" glyph-name="home" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" />
+<glyph unicode="" glyph-name="books" d="M576.234 670.73l242.712 81.432 203.584-606.784-242.712-81.432zM0 64h256v704h-256v-704zM64 640h128v-64h-128v64zM320 64h256v704h-256v-704zM384 640h128v-64h-128v64z" />
+<glyph unicode="" glyph-name="upload" d="M839.432 760.57c27.492-27.492 50.554-78.672 55.552-120.57h-318.984v318.984c41.898-4.998 93.076-28.060 120.568-55.552l142.864-142.862zM512 576v384h-368c-44 0-80-36-80-80v-864c0-44 36-80 80-80h672c44 0 80 36 80 80v560h-384zM576 192v-192h-192v192h-160l256 256 256-256h-160z" />
+<glyph unicode="" glyph-name="editimage" d="M768 416v-352h-640v640h352l128 128h-512c-52.8 0-96-43.2-96-96v-704c0-52.8 43.2-96 96-96h704c52.798 0 96 43.2 96 96v512l-128-128zM864 960l-608-608v-160h160l608 608c0 96-64 160-160 160zM416 320l-48 48 480 480 48-48-480-480z" />
+<glyph unicode="" glyph-name="bubble" d="M928 896h-832c-52.8 0-96-43.2-96-96v-512c0-52.8 43.2-96 96-96h160v-256l307.2 256h364.8c52.8 0 96 43.2 96 96v512c0 52.8-43.2 96-96 96zM896 320h-379.142l-196.858-174.714v174.714h-192v448h768v-448z" />
+<glyph unicode="" glyph-name="user" d="M622.826 257.264c-22.11 3.518-22.614 64.314-22.614 64.314s64.968 64.316 79.128 150.802c38.090 0 61.618 91.946 23.522 124.296 1.59 34.054 48.96 267.324-190.862 267.324s-192.45-233.27-190.864-267.324c-38.094-32.35-14.57-124.296 23.522-124.296 14.158-86.486 79.128-150.802 79.128-150.802s-0.504-60.796-22.614-64.314c-71.22-11.332-337.172-128.634-337.172-257.264h896c0 128.63-265.952 245.932-337.174 257.264z" />
+<glyph unicode="" glyph-name="lock" d="M592 512h-16v192c0 105.87-86.13 192-192 192h-128c-105.87 0-192-86.13-192-192v-192h-16c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h544c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48zM192 704c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-192h-256v192z" />
+<glyph unicode="" glyph-name="unlock" d="M768 896c105.87 0 192-86.13 192-192v-192h-128v192c0 35.29-28.71 64-64 64h-128c-35.29 0-64-28.71-64-64v-192h16c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48h-544c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h400v192c0 105.87 86.13 192 192 192h128z" />
+<glyph unicode="" glyph-name="settings" d="M448 832v16c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576zM256 704v128h128v-128h-128zM832 528c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-576v-128h576v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h192v128h-192v16zM640 384v128h128v-128h-128zM448 208c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576v16zM256 64v128h128v-128h-128z" />
+<glyph unicode="" glyph-name="remove2" d="M192-64h640l64 704h-768zM640 832v128h-256v-128h-320v-192l64 64h768l64-64v192h-320zM576 832h-128v64h128v-64z" />
+<glyph unicode="" glyph-name="menu" d="M384 896h256v-256h-256zM384 576h256v-256h-256zM384 256h256v-256h-256z" />
+<glyph unicode="" glyph-name="warning" d="M1009.956 44.24l-437.074 871.112c-16.742 29.766-38.812 44.648-60.882 44.648s-44.14-14.882-60.884-44.648l-437.074-871.112c-33.486-59.532-5-108.24 63.304-108.24h869.308c68.302 0 96.792 48.708 63.302 108.24zM512 64c-35.346 0-64 28.654-64 64 0 35.348 28.654 64 64 64 35.348 0 64-28.652 64-64 0-35.346-28.652-64-64-64zM556 256h-88l-20 256c0 35.346 28.654 64 64 64s64-28.654 64-64l-20-256z" />
+<glyph unicode="" glyph-name="question" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" />
+<glyph unicode="" glyph-name="pluscircle" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM768 384h-192v-192h-128v192h-192v128h192v192h128v-192h192z" />
+<glyph unicode="" glyph-name="info" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM448 768h128v-128h-128v128zM640 128h-256v64h64v256h-64v64h192v-320h64v-64z" />
+<glyph unicode="" glyph-name="notice" d="M1024 224l-288 736h-448l-288-288v-448l288-288h448l288 288v448l-288 288zM576 128h-128v128h128v-128zM576 384h-128v384h128v-384z" />
+<glyph unicode="" glyph-name="drop" d="M864.626 486.838c-65.754 183.44-205.11 348.15-352.626 473.162-147.516-125.012-286.87-289.722-352.626-473.162-40.664-113.436-44.682-236.562 12.584-345.4 65.846-125.14 198.632-205.438 340.042-205.438s274.196 80.298 340.040 205.44c57.27 108.838 53.25 231.962 12.586 345.398zM738.764 201.044c-43.802-83.252-132.812-137.044-226.764-137.044-55.12 0-108.524 18.536-152.112 50.652 13.242-1.724 26.632-2.652 40.112-2.652 117.426 0 228.668 67.214 283.402 171.242 44.878 85.292 40.978 173.848 23.882 244.338 14.558-28.15 26.906-56.198 36.848-83.932 22.606-63.062 40.024-156.34-5.368-242.604z" />
+<glyph unicode="" glyph-name="minus" d="M0 544v-192c0-17.672 14.328-32 32-32h960c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32h-960c-17.672 0-32-14.328-32-32z" />
+<glyph unicode="" glyph-name="plus" d="M992 576h-352v352c0 17.672-14.328 32-32 32h-192c-17.672 0-32-14.328-32-32v-352h-352c-17.672 0-32-14.328-32-32v-192c0-17.672 14.328-32 32-32h352v-352c0-17.672 14.328-32 32-32h192c17.672 0 32 14.328 32 32v352h352c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32z" />
+<glyph unicode="" glyph-name="arrowup" d="M0 320l192-192 320 320 320-320 192 192-511.998 512z" />
+<glyph unicode="" glyph-name="arrowright" d="M384 960l-192-192 320-320-320-320 192-192 512 512z" />
+<glyph unicode="" glyph-name="arrowdown" d="M1024 576l-192 192-320-320-320 320-192-192 512-511.998z" />
+<glyph unicode="" glyph-name="arrowup2" d="M768 320l-256 256-256-256z" />
+<glyph unicode="" glyph-name="arrowdown2" d="M256 576l256-256 256 256z" />
+<glyph unicode="" glyph-name="menu2" d="M256 704l256-256 256 256zM255.996 384.004l256-256 256 256z" />
+<glyph unicode="" glyph-name="newtab" d="M704 384l128 128v-512h-768v768h512l-128-128h-256v-512h512zM960 896v-352l-130.744 130.744-354.746-354.744h-90.51v90.512l354.744 354.744-130.744 130.744z" />
+<glyph unicode="" glyph-name="rotateleft" d="M607.998 831.986c-212.070 0-383.986-171.916-383.986-383.986h-191.994l246.848-246.848 246.848 246.848h-191.994c0 151.478 122.798 274.276 274.276 274.276 151.48 0 274.276-122.798 274.276-274.276 0-151.48-122.796-274.276-274.276-274.276v-109.71c212.070 0 383.986 171.916 383.986 383.986s-171.916 383.986-383.986 383.986z" />
+<glyph unicode="" glyph-name="rotateright" d="M416.002 831.986c212.070 0 383.986-171.916 383.986-383.986h191.994l-246.848-246.848-246.848 246.848h191.994c0 151.478-122.798 274.276-274.276 274.276-151.48 0-274.276-122.798-274.276-274.276 0-151.48 122.796-274.276 274.276-274.276v-109.71c-212.070 0-383.986 171.916-383.986 383.986s171.916 383.986 383.986 383.986z" />
+<glyph unicode="" glyph-name="flipv" d="M0 576h1024v384zM1024 0v384h-1024z" />
+<glyph unicode="" glyph-name="fliph" d="M576 960v-1024h384zM0-64h384v1024z" />
+<glyph unicode="" glyph-name="zoomin" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM448 768h-128v-128h-128v-128h128v-128h128v128h128v128h-128z" />
+<glyph unicode="" glyph-name="zoomout" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM192 640h384v-128h-384z" />
+<glyph unicode="" glyph-name="sharpen" d="M768 832h-512l-256-256 512-576 512 576-256 256zM512 181.334v2.666h-2.37l-14.222 16h16.592v16h-30.814l-14.222 16h45.036v16h-59.258l-14.222 16h73.48v16h-87.704l-14.222 16h101.926v16h-116.148l-14.222 16h130.37v16h-144.592l-14.222 16h158.814v16h-173.038l-14.222 16h187.26v16h-201.482l-14.222 16h215.704v16h-229.926l-14.222 16h244.148v16h-258.372l-14.222 16h272.594v16h-286.816l-14.222 16h301.038v16h-315.26l-14.222 16h329.482v16h-343.706l-7.344 8.262 139.072 139.072h211.978v-3.334h215.314l16-16h-231.314v-16h247.314l16-16h-263.314v-16h279.314l16-16h-295.314v-16h311.314l16-16h-327.314v-16h343.312l7.738-7.738-351.050-394.928z" />
+<glyph unicode="" glyph-name="options" d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64 256h896v-192h-896z" />
+<glyph unicode="" glyph-name="sun" d="M512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64 64v64c0 35.346 28.654 64 64 64s64-28.654 64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654 64-64s-28.654-64-64-64h-64c-35.348 0-64 28.654-64 64s28.652 64 64 64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784 221.726l45.256-45.258c24.992-24.99 24.992-65.516 0-90.508-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992 24.99-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216 674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994 90.51 0l45.256-45.256c24.994-24.994 24.994-65.516 0-90.51s-65.516-24.994-90.51 0zM828.784 674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0 90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994 24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.518 24.992 90.508 0 24.994-24.994 24.994-65.52 0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0s-24.994 65.518 0 90.508l45.256 45.258zM512 704c-141.384 0-256-114.616-256-256 0-141.382 114.616-256 256-256 141.382 0 256 114.618 256 256 0 141.384-114.616 256-256 256zM512 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160-71.634-160-160-160z" />
+<glyph unicode="" glyph-name="moon" d="M715.812 895.52c-60.25 34.784-124.618 55.904-189.572 64.48 122.936-160.082 144.768-384.762 37.574-570.42-107.2-185.67-312.688-279.112-512.788-252.68 39.898-51.958 90.376-97.146 150.628-131.934 245.908-141.974 560.37-57.72 702.344 188.198 141.988 245.924 57.732 560.372-188.186 702.356z" />
+<glyph unicode="" glyph-name="contrast" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM128 448c0 212.078 171.922 384 384 384v-768c-212.078 0-384 171.922-384 384z" />
+<glyph unicode="" glyph-name="remove22" d="M893.254 738.746l-90.508 90.508-290.746-290.744-290.746 290.744-90.508-90.506 290.746-290.748-290.746-290.746 90.508-90.508 290.746 290.746 290.746-290.746 90.508 90.51-290.744 290.744z" />
+<glyph unicode="" glyph-name="arrowleft" d="M672-64l192 192-320 320 320 320-192 192-512-512z" />
+<glyph unicode="" glyph-name="resize2" d="M0 896v-384c0-35.346 28.654-64 64-64s64 28.654 64 64v229.488l677.488-677.488h-229.488c-35.346 0-64-28.652-64-64 0-35.346 28.654-64 64-64h384c35.346 0 64 28.654 64 64v384c0 35.348-28.654 64-64 64s-64-28.652-64-64v-229.488l-677.488 677.488h229.488c35.346 0 64 28.654 64 64s-28.652 64-64 64h-384c-35.346 0-64-28.654-64-64z" />
+<glyph unicode="" glyph-name="crop" d="M832 704l192 192-64 64-192-192h-448v192h-128v-192h-192v-128h192v-512h512v-192h128v192h192v128h-192v448zM320 640h320l-320-320v320zM384 256l320 320v-320h-320z" />
+</font></defs></svg>
\ No newline at end of file
--- /dev/null
+.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#b5b9bf;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #232b33;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#454f59}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0px;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#d6d6d6}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#d6d6d6}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#d6d6d6;background:#0085c7}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#cbced2}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp{padding-bottom:2px}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.3;filter:alpha(opacity=30);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#1e7dad}.mce-croprect-handle-move:focus{outline:1px solid #1e7dad}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:3px}.mce-arrow-down{margin-top:-3px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:#232b33;border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:#232b33;border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#383c3f;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#383c3f;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:20px}.mce-arrow.mce-arrow-left:after{left:21px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:20px}.mce-arrow.mce-arrow-right:after{right:21px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #303133;border:0 solid #232b33;background-color:#383c3f}.mce-floatpanel{position:absolute}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;top:0;left:0;background:#333;border:1px solid #232b33;border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#232b33;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#333}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#333;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #9e9e9e;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#818387}.mce-close:hover i{color:#67696b}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#333;border-top:1px solid #9e9e9e}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#000}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-n .mce-tooltip-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #202a33;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#c4c4c4}.mce-bar{display:block;width:0%;height:100%;background-color:#515c67;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#f0f0f0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#ccc;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ecb}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#333}.mce-notification .mce-progress .mce-bar-container{border-color:#ccc}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#333}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ecb}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#818387;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #242424;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);position:relative;text-shadow:0 1px 1px rgba(0,0,0,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#3a3e42}.mce-btn:hover,.mce-btn:focus{color:#b5b9bf;background-color:#2e3135;border-color:#000}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#262a2d;border-color:#000}.mce-btn:active{background-color:#2b2e32;border-color:#000}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#b5b9bf;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #000}.mce-primary{min-width:50px;color:#fff;border:1px solid transparent;border-color:transparent;background-color:#006597}.mce-primary:hover,.mce-primary:focus{background-color:#00547d;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#004364}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px #333}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #b5b9bf;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#6e737a}.mce-caret.mce-up{border-bottom:4px solid #b5b9bf;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#1a1a1a;filter:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group .mce-btn{border-left-width:0;border-right-width:0;margin-left:0}.mce-btn-group:not(:first-child){padding-left:1px;margin-left:1px}.mce-btn-group .mce-first{border-left:1px solid rgba(0,0,0,0);margin-left:0}.mce-btn-group .mce-last{border-right:1px solid rgba(0,0,0,0)}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #0d0d0d;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #202a33;background-color:#3a3e42;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#b5b9bf;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid #1e7dad}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#67696b}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox input{border:1px solid #202a33;border-right-color:#202a33;height:28px}.mce-combobox.mce-disabled input{color:#79818a}.mce-combobox .mce-btn{border:1px solid #202a33;border-left:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-colorbox i{border:1px solid #202a33;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:6px;padding-left:6px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:1px solid transparent}.mce-colorbutton:hover .mce-open{border-color:#000}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #202a33;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #202a33;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#b5b9bf}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#6e737a}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #232b33;width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(0,0,0,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #000}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(0,0,0,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#6e737a}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar .mce-menubtn button{color:#b5b9bf}.mce-menubar{border:1px solid #292e33}.mce-menubar .mce-menubtn button span{color:#b5b9bf}.mce-menubar .mce-caret{border-top-color:#b5b9bf}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#000;background:#2f3740;filter:none}.mce-menubtn button{color:#b5b9bf}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#ddd;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#ddd}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#75797f}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:#fff}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#75797f}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#fff}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #ddd}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:#fff}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#0085c7}.mce-menu-item-preview.mce-active{border-left:5px solid #08608c}.mce-menu-item-normal.mce-active .mce-text{color:#fff}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:#fff}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:#fff}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#006597}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#25313f;border-bottom:1px solid #424f5f;cursor:default;filter:none}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #ddd;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#fff}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:160px;background:#2f3740;border:1px solid #0d2133;border:1px solid #202a33;z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#b5b9bf}.mce-selectbox{background:#515c67;border:1px solid #202a33}.mce-slider{border:1px solid #202a33;background:#515c67;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #000;background:#454f59;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#bbb}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#000}.mce-splitbtn button{padding-right:4px;padding-left:8px}.mce-splitbtn .mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open.mce-active{background-color:#262a2d;outline:1px solid #000}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #202a33}.mce-tabs,.mce-tabs+.mce-container-body{background:#303942}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #202a33;border-width:0 1px 0 0;background:#303942;padding:8px;text-shadow:0 1px 1px rgba(0,0,0,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#404952}.mce-tab.mce-active{background:#404952;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#515c67;border:1px solid #202a33;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#b5b9bf}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#1e7dad}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#79818a}.mce-rtl .mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce';font-style:normal;font-weight:normal;font-size:16px;line-height:16px;vertical-align:text-top;-webkit-font-smoothing:antialiased;display:inline-block;background:transparent center center;width:16px;height:16px;color:#b5b9bf;-ie7-icon:' '}.mce-btn-small .mce-ico{font-family:'tinymce-small'}.mce-ico,i.mce-i-checkbox{zoom:expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = this.currentStyle['-ie7-icon'].substr(1, 1) + ' ')}.mce-i-save{-ie7-icon:"\e000"}.mce-i-newdocument{-ie7-icon:"\e001"}.mce-i-fullpage{-ie7-icon:"\e002"}.mce-i-alignleft{-ie7-icon:"\e003"}.mce-i-aligncenter{-ie7-icon:"\e004"}.mce-i-alignright{-ie7-icon:"\e005"}.mce-i-alignjustify{-ie7-icon:"\e006"}.mce-i-alignnone{-ie7-icon:"\e003"}.mce-i-cut{-ie7-icon:"\e007"}.mce-i-paste{-ie7-icon:"\e008"}.mce-i-searchreplace{-ie7-icon:"\e009"}.mce-i-bullist{-ie7-icon:"\e00a"}.mce-i-numlist{-ie7-icon:"\e00b"}.mce-i-indent{-ie7-icon:"\e00c"}.mce-i-outdent{-ie7-icon:"\e00d"}.mce-i-blockquote{-ie7-icon:"\e00e"}.mce-i-undo{-ie7-icon:"\e00f"}.mce-i-redo{-ie7-icon:"\e010"}.mce-i-link{-ie7-icon:"\e011"}.mce-i-unlink{-ie7-icon:"\e012"}.mce-i-anchor{-ie7-icon:"\e013"}.mce-i-image{-ie7-icon:"\e014"}.mce-i-media{-ie7-icon:"\e015"}.mce-i-help{-ie7-icon:"\e016"}.mce-i-code{-ie7-icon:"\e017"}.mce-i-insertdatetime{-ie7-icon:"\e018"}.mce-i-preview{-ie7-icon:"\e019"}.mce-i-forecolor{-ie7-icon:"\e01a"}.mce-i-backcolor{-ie7-icon:"\e01a"}.mce-i-table{-ie7-icon:"\e01b"}.mce-i-hr{-ie7-icon:"\e01c"}.mce-i-removeformat{-ie7-icon:"\e01d"}.mce-i-subscript{-ie7-icon:"\e01e"}.mce-i-superscript{-ie7-icon:"\e01f"}.mce-i-charmap{-ie7-icon:"\e020"}.mce-i-emoticons{-ie7-icon:"\e021"}.mce-i-print{-ie7-icon:"\e022"}.mce-i-fullscreen{-ie7-icon:"\e023"}.mce-i-spellchecker{-ie7-icon:"\e024"}.mce-i-nonbreaking{-ie7-icon:"\e025"}.mce-i-template{-ie7-icon:"\e026"}.mce-i-pagebreak{-ie7-icon:"\e027"}.mce-i-restoredraft{-ie7-icon:"\e028"}.mce-i-untitled{-ie7-icon:"\e029"}.mce-i-bold{-ie7-icon:"\e02a"}.mce-i-italic{-ie7-icon:"\e02b"}.mce-i-underline{-ie7-icon:"\e02c"}.mce-i-strikethrough{-ie7-icon:"\e02d"}.mce-i-visualchars{-ie7-icon:"\e02e"}.mce-i-ltr{-ie7-icon:"\e02f"}.mce-i-rtl{-ie7-icon:"\e030"}.mce-i-copy{-ie7-icon:"\e031"}.mce-i-resize{-ie7-icon:"\e032"}.mce-i-browse{-ie7-icon:"\e034"}.mce-i-pastetext{-ie7-icon:"\e035"}.mce-i-rotateleft{-ie7-icon:"\eaa8"}.mce-i-rotateright{-ie7-icon:"\eaa9"}.mce-i-crop{-ie7-icon:"\ee78"}.mce-i-editimage{-ie7-icon:"\e914"}.mce-i-options{-ie7-icon:"\ec6a"}.mce-i-flipv{-ie7-icon:"\eaaa"}.mce-i-fliph{-ie7-icon:"\eaac"}.mce-i-zoomin{-ie7-icon:"\eb35"}.mce-i-zoomout{-ie7-icon:"\eb36"}.mce-i-sun{-ie7-icon:"\eccc"}.mce-i-moon{-ie7-icon:"\eccd"}.mce-i-arrowleft{-ie7-icon:"\edc0"}.mce-i-arrowright{-ie7-icon:"\edb8"}.mce-i-drop{-ie7-icon:"\e934"}.mce-i-contrast{-ie7-icon:"\ecd4"}.mce-i-sharpen{-ie7-icon:"\eba7"}.mce-i-palette{-ie7-icon:"\e92a"}.mce-i-resize2{-ie7-icon:"\edf9"}.mce-i-orientation{-ie7-icon:"\e601"}.mce-i-invert{-ie7-icon:"\e602"}.mce-i-gamma{-ie7-icon:"\e600"}.mce-i-remove{-ie7-icon:"\ed6a"}.mce-i-codesample{-ie7-icon:"\e603"}.mce-i-checkbox,.mce-i-selected{-ie7-icon:"\e033"}.mce-i-selected{visibility:hidden}.mce-i-backcolor{background:#BBB}
\ No newline at end of file
--- /dev/null
+{
+ "skin-name": "dark",
+ "preview-bg": "#222222",
+ "text": "#b5b9bf",
+ "text-inverse": "#000000",
+ "text-disabled": "#6e737a",
+ "has-gradients": false,
+ "has-radius": false,
+ "has-boxshadow": false,
+ "has-button-borders": true,
+ "btn-text": "#b5b9bf",
+ "btn-text-shadow": "#000000",
+ "btn-bg": "#333",
+ "btn-bg-hlight": "#454f59",
+ "btn-border-top": "rgba(0,0,0,0)",
+ "btn-border-right": "rgba(0,0,0,0)",
+ "btn-border-bottom": "rgba(0,0,0,0)",
+ "btn-border-left": "rgba(0,0,0,0)",
+ "btn-split-border": "#202a33",
+ "btn-primary-text": "#ffffff",
+ "btn-primary-text-shadow": "#333333",
+ "btn-primary-bg": "#006fa6",
+ "btn-primary-bg-hlight": "#005580",
+ "btn-padding": "4px 10px",
+ "menu-bg": "#2f3740",
+ "menu-border": "#202a33",
+ "menuitem-text": "#dddddd",
+ "menuitem-bg-selected": "#006fa6",
+ "menuitem-bg-selected-hlight": "#005580",
+ "menuitem-separator-top": "#25313f",
+ "menuitem-separator-bottom": "#424f5f",
+ "menuitem-text-inverse": "#ffffff",
+ "menuitem-bg-active": "#0085c7",
+ "menuitem-text-active": "#ffffff",
+ "menuitem-preview-border-active": "#08608c",
+ "menubar-menubtn-text": "#b5b9bf",
+ "checkbox-border": "#202a33",
+ "checkbox-border-focus": "#1e7dad",
+ "panel-border": "#232b33",
+ "panel-bg": "#333333",
+ "panel-bg-hlight": "#404952",
+ "textbox-bg": "#515c67",
+ "textbox-border": "#202a33",
+ "textbox-border-focus": "#1e7dad",
+ "window-bg": "#333",
+ "window-border": "#9e9e9e",
+ "tab-bg": "#303942",
+ "tab-bg-hover": "#404952",
+ "tab-bg-active": "#404952",
+ "tab-border": "#202a33",
+ "tabs-bg": "#303942",
+ "notification-bg": "#f0f0f0",
+ "notification-border": "#cccccc",
+ "notification-text": "#333333",
+ "notification-success-bg": "#dff0d8",
+ "notification-success-border": "#d6e9c6",
+ "notification-success-text": "#3c763d",
+ "notification-info-bg": "#d9edf7",
+ "notification-info-border": "#779ecb",
+ "notification-info-text": "#31708f",
+ "notification-warning-bg": "#fcf8e3",
+ "notification-warning-border": "#faebcc",
+ "notification-warning-text": "#8a6d3b",
+ "notification-error-bg": "#f2dede",
+ "notification-error-border": "#ebccd1",
+ "notification-error-text": "#a94442",
+ "progress-bar-bg": "#515c67",
+ "progress-bar-bg-hlight": "#515c67",
+ "progress-border": "#202a33",
+ "progress-text": "#c4c4c4",
+ "progress-text-shadow": "#000000",
+ "slider-bg": "#515c67",
+ "slider-border": "#202a33",
+ "slider-handle-bg": "#454f59",
+ "slider-handle-border": "#000000",
+ "colorbtn-backcolor-bg": "#384552",
+ "grid-border": "#d6d6d6",
+ "grid-border-active": "#d6d6d6"
+}
\ No newline at end of file
--- /dev/null
+.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#b5b9bf;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block}.mce-wordcount{position:absolute;top:0;right:0;padding:8px}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative}.mce-fullscreen .mce-resizehandle{display:none}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #232b33;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:#454f59}.mce-grid td.mce-grid-cell div{border:1px solid #d6d6d6;width:15px;height:15px;margin:0px;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#d6d6d6}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#d6d6d6}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#d6d6d6;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#d6d6d6;background:#0085c7}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#cbced2}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp{padding-bottom:2px}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-container b{font-weight:bold}.mce-container p{margin-bottom:5px}.mce-container a{cursor:pointer;color:#2980b9}.mce-container a:hover{text-decoration:underline}.mce-container ul{margin-left:15px}.mce-container .mce-table-striped{border-collapse:collapse;margin:10px}.mce-container .mce-table-striped thead>tr{background-color:#fafafa}.mce-container .mce-table-striped thead>tr th{font-weight:bold}.mce-container .mce-table-striped td,.mce-container .mce-table-striped th{padding:5px}.mce-container .mce-table-striped tr:nth-child(even){background-color:#fafafa}.mce-container .mce-table-striped tbody>tr:hover{background-color:#e1e1e1}.mce-branding-powered-by{background-color:#383c3f;position:absolute;right:0;bottom:0;width:91px;height:9px;margin-right:-1px;margin-bottom:-1px;border:1px solid #202a33;border-width:1px 1px 0 1px;padding:6px 6px 0 6px;background-image:url('data:image/gif;base64,R0lGODlhXwAJAIABAIiIiAAAACH5BAEKAAEALAAAAABfAAkAAAJxhBGpy+2PUnzqGNpmPNJqDIZSJY4m+KXLF3At2V6xPFfuvMF6J6fINTnhTr9XcaRC6pKvFYlZjDIszaXRSA3ijlXo9AlWindaldSJthJ55XAz6+ZWbVCOdojP77p8J8vlUSI4SHEnaEiYqOhARdhIWAAAOw');background-repeat:no-repeat;background-position:center center}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.3;filter:alpha(opacity=30);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#1e7dad}.mce-croprect-handle-move:focus{outline:1px solid #1e7dad}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel-bg{position:absolute;background:url('data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==')}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:#232b33;border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:#232b33;border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#383c3f;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#383c3f;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:#232b33;border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#383c3f;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:#232b33;border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#383c3f;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-edit-aria-container>.mce-container-body{display:flex}.mce-edit-aria-container>.mce-container-body .mce-edit-area{flex:1}.mce-edit-aria-container>.mce-container-body .mce-sidebar>.mce-container-body{display:flex;align-items:stretch;height:100%}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel{min-width:250px;max-width:250px;position:relative}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel>.mce-container-body{position:absolute;width:100%;height:100%;overflow:auto;top:0;left:0}.mce-sidebar-toolbar{border:0 solid #232b33;border-left-width:1px}.mce-sidebar-toolbar .mce-btn.mce-active,.mce-sidebar-toolbar .mce-btn.mce-active:hover{border:1px solid transparent;border-color:transparent;background-color:#006597}.mce-sidebar-toolbar .mce-btn.mce-active button,.mce-sidebar-toolbar .mce-btn.mce-active:hover button,.mce-sidebar-toolbar .mce-btn.mce-active button i,.mce-sidebar-toolbar .mce-btn.mce-active:hover button i{color:#fff;text-shadow:1px 1px #333}.mce-sidebar-panel{border:0 solid #232b33;border-left-width:1px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #303133;border:0 solid #232b33;background-color:#383c3f}.mce-floatpanel{position:absolute}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;top:0;left:0;background:#333;border:1px solid #232b33;border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#232b33;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#333}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#000}#mce-modal-block.mce-in{opacity:.3;filter:alpha(opacity=30);zoom:1}.mce-window-move{cursor:move}.mce-window{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#333;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #9e9e9e;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#818387}.mce-close:hover i{color:#67696b}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#333;border-top:1px solid #9e9e9e}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#000}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:15px}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1}.mce-tooltip-inner{font-size:11px;background-color:#000;color:#fff;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-ne,.mce-tooltip-se{margin-left:14px}.mce-tooltip-n .mce-tooltip-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #202a33;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#c4c4c4}.mce-bar{display:block;width:0%;height:100%;background-color:#515c67;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#f0f0f0;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#ccc;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ecb}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#333}.mce-notification .mce-progress .mce-bar-container{border-color:#ccc}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#333}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ecb}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#818387;cursor:pointer;height:20px;overflow:hidden}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #242424;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);position:relative;text-shadow:0 1px 1px rgba(0,0,0,0.75);display:inline-block;*display:inline;*zoom:1;background-color:#3a3e42}.mce-btn:hover,.mce-btn:focus{color:#b5b9bf;background-color:#2e3135;border-color:#000}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover{background-color:#262a2d;border-color:#000}.mce-btn:active{background-color:#2b2e32;border-color:#000}.mce-btn button{padding:4px 10px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#b5b9bf;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px #000}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:#fff;border:1px solid transparent;border-color:transparent;background-color:#006597}.mce-primary:hover,.mce-primary:focus{background-color:#00547d;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#004364}.mce-primary button,.mce-primary button i{color:#fff;text-shadow:1px 1px #333}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #b5b9bf;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#6e737a}.mce-caret.mce-up{border-bottom:4px solid #b5b9bf;border-top:0}.mce-btn-flat{border:0;background:transparent;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#1a1a1a;filter:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group .mce-btn{border-left-width:0;border-right-width:0;margin-left:0}.mce-btn-group:not(:first-child){padding-left:1px;margin-left:1px}.mce-btn-group .mce-first{border-left:1px solid rgba(0,0,0,0);margin-left:0}.mce-btn-group .mce-last{border-right:1px solid rgba(0,0,0,0)}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #0d0d0d;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #202a33;background-color:#3a3e42;text-indent:-10em;*font-size:0;*line-height:0;*text-indent:0;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#b5b9bf;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid #1e7dad}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#67696b}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{position:relative;display:inline-block;*display:inline;*zoom:1;*height:32px}.mce-combobox input{border:1px solid #202a33;border-right-color:#202a33;height:28px}.mce-combobox.mce-disabled input{color:#79818a}.mce-combobox .mce-btn{border:1px solid #202a33;border-left:0;margin:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-combobox .mce-status{position:absolute;right:2px;top:50%;line-height:16px;margin-top:-8px;font-size:12px;width:15px;height:15px;text-align:center;cursor:pointer}.mce-combobox.mce-has-status input{padding-right:20px}.mce-combobox.mce-has-open .mce-status{right:37px}.mce-combobox .mce-status.mce-i-warning{color:#c09853}.mce-combobox .mce-status.mce-i-checkmark{color:#468847}.mce-menu.mce-combobox-menu{border-top:0;margin-top:0;max-height:200px}.mce-menu.mce-combobox-menu .mce-menu-item{padding:4px 6px 4px 4px;font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-sep{padding:0}.mce-menu.mce-combobox-menu .mce-text{font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-link,.mce-menu.mce-combobox-menu .mce-menu-item-link b{font-size:11px}.mce-menu.mce-combobox-menu .mce-text b{font-size:11px}.mce-colorbox i{border:1px solid #202a33;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton button{padding-right:6px;padding-left:6px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:1px solid transparent}.mce-colorbutton:hover .mce-open{border-color:#000}.mce-colorbutton.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #202a33;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #202a33;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid #333;background:#fff;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#b5b9bf}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#666;color:#fff}.mce-path .mce-divider{display:inline}.mce-disabled .mce-path-item{color:#6e737a}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #232b33;width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(0,0,0,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #000}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(0,0,0,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#6e737a}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;filter:none}.mce-menubar .mce-menubtn button{color:#b5b9bf}.mce-menubar{border:1px solid #292e33}.mce-menubar .mce-menubtn button span{color:#b5b9bf}.mce-menubar .mce-caret{border-top-color:#b5b9bf}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#000;background:#2f3740;filter:none}.mce-menubtn button{color:#b5b9bf}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 15px 6px 12px;clear:both;font-weight:normal;line-height:20px;color:#ddd;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-ico,.mce-menu-item .mce-text{color:#ddd}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled .mce-ico{color:#75797f}.mce-menu-item:hover .mce-text,.mce-menu-item.mce-selected .mce-text,.mce-menu-item:focus .mce-text{color:#fff}.mce-menu-item:hover .mce-ico,.mce-menu-item.mce-selected .mce-ico,.mce-menu-item:focus .mce-ico{color:#fff}.mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menu-shortcut{display:inline-block;color:#75797f}.mce-menu-shortcut{display:inline-block;*display:inline;*zoom:1;padding:0 15px 0 20px}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item.mce-selected .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#fff}.mce-menu-item .mce-caret{margin-top:4px;*margin-top:3px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #ddd}.mce-menu-item.mce-selected .mce-caret,.mce-menu-item:focus .mce-caret,.mce-menu-item:hover .mce-caret{border-left-color:#fff}.mce-menu-align .mce-menu-shortcut{*margin-top:-2px}.mce-menu-align .mce-menu-shortcut,.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu-item.mce-active i{visibility:visible}.mce-menu-item-normal.mce-active{background-color:#0085c7}.mce-menu-item-preview.mce-active{border-left:5px solid #08608c}.mce-menu-item-normal.mce-active .mce-text{color:#fff}.mce-menu-item-normal.mce-active:hover .mce-text,.mce-menu-item-normal.mce-active:hover .mce-ico{color:#fff}.mce-menu-item-normal.mce-active:focus .mce-text,.mce-menu-item-normal.mce-active:focus .mce-ico{color:#fff}.mce-menu-item:hover,.mce-menu-item.mce-selected,.mce-menu-item:focus{text-decoration:none;color:#fff;background-color:#006597}.mce-menu-item-link{color:#093;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mce-menu-item-link b{color:#093}.mce-menu-item-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mce-menu-item:hover *,.mce-menu-item.mce-selected *,.mce-menu-item:focus *{color:#fff}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:#25313f;border-bottom:1px solid #424f5f;cursor:default;filter:none}div.mce-menu .mce-menu-item b{font-weight:bold}.mce-menu-item-indent-1{padding-left:20px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-3{padding-left:40px}.mce-menu-item-indent-4{padding-left:45px}.mce-menu-item-indent-5{padding-left:50px}.mce-menu-item-indent-6{padding-left:55px}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-menu-align.mce-rtl .mce-menu-shortcut,.mce-menu-align.mce-rtl .mce-caret{right:auto;left:0}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #ddd;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#fff}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:160px;background:#2f3740;border:1px solid #0d2133;border:1px solid #202a33;z-index:1002;max-height:400px;overflow:auto;overflow-x:hidden}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block;*display:inline}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#b5b9bf}.mce-selectbox{background:#515c67;border:1px solid #202a33}.mce-slider{border:1px solid #202a33;background:#515c67;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #000;background:#454f59;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{background:#bbb}.mce-spacer{visibility:hidden}.mce-splitbtn .mce-open{border-left:1px solid transparent}.mce-splitbtn:hover .mce-open{border-left-color:#000}.mce-splitbtn button{padding-right:4px;padding-left:8px}.mce-splitbtn .mce-open{padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open.mce-active{background-color:#262a2d;outline:1px solid #000}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #202a33}.mce-tabs,.mce-tabs+.mce-container-body{background:#303942}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #202a33;border-width:0 1px 0 0;background:#303942;padding:8px;text-shadow:0 1px 1px rgba(0,0,0,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#404952}.mce-tab.mce-active{background:#404952;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#515c67;border:1px solid #202a33;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#b5b9bf}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#1e7dad}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#79818a}.mce-rtl .mce-textbox{text-align:right;direction:rtl}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#b5b9bf}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-alignnone:before{content:"\e003"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-rotateleft:before{content:"\eaa8"}.mce-i-rotateright:before{content:"\eaa9"}.mce-i-crop:before{content:"\ee78"}.mce-i-editimage:before{content:"\e915"}.mce-i-options:before{content:"\ec6a"}.mce-i-flipv:before{content:"\eaaa"}.mce-i-fliph:before{content:"\eaac"}.mce-i-zoomin:before{content:"\eb35"}.mce-i-zoomout:before{content:"\eb36"}.mce-i-sun:before{content:"\eccc"}.mce-i-moon:before{content:"\eccd"}.mce-i-arrowleft:before{content:"\edc0"}.mce-i-arrowright:before{content:"\e93c"}.mce-i-drop:before{content:"\e935"}.mce-i-contrast:before{content:"\ecd4"}.mce-i-sharpen:before{content:"\eba7"}.mce-i-resize2:before{content:"\edf9"}.mce-i-orientation:before{content:"\e601"}.mce-i-invert:before{content:"\e602"}.mce-i-gamma:before{content:"\e600"}.mce-i-remove:before{content:"\ed6a"}.mce-i-tablerowprops:before{content:"\e604"}.mce-i-tablecellprops:before{content:"\e605"}.mce-i-table2:before{content:"\e606"}.mce-i-tablemergecells:before{content:"\e607"}.mce-i-tableinsertcolbefore:before{content:"\e608"}.mce-i-tableinsertcolafter:before{content:"\e609"}.mce-i-tableinsertrowbefore:before{content:"\e60a"}.mce-i-tableinsertrowafter:before{content:"\e60b"}.mce-i-tablesplitcells:before{content:"\e60d"}.mce-i-tabledelete:before{content:"\e60e"}.mce-i-tableleftheader:before{content:"\e62a"}.mce-i-tabletopheader:before{content:"\e62b"}.mce-i-tabledeleterow:before{content:"\e800"}.mce-i-tabledeletecol:before{content:"\e801"}.mce-i-codesample:before{content:"\e603"}.mce-i-fill:before{content:"\e902"}.mce-i-borderwidth:before{content:"\e903"}.mce-i-line:before{content:"\e904"}.mce-i-count:before{content:"\e905"}.mce-i-translate:before{content:"\e907"}.mce-i-drag:before{content:"\e908"}.mce-i-home:before{content:"\e90b"}.mce-i-upload:before{content:"\e914"}.mce-i-bubble:before{content:"\e91c"}.mce-i-user:before{content:"\e91d"}.mce-i-lock:before{content:"\e926"}.mce-i-unlock:before{content:"\e927"}.mce-i-settings:before{content:"\e928"}.mce-i-remove2:before{content:"\e92a"}.mce-i-menu:before{content:"\e92d"}.mce-i-warning:before{content:"\e930"}.mce-i-question:before{content:"\e931"}.mce-i-pluscircle:before{content:"\e932"}.mce-i-info:before{content:"\e933"}.mce-i-notice:before{content:"\e934"}.mce-i-arrowup:before{content:"\e93b"}.mce-i-arrowdown:before{content:"\e93d"}.mce-i-arrowup2:before{content:"\e93f"}.mce-i-arrowdown2:before{content:"\e940"}.mce-i-menu2:before{content:"\e941"}.mce-i-newtab:before{content:"\e961"}.mce-i-a11y:before{content:"\e900"}.mce-i-plus:before{content:"\e93a"}.mce-i-insert:before{content:"\e93a"}.mce-i-minus:before{content:"\e939"}.mce-i-books:before{content:"\e911"}.mce-i-reload:before{content:"\e906"}.mce-i-toc:before{content:"\e901"}.mce-i-checkmark:before{content:"\e033"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-insert{font-size:14px}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#384552}
\ No newline at end of file
-.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,.mce-content-body.mce-content-readonly *[contentEditable=true]:hover{outline:none}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.mce-content-body table{-webkit-nbsp-mode:normal}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2}.mce-content-body{line-height:1.3}
\ No newline at end of file
+.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,.mce-content-body.mce-content-readonly *[contentEditable=true]:hover{outline:none}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.mce-content-body table{-webkit-nbsp-mode:normal}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2}.mce-content-body{line-height:1.3}
\ No newline at end of file
-body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;line-height:1.3;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px}.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,.mce-content-body.mce-content-readonly *[contentEditable=true]:hover{outline:none}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.mce-content-body table{-webkit-nbsp-mode:normal}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2}
\ No newline at end of file
+body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;line-height:1.3;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px}.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,.mce-content-body.mce-content-readonly *[contentEditable=true]:hover{outline:none}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.mce-content-body table{-webkit-nbsp-mode:normal}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2}
\ No newline at end of file
-// 4.9.4 (2019-03-20)
-!function(H){"use strict";var o=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t]},j=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},q=function(e){return function(){return e}},$=function(e){return e};function d(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}var e,t,n,r,i,a,u,s,c,l,f,m,g,p,h,v,b,y=function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}},C=q(!1),x=q(!0),w=C,N=x,E=function(){return S},S=(r={fold:function(e,t){return e()},is:w,isSome:w,isNone:N,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:function(){return null},getOrUndefined:function(){return undefined},or:n,orThunk:t,map:E,ap:E,each:function(){},bind:E,flatten:E,exists:w,forall:N,filter:E,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:q("none()")},Object.freeze&&Object.freeze(r),r),k=function(n){var e=function(){return n},t=function(){return o},r=function(e){return e(n)},o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:N,isNone:w,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return k(e(n))},ap:function(e){return e.fold(E,function(e){return k(e(n))})},each:function(e){e(n)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(n)?o:S},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(w,function(e){return t(n,e)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},A={some:k,none:E,from:function(e){return null===e||e===undefined?S:k(e)}},T=function(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&Array.prototype.isPrototypeOf(e)?"array":"object"===t&&String.prototype.isPrototypeOf(e)?"string":t}(e)===t}},R=T("string"),_=T("object"),D=T("array"),B=T("null"),O=T("boolean"),P=T("function"),L=T("number"),I=(i=Array.prototype.indexOf)===undefined?function(e,t){return Y(e,t)}:function(e,t){return i.call(e,t)},M=function(e,t){return-1<I(e,t)},W=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o,e)}return r},F=function(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)},K=function(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o,e)?n:r).push(a)}return{pass:n,fail:r}},z=function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r,e)&&n.push(i)}return n},U=function(e,t,n){return F(e,function(e){n=t(n,e)}),n},V=function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n,e))return A.some(o)}return A.none()},X=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n,e))return A.some(n);return A.none()},Y=function(e,t){for(var n=0,r=e.length;n<r;++n)if(e[n]===t)return n;return-1},G=Array.prototype.push,J=function(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!Array.prototype.isPrototypeOf(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);G.apply(t,e[n])}return t}(W(e,t))},Q=function(e,t){for(var n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n,e))return!1;return!0},Z=Array.prototype.slice,ee=function(e,t){return z(e,function(e){return!M(t,e)})},te=function(e){return 0===e.length?A.none():A.some(e[0])},ne=function(e){return 0===e.length?A.none():A.some(e[e.length-1])},re=P(Array.from)?Array.from:function(e){return Z.call(e)},oe="undefined"!=typeof H.window?H.window:Function("return this;")(),ie=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:oe,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},ae={getOrDie:function(e,t){var n=ie(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n}},ue=function(){return ae.getOrDie("URL")},se={createObjectURL:function(e){return ue().createObjectURL(e)},revokeObjectURL:function(e){ue().revokeObjectURL(e)}},ce=H.navigator,le=ce.userAgent,fe=function(e){return"matchMedia"in H.window&&H.matchMedia(e).matches};g=/Android/.test(le),u=(u=!(a=/WebKit/.test(le))&&/MSIE/gi.test(le)&&/Explorer/gi.test(ce.appName))&&/MSIE (\w+)\./.exec(le)[1],s=-1!==le.indexOf("Trident/")&&(-1!==le.indexOf("rv:")||-1!==ce.appName.indexOf("Netscape"))&&11,c=-1!==le.indexOf("Edge/")&&!u&&!s&&12,u=u||s||c,l=!a&&!s&&/Gecko/.test(le),f=-1!==le.indexOf("Mac"),m=/(iPad|iPhone)/.test(le),p="FormData"in H.window&&"FileReader"in H.window&&"URL"in H.window&&!!se.createObjectURL,h=fe("only screen and (max-device-width: 480px)")&&(g||m),v=fe("only screen and (min-width: 800px)")&&(g||m),b=-1!==le.indexOf("Windows Phone"),c&&(a=!1);var de,me={opera:!1,webkit:a,ie:u,gecko:l,mac:f,iOS:m,android:g,contentEditable:!m||p||534<=parseInt(le.match(/AppleWebKit\/(\d*)/)[1],10),transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!==u,range:H.window.getSelection&&"Range"in H.window,documentMode:u&&!c?H.document.documentMode||7:10,fileApi:p,ceFalse:!1===u||8<u,cacheSuffix:null,container:null,overrideViewPort:null,experimentalShadowDom:!1,canHaveCSP:!1===u||11<u,desktop:!h&&!v,windowsPhone:b},ge=window.Promise?window.Promise:function(){function r(e,t){return function(){e.apply(t,arguments)}}var e=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=function(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],l(e,r(o,this),r(u,this))},t=i.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)};function a(r){var o=this;null!==this._state?t(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(o._value)}catch(n){return void r.reject(n)}r.resolve(t)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function o(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void l(r(t,e),r(o,this),r(u,this))}this._state=!0,this._value=e,s.call(this)}catch(n){u.call(this,n)}}function u(e){this._state=!1,this._value=e,s.call(this)}function s(){for(var e=0,t=this._deferreds.length;e<t;e++)a.call(this,this._deferreds[e]);this._deferreds=null}function c(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function l(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(o){if(r)return;r=!0,n(o)}}return i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(n,r){var o=this;return new i(function(e,t){a.call(o,new c(n,r,e,t))})},i.all=function(){var s=Array.prototype.slice.call(1===arguments.length&&e(arguments[0])?arguments[0]:arguments);return new i(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i}(),pe=function(e,t){return"number"!=typeof t&&(t=0),setTimeout(e,t)},he=function(e,t){return"number"!=typeof t&&(t=1),setInterval(e,t)},ve=function(t,n){var r,e;return(e=function(){var e=arguments;clearTimeout(r),r=pe(function(){t.apply(this,e)},n)}).stop=function(){clearTimeout(r)},e},be={requestAnimationFrame:function(e,t){de?de.then(e):de=new ge(function(e){t||(t=H.document.body),function(e,t){var n,r=H.window.requestAnimationFrame,o=["ms","moz","webkit"];for(n=0;n<o.length&&!r;n++)r=H.window[o[n]+"RequestAnimationFrame"];r||(r=function(e){H.window.setTimeout(e,0)}),r(e,t)}(e,t)}).then(e)},setTimeout:pe,setInterval:he,setEditorTimeout:function(e,t,n){return pe(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r;return r=he(function(){e.removed?clearInterval(r):t()},n)},debounce:ve,throttle:ve,clearInterval:function(e){return clearInterval(e)},clearTimeout:function(e){return clearTimeout(e)}},ye=/^(?:mouse|contextmenu)|click/,Ce={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1},xe=function(){return!1},we=function(){return!0},Ne=function(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)},Ee=function(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)},Se=function(e,t){var n,r,o=t||{};for(n in e)Ce[n]||(o[n]=e[n]);if(o.target||(o.target=o.srcElement||H.document),me.experimentalShadowDom&&(o.target=function(e,t){if(e.composedPath){var n=e.composedPath();if(n&&0<n.length)return n[0]}return t}(e,o.target)),e&&ye.test(e.type)&&e.pageX===undefined&&e.clientX!==undefined){var i=o.target.ownerDocument||H.document,a=i.documentElement,u=i.body;o.pageX=e.clientX+(a&&a.scrollLeft||u&&u.scrollLeft||0)-(a&&a.clientLeft||u&&u.clientLeft||0),o.pageY=e.clientY+(a&&a.scrollTop||u&&u.scrollTop||0)-(a&&a.clientTop||u&&u.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=we,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=we,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},!(o.stopImmediatePropagation=function(){o.isImmediatePropagationStopped=we,o.stopPropagation()})==((r=o).isDefaultPrevented===we||r.isDefaultPrevented===xe)&&(o.isDefaultPrevented=xe,o.isPropagationStopped=xe,o.isImmediatePropagationStopped=xe),"undefined"==typeof o.metaKey&&(o.metaKey=!1),o},ke=function(e,t,n){var r=e.document,o={type:"ready"};if(n.domLoaded)t(o);else{var i=function(){return"complete"===r.readyState||"interactive"===r.readyState&&r.body},a=function(){n.domLoaded||(n.domLoaded=!0,t(o))},u=function(){i()&&(Ee(r,"readystatechange",u),a())},s=function(){try{r.documentElement.doScroll("left")}catch(e){return void be.setTimeout(s)}a()};!r.addEventListener||me.ie&&me.ie<11?(Ne(r,"readystatechange",u),r.documentElement.doScroll&&e.self===e.top&&s()):i()?a():Ne(e,"DOMContentLoaded",a),Ne(e,"load",a)}},Te=function(){var m,g,p,h,v,b=this,y={};g="mce-data-"+(+new Date).toString(32),h="onmouseenter"in H.document.documentElement,p="onfocusin"in H.document.documentElement,v={mouseenter:"mouseover",mouseleave:"mouseout"},m=1,b.domLoaded=!1,b.events=y;var C=function(e,t){var n,r,o,i,a=y[t];if(n=a&&a[e.type])for(r=0,o=n.length;r<o;r++)if((i=n[r])&&!1===i.func.call(i.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return};b.bind=function(e,t,n,r){var o,i,a,u,s,c,l,f=H.window,d=function(e){C(Se(e||f.event),o)};if(e&&3!==e.nodeType&&8!==e.nodeType){for(e[g]?o=e[g]:(o=m++,e[g]=o,y[o]={}),r=r||e,a=(t=t.split(" ")).length;a--;)c=d,s=l=!1,"DOMContentLoaded"===(u=t[a])&&(u="ready"),b.domLoaded&&"ready"===u&&"complete"===e.readyState?n.call(r,Se({type:u})):(h||(s=v[u])&&(c=function(e){var t,n;if(t=e.currentTarget,(n=e.relatedTarget)&&t.contains)n=t.contains(n);else for(;n&&n!==t;)n=n.parentNode;n||((e=Se(e||f.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,C(e,o))}),p||"focusin"!==u&&"focusout"!==u||(l=!0,s="focusin"===u?"focus":"blur",c=function(e){(e=Se(e||f.event)).type="focus"===e.type?"focusin":"focusout",C(e,o)}),(i=y[o][u])?"ready"===u&&b.domLoaded?n({type:u}):i.push({func:n,scope:r}):(y[o][u]=i=[{func:n,scope:r}],i.fakeName=s,i.capture=l,i.nativeHandler=c,"ready"===u?ke(e,c,b):Ne(e,s||u,c,l)));return e=i=0,n}},b.unbind=function(e,t,n){var r,o,i,a,u,s;if(!e||3===e.nodeType||8===e.nodeType)return b;if(r=e[g]){if(s=y[r],t){for(i=(t=t.split(" ")).length;i--;)if(o=s[u=t[i]]){if(n)for(a=o.length;a--;)if(o[a].func===n){var c=o.nativeHandler,l=o.fakeName,f=o.capture;(o=o.slice(0,a).concat(o.slice(a+1))).nativeHandler=c,o.fakeName=l,o.capture=f,s[u]=o}n&&0!==o.length||(delete s[u],Ee(e,o.fakeName||u,o.nativeHandler,o.capture))}}else{for(u in s)o=s[u],Ee(e,o.fakeName||u,o.nativeHandler,o.capture);s={}}for(u in s)return b;delete y[r];try{delete e[g]}catch(d){e[g]=null}}return b},b.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return b;for((n=Se(null,n)).type=t,n.target=e;(r=e[g])&&C(n,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!n.isPropagationStopped(););return b},b.clean=function(e){var t,n,r=b.unbind;if(!e||3===e.nodeType||8===e.nodeType)return b;if(e[g]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[g]&&r(e);return b},b.destroy=function(){y={}},b.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}};Te.Event=new Te,Te.Event.bind(H.window,"ready",function(){});var Ae,Re,_e,De,Be,Oe,Pe,Le,Ie,Me,Fe,ze,Ue,Ve,He,je,qe,$e,We="sizzle"+-new Date,Ke=H.window.document,Xe=0,Ye=0,Ge=At(),Je=At(),Qe=At(),Ze=function(e,t){return e===t&&(Fe=!0),0},et=typeof undefined,tt={}.hasOwnProperty,nt=[],rt=nt.pop,ot=nt.push,it=nt.push,at=nt.slice,ut=nt.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},st="[\\x20\\t\\r\\n\\f]",ct="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",lt="\\["+st+"*("+ct+")(?:"+st+"*([*^$|!~]?=)"+st+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ct+"))|)"+st+"*\\]",ft=":("+ct+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+lt+")*)|.*)\\)|)",dt=new RegExp("^"+st+"+|((?:^|[^\\\\])(?:\\\\.)*)"+st+"+$","g"),mt=new RegExp("^"+st+"*,"+st+"*"),gt=new RegExp("^"+st+"*([>+~]|"+st+")"+st+"*"),pt=new RegExp("="+st+"*([^\\]'\"]*?)"+st+"*\\]","g"),ht=new RegExp(ft),vt=new RegExp("^"+ct+"$"),bt={ID:new RegExp("^#("+ct+")"),CLASS:new RegExp("^\\.("+ct+")"),TAG:new RegExp("^("+ct+"|[*])"),ATTR:new RegExp("^"+lt),PSEUDO:new RegExp("^"+ft),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+st+"*(even|odd|(([+-]|)(\\d*)n|)"+st+"*(?:([+-]|)"+st+"*(\\d+)|))"+st+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+st+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+st+"*((?:-\\d)?\\d*)"+st+"*\\)|)(?=[^-]|$)","i")},yt=/^(?:input|select|textarea|button)$/i,Ct=/^h\d$/i,xt=/^[^{]+\{\s*\[native \w/,wt=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Nt=/[+~]/,Et=/'|\\/g,St=new RegExp("\\\\([\\da-f]{1,6}"+st+"?|("+st+")|.)","ig"),kt=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{it.apply(nt=at.call(Ke.childNodes),Ke.childNodes),nt[Ke.childNodes.length].nodeType}catch(jN){it={apply:nt.length?function(e,t){ot.apply(e,at.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var Tt=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m;if((t?t.ownerDocument||t:Ke)!==Ue&&ze(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Ue).nodeType)&&9!==u)return[];if(He&&!r){if(o=wt.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&$e(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return it.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&Re.getElementsByClassName)return it.apply(n,t.getElementsByClassName(a)),n}if(Re.qsa&&(!je||!je.test(e))){if(f=l=We,d=t,m=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=Oe(e),(l=t.getAttribute("id"))?f=l.replace(Et,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+It(c[s]);d=Nt.test(e)&&Pt(t.parentNode)||t,m=c.join(",")}if(m)try{return it.apply(n,d.querySelectorAll(m)),n}catch(g){}finally{l||t.removeAttribute("id")}}}return Le(e.replace(dt,"$1"),t,n,r)};function At(){var r=[];return function e(t,n){return r.push(t+" ")>_e.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function Rt(e){return e[We]=!0,e}function _t(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function Dt(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function Bt(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function Ot(a){return Rt(function(i){return i=+i,Rt(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Pt(e){return e&&typeof e.getElementsByTagName!==et&&e}for(Ae in Re=Tt.support={},Be=Tt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},ze=Tt.setDocument=function(e){var t,s=e?e.ownerDocument||e:Ke,n=s.defaultView;return s!==Ue&&9===s.nodeType&&s.documentElement?(Ve=(Ue=s).documentElement,He=!Be(s),n&&n!==function(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){ze()},!1):n.attachEvent&&n.attachEvent("onunload",function(){ze()})),Re.attributes=!0,Re.getElementsByTagName=!0,Re.getElementsByClassName=xt.test(s.getElementsByClassName),Re.getById=!0,_e.find.ID=function(e,t){if(typeof t.getElementById!==et&&He){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},_e.filter.ID=function(e){var t=e.replace(St,kt);return function(e){return e.getAttribute("id")===t}},_e.find.TAG=Re.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==et)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},_e.find.CLASS=Re.getElementsByClassName&&function(e,t){if(He)return t.getElementsByClassName(e)},qe=[],je=[],Re.disconnectedMatch=!0,je=je.length&&new RegExp(je.join("|")),qe=qe.length&&new RegExp(qe.join("|")),t=xt.test(Ve.compareDocumentPosition),$e=t||xt.test(Ve.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},Ze=t?function(e,t){if(e===t)return Fe=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!Re.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===Ke&&$e(Ke,e)?-1:t===s||t.ownerDocument===Ke&&$e(Ke,t)?1:Me?ut.call(Me,e)-ut.call(Me,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Fe=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Me?ut.call(Me,e)-ut.call(Me,t):0;if(o===i)return _t(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?_t(a[r],u[r]):a[r]===Ke?-1:u[r]===Ke?1:0},s):Ue},Tt.matches=function(e,t){return Tt(e,null,null,t)},Tt.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Ue&&ze(e),t=t.replace(pt,"='$1']"),Re.matchesSelector&&He&&(!qe||!qe.test(t))&&(!je||!je.test(t)))try{var n=(void 0).call(e,t);if(n||Re.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(jN){}return 0<Tt(t,Ue,null,[e]).length},Tt.contains=function(e,t){return(e.ownerDocument||e)!==Ue&&ze(e),$e(e,t)},Tt.attr=function(e,t){(e.ownerDocument||e)!==Ue&&ze(e);var n=_e.attrHandle[t.toLowerCase()],r=n&&tt.call(_e.attrHandle,t.toLowerCase())?n(e,t,!He):undefined;return r!==undefined?r:Re.attributes||!He?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},Tt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},Tt.uniqueSort=function(e){var t,n=[],r=0,o=0;if(Fe=!Re.detectDuplicates,Me=!Re.sortStable&&e.slice(0),e.sort(Ze),Fe){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Me=null,e},De=Tt.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=De(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=De(t);return n},(_e=Tt.selectors={cacheLength:50,createPseudo:Rt,match:bt,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(St,kt),e[3]=(e[3]||e[4]||e[5]||"").replace(St,kt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||Tt.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&Tt.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return bt.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&ht.test(n)&&(t=Oe(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(St,kt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Ge[e+" "];return t||(t=new RegExp("(^|"+st+")"+e+"("+st+"|$)"))&&Ge(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==et&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=Tt.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(m,e,t,g,p){var h="nth"!==m.slice(0,3),v="last"!==m.slice(-4),b="of-type"===e;return 1===g&&0===p?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=h!==v?"nextSibling":"previousSibling",l=e.parentNode,f=b&&e.nodeName.toLowerCase(),d=!n&&!b;if(l){if(h){for(;c;){for(i=e;i=i[c];)if(b?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===m&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[We]||(l[We]={}))[m]||[])[0]===Xe&&r[1],a=r[0]===Xe&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[m]=[Xe,u,a];break}}else if(d&&(r=(e[We]||(e[We]={}))[m])&&r[0]===Xe)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((b?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[We]||(i[We]={}))[m]=[Xe,a]),i!==e)););return(a-=p)===g||a%g==0&&0<=a/g}}},PSEUDO:function(e,i){var t,a=_e.pseudos[e]||_e.setFilters[e.toLowerCase()]||Tt.error("unsupported pseudo: "+e);return a[We]?a(i):1<a.length?(t=[e,e,"",i],_e.setFilters.hasOwnProperty(e.toLowerCase())?Rt(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=ut.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:Rt(function(e){var r=[],o=[],u=Pe(e.replace(dt,"$1"));return u[We]?Rt(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),!o.pop()}}),has:Rt(function(t){return function(e){return 0<Tt(t,e).length}}),contains:Rt(function(t){return t=t.replace(St,kt),function(e){return-1<(e.textContent||e.innerText||De(e)).indexOf(t)}}),lang:Rt(function(n){return vt.test(n||"")||Tt.error("unsupported lang: "+n),n=n.replace(St,kt).toLowerCase(),function(e){var t;do{if(t=He?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=H.window.location&&H.window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===Ve},focus:function(e){return e===Ue.activeElement&&(!Ue.hasFocus||Ue.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!_e.pseudos.empty(e)},header:function(e){return Ct.test(e.nodeName)},input:function(e){return yt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:Ot(function(){return[0]}),last:Ot(function(e,t){return[t-1]}),eq:Ot(function(e,t,n){return[n<0?n+t:n]}),even:Ot(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:Ot(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:Ot(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:Ot(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=_e.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})_e.pseudos[Ae]=Dt(Ae);for(Ae in{submit:!0,reset:!0})_e.pseudos[Ae]=Bt(Ae);function Lt(){}function It(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function Mt(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=Ye++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[Xe,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||s){if((r=(o=e[We]||(e[We]={}))[u])&&r[0]===Xe&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function Ft(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function zt(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function Ut(m,g,p,h,v,e){return h&&!h[We]&&(h=Ut(h)),v&&!v[We]&&(v=Ut(v,e)),Rt(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function(e,t,n){for(var r=0,o=t.length;r<o;r++)Tt(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:zt(l,u,m,n,r),d=p?v||(e?m:c||h)?[]:t:f;if(p&&p(f,d,n,r),h)for(o=zt(d,s),h(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(v||m){if(v){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);v(null,d=[],o,r)}for(i=d.length;i--;)(a=d[i])&&-1<(o=v?ut.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=zt(d===t?d.splice(c,d.length):d),v?v(null,t,d,r):it.apply(t,d)})}function Vt(e){for(var r,t,n,o=e.length,i=_e.relative[e[0].type],a=i||_e.relative[" "],u=i?1:0,s=Mt(function(e){return e===r},a,!0),c=Mt(function(e){return-1<ut.call(r,e)},a,!0),l=[function(e,t,n){return!i&&(n||t!==Ie)||((r=t).nodeType?s(e,t,n):c(e,t,n))}];u<o;u++)if(t=_e.relative[e[u].type])l=[Mt(Ft(l),t)];else{if((t=_e.filter[e[u].type].apply(null,e[u].matches))[We]){for(n=++u;n<o&&!_e.relative[e[n].type];n++);return Ut(1<u&&Ft(l),1<u&&It(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(dt,"$1"),t,u<n&&Vt(e.slice(u,n)),n<o&&Vt(e=e.slice(n)),n<o&&It(e))}l.push(t)}return Ft(l)}Lt.prototype=_e.filters=_e.pseudos,_e.setFilters=new Lt,Oe=Tt.tokenize=function(e,t){var n,r,o,i,a,u,s,c=Je[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],s=_e.preFilter;a;){for(i in n&&!(r=mt.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=gt.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(dt," ")}),a=a.slice(n.length)),_e.filter)!(r=bt[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?Tt.error(e):Je(e,u).slice(0)},Pe=Tt.compile=function(e,t){var n,h,v,b,y,r,o=[],i=[],a=Qe[e+" "];if(!a){for(t||(t=Oe(e)),n=t.length;n--;)(a=Vt(t[n]))[We]?o.push(a):i.push(a);(a=Qe(e,(h=i,b=0<(v=o).length,y=0<h.length,r=function(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=Ie,m=e||y&&_e.find.TAG("*",o),g=Xe+=null==d?1:Math.random()||.1,p=m.length;for(o&&(Ie=t!==Ue&&t);c!==p&&null!=(i=m[c]);c++){if(y&&i){for(a=0;u=h[a++];)if(u(i,t,n)){r.push(i);break}o&&(Xe=g)}b&&((i=!u&&i)&&s--,e&&l.push(i))}if(s+=c,b&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=rt.call(r));f=zt(f)}it.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&Tt.uniqueSort(r)}return o&&(Xe=g,Ie=d),l},b?Rt(r):r))).selector=e}return a},Le=Tt.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&Oe(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&Re.getById&&9===t.nodeType&&He&&_e.relative[i[1].type]){if(!(t=(_e.find.ID(a.matches[0].replace(St,kt),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=bt.needsContext.test(e)?0:i.length;o--&&(a=i[o],!_e.relative[u=a.type]);)if((s=_e.find[u])&&(r=s(a.matches[0].replace(St,kt),Nt.test(i[0].type)&&Pt(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&It(i)))return it.apply(n,r),n;break}}return(c||Pe(e,l))(r,t,!He,n,Nt.test(e)&&Pt(t.parentNode)||t),n},Re.sortStable=We.split("").sort(Ze).join("")===We,Re.detectDuplicates=!!Fe,ze(),Re.sortDetached=!0;var Ht=Array.isArray,jt=function(e,t,n){var r,o;if(!e)return 0;if(n=n||e,e.length!==undefined){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return 0}else for(r in e)if(e.hasOwnProperty(r)&&!1===t.call(n,e[r],r,e))return 0;return 1},qt=function(e,t,n){var r,o;for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1},$t={isArray:Ht,toArray:function(e){var t,n,r=e;if(!Ht(e))for(r=[],t=0,n=e.length;t<n;t++)r[t]=e[t];return r},each:jt,map:function(n,r){var o=[];return jt(n,function(e,t){o.push(r(e,t,n))}),o},filter:function(n,r){var o=[];return jt(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o},indexOf:function(e,t){var n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},reduce:function(e,t,n,r){var o=0;for(arguments.length<3&&(n=e[0]);o<e.length;o++)n=t.call(r,n,e[o],o);return n},findIndex:qt,find:function(e,t,n){var r=qt(e,t,n);return-1!==r?e[r]:undefined},last:function(e){return e[e.length-1]}},Wt=/^\s*|\s*$/g,Kt=function(e){return null===e||e===undefined?"":(""+e).replace(Wt,"")},Xt=function(e,t){return t?!("array"!==t||!$t.isArray(e))||typeof e===t:e!==undefined},Yt=function(e,n,r,o){o=o||this,e&&(r&&(e=e[r]),$t.each(e,function(e,t){if(!1===n.call(o,e,t,r))return!1;Yt(e,n,r,o)}))},Gt={trim:Kt,isArray:$t.isArray,is:Xt,toArray:$t.toArray,makeMap:function(e,t,n){var r;for(t=t||",","string"==typeof(e=e||[])&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n},each:$t.each,map:$t.map,grep:$t.filter,inArray:$t.indexOf,hasOwn:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},extend:function(e,t){for(var n,r,o,i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];var u,s=arguments;for(n=1,r=s.length;n<r;n++)for(o in t=s[n])t.hasOwnProperty(o)&&(u=t[o])!==undefined&&(e[o]=u);return e},create:function(e,t,n){var r,o,i,a,u,s=this,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),i=e[3].match(/(^|\.)(\w+)$/i)[2],!(o=s.createNS(e[3].replace(/\.\w+$/,""),n))[i]){if("static"===e[2])return o[i]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[i]));t[i]||(t[i]=function(){},c=1),o[i]=t[i],s.extend(o[i].prototype,t),e[5]&&(r=s.resolve(e[5]).prototype,a=e[5].match(/\.(\w+)$/i)[1],u=o[i],o[i]=c?function(){return r[a].apply(this,arguments)}:function(){return this.parent=r[a],u.apply(this,arguments)},o[i].prototype[i]=o[i],s.each(r,function(e,t){o[i].prototype[t]=r[t]}),s.each(t,function(e,t){r[t]?o[i].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==i&&(o[i].prototype[t]=e)})),s.each(t["static"],function(e,t){o[i][t]=e})}},walk:Yt,createNS:function(e,t){var n,r;for(t=t||H.window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||H.window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||Xt(e,"array")?e:$t.map(e.split(t||","),Kt)},_addCacheSuffix:function(e){var t=me.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}},Jt=H.document,Qt=Array.prototype.push,Zt=Array.prototype.slice,en=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,tn=Te.Event,nn=Gt.makeMap("children,contents,next,prev"),rn=function(e){return void 0!==e},on=function(e){return"string"==typeof e},an=function(e,t){var n,r,o;for(o=(t=t||Jt).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n},un=function(e,t,n,r){var o;if(on(t))t=an(t,xn(e[0]));else if(t.length&&!t.nodeType){if(t=hn.makeArray(t),r)for(o=t.length-1;0<=o;o--)un(e,t[o],n,r);else for(o=0;o<t.length;o++)un(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},sn=function(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")},cn=function(e,t,n){var r,o;return t=hn(t)[0],e.each(function(){var e=this;n&&r===e.parentNode||(r=e.parentNode,o=t.cloneNode(!1),e.parentNode.insertBefore(o,e)),o.appendChild(e)}),e},ln=Gt.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),fn=Gt.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),dn={"for":"htmlFor","class":"className",readonly:"readOnly"},mn={"float":"cssFloat"},gn={},pn={},hn=function(e,t){return new hn.fn.init(e,t)},vn=/^\s*|\s*$/g,bn=function(e){return null===e||e===undefined?"":(""+e).replace(vn,"")},yn=function(e,t){var n,r,o,i;if(e)if((n=e.length)===undefined){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e},Cn=function(e,n){var r=[];return yn(e,function(e,t){n(t,e)&&r.push(t)}),r},xn=function(e){return e?9===e.nodeType?e:e.ownerDocument:Jt};hn.fn=hn.prototype={constructor:hn,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return hn(e).attr(t);o.context=t=H.document}if(on(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:en.exec(e)))return hn(t).find(e);if(n[1])for(r=an(e,xn(t)).firstChild;r;)Qt.call(o,r),r=r.nextSibling;else{if(!(r=xn(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Gt.toArray(this)},add:function(e,t){var n,r,o=this;if(on(e))return o.add(hn(e));if(!1!==t)for(n=hn.unique(o.toArray().concat(hn.makeArray(e))),o.length=n.length,r=0;r<n.length;r++)o[r]=n[r];else Qt.apply(o,hn.makeArray(e));return o},attr:function(t,n){var e,r=this;if("object"==typeof t)yn(t,function(e,t){r.attr(e,t)});else{if(!rn(n)){if(r[0]&&1===r[0].nodeType){if((e=gn[t])&&e.get)return e.get(r[0],t);if(fn[t])return r.prop(t)?t:undefined;null===(n=r[0].getAttribute(t,2))&&(n=undefined)}return n}this.each(function(){var e;if(1===this.nodeType){if((e=gn[t])&&e.set)return void e.set(this,n);null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2)}})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeof(e=dn[e]||e))yn(e,function(e,t){n.prop(e,t)});else{if(!rn(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1===this.nodeType&&(this[e]=t)})}return n},css:function(n,r){var e,o,i=this,t=function(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})},a=function(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})};if("object"==typeof n)yn(n,function(e,t){i.css(e,t)});else if(rn(r))n=t(n),"number"!=typeof r||ln[n]||(r=r.toString()+"px"),i.each(function(){var e=this.style;if((o=pn[n])&&o.set)o.set(this,r);else{try{this.style[mn[n]||n]=r}catch(t){}null!==r&&""!==r||(e.removeProperty?e.removeProperty(a(n)):e.removeAttribute(n))}});else{if(e=i[0],(o=pn[n])&&o.get)return o.get(e);if(!e.ownerDocument.defaultView)return e.currentStyle?e.currentStyle[t(n)]:"";try{return e.ownerDocument.defaultView.getComputedStyle(e,null).getPropertyValue(a(n))}catch(u){return undefined}}return i},remove:function(){for(var e,t=this.length;t--;)e=this[t],tn.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(e){var t,n=this;if(rn(e)){t=n.length;try{for(;t--;)n[t].innerHTML=e}catch(r){hn(n[t]).empty().append(e)}return n}return n[0]?n[0].innerHTML:""},text:function(e){var t,n=this;if(rn(e)){for(t=n.length;t--;)"innerText"in n[t]?n[t].innerText=e:n[0].textContent=e;return n}return n[0]?n[0].innerText||n[0].textContent:""},append:function(){return un(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return un(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&&this[0].parentNode?un(this,arguments,function(e){this.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?un(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return hn(e).append(this),this},prependTo:function(e){return hn(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return cn(this,e)},wrapAll:function(e){return cn(this,e,!0)},wrapInner:function(e){return this.each(function(){hn(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){hn(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),hn(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?yn(o.split(" "),function(){e.toggleClass(this,i)}):e.each(function(e,t){var n,r;(r=sn(t,o))!==i&&(n=t.className,r?t.className=bn((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return sn(this[0],e)},each:function(e){return yn(this,e)},on:function(e,t){return this.each(function(){tn.bind(this,e,t)})},off:function(e,t){return this.each(function(){tn.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?tn.fire(this,e.type,e):tn.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new hn(Zt.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;t<n;t++)hn.find(e,this[t],r);return hn(r)},filter:function(n){return hn("function"==typeof n?Cn(this.toArray(),function(e,t){return n(t,e)}):hn.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof hn&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&hn(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),hn(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:Qt,sort:[].sort,splice:[].splice},Gt.extend(hn,{extend:Gt.extend,makeArray:function(e){return(t=e)&&t===t.window||e.nodeType?[e]:Gt.toArray(e);var t},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:Gt.isArray,each:yn,trim:bn,grep:Cn,find:Tt,expr:Tt.selectors,unique:Tt.uniqueSort,text:Tt.getText,contains:Tt.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!==t[r].nodeType&&t.splice(r,1);return t=1===t.length?hn.find.matchesSelector(t[0],e)?[t[0]]:[]:hn.find.matches(e,t)}});var wn=function(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof hn&&(n=n[0]);o&&9!==o.nodeType;){if(n!==undefined){if(o===n)break;if("string"==typeof n&&hn(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r},Nn=function(e,t,n,r){var o=[];for(r instanceof hn&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(r!==undefined){if(e===r)break;if("string"==typeof r&&hn(e).is(r))break}o.push(e)}return o},En=function(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null};yn({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return wn(e,"parentNode")},next:function(e){return En(e,"nextSibling",1)},prev:function(e){return En(e,"previousSibling",1)},children:function(e){return Nn(e.firstChild,"nextSibling",1)},contents:function(e){return Gt.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,r){hn.fn[e]=function(t){var n=[];return this.each(function(){var e=r.call(n,this,t,n);e&&(hn.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(nn[e]||(n=hn.unique(n)),0===e.indexOf("parents")&&(n=n.reverse())),n=hn(n),t?n.filter(t):n}}),yn({parentsUntil:function(e,t){return wn(e,"parentNode",t)},nextUntil:function(e,t){return Nn(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return Nn(e,"previousSibling",1,t).slice(1)}},function(r,o){hn.fn[r]=function(t,e){var n=[];return this.each(function(){var e=o.call(n,this,t,n);e&&(hn.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(n=hn.unique(n),0!==r.indexOf("parents")&&"prevUntil"!==r||(n=n.reverse())),n=hn(n),e?n.filter(e):n}}),hn.fn.is=function(e){return!!e&&0<this.filter(e).length},hn.fn.init.prototype=hn.fn,hn.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t||(t=r.context),new o.fn.init(e,t)};return hn.extend(o,this),o};var Sn=function(n,r,e){yn(e,function(e,t){n[e]=n[e]||{},n[e][r]=t})};me.ie&&me.ie<8&&(Sn(gn,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?undefined:t},size:function(e){var t=e.size;return 20===t?undefined:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?undefined:t}}),Sn(gn,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),me.ie&&me.ie<9&&(mn["float"]="styleFloat",Sn(pn,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),hn.attrHooks=gn,hn.cssHooks=pn;var kn,Tn,An,Rn=function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}return undefined}(e,t);if(!n)return{major:0,minor:0};var r=function(e){return Number(t.replace(n,"$"+e))};return Dn(r(1),r(2))},_n=function(){return Dn(0,0)},Dn=function(e,t){return{major:e,minor:t}},Bn={nu:Dn,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?_n():Rn(e,n)},unknown:_n},On="Firefox",Pn=function(e,t){return function(){return t===e}},Ln=function(e){var t=e.current;return{current:t,version:e.version,isEdge:Pn("Edge",t),isChrome:Pn("Chrome",t),isIE:Pn("IE",t),isOpera:Pn("Opera",t),isFirefox:Pn(On,t),isSafari:Pn("Safari",t)}},In={unknown:function(){return Ln({current:undefined,version:Bn.unknown()})},nu:Ln,edge:q("Edge"),chrome:q("Chrome"),ie:q("IE"),opera:q("Opera"),firefox:q(On),safari:q("Safari")},Mn="Windows",Fn="Android",zn="Solaris",Un="FreeBSD",Vn=function(e,t){return function(){return t===e}},Hn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Vn(Mn,t),isiOS:Vn("iOS",t),isAndroid:Vn(Fn,t),isOSX:Vn("OSX",t),isLinux:Vn("Linux",t),isSolaris:Vn(zn,t),isFreeBSD:Vn(Un,t)}},jn={unknown:function(){return Hn({current:undefined,version:Bn.unknown()})},nu:Hn,windows:q(Mn),ios:q("iOS"),android:q(Fn),linux:q("Linux"),osx:q("OSX"),solaris:q(zn),freebsd:q(Un)},qn=function(e,t){var n=String(t).toLowerCase();return V(e,function(e){return e.search(n)})},$n=function(e,n){return qn(e,n).map(function(e){var t=Bn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Wn=function(e,n){return qn(e,n).map(function(e){var t=Bn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Kn=function(e,t){return-1!==e.indexOf(t)},Xn=function(e){return e.replace(/^\s+|\s+$/g,"")},Yn=function(e){return e.replace(/\s+$/g,"")},Gn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Jn=function(t){return function(e){return Kn(e,t)}},Qn=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Kn(e,"edge/")&&Kn(e,"chrome")&&Kn(e,"safari")&&Kn(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Gn],search:function(e){return Kn(e,"chrome")&&!Kn(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Kn(e,"msie")||Kn(e,"trident")}},{name:"Opera",versionRegexes:[Gn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Jn("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Jn("firefox")},{name:"Safari",versionRegexes:[Gn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Kn(e,"safari")||Kn(e,"mobile/"))&&Kn(e,"applewebkit")}}],Zn=[{name:"Windows",search:Jn("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Kn(e,"iphone")||Kn(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Jn("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Jn("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Jn("linux"),versionRegexes:[]},{name:"Solaris",search:Jn("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Jn("freebsd"),versionRegexes:[]}],er={browsers:q(Qn),oses:q(Zn)},tr=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=er.browsers(),m=er.oses(),g=$n(d,e).fold(In.unknown,In.nu),p=Wn(m,e).fold(jn.unknown,jn.nu);return{browser:g,os:p,deviceType:(n=g,r=e,o=(t=p).isiOS()&&!0===/ipad/i.test(r),i=t.isiOS()&&!o,a=t.isAndroid()&&3===t.version.major,u=t.isAndroid()&&4===t.version.major,s=o||a||u&&!0===/mobile/i.test(r),c=t.isiOS()||t.isAndroid(),l=c&&!s,f=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(r),{isiPad:q(o),isiPhone:q(i),isTablet:q(s),isPhone:q(l),isTouch:q(c),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:q(f)})}},nr={detect:(kn=function(){var e=H.navigator.userAgent;return tr(e)},An=!1,function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return An||(An=!0,Tn=kn.apply(null,e)),Tn})},rr=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:q(e)}},or={fromHtml:function(e,t){var n=(t||H.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw H.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return rr(n.childNodes[0])},fromTag:function(e,t){var n=(t||H.document).createElement(e);return rr(n)},fromText:function(e,t){var n=(t||H.document).createTextNode(e);return rr(n)},fromDom:rr,fromPoint:function(e,t,n){var r=e.dom();return A.from(r.elementFromPoint(t,n)).map(rr)}},ir=(H.Node.ATTRIBUTE_NODE,H.Node.CDATA_SECTION_NODE,H.Node.COMMENT_NODE,H.Node.DOCUMENT_NODE),ar=(H.Node.DOCUMENT_TYPE_NODE,H.Node.DOCUMENT_FRAGMENT_NODE,H.Node.ELEMENT_NODE),ur=H.Node.TEXT_NODE,sr=(H.Node.PROCESSING_INSTRUCTION_NODE,H.Node.ENTITY_REFERENCE_NODE,H.Node.ENTITY_NODE,H.Node.NOTATION_NODE,function(e){return e.dom().nodeName.toLowerCase()}),cr=function(t){return function(e){return e.dom().nodeType===t}},lr=cr(ar),fr=cr(ur),dr=Object.keys,mr=Object.hasOwnProperty,gr=function(e,t){for(var n=dr(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i,e)}},pr=function(r,o){var i={};return gr(r,function(e,t){var n=o(e,t,r);i[n.k]=n.v}),i},hr=function(e){return e.style!==undefined},vr=function(e,t,n){if(!(R(n)||O(n)||L(n)))throw H.console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")},br=function(e,t,n){vr(e.dom(),t,n)},yr=function(e,t){var n=e.dom();gr(t,function(e,t){vr(n,t,e)})},Cr=function(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n},xr=function(e,t){e.dom().removeAttribute(t)},wr=function(e,t){var n=e.dom();gr(t,function(e,t){!function(e,t,n){if(!R(n))throw H.console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);hr(e)&&e.style.setProperty(t,n)}(n,t,e)})},Nr=function(e,t){var n,r,o=e.dom(),i=H.window.getComputedStyle(o).getPropertyValue(t),a=""!==i||(r=fr(n=e)?n.dom().parentNode:n.dom())!==undefined&&null!==r&&r.ownerDocument.body.contains(r)?i:Er(o,t);return null===a?undefined:a},Er=function(e,t){return hr(e)?e.style.getPropertyValue(t):""},Sr=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(t.length!==n.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+n.length+" arguments");var r={};return F(t,function(e,t){r[e]=q(n[t])}),r}},kr=function(e,t){for(var n=[],r=function(e){return n.push(e),t(e)},o=t(e);(o=o.bind(r)).isSome(););return n},Tr=function(){return ae.getOrDie("Node")},Ar=function(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)},Rr=function(e,t){return Ar(e,t,Tr().DOCUMENT_POSITION_CONTAINED_BY)},_r=ar,Dr=ir,Br=function(e,t){var n=e.dom();if(n.nodeType!==_r)return!1;if(n.matches!==undefined)return n.matches(t);if(n.msMatchesSelector!==undefined)return n.msMatchesSelector(t);if(n.webkitMatchesSelector!==undefined)return n.webkitMatchesSelector(t);if(n.mozMatchesSelector!==undefined)return n.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},Or=function(e){return e.nodeType!==_r&&e.nodeType!==Dr||0===e.childElementCount},Pr=function(e,t){return e.dom()===t.dom()},Lr=nr.detect().browser.isIE()?function(e,t){return Rr(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},Ir=function(e){return or.fromDom(e.dom().ownerDocument)},Mr=function(e){var t=e.dom();return A.from(t.parentNode).map(or.fromDom)},Fr=function(e){var t=e.dom();return A.from(t.previousSibling).map(or.fromDom)},zr=function(e){var t=e.dom();return A.from(t.nextSibling).map(or.fromDom)},Ur=function(e){return t=kr(e,Fr),(n=Z.call(t,0)).reverse(),n;var t,n},Vr=function(e){return kr(e,zr)},Hr=function(e){var t=e.dom();return W(t.childNodes,or.fromDom)},jr=function(e,t){var n=e.dom().childNodes;return A.from(n[t]).map(or.fromDom)},qr=function(e){return jr(e,0)},$r=function(e){return jr(e,e.dom().childNodes.length-1)},Wr=(Sr("element","offset"),nr.detect().browser),Kr=function(e){return V(e,lr)},Xr={getPos:function(e,t,n){var r,o,i,a=0,u=0,s=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===Nr(or.fromDom(e),"position"))return{x:a=(o=t.getBoundingClientRect()).left+(s.documentElement.scrollLeft||e.scrollLeft)-s.documentElement.clientLeft,y:u=o.top+(s.documentElement.scrollTop||e.scrollTop)-s.documentElement.clientTop};for(r=t;r&&r!==n&&r.nodeType;)a+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!==n&&r.nodeType;)a-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;u+=(i=or.fromDom(t),Wr.isFirefox()&&"table"===sr(i)?Kr(Hr(i)).filter(function(e){return"caption"===sr(e)}).bind(function(o){return Kr(Vr(o)).map(function(e){var t=e.dom().offsetTop,n=o.dom().offsetTop,r=o.dom().offsetHeight;return t<=n?-r:0})}).getOr(0):0)}return{x:a,y:u}}},Yr=function(e){var n=A.none(),t=[],r=function(e){o()?a(e):t.push(e)},o=function(){return n.isSome()},i=function(e){F(e,a)},a=function(t){n.each(function(e){H.setTimeout(function(){t(e)},0)})};return e(function(e){n=A.some(e),i(t),t=[]}),{get:r,map:function(n){return Yr(function(t){r(function(e){t(n(e))})})},isReady:o}},Gr={nu:Yr,pure:function(t){return Yr(function(e){e(t)})}},Jr=function(t){var e=function(e){var r;t((r=e,function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=this;H.setTimeout(function(){r.apply(n,e)},0)}))},n=function(){return Gr.nu(e)};return{map:function(r){return Jr(function(n){e(function(e){var t=r(e);n(t)})})},bind:function(n){return Jr(function(t){e(function(e){n(e).get(t)})})},anonBind:function(n){return Jr(function(t){e(function(e){n.get(t)})})},toLazy:n,toCached:function(){var t=null;return Jr(function(e){null===t&&(t=n()),t.get(e)})},get:e}},Qr={nu:Jr,pure:function(t){return Jr(function(e){e(t)})}},Zr=function(a,e){return e(function(r){var o=[],i=0;0===a.length?r([]):F(a,function(e,t){var n;e.get((n=t,function(e){o[n]=e,++i>=a.length&&r(o)}))})})},eo=function(e){return Zr(e,Qr.nu)},to=function(n){return{is:function(e){return n===e},isValue:x,isError:C,getOr:q(n),getOrThunk:q(n),getOrDie:q(n),or:function(e){return to(n)},orThunk:function(e){return to(n)},fold:function(e,t){return t(n)},map:function(e){return to(e(n))},mapError:function(e){return to(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return A.some(n)}}},no=function(n){return{is:C,isValue:C,isError:x,getOr:$,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return no(n)},mapError:function(e){return no(e(n))},each:o,bind:function(e){return no(n)},exists:C,forall:x,toOption:A.none}},ro={value:to,error:no};function oo(e,u){var t=e,n=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==u){if(o=e[n])return o;for(i=e.parentNode;i&&i!==u;i=i.parentNode)if(o=i[n])return o}}};this.current=function(){return t},this.next=function(e){return t=n(t,"firstChild","nextSibling",e)},this.prev=function(e){return t=n(t,"lastChild","previousSibling",e)},this.prev2=function(e){return t=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],u&&o===u)return;if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==u)return i}}(t,"lastChild","previousSibling",e)}}var io,ao,uo,so=function(t){var n;return function(e){return(n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,q(!0))).hasOwnProperty(sr(e))}},co=so(["h1","h2","h3","h4","h5","h6"]),lo=so(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),fo=function(e){return lr(e)&&!lo(e)},mo=function(e){return lr(e)&&"br"===sr(e)},go=so(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),po=so(["ul","ol","dl"]),ho=so(["li","dd","dt"]),vo=so(["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param","embed","source","wbr","track"]),bo=so(["thead","tbody","tfoot"]),yo=so(["td","th"]),Co=so(["pre","script","textarea","style"]),xo=function(t){return function(e){return!!e&&e.nodeType===t}},wo=xo(1),No=function(e){var r=e.toLowerCase().split(" ");return function(e){var t,n;if(e&&e.nodeType)for(n=e.nodeName.toLowerCase(),t=0;t<r.length;t++)if(n===r[t])return!0;return!1}},Eo=function(t){return function(e){if(wo(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}},So=xo(3),ko=xo(8),To=xo(9),Ao=xo(11),Ro=No("br"),_o=Eo("true"),Do=Eo("false"),Bo={isText:So,isElement:wo,isComment:ko,isDocument:To,isDocumentFragment:Ao,isBr:Ro,isContentEditableTrue:_o,isContentEditableFalse:Do,matchNodeNames:No,hasPropValue:function(t,n){return function(e){return wo(e)&&e[t]===n}},hasAttribute:function(t,e){return function(e){return wo(e)&&e.hasAttribute(t)}},hasAttributeValue:function(t,n){return function(e){return wo(e)&&e.getAttribute(t)===n}},matchStyleValues:function(r,e){var o=e.toLowerCase().split(" ");return function(e){var t;if(wo(e))for(t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}},isBogus:function(e){return wo(e)&&e.hasAttribute("data-mce-bogus")},isBogusAll:function(e){return wo(e)&&"all"===e.getAttribute("data-mce-bogus")},isTable:function(e){return wo(e)&&"TABLE"===e.tagName}},Oo=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},Po=function(e,t){var n,r=t.childNodes;if(!Bo.isElement(t)||!Oo(t)){for(n=r.length-1;0<=n;n--)Po(e,r[n]);if(!1===Bo.isDocument(t)){if(Bo.isText(t)&&0<t.nodeValue.length){var o=Gt.trim(t.nodeValue).length;if(e.isBlock(t.parentNode)||0<o)return;if(0===o&&(a=(i=t).previousSibling&&"SPAN"===i.previousSibling.nodeName,u=i.nextSibling&&"SPAN"===i.nextSibling.nodeName,a&&u))return}else if(Bo.isElement(t)&&(1===(r=t.childNodes).length&&Oo(r[0])&&t.parentNode.insertBefore(r[0],t),r.length||vo(or.fromDom(t))))return;e.remove(t)}var i,a,u;return t}},Lo={trimNode:Po},Io=Gt.makeMap,Mo=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Fo=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,zo=/[<>&\"\']/g,Uo=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,Vo={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};ao={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},uo={"<":"<",">":">","&":"&",""":'"',"'":"'"};var Ho=function(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),ao[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}};io=Ho("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var jo=function(e,t){return e.replace(t?Mo:Fo,function(e){return ao[e]||e})},qo=function(e,t){return e.replace(t?Mo:Fo,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":ao[e]||"&#"+e.charCodeAt(0)+";"})},$o=function(e,t,n){return n=n||io,e.replace(t?Mo:Fo,function(e){return ao[e]||n[e]||e})},Wo={encodeRaw:jo,encodeAllRaw:function(e){return(""+e).replace(zo,function(e){return ao[e]||e})},encodeNumeric:qo,encodeNamed:$o,getEncodeFunc:function(e,t){var n=Ho(t)||io,r=Io(e.replace(/\+/g,","));return r.named&&r.numeric?function(e,t){return e.replace(t?Mo:Fo,function(e){return ao[e]!==undefined?ao[e]:n[e]!==undefined?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return $o(e,t,n)}:$o:r.numeric?qo:jo},decode:function(e){return e.replace(Uo,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):Vo[t]||String.fromCharCode(t):uo[e]||io[e]||(n=e,(r=or.fromTag("div").dom()).innerHTML=n,r.textContent||r.innerText||n);var n,r})}},Ko={},Xo={},Yo=Gt.makeMap,Go=Gt.each,Jo=Gt.extend,Qo=Gt.explode,Zo=Gt.inArray,ei=function(e,t){return(e=Gt.trim(e))?e.split(t||" "):[]},ti=function(e){var u,t,n,r,o,i,s={},a=function(e,t,n){var r,o,i,a=function(e,t){var n,r,o={};for(n=0,r=e.length;n<r;n++)o[e[n]]=t||{};return o};for(t=t||"","string"==typeof(n=n||[])&&(n=ei(n)),r=(e=ei(e)).length;r--;)i={attributes:a(o=ei([u,t].join(" "))),attributesOrder:o,children:a(n,Xo)},s[e[r]]=i},c=function(e,t){var n,r,o,i;for(n=(e=ei(e)).length,t=ei(t);n--;)for(r=s[e[n]],o=0,i=t.length;o<i;o++)r.attributes[t[o]]={},r.attributesOrder.push(t[o])};return Ko[e]?Ko[e]:(u="id accesskey class dir lang style tabindex title role",t="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",n="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!==e&&(u+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",t+=" article aside details dialog figure main header footer hgroup section nav",n+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==e&&(u+=" xml:lang",n=[n,i="acronym applet basefont big font strike tt"].join(" "),Go(ei(i),function(e){a(e,"",n)}),t=[t,o="center dir isindex noframes"].join(" "),r=[t,n].join(" "),Go(ei(o),function(e){a(e,"",r)})),r=r||[t,n].join(" "),a("html","manifest","head body"),a("head","","base command link meta noscript script style title"),a("title hr noscript br"),a("base","href target"),a("link","href rel media hreflang type sizes hreflang"),a("meta","name http-equiv content charset"),a("style","media type scoped"),a("script","src async defer type charset"),a("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",r),a("address dt dd div caption","",r),a("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",n),a("blockquote","cite",r),a("ol","reversed start type","li"),a("ul","","li"),a("li","value",r),a("dl","","dt dd"),a("a","href target rel media hreflang type",n),a("q","cite",n),a("ins del","cite datetime",r),a("img","src sizes srcset alt usemap ismap width height"),a("iframe","src name width height",r),a("embed","src type width height"),a("object","data type typemustmatch name usemap form width height",[r,"param"].join(" ")),a("param","name value"),a("map","name",[r,"area"].join(" ")),a("area","alt coords shape href target rel media hreflang type"),a("table","border","caption colgroup thead tfoot tbody tr"+("html4"===e?" col":"")),a("colgroup","span","col"),a("col","span"),a("tbody thead tfoot","","tr"),a("tr","","td th"),a("td","colspan rowspan headers",r),a("th","colspan rowspan headers scope abbr",r),a("form","accept-charset action autocomplete enctype method name novalidate target",r),a("fieldset","disabled form name",[r,"legend"].join(" ")),a("label","form for",n),a("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),a("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===e?r:n),a("select","disabled form multiple name required size","option optgroup"),a("optgroup","disabled label","option"),a("option","disabled label selected value"),a("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),a("menu","type label",[r,"li"].join(" ")),a("noscript","",r),"html4"!==e&&(a("wbr"),a("ruby","",[n,"rt rp"].join(" ")),a("figcaption","",r),a("mark rt rp summary bdi","",n),a("canvas","width height",r),a("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[r,"track source"].join(" ")),a("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[r,"track source"].join(" ")),a("picture","","img source"),a("source","src srcset type media sizes"),a("track","kind src srclang label default"),a("datalist","",[n,"option"].join(" ")),a("article section nav aside main header footer","",r),a("hgroup","","h1 h2 h3 h4 h5 h6"),a("figure","",[r,"figcaption"].join(" ")),a("time","datetime",n),a("dialog","open",r),a("command","type label icon disabled checked radiogroup command"),a("output","for form name",n),a("progress","value max",n),a("meter","value min max low high optimum",n),a("details","open",[r,"summary"].join(" ")),a("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==e&&(c("script","language xml:space"),c("style","xml:space"),c("object","declare classid code codebase codetype archive standby align border hspace vspace"),c("embed","align name hspace vspace"),c("param","valuetype type"),c("a","charset name rev shape coords"),c("br","clear"),c("applet","codebase archive code object alt name width height align hspace vspace"),c("img","name longdesc align border hspace vspace"),c("iframe","longdesc frameborder marginwidth marginheight scrolling align"),c("font basefont","size color face"),c("input","usemap align"),c("select","onchange"),c("textarea"),c("h1 h2 h3 h4 h5 h6 div p legend caption","align"),c("ul","type compact"),c("li","type"),c("ol dl menu dir","compact"),c("pre","width xml:space"),c("hr","align noshade size width"),c("isindex","prompt"),c("table","summary width frame rules cellspacing cellpadding align bgcolor"),c("col","width align char charoff valign"),c("colgroup","width align char charoff valign"),c("thead","align char charoff valign"),c("tr","align char charoff valign bgcolor"),c("th","axis align char charoff valign nowrap bgcolor width height"),c("form","accept"),c("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),c("tfoot","align char charoff valign"),c("tbody","align char charoff valign"),c("area","nohref"),c("body","background bgcolor text link vlink alink")),"html4"!==e&&(c("input button select textarea","autofocus"),c("input textarea","placeholder"),c("a","download"),c("link script img","crossorigin"),c("iframe","sandbox seamless allowfullscreen")),Go(ei("a form meter progress dfn"),function(e){s[e]&&delete s[e].children[e]}),delete s.caption.children.table,delete s.script,Ko[e]=s)},ni=function(e,n){var r;return e&&(r={},"string"==typeof e&&(e={"*":e}),Go(e,function(e,t){r[t]=r[t.toUpperCase()]="map"===n?Yo(e,/[, ]/):Qo(e,/[, ]/)})),r};function ri(i){var e,t,n,r,o,a,u,s,c,l,f,d,m,N={},g={},E=[],p={},h={},v=function(e,t,n){var r=i[e];return r?r=Yo(r,/[, ]/,Yo(r.toUpperCase(),/[, ]/)):(r=Ko[e])||(r=Yo(t," ",Yo(t.toUpperCase()," ")),r=Jo(r,n),Ko[e]=r),r};n=ti((i=i||{}).schema),!1===i.verify_html&&(i.valid_elements="*[*]"),e=ni(i.valid_styles),t=ni(i.invalid_styles,"map"),s=ni(i.valid_classes,"map"),r=v("whitespace_elements","pre script noscript style textarea video audio iframe object code"),o=v("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),a=v("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),u=v("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),l=v("non_empty_elements","td th iframe video audio object script pre code",a),f=v("move_caret_before_on_enter_elements","table",l),d=v("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),c=v("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",d),m=v("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),Go((i.special||"script noscript noframes noembed title style textarea xmp").split(" "),function(e){h[e]=new RegExp("</"+e+"[^>]*>","gi")});var S=function(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")},b=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,x=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,w=/[*?+]/;if(e)for(e=ei(e,","),N["@"]&&(h=N["@"].attributes,v=N["@"].attributesOrder),t=0,n=e.length;t<n;t++)if(i=C.exec(e[t])){if(g=i[1],c=i[2],p=i[3],s=i[5],a={attributes:d={},attributesOrder:m=[]},"#"===g&&(a.paddEmpty=!0),"-"===g&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),h){for(b in h)d[b]=h[b];m.push.apply(m,v)}if(s)for(r=0,o=(s=ei(s,"|")).length;r<o;r++)if(i=x.exec(s[r])){if(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),g=i[3],y=i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"===f){delete d[l],m.splice(Zo(m,l),1);continue}g&&("="===g&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:y}),u.defaultValue=y),":"===g&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:y}),u.forcedValue=y),"<"===g&&(u.validValues=Yo(y,"?"))),w.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=S(l),a.attributePatterns.push(u)):(d[l]||m.push(l),d[l]=u)}h||"@"!==c||(h=d,v=m),p&&(a.outputName=c,N[p]=a),w.test(c)?(a.pattern=S(c),E.push(a)):N[c]=a}},y=function(e){N={},E=[],b(e),Go(n,function(e,t){g[t]=e.children})},C=function(e){var a=/^(~)?(.+)$/;e&&(Ko.text_block_elements=Ko.block_elements=null,Go(ei(e,","),function(e){var t=a.exec(e),n="~"===t[1],r=n?"span":"div",o=t[2];if(g[o]=g[r],p[o]=r,n||(c[o.toUpperCase()]={},c[o]={}),!N[o]){var i=N[r];delete(i=Jo({},i)).removeEmptyAttrs,delete i.removeEmpty,N[o]=i}Go(g,function(e,t){e[r]&&(g[t]=e=Jo({},g[t]),e[o]=e[r])})}))},x=function(e){var o=/^([+\-]?)(\w+)\[([^\]]+)\]$/;Ko[i.schema]=null,e&&Go(ei(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?g[r[2]]:g[r[2]]={"#comment":{}},t=g[r[2]],Go(ei(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})},w=function(e){var t,n=N[e];if(n)return n;for(t=E.length;t--;)if((n=E[t]).pattern.test(e))return n};return i.valid_elements?y(i.valid_elements):(Go(n,function(e,t){N[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},g[t]=e.children}),"html5"!==i.schema&&Go(ei("strong/b em/i"),function(e){e=ei(e,"/"),N[e[1]].outputName=e[0]}),Go(ei("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){N[e]&&(N[e].removeEmpty=!0)}),Go(ei("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){N[e].paddEmpty=!0}),Go(ei("span"),function(e){N[e].removeEmptyAttrs=!0})),C(i.custom_elements),x(i.valid_children),b(i.extended_valid_elements),x("+ol[ul|ol],+ul[ul|ol]"),Go({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){N[t]&&(N[t].parentsRequired=ei(e))}),i.invalid_elements&&Go(Qo(i.invalid_elements),function(e){N[e]&&delete N[e]}),w("span")||b("span[!data-mce-type|*]"),{children:g,elements:N,getValidStyles:function(){return e},getValidClasses:function(){return s},getBlockElements:function(){return c},getInvalidStyles:function(){return t},getShortEndedElements:function(){return a},getTextBlockElements:function(){return d},getTextInlineElements:function(){return m},getBoolAttrs:function(){return u},getElementRule:w,getSelfClosingElements:function(){return o},getNonEmptyElements:function(){return l},getMoveCaretBeforeOnEnterElements:function(){return f},getWhiteSpaceElements:function(){return r},getSpecialElements:function(){return h},isValidChild:function(e,t){var n=g[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=w(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:function(){return p},addValidElements:b,setValidElements:y,addCustomElements:C,addValidChildren:x}}var oi=function(e,t,n,r){var o=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+o(t)+o(n)+o(r)};function ii(y,e){var C,t,c,l,x=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,w=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,N=/\s*([^:]+):\s*([^;]+);?/g,E=/\s+$/,S={},k="\ufeff";for(y=y||{},e&&(c=e.getValidStyles(),l=e.getInvalidStyles()),t=("\\\" \\' \\; \\: ; : "+k).split(" "),C=0;C<t.length;C++)S[t[C]]=k+C,S[k+C]=t[C];return{toHex:function(e){return e.replace(x,oi)},parse:function(e){var t,n,r,o,i,a,u,s,c={},l=y.url_converter,f=y.url_converter_scope||this,d=function(e,t,n){var r,o,i,a;if((r=c[e+"-top"+t])&&(o=c[e+"-right"+t])&&(i=c[e+"-bottom"+t])&&(a=c[e+"-left"+t])){var u=[r,o,i,a];for(C=u.length-1;C--&&u[C]===u[C+1];);-1<C&&n||(c[e+t]=-1===C?u[0]:u.join(" "),delete c[e+"-top"+t],delete c[e+"-right"+t],delete c[e+"-bottom"+t],delete c[e+"-left"+t])}},m=function(e){var t,n=c[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return!1;return c[e]=n[0],!0}},g=function(e){return o=!0,S[e]},p=function(e,t){return o&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return S[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e},h=function(e){return String.fromCharCode(parseInt(e.slice(1),16))},v=function(e){return e.replace(/\\[0-9a-f]+/gi,h)},b=function(e,t,n,r,o,i){if(o=o||i)return"'"+(o=p(o)).replace(/\'/g,"\\'")+"'";if(t=p(t||n||r),!y.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!y.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return l&&(t=l.call(f,t,"style")),"url('"+t.replace(/\'/g,"\\'")+"')"};if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,g).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,g)});t=N.exec(e);)if(N.lastIndex=t.index+t[0].length,n=t[1].replace(E,"").toLowerCase(),r=t[2].replace(E,""),n&&r){if(n=v(n),r=v(r),-1!==n.indexOf(k)||-1!==n.indexOf('"'))continue;if(!y.allow_script_urls&&("behavior"===n||/expression\s*\(|\/\*|\*\//.test(r)))continue;"font-weight"===n&&"700"===r?r="bold":"color"!==n&&"background-color"!==n||(r=r.toLowerCase()),r=(r=r.replace(x,oi)).replace(w,b),c[n]=o?p(r,!0):r}d("border","",!0),d("border","-width"),d("border","-color"),d("border","-style"),d("padding",""),d("margin",""),i="border",u="border-style",s="border-color",m(a="border-width")&&m(u)&&m(s)&&(c[i]=c[a]+" "+c[u]+" "+c[s],delete c[a],delete c[u],delete c[s]),"medium none"===c.border&&delete c.border,"none"===c["border-image"]&&delete c["border-image"]}return c},serialize:function(i,e){var t,n,r,o,a,u="",s=function(e){var t,n,r,o;if(t=c[e])for(n=0,r=t.length;n<r;n++)e=t[n],(o=i[e])&&(u+=(0<u.length?" ":"")+e+": "+o+";")};if(e&&c)s("*"),s(e);else for(t in i)!(n=i[t])||l&&(r=t,o=e,a=void 0,(a=l["*"])&&a[r]||(a=l[o])&&a[r])||(u+=(0<u.length?" ":"")+t+": "+n+";");return u}}}var ai,ui=Gt.each,si=Gt.grep,ci=me.ie,li=/^([a-z0-9],?)+$/i,fi=/^[ \t\r\n]*$/,di=function(n,r,o){var e={},i=r.keep_values,t={set:function(e,t,n){r.url_converter&&(t=r.url_converter.call(r.url_converter_scope||o(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}};return e={style:{set:function(e,t){null===t||"object"!=typeof t?(i&&e.attr("data-mce-style",t),e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return t=n.serialize(n.parse(t),e[0].nodeName)}}},i&&(e.href=e.src=t),e},mi=function(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName);r||(r=null),t.attr("data-mce-style",r)},gi=function(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o};function pi(a,u){var s,c=this;void 0===u&&(u={});var r={},i=H.window,o={},t=0,e=function(m,g){void 0===g&&(g={});var p,h=0,v={};p=g.maxLoadTime||5e3;var b=function(e){m.getElementsByTagName("head")[0].appendChild(e)},n=function(e,t,n){var o,r,i,a,u=function(){for(var e=a.passed,t=e.length;t--;)e[t]();a.status=2,a.passed=[],a.failed=[]},s=function(){for(var e=a.failed,t=e.length;t--;)e[t]();a.status=3,a.passed=[],a.failed=[]},c=function(e,t){e()||((new Date).getTime()-i<p?be.setTimeout(t):s())},l=function(){c(function(){for(var e,t,n=m.styleSheets,r=n.length;r--;)if((t=(e=n[r]).ownerNode?e.ownerNode:e.owningElement)&&t.id===o.id)return u(),!0},l)},f=function(){c(function(){try{var e=r.sheet.cssRules;return u(),!!e}catch(t){}},f)};if(e=Gt._addCacheSuffix(e),v[e]?a=v[e]:(a={passed:[],failed:[]},v[e]=a),t&&a.passed.push(t),n&&a.failed.push(n),1!==a.status)if(2!==a.status)if(3!==a.status){if(a.status=1,(o=m.createElement("link")).rel="stylesheet",o.type="text/css",o.id="u"+h++,o.async=!1,o.defer=!1,i=(new Date).getTime(),g.contentCssCors&&(o.crossOrigin="anonymous"),"onload"in o&&!((d=H.navigator.userAgent.match(/WebKit\/(\d*)/))&&parseInt(d[1],10)<536))o.onload=l,o.onerror=s;else{if(0<H.navigator.userAgent.indexOf("Firefox"))return(r=m.createElement("style")).textContent='@import "'+e+'"',f(),void b(r);l()}var d;b(o),o.href=e}else s();else u()},t=function(t){return Qr.nu(function(e){n(t,j(e,q(ro.value(t))),j(e,q(ro.error(t))))})},o=function(e){return e.fold($,$)};return{load:n,loadAll:function(e,n,r){eo(W(e,t)).get(function(e){var t=K(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(o)):n(t.pass.map(o))})}}}(a,{contentCssCors:u.contentCssCors}),l=[],f=u.schema?u.schema:ri({}),d=ii({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),m=u.ownEvents?new Te(u.proxy):Te.Event,n=f.getBlockElements(),g=hn.overrideDefaults(function(){return{context:a,element:V.getRoot()}}),p=function(e){if(e&&a&&"string"==typeof e){var t=a.getElementById(e);return t&&t.id!==e?a.getElementsByName(e)[1]:t}return e},h=function(e){return"string"==typeof e&&(e=p(e)),g(e)},v=function(e,t,n){var r,o,i=h(e);return i.length&&(o=(r=s[t])&&r.get?r.get(i,t):i.attr(t)),void 0===o&&(o=n||""),o},b=function(e){var t=p(e);return t?t.attributes:[]},y=function(e,t,n){var r,o;""===n&&(n=null);var i=h(e);r=i.attr(t),i.length&&((o=s[t])&&o.set?o.set(i,n,t):i.attr(t,n),r!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:i,attrName:t,attrValue:n}))},C=function(){return u.root_element||a.body},x=function(e,t){return Xr.getPos(a.body,p(e),t)},w=function(e,t,n){var r=h(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=me.ie&&me.ie<12?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:undefined)},N=function(e){var t,n;return e=p(e),t=w(e,"width"),n=w(e,"height"),-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px")&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}},E=function(e,t){var n;if(!e)return!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(li.test(t)){var r=t.toLowerCase().split(/,/),o=e.nodeName.toLowerCase();for(n=r.length-1;0<=n;n--)if(r[n]===o)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<Tt(t,i[0].ownerDocument||i[0],null,i).length},S=function(e,t,n,r){var o,i=[],a=p(e);for(r=r===undefined,n=n||("BODY"!==C().nodeName?C().parentNode:null),Gt.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return E(e,o)});a&&a!==n&&a.nodeType&&9!==a.nodeType;){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null},k=function(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){return E(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null},T=function(e,n,r){var o,t="string"==typeof e?p(e):e;if(!t)return!1;if(Gt.isArray(t)&&(t.length||0===t.length))return o=[],ui(t,function(e,t){e&&("string"==typeof e&&(e=p(e)),o.push(n.call(r,e,t)))}),o;var i=r||c;return n.call(i,t)},A=function(e,t){h(e).each(function(e,n){ui(t,function(e,t){y(n,t,e)})})},R=function(e,r){var t=h(e);ci?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+r,t.removeChild(t.firstChild)}catch(n){hn("<div></div>").html("<br>"+r).contents().slice(1).appendTo(t)}return r}}):t.html(r)},_=function(e,n,r,o,i){return T(e,function(e){var t="string"==typeof n?a.createElement(n):n;return A(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&R(t,o)),i?t:e.appendChild(t)})},D=function(e,t,n){return _(a.createElement(e),e,t,n,!0)},B=Wo.decode,O=Wo.encodeAllRaw,P=function(e,t){var n=h(e);return t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():n.remove(),1<n.length?n.toArray():n[0]},L=function(e,t,n){h(e).toggleClass(t,n).each(function(){""===this.className&&hn(this).attr("class",null)})},I=function(t,e,n){return T(e,function(e){return Gt.is(e,"array")&&(t=t.cloneNode(!0)),n&&ui(si(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})},M=function(){return a.createRange()},F=function(e,t,n,r){if(Gt.isArray(e)){for(var o=e.length;o--;)e[o]=F(e[o],t,n,r);return e}return!u.collect||e!==a&&e!==i||l.push([e,t,n,r]),m.bind(e,t,n,r||V)},z=function(e,t,n){var r;if(Gt.isArray(e)){for(r=e.length;r--;)e[r]=z(e[r],t,n);return e}if(l&&(e===a||e===i))for(r=l.length;r--;){var o=l[r];e!==o[0]||t&&t!==o[1]||n&&n!==o[2]||m.unbind(o[0],o[1],o[2])}return m.unbind(e,t,n)},U=function(e){if(e&&Bo.isElement(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null},V={doc:a,settings:u,win:i,files:o,stdMode:!0,boxModel:!0,styleSheetLoader:e,boundEvents:l,styles:d,schema:f,events:m,isBlock:function(e){if("string"==typeof e)return!!n[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!n[e.nodeName])}return!1},$:g,$$:h,root:null,clone:function(t,e){if(!ci||1!==t.nodeType||e)return t.cloneNode(e);if(!e){var n=a.createElement(t.nodeName);return ui(b(t),function(e){y(n,e.nodeName,v(t,e.nodeName))}),n}return null},getRoot:C,getViewPort:function(e){var t=e||i,n=t.document.documentElement;return{x:t.pageXOffset||n.scrollLeft,y:t.pageYOffset||n.scrollTop,w:t.innerWidth||n.clientWidth,h:t.innerHeight||n.clientHeight}},getRect:function(e){var t,n;return e=p(e),t=x(e),n=N(e),{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:N,getParent:function(e,t,n){var r=S(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:S,get:p,getNext:function(e,t){return k(e,t,"nextSibling")},getPrev:function(e,t){return k(e,t,"previousSibling")},select:function(e,t){return Tt(e,p(t)||u.root_element||a,[])},is:E,add:_,create:D,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)t.hasOwnProperty(r)&&null!==t[r]&&"undefined"!=typeof t[r]&&(o+=" "+r+'="'+O(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r},remove:P,setStyle:function(e,t,n){var r=h(e).css(t,n);u.update_styles&&mi(d,r)},getStyle:w,setStyles:function(e,t){var n=h(e).css(t);u.update_styles&&mi(d,n)},removeAllAttribs:function(e){return T(e,function(e){var t,n=e.attributes;for(t=n.length-1;0<=t;t--)e.removeAttributeNode(n.item(t))})},setAttrib:y,setAttribs:A,getAttrib:v,getPos:x,parseStyle:function(e){return d.parse(e)},serializeStyle:function(e,t){return d.serialize(e,t)},addStyle:function(e){var t,n;if(V!==pi.DOM&&a===H.document){if(r[e])return;r[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){var n;V===pi.DOM||a!==H.document?(e||(e=""),n=a.getElementsByTagName("head")[0],ui(e.split(","),function(e){var t;e=Gt._addCacheSuffix(e),o[e]||(o[e]=!0,t=D("link",{rel:"stylesheet",href:e}),n.appendChild(t))})):pi.DOM.loadCSS(e)},addClass:function(e,t){h(e).addClass(t)},removeClass:function(e,t){L(e,t,!1)},hasClass:function(e,t){return h(e).hasClass(t)},toggleClass:L,show:function(e){h(e).show()},hide:function(e){h(e).hide()},isHidden:function(e){return"none"===h(e).css("display")},uniqueId:function(e){return(e||"mce_")+t++},setHTML:R,getOuterHTML:function(e){var t="string"==typeof e?p(e):e;return Bo.isElement(t)?t.outerHTML:hn("<div></div>").append(hn(t).clone()).html()},setOuterHTML:function(e,t){h(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}P(hn(this).html(t),!0)})},decode:B,encode:O,insertAfter:function(e,t){var r=p(t);return T(e,function(e){var t,n;return t=r.parentNode,(n=r.nextSibling)?t.insertBefore(e,n):t.appendChild(e),e})},replace:I,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=D(e),ui(b(t),function(e){y(n,e.nodeName,v(t,e.nodeName))}),I(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return d.toHex(Gt.trim(e))},run:T,getAttribs:b,isEmpty:function(e,t){var n,r,o,i,a,u,s=0;if(e=e.firstChild){a=new oo(e,e.parentNode),t=t||(f?f.getNonEmptyElements():null),i=f?f.getWhiteSpaceElements():{};do{if(o=e.nodeType,Bo.isElement(e)){var c=e.getAttribute("data-mce-bogus");if(c){e=a.next("all"===c);continue}if(u=e.nodeName.toLowerCase(),t&&t[u]){if("br"===u){s++,e=a.next();continue}return!1}for(n=(r=b(e)).length;n--;)if("name"===(u=r[n].nodeName)||"data-mce-bookmark"===u)return!1}if(8===o)return!1;if(3===o&&!fi.test(e.nodeValue))return!1;if(3===o&&e.parentNode&&i[e.parentNode.nodeName]&&fi.test(e.nodeValue))return!1;e=a.next()}while(e)}return s<=1},createRng:M,nodeIndex:gi,split:function(e,t,n){var r,o,i,a=M();if(e&&t)return a.setStart(e.parentNode,gi(e)),a.setEnd(t.parentNode,gi(t)),r=a.extractContents(),(a=M()).setStart(t.parentNode,gi(t)+1),a.setEnd(e.parentNode,gi(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(Lo.trimNode(V,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(Lo.trimNode(V,o),e),P(e),n||t},bind:F,unbind:z,fire:function(e,t,n){return m.fire(e,t,n)},getContentEditable:U,getContentEditableParent:function(e){for(var t=C(),n=null;e&&e!==t&&null===(n=U(e));e=e.parentNode);return n},destroy:function(){if(l)for(var e=l.length;e--;){var t=l[e];m.unbind(t[0],t[1],t[2])}Tt.setDocument&&Tt.setDocument()},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}};return s=di(d,u,function(){return V}),V}(ai=pi||(pi={})).DOM=ai(H.document),ai.nodeIndex=gi;var hi=pi,vi=hi.DOM,bi=Gt.each,yi=Gt.grep,Ci=function(e){return"function"==typeof e},xi=function(){var l={},o=[],i={},a=[],f=0;this.isDone=function(e){return 2===l[e]},this.markDone=function(e){l[e]=2},this.add=this.load=function(e,t,n,r){l[e]===undefined&&(o.push(e),l[e]=0),t&&(i[e]||(i[e]=[]),i[e].push({success:t,failure:r,scope:n||this}))},this.remove=function(e){delete l[e],delete i[e]},this.loadQueue=function(e,t,n){this.loadScripts(o,e,t,n)},this.loadScripts=function(n,e,t,r){var u,s=[],c=function(t,e){bi(i[e],function(e){Ci(e[t])&&e[t].call(e.scope)}),i[e]=undefined};a.push({success:e,failure:r,scope:t||this}),(u=function(){var e=yi(n);if(n.length=0,bi(e,function(e){var t,n,r,o,i,a;2!==l[e]?3!==l[e]?1!==l[e]&&(l[e]=1,f++,t=e,n=function(){l[e]=2,f--,c("success",e),u()},r=function(){l[e]=3,f--,s.push(e),c("failure",e),u()},i=(a=vi).uniqueId(),(o=H.document.createElement("script")).id=i,o.type="text/javascript",o.src=Gt._addCacheSuffix(t),o.onload=function(){a.remove(i),o&&(o.onreadystatechange=o.onload=o=null),n()},o.onerror=function(){Ci(r)?r():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+t)},(H.document.getElementsByTagName("head")[0]||H.document.body).appendChild(o)):c("failure",e):c("success",e)}),!f){var t=a.slice(0);a.length=0,bi(t,function(e){0===s.length?Ci(e.success)&&e.success.call(e.scope):Ci(e.failure)&&e.failure.call(e.scope,s)})}})()}};xi.ScriptLoader=new xi;var wi,Ni=Gt.each;function Ei(){var r=this,o=[],a={},u={},i=[],s=function(e){var t;return u[e]&&(t=u[e].dependencies),t||[]},c=function(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}},l=function(e,n,t,r){var o=s(e);Ni(o,function(e){var t=c(n,e);f(t.resource,t,undefined,undefined)}),t&&(r?t.call(r):t.call(xi))},f=function(e,t,n,r,o){if(!a[e]){var i="string"==typeof t?t:t.prefix+t.resource+t.suffix;0!==i.indexOf("/")&&-1===i.indexOf("://")&&(i=Ei.baseURL+"/"+i),a[e]=i.substring(0,i.lastIndexOf("/")),u[e]?l(e,t,n,r):xi.ScriptLoader.add(i,function(){return l(e,t,n,r)},r,o)}};return{items:o,urls:a,lookup:u,_listeners:i,get:function(e){return u[e]?u[e].instance:undefined},dependencies:s,requireLangPack:function(e,t){var n=Ei.language;if(n&&!1!==Ei.languageLoad){if(t)if(-1!==(t=","+t+",").indexOf(","+n.substr(0,2)+","))n=n.substr(0,2);else if(-1===t.indexOf(","+n+","))return;xi.ScriptLoader.add(a[e]+"/langs/"+n+".js")}},add:function(t,e,n){o.push(e),u[t]={instance:e,dependencies:n};var r=K(i,function(e){return e.name===t});return i=r.fail,Ni(r.pass,function(e){e.callback()}),e},remove:function(e){delete a[e],delete u[e]},createUrl:c,addComponents:function(e,t){var n=r.urls[e];Ni(t,function(e){xi.ScriptLoader.add(n+"/"+e)})},load:f,waitFor:function(e,t){u.hasOwnProperty(e)?t():i.push({name:e,callback:t})}}}(wi=Ei||(Ei={})).PluginManager=wi(),wi.ThemeManager=wi();var Si=function(t,n){Mr(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})},ki=function(e,t){zr(e).fold(function(){Mr(e).each(function(e){Ai(e,t)})},function(e){Si(e,t)})},Ti=function(t,n){qr(t).fold(function(){Ai(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})},Ai=function(e,t){e.dom().appendChild(t.dom())},Ri=function(t,e){F(e,function(e){Ai(t,e)})},_i=function(e){e.dom().textContent="",F(Hr(e),function(e){Di(e)})},Di=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},Bi=function(e){var t,n=Hr(e);0<n.length&&(t=e,F(n,function(e){Si(t,e)})),Di(e)},Oi=function(n,r){var o=null;return{cancel:function(){null!==o&&(H.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null===o&&(o=H.setTimeout(function(){n.apply(null,e),o=null},r))}}},Pi=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return Pi(n())}}},Li=function(e,t){var n=Cr(e,t);return n===undefined||""===n?[]:n.split(" ")},Ii=function(e){return e.dom().classList!==undefined},Mi=function(e,t){return o=t,i=Li(n=e,r="class").concat([o]),br(n,r,i.join(" ")),!0;var n,r,o,i},Fi=function(e,t){return o=t,0<(i=z(Li(n=e,r="class"),function(e){return e!==o})).length?br(n,r,i.join(" ")):xr(n,r),!1;var n,r,o,i},zi=function(e,t){Ii(e)?e.dom().classList.add(t):Mi(e,t)},Ui=function(e){0===(Ii(e)?e.dom().classList:Li(e,"class")).length&&xr(e,"class")},Vi=function(e,t){return Ii(e)&&e.dom().classList.contains(t)},Hi=function(e,t){var n=[];return F(Hr(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(Hi(e,t))}),n},ji=function(e,t){return n=t,o=(r=e)===undefined?H.document:r.dom(),Or(o)?[]:W(o.querySelectorAll(n),or.fromDom);var n,r,o};function qi(e,t,n,r,o){return e(n,r)?A.some(n):P(o)&&o(n)?A.none():t(n,r,o)}var $i,Wi=function(e,t,n){for(var r=e.dom(),o=P(n)?n:q(!1);r.parentNode;){r=r.parentNode;var i=or.fromDom(r);if(t(i))return A.some(i);if(o(i))break}return A.none()},Ki=function(e,t,n){return qi(function(e){return t(e)},Wi,e,t,n)},Xi=function(e,t,n){return Wi(e,function(e){return Br(e,t)},n)},Yi=function(e,t){return n=t,o=(r=e)===undefined?H.document:r.dom(),Or(o)?A.none():A.from(o.querySelector(n)).map(or.fromDom);var n,r,o},Gi=function(e,t,n){return qi(Br,Xi,e,t,n)},Ji=q("mce-annotation"),Qi=q("data-mce-annotation"),Zi=q("data-mce-annotation-uid"),ea=function(r,e){var t=r.selection.getRng(),n=or.fromDom(t.startContainer),o=or.fromDom(r.getBody()),i=e.fold(function(){return"."+Ji()},function(e){return"["+Qi()+'="'+e+'"]'}),a=jr(n,t.startOffset).getOr(n),u=Gi(a,i,function(e){return Pr(e,o)}),s=function(e,t){return n=t,(r=e.dom())&&r.hasAttribute&&r.hasAttribute(n)?A.some(Cr(e,t)):A.none();var n,r};return u.bind(function(e){return s(e,""+Zi()).bind(function(n){return s(e,""+Qi()).map(function(e){var t=ta(r,n);return{uid:n,name:e,elements:t}})})})},ta=function(e,t){var n=or.fromDom(e.getBody());return ji(n,"["+Zi()+'="'+t+'"]')},na=function(i,e){var n,r,o,a=Pi({}),c=function(e,t){u(e,function(e){return t(e),e})},u=function(e,t){var n=a.get(),r=t(n.hasOwnProperty(e)?n[e]:{listeners:[],previous:Pi(A.none())});n[e]=r,a.set(n)},t=(n=function(){var e,t,n,r=a.get(),o=(e=dr(r),(n=Z.call(e,0)).sort(t),n);F(o,function(e){u(e,function(u){var s=u.previous.get();return ea(i,A.some(e)).fold(function(){var t;s.isSome()&&(c(t=e,function(e){F(e.listeners,function(e){return e(!1,t)})}),u.previous.set(A.none()))},function(e){var t,n,r,o=e.uid,i=e.name,a=e.elements;s.is(o)||(n=o,r=a,c(t=i,function(e){F(e.listeners,function(e){return e(!0,t,{uid:n,nodes:W(r,function(e){return e.dom()})})})}),u.previous.set(A.some(o)))}),{previous:u.previous,listeners:u.listeners}})})},r=30,o=null,{cancel:function(){null!==o&&(H.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==o&&H.clearTimeout(o),o=H.setTimeout(function(){n.apply(null,e),o=null},r)}});return i.on("remove",function(){t.cancel()}),i.on("nodeChange",function(){t.throttle()}),{addListener:function(e,t){u(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}},ra=function(e,n){e.on("init",function(){e.serializer.addNodeFilter("span",function(e){F(e,function(t){var e;(e=t,A.from(e.attributes.map[Qi()]).bind(n.lookup)).each(function(e){!1===e.persistent&&t.unwrap()})})})})},oa=0,ia=function(e,t){return or.fromDom(e.dom().cloneNode(t))},aa=function(e){return ia(e,!1)},ua=function(e){return ia(e,!0)},sa=function(e,t){var n,r,o=Ir(e).dom(),i=or.fromDom(o.createDocumentFragment()),a=(n=t,(r=(o||H.document).createElement("div")).innerHTML=n,Hr(or.fromDom(r)));Ri(i,a),_i(e),Ai(e,i)},ca="\ufeff",la=function(e){return e===ca},fa=ca,da=function(e){return e.replace(new RegExp(ca,"g"),"")},ma=Bo.isElement,ga=Bo.isText,pa=function(e){return ga(e)&&(e=e.parentNode),ma(e)&&e.hasAttribute("data-mce-caret")},ha=function(e){return ga(e)&&la(e.data)},va=function(e){return pa(e)||ha(e)},ba=function(e){return e.firstChild!==e.lastChild||!Bo.isBr(e.firstChild)},ya=function(e){var t=e.container();return!(!e||!Bo.isText(t))&&(t.data.charAt(e.offset())===fa||e.isAtStart()&&ha(t.previousSibling))},Ca=function(e){var t=e.container();return!(!e||!Bo.isText(t))&&(t.data.charAt(e.offset()-1)===fa||e.isAtEnd()&&ha(t.nextSibling))},xa=function(e,t,n){var r,o,i;return(r=t.ownerDocument.createElement(e)).setAttribute("data-mce-caret",n?"before":"after"),r.setAttribute("data-mce-bogus","all"),r.appendChild(((i=H.document.createElement("br")).setAttribute("data-mce-bogus","1"),i)),o=t.parentNode,n?o.insertBefore(r,t):t.nextSibling?o.insertBefore(r,t.nextSibling):o.appendChild(r),r},wa=function(e){return ga(e)&&e.data[0]===fa},Na=function(e){return ga(e)&&e.data[e.data.length-1]===fa},Ea=function(e){return e&&e.hasAttribute("data-mce-caret")?(t=e.getElementsByTagName("br"),n=t[t.length-1],Bo.isBogus(n)&&n.parentNode.removeChild(n),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null;var t,n},Sa=Bo.isContentEditableTrue,ka=Bo.isContentEditableFalse,Ta=Bo.isBr,Aa=Bo.isText,Ra=Bo.matchNodeNames("script style textarea"),_a=Bo.matchNodeNames("img input textarea hr iframe video audio object"),Da=Bo.matchNodeNames("table"),Ba=va,Oa=function(e){return!Ba(e)&&(Aa(e)?!Ra(e.parentNode):_a(e)||Ta(e)||Da(e)||Pa(e))},Pa=function(e){return!1===(t=e,Bo.isElement(t)&&"true"===t.getAttribute("unselectable"))&&ka(e);var t},La=function(e,t){return Oa(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(Pa(e))return!1;if(Sa(e))return!0}return!0}(e,t)},Ia=Math.round,Ma=function(e){return e?{left:Ia(e.left),top:Ia(e.top),bottom:Ia(e.bottom),right:Ia(e.right),width:Ia(e.width),height:Ia(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}},Fa=function(e,t){return e=Ma(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e},za=function(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2},Ua=function(e,t){return e.bottom-e.height/2<t.top||!(e.top>t.bottom)&&za(t.top-e.bottom,e,t)},Va=function(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&za(t.bottom-e.top,e,t)},Ha=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null},ja=function(e,t){return 1===e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},qa=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),$a=function(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&qa.test(e)},Wa=function(e,t){for(var n=[],r=0;r<e.length;r++){var o=e[r];if(!o.isSome())return A.none();n.push(o.getOrDie())}return A.some(t.apply(null,n))},Ka=[].slice,Xa=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Ka.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}},Ya=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Ka.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}},Ga=Bo.isElement,Ja=Oa,Qa=Bo.matchStyleValues("display","block table"),Za=Bo.matchStyleValues("float","left right"),eu=Xa(Ga,Ja,y(Za)),tu=y(Bo.matchStyleValues("white-space","pre pre-line pre-wrap")),nu=Bo.isText,ru=Bo.isBr,ou=hi.nodeIndex,iu=ja,au=function(e){return"createRange"in e?e.createRange():hi.DOM.createRng()},uu=function(e){return e&&/[\r\n\t ]/.test(e)},su=function(e){return!!e.setStart&&!!e.setEnd},cu=function(e){var t,n=e.startContainer,r=e.startOffset;return!!(uu(e.toString())&&tu(n.parentNode)&&Bo.isText(n)&&(t=n.data,uu(t[r-1])||uu(t[r+1])))},lu=function(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom},fu=function(e){var t,n,r,o,i,a,u,s;return t=0<(n=e.getClientRects()).length?Ma(n[0]):Ma(e.getBoundingClientRect()),!su(e)&&ru(e)&&lu(t)?(i=(r=e).ownerDocument,a=au(i),u=i.createTextNode("\xa0"),(s=r.parentNode).insertBefore(u,r),a.setStart(u,0),a.setEnd(u,1),o=Ma(a.getBoundingClientRect()),s.removeChild(u),o):lu(t)&&su(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&Bo.isText(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),fu(i)}return null}(e):t},du=function(e,t){var n=Fa(e,t);return n.width=1,n.right=n.left+1,n},mu=function(e){var t,n,r=[],o=function(e){var t,n;0!==e.height&&(0<r.length&&(t=e,n=r[r.length-1],t.left===n.left&&t.top===n.top&&t.bottom===n.bottom&&t.right===n.right)||r.push(e))},i=function(e,t){var n=au(e.ownerDocument);if(t<e.data.length){if($a(e.data[t]))return r;if($a(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!cu(n)))return o(du(fu(n),!1)),r}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),cu(n)||o(du(fu(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),cu(n)||o(du(fu(n),!0)))};if(nu(e.container()))return i(e.container(),e.offset()),r;if(Ga(e.container()))if(e.isAtEnd())n=iu(e.container(),e.offset()),nu(n)&&i(n,n.data.length),eu(n)&&!ru(n)&&o(du(fu(n),!1));else{if(n=iu(e.container(),e.offset()),nu(n)&&i(n,0),eu(n)&&e.isAtEnd())return o(du(fu(n),!1)),r;t=iu(e.container(),e.offset()-1),eu(t)&&!ru(t)&&(Qa(t)||Qa(n)||!eu(n))&&o(du(fu(t),!1)),eu(n)&&o(du(fu(n),!0))}return r};function gu(t,n,e){var r=function(){return e||(e=mu(gu(t,n))),e};return{container:q(t),offset:q(n),toRange:function(){var e;return(e=au(t.ownerDocument)).setStart(t,n),e.setEnd(t,n),e},getClientRects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return nu(t),0===n},isAtEnd:function(){return nu(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return iu(t,e?n-1:n)}}}($i=gu||(gu={})).fromRangeStart=function(e){return $i(e.startContainer,e.startOffset)},$i.fromRangeEnd=function(e){return $i(e.endContainer,e.endOffset)},$i.after=function(e){return $i(e.parentNode,ou(e)+1)},$i.before=function(e){return $i(e.parentNode,ou(e))},$i.isAbove=function(e,t){return Wa([te(t.getClientRects()),ne(e.getClientRects())],Ua).getOr(!1)},$i.isBelow=function(e,t){return Wa([ne(t.getClientRects()),te(e.getClientRects())],Va).getOr(!1)},$i.isAtStart=function(e){return!!e&&e.isAtStart()},$i.isAtEnd=function(e){return!!e&&e.isAtEnd()},$i.isTextPosition=function(e){return!!e&&Bo.isText(e.container())},$i.isElementPosition=function(e){return!1===$i.isTextPosition(e)};var pu,hu,vu=gu,bu=Bo.isText,yu=Bo.isBogus,Cu=hi.nodeIndex,xu=function(e){var t=e.parentNode;return yu(t)?xu(t):t},wu=function(e){return e?$t.reduce(e.childNodes,function(e,t){return yu(t)&&"BR"!==t.nodeName?e=e.concat(wu(t)):e.push(t),e},[]):[]},Nu=function(t){return function(e){return t===e}},Eu=function(e){var t,r,n,o;return(bu(e)?"text()":e.nodeName.toLowerCase())+"["+(r=wu(xu(t=e)),n=$t.findIndex(r,Nu(t),t),r=r.slice(0,n+1),o=$t.reduce(r,function(e,t,n){return bu(t)&&bu(r[n-1])&&e++,e},0),r=$t.filter(r,Bo.matchNodeNames(t.nodeName)),(n=$t.findIndex(r,Nu(t),t))-o)+"]"},Su=function(e,t){var n,r,o,i,a,u=[];return n=t.container(),r=t.offset(),bu(n)?o=function(e,t){for(;(e=e.previousSibling)&&bu(e);)t+=e.data.length;return t}(n,r):(r>=(i=n.childNodes).length?(o="after",r=i.length-1):o="before",n=i[r]),u.push(Eu(n)),a=function(e,t,n){var r=[];for(t=t.parentNode;!(t===e||n&&n(t));t=t.parentNode)r.push(t);return r}(e,n),a=$t.filter(a,y(Bo.isBogus)),(u=u.concat($t.map(a,function(e){return Eu(e)}))).reverse().join("/")+","+o},ku=function(e,t){var n,r,o;return t?(t=(n=t.split(","))[0].split("/"),o=1<n.length?n[1]:"before",(r=$t.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),n=e,r=t[1],o=parseInt(t[2],10),i=wu(n),i=$t.filter(i,function(e,t){return!bu(e)||!bu(i[t-1])}),(i=$t.filter(i,Bo.matchNodeNames(r)))[o]):null;var n,r,o,i},e))?bu(r)?function(e,t){for(var n,r=e,o=0;bu(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!bu(r.nextSibling)){e=r,t=n;break}o+=n,r=r.nextSibling}return bu(e)&&t>e.data.length&&(t=e.data.length),vu(e,t)}(r,parseInt(o,10)):(o="after"===o?Cu(r)+1:Cu(r),vu(r.parentNode,o)):null):null},Tu=function(e,t){Bo.isText(t)&&0===t.data.length&&e.remove(t)},Au=function(e,t,n){var r,o,i,a,u,s,c;Bo.isDocumentFragment(n)?(i=e,a=t,u=n,s=A.from(u.firstChild),c=A.from(u.lastChild),a.insertNode(u),s.each(function(e){return Tu(i,e.previousSibling)}),c.each(function(e){return Tu(i,e.nextSibling)})):(r=e,o=n,t.insertNode(o),Tu(r,o.previousSibling),Tu(r,o.nextSibling))},Ru=Bo.isContentEditableFalse,_u=function(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(Bo.isText(a)?s.push(n?function(e,t,n){var r,o;for(o=e(t.data.slice(0,n)).length,r=t.previousSibling;r&&Bo.isText(r);r=r.previousSibling)o+=e(r.data).length;return o}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s},Du=function(e,t,n){var r=0;return Gt.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r},Bu=function(e,t){var n,r,o,i=t?"start":"end";n=e[i+"Container"],r=e[i+"Offset"],Bo.isElement(n)&&"TR"===n.nodeName&&(n=(o=n.childNodes)[Math.min(t?r:r-1,o.length-1)])&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r))},Ou=function(e){return Bu(e,!0),Bu(e,!1),e},Pu=function(e,t){var n;if(Bo.isElement(e)&&(e=ja(e,t),Ru(e)))return e;if(va(e)){if(Bo.isText(e)&&pa(e)&&(e=e.parentNode),n=e.previousSibling,Ru(n))return n;if(n=e.nextSibling,Ru(n))return n}},Lu=function(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(Ru(r)||"IMG"===o)return{name:o,index:Du(n.dom,o,r)};var a,u,s,c,l,f,d,m=Pu((a=i).startContainer,a.startOffset)||Pu(a.endContainer,a.endOffset);return m?{name:o=m.tagName,index:Du(n.dom,o,m)}:(u=e,c=t,l=i,f=(s=n).dom,(d={}).start=_u(f,u,c,l,!0),s.isCollapsed()||(d.end=_u(f,u,c,l,!1)),d)},Iu=function(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,""):e.create("span",r)},Mu=function(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:Du(n,u,a)};var s=Ou(r.cloneRange());if(!i){s.collapse(!1);var c=Iu(n,o+"_end",t);Au(n,s,c)}(r=Ou(r)).collapse(!0);var l=Iu(n,o+"_start",t);return Au(n,r,l),e.moveToBookmark({id:o,keep:1}),{id:o}},Fu={getBookmark:function(e,t,n){return 2===t?Lu(da,n,e):3===t?(o=(r=e).getRng(),{start:Su(r.dom.getRoot(),vu.fromRangeStart(o)),end:Su(r.dom.getRoot(),vu.fromRangeEnd(o))}):t?{rng:e.getRng()}:Mu(e,!1);var r,o},getUndoBookmark:d(Lu,$,!0),getPersistentBookmark:Mu},zu="_mce_caret",Uu=function(e){return Bo.isElement(e)&&e.id===zu},Vu=function(e,t){for(;t&&t!==e;){if(t.id===zu)return t;t=t.parentNode}return null},Hu=Bo.isElement,ju=Bo.isText,qu=function(e){var t=e.parentNode;t&&t.removeChild(e)},$u=function(e,t){0===t.length?qu(e):e.nodeValue=t},Wu=function(e){var t=da(e);return{count:e.length-t.length,text:t}},Ku=function(e,t){return Gu(e),t},Xu=function(e,t){var n,r,o,i=t.container(),a=(n=re(i.childNodes),r=e,o=I(n,r),-1===o?A.none():A.some(o)).map(function(e){return e<t.offset()?vu(i,t.offset()-1):t}).getOr(t);return Gu(e),a},Yu=function(e,t){return ju(e)&&t.container()===e?(r=t,o=Wu((n=e).data.substr(0,r.offset())),i=Wu(n.data.substr(r.offset())),0<(a=o.text+i.text).length?($u(n,a),vu(n,r.offset()-o.count)):r):Ku(e,t);var n,r,o,i,a},Gu=function(e){if(Hu(e)&&va(e)&&(ba(e)?e.removeAttribute("data-mce-caret"):qu(e)),ju(e)){var t=da(function(e){try{return e.nodeValue}catch(t){return""}}(e));$u(e,t)}},Ju={removeAndReposition:function(e,t){return vu.isTextPosition(t)?Yu(e,t):(n=e,(r=t).container()===n.parentNode?Xu(n,r):Ku(n,r));var n,r},remove:Gu},Qu=nr.detect().browser,Zu=Bo.isContentEditableFalse,es=function(e,t,n){var r,o,i,a,u,s=Fa(t.getBoundingClientRect(),n);return"BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,i=e.scrollTop||r.scrollTop):(u=e.getBoundingClientRect(),o=e.scrollLeft-u.left,i=e.scrollTop-u.top),s.left+=o,s.right+=o,s.top+=i,s.bottom+=i,s.width=1,0<(a=t.offsetWidth-t.clientWidth)&&(n&&(a*=-1),s.left+=a,s.right+=a),s},ts=function(a,u,e){var t,s,c=Pi(A.none()),l=function(){!function(e){var t,n,r,o,i;for(t=hn("*[contentEditable=false]",e),o=0;o<t.length;o++)r=(n=t[o]).previousSibling,Na(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(i.length-1,1)),r=n.nextSibling,wa(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(0,1))}(a),s&&(Ju.remove(s),s=null),c.get().each(function(e){hn(e.caret).remove(),c.set(A.none())}),clearInterval(t)},f=function(){t=be.setInterval(function(){e()?hn("div.mce-visual-caret",a).toggleClass("mce-visual-caret-hidden"):hn("div.mce-visual-caret",a).addClass("mce-visual-caret-hidden")},500)};return{show:function(t,e){var n,r,o;if(l(),o=e,Bo.isElement(o)&&/^(TD|TH)$/i.test(o.tagName))return null;if(!u(e))return s=function(e,t){var n,r,o;if(r=e.ownerDocument.createTextNode(fa),o=e.parentNode,t){if(n=e.previousSibling,ga(n)){if(va(n))return n;if(Na(n))return n.splitText(n.data.length-1)}o.insertBefore(r,e)}else{if(n=e.nextSibling,ga(n)){if(va(n))return n;if(wa(n))return n.splitText(1),n}e.nextSibling?o.insertBefore(r,e.nextSibling):o.appendChild(r)}return r}(e,t),r=e.ownerDocument.createRange(),Zu(s.nextSibling)?(r.setStart(s,0),r.setEnd(s,0)):(r.setStart(s,1),r.setEnd(s,1)),r;s=xa("p",e,t),n=es(a,e,t),hn(s).css("top",n.top);var i=hn('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(a)[0];return c.set(A.some({caret:i,element:e,before:t})),c.get().each(function(e){t&&hn(e.caret).addClass("mce-visual-caret-before")}),f(),(r=e.ownerDocument.createRange()).setStart(s,0),r.setEnd(s,0),r},hide:l,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){c.get().each(function(e){var t=es(a,e.element,e.before);hn(e.caret).css(t)})},destroy:function(){return be.clearInterval(t)}}},ns=function(){return Qu.isIE()||Qu.isEdge()||Qu.isFirefox()},rs=function(e){return Zu(e)||Bo.isTable(e)&&ns()},os=Bo.isContentEditableFalse,is=Bo.matchStyleValues("display","block table table-cell table-caption list-item"),as=va,us=pa,ss=Bo.isElement,cs=Oa,ls=function(e){return 0<e},fs=function(e){return e<0},ds=function(e,t){for(var n;n=e(t);)if(!us(n))return n;return null},ms=function(e,t,n,r,o){var i=new oo(e,r);if(fs(t)){if((os(e)||us(e))&&n(e=ds(i.prev,!0)))return e;for(;e=ds(i.prev,o);)if(n(e))return e}if(ls(t)){if((os(e)||us(e))&&n(e=ds(i.next,!0)))return e;for(;e=ds(i.next,o);)if(n(e))return e}return null},gs=function(e,t){for(;e&&e!==t;){if(is(e))return e;e=e.parentNode}return null},ps=function(e,t,n){return gs(e.container(),n)===gs(t.container(),n)},hs=function(e,t){var n,r;return t?(n=t.container(),r=t.offset(),ss(n)?n.childNodes[r+e]:null):null},vs=function(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n},bs=function(e,t,n){var r,o,i,a;for(o=e?"previousSibling":"nextSibling";n&&n!==t;){if(r=n[o],as(r)&&(r=r[o]),os(r)){if(a=n,gs(r,i=t)===gs(a,i))return r;break}if(cs(r))break;n=n.parentNode}return null},ys=d(vs,!0),Cs=d(vs,!1),xs=function(e,t,n){var r,o,i,a,u=d(bs,!0,t),s=d(bs,!1,t);if(o=n.startContainer,i=n.startOffset,pa(o)){if(ss(o)||(o=o.parentNode),"before"===(a=o.getAttribute("data-mce-caret"))&&(r=o.nextSibling,rs(r)))return ys(r);if("after"===a&&(r=o.previousSibling,rs(r)))return Cs(r)}if(!n.collapsed)return n;if(Bo.isText(o)){if(as(o)){if(1===e){if(r=s(o))return ys(r);if(r=u(o))return Cs(r)}if(-1===e){if(r=u(o))return Cs(r);if(r=s(o))return ys(r)}return n}if(Na(o)&&i>=o.data.length-1)return 1===e&&(r=s(o))?ys(r):n;if(wa(o)&&i<=1)return-1===e&&(r=u(o))?Cs(r):n;if(i===o.data.length)return(r=s(o))?ys(r):n;if(0===i)return(r=u(o))?Cs(r):n}return n},ws=function(e,t){return A.from(hs(e?0:-1,t)).filter(os)},Ns=function(e,t,n){var r=xs(e,t,n);return-1===e?gu.fromRangeStart(r):gu.fromRangeEnd(r)},Es=function(e){return A.from(e.getNode()).map(or.fromDom)},Ss=function(e,t){for(;t=e(t);)if(t.isVisible())return t;return t},ks=function(e,t){var n=ps(e,t);return!(n||!Bo.isBr(e.getNode()))||n};(hu=pu||(pu={}))[hu.Backwards=-1]="Backwards",hu[hu.Forwards=1]="Forwards";var Ts,As,Rs,_s,Ds,Bs=Bo.isContentEditableFalse,Os=Bo.isText,Ps=Bo.isElement,Ls=Bo.isBr,Is=Oa,Ms=function(e){return _a(e)||!!Pa(t=e)&&!0!==U(re(t.getElementsByTagName("*")),function(e,t){return e||Sa(t)},!1);var t},Fs=La,zs=function(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null},Us=function(e,t){if(ls(e)){if(Is(t.previousSibling)&&!Os(t.previousSibling))return vu.before(t);if(Os(t))return vu(t,0)}if(fs(e)){if(Is(t.nextSibling)&&!Os(t.nextSibling))return vu.after(t);if(Os(t))return vu(t,t.data.length)}return fs(e)?Ls(t)?vu.before(t):vu.after(t):vu.before(t)},Vs=function(e,t,n){var r,o,i,a,u;if(!Ps(n)||!t)return null;if(t.isEqual(vu.after(n))&&n.lastChild){if(u=vu.after(n.lastChild),fs(e)&&Is(n.lastChild)&&Ps(n.lastChild))return Ls(n.lastChild)?vu.before(n.lastChild):u}else u=t;var s,c,l,f=u.container(),d=u.offset();if(Os(f)){if(fs(e)&&0<d)return vu(f,--d);if(ls(e)&&d<f.length)return vu(f,++d);r=f}else{if(fs(e)&&0<d&&(o=zs(f,d-1),Is(o)))return!Ms(o)&&(i=ms(o,e,Fs,o))?Os(i)?vu(i,i.data.length):vu.after(i):Os(o)?vu(o,o.data.length):vu.before(o);if(ls(e)&&d<f.childNodes.length&&(o=zs(f,d),Is(o)))return Ls(o)?(s=n,(l=(c=o).nextSibling)&&Is(l)?Os(l)?vu(l,0):vu.before(l):Vs(pu.Forwards,vu.after(c),s)):!Ms(o)&&(i=ms(o,e,Fs,o))?Os(i)?vu(i,0):vu.before(i):Os(o)?vu(o,0):vu.after(o);r=o||u.getNode()}return(ls(e)&&u.isAtEnd()||fs(e)&&u.isAtStart())&&(r=ms(r,e,q(!0),n,!0),Fs(r,n))?Us(e,r):(o=ms(r,e,Fs,n),!(a=$t.last(z(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNode;return n}(f,n),Bs)))||o&&a.contains(o)?o?Us(e,o):null:u=ls(e)?vu.after(a):vu.before(a))},Hs=function(t){return{next:function(e){return Vs(pu.Forwards,e,t)},prev:function(e){return Vs(pu.Backwards,e,t)}}},js=function(e){return vu.isTextPosition(e)?0===e.offset():Oa(e.getNode())},qs=function(e){if(vu.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return Oa(e.getNode(!0))},$s=function(e,t){return!vu.isTextPosition(e)&&!vu.isTextPosition(t)&&e.getNode()===t.getNode(!0)},Ws=function(e,t,n){return e?!$s(t,n)&&(r=t,!(!vu.isTextPosition(r)&&Bo.isBr(r.getNode())))&&qs(t)&&js(n):!$s(n,t)&&js(t)&&qs(n);var r},Ks=function(e,t,n){var r=Hs(t);return A.from(e?r.next(n):r.prev(n))},Xs=function(t,n,r){return Ks(t,n,r).bind(function(e){return ps(r,e,n)&&Ws(t,r,e)?Ks(t,n,e):A.some(e)})},Ys=function(t,n,e,r){return Xs(t,n,e).bind(function(e){return r(e)?Ys(t,n,e,r):A.some(e)})},Gs=function(e,t){var n,r,o,i,a,u=e?t.firstChild:t.lastChild;return Bo.isText(u)?A.some(vu(u,e?0:u.data.length)):u?Oa(u)?A.some(e?vu.before(u):(a=u,Bo.isBr(a)?vu.before(a):vu.after(a))):(r=t,o=u,i=(n=e)?vu.before(o):vu.after(o),Ks(n,r,i)):A.none()},Js=d(Ks,!0),Qs=d(Ks,!1),Zs={fromPosition:Ks,nextPosition:Js,prevPosition:Qs,navigate:Xs,navigateIgnore:Ys,positionIn:Gs,firstPositionIn:d(Gs,!0),lastPositionIn:d(Gs,!1)},ec=function(e,t){return!e.isBlock(t)||t.innerHTML||me.ie||(t.innerHTML='<br data-mce-bogus="1" />'),t},tc=function(e,t){return Zs.lastPositionIn(e).fold(function(){return!1},function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})},nc=function(e,t,n){return!(!1!==t.hasChildNodes()||!Vu(e,t)||(o=n,i=(r=t).ownerDocument.createTextNode(fa),r.appendChild(i),o.setStart(i,0),o.setEnd(i,0),0));var r,o,i},rc=function(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,nc(c,i,r))return!0;if(s[o]>u.length-1)return!!nc(c,i,r)||tc(i,r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return!0},oc=function(e){return Bo.isText(e)&&0<e.data.length},ic=function(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,"start"===t?l?c.hasChildNodes()?(r=c.firstChild,o=1):oc(c.nextSibling)?(r=c.nextSibling,o=0):oc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)+1):o=e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,o=1):oc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)):o=e.nodeIndex(c),u=r,s=o,!l){for(a=c.previousSibling,i=c.nextSibling,Gt.each(Gt.grep(c.childNodes),function(e){Bo.isText(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&Bo.isText(a)&&!me.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),u=a,s=o)}return A.some(vu(u,s))}return A.none()},ac=function(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,b=e.dom;if(t){if(v=t,Gt.isArray(v.start))return p=t,h=(g=b).createRng(),rc(g,!0,p,h)&&rc(g,!1,p,h)?A.some(h):A.none();if("string"==typeof t.start)return A.some((f=t,d=(l=b).createRng(),m=ku(l.getRoot(),f.start),d.setStart(m.container(),m.offset()),m=ku(l.getRoot(),f.end),d.setEnd(m.container(),m.offset()),d));if(t.hasOwnProperty("id"))return s=ic(o=b,"start",i=t),c=ic(o,"end",i),Wa([s,(a=c,u=s,a.isSome()?a:u)],function(e,t){var n=o.createRng();return n.setStart(ec(o,e.container()),e.offset()),n.setEnd(ec(o,t.container()),t.offset()),n});if(t.hasOwnProperty("name"))return n=b,r=t,A.from(n.select(r.name)[r.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t});if(t.hasOwnProperty("rng"))return A.some(t.rng)}return A.none()},uc=function(e,t,n){return Fu.getBookmark(e,t,n)},sc=function(t,e){ac(t,e).each(function(e){t.setRng(e)})},cc=function(e){return Bo.isElement(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},lc=function(e){return e&&/^(IMG)$/.test(e.nodeName)},fc=function(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)},dc=function(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),"fontFamily"===n&&(t=t.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+t},mc={isInlineBlock:lc,moveStart:function(e,t,n){var r,o,i,a=n.startOffset,u=n.startContainer;if((n.startContainer!==n.endContainer||!lc(n.startContainer.childNodes[n.startOffset]))&&1===u.nodeType)for(a<(i=u.childNodes).length?r=new oo(u=i[a],e.getParent(u,e.isBlock)):(r=new oo(u=i[i.length-1],e.getParent(u,e.isBlock))).next(!0),o=r.current();o;o=r.next())if(3===o.nodeType&&!fc(o))return n.setStart(o,0),void t.setRng(n)},getNonWhiteSpaceSibling:function(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1===e.nodeType||!fc(e))return e},isTextBlock:function(e,t){return t.nodeType&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]},isValid:function(e,t,n){return e.schema.isValidChild(t,n)},isWhiteSpaceNode:fc,replaceVars:function(e,n){return"string"!=typeof e?e=e(n):n&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e},isEq:function(e,t){return t=t||"",e=""+((e=e||"").nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()===t.toLowerCase()},normalizeStyleValue:dc,getStyle:function(e,t,n){return dc(e,e.getStyle(t,n),n)},getTextDecoration:function(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,"text-decoration"))&&"none"!==n}),n},getParents:function(e,t,n){return e.getParents(t,n,e.getRoot())}},gc=cc,pc=mc.getParents,hc=mc.isWhiteSpaceNode,vc=mc.isTextBlock,bc=function(e,t){for(void 0===t&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)(e=e.childNodes[t])&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}},yc=function(e,t){for(var n=t;n;){if(1===n.nodeType&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t},Cc=function(e,t,n,r){var o,i,a=n.nodeValue;return void 0===r&&(r=e?a.length:0),e?(o=a.lastIndexOf(" ",r),-1!==(o=(i=a.lastIndexOf("\xa0",r))<o?o:i)&&!t&&(o<r||!e)&&o<=a.length&&o++):(o=a.indexOf(" ",r),i=a.indexOf("\xa0",r),o=-1!==o&&(-1===i||o<i)?o:i),o},xc=function(e,t,n,r,o,i){var a,u,s,c;if(3===n.nodeType){if(-1!==(s=Cc(o,i,n,r)))return{container:n,offset:s};c=n}for(a=new oo(n,e.getParent(n,e.isBlock)||t);u=a[o?"prev":"next"]();)if(3!==u.nodeType||gc(u.parentNode)){if(e.isBlock(u)||mc.isEq(u,"BR"))break}else if(-1!==(s=Cc(o,i,c=u)))return{container:u,offset:s};if(c)return{container:c,offset:r=o?0:c.length}},wc=function(e,t,n,r,o){var i,a,u,s;for(3===r.nodeType&&0===r.nodeValue.length&&r[o]&&(r=r[o]),i=pc(e,r),a=0;a<i.length;a++)for(u=0;u<t.length;u++)if(!("collapsed"in(s=t[u])&&s.collapsed!==n.collapsed)&&e.is(i[a],s.selector))return i[a];return r},Nc=function(t,e,n,r){var o,i=t.dom,a=i.getRoot();if(e[0].wrapper||(o=i.getParent(n,e[0].block,a)),!o){var u=i.getParent(n,"LI,TD,TH");o=i.getParent(3===n.nodeType?n.parentNode:n,function(e){return e!==a&&vc(t,e)},u)}if(o&&e[0].wrapper&&(o=pc(i,o,"ul,ol").reverse()[0]||o),!o)for(o=n;o[r]&&!i.isBlock(o[r])&&(o=o[r],!mc.isEq(o,"br")););return o||n},Ec=function(e,t,n,r,o,i,a){var u,s,c,l,f,d;if(u=s=a?n:o,l=a?"previousSibling":"nextSibling",f=e.getRoot(),3===u.nodeType&&!hc(u)&&(a?0<r:i<u.nodeValue.length))return u;for(;;){if(!t[0].block_expand&&e.isBlock(s))return s;for(c=s[l];c;c=c[l])if(!gc(c)&&!hc(c)&&("BR"!==(d=c).nodeName||!d.getAttribute("data-mce-bogus")||d.nextSibling))return s;if(s===f||s.parentNode===f){u=s;break}s=s.parentNode}return u},Sc=function(e,t,n,r){var o,i=t.startContainer,a=t.startOffset,u=t.endContainer,s=t.endOffset,c=e.dom;return 1===i.nodeType&&i.hasChildNodes()&&3===(i=ja(i,a)).nodeType&&(a=0),1===u.nodeType&&u.hasChildNodes()&&3===(u=ja(u,t.collapsed?s:s-1)).nodeType&&(s=u.nodeValue.length),i=yc(c,i),u=yc(c,u),(gc(i.parentNode)||gc(i))&&(i=gc(i)?i:i.parentNode,3===(i=t.collapsed?i.previousSibling||i:i.nextSibling||i).nodeType&&(a=t.collapsed?i.length:0)),(gc(u.parentNode)||gc(u))&&(u=gc(u)?u:u.parentNode,3===(u=t.collapsed?u.nextSibling||u:u.previousSibling||u).nodeType&&(s=t.collapsed?0:u.length)),t.collapsed&&((o=xc(c,e.getBody(),i,a,!0,r))&&(i=o.container,a=o.offset),(o=xc(c,e.getBody(),u,s,!1,r))&&(u=o.container,s=o.offset)),n[0].inline&&(u=r?u:function(e,t){var n=bc(e,t);if(n.node){for(;n.node&&0===n.offset&&n.node.previousSibling;)n=bc(n.node.previousSibling);n.node&&0<n.offset&&3===n.node.nodeType&&" "===n.node.nodeValue.charAt(n.offset-1)&&1<n.offset&&(e=n.node).splitText(n.offset-1)}return e}(u,s)),(n[0].inline||n[0].block_expand)&&(n[0].inline&&3===i.nodeType&&0!==a||(i=Ec(c,n,i,a,u,s,!0)),n[0].inline&&3===u.nodeType&&s!==u.nodeValue.length||(u=Ec(c,n,i,a,u,s,!1))),n[0].selector&&!1!==n[0].expand&&!n[0].inline&&(i=wc(c,n,t,i,"previousSibling"),u=wc(c,n,t,u,"nextSibling")),(n[0].block||n[0].selector)&&(i=Nc(e,n,i,"previousSibling"),u=Nc(e,n,u,"nextSibling"),n[0].block&&(c.isBlock(i)||(i=Ec(c,n,i,a,u,s,!0)),c.isBlock(u)||(u=Ec(c,n,i,a,u,s,!1)))),1===i.nodeType&&(a=c.nodeIndex(i),i=i.parentNode),1===u.nodeType&&(s=c.nodeIndex(u)+1,u=u.parentNode),{startContainer:i,startOffset:a,endContainer:u,endOffset:s}},kc=Gt.each,Tc=function(e,t,o){var n,r,i,a,u,s,c,l=t.startContainer,f=t.startOffset,d=t.endContainer,m=t.endOffset;if(0<(c=e.select("td[data-mce-selected],th[data-mce-selected]")).length)kc(c,function(e){o([e])});else{var g,p,h,v=function(e){var t;return 3===(t=e[0]).nodeType&&t===l&&f>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===m&&0<e.length&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e},b=function(e,t,n){for(var r=[];e&&e!==n;e=e[t])r.push(e);return r},y=function(e,t){do{if(e.parentNode===t)return e;e=e.parentNode}while(e)},C=function(e,t,n){var r=n?"nextSibling":"previousSibling";for(u=(a=e).parentNode;a&&a!==t;a=u)u=a.parentNode,(s=b(a===e?a:a[r],r)).length&&(n||s.reverse(),o(v(s)))};if(1===l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[f]),1===d.nodeType&&d.hasChildNodes()&&(p=m,h=(g=d).childNodes,--p>h.length-1?p=h.length-1:p<0&&(p=0),d=h[p]||g),l===d)return o(v([l]));for(n=e.findCommonAncestor(l,d),a=l;a;a=a.parentNode){if(a===d)return C(l,n,!0);if(a===n)break}for(a=d;a;a=a.parentNode){if(a===l)return C(d,n);if(a===n)break}r=y(l,n)||l,i=y(d,n)||d,C(l,r,!0),(s=b(r===l?r:r.nextSibling,"nextSibling",i===d?i.nextSibling:i)).length&&o(v(s)),C(d,i)}},Ac=(Ts=fr,As="text",Rs=function(e){return Ts(e)?A.from(e.dom().nodeValue):A.none()},_s=nr.detect().browser,{get:function(e){if(!Ts(e))throw new Error("Can only get "+As+" value of a "+As+" node");return Ds(e).getOr("")},getOption:Ds=_s.isIE()&&10===_s.version.major?function(e){try{return Rs(e)}catch(jN){return A.none()}}:Rs,set:function(e,t){if(!Ts(e))throw new Error("Can only set raw "+As+" value of a "+As+" node");e.dom().nodeValue=t}}),Rc=function(e){return Ac.get(e)},_c=function(r,o,i,a){return Mr(o).fold(function(){return"skipping"},function(e){return"br"===a||fr(n=o)&&"\ufeff"===Rc(n)?"valid":lr(t=o)&&Vi(t,Ji())?"existing":Uu(o)?"caret":mc.isValid(r,i,a)&&mc.isValid(r,sr(e),i)?"valid":"invalid-child";var t,n})},Dc=function(e,t,n,r){var o,i,a=t.uid,u=void 0===a?(o="mce-annotation",i=(new Date).getTime(),o+"_"+Math.floor(1e9*Math.random())+ ++oa+String(i)):a,s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&(n[r[o]]=e[r[o]])}return n}(t,["uid"]),c=or.fromTag("span",e);zi(c,Ji()),br(c,""+Zi(),u),br(c,""+Qi(),n);var l,f=r(u,s),d=f.attributes,m=void 0===d?{}:d,g=f.classes,p=void 0===g?[]:g;return yr(c,m),l=c,F(p,function(e){zi(l,e)}),c},Bc=function(i,e,t,n,r){var a=[],u=Dc(i.getDoc(),r,t,n),s=Pi(A.none()),c=function(){s.set(A.none())},l=function(e){F(e,o)},o=function(e){var t,n;switch(_c(i,e,"span",sr(e))){case"invalid-child":c();var r=Hr(e);l(r),c();break;case"valid":var o=s.get().getOrThunk(function(){var e=aa(u);return a.push(e),s.set(A.some(e)),e});Si(t=e,n=o),Ai(n,t)}};return Tc(i.dom,e,function(e){var t;c(),t=W(e,or.fromDom),l(t)}),a},Oc=function(s,c,l,f){s.undoManager.transact(function(){var e,t,n,r,o=s.selection.getRng();if(o.collapsed&&(r=Sc(e=s,t=o,[{inline:!0}],3===(n=t).startContainer.nodeType&&n.startContainer.nodeValue.length>=n.startOffset&&"\xa0"===n.startContainer.nodeValue[n.startOffset]),t.setStart(r.startContainer,r.startOffset),t.setEnd(r.endContainer,r.endOffset),e.selection.setRng(t)),s.selection.getRng().collapsed){var i=Dc(s.getDoc(),f,c,l.decorate);sa(i,"\xa0"),s.selection.getRng().insertNode(i.dom()),s.selection.select(i.dom())}else{var a=Fu.getPersistentBookmark(s.selection,!1),u=s.selection.getRng();Bc(s,u,c,l.decorate,f),s.selection.moveToBookmark(a)}})};function Pc(s){var n,r=(n={},{register:function(e,t){n[e]={name:e,settings:t}},lookup:function(e){return n.hasOwnProperty(e)?A.from(n[e]).map(function(e){return e.settings}):A.none()}});ra(s,r);var o=na(s);return{register:function(e,t){r.register(e,t)},annotate:function(t,n){r.lookup(t).each(function(e){Oc(s,t,e,n)})},annotationChanged:function(e,t){o.addListener(e,t)},remove:function(e){ea(s,A.some(e)).each(function(e){var t=e.elements;F(t,Bi)})},getAll:function(e){var t,n,r,o,i,a,u=(t=s,n=e,r=or.fromDom(t.getBody()),o=ji(r,"["+Qi()+'="'+n+'"]'),i={},F(o,function(e){var t=Cr(e,Zi()),n=i.hasOwnProperty(t)?i[t]:[];i[t]=n.concat([e])}),i);return a=function(e){return W(e,function(e){return e.dom()})},pr(u,function(e,t,n){return{k:t,v:a(e,t,n)}})}}}var Lc=function(e){return Gt.grep(e.childNodes,function(e){return"LI"===e.nodeName})},Ic=function(e){return e&&e.firstChild&&e.firstChild===e.lastChild&&("\xa0"===(t=e.firstChild).data||Bo.isBr(t));var t},Mc=function(e){return 0<e.length&&(!(t=e[e.length-1]).firstChild||Ic(t))?e.slice(0,-1):e;var t},Fc=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},zc=function(e,t){var n=vu.after(e),r=Hs(t).prev(n);return r?r.toRange():null},Uc=function(t,e,n){var r,o,i,a,u=t.parentNode;return Gt.each(e,function(e){u.insertBefore(e,t)}),r=t,o=n,i=vu.before(r),(a=Hs(o).next(i))?a.toRange():null},Vc=function(e,t){var n,r,o,i,a,u,s=t.firstChild,c=t.lastChild;return s&&"meta"===s.name&&(s=s.next),c&&"mce_marker"===c.attr("id")&&(c=c.prev),r=c,u=(n=e).getNonEmptyElements(),r&&(r.isEmpty(u)||(o=r,n.getBlockElements()[o.name]&&(a=o).firstChild&&a.firstChild===a.lastChild&&("br"===(i=o.firstChild).name||"\xa0"===i.value)))&&(c=c.prev),!(!s||s!==c||"ul"!==s.name&&"ol"!==s.name)},Hc=function(e,o,i,t){var n,r,a,u,s,c,l,f,d,m,g,p,h,v,b,y,C,x,w,N=(n=o,r=t,c=e.serialize(r),l=n.createFragment(c),u=(a=l).firstChild,s=a.lastChild,u&&"META"===u.nodeName&&u.parentNode.removeChild(u),s&&"mce_marker"===s.id&&s.parentNode.removeChild(s),a),E=Fc(o,i.startContainer),S=Mc(Lc(N.firstChild)),k=o.getRoot(),T=function(e){var t=vu.fromRangeStart(i),n=Hs(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||Fc(o,r.getNode())!==E};return T(1)?Uc(E,S,k):T(2)?(f=E,d=S,m=k,o.insertAfter(d.reverse(),f),zc(d[0],m)):(p=S,h=k,v=g=E,y=(b=i).cloneRange(),C=b.cloneRange(),y.setStartBefore(v),C.setEndAfter(v),x=[y.cloneContents(),C.cloneContents()],(w=g.parentNode).insertBefore(x[0],g),Gt.each(p,function(e){w.insertBefore(e,g)}),w.insertBefore(x[1],g),w.removeChild(g),zc(p[p.length-1],h))},jc=function(e,t){return!!Fc(e,t)},qc=Gt.each,$c=function(o){this.compare=function(e,t){if(e.nodeName!==t.nodeName)return!1;var n=function(n){var r={};return qc(o.getAttribs(n),function(e){var t=e.nodeName.toLowerCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r},r=function(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(void 0===(n=t[r]))return!1;if(e[r]!==n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0};return!(!r(n(e),n(t))||!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))||cc(e)||cc(t))}},Wc=function(e){var t=ji(e,"br"),n=z(function(e){for(var t=[],n=e.dom();n;)t.push(or.fromDom(n)),n=n.lastChild;return t}(e).slice(-1),mo);t.length===n.length&&F(n,Di)},Kc=function(e){_i(e),Ai(e,or.fromHtml('<br data-mce-bogus="1">'))},Xc=function(n){$r(n).each(function(t){Fr(t).each(function(e){lo(n)&&mo(t)&&lo(e)&&Di(t)})})},Yc=Gt.makeMap;function Gc(e){var u,s,c,l,f,d=[];return u=(e=e||{}).indent,s=Yc(e.indent_before||""),c=Yc(e.indent_after||""),l=Wo.getEncodeFunc(e.entity_encoding||"raw",e.entities),f="html"===e.element_format,{start:function(e,t,n){var r,o,i,a;if(u&&s[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n"),d.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],d.push(" ",i.name,'="',l(i.value,!0),'"');d[d.length]=!n||f?">":" />",n&&u&&c[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n")},end:function(e){var t;d.push("</",e,">"),u&&c[e]&&0<d.length&&0<(t=d[d.length-1]).length&&"\n"!==t&&d.push("\n")},text:function(e,t){0<e.length&&(d[d.length]=t?e:l(e))},cdata:function(e){d.push("<![CDATA[",e,"]]>")},comment:function(e){d.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?d.push("<?",e," ",l(t),"?>"):d.push("<?",e,"?>"),u&&d.push("\n")},doctype:function(e){d.push("<!DOCTYPE",e,">",u?"\n":"")},reset:function(){d.length=0},getContent:function(){return d.join("").replace(/\n$/,"")}}}function Jc(t,g){void 0===g&&(g=ri());var p=Gc(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f,d;d=t.validate,f={3:function(e){p.text(e.value,e.raw)},8:function(e){p.comment(e.value)},7:function(e){p.pi(e.name,e.value)},10:function(e){p.doctype(e.value)},4:function(e){p.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;m(e),e=e.next;);}},p.reset();var m=function(e){var t,n,r,o,i,a,u,s,c,l=f[e.type];if(l)l(e);else{if(t=e.name,n=e.shortEnded,r=e.attributes,d&&r&&1<r.length&&((a=[]).map={},c=g.getElementRule(e.name))){for(u=0,s=c.attributesOrder.length;u<s;u++)(o=c.attributesOrder[u])in r.map&&(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));for(u=0,s=r.length;u<s;u++)(o=r[u].name)in a.map||(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));r=a}if(p.start(e.name,r,n),!n){if(e=e.firstChild)for(;m(e),e=e.next;);p.end(t)}}};return 1!==e.type||t.inner?f[11](e):m(e),p.getContent()}}}var Qc,Zc=function(a){var u=vu.fromRangeStart(a),s=vu.fromRangeEnd(a),c=a.commonAncestorContainer;return Zs.fromPosition(!1,c,s).map(function(e){return!ps(u,s,c)&&ps(u,e,c)?(t=u.container(),n=u.offset(),r=e.container(),o=e.offset(),(i=H.document.createRange()).setStart(t,n),i.setEnd(r,o),i):a;var t,n,r,o,i}).getOr(a)},el=function(e){return e.collapsed?e:Zc(e)},tl=Bo.matchNodeNames("td th"),nl=function(e,t){var n,r,o=e.selection.getRng(),i=o.startContainer,a=o.startOffset;o.collapsed&&(n=i,r=a,Bo.isText(n)&&"\xa0"===n.nodeValue[r-1])&&Bo.isText(i)&&(i.insertData(a-1," "),i.deleteData(a,1),o.setStart(i,a),o.setEnd(i,a),e.selection.setRng(o)),e.selection.setContent(t)},rl=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=e.selection,p=e.dom;if(/^ | $/.test(t)&&(t=function(e,t){var n,r;n=e.startContainer,r=e.startOffset;var o=function(e){return n[e]&&3===n[e].nodeType};return 3===n.nodeType&&(0<r?t=t.replace(/^ /," "):o("previousSibling")||(t=t.replace(/^ /," ")),r<n.length?t=t.replace(/ (<br>|)$/," "):o("nextSibling")||(t=t.replace(/( | )(<br>|)$/," "))),t}(g.getRng(),t)),r=e.parser,m=n.merge,o=Jc({validate:e.settings.validate},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">​</span>',s={content:t,format:"html",selection:!0,paste:n.paste},(s=e.fire("BeforeSetContent",s)).isDefaultPrevented())e.fire("SetContent",{content:s.content,format:"html",selection:!0,paste:n.paste});else{-1===(t=s.content).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var h,v,b,y,C,x,w=(l=g.getRng()).startContainer||(l.parentElement?l.parentElement():null),N=e.getBody();w===N&&g.isCollapsed()&&p.isBlock(N.firstChild)&&(h=e,(v=N.firstChild)&&!h.schema.getShortEndedElements()[v.nodeName])&&p.isEmpty(N.firstChild)&&((l=p.createRng()).setStart(N.firstChild,0),l.setEnd(N.firstChild,0),g.setRng(l)),g.isCollapsed()||(e.selection.setRng(el(e.selection.getRng())),e.getDoc().execCommand("Delete",!1,null),b=e.selection.getRng(),y=t,C=b.startContainer,x=b.startOffset,3===C.nodeType&&b.collapsed&&("\xa0"===C.data[x]?(C.deleteData(x,1),/[\u00a0| ]$/.test(y)||(y+=" ")):"\xa0"===C.data[x-1]&&(C.deleteData(x-1,1),/[\u00a0| ]$/.test(y)||(y=" "+y))),t=y);var E,S,k,T={context:(i=g.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0};if(u=r.parse(t,T),!0===n.paste&&Vc(e.schema,u)&&jc(p,i))return l=Hc(o,p,e.selection.getRng(),u),e.selection.setRng(l),void e.fire("SetContent",s);if(function(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}(u),"mce_marker"===(f=u.lastChild).attr("id"))for(f=(c=f).prev;f;f=f.walk(!0))if(3===f.type||!p.isBlock(f.name)){e.schema.isValidChild(f.parent.name,"span")&&f.parent.insert(c,f,"br"===f.name);break}if(e._selectionOverrides.showBlockCaretContainer(i),T.invalid){for(nl(e,d),i=g.getNode(),a=e.getBody(),9===i.nodeType?i=f=a:f=i;f!==a;)f=(i=f).parentNode;t=i===a?a.innerHTML:p.getOuterHTML(i),t=o.serialize(r.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return o.serialize(u)}))),i===a?p.setHTML(a,t):p.setOuterHTML(i,t)}else!function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,o=n.lastChild;!r||r===o&&"BR"===r.nodeName?e.dom.setHTML(n,t):nl(e,t)}}(e,t=o.serialize(u),i);!function(e,t){var n=e.schema.getTextInlineElements(),r=e.dom;if(t){var o=e.getBody(),i=new $c(r);Gt.each(r.select("*[data-mce-fragment]"),function(e){for(var t=e.parentNode;t&&t!==o;t=t.parentNode)n[e.nodeName.toLowerCase()]&&i.compare(t,e)&&r.remove(e,!0)})}}(e,m),function(n,e){var t,r,o,i,a,u=n.dom,s=n.selection;if(e){if(n.selection.scrollIntoView(e),t=function(e){for(var t=n.getBody();e&&e!==t;e=e.parentNode)if("false"===n.dom.getContentEditable(e))return e;return null}(e))return u.remove(e),s.select(t);var c=u.createRng();(i=e.previousSibling)&&3===i.nodeType?(c.setStart(i,i.nodeValue.length),me.ie||(a=e.nextSibling)&&3===a.nodeType&&(i.appendData(a.data),a.parentNode.removeChild(a))):(c.setStartBefore(e),c.setEndBefore(e)),r=u.getParent(e,u.isBlock),u.remove(e),r&&u.isEmpty(r)&&(n.$(r).empty(),c.setStart(r,0),c.setEnd(r,0),tl(r)||r.getAttribute("data-mce-fragment")||!(o=function(e){var t=vu.fromRangeStart(e);if(t=Hs(n.getBody()).next(t))return t.toRange()}(c))?u.add(r,u.create("br",{"data-mce-bogus":"1"})):(c=o,u.remove(r))),s.setRng(c)}}(e,p.get("mce_marker")),E=e.getBody(),Gt.each(E.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")}),S=e.dom,k=e.selection.getStart(),A.from(S.getParent(k,"td,th")).map(or.fromDom).each(Xc),e.fire("SetContent",s),e.addVisual()}},ol=function(e,t){var n,r,o="string"!=typeof(n=t)?(r=Gt.extend({paste:n.paste,data:{paste:n.paste}},n),{content:n.content,details:r}):{content:n,details:{}};rl(e,o.content,o.details)},il=Sr("sections","settings"),al=nr.detect().deviceType.isTouch(),ul=["lists","autolink","autosave"],sl={theme:"mobile"},cl=function(e){var t=D(e)?e.join(" "):e,n=W(R(t)?t.split(" "):[],Xn);return z(n,function(e){return 0<e.length})},ll=function(n,e){var r,o,i,t=(r=function(e,t){return M(n,t)},o={},i={},gr(e,function(e,t){(r(e,t)?o:i)[t]=e}),{t:o,f:i});return il(t.t,t.f)},fl=function(e,t){return e.sections().hasOwnProperty(t)},dl=function(e,t,n,r){var o,i=cl(n.forced_plugins),a=cl(r.plugins),u=e&&fl(t,"mobile")?z(a,d(M,ul)):a,s=(o=u,[].concat(cl(i)).concat(cl(o)));return Gt.extend(r,{plugins:s.join(" ")})},ml=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=ll(["mobile"],r),p=Gt.extend(t,n,g.settings(),(f=e,m=(d=g).settings().inline,f&&fl(d,"mobile")&&!m?(u="mobile",s=sl,c=g.sections(),l=c.hasOwnProperty(u)?c[u]:{},Gt.extend({},s,l)):{}),{validate:!0,content_editable:g.settings().inline,external_plugins:(o=n,i=g.settings(),a=i.external_plugins?i.external_plugins:{},o&&o.external_plugins?Gt.extend({},o.external_plugins,a):a)});return dl(e,g,n,p)},gl=function(e,t,n){return A.from(t.settings[n]).filter(e)},pl=d(gl,R),hl=function(e,t,n,r){var o,i,a,u=t in e.settings?e.settings[t]:n;return"hash"===r?(a={},"string"==typeof(i=u)?F(0<i.indexOf("=")?i.split(/[;,](?![^=;,]*(?:[;,]|$))/):i.split(","),function(e){var t=e.split("=");1<t.length?a[Gt.trim(t[0])]=Gt.trim(t[1]):a[Gt.trim(t[0])]=Gt.trim(t)}):a=i,a):"string"===r?gl(R,e,t).getOr(n):"number"===r?gl(L,e,t).getOr(n):"boolean"===r?gl(O,e,t).getOr(n):"object"===r?gl(_,e,t).getOr(n):"array"===r?gl(D,e,t).getOr(n):"string[]"===r?gl((o=R,function(e){return D(e)&&Q(e,o)}),e,t).getOr(n):"function"===r?gl(P,e,t).getOr(n):u},vl=/[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,bl=function(e,t){if(!t)return t;var n=t.container(),r=t.offset();return e?ha(n)?Bo.isText(n.nextSibling)?vu(n.nextSibling,0):vu.after(n):ya(t)?vu(n,r+1):t:ha(n)?Bo.isText(n.previousSibling)?vu(n.previousSibling,n.previousSibling.data.length):vu.before(n):Ca(t)?vu(n,r-1):t},yl={isInlineTarget:function(e,t){var n=pl(e,"inline_boundaries_selector").getOr("a[href],code");return Br(or.fromDom(t),n)},findRootInline:function(e,t,n){var r,o,i,a=(r=e,o=t,i=n,z(hi.DOM.getParents(i.container(),"*",o),r));return A.from(a[a.length-1])},isRtl:function(e){return"rtl"===hi.DOM.getStyle(e,"direction",!0)||(t=e.textContent,vl.test(t));var t},isAtZwsp:function(e){return ya(e)||Ca(e)},normalizePosition:bl,normalizeForwards:d(bl,!0),normalizeBackwards:d(bl,!1),hasSameParentBlock:function(e,t,n){var r=gs(t,e),o=gs(n,e);return r&&r===o}},Cl=function(e,t){return Lr(e,t)?Ki(t,function(e){return go(e)||ho(e)},(n=e,function(e){return Pr(n,or.fromDom(e.dom().parentNode))})):A.none();var n},xl=function(e){var t,n,r;e.dom.isEmpty(e.getBody())&&(e.setContent(""),n=(t=e).getBody(),r=n.firstChild&&t.dom.isBlock(n.firstChild)?n.firstChild:n,t.selection.setCursorLocation(r,0))},wl=function(i,a,u){return Wa([Zs.firstPositionIn(u),Zs.lastPositionIn(u)],function(e,t){var n=yl.normalizePosition(!0,e),r=yl.normalizePosition(!1,t),o=yl.normalizePosition(!1,a);return i?Zs.nextPosition(u,o).map(function(e){return e.isEqual(r)&&a.isEqual(n)}).getOr(!1):Zs.prevPosition(u,o).map(function(e){return e.isEqual(n)&&a.isEqual(r)}).getOr(!1)}).getOr(!0)},Nl=function(e,t){var n,r,o,i=or.fromDom(e),a=or.fromDom(t);return n=a,r="pre,code",o=d(Pr,i),Xi(n,r,o).isSome()},El=function(e,t){return Oa(t)&&!1===(r=e,o=t,Bo.isText(o)&&/^[ \t\r\n]*$/.test(o.data)&&!1===Nl(r,o))||(n=t,Bo.isElement(n)&&"A"===n.nodeName&&n.hasAttribute("name"))||Sl(t);var n,r,o},Sl=Bo.hasAttribute("data-mce-bookmark"),kl=Bo.hasAttribute("data-mce-bogus"),Tl=Bo.hasAttributeValue("data-mce-bogus","all"),Al=function(e){return function(e){var t,n,r=0;if(El(e,e))return!1;if(!(n=e.firstChild))return!0;t=new oo(n,e);do{if(Tl(n))n=t.next(!0);else if(kl(n))n=t.next();else if(Bo.isBr(n))r++,n=t.next();else{if(El(e,n))return!1;n=t.next()}}while(n);return r<=1}(e.dom())},Rl=Sr("block","position"),_l=Sr("from","to"),Dl=function(e,t){var n=or.fromDom(e),r=or.fromDom(t.container());return Cl(n,r).map(function(e){return Rl(e,t)})},Bl=function(o,i,e){var t=Dl(o,vu.fromRangeStart(e)),n=t.bind(function(e){return Zs.fromPosition(i,o,e.position()).bind(function(e){return Dl(o,e).map(function(e){return t=o,n=i,r=e,Bo.isBr(r.position().getNode())&&!1===Al(r.block())?Zs.positionIn(!1,r.block().dom()).bind(function(e){return e.isEqual(r.position())?Zs.fromPosition(n,t,e).bind(function(e){return Dl(t,e)}):A.some(r)}).getOr(r):r;var t,n,r})})});return Wa([t,n],_l).filter(function(e){return!1===Pr((r=e).from().block(),r.to().block())&&Mr((n=e).from().block()).bind(function(t){return Mr(n.to().block()).filter(function(e){return Pr(t,e)})}).isSome()&&(t=e,!1===Bo.isContentEditableFalse(t.from().block())&&!1===Bo.isContentEditableFalse(t.to().block()));var t,n,r})},Ol=function(e,t,n){return n.collapsed?Bl(e,t,n):A.none()},Pl=function(e,t,n){return Lr(t,e)?function(e,t){for(var n=P(t)?t:q(!1),r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,a=or.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(e,function(e){return n(e)||Pr(e,t)}).slice(0,-1):[]},Ll=function(e,t){return Pl(e,t,q(!1))},Il=Ll,Ml=function(e,t){return[e].concat(Ll(e,t))},Fl=function(e){var t,n=(t=Hr(e),X(t,lo).fold(function(){return t},function(e){return t.slice(0,e)}));return F(n,Di),n},zl=function(e,t){var n=Ml(t,e);return V(n.reverse(),Al).each(Di)},Ul=function(e,t,n,r){if(Al(n))return Kc(n),Zs.firstPositionIn(n.dom());0===z(Ur(r),function(e){return!Al(e)}).length&&Al(t)&&Si(r,or.fromTag("br"));var o=Zs.prevPosition(n.dom(),vu.before(r.dom()));return F(Fl(t),function(e){Si(r,e)}),zl(e,t),o},Vl=function(e,t,n){if(Al(n))return Di(n),Al(t)&&Kc(t),Zs.firstPositionIn(t.dom());var r=Zs.lastPositionIn(n.dom());return F(Fl(t),function(e){Ai(n,e)}),zl(e,t),r},Hl=function(e,t){return Lr(t,e)?(n=Ml(e,t),A.from(n[n.length-1])):A.none();var n},jl=function(e,t){Zs.positionIn(e,t.dom()).map(function(e){return e.getNode()}).map(or.fromDom).filter(mo).each(Di)},ql=function(e,t,n){return jl(!0,t),jl(!1,n),Hl(t,n).fold(d(Vl,e,t,n),d(Ul,e,t,n))},$l=function(e,t,n,r){return t?ql(e,r,n):ql(e,n,r)},Wl=function(t,n){var e,r=or.fromDom(t.getBody());return(e=Ol(r.dom(),n,t.selection.getRng()).bind(function(e){return $l(r,n,e.from().block(),e.to().block())})).each(function(e){t.selection.setRng(e.toRange())}),e.isSome()},Kl=function(e,t){var n=or.fromDom(t),r=d(Pr,e);return Wi(n,yo,r).isSome()},Xl=function(e,t){var n,r,o=Zs.prevPosition(e.dom(),vu.fromRangeStart(t)).isNone(),i=Zs.nextPosition(e.dom(),vu.fromRangeEnd(t)).isNone();return!(Kl(n=e,(r=t).startContainer)||Kl(n,r.endContainer))&&o&&i},Yl=function(e){var n,r,o,t,i=or.fromDom(e.getBody()),a=e.selection.getRng();return Xl(i,a)?((t=e).setContent(""),t.selection.setCursorLocation(),!0):(n=i,r=e.selection,o=r.getRng(),Wa([Cl(n,or.fromDom(o.startContainer)),Cl(n,or.fromDom(o.endContainer))],function(e,t){return!1===Pr(e,t)&&(o.deleteContents(),$l(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1))},Gl=function(e,t){return!e.selection.isCollapsed()&&Yl(e)},Jl=function(a){if(!D(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};return F(a,function(e,r){var t=dr(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!D(i))throw new Error("case arguments must be an array");u.push(o),n[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var n=new Array(e),t=0;t<n.length;t++)n[t]=arguments[t];return{fold:function(){if(arguments.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+arguments.length);return arguments[r].apply(null,n)},match:function(e){var t=dr(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(","));if(!Q(u,function(e){return M(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+u.join(", "));return e[o].apply(null,n)},log:function(e){H.console.log(e,{constructors:u,constructor:o,params:n})}}}}),n},Ql=function(e){return Es(e).exists(mo)},Zl=function(e,t,n){var r=z(Ml(or.fromDom(n.container()),t),lo),o=te(r).getOr(t);return Zs.fromPosition(e,o.dom(),n).filter(Ql)},ef=function(e,t){return Es(t).exists(mo)||Zl(!0,e,t).isSome()},tf=function(e,t){return(n=t,A.from(n.getNode(!0)).map(or.fromDom)).exists(mo)||Zl(!1,e,t).isSome();var n},nf=d(Zl,!1),rf=d(Zl,!0),of=(Qc="\xa0",function(e){return Qc===e}),af=function(e){return/^[\r\n\t ]$/.test(e)},uf=function(e){return!af(e)&&!of(e)},sf=function(n,r,o){return A.from(o.container()).filter(Bo.isText).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})},cf=d(sf,!0,af),lf=d(sf,!1,af),ff=function(e){var t=e.container();return Bo.isText(t)&&0===t.data.length},df=function(e,t){var n=hs(e,t);return Bo.isContentEditableFalse(n)&&!Bo.isBogusAll(n)},mf=d(df,0),gf=d(df,-1),pf=function(e,t){return Bo.isTable(hs(e,t))},hf=d(pf,0),vf=d(pf,-1),bf=Jl([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),yf=function(e,t,n,r){var o=r.getNode(!1===t);return Cl(or.fromDom(e),or.fromDom(n.getNode())).map(function(e){return Al(e)?bf.remove(e.dom()):bf.moveToElement(o)}).orThunk(function(){return A.some(bf.moveToElement(o))})},Cf=function(u,s,c){return Zs.fromPosition(s,u,c).bind(function(e){return a=e.getNode(),yo(or.fromDom(a))||ho(or.fromDom(a))?A.none():(t=u,o=e,i=function(e){return fo(or.fromDom(e))&&!ps(r,o,t)},ws(!(n=s),r=c).fold(function(){return ws(n,o).fold(q(!1),i)},i)?A.none():s&&Bo.isContentEditableFalse(e.getNode())?yf(u,s,c,e):!1===s&&Bo.isContentEditableFalse(e.getNode(!0))?yf(u,s,c,e):s&&gf(c)?A.some(bf.moveToPosition(e)):!1===s&&mf(c)?A.some(bf.moveToPosition(e)):A.none());var t,n,r,o,i,a})},xf=function(r,e,o){return i=e,a=o.getNode(!1===i),u=i?"after":"before",Bo.isElement(a)&&a.getAttribute("data-mce-caret")===u?(t=e,n=o.getNode(!1===e),t&&Bo.isContentEditableFalse(n.nextSibling)?A.some(bf.moveToElement(n.nextSibling)):!1===t&&Bo.isContentEditableFalse(n.previousSibling)?A.some(bf.moveToElement(n.previousSibling)):A.none()).fold(function(){return Cf(r,e,o)},A.some):Cf(r,e,o).bind(function(e){return t=r,n=o,e.fold(function(e){return A.some(bf.remove(e))},function(e){return A.some(bf.moveToElement(e))},function(e){return ps(n,e,t)?A.none():A.some(bf.moveToPosition(e))});var t,n});var t,n,i,a,u},wf=function(e,t,n){if(0!==n){var r,o,i,a=e.data.slice(t,t+n),u=t+n>=e.data.length,s=0===t;e.replaceData(t,n,(o=s,i=u,U((r=a).split(""),function(e,t){return-1!==" \f\n\r\t\x0B".indexOf(t)||"\xa0"===t?e.previousCharIsSpace||""===e.str&&o||e.str.length===r.length-1&&i?{previousCharIsSpace:!1,str:e.str+"\xa0"}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str))}},Nf=function(e,t){var n,r=e.data.slice(t),o=r.length-(n=r,n.replace(/^\s+/g,"")).length;return wf(e,t,o)},Ef=function(e,t){return r=e,o=(n=t).container(),i=n.offset(),!1===vu.isTextPosition(n)&&o===r.parentNode&&i>vu.before(r).offset()?vu(t.container(),t.offset()-1):t;var n,r,o,i},Sf=function(e){return Oa(e.previousSibling)?A.some((t=e.previousSibling,Bo.isText(t)?vu(t,t.data.length):vu.after(t))):e.previousSibling?Zs.lastPositionIn(e.previousSibling):A.none();var t},kf=function(e){return Oa(e.nextSibling)?A.some((t=e.nextSibling,Bo.isText(t)?vu(t,0):vu.before(t))):e.nextSibling?Zs.firstPositionIn(e.nextSibling):A.none();var t},Tf=function(r,o){return Sf(o).orThunk(function(){return kf(o)}).orThunk(function(){return e=r,t=o,n=vu.before(t.previousSibling?t.previousSibling:t.parentNode),Zs.prevPosition(e,n).fold(function(){return Zs.nextPosition(e,vu.after(t))},A.some);var e,t,n})},Af=function(n,r){return kf(r).orThunk(function(){return Sf(r)}).orThunk(function(){return e=n,t=r,Zs.nextPosition(e,vu.after(t)).fold(function(){return Zs.prevPosition(e,vu.before(t))},A.some);var e,t})},Rf=function(e,t,n){return(r=e,o=t,i=n,r?Af(o,i):Tf(o,i)).map(d(Ef,n));var r,o,i},_f=function(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})},Df=function(e,t){return t&&e.schema.getBlockElements().hasOwnProperty(sr(t))},Bf=function(e){if(Al(e)){var t=or.fromHtml('<br data-mce-bogus="1">');return _i(e),Ai(e,t),A.some(vu.before(t.dom()))}return A.none()},Of=function(e,t,l){var n=Fr(e).filter(function(e){return Bo.isText(e.dom())}),r=zr(e).filter(function(e){return Bo.isText(e.dom())});return Di(e),Wa([n,r,t],function(e,t,n){var r,o,i,a,u=e.dom(),s=t.dom(),c=u.data.length;return o=s,i=l,a=Yn((r=u).data).length,r.appendData(o.data),Di(or.fromDom(o)),i&&Nf(r,a),n.container()===s?vu(u,c):n}).orThunk(function(){return l&&(n.each(function(e){return t=e.dom(),n=e.dom().length,r=t.data.slice(0,n),o=r.length-Yn(r).length,wf(t,n-o,o);var t,n,r,o}),r.each(function(e){return Nf(e.dom(),0)})),t})},Pf=function(e,t){return n=e.schema.getTextInlineElements(),r=sr(t),mr.call(n,r);var n,r},Lf=function(t,n,e,r){void 0===r&&(r=!0);var o,i=Rf(n,t.getBody(),e.dom()),a=Wi(e,d(Df,t),(o=t.getBody(),function(e){return e.dom()===o})),u=Of(e,i,Pf(t,e));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):a.bind(Bf).fold(function(){r&&_f(t,n,u)},function(e){r&&_f(t,n,A.some(e))})},If=function(a,u){var e,t,n,r,o,i;return(e=a.getBody(),t=u,n=a.selection.getRng(),r=xs(t?1:-1,e,n),o=vu.fromRangeStart(r),i=or.fromDom(e),!1===t&&gf(o)?A.some(bf.remove(o.getNode(!0))):t&&mf(o)?A.some(bf.remove(o.getNode())):!1===t&&mf(o)&&tf(i,o)?nf(i,o).map(function(e){return bf.remove(e.getNode())}):t&&gf(o)&&ef(i,o)?rf(i,o).map(function(e){return bf.remove(e.getNode())}):xf(e,t,o)).map(function(e){return e.fold((o=a,i=u,function(e){return o._selectionOverrides.hideFakeCaret(),Lf(o,i,or.fromDom(e)),!0}),(n=a,r=u,function(e){var t=r?vu.before(e):vu.after(e);return n.selection.setRng(t.toRange()),!0}),(t=a,function(e){return t.selection.setRng(e.toRange()),!0}));var t,n,r,o,i}).getOr(!1)},Mf=function(e,t){var n,r=e.selection.getNode();return!!Bo.isContentEditableFalse(r)&&(n=or.fromDom(e.getBody()),F(ji(n,".mce-offscreen-selection"),Di),Lf(e,t,or.fromDom(e.selection.getNode())),xl(e),!0)},Ff=function(e,t){return e.selection.isCollapsed()?If(e,t):Mf(e,t)},zf=function(e){var t,n=function(e,t){for(;t&&t!==e;){if(Bo.isContentEditableTrue(t)||Bo.isContentEditableFalse(t))return t;t=t.parentNode}return null}(e.getBody(),e.selection.getNode());return Bo.isContentEditableTrue(n)&&e.dom.isBlock(n)&&e.dom.isEmpty(n)&&(t=e.dom.create("br",{"data-mce-bogus":"1"}),e.dom.setHTML(n,""),n.appendChild(t),e.selection.setRng(vu.before(t).toRange())),!0},Uf=Bo.isText,Vf=function(e){return Uf(e)&&e.data[0]===fa},Hf=function(e){return Uf(e)&&e.data[e.data.length-1]===fa},jf=function(e){return e.ownerDocument.createTextNode(fa)},qf=function(e,t){return e?function(e){if(Uf(e.previousSibling))return Hf(e.previousSibling)||e.previousSibling.appendData(fa),e.previousSibling;if(Uf(e))return Vf(e)||e.insertData(0,fa),e;var t=jf(e);return e.parentNode.insertBefore(t,e),t}(t):function(e){if(Uf(e.nextSibling))return Vf(e.nextSibling)||e.nextSibling.insertData(0,fa),e.nextSibling;if(Uf(e))return Hf(e)||e.appendData(fa),e;var t=jf(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t}(t)},$f=d(qf,!0),Wf=d(qf,!1),Kf=function(e,t){return Bo.isText(e.container())?qf(t,e.container()):qf(t,e.getNode())},Xf=function(e,t){var n=t.get();return n&&e.container()===n&&ha(n)},Yf=function(n,e){return e.fold(function(e){Ju.remove(n.get());var t=$f(e);return n.set(t),A.some(vu(t,t.length-1))},function(e){return Zs.firstPositionIn(e).map(function(e){if(Xf(e,n))return vu(n.get(),1);Ju.remove(n.get());var t=Kf(e,!0);return n.set(t),vu(t,1)})},function(e){return Zs.lastPositionIn(e).map(function(e){if(Xf(e,n))return vu(n.get(),n.get().length-1);Ju.remove(n.get());var t=Kf(e,!1);return n.set(t),vu(t,t.length-1)})},function(e){Ju.remove(n.get());var t=Wf(e);return n.set(t),A.some(vu(t,1))})},Gf=function(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}return A.none()},Jf=Jl([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element"]}]),Qf=function(e,t){var n=gs(t,e);return n||e},Zf=function(e,t,n){var r=yl.normalizeForwards(n),o=Qf(t,r.container());return yl.findRootInline(e,o,r).fold(function(){return Zs.nextPosition(o,r).bind(d(yl.findRootInline,e,o)).map(function(e){return Jf.before(e)})},A.none)},ed=function(e,t){return null===Vu(e,t)},td=function(e,t,n){return yl.findRootInline(e,t,n).filter(d(ed,t))},nd=function(e,t,n){var r=yl.normalizeBackwards(n);return td(e,t,r).bind(function(e){return Zs.prevPosition(e,r).isNone()?A.some(Jf.start(e)):A.none()})},rd=function(e,t,n){var r=yl.normalizeForwards(n);return td(e,t,r).bind(function(e){return Zs.nextPosition(e,r).isNone()?A.some(Jf.end(e)):A.none()})},od=function(e,t,n){var r=yl.normalizeBackwards(n),o=Qf(t,r.container());return yl.findRootInline(e,o,r).fold(function(){return Zs.prevPosition(o,r).bind(d(yl.findRootInline,e,o)).map(function(e){return Jf.after(e)})},A.none)},id=function(e){return!1===yl.isRtl(ud(e))},ad=function(e,t,n){return Gf([Zf,nd,rd,od],[e,t,n]).filter(id)},ud=function(e){return e.fold($,$,$,$)},sd=function(e){return e.fold(q("before"),q("start"),q("end"),q("after"))},cd=function(e){return e.fold(Jf.before,Jf.before,Jf.after,Jf.after)},ld=function(n,e,r,t,o,i){return Wa([yl.findRootInline(e,r,t),yl.findRootInline(e,r,o)],function(e,t){return e!==t&&yl.hasSameParentBlock(r,e,t)?Jf.after(n?e:t):i}).getOr(i)},fd=function(e,r){return e.fold(q(!0),function(e){return n=r,!(sd(t=e)===sd(n)&&ud(t)===ud(n));var t,n})},dd=function(e,t){return e?t.fold(j(A.some,Jf.start),A.none,j(A.some,Jf.after),A.none):t.fold(A.none,j(A.some,Jf.before),A.none,j(A.some,Jf.end))},md=function(a,u,s,c){var e=yl.normalizePosition(a,c),l=ad(u,s,e);return ad(u,s,e).bind(d(dd,a)).orThunk(function(){return t=a,n=u,r=s,o=l,e=c,i=yl.normalizePosition(t,e),Zs.fromPosition(t,r,i).map(d(yl.normalizePosition,t)).fold(function(){return o.map(cd)},function(e){return ad(n,r,e).map(d(ld,t,n,r,i,e)).filter(d(fd,o))}).filter(id);var t,n,r,o,e,i})},gd=ad,pd=md,hd=(d(md,!1),d(md,!0),cd),vd=function(e){return e.fold(Jf.start,Jf.start,Jf.end,Jf.end)},bd=function(e){return P(e.selection.getSel().modify)},yd=function(e,t,n){var r=e?1:-1;return t.setRng(vu(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0},Cd=function(e,t){var n=t.selection.getRng(),r=e?vu.fromRangeEnd(n):vu.fromRangeStart(n);return!!bd(t)&&(e&&ya(r)?yd(!0,t.selection,r):!(e||!Ca(r))&&yd(!1,t.selection,r))},xd=function(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)},wd=function(e){return!1!==e.settings.inline_boundaries},Nd=function(e,t){e?t.setAttribute("data-mce-selected","inline-boundary"):t.removeAttribute("data-mce-selected")},Ed=function(t,e,n){return Yf(e,n).map(function(e){return xd(t,e),n})},Sd=function(e,t,n){return function(){return!!wd(t)&&Cd(e,t)}},kd={move:function(a,u,s){return function(){return!!wd(a)&&(t=a,n=u,e=s,r=t.getBody(),o=vu.fromRangeStart(t.selection.getRng()),i=d(yl.isInlineTarget,t),pd(e,i,r,o).bind(function(e){return Ed(t,n,e)})).isSome();var t,n,e,r,o,i}},moveNextWord:d(Sd,!0),movePrevWord:d(Sd,!1),setupSelectedState:function(a){var u=Pi(null),s=d(yl.isInlineTarget,a);return a.on("NodeChange",function(e){var t,n,r,o,i;wd(a)&&(t=s,n=a.dom,r=e.parents,o=z(n.select('*[data-mce-selected="inline-boundary"]'),t),i=z(r,t),F(ee(o,i),d(Nd,!1)),F(ee(i,o),d(Nd,!0)),function(e,t){if(e.selection.isCollapsed()&&!0!==e.composing&&t.get()){var n=vu.fromRangeStart(e.selection.getRng());vu.isTextPosition(n)&&!1===yl.isAtZwsp(n)&&(xd(e,Ju.removeAndReposition(t.get(),n)),t.set(null))}}(a,u),function(n,r,o,e){if(r.selection.isCollapsed()){var t=z(e,n);F(t,function(e){var t=vu.fromRangeStart(r.selection.getRng());gd(n,r.getBody(),t).bind(function(e){return Ed(r,o,e)})})}}(s,a,u,e.parents))}),u},setCaretPosition:xd},Td=function(t,n){return function(e){return Yf(n,e).map(function(e){return kd.setCaretPosition(t,e),!0}).getOr(!1)}},Ad=function(r,o,i,a){var u=r.getBody(),s=d(yl.isInlineTarget,r);r.undoManager.ignore(function(){var e,t,n;r.selection.setRng((e=i,t=a,(n=H.document.createRange()).setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n)),r.execCommand("Delete"),gd(s,u,vu.fromRangeStart(r.selection.getRng())).map(vd).map(Td(r,o))}),r.nodeChanged()},Rd=function(n,r,i,o){var e,t,a=(e=n.getBody(),t=o.container(),gs(t,e)||e),u=d(yl.isInlineTarget,n),s=gd(u,a,o);return s.bind(function(e){return i?e.fold(q(A.some(vd(e))),A.none,q(A.some(hd(e))),A.none):e.fold(A.none,q(A.some(hd(e))),A.none,q(A.some(vd(e))))}).map(Td(n,r)).getOrThunk(function(){var t=Zs.navigate(i,a,o),e=t.bind(function(e){return gd(u,a,e)});return s.isSome()&&e.isSome()?yl.findRootInline(u,a,o).map(function(e){return o=e,!!Wa([Zs.firstPositionIn(o),Zs.lastPositionIn(o)],function(e,t){var n=yl.normalizePosition(!0,e),r=yl.normalizePosition(!1,t);return Zs.nextPosition(o,n).map(function(e){return e.isEqual(r)}).getOr(!0)}).getOr(!0)&&(Lf(n,i,or.fromDom(e)),!0);var o}).getOr(!1):e.bind(function(e){return t.map(function(e){return i?Ad(n,r,o,e):Ad(n,r,e,o),!0})}).getOr(!1)})},_d=function(e,t,n){if(e.selection.isCollapsed()&&!1!==e.settings.inline_boundaries){var r=vu.fromRangeStart(e.selection.getRng());return Rd(e,t,n,r)}return!1},Dd=Sr("start","end"),Bd=Sr("rng","table","cells"),Od=Jl([{removeTable:["element"]},{emptyCells:["cells"]}]),Pd=function(e,t){return Gi(or.fromDom(e),"td,th",t)},Ld=function(e,t){return Xi(e,"table",t)},Id=function(e){return!1===Pr(e.start(),e.end())},Md=function(e,n){return Ld(e.start(),n).bind(function(t){return Ld(e.end(),n).bind(function(e){return Pr(t,e)?A.some(t):A.none()})})},Fd=function(e){return ji(e,"td,th")},zd=function(r,e){var t=Pd(e.startContainer,r),n=Pd(e.endContainer,r);return e.collapsed?A.none():Wa([t,n],Dd).fold(function(){return t.fold(function(){return n.bind(function(t){return Ld(t,r).bind(function(e){return te(Fd(e)).map(function(e){return Dd(e,t)})})})},function(t){return Ld(t,r).bind(function(e){return ne(Fd(e)).map(function(e){return Dd(t,e)})})})},function(e){return Ud(r,e)?A.none():(n=r,Ld((t=e).start(),n).bind(function(e){return ne(Fd(e)).map(function(e){return Dd(t.start(),e)})}));var t,n})},Ud=function(e,t){return Md(t,e).isSome()},Vd=function(e,t){var n,r,o,i,a=d(Pr,e);return(n=t,r=a,o=Pd(n.startContainer,r),i=Pd(n.endContainer,r),Wa([o,i],Dd).filter(Id).filter(function(e){return Ud(r,e)}).orThunk(function(){return zd(r,n)})).bind(function(e){return Md(t=e,a).map(function(e){return Bd(t,e,Fd(e))});var t})},Hd=function(e,t){return X(e,function(e){return Pr(e,t)})},jd=function(n){return(r=n,Wa([Hd(r.cells(),r.rng().start()),Hd(r.cells(),r.rng().end())],function(e,t){return r.cells().slice(e,t+1)})).map(function(e){var t=n.cells();return e.length===t.length?Od.removeTable(n.table()):Od.emptyCells(e)});var r},qd=function(e,t){return Vd(e,t).bind(jd)},$d=function(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t},Wd=$d,Kd=function(e){return J(e,function(e){var t=Ha(e);return t?[or.fromDom(t)]:[]})},Xd=function(e){return 1<$d(e).length},Yd=function(e){return z(Kd(e),yo)},Gd=function(e){return ji(e,"td[data-mce-selected],th[data-mce-selected]")},Jd=function(e,t){var n=Gd(t),r=Yd(e);return 0<n.length?n:r},Qd=Jd,Zd=function(e){return Jd(Wd(e.selection.getSel()),or.fromDom(e.getBody()))},em=function(e,t){return F(t,Kc),e.selection.setCursorLocation(t[0].dom(),0),!0},tm=function(e,t){return Lf(e,!1,t),!0},nm=function(n,e,r,t){return om(e,t).fold(function(){return t=n,qd(e,r).map(function(e){return e.fold(d(tm,t),d(em,t))});var t},function(e){return im(n,e)}).getOr(!1)},rm=function(e,t){return V(Ml(t,e),yo)},om=function(e,t){return V(Ml(t,e),function(e){return"caption"===sr(e)})},im=function(e,t){return Kc(t),e.selection.setCursorLocation(t.dom(),0),A.some(!0)},am=function(u,s,c,l,f){return Zs.navigate(c,u.getBody(),f).bind(function(e){return r=l,o=c,i=f,a=e,Zs.firstPositionIn(r.dom()).bind(function(t){return Zs.lastPositionIn(r.dom()).map(function(e){return o?i.isEqual(t)&&a.isEqual(e):i.isEqual(e)&&a.isEqual(t)})}).getOr(!0)?im(u,l):(t=l,n=e,om(s,or.fromDom(n.getNode())).map(function(e){return!1===Pr(e,t)}));var t,n,r,o,i,a}).or(A.some(!0))},um=function(a,u,s,e){var c=vu.fromRangeStart(a.selection.getRng());return rm(s,e).bind(function(e){return Al(e)?im(a,e):(t=a,n=s,r=u,o=e,i=c,Zs.navigate(r,t.getBody(),i).bind(function(e){return rm(n,or.fromDom(e.getNode())).map(function(e){return!1===Pr(e,o)})}));var t,n,r,o,i})},sm=function(a,u,e){var s=or.fromDom(a.getBody());return om(s,e).fold(function(){return um(a,u,s,e)},function(e){return t=a,n=u,r=s,o=e,i=vu.fromRangeStart(t.selection.getRng()),Al(o)?im(t,o):am(t,r,n,o,i);var t,n,r,o,i}).getOr(!1)},cm=function(e,t){var n,r,o,i,a,u=or.fromDom(e.selection.getStart(!0)),s=Zd(e);return e.selection.isCollapsed()&&0===s.length?sm(e,t,u):(n=e,r=u,o=or.fromDom(n.getBody()),i=n.selection.getRng(),0!==(a=Zd(n)).length?em(n,a):nm(n,o,i,r))},lm=mc.isEq,fm=function(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o<r.length;o++)if(!1===r[o].inherit&&e.dom.is(t,r[o].selector))return!0;return!1},dm=function(t,e,n,r){var o=t.dom.getRoot();return e!==o&&(e=t.dom.getParent(e,function(e){return!!fm(t,e,n)||e.parentNode===o||!!pm(t,e,n,r,!0)}),pm(t,e,n,r))},mm=function(e,t,n){return!!lm(t,n.inline)||!!lm(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0)},gm=function(e,t,n,r,o,i){var a,u,s,c=n[r];if(n.onmatch)return n.onmatch(t,n,r);if(c)if("undefined"==typeof c.length){for(a in c)if(c.hasOwnProperty(a)){if(u="attributes"===r?e.getAttrib(t,a):mc.getStyle(e,t,a),o&&!u&&!n.exact)return;if((!o||n.exact)&&!lm(u,mc.normalizeStyleValue(e,mc.replaceVars(c[a],i),a)))return}}else for(s=0;s<c.length;s++)if("attributes"===r?e.getAttrib(t,c[s]):mc.getStyle(e,t,c[s]))return n;return n},pm=function(e,t,n,r,o){var i,a,u,s,c=e.formatter.get(n),l=e.dom;if(c&&t)for(a=0;a<c.length;a++)if(i=c[a],mm(e.dom,t,i)&&gm(l,t,i,"attributes",o,r)&&gm(l,t,i,"styles",o,r)){if(s=i.classes)for(u=0;u<s.length;u++)if(!e.dom.hasClass(t,s[u]))return;return i}},hm={matchNode:pm,matchName:mm,match:function(e,t,n,r){var o;return r?dm(e,r,t,n):(r=e.selection.getNode(),!!dm(e,r,t,n)||!((o=e.selection.getStart())===r||!dm(e,o,t,n)))},matchAll:function(r,o,i){var e,a=[],u={};return e=r.selection.getStart(),r.dom.getParent(e,function(e){var t,n;for(t=0;t<o.length;t++)n=o[t],!u[n]&&pm(r,e,n,i)&&(u[n]=!0,a.push(n))},r.dom.getRoot()),a},canApply:function(e,t){var n,r,o,i,a,u=e.formatter.get(t),s=e.dom;if(u)for(n=e.selection.getStart(),r=mc.getParents(s,n),i=u.length-1;0<=i;i--){if(!(a=u[i].selector)||u[i].defaultBlock)return!0;for(o=r.length-1;0<=o;o--)if(s.is(r[o],a))return!0}return!1},matchesUnInheritedFormatSelector:fm},vm=function(e,t){return e.splitText(t)},bm=function(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t===r&&Bo.isText(t)?0<n&&n<t.nodeValue.length&&(t=(r=vm(t,n)).previousSibling,n<o?(t=r=vm(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(Bo.isText(t)&&0<n&&n<t.nodeValue.length&&(t=vm(t,n),n=0),Bo.isText(r)&&0<o&&o<r.nodeValue.length&&(o=(r=vm(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}},ym=fa,Cm="_mce_caret",xm=function(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==ym||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length},wm=function(e){var t;if(e)for(e=(t=new oo(e,e)).current();e;e=t.next())if(3===e.nodeType)return e;return null},Nm=function(e){var t=or.fromTag("span");return yr(t,{id:Cm,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&Ai(t,or.fromText(ym)),t},Em=function(e,t,n){void 0===n&&(n=!0);var r,o=e.dom,i=e.selection;if(xm(t))Lf(e,!1,or.fromDom(t),n);else{var a=i.getRng(),u=o.getParent(t,o.isBlock),s=((r=wm(t))&&r.nodeValue.charAt(0)===ym&&r.deleteData(0,1),r);a.startContainer===s&&0<a.startOffset&&a.setStart(s,a.startOffset-1),a.endContainer===s&&0<a.endOffset&&a.setEnd(s,a.endOffset-1),o.remove(t,!0),u&&o.isEmpty(u)&&Kc(or.fromDom(u)),i.setRng(a)}},Sm=function(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)Em(e,t,n);else if(!(t=Vu(e.getBody(),o.getStart())))for(;t=r.get(Cm);)Em(e,t,!1)},km=function(e,t,n){var r=e.dom,o=r.getParent(n,d(mc.isTextBlock,e));o&&r.isEmpty(o)?n.parentNode.replaceChild(t,n):(Wc(or.fromDom(n)),r.isEmpty(n)?n.parentNode.replaceChild(t,n):r.insertAfter(t,n))},Tm=function(e,t){return e.appendChild(t),t},Am=function(e,t){var n,r,o=(n=function(e,t){return Tm(e,t.cloneNode(!1))},r=t,function(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n,e)}(e,function(e){r=n(r,e)}),r);return Tm(o,o.ownerDocument.createTextNode(ym))},Rm=function(i){i.on("mouseup keydown",function(e){var t,n,r,o;t=i,n=e.keyCode,r=t.selection,o=t.getBody(),Sm(t,null,!1),8!==n&&46!==n||!r.isCollapsed()||r.getStart().innerHTML!==ym||Sm(t,Vu(o,r.getStart())),37!==n&&39!==n||Sm(t,Vu(o,r.getStart()))})},_m=function(e,t){return e.schema.getTextInlineElements().hasOwnProperty(sr(t))&&!Uu(t.dom())&&!Bo.isBogus(t.dom())},Dm=function(e){return 1===Hr(e).length},Bm=function(e,t,n,r){var o,i,a,u,s=d(_m,t),c=W(z(r,s),function(e){return e.dom()});if(0===c.length)Lf(t,e,n);else{var l=(o=n.dom(),i=c,a=Nm(!1),u=Am(i,a.dom()),Si(or.fromDom(o),a),Di(or.fromDom(o)),vu(u,0));t.selection.setRng(l.toRange())}},Om=function(r,o){var t,e=or.fromDom(r.getBody()),n=or.fromDom(r.selection.getStart()),i=z((t=Ml(n,e),X(t,lo).fold(q(t),function(e){return t.slice(0,e)})),Dm);return ne(i).map(function(e){var t,n=vu.fromRangeStart(r.selection.getRng());return!(!wl(o,n,e.dom())||Uu((t=e).dom())&&xm(t.dom())||(Bm(o,r,e,i),0))}).getOr(!1)},Pm=function(e,t){return!!e.selection.isCollapsed()&&Om(e,t)},Lm=Bo.isContentEditableTrue,Im=Bo.isContentEditableFalse,Mm=function(e,t,n,r,o){return t._selectionOverrides.showCaret(e,n,r,o)},Fm=function(e,t){var n,r;return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?null:((r=(n=t).ownerDocument.createRange()).selectNode(n),r)},zm=function(e,t,n){var r=xs(1,e.getBody(),t),o=vu.fromRangeStart(r),i=o.getNode();if(Im(i))return Mm(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(Im(a))return Mm(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return Im(e)||Lm(e)});return Im(u)?Mm(1,e,u,!1,n):null},Um=function(e,t,n){if(!t||!t.collapsed)return t;var r=zm(e,t,n);return r||t},Vm=function(e,t,n,r,o,i){var a,u,s=Mm(r,e,i.getNode(!o),o,!0);if(t.collapsed){var c=t.cloneRange();o?c.setEnd(s.startContainer,s.startOffset):c.setStart(s.endContainer,s.endOffset),c.deleteContents()}else t.deleteContents();return e.selection.setRng(s),a=e.dom,u=n,Bo.isText(u)&&0===u.data.length&&a.remove(u),!0},Hm=function(e,t){return function(e,t){var n=e.selection.getRng();if(!Bo.isText(n.commonAncestorContainer))return!1;var r=t?pu.Forwards:pu.Backwards,o=Hs(e.getBody()),i=d(Ss,o.next),a=d(Ss,o.prev),u=t?i:a,s=t?mf:gf,c=Ns(r,e.getBody(),n),l=yl.normalizePosition(t,u(c));if(!l)return!1;if(s(l))return Vm(e,n,c.getNode(),r,t,l);var f=u(l);return!!(f&&s(f)&&ks(l,f))&&Vm(e,n,c.getNode(),r,t,f)}(e,t)},jm=function(e,t){e.getDoc().execCommand(t,!1,null)},qm=function(e){Ff(e,!1)||Hm(e,!1)||_d(e,!1)||Wl(e,!1)||cm(e)||Gl(e,!1)||Pm(e,!1)||(jm(e,"Delete"),xl(e))},$m=function(e){Ff(e,!0)||Hm(e,!0)||_d(e,!0)||Wl(e,!0)||cm(e)||Gl(e,!0)||Pm(e,!0)||jm(e,"ForwardDelete")},Wm=function(e,t,n){var r=e.getParam(t,n);if(-1!==r.indexOf("=")){var o=e.getParam(t,"","hash");return o.hasOwnProperty(e.id)?o[e.id]:n}return r},Km=function(e){return e.getParam("iframe_attrs",{})},Xm=function(e){return e.getParam("doctype","<!DOCTYPE html>")},Ym=function(e){return e.getParam("document_base_url","")},Gm=function(e){return Wm(e,"body_id","tinymce")},Jm=function(e){return Wm(e,"body_class","")},Qm=function(e){return e.getParam("content_security_policy","")},Zm=function(e){return e.getParam("br_in_pre",!0)},eg=function(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":t},tg=function(e){return e.getParam("forced_root_block_attrs",{})},ng=function(e){return e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption")},rg=function(e){return e.getParam("no_newline_selector","")},og=function(e){return e.getParam("keep_styles",!0)},ig=function(e){return e.getParam("end_container_on_empty_block",!1)},ag=function(e){return Gt.explode(e.getParam("font_size_style_values",""))},ug=function(e){return Gt.explode(e.getParam("font_size_classes",""))},sg=function(e){return e.getParam("images_dataimg_filter",q(!0),"function")},cg=function(e){return e.getParam("automatic_uploads",!0,"boolean")},lg=function(e){return e.getParam("images_reuse_filename",!1,"boolean")},fg=function(e){return e.getParam("images_replace_blob_uris",!0,"boolean")},dg=function(e){return e.getParam("images_upload_url","","string")},mg=function(e){return e.getParam("images_upload_base_path","","string")},gg=function(e){return e.getParam("images_upload_credentials",!1,"boolean")},pg=function(e){return e.getParam("images_upload_handler",null,"function")},hg=function(e){return e.getParam("content_css_cors",!1,"boolean")},vg=function(o,t,e){var n=function(e){return t=o,n=e.dom(),r=Er(n,t),A.from(r).filter(function(e){return 0<e.length});var t,n,r};return Ki(or.fromDom(e),function(e){return n(e).isSome()},function(e){return Pr(or.fromDom(t),e)}).bind(n)},bg=function(o){return function(r,e){return A.from(e).map(or.fromDom).filter(lr).bind(function(e){return vg(o,r,e.dom()).or((t=o,n=e.dom(),A.from(hi.DOM.getStyle(n,t,!0))));var t,n}).getOr("")}},yg={getFontSize:bg("font-size"),getFontFamily:j(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},bg("font-family")),toPt:function(e,t){return/[0-9.]+px$/.test(e)?(n=72*parseInt(e,10)/96,r=t||0,o=Math.pow(10,r),Math.round(n*o)/o+"pt"):e;var n,r,o}},Cg=function(e){return Zs.firstPositionIn(e.getBody()).map(function(e){var t=e.container();return Bo.isText(t)?t.parentNode:t})},xg=function(o){return A.from(o.selection.getRng()).bind(function(e){var t,n,r=o.getBody();return n=r,(t=e).startContainer===n&&0===t.startOffset?A.none():A.from(o.selection.getStart(!0))})},wg=function(e,t){if(/^[0-9\.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=ag(e),o=ug(e);return o?o[n-1]||t:r[n-1]||t}return t}return t},Ng=function(e,t){return e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset},Eg=function(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)},Sg=function(e,t,n){return Eg(e,t,function(e){return e.nodeName===n})},kg=function(e){return e&&"TABLE"===e.nodeName},Tg=function(e,t,n){for(var r=new oo(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(Bo.isBr(t))return!0},Ag=function(e,t,n,r,o){var i,a,u,s,c,l,f=e.getRoot(),d=e.schema.getNonEmptyElements();if(u=e.getParent(o.parentNode,e.isBlock)||f,r&&Bo.isBr(o)&&t&&e.isEmpty(u))return A.some(gu(o.parentNode,e.nodeIndex(o)));for(i=new oo(o,u);s=i[r?"prev":"next"]();){if("false"===e.getContentEditableParent(s)||(l=f,va(c=s)&&!1===Eg(c,l,Uu)))return A.none();if(Bo.isText(s)&&0<s.nodeValue.length)return!1===Sg(s,f,"A")?A.some(gu(s,r?s.nodeValue.length:0)):A.none();if(e.isBlock(s)||d[s.nodeName.toLowerCase()])return A.none();a=s}return n&&a?A.some(gu(a,0)):A.none()},Rg=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=e.getRoot(),p=!1;if(o=r[(n?"start":"end")+"Container"],i=r[(n?"start":"end")+"Offset"],l=Bo.isElement(o)&&i===o.childNodes.length,s=e.schema.getNonEmptyElements(),c=n,va(o))return A.none();if(Bo.isElement(o)&&i>o.childNodes.length-1&&(c=!1),Bo.isDocument(o)&&(o=g,i=0),o===g){if(c&&(u=o.childNodes[0<i?i-1:0])){if(va(u))return A.none();if(s[u.nodeName]||kg(u))return A.none()}if(o.hasChildNodes()){if(i=Math.min(!c&&0<i?i-1:i,o.childNodes.length-1),o=o.childNodes[i],i=Bo.isText(o)&&l?o.data.length:0,!t&&o===g.lastChild&&kg(o))return A.none();if(function(e,t){for(;t&&t!==e;){if(Bo.isContentEditableFalse(t))return!0;t=t.parentNode}return!1}(g,o)||va(o))return A.none();if(o.hasChildNodes()&&!1===kg(o)){a=new oo(u=o,g);do{if(Bo.isContentEditableFalse(u)||va(u)){p=!1;break}if(Bo.isText(u)&&0<u.nodeValue.length){i=c?0:u.nodeValue.length,o=u,p=!0;break}if(s[u.nodeName.toLowerCase()]&&(!(f=u)||!/^(TD|TH|CAPTION)$/.test(f.nodeName))){i=e.nodeIndex(u),o=u.parentNode,c||i++,p=!0;break}}while(u=c?a.next():a.prev())}}}return t&&(Bo.isText(o)&&0===i&&Ag(e,l,t,!0,o).each(function(e){o=e.container(),i=e.offset(),p=!0}),Bo.isElement(o)&&((u=o.childNodes[i])||(u=o.childNodes[i-1]),!u||!Bo.isBr(u)||(m="A",(d=u).previousSibling&&d.previousSibling.nodeName===m)||Tg(e,u,!1)||Tg(e,u,!0)||Ag(e,l,t,!0,u).each(function(e){o=e.container(),i=e.offset(),p=!0}))),c&&!t&&Bo.isText(o)&&i===o.nodeValue.length&&Ag(e,l,t,!1,o).each(function(e){o=e.container(),i=e.offset(),p=!0}),p?A.some(gu(o,i)):A.none()},_g=function(e,t){var n=t.collapsed,r=t.cloneRange(),o=gu.fromRangeStart(t);return Rg(e,n,!0,r).each(function(e){n&&gu.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||Rg(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),Ng(t,r)?A.none():A.some(r)},Dg=function(e,t,n){var r=e.create("span",{}," ");n.parentNode.insertBefore(r,n),t.scrollIntoView(r),e.remove(r)},Bg=function(e,t,n,r){var o=e.createRng();r?(o.setStartBefore(n),o.setEndBefore(n)):(o.setStartAfter(n),o.setEndAfter(n)),t.setRng(o)},Og=function(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();_g(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u=a.startOffset,s=a.startContainer;if(1===s.nodeType&&s.hasChildNodes()){var c=u>s.childNodes.length-1;s=s.childNodes[Math.min(u,s.childNodes.length-1)]||s,u=c&&3===s.nodeType?s.nodeValue.length:0}var l=i.getParent(s,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",m=t&&t.ctrlKey;"LI"!==d||m||(l=f),s&&3===s.nodeType&&u>=s.nodeValue.length&&(function(e,t,n){for(var r,o=new oo(t,n),i=e.getNonEmptyElements();r=o.next();)if(i[r.nodeName.toLowerCase()]||0<r.length)return!0}(e.schema,s,l)||(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0)),n=i.create("br"),Au(i,a,n),Dg(i,o,n),Bg(i,o,n,r),e.undoManager.add()},Pg=function(e,t){var n=or.fromTag("br");Si(or.fromDom(t),n),e.undoManager.add()},Lg=function(e,t){Ig(e.getBody(),t)||ki(or.fromDom(t),or.fromTag("br"));var n=or.fromTag("br");ki(or.fromDom(t),n),Dg(e.dom,e.selection,n.dom()),Bg(e.dom,e.selection,n.dom(),!1),e.undoManager.add()},Ig=function(e,t){return n=vu.after(t),!!Bo.isBr(n.getNode())||Zs.nextPosition(e,vu.after(t)).map(function(e){return Bo.isBr(e.getNode())}).getOr(!1);var n},Mg=function(e){return e&&"A"===e.nodeName&&"href"in e},Fg=function(e){return e.fold(q(!1),Mg,Mg,q(!1))},zg=function(e,t){t.fold(o,d(Pg,e),d(Lg,e),o)},Ug=function(e,t){var n,r,o,i=(n=e,r=d(yl.isInlineTarget,n),o=vu.fromRangeStart(n.selection.getRng()),gd(r,n.getBody(),o).filter(Fg));i.isSome()?i.each(d(zg,e)):Og(e,t)},Vg=(Jl([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Jl([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Sr("start","soffset","finish","foffset")),Hg=nr.detect().browser,jg=function(e,t){var n=fr(t)?Rc(t).length:Hr(t).length+1;return n<e?n:e<0?0:e},qg=function(e){return Vg(e.start(),jg(e.soffset(),e.start()),e.finish(),jg(e.foffset(),e.finish()))},$g=function(e,t){return Lr(e,t)||Pr(e,t)},Wg=function(t){return function(e){return $g(t,e.start())&&$g(t,e.finish())}},Kg=function(e){return!0===e.inline||Hg.isIE()},Xg=function(e){return Vg(or.fromDom(e.startContainer),e.startOffset,or.fromDom(e.endContainer),e.endOffset)},Yg=function(e){var t=e.getSelection();return(t&&0!==t.rangeCount?A.from(t.getRangeAt(0)):A.none()).map(Xg)},Gg=function(e){var t,n=(t=e.dom().ownerDocument.defaultView,or.fromDom(t));return Yg(n.dom()).filter(Wg(e))},Jg=function(e,t){return A.from(t).filter(Wg(e)).map(qg)},Qg=function(e){var t=H.document.createRange();try{return t.setStart(e.start().dom(),e.soffset()),t.setEnd(e.finish().dom(),e.foffset()),A.some(t)}catch(n){return A.none()}},Zg=function(e){return(e.bookmark?e.bookmark:A.none()).bind(d(Jg,or.fromDom(e.getBody()))).bind(Qg)},ep=function(e){var t=Kg(e)?Gg(or.fromDom(e.getBody())):A.none();e.bookmark=t.isSome()?t:e.bookmark},tp=function(t){Zg(t).each(function(e){t.selection.setRng(e)})},np=Zg,rp=function(e){return po(e)||ho(e)},op=function(e){return z(W(e.selection.getSelectedBlocks(),or.fromDom),function(e){return!rp(e)&&!Mr(e).map(rp).getOr(!1)})},ip=function(e,t){var n=e.settings,r=e.dom,o=e.selection,i=e.formatter,a=/[a-z%]+$/i.exec(n.indentation)[0],u=parseInt(n.indentation,10),s=e.getParam("indent_use_margin",!1);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||n.forced_root_block||r.getParent(o.getNode(),r.isBlock)||i.apply("div"),F(op(e),function(e){!function(e,t,n,r,o,i){if("false"!==e.getContentEditable(i)){var a=n?"margin":"padding";if(a="TABLE"===i.nodeName?"margin":a,a+="rtl"===e.getStyle(i,"direction",!0)?"Right":"Left","outdent"===t){var u=Math.max(0,parseInt(i.style[a]||0,10)-r);e.setStyle(i,a,u?u+o:"")}else u=parseInt(i.style[a]||0,10)+r+o,e.setStyle(i,a,u)}}(r,t,s,u,a,e.dom())})},ap=Gt.each,up=Gt.extend,sp=Gt.map,cp=Gt.inArray;function lp(s){var o,i,a,t,c={state:{},exec:{},value:{}},n=s.settings;s.on("PreInit",function(){o=s.dom,i=s.selection,n=s.settings,a=s.formatter});var r=function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.state[e])return t(e);try{return s.getDoc().queryCommandState(e)}catch(n){}return!1}},e=function(e,n){n=n||"exec",ap(e,function(t,e){ap(e.toLowerCase().split(","),function(e){c[n][e]=t})})},u=function(e,t,n){e=e.toLowerCase(),c.value[e]=function(){return t.call(n||s)}};up(this,{execCommand:function(t,n,r,e){var o,i,a=!1;if(!s.removed){if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?tp(s):s.focus(),(e=s.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;if(i=t.toLowerCase(),o=c.exec[i])return o(i,n,r),s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(ap(s.plugins,function(e){if(e.execCommand&&e.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(s.theme&&s.theme.execCommand&&s.theme.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=s.getDoc().execCommand(t,n,r)}catch(u){}return!!a&&(s.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},queryCommandState:r,queryCommandValue:function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.value[e])return t(e);try{return s.getDoc().queryCommandValue(e)}catch(n){}}},queryCommandSupported:function(e){if(e=e.toLowerCase(),c.exec[e])return!0;try{return s.getDoc().queryCommandSupported(e)}catch(t){}return!1},addCommands:e,addCommand:function(e,o,i){e=e.toLowerCase(),c.exec[e]=function(e,t,n,r){return o.call(i||s,t,n,r)}},addQueryStateHandler:function(e,t,n){e=e.toLowerCase(),c.state[e]=function(){return t.call(n||s)}},addQueryValueHandler:u,hasCustomCommand:function(e){return e=e.toLowerCase(),!!c.exec[e]}});var l=function(e,t,n){return t===undefined&&(t=!1),n===undefined&&(n=null),s.getDoc().execCommand(e,t,n)},f=function(e){return a.match(e)},d=function(e,t){a.toggle(e,t?{value:t}:undefined),s.nodeChanged()},m=function(e){t=i.getBookmark(e)},g=function(){i.moveToBookmark(t)};e({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){s.undoManager.add()},"Cut,Copy,Paste":function(e){var t,n=s.getDoc();try{l(e)}catch(o){t=!0}if("paste"!==e||n.queryCommandEnabled(e)||(t=!0),t||!n.queryCommandSupported(e)){var r=s.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");me.mac&&(r=r.replace(/Ctrl\+/g,"\u2318+")),s.notificationManager.open({text:r,type:"error"})}},unlink:function(){if(i.isCollapsed()){var e=s.dom.getParent(s.selection.getStart(),"a");e&&s.dom.remove(e,!0)}else a.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),ap("left,center,right,justify".split(","),function(e){t!==e&&a.remove("align"+e)}),"none"!==t&&d("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;l(e),(t=o.getParent(i.getNode(),"ol,ul"))&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(m(),o.split(n,t),g()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){d(e)},"ForeColor,HiliteColor":function(e,t,n){d(e,n)},FontName:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontname",{value:wg(r,o)}),r.nodeChanged()},FontSize:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontsize",{value:wg(r,o)}),r.nodeChanged()},RemoveFormat:function(e){a.remove(e)},mceBlockQuote:function(){d("blockquote")},FormatBlock:function(e,t,n){return d(n||"p")},mceCleanup:function(){var e=i.getBookmark();s.setContent(s.getContent()),i.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||i.getNode();r!==s.getBody()&&(m(),s.dom.remove(r,!0),g())},mceSelectNodeDepth:function(e,t,n){var r=0;o.getParent(i.getNode(),function(e){if(1===e.nodeType&&r++===n)return i.select(e),!1},s.getBody())},mceSelectNode:function(e,t,n){i.select(n)},mceInsertContent:function(e,t,n){ol(s,n)},mceInsertRawHTML:function(e,t,n){i.setContent("tiny_mce_marker");var r=s.getContent();s.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceToggleFormat:function(e,t,n){d(n)},mceSetContent:function(e,t,n){s.setContent(n)},"Indent,Outdent":function(e){ip(s,e)},mceRepaint:function(){},InsertHorizontalRule:function(){s.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){s.hasVisual=!s.hasVisual,s.addVisual()},mceReplaceContent:function(e,t,n){s.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=o.getParent(i.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||a.remove("link"),n.href&&a.apply("link",n,r)},selectAll:function(){var e=o.getParent(i.getStart(),Bo.isContentEditableTrue);if(e){var t=o.createRng();t.selectNodeContents(e),i.setRng(t)}},"delete":function(){qm(s)},forwardDelete:function(){$m(s)},mceNewDocument:function(){s.setContent("")},InsertLineBreak:function(e,t,n){return Ug(s,n),!0}});var p=function(n){return function(){var e=i.isCollapsed()?[o.getParent(i.getNode(),o.isBlock)]:i.getSelectedBlocks(),t=sp(e,function(e){return!!a.matchNode(e,n)});return-1!==cp(t,!0)}};e({JustifyLeft:p("alignleft"),JustifyCenter:p("aligncenter"),JustifyRight:p("alignright"),JustifyFull:p("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return f(e)},mceBlockQuote:function(){return f("blockquote")},Outdent:function(){var e;if(n.inline_styles){if((e=o.getParent(i.getStart(),o.isBlock))&&0<parseInt(e.style.paddingLeft,10))return!0;if((e=o.getParent(i.getEnd(),o.isBlock))&&0<parseInt(e.style.paddingLeft,10))return!0}return r("InsertUnorderedList")||r("InsertOrderedList")||!n.inline_styles&&!!o.getParent(i.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=o.getParent(i.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),e({Undo:function(){s.undoManager.undo()},Redo:function(){s.undoManager.redo()}}),u("FontName",function(){return xg(t=s).fold(function(){return Cg(t).map(function(e){return yg.getFontFamily(t.getBody(),e)}).getOr("")},function(e){return yg.getFontFamily(t.getBody(),e)});var t},this),u("FontSize",function(){return xg(t=s).fold(function(){return Cg(t).map(function(e){return yg.getFontSize(t.getBody(),e)}).getOr("")},function(e){return yg.getFontSize(t.getBody(),e)});var t},this)}var fp=Gt.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend"," "),dp=function(a){var u,s,c=this,l={},f=function(){return!1},d=function(){return!0};u=(a=a||{}).scope||c,s=a.toggleEvent||f;var r=function(e,t,n,r){var o,i,a;if(!1===t&&(t=f),t)for(t={func:t},r&&Gt.extend(t,r),a=(i=e.toLowerCase().split(" ")).length;a--;)e=i[a],(o=l[e])||(o=l[e]=[],s(e,!0)),n?o.unshift(t):o.push(t);return c},m=function(e,t){var n,r,o,i,a;if(e)for(n=(i=e.toLowerCase().split(" ")).length;n--;){if(e=i[n],r=l[e],!e){for(o in l)s(o,!1),delete l[o];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),l[e]=r);else r.length=0;r.length||(s(e,!1),delete l[e])}}else{for(e in l)s(e,!1);l={}}return c};c.fire=function(e,t){var n,r,o,i;if(e=e.toLowerCase(),(t=t||{}).type=e,t.target||(t.target=u),t.preventDefault||(t.preventDefault=function(){t.isDefaultPrevented=d},t.stopPropagation=function(){t.isPropagationStopped=d},t.stopImmediatePropagation=function(){t.isImmediatePropagationStopped=d},t.isDefaultPrevented=f,t.isPropagationStopped=f,t.isImmediatePropagationStopped=f),a.beforeFire&&a.beforeFire(t),n=l[e])for(r=0,o=n.length;r<o;r++){if((i=n[r]).once&&m(e,i.func),t.isImmediatePropagationStopped())return t.stopPropagation(),t;if(!1===i.func.call(u,t))return t.preventDefault(),t}return t},c.on=r,c.off=m,c.once=function(e,t,n){return r(e,t,n,{once:!0})},c.has=function(e){return e=e.toLowerCase(),!(!l[e]||0===l[e].length)}};dp.isNative=function(e){return!!fp[e.toLowerCase()]};var mp,gp=function(n){return n._eventDispatcher||(n._eventDispatcher=new dp({scope:n,toggleEvent:function(e,t){dp.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher},pp={fire:function(e,t,n){if(this.removed&&"remove"!==e&&"detach"!==e)return t;if(t=gp(this).fire(e,t,n),!1!==n&&this.parent)for(var r=this.parent();r&&!t.isPropagationStopped();)r.fire(e,t,!1),r=r.parent();return t},on:function(e,t,n){return gp(this).on(e,t,n)},off:function(e,t){return gp(this).off(e,t)},once:function(e,t){return gp(this).once(e,t)},hasEventListeners:function(e){return gp(this).has(e)}},hp=function(e,t){return e.fire("PreProcess",t)},vp=function(e,t){return e.fire("PostProcess",t)},bp=function(e){return e.fire("remove")},yp=function(e){return e.fire("detach")},Cp=function(e,t){return e.fire("SwitchMode",{mode:t})},xp=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},wp=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},Np=function(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}},Ep=function(e,t,n){var r,o;Vi(e,t)&&!1===n?(o=t,Ii(r=e)?r.dom().classList.remove(o):Fi(r,o),Ui(r)):n&&zi(e,t)},Sp=function(e,t){Ep(or.fromDom(e.getBody()),"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e.readonly=!0,e.getBody().contentEditable="false"):(e.readonly=!1,e.getBody().contentEditable="true",Np(e,"StyleWithCSS",!1),Np(e,"enableInlineTableEditing",!1),Np(e,"enableObjectResizing",!1),e.focus(),e.nodeChanged())},kp=function(e){return e.readonly?"readonly":"design"},Tp=hi.DOM,Ap=function(e,t){return"selectionchange"===t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=Tp.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()},Rp=function(e,t,n){var r;(r=e).hidden||r.readonly?!0===e.readonly&&n.preventDefault():e.fire(t,n)},_p=function(i,a){var e,t;if(i.delegates||(i.delegates={}),!i.delegates[a]&&!i.removed)if(e=Ap(i,a),i.settings.event_root){if(mp||(mp={},i.editorManager.on("removeEditor",function(){var e;if(!i.editorManager.activeEditor&&mp){for(e in mp)i.dom.unbind(Ap(i,e));mp=null}})),mp[a])return;t=function(e){for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();(o===t||Tp.isChildOf(t,o))&&Rp(n[r],a,e)}},mp[a]=t,Tp.bind(e,a,t)}else t=function(e){Rp(i,a,e)},Tp.bind(e,a,t),i.delegates[a]=t},Dp={bindPendingEventDelegates:function(){var t=this;Gt.each(t._pendingNativeEvents,function(e){_p(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(t?n.initialized?_p(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(Ap(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e,t=this,n=t.getBody(),r=t.dom;if(t.delegates){for(e in t.delegates)t.dom.unbind(Ap(t,e),e,t.delegates[e]);delete t.delegates}!t.inline&&n&&r&&(n.onload=null,r.unbind(t.getWin()),r.unbind(t.getDoc())),r&&(r.unbind(n),r.unbind(t.getContainer()))}},Bp=Dp=Gt.extend({},pp,Dp),Op=Gt.each,Pp=Gt.explode,Lp={f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},Ip=Gt.makeMap("alt,ctrl,shift,meta,access");function Mp(i){var a={},r=[],u=function(e){var t,n,r={};for(n in Op(Pp(e,"+"),function(e){e in Ip?r[e]=!0:/^[0-9]{2,}$/.test(e)?r.keyCode=parseInt(e,10):(r.charCode=e.charCodeAt(0),r.keyCode=Lp[e]||e.toUpperCase().charCodeAt(0))}),t=[r.keyCode],Ip)r[n]?t.push(n):r[n]=!1;return r.id=t.join(","),r.access&&(r.alt=!0,me.mac?r.ctrl=!0:r.shift=!0),r.meta&&(me.mac?r.meta=!0:(r.ctrl=!0,r.meta=!1)),r},s=function(e,t,n,r){var o;return(o=Gt.map(Pp(e,">"),u))[o.length-1]=Gt.extend(o[o.length-1],{func:n,scope:r||i}),Gt.extend(o[0],{desc:i.translate(t),subpatterns:o.slice(1)})},o=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},c=function(e){return e.func?e.func.call(e.scope):null};i.on("keyup keypress keydown",function(t){var e,n;((n=t).altKey||n.ctrlKey||n.metaKey||"keydown"===(e=t).type&&112<=e.keyCode&&e.keyCode<=123)&&!t.isDefaultPrevented()&&(Op(a,function(e){if(o(t,e))return r=e.subpatterns.slice(0),"keydown"===t.type&&c(e),!0}),o(t,r[0])&&(1===r.length&&"keydown"===t.type&&c(r[0]),r.shift()))}),this.add=function(e,n,r,o){var t;return"string"==typeof(t=r)?r=function(){i.execCommand(t,!1,null)}:Gt.isArray(t)&&(r=function(){i.execCommand(t[0],t[1],t[2])}),Op(Pp(Gt.trim(e.toLowerCase())),function(e){var t=s(e,n,r,o);a[t.id]=t}),!0},this.remove=function(e){var t=s(e);return!!a[t.id]&&(delete a[t.id],!0)}}var Fp=function(e){var t=Ir(e).dom();return e.dom()===t.activeElement},zp=function(t){return(e=Ir(t),n=e!==undefined?e.dom():H.document,A.from(n.activeElement).map(or.fromDom)).filter(function(e){return t.dom().contains(e.dom())});var e,n},Up=function(t,e){return(n=e,n.collapsed?A.from(ja(n.startContainer,n.startOffset)).map(or.fromDom):A.none()).bind(function(e){return bo(e)?A.some(e):!1===Lr(t,e)?A.some(t):A.none()});var n},Vp=function(t,e){Up(or.fromDom(t.getBody()),e).bind(function(e){return Zs.firstPositionIn(e.dom())}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})},Hp=function(e){if(e.setActive)try{e.setActive()}catch(t){e.focus()}else e.focus()},jp=function(e){var t,n=e.getBody();return n&&(t=or.fromDom(n),Fp(t)||zp(t).isSome())},qp=function(e){return e.inline?jp(e):(t=e).iframeElement&&Fp(or.fromDom(t.iframeElement));var t},$p=function(e){return e.editorManager.setActive(e)},Wp=function(e,t){e.removed||(t?$p(e):function(t){var e=t.selection,n=t.settings.content_editable,r=t.getBody(),o=e.getRng();t.quirks.refreshContentEditable();var i,a,u=(i=t,a=e.getNode(),i.dom.getParent(a,function(e){return"true"===i.dom.getContentEditable(e)}));if(t.$.contains(r,u))return Hp(u),Vp(t,o),$p(t);t.bookmark!==undefined&&!1===qp(t)&&np(t).each(function(e){t.selection.setRng(e),o=e}),n||(me.opera||Hp(r),t.getWin().focus()),(me.gecko||n)&&(Hp(r),Vp(t,o)),$p(t)}(e))},Kp=qp,Xp=function(e,t){return t.dom()[e]},Yp=function(e,t){return parseInt(Nr(t,e),10)},Gp=d(Xp,"clientWidth"),Jp=d(Xp,"clientHeight"),Qp=d(Yp,"margin-top"),Zp=d(Yp,"margin-left"),eh=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=or.fromDom(e.getBody()),p=e.inline?g:(r=g,or.fromDom(r.dom().ownerDocument.documentElement)),h=(o=e.inline,a=t,u=n,s=(i=p).dom().getBoundingClientRect(),{x:a-(o?s.left+i.dom().clientLeft+Zp(i):0),y:u-(o?s.top+i.dom().clientTop+Qp(i):0)});return l=h.x,f=h.y,d=Gp(c=p),m=Jp(c),0<=l&&0<=f&&l<=d&&f<=m},th=function(e){var t,n=e.inline?e.getBody():e.getContentAreaContainer();return(t=n,A.from(t).map(or.fromDom)).map(function(e){return Lr(Ir(e),e)}).getOr(!1)};function nh(n){var t,o=[],i=function(){var e,t=n.theme;return t&&t.getNotificationManagerImpl?t.getNotificationManagerImpl():{open:e=function(){throw new Error("Theme did not provide a NotificationManager implementation.")},close:e,reposition:e,getArgs:e}},a=function(){0<o.length&&i().reposition(o)},u=function(t){X(o,function(e){return e===t}).each(function(e){o.splice(e,1)})},r=function(r){if(!n.removed&&th(n))return V(o,function(e){return t=i().getArgs(e),n=r,!(t.type!==n.type||t.text!==n.text||t.progressBar||t.timeout||n.progressBar||n.timeout);var t,n}).getOrThunk(function(){n.editorManager.setActive(n);var e,t=i().open(r,function(){u(t),a()});return e=t,o.push(e),a(),t})};return(t=n).on("SkinLoaded",function(){var e=t.settings.service_message;e&&r({text:e,type:"warning",timeout:0,icon:""})}),t.on("ResizeEditor ResizeWindow",function(){be.requestAnimationFrame(a)}),t.on("remove",function(){F(o.slice(),function(e){i().close(e)})}),{open:r,close:function(){A.from(o[0]).each(function(e){i().close(e),u(e),a()})},getNotifications:function(){return o}}}function rh(r){var o=[],i=function(){var e,t=r.theme;return t&&t.getWindowManagerImpl?t.getWindowManagerImpl():{open:e=function(){throw new Error("Theme did not provide a WindowManager implementation.")},alert:e,confirm:e,close:e,getParams:e,setParams:e}},a=function(e,t){return function(){return t?t.apply(e,arguments):undefined}},u=function(e){var t;o.push(e),t=e,r.fire("OpenWindow",{win:t})},s=function(n){X(o,function(e){return e===n}).each(function(e){var t;o.splice(e,1),t=n,r.fire("CloseWindow",{win:t}),0===o.length&&r.focus()})},e=function(){return A.from(o[o.length-1])};return r.on("remove",function(){F(o.slice(0),function(e){i().close(e)})}),{windows:o,open:function(e,t){r.editorManager.setActive(r),ep(r);var n=i().open(e,t,s);return u(n),n},alert:function(e,t,n){var r=i().alert(e,a(n||this,t),s);u(r)},confirm:function(e,t,n){var r=i().confirm(e,a(n||this,t),s);u(r)},close:function(){e().each(function(e){i().close(e),s(e)})},getParams:function(){return e().map(i().getParams).getOr(null)},setParams:function(t){e().each(function(e){i().setParams(e,t)})},getWindows:function(){return o}}}var oh={},ih="en",ah={setCode:function(e){e&&(ih=e,this.rtl=!!this.data[e]&&"rtl"===this.data[e]._dir)},getCode:function(){return ih},rtl:!1,add:function(e,t){var n=oh[e];for(var r in n||(oh[e]=n={}),t)n[r]=t[r];this.setCode(e)},translate:function(e){var t=oh[ih]||{},n=function(e){return Gt.is(e,"function")?Object.prototype.toString.call(e):r(e)?"":""+e},r=function(e){return""===e||null===e||Gt.is(e,"undefined")},o=function(e){return e=n(e),Gt.hasOwn(t,e)?n(t[e]):e};if(r(e))return"";if(Gt.is(e,"object")&&Gt.hasOwn(e,"raw"))return n(e.raw);if(Gt.is(e,"array")){var i=e.slice(1);e=o(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return Gt.hasOwn(i,t)?n(i[t]):e})}return o(e).replace(/{context:\w+}$/,"")},data:oh},uh=Ei.PluginManager,sh=function(e,t){var n=function(e,t){for(var n in uh.urls)if(uh.urls[n]+"/plugin"+t+".js"===e)return n;return null}(t,e.suffix);return n?ah.translate(["Failed to load plugin: {0} from url {1}",n,t]):ah.translate(["Failed to load plugin url: {0}",t])},ch=function(e,t){e.notificationManager.open({type:"error",text:t})},lh=function(e,t){e._skinLoaded?ch(e,t):e.on("SkinLoaded",function(){ch(e,t)})},fh=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=H.window.console;r&&(r.error?r.error.apply(r,arguments):r.log.apply(r,arguments))},dh={pluginLoadError:function(e,t){lh(e,sh(e,t))},pluginInitError:function(e,t,n){var r=ah.translate(["Failed to initialize plugin: {0}",t]);fh(r,n),lh(e,r)},uploadError:function(e,t){lh(e,ah.translate(["Failed to upload image: {0}",t]))},displayError:lh,initError:fh},mh=Ei.PluginManager,gh=Ei.ThemeManager;function ph(){return new(ae.getOrDie("XMLHttpRequest"))}function hh(u,s){var r={},n=function(e,r,o,t){var i,n;(i=ph()).open("POST",s.url),i.withCredentials=s.credentials,i.upload.onprogress=function(e){t(e.loaded/e.total*100)},i.onerror=function(){o("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var e,t,n;i.status<200||300<=i.status?o("HTTP Error: "+i.status):(e=JSON.parse(i.responseText))&&"string"==typeof e.location?r((t=s.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):o("Invalid JSON: "+i.responseText)},(n=new H.FormData).append("file",e.blob(),e.filename()),i.send(n)},c=function(e,t){return{url:t,blobInfo:e,status:!0}},l=function(e,t){return{url:"",blobInfo:e,status:!1,error:t}},f=function(e,t){Gt.each(r[e],function(e){e(t)}),delete r[e]},o=function(e,n){return e=Gt.grep(e,function(e){return!u.isUploaded(e.blobUri())}),ge.all(Gt.map(e,function(e){return u.isPending(e.blobUri())?(t=e.blobUri(),new ge(function(e){r[t]=r[t]||[],r[t].push(e)})):(o=e,i=s.handler,a=n,u.markPending(o.blobUri()),new ge(function(t){var n;try{var r=function(){n&&n.close()};i(o,function(e){r(),u.markUploaded(o.blobUri(),e),f(o.blobUri(),c(o,e)),t(c(o,e))},function(e){r(),u.removeFailed(o.blobUri()),f(o.blobUri(),l(o,e)),t(l(o,e))},function(e){e<0||100<e||(n||(n=a()),n.progressBar.value(e))})}catch(e){t(l(o,e.message))}}));var o,i,a,t}))};return!1===P(s.handler)&&(s.handler=n),{upload:function(e,t){return s.url||s.handler!==n?o(e,t):new ge(function(e){e([])})}}}var vh=function(e){return ae.getOrDie("atob")(e)},bh=function(e){var t,n,r=decodeURIComponent(e).split(",");return(n=/data:([^;]+)/.exec(r[0]))&&(t=n[1]),{type:t,data:r[1]}},yh=function(a){return new ge(function(e){var t,n,r,o,i=bh(a);try{t=vh(i.data)}catch(jN){return void e(new H.Blob([]))}for(o=t.length,n=new(ae.getOrDie("Uint8Array"))(o),r=0;r<n.length;r++)n[r]=t.charCodeAt(r);e(new H.Blob([n],{type:i.type}))})},Ch=function(e){return 0===e.indexOf("blob:")?(i=e,new ge(function(e,t){var n=function(){t("Cannot convert "+i+" to Blob. Resource might not exist or is inaccessible.")};try{var r=ph();r.open("GET",i,!0),r.responseType="blob",r.onload=function(){200===this.status?e(this.response):n()},r.onerror=n,r.send()}catch(o){n()}})):0===e.indexOf("data:")?yh(e):null;var i},xh=function(n){return new ge(function(e){var t=new(ae.getOrDie("FileReader"));t.onloadend=function(){e(t.result)},t.readAsDataURL(n)})},wh=bh,Nh=0,Eh=function(e){return(e||"blobid")+Nh++},Sh=function(n,r,o,t){var i,a;0!==r.src.indexOf("blob:")?(i=wh(r.src).data,(a=n.findFirst(function(e){return e.base64()===i}))?o({image:r,blobInfo:a}):Ch(r.src).then(function(e){a=n.create(Eh(),e,i),n.add(a),o({image:r,blobInfo:a})},function(e){t(e)})):(a=n.getByUri(r.src))?o({image:r,blobInfo:a}):Ch(r.src).then(function(t){xh(t).then(function(e){i=wh(e).data,a=n.create(Eh(),t,i),n.add(a),o({image:r,blobInfo:a})})},function(e){t(e)})},kh=function(e){return e?re(e.getElementsByTagName("img")):[]},Th=0,Ah={uuid:function(e){return e+Th+++(t=function(){return Math.round(4294967295*Math.random()).toString(36)},"s"+(new Date).getTime().toString(36)+t()+t()+t());var t}};function Rh(u){var n,o,t,e,i,r,a,s,c,l=(n=[],o=function(e){var t,n,r;if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");return t=e.id||Ah.uuid("blobid"),n=e.name||t,{id:q(t),name:q(n),filename:q(n+"."+(r=e.blob.type,{"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"}[r.toLowerCase()]||"dat")),blob:q(e.blob),base64:q(e.base64),blobUri:q(e.blobUri||se.createObjectURL(e.blob)),uri:q(e.uri)}},{create:function(e,t,n,r){if(R(e))return o({id:e,name:r,blob:t,base64:n});if(_(e))return o(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t=function(t){return e(function(e){return e.id()===t})},getByUri:function(t){return e(function(e){return e.blobUri()===t})},findFirst:e=function(e){return z(n,e)[0]},removeByUri:function(t){n=z(n,function(e){return e.blobUri()!==t||(se.revokeObjectURL(e.blobUri()),!1)})},destroy:function(){F(n,function(e){se.revokeObjectURL(e.blobUri())}),n=[]}}),f=(a={},s=function(e,t){return{status:e,resultUri:t}},{hasBlobUri:c=function(e){return e in a},getResultUri:function(e){var t=a[e];return t?t.resultUri:null},isPending:function(e){return!!c(e)&&1===a[e].status},isUploaded:function(e){return!!c(e)&&2===a[e].status},markPending:function(e){a[e]=s(1,null)},markUploaded:function(e,t){a[e]=s(2,t)},removeFailed:function(e){delete a[e]},destroy:function(){a={}}}),d=[],m=function(t){return function(e){return u.selection?t(e):[]}},g=function(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e},p=function(e,t,n){return e=g(e,'src="'+t+'"','src="'+n+'"'),e=g(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')},h=function(t,n){F(u.undoManager.data,function(e){"fragmented"===e.type?e.fragments=W(e.fragments,function(e){return p(e,t,n)}):e.content=p(e.content,t,n)})},v=function(){return u.notificationManager.open({text:u.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})},b=function(e,t){l.removeByUri(e.src),h(e.src,t),u.$(e).attr({src:lg(u)?t+"?"+(new Date).getTime():t,"data-mce-src":u.convertURL(t,"src")})},y=function(n){return i||(i=hh(f,{url:dg(u),basePath:mg(u),credentials:gg(u),handler:pg(u)})),w().then(m(function(r){var e;return e=W(r,function(e){return e.blobInfo}),i.upload(e,v).then(m(function(e){var t=W(e,function(e,t){var n=r[t].image;return e.status&&fg(u)?b(n,e.url):e.error&&dh.uploadError(u,e.error),{element:n,status:e.status}});return n&&n(t),t}))}))},C=function(e){if(cg(u))return y(e)},x=function(t){return!1!==Q(d,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||sg(u)(t))},w=function(){var o,i,a;return r||(o=f,i=l,a={},r={findAll:function(e,n){var t;n||(n=q(!0)),t=z(kh(e),function(e){var t=e.src;return!!me.fileApi&&!e.hasAttribute("data-mce-bogus")&&!e.hasAttribute("data-mce-placeholder")&&!(!t||t===me.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e))});var r=W(t,function(n){if(a[n.src])return new ge(function(t){a[n.src].then(function(e){if("string"==typeof e)return e;t({image:n,blobInfo:e.blobInfo})})});var e=new ge(function(e,t){Sh(i,n,e,t)}).then(function(e){return delete a[e.image.src],e})["catch"](function(e){return delete a[n.src],e});return a[n.src]=e});return ge.all(r)}}),r.findAll(u.getBody(),x).then(m(function(e){return e=z(e,function(e){return"string"!=typeof e||(dh.displayError(u,e),!1)}),F(e,function(e){h(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))},N=function(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=f.getResultUri(n);if(t)return'src="'+t+'"';var r=l.getByUri(n);return r||(r=U(u.editorManager.get(),function(e,t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null)),r?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})};return u.on("setContent",function(){cg(u)?C():w()}),u.on("RawSaveContent",function(e){e.content=N(e.content)}),u.on("getContent",function(e){e.source_view||"raw"===e.format||(e.content=N(e.content))}),u.on("PostRender",function(){u.parser.addNodeFilter("img",function(e){F(e,function(e){var t=e.attr("src");if(!l.getByUri(t)){var n=f.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:l,addFilter:function(e){d.push(e)},uploadImages:y,uploadImagesAuto:C,scanForImages:w,destroy:function(){l.destroy(),f.destroy(),r=i=null}}}var _h=function(e,t){return e.hasOwnProperty(t.nodeName)},Dh=function(t,e,n){return r=Il(or.fromDom(n),or.fromDom(e)),X(r,function(e){return _h(t,e.dom())}).isSome();var r},Bh=function(e,t){if(Bo.isText(t)){if(0===t.nodeValue.length)return!0;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||_h(e,t.nextSibling)))return!0}return!1},Oh=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.dom,g=e.selection,p=e.schema,h=p.getBlockElements(),v=g.getStart(),b=e.getBody();if(f=d.forced_root_block,v&&Bo.isElement(v)&&f&&(l=b.nodeName.toLowerCase(),p.isValidChild(l,f.toLowerCase())&&!Dh(h,b,v))){for(n=(t=g.getRng()).startContainer,r=t.startOffset,o=t.endContainer,i=t.endOffset,c=Kp(e),v=b.firstChild;v;)if(y=h,C=v,Bo.isText(C)||Bo.isElement(C)&&!_h(y,C)&&!cc(C)){if(Bh(h,v)){v=(u=v).nextSibling,m.remove(u);continue}a||(a=m.create(f,e.settings.forced_root_block_attrs),v.parentNode.insertBefore(a,v),s=!0),v=(u=v).nextSibling,a.appendChild(u)}else a=null,v=v.nextSibling;var y,C;s&&c&&(t.setStart(n,r),t.setEnd(o,i),g.setRng(t),e.nodeChanged())}},Ph=function(e){e.settings.forced_root_block&&e.on("NodeChange",d(Oh,e))},Lh=function(t){return qr(t).fold(q([t]),function(e){return[t].concat(Lh(e))})},Ih=function(t){return $r(t).fold(q([t]),function(e){return"br"===sr(e)?Fr(e).map(function(e){return[t].concat(Ih(e))}).getOr([]):[t].concat(Ih(e))})},Mh=function(o,e){return Wa([(i=e,a=i.startContainer,u=i.startOffset,Bo.isText(a)?0===u?A.some(or.fromDom(a)):A.none():A.from(a.childNodes[u]).map(or.fromDom)),(t=e,n=t.endContainer,r=t.endOffset,Bo.isText(n)?r===n.data.length?A.some(or.fromDom(n)):A.none():A.from(n.childNodes[r-1]).map(or.fromDom))],function(e,t){var n=V(Lh(o),d(Pr,e)),r=V(Ih(o),d(Pr,t));return n.isSome()&&r.isSome()}).getOr(!1);var t,n,r,i,a,u},Fh=function(e,t,n,r){var o=n,i=new oo(n,o),a=e.schema.getNonEmptyElements();do{if(3===n.nodeType&&0!==Gt.trim(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(me.ie&&me.ie<11&&e.isBlock(n)&&e.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))},zh=function(e){var t=e.selection.getSel();return t&&0<t.rangeCount};function Uh(i){var r,o=[];"onselectionchange"in i.getDoc()||i.on("NodeChange Click MouseUp KeyUp Focus",function(e){var t,n;n={startContainer:(t=i.selection.getRng()).startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset},"nodechange"!==e.type&&Ng(n,r)||i.fire("SelectionChange"),r=n}),i.on("contextmenu",function(){i.fire("SelectionChange")}),i.on("SelectionChange",function(){var e=i.selection.getStart(!0);!e||!me.range&&i.selection.isCollapsed()||zh(i)&&!function(e){var t,n;if((n=i.$(e).parentsUntil(i.getBody()).add(e)).length===o.length){for(t=n.length;0<=t&&n[t]===o[t];t--);if(-1===t)return o=n,!0}return o=n,!1}(e)&&i.dom.isChildOf(e,i.getBody())&&i.nodeChanged({selectionChange:!0})}),i.on("MouseUp",function(e){!e.isDefaultPrevented()&&zh(i)&&("IMG"===i.selection.getNode().nodeName?be.setEditorTimeout(i,function(){i.nodeChanged()}):i.nodeChanged())}),this.nodeChanged=function(e){var t,n,r,o=i.selection;i.initialized&&o&&!i.settings.disable_nodechange&&!i.readonly&&(r=i.getBody(),(t=o.getStart(!0)||r).ownerDocument===i.getDoc()&&i.dom.isChildOf(t,r)||(t=r),n=[],i.dom.getParent(t,function(e){if(e===r)return!0;n.push(e)}),(e=e||{}).element=t,e.parents=n,i.fire("NodeChange",e))}}var Vh,Hh,jh=function(e){var t,n,r,o;return o=e.getBoundingClientRect(),n=(t=e.ownerDocument).documentElement,r=t.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}},qh=function(e,t){return n=(u=e).inline?jh(u.getBody()):{left:0,top:0},a=(i=e).getBody(),r=i.inline?{left:a.scrollLeft,top:a.scrollTop}:{left:0,top:0},{pageX:(o=function(e,t){if(t.target.ownerDocument!==e.getDoc()){var n=jh(e.getContentAreaContainer()),r=(i=(o=e).getBody(),a=o.getDoc().documentElement,u={left:i.scrollLeft,top:i.scrollTop},s={left:i.scrollLeft||a.scrollLeft,top:i.scrollTop||a.scrollTop},o.inline?u:s);return{left:t.pageX-n.left+r.left,top:t.pageY-n.top+r.top}}var o,i,a,u,s;return{left:t.pageX,top:t.pageY}}(e,t)).left-n.left+r.left,pageY:o.top-n.top+r.top};var n,r,o,i,a,u},$h=Bo.isContentEditableFalse,Wh=Bo.isContentEditableTrue,Kh=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},Xh=function(u,s){return function(e){if(0===e.button){var t=V(s.dom.getParents(e.target),Ya($h,Wh)).getOr(null);if(i=s.getBody(),$h(a=t)&&a!==i){var n=s.dom.getPos(t),r=s.getBody(),o=s.getDoc().documentElement;u.element=t,u.screenX=e.screenX,u.screenY=e.screenY,u.maxX=(s.inline?r.scrollWidth:o.offsetWidth)-2,u.maxY=(s.inline?r.scrollHeight:o.offsetHeight)-2,u.relX=e.pageX-n.x,u.relY=e.pageY-n.y,u.width=t.offsetWidth,u.height=t.offsetHeight,u.ghost=function(e,t,n,r){var o=t.cloneNode(!0);e.dom.setStyles(o,{width:n,height:r}),e.dom.setAttrib(o,"data-mce-selected",null);var i=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(s,t,u.width,u.height)}}var i,a}},Yh=function(l,f){return function(e){if(l.dragging&&(s=(i=f).selection,c=s.getSel().getRangeAt(0).startContainer,a=3===c.nodeType?c.parentNode:c,u=l.element,a!==u&&!i.dom.isChildOf(a,u)&&!$h(a))){var t=(r=l.element,(o=r.cloneNode(!0)).removeAttribute("data-mce-selected"),o),n=f.fire("drop",{targetClone:t,clientX:e.clientX,clientY:e.clientY});n.isDefaultPrevented()||(t=n.targetClone,f.undoManager.transact(function(){Kh(l.element),f.insertContent(f.dom.getOuterHTML(t)),f._selectionOverrides.hideFakeCaret()}))}var r,o,i,a,u,s,c;Gh(l)}},Gh=function(e){e.dragging=!1,e.element=null,Kh(e.ghost)},Jh=function(e){var t,n,r,o,i,a,p,h,v,u,s,c={};t=hi.DOM,a=H.document,n=Xh(c,e),p=c,h=e,v=be.throttle(function(e,t){h._selectionOverrides.hideFakeCaret(),h.selection.placeCaretAt(e,t)},0),r=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m=Math.max(Math.abs(e.screenX-p.screenX),Math.abs(e.screenY-p.screenY));if(p.element&&!p.dragging&&10<m){if(h.fire("dragstart",{target:p.element}).isDefaultPrevented())return;p.dragging=!0,h.focus()}if(p.dragging){var g=(f=p,{pageX:(d=qh(h,e)).pageX-f.relX,pageY:d.pageY+5});c=p.ghost,l=h.getBody(),c.parentNode!==l&&l.appendChild(c),t=p.ghost,n=g,r=p.width,o=p.height,i=p.maxX,a=p.maxY,s=u=0,t.style.left=n.pageX+"px",t.style.top=n.pageY+"px",n.pageX+r>i&&(u=n.pageX+r-i),n.pageY+o>a&&(s=n.pageY+o-a),t.style.width=r-u+"px",t.style.height=o-s+"px",v(e.clientX,e.clientY)}},o=Yh(c,e),u=c,i=function(){u.dragging&&s.fire("dragend"),Gh(u)},(s=e).on("mousedown",n),e.on("mousemove",r),e.on("mouseup",o),t.bind(a,"mousemove",r),t.bind(a,"mouseup",i),e.on("remove",function(){t.unbind(a,"mousemove",r),t.unbind(a,"mouseup",i)})},Qh=function(e){var n;Jh(e),(n=e).on("drop",function(e){var t="undefined"!=typeof e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;($h(t)||$h(n.dom.getContentEditableParent(t)))&&e.preventDefault()})},Zh=function(e){return U(e,function(e,t){return e.concat(function(t){var e=function(e){return W(e,function(e){return(e=Ma(e)).node=t,e})};if(Bo.isElement(t))return e(t.getClientRects());if(Bo.isText(t)){var n=t.ownerDocument.createRange();return n.setStart(t,0),n.setEnd(t,t.data.length),e(n.getClientRects())}}(t))},[])};(Hh=Vh||(Vh={}))[Hh.Up=-1]="Up",Hh[Hh.Down=1]="Down";var ev=function(o,i,a,e,u,t){var n,s,c=0,l=[],r=function(e){var t,n,r;for(r=Zh([e]),-1===o&&(r=r.reverse()),t=0;t<r.length;t++)if(n=r[t],!a(n,s)){if(0<l.length&&i(n,$t.last(l))&&c++,n.line=c,u(n))return!0;l.push(n)}};return(s=$t.last(t.getClientRects()))&&(r(n=t.getNode()),function(e,t,n,r){for(;r=ms(r,e,La,t);)if(n(r))return}(o,e,r,n)),l},tv=d(ev,Vh.Up,Ua,Va),nv=d(ev,Vh.Down,Va,Ua),rv=function(n){return function(e){return t=n,e.line>t;var t}},ov=function(n){return function(e){return t=n,e.line===t;var t}},iv=Bo.isContentEditableFalse,av=ms,uv=function(e,t){return Math.abs(e.left-t)},sv=function(e,t){return Math.abs(e.right-t)},cv=function(e,t){return e>=t.left&&e<=t.right},lv=function(e,o){return $t.reduce(e,function(e,t){var n,r;return n=Math.min(uv(e,o),sv(e,o)),r=Math.min(uv(t,o),sv(t,o)),cv(o,t)?t:cv(o,e)?e:r===n&&iv(t.node)?t:r<n?t:e})},fv=function(e,t,n,r){for(;r=av(r,e,La,t);)if(n(r))return},dv=function(e,t,n){var r,o,i,a,u,s,c,l=Zh(z(re(e.getElementsByTagName("*")),rs)),f=z(l,function(e){return n>=e.top&&n<=e.bottom});return(r=lv(f,t))&&(r=lv((a=e,c=function(t,e){var n;return n=z(Zh([e]),function(e){return!t(e,u)}),s=s.concat(n),0===n.length},(s=[]).push(u=r),fv(Vh.Up,a,d(c,Ua),u.node),fv(Vh.Down,a,d(c,Va),u.node),s),t))&&rs(r.node)?(i=t,{node:(o=r).node,before:uv(o,i)<sv(o,i)}):null},mv=function(i,a,e){return!e.collapsed&&U(e.getClientRects(),function(e,t){return e||(o=a,(r=i)>=(n=t).left&&r<=n.right&&o>=n.top&&o<=n.bottom);var n,r,o},!1)},gv=function(t){var e=Oi(function(){if(!t.removed&&t.selection.getRng().collapsed){var e=Um(t,t.selection.getRng(),!1);t.selection.setRng(e)}},0);t.on("focus",function(){e.throttle()}),t.on("blur",function(){e.cancel()})},pv={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,END:35,HOME:36,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(e){return me.mac?e.metaKey:e.ctrlKey&&!e.altKey}},hv=Bo.isContentEditableTrue,vv=Bo.isContentEditableFalse,bv=function(e,t){for(var n=e.getBody();t&&t!==n;){if(hv(t)||vv(t))return t;t=t.parentNode}return null},yv=function(g){var p,e,t,a=g.getBody(),o=ts(g.getBody(),function(e){return g.dom.isBlock(e)},function(){return Kp(g)}),h="sel-"+g.dom.uniqueId(),u=function(e){e&&g.selection.setRng(e)},s=function(){return g.selection.getRng()},v=function(e,t,n,r){return void 0===r&&(r=!0),g.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&g.selection.scrollIntoView(t,-1===e),o.show(n,t))},b=function(e,t){return t=xs(e,a,t),-1===e?vu.fromRangeStart(t):vu.fromRangeEnd(t)},n=function(e){return va(e)||wa(e)||Na(e)},y=function(e){return n(e.startContainer)||n(e.endContainer)},c=function(e,t){var n,r,o,i,a,u,s,c,l,f,d=g.$,m=g.dom;if(!e)return null;if(e.collapsed){if(!y(e))if(!1===t){if(c=b(-1,e),rs(c.getNode(!0)))return v(-1,c.getNode(!0),!1,!1);if(rs(c.getNode()))return v(-1,c.getNode(),!c.isAtEnd(),!1)}else{if(c=b(1,e),rs(c.getNode()))return v(1,c.getNode(),!c.isAtEnd(),!1);if(rs(c.getNode(!0)))return v(1,c.getNode(!0),!1,!1)}return null}return i=e.startContainer,a=e.startOffset,u=e.endOffset,3===i.nodeType&&0===a&&vv(i.parentNode)&&(i=i.parentNode,a=m.nodeIndex(i),i=i.parentNode),1!==i.nodeType?null:(u===a+1&&(n=i.childNodes[a]),vv(n)?(l=f=n.cloneNode(!0),(s=g.fire("ObjectSelected",{target:n,targetClone:l})).isDefaultPrevented()?null:(r=Yi(or.fromDom(g.getBody()),"#"+h).fold(function(){return d([])},function(e){return d([e.dom()])}),l=s.targetClone,0===r.length&&(r=d('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",h)).appendTo(g.getBody()),e=g.dom.createRng(),l===f&&me.ie?(r.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(l),e.setStartAfter(r[0].firstChild.firstChild),e.setEndAfter(l)):(r.empty().append("\xa0").append(l).append("\xa0"),e.setStart(r[0].firstChild,1),e.setEnd(r[0].lastChild,0)),r.css({top:m.getPos(n,g.getBody()).y}),r[0].focus(),(o=g.selection.getSel()).removeAllRanges(),o.addRange(e),F(ji(or.fromDom(g.getBody()),"*[data-mce-selected]"),function(e){xr(e,"data-mce-selected")}),n.setAttribute("data-mce-selected","1"),p=n,C(),e)):null)},l=function(){p&&(p.removeAttribute("data-mce-selected"),Yi(or.fromDom(g.getBody()),"#"+h).each(Di),p=null),Yi(or.fromDom(g.getBody()),"#"+h).each(Di),p=null},C=function(){o.hide()};return me.ceFalse&&(function(){g.on("mouseup",function(e){var t=s();t.collapsed&&eh(g,e.clientX,e.clientY)&&u(zm(g,t,!1))}),g.on("click",function(e){var t;(t=bv(g,e.target))&&(vv(t)&&(e.preventDefault(),g.focus()),hv(t)&&g.dom.isChildOf(t,g.selection.getNode())&&l())}),g.on("blur NewBlock",function(){l()}),g.on("ResizeWindow FullscreenStateChanged",function(){return o.reposition()});var n,r,i=function(e,t){var n,r,o=g.dom.getParent(e,g.dom.isBlock),i=g.dom.getParent(t,g.dom.isBlock);return!(!o||!g.dom.isChildOf(o,i)||!1!==vv(bv(g,o)))||o&&(n=o,r=i,!(g.dom.getParent(n,g.dom.isBlock)===g.dom.getParent(r,g.dom.isBlock)))&&function(e){var t=Hs(e);if(!e.firstChild)return!1;var n=vu.before(e.firstChild),r=t.next(n);return r&&!mf(r)&&!gf(r)}(o)};r=!1,(n=g).on("touchstart",function(){r=!1}),n.on("touchmove",function(){r=!0}),n.on("touchend",function(e){var t=bv(n,e.target);vv(t)&&(r||(e.preventDefault(),c(Fm(n,t))))}),g.on("mousedown",function(e){var t,n=e.target;if((n===a||"HTML"===n.nodeName||g.dom.isChildOf(n,a))&&!1!==eh(g,e.clientX,e.clientY))if(t=bv(g,n))vv(t)?(e.preventDefault(),c(Fm(g,t))):(l(),hv(t)&&e.shiftKey||mv(e.clientX,e.clientY,g.selection.getRng())||(C(),g.selection.placeCaretAt(e.clientX,e.clientY)));else if(!1===rs(n)){l(),C();var r=dv(a,e.clientX,e.clientY);if(r&&!i(e.target,r.node)){e.preventDefault();var o=v(1,r.node,r.before,!1);g.getBody().focus(),u(o)}}}),g.on("keypress",function(e){pv.modifierPressed(e)||(e.keyCode,vv(g.selection.getNode())&&e.preventDefault())}),g.on("getSelectionRange",function(e){var t=e.range;if(p){if(!p.parentNode)return void(p=null);(t=t.cloneRange()).selectNode(p),e.range=t}}),g.on("setSelectionRange",function(e){var t;(t=c(e.range,e.forward))&&(e.range=t)}),g.on("AfterSetSelectionRange",function(e){var t,n=e.range;y(n)||"mcepastebin"===n.startContainer.parentNode.id||C(),t=n.startContainer.parentNode,g.dom.hasClass(t,"mce-offscreen-selection")||l()}),g.on("copy",function(e){var t,n=e.clipboardData;if(!e.isDefaultPrevented()&&e.clipboardData&&!me.ie){var r=(t=g.dom.get(h))?t.getElementsByTagName("*")[0]:t;r&&(e.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),Qh(g),gv(g)}(),e=g.contentStyles,t=".mce-content-body",e.push(o.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")),{showCaret:v,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Ea(e),u(s()),g.selection.scrollIntoView(e[0]))},hideFakeCaret:C,destroy:function(){o.destroy(),p=null}}},Cv=function(e,t,n){var r,o,i,a,u=1;for(a=e.getShortEndedElements(),(i=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex=r=n;o=i.exec(t);){if(r=i.lastIndex,"/"===o[1])u--;else if(!o[1]){if(o[2]in a)continue;u++}if(0===u)break}return r},xv=function(e,t){var n=e.exec(t);if(n){var r=n[1],o=n[2];return"string"==typeof r&&"data-mce-bogus"===r.toLowerCase()?o:null}return null};function wv(z,U){void 0===U&&(U=ri());var e=function(){};!1!==(z=z||{}).fix_self_closing&&(z.fix_self_closing=!0);var V=z.comment?z.comment:e,H=z.cdata?z.cdata:e,j=z.text?z.text:e,q=z.start?z.start:e,$=z.end?z.end:e,W=z.pi?z.pi:e,K=z.doctype?z.doctype:e;return{parse:function(e){var t,n,r,d,o,i,a,m,u,s,g,c,p,l,f,h,v,b,y,C,x,w,N,E,S,k,T,A,R,_=0,D=[],B=0,O=Wo.decode,P=Gt.makeMap("src,href,data,background,formaction,poster,xlink:href"),L=/((java|vb)script|mhtml):/i,I=function(e){var t,n;for(t=D.length;t--&&D[t].name!==e;);if(0<=t){for(n=D.length-1;t<=n;n--)(e=D[n]).valid&&$(e.name);D.length=t}},M=function(e,t,n,r,o){var i,a,u,s,c;if(n=(t=t.toLowerCase())in g?t:O(n||r||o||""),p&&!m&&0==(0===(u=t).indexOf("data-")||0===u.indexOf("aria-"))){if(!(i=b[t])&&y){for(a=y.length;a--&&!(i=y[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if(P[t]&&!z.allow_script_urls){var l=n.replace(/[\s\u0000-\u001F]+/g,"");try{l=decodeURIComponent(l)}catch(f){l=unescape(l)}if(L.test(l))return;if(c=l,!(s=z).allow_html_data_urls&&(/^data:image\//i.test(c)?!1===s.allow_svg_data_urls&&/^data:image\/svg\+xml/i.test(c):/^data:/i.test(c)))return}m&&(t in P||0===t.indexOf("on"))||(d.map[t]=n,d.push({name:t,value:n}))};for(S=new RegExp("<(?:(?:!--([\\w\\W]*?)--\x3e)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),k=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,s=U.getShortEndedElements(),E=z.self_closing_elements||U.getSelfClosingElements(),g=U.getBoolAttrs(),p=z.validate,u=z.remove_internals,R=z.fix_self_closing,T=U.getSpecialElements(),N=e+">";t=S.exec(N);){if(_<t.index&&j(O(e.substr(_,t.index-_))),n=t[6])":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),I(n);else if(n=t[7]){if(t.index+t[0].length>e.length){j(O(e.substr(t.index))),_=t.index+t[0].length;continue}":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),c=n in s,R&&E[n]&&0<D.length&&D[D.length-1].name===n&&I(n);var F=xv(k,t[8]);if(null!==F){if("all"===F){_=Cv(U,e,S.lastIndex),S.lastIndex=_;continue}f=!1}if(!p||(l=U.getElementRule(n))){if(f=!0,p&&(b=l.attributes,y=l.attributePatterns),(v=t[8])?((m=-1!==v.indexOf("data-mce-type"))&&u&&(f=!1),(d=[]).map={},v.replace(k,M)):(d=[]).map={},p&&!m){if(C=l.attributesRequired,x=l.attributesDefault,w=l.attributesForced,l.removeEmptyAttrs&&!d.length&&(f=!1),w)for(o=w.length;o--;)a=(h=w[o]).name,"{$uid}"===(A=h.value)&&(A="mce_"+B++),d.map[a]=A,d.push({name:a,value:A});if(x)for(o=x.length;o--;)(a=(h=x[o]).name)in d.map||("{$uid}"===(A=h.value)&&(A="mce_"+B++),d.map[a]=A,d.push({name:a,value:A}));if(C){for(o=C.length;o--&&!(C[o]in d.map););-1===o&&(f=!1)}if(h=d.map["data-mce-bogus"]){if("all"===h){_=Cv(U,e,S.lastIndex),S.lastIndex=_;continue}f=!1}}f&&q(n,d,c)}else f=!1;if(r=T[n]){r.lastIndex=_=t.index+t[0].length,(t=r.exec(e))?(f&&(i=e.substr(_,t.index-_)),_=t.index+t[0].length):(i=e.substr(_),_=e.length),f&&(0<i.length&&j(i,!0),$(n)),S.lastIndex=_;continue}c||(v&&v.indexOf("/")===v.length-1?f&&$(n):D.push({name:n,valid:f}))}else(n=t[1])?(">"===n.charAt(0)&&(n=" "+n),z.allow_conditional_comments||"[if"!==n.substr(0,3).toLowerCase()||(n=" "+n),V(n)):(n=t[2])?H(n.replace(/<!--|-->/g,"")):(n=t[3])?K(n):(n=t[4])&&W(n,t[5]);_=t.index+t[0].length}for(_<e.length&&j(O(e.substr(_))),o=D.length-1;0<=o;o--)(n=D[o]).valid&&$(n.name)}}}(wv||(wv={})).findEndTag=Cv;var Nv=wv,Ev=function(e,t){var n,r,o,i,a,u,s,c,l=t,f=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,d=e.schema;for(u=e.getTempAttrs(),s=l,c=new RegExp(["\\s?("+u.join("|")+')="[^"]+"'].join("|"),"gi"),l=s.replace(c,""),a=d.getShortEndedElements();i=f.exec(l);)r=f.lastIndex,o=i[0].length,n=a[i[1]]?r:Nv.findEndTag(d,l,r),l=l.substring(0,r-o)+l.substring(n),f.lastIndex=r-o;return da(l)},Sv={trimExternal:Ev,trimInternal:Ev},kv=0,Tv=2,Av=1,Rv=function(g,p){var e=g.length+p.length+2,h=new Array(e),v=new Array(e),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&g[a]===p[u]?(o.push([0,g[a]]),++a,++u):r-n<t-e?(o.push([2,g[a]]),++a):(o.push([1,p[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,g[s]]);c(i.end,t,i.end-i.diag,r,o)}},b=function(e,t,n,r){for(var o=e;o-t<r&&o<n&&g[o]===p[o-t];)++o;return{start:e,end:o,diag:t}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0===o||0===i)return null;var a,u,s,c,l,f=o-i,d=i+o,m=(d%2==0?d:d+1)/2;for(h[1+m]=e,v[1+m]=t+1,a=0;a<=m;++a){for(u=-a;u<=a;u+=2){for(s=u+m,u===-a||u!==a&&h[s-1]<h[s+1]?h[s]=h[s+1]:h[s]=h[s-1]+1,l=(c=h[s])-e+n-u;c<t&&l<r&&g[c]===p[l];)h[s]=++c,++l;if(f%2!=0&&f-a<=u&&u<=f+a&&v[s-f]<=h[s])return b(v[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+m-f,u===f-a||u!==f+a&&v[s+1]<=v[s-1]?v[s]=v[s+1]-1:v[s]=v[s-1],l=(c=v[s]-1)-e+n-u;e<=c&&n<=l&&g[c]===p[l];)v[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&v[s]<=h[s+f])return b(v[s],u+e-n,t,r)}}},t=[];return c(0,g.length,0,p.length,t),t},_v=function(e){return Bo.isElement(e)?e.outerHTML:Bo.isText(e)?Wo.encodeRaw(e.data,!1):Bo.isComment(e)?"\x3c!--"+e.data+"--\x3e":""},Dv=function(e,t,n){var r=function(e){var t,n,r;for(r=H.document.createElement("div"),t=H.document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return t}(t);if(e.hasChildNodes()&&n<e.childNodes.length){var o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else e.appendChild(r)},Bv=function(e){return z(W(re(e.childNodes),_v),function(e){return 0<e.length})},Ov=function(e,t){var n,r,o,i=W(re(t.childNodes),_v);return n=Rv(i,e),r=t,o=0,F(n,function(e){e[0]===kv?o++:e[0]===Av?(Dv(r,e[1],o),o++):e[0]===Tv&&function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var n=e.childNodes[t];n.parentNode.removeChild(n)}}(r,o)}),t},Pv=Pi(A.none()),Lv=function(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}},Iv=function(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}},Mv=function(e){return"fragmented"===e.type?e.fragments.join(""):e.content},Fv=function(e){var t=or.fromTag("body",Pv.get().getOrThunk(function(){var e=H.document.implementation.createHTMLDocument("undo");return Pv.set(A.some(e)),e}));return sa(t,Mv(e)),F(ji(t,"*[data-mce-bogus]"),Bi),t.dom().innerHTML},zv=function(n){var e,t,r;return e=Bv(n.getBody()),-1!==(t=(r=J(e,function(e){var t=Sv.trimInternal(n.serializer,e);return 0<t.length?[t]:[]})).join("")).indexOf("</iframe>")?Lv(r):Iv(t)},Uv=function(e,t,n){"fragmented"===t.type?Ov(t.fragments,e.getBody()):e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(n?t.beforeBookmark:t.bookmark)},Vv=function(e,t){return!(!e||!t)&&(r=t,Mv(e)===Mv(r)||(n=t,Fv(e)===Fv(n)));var n,r};function Hv(u){var s,r,o=this,c=0,l=[],t=0,f=function(){return 0===t},i=function(e){f()&&(o.typing=e)},d=function(e){u.setDirty(e)},a=function(e){i(!1),o.add({},e)},n=function(){o.typing&&(i(!1),o.add())};return u.on("init",function(){o.add()}),u.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(n(),o.beforeChange())}),u.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&a(e)}),u.on("ObjectResizeStart Cut",function(){o.beforeChange()}),u.on("SaveContent ObjectResized blur",a),u.on("DragEnd",a),u.on("KeyUp",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(a(),u.nodeChanged()),46!==t&&8!==t||u.nodeChanged(),r&&o.typing&&!1===Vv(zv(u),l[0])&&(!1===u.isDirty()&&(d(!0),u.fire("change",{level:l[0],lastLevel:null})),u.fire("TypingUndo"),r=!1,u.nodeChanged()))}),u.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented())if(33<=t&&t<=36||37<=t&&t<=40||45===t)o.typing&&a(e);else{var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||20<t)||224===t||91===t||o.typing||n||(o.beforeChange(),i(!0),o.add({},e),r=!0)}}),u.on("MouseDown",function(e){o.typing&&a(e)}),u.on("input",function(e){var t;e.inputType&&("insertReplacementText"===e.inputType||"insertText"===(t=e).inputType&&null===t.data)&&a(e)}),u.addShortcut("meta+z","","Undo"),u.addShortcut("meta+y,meta+shift+z","","Redo"),u.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||u.nodeChanged()}),o={data:l,typing:!1,beforeChange:function(){f()&&(s=Fu.getUndoBookmark(u.selection))},add:function(e,t){var n,r,o,i=u.settings;if(o=zv(u),e=e||{},e=Gt.extend(e,o),!1===f()||u.removed)return null;if(r=l[c],u.fire("BeforeAddUndo",{level:e,lastLevel:r,originalEvent:t}).isDefaultPrevented())return null;if(r&&Vv(r,e))return null;if(l[c]&&(l[c].beforeBookmark=s),i.custom_undo_redo_levels&&l.length>i.custom_undo_redo_levels){for(n=0;n<l.length-1;n++)l[n]=l[n+1];l.length--,c=l.length}e.bookmark=Fu.getUndoBookmark(u.selection),c<l.length-1&&(l.length=c+1),l.push(e),c=l.length-1;var a={level:e,lastLevel:r,originalEvent:t};return u.fire("AddUndo",a),0<c&&(d(!0),u.fire("change",a)),e},undo:function(){var e;return o.typing&&(o.add(),o.typing=!1,i(!1)),0<c&&(e=l[--c],Uv(u,e,!0),d(!0),u.fire("undo",{level:e})),e},redo:function(){var e;return c<l.length-1&&(e=l[++c],Uv(u,e,!1),d(!0),u.fire("redo",{level:e})),e},clear:function(){l=[],c=0,o.typing=!1,o.data=l,u.fire("ClearUndos")},hasUndo:function(){return 0<c||o.typing&&l[0]&&!Vv(zv(u),l[0])},hasRedo:function(){return c<l.length-1&&!o.typing},transact:function(e){return n(),o.beforeChange(),o.ignore(e),o.add()},ignore:function(e){try{t++,e()}finally{t--}},extra:function(e,t){var n,r;o.transact(e)&&(r=l[c].bookmark,n=l[c-1],Uv(u,n,!0),o.transact(t)&&(l[c-1].beforeBookmark=r))}}}var jv,qv,$v={},Wv=$t.filter,Kv=$t.each;qv=function(e){var t,n,r=e.selection.getRng();t=Bo.matchNodeNames("pre"),r.collapsed||(n=e.selection.getSelectedBlocks(),Kv(Wv(Wv(n,t),function(e){return t(e.previousSibling)&&-1!==$t.indexOf(n,e.previousSibling)}),function(e){var t,n;t=e.previousSibling,hn(n=e).remove(),hn(t).append("<br><br>").append(n.childNodes)}))},$v[jv="pre"]||($v[jv]=[]),$v[jv].push(qv);var Xv=function(e,t){Kv($v[e],function(e){e(t)})},Yv=/^(src|href|style)$/,Gv=Gt.each,Jv=mc.isEq,Qv=function(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)},Zv=function(e,t,n){var r,o,i;return r=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],Bo.isElement(r)&&(i=r.childNodes.length-1,!n&&o&&o--,r=r.childNodes[i<o?i:o]),Bo.isText(r)&&n&&o>=r.nodeValue.length&&(r=new oo(r,e.getBody()).next()||r),Bo.isText(r)&&!n&&0===o&&(r=new oo(r,e.getBody()).prev()||r),r},eb=function(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o},tb=function(e,t,n,r,o){var i=or.fromDom(t),a=or.fromDom(e.create(r,o)),u=n?Vr(i):Ur(i);return Ri(a,u),n?(Si(i,a),Ti(a,i)):(ki(i,a),Ai(a,i)),a.dom()},nb=function(e,t,n,r){return!(t=mc.getNonWhiteSpaceSibling(t,n,r))||"BR"===t.nodeName||e.isBlock(t)},rb=function(e,n,r,o,i){var t,a,u,s,c,l,f,d,m,g,p,h,v,b,y=e.dom;if(c=y,!(Jv(l=o,(f=n).inline)||Jv(l,f.block)||(f.selector?Bo.isElement(l)&&c.is(l,f.selector):void 0)||(s=o,n.links&&"A"===s.tagName)))return!1;if("all"!==n.remove)for(Gv(n.styles,function(e,t){e=mc.normalizeStyleValue(y,mc.replaceVars(e,r),t),"number"==typeof t&&(t=e,i=0),(n.remove_similar||!i||Jv(mc.getStyle(y,i,t),e))&&y.setStyle(o,t,""),u=1}),u&&""===y.getAttrib(o,"style")&&(o.removeAttribute("style"),o.removeAttribute("data-mce-style")),Gv(n.attributes,function(e,t){var n;if(e=mc.replaceVars(e,r),"number"==typeof t&&(t=e,i=0),!i||Jv(y.getAttrib(i,t),e)){if("class"===t&&(e=y.getAttrib(o,t))&&(n="",Gv(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))return void y.setAttrib(o,t,n);"class"===t&&o.removeAttribute("className"),Yv.test(t)&&o.removeAttribute("data-mce-"+t),o.removeAttribute(t)}}),Gv(n.classes,function(e){e=mc.replaceVars(e,r),i&&!y.hasClass(i,e)||y.removeClass(o,e)}),a=y.getAttribs(o),t=0;t<a.length;t++){var C=a[t].nodeName;if(0!==C.indexOf("_")&&0!==C.indexOf("data-"))return!1}return"none"!==n.remove?(d=e,g=n,h=(m=o).parentNode,v=d.dom,b=d.settings.forced_root_block,g.block&&(b?h===v.getRoot()&&(g.list_block&&Jv(m,g.list_block)||Gv(Gt.grep(m.childNodes),function(e){mc.isValid(d,b,e.nodeName.toLowerCase())?p?p.appendChild(e):(p=eb(v,e,b),v.setAttribs(p,d.settings.forced_root_block_attrs)):p=0})):v.isBlock(m)&&!v.isBlock(h)&&(nb(v,m,!1)||nb(v,m.firstChild,!0,1)||m.insertBefore(v.create("br"),m.firstChild),nb(v,m,!0)||nb(v,m.lastChild,!1,1)||m.appendChild(v.create("br")))),g.selector&&g.inline&&!Jv(g.inline,m)||v.remove(m,1),!0):void 0},ob=rb,ib=function(s,c,l,e,f){var t,n,d=s.formatter.get(c),m=d[0],a=!0,u=s.dom,r=s.selection,i=function(e){var n,t,r,o,i,a,u=(n=s,t=e,r=c,o=l,i=f,Gv(mc.getParents(n.dom,t.parentNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=hm.matchNode(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a);return function(e,t,n,r,o,i,a,u){var s,c,l,f,d,m,g=e.dom;if(n){for(m=n.parentNode,s=r.parentNode;s&&s!==m;s=s.parentNode){for(c=g.clone(s,!1),d=0;d<t.length;d++)if(rb(e,t[d],u,c,c)){c=0;break}c&&(l&&c.appendChild(l),f||(f=c),l=c)}!i||a.mixed&&g.isBlock(n)||(r=g.split(n,r)),l&&(o.parentNode.insertBefore(l,o),f.appendChild(o))}return r}(s,d,u,e,e,!0,m,l)},g=function(e){var t,n,r,o,i;if(Bo.isElement(e)&&u.getContentEditable(e)&&(o=a,a="true"===u.getContentEditable(e),i=!0),t=Gt.grep(e.childNodes),a&&!i)for(n=0,r=d.length;n<r&&!rb(s,d[n],l,e,e);n++);if(m.deep&&t.length){for(n=0,r=t.length;n<r;n++)g(t[n]);i&&(a=o)}},p=function(e){var t,n=u.get(e?"_start":"_end"),r=n[e?"firstChild":"lastChild"];return cc(t=r)&&Bo.isElement(t)&&("_start"===t.id||"_end"===t.id)&&(r=r[e?"firstChild":"lastChild"]),Bo.isText(r)&&0===r.data.length&&(r=e?n.previousSibling||n.nextSibling:n.nextSibling||n.previousSibling),u.remove(n,!0),r},o=function(e){var t,n,r=e.commonAncestorContainer;if(e=Sc(s,e,d,!0),m.split){if(e=bm(e),(t=Zv(s,e,!0))!==(n=Zv(s,e))){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"===t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&/^(TH|TD)$/.test(n.nodeName)&&n.firstChild&&(n=n.firstChild||n),Qv(u,t,n)){var o=A.from(t.firstChild).getOr(t);return i(tb(u,o,!0,"span",{id:"_start","data-mce-type":"bookmark"})),void p(!0)}if(Qv(u,n,t))return o=A.from(n.lastChild).getOr(n),i(tb(u,o,!1,"span",{id:"_end","data-mce-type":"bookmark"})),void p(!1);t=eb(u,t,"span",{id:"_start","data-mce-type":"bookmark"}),n=eb(u,n,"span",{id:"_end","data-mce-type":"bookmark"}),i(t),i(n),t=p(!0),n=p()}else t=n=i(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=u.nodeIndex(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=u.nodeIndex(n)+1}Tc(u,e,function(e){Gv(e,function(e){g(e),Bo.isElement(e)&&"underline"===s.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===mc.getTextDecoration(u,e.parentNode)&&rb(s,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})};if(e)e.nodeType?((n=u.createRng()).setStartBefore(e),n.setEndAfter(e),o(n)):o(e);else if("false"!==u.getContentEditable(r.getNode()))r.isCollapsed()&&m.inline&&!u.select("td[data-mce-selected],th[data-mce-selected]").length?function(e,t,n,r){var o,i,a,u,s,c,l,f=e.dom,d=e.selection,m=[],g=d.getRng();for(o=g.startContainer,i=g.startOffset,3===(s=o).nodeType&&(i!==o.nodeValue.length&&(u=!0),s=s.parentNode);s;){if(hm.matchNode(e,s,t,n,r)){c=s;break}s.nextSibling&&(u=!0),m.push(s),s=s.parentNode}if(c)if(u){a=d.getBookmark(),g.collapse(!0);var p=Sc(e,g,e.formatter.get(t),!0);p=bm(p),e.formatter.remove(t,n,p),d.moveToBookmark(a)}else{l=Vu(e.getBody(),c);var h=Nm(!1).dom(),v=Am(m,h);km(e,h,l||c),Em(e,l,!1),d.setCursorLocation(v,1),f.isEmpty(c)&&f.remove(c)}}(s,c,l,f):(t=Fu.getPersistentBookmark(s.selection,!0),o(r.getRng()),r.moveToBookmark(t),m.inline&&hm.match(s,c,l,r.getStart())&&mc.moveStart(u,r,r.getRng()),s.nodeChanged());else{e=r.getNode();for(var h=0,v=d.length;h<v&&(!d[h].ceFalseOverride||!rb(s,d[h],l,e,e));h++);}},ab=Gt.each,ub=function(e){return e&&1===e.nodeType&&!cc(e)&&!Uu(e)&&!Bo.isBogus(e)},sb=function(e,t){var n;for(n=e;n;n=n[t]){if(3===n.nodeType&&0!==n.nodeValue.length)return e;if(1===n.nodeType&&!cc(n))return n}return e},cb=function(e,t,n){var r,o,i=new $c(e);if(t&&n&&(t=sb(t,"previousSibling"),n=sb(n,"nextSibling"),i.compare(t,n))){for(r=t.nextSibling;r&&r!==n;)r=(o=r).nextSibling,t.appendChild(o);return e.remove(n),Gt.each(Gt.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n},lb=function(e,t,n){ab(e.childNodes,function(e){ub(e)&&(t(e)&&n(e),e.hasChildNodes()&&lb(e,t,n))})},fb=function(n,e){return d(function(e,t){return!(!t||!mc.getStyle(n,t,e))},e)},db=function(r,e,t){return d(function(e,t,n){r.setStyle(n,e,t),""===n.getAttribute("style")&&n.removeAttribute("style"),mb(r,n)},e,t)},mb=function(e,t){"SPAN"===t.nodeName&&0===e.getAttribs(t).length&&e.remove(t,!0)},gb=function(e,t){var n;1===t.nodeType&&t.parentNode&&1===t.parentNode.nodeType&&(n=mc.getTextDecoration(e,t.parentNode),e.getStyle(t,"color")&&n?e.setStyle(t,"text-decoration",n):e.getStyle(t,"text-decoration")===n&&e.setStyle(t,"text-decoration",null))},pb=function(n,e,r,o){ab(e,function(t){ab(n.dom.select(t.inline,o),function(e){ub(e)&&ob(n,t,r,e,t.exact?e:null)}),function(r,e,t){if(e.clear_child_styles){var n=e.links?"*:not(a)":"*";ab(r.select(n,t),function(n){ub(n)&&ab(e.styles,function(e,t){r.setStyle(n,t,"")})})}}(n.dom,t,o)})},hb=function(e,t,n,r){(t.styles.color||t.styles.textDecoration)&&(Gt.walk(r,d(gb,e),"childNodes"),gb(e,r))},vb=function(e,t,n,r){t.styles&&t.styles.backgroundColor&&lb(r,fb(e,"fontSize"),db(e,"backgroundColor",mc.replaceVars(t.styles.backgroundColor,n)))},bb=function(e,t,n,r){"sub"!==t.inline&&"sup"!==t.inline||(lb(r,fb(e,"fontSize"),db(e,"fontSize","")),e.remove(e.select("sup"===t.inline?"sub":"sup",r),!0))},yb=function(e,t,n,r){r&&!1!==t.merge_siblings&&(r=cb(e,mc.getNonWhiteSpaceSibling(r),r),r=cb(e,r,mc.getNonWhiteSpaceSibling(r,!0)))},Cb=function(t,n,r,o,i){hm.matchNode(t,i.parentNode,r,o)&&ob(t,n,o,i)||n.merge_with_parents&&t.dom.getParent(i.parentNode,function(e){if(hm.matchNode(t,e,r,o))return ob(t,n,o,i),!0})},xb=Gt.each,wb=function(g,p,h,r){var e,t,v=g.formatter.get(p),b=v[0],o=!r&&g.selection.isCollapsed(),i=g.dom,n=g.selection,y=function(n,e){if(e=e||b,n){if(e.onformat&&e.onformat(n,e,h,r),xb(e.styles,function(e,t){i.setStyle(n,t,mc.replaceVars(e,h))}),e.styles){var t=i.getAttrib(n,"style");t&&n.setAttribute("data-mce-style",t)}xb(e.attributes,function(e,t){i.setAttrib(n,t,mc.replaceVars(e,h))}),xb(e.classes,function(e){e=mc.replaceVars(e,h),i.hasClass(n,e)||i.addClass(n,e)})}},C=function(e,t){var n=!1;return!!b.selector&&(xb(e,function(e){if(!("collapsed"in e&&e.collapsed!==o))return i.is(t,e.selector)&&!Uu(t)?(y(t,e),!(n=!0)):void 0}),n)},a=function(s,e,t,c){var l,f,d=[],m=!0;l=b.inline||b.block,f=s.create(l),y(f),Tc(s,e,function(e){var a,u=function(e){var t,n,r,o;if(o=m,t=e.nodeName.toLowerCase(),n=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&s.getContentEditable(e)&&(o=m,m="true"===s.getContentEditable(e),r=!0),mc.isEq(t,"br"))return a=0,void(b.block&&s.remove(e));if(b.wrapper&&hm.matchNode(g,e,p,h))a=0;else{if(m&&!r&&b.block&&!b.wrapper&&mc.isTextBlock(g,t)&&mc.isValid(g,n,l))return e=s.rename(e,l),y(e),d.push(e),void(a=0);if(b.selector){var i=C(v,e);if(!b.inline||i)return void(a=0)}!m||r||!mc.isValid(g,l,t)||!mc.isValid(g,n,l)||!c&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||Uu(e)||b.inline&&s.isBlock(e)?(a=0,xb(Gt.grep(e.childNodes),u),r&&(m=o),a=0):(a||(a=s.clone(f,!1),e.parentNode.insertBefore(a,e),d.push(a)),a.appendChild(e))}};xb(e,u)}),!0===b.links&&xb(d,function(e){var t=function(e){"A"===e.nodeName&&y(e,b),xb(Gt.grep(e.childNodes),t)};t(e)}),xb(d,function(e){var t,n,r,o,i,a=function(e){var n=!1;return xb(e.childNodes,function(e){if((t=e)&&1===t.nodeType&&!cc(t)&&!Uu(t)&&!Bo.isBogus(t))return n=e,!1;var t}),n};n=0,xb(e.childNodes,function(e){mc.isWhiteSpaceNode(e)||cc(e)||n++}),t=n,!(1<d.length)&&s.isBlock(e)||0!==t?(b.inline||b.wrapper)&&(b.exact||1!==t||((o=a(r=e))&&!cc(o)&&hm.matchName(s,o,b)&&(i=s.clone(o,!1),y(i),s.replace(i,r,!0),s.remove(o,1)),e=i||r),pb(g,v,h,e),Cb(g,b,p,h,e),vb(s,b,h,e),bb(s,b,h,e),yb(s,b,h,e)):s.remove(e,1)})};if("false"!==i.getContentEditable(n.getNode())){if(b){if(r)r.nodeType?C(v,r)||((t=i.createRng()).setStartBefore(r),t.setEndAfter(r),a(i,Sc(g,t,v),0,!0)):a(i,r,0,!0);else if(o&&b.inline&&!i.select("td[data-mce-selected],th[data-mce-selected]").length)!function(e,t,n){var r,o,i,a,u,s,c=e.selection;a=(r=c.getRng(!0)).startOffset,s=r.startContainer.nodeValue,(o=Vu(e.getBody(),c.getStart()))&&(i=wm(o));var l,f,d=/[^\s\u00a0\u00ad\u200b\ufeff]/;s&&0<a&&a<s.length&&d.test(s.charAt(a))&&d.test(s.charAt(a-1))?(u=c.getBookmark(),r.collapse(!0),r=Sc(e,r,e.formatter.get(t)),r=bm(r),e.formatter.apply(t,n,r),c.moveToBookmark(u)):(o&&i.nodeValue===ym||(l=e.getDoc(),f=Nm(!0).dom(),i=(o=l.importNode(f,!0)).firstChild,r.insertNode(o),a=1),e.formatter.apply(t,n,o),c.setCursorLocation(i,a))}(g,p,h);else{var u=g.selection.getNode();g.settings.forced_root_block||!v[0].defaultBlock||i.getParent(u,i.isBlock)||wb(g,v[0].defaultBlock),g.selection.setRng(el(g.selection.getRng())),e=Fu.getPersistentBookmark(g.selection,!0),a(i,Sc(g,n.getRng(),v)),b.styles&&hb(i,b,h,u),n.moveToBookmark(e),mc.moveStart(i,n,n.getRng()),g.nodeChanged()}Xv(p,g)}}else{r=n.getNode();for(var s=0,c=v.length;s<c;s++)if(v[s].ceFalseOverride&&i.is(r,v[s].selector))return void y(r,v[s])}},Nb={applyFormat:wb},Eb=Gt.each,Sb=function(e,t,n,r,o){var i,a,u,s,c,l,f,d;null===t.get()&&(a=e,u={},(i=t).set({}),a.on("NodeChange",function(n){var r=mc.getParents(a.dom,n.element),o={};r=Gt.grep(r,function(e){return 1===e.nodeType&&!e.getAttribute("data-mce-bogus")}),Eb(i.get(),function(e,n){Eb(r,function(t){return a.formatter.matchNode(t,n,{},e.similar)?(u[n]||(Eb(e,function(e){e(!0,{node:t,format:n,parents:r})}),u[n]=e),o[n]=e,!1):!hm.matchesUnInheritedFormatSelector(a,t,n)&&void 0})}),Eb(u,function(e,t){o[t]||(delete u[t],Eb(e,function(e){e(!1,{node:n.element,format:t,parents:r})}))})})),c=n,l=r,f=o,d=(s=t).get(),Eb(c.split(","),function(e){d[e]||(d[e]=[],d[e].similar=f),d[e].push(l)}),s.set(d)},kb={get:function(r){var t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(n,e,t){Gt.each(t,function(e,t){r.setAttrib(n,t,e)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]};return Gt.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t}},Tb=Gt.each,Ab=hi.DOM,Rb=function(e,t){var n,o,r,m=t&&t.schema||ri({}),g=function(e){var t,n,r;return o="string"==typeof e?{name:e,classes:[],attrs:{}}:e,t=Ab.create(o.name),n=t,(r=o).classes.length&&Ab.addClass(n,r.classes.join(" ")),Ab.setAttribs(n,r.attrs),t},p=function(n,e,t){var r,o,i,a,u,s,c,l,f=0<e.length&&e[0],d=f&&f.name;if(u=d,s="string"!=typeof(a=n)?a.nodeName.toLowerCase():a,c=m.getElementRule(s),i=!(!(l=c&&c.parentsRequired)||!l.length)&&(u&&-1!==Gt.inArray(l,u)?u:l[0]))d===i?(o=e[0],e=e.slice(1)):o=i;else if(f)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=g(o)).appendChild(n),t&&(r||(r=Ab.create("div")).appendChild(n),Gt.each(t,function(e){var t=g(e);r.insertBefore(t,n)})),p(r,e,o&&o.siblings)};return e&&e.length?(o=e[0],n=g(o),(r=Ab.create("div")).appendChild(p(n,e.slice(1),o.siblings)),r):""},_b=function(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=Gt.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==Gt.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}if("["===r){var i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/);i&&(a.attrs[i[1]]=i[2])}return""})),a.name=t||"div",a},Db=function(e){return e&&"string"==typeof e?(e=(e=e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),Gt.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Gt.map(e.split(/(?:~\+|~|\+)/),_b),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[]},Bb=function(n,e){var t,r,o,i,a,u,s="";if(!1===(u=n.settings.preview_styles))return"";"string"!=typeof u&&(u="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");var c=function(e){return e.replace(/%(\w+)/g,"")};if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}return"preview"in e&&!1===(u=e.preview)?"":(t=e.block||e.inline||"span",(i=Db(e.selector)).length?(i[0].name||(i[0].name=t),t=e.selector,r=Rb(i,n)):r=Rb([t],n),o=Ab.select(t,r)[0]||r.firstChild,Tb(e.styles,function(e,t){(e=c(e))&&Ab.setStyle(o,t,e)}),Tb(e.attributes,function(e,t){(e=c(e))&&Ab.setAttrib(o,t,e)}),Tb(e.classes,function(e){e=c(e),Ab.hasClass(o,e)||Ab.addClass(o,e)}),n.fire("PreviewFormats"),Ab.setStyles(r,{position:"absolute",left:-65535}),n.getBody().appendChild(r),a=Ab.getStyle(n.getBody(),"fontSize",!0),a=/px$/.test(a)?parseInt(a,10):0,Tb(u.split(" "),function(e){var t=Ab.getStyle(o,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=Ab.getStyle(n.getBody(),e,!0),"#ffffff"===Ab.toHex(t).toLowerCase())||"color"===e&&"#000000"===Ab.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===a)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*a+"px"}"border"===e&&t&&(s+="padding:0 2px;"),s+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),Ab.remove(r),s)},Ob=function(e,t,n,r,o){var i=t.get(n);!hm.match(e,n,r,o)||"toggle"in i[0]&&!i[0].toggle?Nb.applyFormat(e,n,r,o):ib(e,n,r,o)},Pb=function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])};function Lb(e){var t,n,r,o=(t=e,n={},(r=function(e,t){e&&("string"!=typeof e?Gt.each(e,function(e,t){r(t,e)}):(t=t.length?t:[t],Gt.each(t,function(e){"undefined"==typeof e.deep&&(e.deep=!e.selector),"undefined"==typeof e.split&&(e.split=!e.selector||e.inline),"undefined"==typeof e.remove&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),n[e]=t))})(kb.get(t.dom)),r(t.settings.formats),{get:function(e){return e?n[e]:n},register:r,unregister:function(e){return e&&n[e]&&delete n[e],n}}),i=Pi(null);return Pb(e),Rm(e),{get:o.get,register:o.register,unregister:o.unregister,apply:d(Nb.applyFormat,e),remove:d(ib,e),toggle:d(Ob,e,o),match:d(hm.match,e),matchAll:d(hm.matchAll,e),matchNode:d(hm.matchNode,e),canApply:d(hm.canApply,e),formatChanged:d(Sb,e,i),getCssText:d(Bb,e)}}var Ib,Mb=Object.prototype.hasOwnProperty,Fb=(Ib=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Mb.call(o,i)&&(n[i]=Ib(n[i],o[i]))}return n}),zb={register:function(t,s,c){t.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n,r=e.length;r--;)(n=e[r]).attr("tabindex",n.attributes.map["data-mce-tabindex"]),n.attr(t,null)}),t.addAttributeFilter("src,href,style",function(e,t){for(var n,r,o=e.length,i="data-mce-"+t,a=s.url_converter,u=s.url_converter_scope;o--;)(r=(n=e[o]).attributes.map[i])!==undefined?(n.attr(t,0<r.length?r:null),n.attr(i,null)):(r=n.attributes.map[t],"style"===t?r=c.serializeStyle(c.parseStyle(r),n.name):a&&(r=a.call(u,r,t,n.name)),n.attr(t,0<r.length?r:null))}),t.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)(n=(t=e[r]).attr("class"))&&(n=t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),t.attr("class",0<n.length?n:null))}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r,o=e.length;o--;)"bookmark"!==(r=e[o]).attributes.map["data-mce-type"]||n.cleanup||(A.from(r.firstChild).exists(function(e){return!la(e.value)})?r.unwrap():r.remove())}),t.addNodeFilter("noscript",function(e){for(var t,n=e.length;n--;)(t=e[n].firstChild)&&(t.value=Wo.decode(t.value))}),t.addNodeFilter("script,style",function(e,t){for(var n,r,o,i=e.length,a=function(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")};i--;)r=(n=e[i]).firstChild?n.firstChild.value:"","script"===t?((o=n.attr("type"))&&n.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="// <![CDATA[\n"+a(r)+"\n// ]]>")):"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="\x3c!--\n"+a(r)+"\n--\x3e")}),t.addNodeFilter("#comment",function(e){for(var t,n=e.length;n--;)0===(t=e[n]).value.indexOf("[CDATA[")?(t.name="#cdata",t.type=4,t.value=t.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===t.value.indexOf("mce:protected ")&&(t.name="#text",t.type=3,t.raw=!0,t.value=unescape(t.value).substr(14))}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n,r=e.length;r--;)7===(n=e[r]).type?n.remove():1===n.type&&("input"!==t||"type"in n.attributes.map||n.attr("type","text"))}),t.addAttributeFilter("data-mce-type",function(e){F(e,function(e){"format-caret"===e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)})},trimTrailingBr:function(e){var t,n,r=function(e){return e&&"br"===e.name};r(t=e.lastChild)&&r(n=t.prev)&&(t.remove(),n.remove())}},Ub={process:function(e,t,n){return f=n,(l=e)&&l.hasEventListeners("PreProcess")&&!f.no_events?(o=t,i=n,c=(r=e).dom,o=o.cloneNode(!0),(a=H.document.implementation).createHTMLDocument&&(u=a.createHTMLDocument(""),Gt.each("BODY"===o.nodeName?o.childNodes:[o],function(e){u.body.appendChild(u.importNode(e,!0))}),o="BODY"!==o.nodeName?u.body.firstChild:u.body,s=c.doc,c.doc=u),hp(r,Fb(i,{node:o})),s&&(c.doc=s),o):t;var r,o,i,a,u,s,c,l,f}},Vb=function(e,a,u){e.addNodeFilter("font",function(e){F(e,function(e){var t,n=a.parse(e.attr("style")),r=e.attr("color"),o=e.attr("face"),i=e.attr("size");r&&(n.color=r),o&&(n["font-family"]=o),i&&(n["font-size"]=u[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",a.serialize(n)),t=e,F(["color","face","size"],function(e){t.attr(e,null)})})})},Hb=function(e,t){var n,r=ii();t.convert_fonts_to_spans&&Vb(e,r,Gt.explode(t.font_size_legacy_values)),n=r,e.addNodeFilter("strike",function(e){F(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})},jb={register:function(e,t){t.inline_styles&&Hb(e,t)}},qb=/^[ \t\r\n]*$/,$b={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11},Wb=function(e,t,n){var r,o,i=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[i])return e[i];if(e!==t){if(r=e[a])return r;for(o=e.parent;o&&o!==t;o=o.parent)if(r=o[a])return r}},Kb=function(){function a(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}return a.create=function(e,t){var n,r;if(n=new a(e,$b[e]||1),t)for(r in t)n.attr(r,t[r]);return n},a.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},a.prototype.attr=function(e,t){var n,r;if("string"!=typeof e){for(r in e)this.attr(r,e[r]);return this}if(n=this.attributes){if(t!==undefined){if(null===t){if(e in n.map)for(delete n.map[e],r=n.length;r--;)if(n[r].name===e)return n=n.splice(r,1),this;return this}if(e in n.map){for(r=n.length;r--;)if(n[r].name===e){n[r].value=t;break}}else n.push({name:e,value:t});return n.map[e]=t,this}return n.map[e]}},a.prototype.clone=function(){var e,t,n,r,o,i=new a(this.name,this.type);if(n=this.attributes){for((o=[]).map={},e=0,t=n.length;e<t;e++)"id"!==(r=n[e]).name&&(o[o.length]={name:r.name,value:r.value},o.map[r.name]=r.value);i.attributes=o}return i.value=this.value,i.shortEnded=this.shortEnded,i},a.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},a.prototype.unwrap=function(){var e,t;for(e=this.firstChild;e;)t=e.next,this.insert(e,this,!0),e=t;this.remove()},a.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},a.prototype.append=function(e){var t;return e.parent&&e.remove(),(t=this.lastChild)?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=this,e},a.prototype.insert=function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},a.prototype.getAll=function(e){var t,n=[];for(t=this.firstChild;t;t=Wb(t,this))t.name===e&&n.push(t);return n},a.prototype.empty=function(){var e,t,n;if(this.firstChild){for(e=[],n=this.firstChild;n;n=Wb(n,this))e.push(n);for(t=e.length;t--;)(n=e[t]).parent=n.firstChild=n.lastChild=n.next=n.prev=null}return this.firstChild=this.lastChild=null,this},a.prototype.isEmpty=function(e,t,n){var r,o,i=this.firstChild;if(t=t||{},i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(e[i.name])return!1;for(r=i.attributes.length;r--;)if("name"===(o=i.attributes[r].name)||0===o.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!qb.test(i.value))return!1;if(3===i.type&&i.parent&&t[i.parent.name]&&qb.test(i.value))return!1;if(n&&n(i))return!1}while(i=Wb(i,this));return!0},a.prototype.walk=function(e){return Wb(this,null,e)},a}(),Xb=function(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new Kb("br",1)).shortEnded=!0:r.empty().append(new Kb("#text",3)).value="\xa0"},Yb=function(e){return Gb(e,"#text")&&"\xa0"===e.firstChild.value},Gb=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},Jb=function(r,e,t,n){return n.isEmpty(e,t,function(e){return t=e,(n=r.getElementRule(t.name))&&n.paddEmpty;var t,n})},Qb=function(e,t){return e&&(t[e.name]||"br"===e.name)},Zb=function(e,p){var h=e.schema;p.remove_trailing_brs&&e.addNodeFilter("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=Gt.extend({},h.getBlockElements()),m=h.getNonEmptyElements(),g=h.getNonEmptyElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){if("br"!==s)break;if("br"===s){o=null;break}}u=u.prev}o&&(o.remove(),Jb(h,m,g,i)&&(c=h.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&Xb(p,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==p.padd_empty_with_br&&((l=new Kb("#text",3)).value="\xa0",o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r,o=e.length;if(!p.allow_unsafe_link_target)for(;o--;)"a"===(t=e[o]).name&&"_blank"===t.attr("target")&&t.attr("rel",(n=t.attr("rel"),r=n?Gt.trim(n):"",/\b(noopener)\b/g.test(r)?r:r.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}),p.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),p.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r=e.length;r--;)if("ul"===(n=(t=e[r]).parent).name||"ol"===n.name)if(t.prev&&"li"===t.prev.name)t.prev.append(t);else{var o=new Kb("li",1);o.attr("style","list-style-type: none"),t.wrap(o)}}),p.validate&&h.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t,n,r,o,i,a,u,s=e.length,c=h.getValidClasses();s--;){for(n=(t=e[s]).attr("class").split(" "),i="",r=0;r<n.length;r++)o=n[r],u=!1,(a=c["*"])&&a[o]&&(u=!0),a=c[t.name],!u&&a&&a[o]&&(u=!0),u&&(i&&(i+=" "),i+=o);i.length||(i=null),t.attr("class",i)}})},ey=Gt.makeMap,ty=Gt.each,ny=Gt.explode,ry=Gt.extend;function oy(k,T){void 0===T&&(T=ri());var A={},R=[],_={},D={};(k=k||{}).validate=!("validate"in k)||k.validate,k.root_name=k.root_name||"body";var B=function(e){var t,n,r;(n=e.name)in A&&((r=_[n])?r.push(e):_[n]=[e]),t=R.length;for(;t--;)(n=R[t].name)in e.attributes.map&&((r=D[n])?r.push(e):D[n]=[e]);return e},e={schema:T,addAttributeFilter:function(e,n){ty(ny(e),function(e){var t;for(t=0;t<R.length;t++)if(R[t].name===e)return void R[t].callbacks.push(n);R.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(R)},addNodeFilter:function(e,n){ty(ny(e),function(e){var t=A[e];t||(A[e]=t=[]),t.push(n)})},getNodeFilters:function(){var e=[];for(var t in A)A.hasOwnProperty(t)&&e.push({name:t,callbacks:A[t]});return e},filterNode:B,parse:function(e,a){var t,n,r,o,i,u,s,c,l,f,d,m=[];a=a||{},_={},D={},l=ry(ey("script,style,head,html,body,title,meta,param"),T.getBlockElements());var g=T.getNonEmptyElements(),p=T.children,h=k.validate,v="forced_root_block"in a?a.forced_root_block:k.forced_root_block,b=T.getWhiteSpaceElements(),y=/^[ \t\r\n]+/,C=/[ \t\r\n]+$/,x=/[ \t\r\n]+/g,w=/^[ \t\r\n]+$/;f=b.hasOwnProperty(a.context)||b.hasOwnProperty(k.root_name);var N=function(e,t){var n,r=new Kb(e,t);return e in A&&((n=_[e])?n.push(r):_[e]=[r]),r},E=function(e){var t,n,r,o,i=T.getBlockElements();for(t=e.prev;t&&3===t.type;){if(0<(r=t.value.replace(C,"")).length)return void(t.value=r);if(n=t.next){if(3===n.type&&n.value.length){t=t.prev;continue}if(!i[n.name]&&"script"!==n.name&&"style"!==n.name){t=t.prev;continue}}o=t.prev,t.remove(),t=o}};t=Nv({validate:h,allow_script_urls:k.allow_script_urls,allow_conditional_comments:k.allow_conditional_comments,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(T.getSelfClosingElements()),cdata:function(e){d.append(N("#cdata",4)).value=e},text:function(e,t){var n;f||(e=e.replace(x," "),Qb(d.lastChild,l)&&(e=e.replace(y,""))),0!==e.length&&((n=N("#text",3)).raw=!!t,d.append(n).value=e)},comment:function(e){d.append(N("#comment",8)).value=e},pi:function(e,t){d.append(N(e,7)).value=t,E(d)},doctype:function(e){d.append(N("#doctype",10)).value=e,E(d)},start:function(e,t,n){var r,o,i,a,u;if(i=h?T.getElementRule(e):{}){for((r=N(i.outputName||e,1)).attributes=t,r.shortEnded=n,d.append(r),(u=p[d.name])&&p[r.name]&&!u[r.name]&&m.push(r),o=R.length;o--;)(a=R[o].name)in t.map&&((s=D[a])?s.push(r):D[a]=[r]);l[e]&&E(r),n||(d=r),!f&&b[e]&&(f=!0)}},end:function(e){var t,n,r,o,i;if(n=h?T.getElementRule(e):{}){if(l[e]&&!f){if((t=d.firstChild)&&3===t.type)if(0<(r=t.value.replace(y,"")).length)t.value=r,t=t.next;else for(o=t.next,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.next,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o;if((t=d.lastChild)&&3===t.type)if(0<(r=t.value.replace(C,"")).length)t.value=r,t=t.prev;else for(o=t.prev,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.prev,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o}if(f&&b[e]&&(f=!1),n.removeEmpty&&Jb(T,g,b,d)&&!d.attributes.map.name&&!d.attr("id"))return i=d.parent,l[d.name]?d.empty().remove():d.unwrap(),void(d=i);n.paddEmpty&&(Yb(d)||Jb(T,g,b,d))&&Xb(k,a,l,d),d=d.parent}}},T);var S=d=new Kb(a.context||k.root_name,11);if(t.parse(e),h&&m.length&&(a.context?a.invalid=!0:function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h;for(d=ey("tr,td,th,tbody,thead,tfoot,table"),l=T.getNonEmptyElements(),f=T.getWhiteSpaceElements(),m=T.getTextBlockElements(),g=T.getSpecialElements(),t=0;t<e.length;t++)if((n=e[t]).parent&&!n.fixed)if(m[n.name]&&"li"===n.parent.name){for(p=n.next;p&&m[p.name];)p.name="li",p.fixed=!0,n.parent.insert(p,n.parent),p=p.next;n.unwrap(n)}else{for(o=[n],r=n.parent;r&&!T.isValidChild(r.name,n.name)&&!d[r.name];r=r.parent)o.push(r);if(r&&1<o.length){for(o.reverse(),i=a=B(o[0].clone()),c=0;c<o.length-1;c++){for(T.isValidChild(a.name,o[c].name)?(u=B(o[c].clone()),a.append(u)):u=a,s=o[c].firstChild;s&&s!==o[c+1];)h=s.next,u.append(s),s=h;a=u}Jb(T,l,f,i)?r.insert(n,o[0],!0):(r.insert(i,o[0],!0),r.insert(n,i)),r=o[0],(Jb(T,l,f,r)||Gb(r,"br"))&&r.empty().remove()}else if(n.parent){if("li"===n.name){if((p=n.prev)&&("ul"===p.name||"ul"===p.name)){p.append(n);continue}if((p=n.next)&&("ul"===p.name||"ul"===p.name)){p.insert(n,p.firstChild,!0);continue}n.wrap(B(new Kb("ul",1)));continue}T.isValidChild(n.parent.name,"div")&&T.isValidChild("div",n.name)?n.wrap(B(new Kb("div",1))):g[n.name]?n.empty().remove():n.unwrap()}}}(m)),v&&("body"===S.name||a.isRootContent)&&function(){var e,t,n=S.firstChild,r=function(e){e&&((n=e.firstChild)&&3===n.type&&(n.value=n.value.replace(y,"")),(n=e.lastChild)&&3===n.type&&(n.value=n.value.replace(C,"")))};if(T.isValidChild(S.name,v.toLowerCase())){for(;n;)e=n.next,3===n.type||1===n.type&&"p"!==n.name&&!l[n.name]&&!n.attr("data-mce-type")?(t||((t=N(v,1)).attr(k.forced_root_block_attrs),S.insert(t,n)),t.append(n)):(r(t),t=null),n=e;r(t)}}(),!a.invalid){for(c in _){for(s=A[c],i=(n=_[c]).length;i--;)n[i].parent||n.splice(i,1);for(r=0,o=s.length;r<o;r++)s[r](n,c,a)}for(r=0,o=R.length;r<o;r++)if((s=R[r]).name in D){for(i=(n=D[s.name]).length;i--;)n[i].parent||n.splice(i,1);for(i=0,u=s.callbacks.length;i<u;i++)s.callbacks[i](n,s.name,a)}}return S}};return Zb(e,k),jb.register(e,k),e}var iy=function(e,t,n){-1===Gt.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))},ay=function(e,t,n){var r=da(n.getInner?t.innerHTML:e.getOuterHTML(t));return n.selection||Co(or.fromDom(t))?r:Gt.trim(r)},uy=function(e,t,n){var r=n.selection?Fb({forced_root_block:!1},n):n,o=e.parse(t,r);return zb.trimTrailingBr(o),o},sy=function(e,t,n,r,o){var i,a,u,s,c=(i=r,Jc(t,n).serialize(i));return a=e,s=c,!(u=o).no_events&&a?vp(a,Fb(u,{content:s})).content:s};function cy(e,t){var a,u,s,c,l,n,r=(a=e,n=["data-mce-selected"],s=(u=t)&&u.dom?u.dom:hi.DOM,c=u&&u.schema?u.schema:ri(a),a.entity_encoding=a.entity_encoding||"named",a.remove_trailing_brs=!("remove_trailing_brs"in a)||a.remove_trailing_brs,l=oy(a,c),zb.register(l,a,s),{schema:c,addNodeFilter:l.addNodeFilter,addAttributeFilter:l.addAttributeFilter,serialize:function(e,t){var n=Fb({format:"html"},t||{}),r=Ub.process(u,e,n),o=ay(s,r,n),i=uy(l,o,n);return"tree"===n.format?i:sy(u,a,c,i,n)},addRules:function(e){c.addValidElements(e)},setRules:function(e){c.setValidElements(e)},addTempAttr:d(iy,l,n),getTempAttrs:function(){return n}});return{schema:r.schema,addNodeFilter:r.addNodeFilter,addAttributeFilter:r.addAttributeFilter,serialize:r.serialize,addRules:r.addRules,setRules:r.setRules,addTempAttr:r.addTempAttr,getTempAttrs:r.getTempAttrs}}function ly(e){return{getBookmark:d(uc,e),moveToBookmark:d(sc,e)}}(ly||(ly={})).isBookmarkNode=cc;var fy,dy,my=ly,gy=Bo.isContentEditableFalse,py=Bo.isContentEditableTrue,hy=function(r,a){var u,s,c,l,f,d,m,g,p,h,v,b,i,y,C,x,w,N=a.dom,E=Gt.each,S=a.getDoc(),k=H.document,T=Math.abs,A=Math.round,R=a.getBody();l={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var e=".mce-content-body";a.contentStyles.push(e+" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: content-box;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+e+" .mce-resizehandle:hover {background: #000}"+e+" img[data-mce-selected],"+e+" hr[data-mce-selected] {outline: 1px solid black;resize: none}"+e+" .mce-clonedresizable {position: absolute;"+(me.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+e+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}");var _=function(e){return e&&("IMG"===e.nodeName||a.dom.is(e,"figure.image"))},n=function(e){var t,n,r=e.target;t=e,n=a.selection.getRng(),!_(t.target)||mv(t.clientX,t.clientY,n)||e.isDefaultPrevented()||(e.preventDefault(),a.selection.select(r))},D=function(e){return a.dom.is(e,"figure.image")?e.querySelector("img"):e},B=function(e){var t=a.settings.object_resizing;return!1!==t&&!me.iOS&&("string"!=typeof t&&(t="table,img,figure.image,div"),"false"!==e.getAttribute("data-mce-resize")&&e!==a.getBody()&&Br(or.fromDom(e),t))},O=function(e){var t,n,r,o;t=e.screenX-d,n=e.screenY-m,y=t*f[2]+h,C=n*f[3]+v,y=y<5?5:y,C=C<5?5:C,(_(u)&&!1!==a.settings.resize_img_proportional?!pv.modifierPressed(e):pv.modifierPressed(e)||_(u)&&f[2]*f[3]!=0)&&(T(t)>T(n)?(C=A(y*b),y=A(C/b)):(y=A(C/b),C=A(y*b))),N.setStyles(D(s),{width:y,height:C}),r=0<(r=f.startPos.x+t)?r:0,o=0<(o=f.startPos.y+n)?o:0,N.setStyles(c,{left:r,top:o,display:"block"}),c.innerHTML=y+" × "+C,f[2]<0&&s.clientWidth<=y&&N.setStyle(s,"left",g+(h-y)),f[3]<0&&s.clientHeight<=C&&N.setStyle(s,"top",p+(v-C)),(t=R.scrollWidth-x)+(n=R.scrollHeight-w)!=0&&N.setStyles(c,{left:r-t,top:o-n}),i||(xp(a,u,h,v),i=!0)},P=function(){i=!1;var e=function(e,t){t&&(u.style[e]||!a.schema.isValid(u.nodeName.toLowerCase(),e)?N.setStyle(D(u),e,t):N.setAttrib(D(u),e,t))};e("width",y),e("height",C),N.unbind(S,"mousemove",O),N.unbind(S,"mouseup",P),k!==S&&(N.unbind(k,"mousemove",O),N.unbind(k,"mouseup",P)),N.remove(s),N.remove(c),o(u),wp(a,u,y,C),N.setAttrib(u,"style",N.getAttrib(u,"style")),a.nodeChanged()},o=function(e){var t,r,o,n,i;L(),F(),t=N.getPos(e,R),g=t.x,p=t.y,i=e.getBoundingClientRect(),r=i.width||i.right-i.left,o=i.height||i.bottom-i.top,u!==e&&(u=e,y=C=0),n=a.fire("ObjectSelected",{target:e}),B(e)&&!n.isDefaultPrevented()?E(l,function(n,e){var t;(t=N.get("mceResizeHandle"+e))&&N.remove(t),t=N.add(R,"div",{id:"mceResizeHandle"+e,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+e+"-resize; margin:0; padding:0"}),11===me.ie&&(t.contentEditable=!1),N.bind(t,"mousedown",function(e){var t;e.stopImmediatePropagation(),e.preventDefault(),d=(t=e).screenX,m=t.screenY,h=D(u).clientWidth,v=D(u).clientHeight,b=v/h,(f=n).startPos={x:r*n[0]+g,y:o*n[1]+p},x=R.scrollWidth,w=R.scrollHeight,s=u.cloneNode(!0),N.addClass(s,"mce-clonedresizable"),N.setAttrib(s,"data-mce-bogus","all"),s.contentEditable=!1,s.unSelectabe=!0,N.setStyles(s,{left:g,top:p,margin:0}),s.removeAttribute("data-mce-selected"),R.appendChild(s),N.bind(S,"mousemove",O),N.bind(S,"mouseup",P),k!==S&&(N.bind(k,"mousemove",O),N.bind(k,"mouseup",P)),c=N.add(R,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},h+" × "+v)}),n.elm=t,N.setStyles(t,{left:r*n[0]+g-t.offsetWidth/2,top:o*n[1]+p-t.offsetHeight/2})}):L(),u.setAttribute("data-mce-selected","1")},L=function(){var e,t;for(e in F(),u&&u.removeAttribute("data-mce-selected"),l)(t=N.get("mceResizeHandle"+e))&&(N.unbind(t),N.remove(t))},I=function(e){var t,n=function(e,t){if(e)do{if(e===t)return!0}while(e=e.parentNode)};i||a.removed||(E(N.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),t="mousedown"===e.type?e.target:r.getNode(),n(t=N.$(t).closest("table,img,figure.image,hr")[0],R)&&(z(),n(r.getStart(!0),t)&&n(r.getEnd(!0),t))?o(t):L())},M=function(e){return gy(function(e,t){for(;t&&t!==e;){if(py(t)||gy(t))return t;t=t.parentNode}return null}(a.getBody(),e))},F=function(){for(var e in l){var t=l[e];t.elm&&(N.unbind(t.elm),delete t.elm)}},z=function(){try{a.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}};return a.on("init",function(){z(),me.ie&&11<=me.ie&&(a.on("mousedown click",function(e){var t=e.target,n=t.nodeName;i||!/^(TABLE|IMG|HR)$/.test(n)||M(t)||(2!==e.button&&a.selection.select(t,"TABLE"===n),"mousedown"===e.type&&a.nodeChanged())}),a.dom.bind(R,"mscontrolselect",function(e){var t=function(e){be.setEditorTimeout(a,function(){a.selection.select(e)})};if(M(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}));var t=be.throttle(function(e){a.composing||I(e)});a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged",t),a.on("keyup compositionend",function(e){u&&"TABLE"===u.nodeName&&t(e)}),a.on("hide blur",L),a.on("contextmenu",n)}),a.on("remove",F),{isResizable:B,showResizeRect:o,hideResizeRect:L,updateResizeRect:I,destroy:function(){u=s=null}}},vy=function(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}},by=function(e,t,n){var r,o,i,a,u,s=e.dom,c=s.getRoot(),l=0;if(u={elm:t,alignToTop:n},e.fire("scrollIntoView",u),!u.isDefaultPrevented()&&Bo.isElement(t)){if(!1===n&&(l=t.offsetHeight),"BODY"!==c.nodeName){var f=e.selection.getScrollContainer();if(f)return r=vy(t).y-vy(f).y+l,a=f.clientHeight,void((r<(i=f.scrollTop)||i+a<r+25)&&(f.scrollTop=r<i?r:r-a+25))}o=s.getViewPort(e.getWin()),r=s.getPos(t).y+l,i=o.y,a=o.h,(r<o.y||i+a<r+25)&&e.getWin().scrollTo(0,r<i?r:r-a+25)}},yy=function(d,e){te(gu.fromRangeStart(e).getClientRects()).each(function(e){var t,n,r,o,i,a,u,s,c,l=function(e){if(e.inline)return e.getBody().getBoundingClientRect();var t=e.getWin();return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight,width:t.innerWidth,height:t.innerHeight}}(d),f={x:(i=t=l,a=n=e,a.left>i.left&&a.right<i.right?0:a.left<i.left?a.left-i.left:a.right-i.right),y:(r=t,o=n,o.top>r.top&&o.bottom<r.bottom?0:o.top<r.top?o.top-r.top:o.bottom-r.bottom)};s=0!==f.x?0<f.x?f.x+4:f.x-4:0,c=0!==f.y?0<f.y?f.y+4:f.y-4:0,(u=d).inline?(u.getBody().scrollLeft+=s,u.getBody().scrollTop+=c):u.getWin().scrollBy(s,c)})},Cy=function(e){return Bo.isContentEditableTrue(e)||Bo.isContentEditableFalse(e)},xy=function(e,t,n){var r,o,i,a,u,s=n;if(s.caretPositionFromPoint)(o=s.caretPositionFromPoint(e,t))&&((r=n.createRange()).setStart(o.offsetNode,o.offset),r.collapse(!0));else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(s.body.createTextRange){r=s.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(c){r=function(e,n,t){var r,o,i;if(r=t.elementFromPoint(e,n),o=t.body.createTextRange(),r&&"HTML"!==r.tagName||(r=t.body),o.moveToElementText(r),0<(i=(i=Gt.toArray(o.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-(t=Math.abs(Math.max(t.top-n,t.bottom-n)))})).length){n=(i[0].bottom+i[0].top)/2;try{return o.moveToPoint(e,n),o.collapse(!0),o}catch(a){}}return null}(e,t,n)}return i=r,a=n.body,u=i&&i.parentElement?i.parentElement():null,Bo.isContentEditableFalse(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(u,a,Cy))?null:i}return r},wy=function(n,e){return W(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})},Ny=function(e,t){var n=(t||H.document).createDocumentFragment();return F(e,function(e){n.appendChild(e.dom())}),or.fromDom(n)},Ey=Sr("element","width","rows"),Sy=Sr("element","cells"),ky=Sr("x","y"),Ty=function(e,t){var n=parseInt(Cr(e,t),10);return isNaN(n)?1:n},Ay=function(e){return U(e,function(e,t){return t.cells().length>e?t.cells().length:e},0)},Ry=function(e,t){for(var n=e.rows(),r=0;r<n.length;r++)for(var o=n[r].cells(),i=0;i<o.length;i++)if(Pr(o[i],t))return A.some(ky(i,r));return A.none()},_y=function(e,t,n,r,o){for(var i=[],a=e.rows(),u=n;u<=o;u++){var s=a[u].cells(),c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(Sy(a[u].element(),c))}return i},Dy=function(e){var o=Ey(aa(e),0,[]);return F(ji(e,"tr"),function(n,r){F(ji(n,"td,th"),function(e,t){!function(e,t,n,r,o){for(var i=Ty(o,"rowspan"),a=Ty(o,"colspan"),u=e.rows(),s=n;s<n+i;s++){u[s]||(u[s]=Sy(ua(r),[]));for(var c=t;c<t+a;c++)u[s].cells()[c]=s===n&&c===t?o:aa(o)}}(o,function(e,t,n){for(;r=t,o=n,i=void 0,((i=e.rows())[o]?i[o].cells():[])[r];)t++;var r,o,i;return t}(o,t,r),r,n,e)})}),Ey(o.element(),Ay(o.rows()),o.rows())},By=function(e){return n=W((t=e).rows(),function(e){var t=W(e.cells(),function(e){var t=ua(e);return xr(t,"colspan"),xr(t,"rowspan"),t}),n=aa(e.element());return Ri(n,t),n}),r=aa(t.element()),o=or.fromTag("tbody"),Ri(o,n),Ai(r,o),r;var t,n,r,o},Oy=function(l,e,t){return Ry(l,e).bind(function(c){return Ry(l,t).map(function(e){return t=l,r=e,o=(n=c).x(),i=n.y(),a=r.x(),u=r.y(),s=i<u?_y(t,o,i,a,u):_y(t,o,u,a,i),Ey(t.element(),Ay(s),s);var t,n,r,o,i,a,u,s})})},Py=function(n,t){return V(n,function(e){return"li"===sr(e)&&Mh(e,t)}).fold(q([]),function(e){return(t=n,V(t,function(e){return"ul"===sr(e)||"ol"===sr(e)})).map(function(e){return[or.fromTag("li"),or.fromTag(sr(e))]}).getOr([]);var t})},Ly=function(e,t){var n,r=or.fromDom(t.commonAncestorContainer),o=Ml(r,e),i=z(o,function(e){return fo(e)||co(e)}),a=Py(o,t),u=i.concat(a.length?a:ho(n=r)?Mr(n).filter(po).fold(q([]),function(e){return[n,e]}):po(n)?[n]:[]);return W(u,aa)},Iy=function(){return Ny([])},My=function(e,t){return n=or.fromDom(t.cloneContents()),r=Ly(e,t),o=U(r,function(e,t){return Ai(t,e),t},n),0<r.length?Ny([o]):o;var n,r,o},Fy=function(e,o){return(t=e,n=o[0],Xi(n,"table",d(Pr,t))).bind(function(e){var t=o[0],n=o[o.length-1],r=Dy(e);return Oy(r,t,n).map(function(e){return Ny([By(e)])})}).getOrThunk(Iy);var t,n},zy=function(e,t){var n,r,o=Qd(t,e);return 0<o.length?Fy(e,o):(n=e,0<(r=t).length&&r[0].collapsed?Iy():My(n,r[0]))},Uy=function(e,t){if(void 0===t&&(t={}),t.get=!0,t.format=t.format||"html",t.selection=!0,(t=e.fire("BeforeGetContent",t)).isDefaultPrevented())return e.fire("GetContent",t),t.content;if("text"===t.format)return c=e,A.from(c.selection.getRng()).map(function(e){var t=c.dom.add(c.getBody(),"div",{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),n=da(t.innerText);return c.dom.remove(t),n}).getOr("");t.getInner=!0;var n,r,o,i,a,u,s,c,l=(r=t,i=(n=e).selection.getRng(),a=n.dom.create("body"),u=n.selection.getSel(),s=wy(n,Wd(u)),(o=r.contextual?zy(or.fromDom(n.getBody()),s).dom():i.cloneContents())&&a.appendChild(o),n.selection.serializer.serialize(a,r));return"tree"===t.format?l:(t.content=e.selection.isCollapsed()?"":l,e.fire("GetContent",t),t.content)},Vy=function(e,t,n){var r,o,i,a=e.selection.getRng(),u=e.getDoc();if((n=n||{format:"html"}).set=!0,n.selection=!0,n.content=t,n.no_events||!(n=e.fire("BeforeSetContent",n)).isDefaultPrevented()){if(t=n.content,a.insertNode){t+='<span id="__caret">_</span>',a.startContainer===u&&a.endContainer===u?u.body.innerHTML=t:(a.deleteContents(),0===u.body.childNodes.length?u.body.innerHTML=t:a.createContextualFragment?a.insertNode(a.createContextualFragment(t)):(o=u.createDocumentFragment(),i=u.createElement("div"),o.appendChild(i),i.outerHTML=t,a.insertNode(o))),r=e.dom.get("__caret"),(a=u.createRange()).setStartBefore(r),a.setEndBefore(r),e.selection.setRng(a),e.dom.remove("__caret");try{e.selection.setRng(a)}catch(s){}}else a.item&&(u.execCommand("Delete",!1,null),a=e.getRng()),/^\s+/.test(t)?(a.pasteHTML('<span id="__mce_tmp">_</span>'+t),e.dom.remove("__mce_tmp")):a.pasteHTML(t);n.no_events||e.fire("SetContent",n)}else e.fire("SetContent",n)},Hy=function(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return A.from(i).map(or.fromDom).map(function(e){return r&&t.collapsed?e:jr(e,o(e,a)).getOr(e)}).bind(function(e){return lr(e)?A.some(e):Mr(e)}).map(function(e){return e.dom()}).getOr(e)},jy=function(e,t,n){return Hy(e,t,!0,n,function(e,t){return Math.min(e.dom().childNodes.length,t)})},qy=function(e,t,n){return Hy(e,t,!1,n,function(e,t){return 0<t?t-1:t})},$y=function(e,t){for(var n=e;e&&Bo.isText(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n},Wy=Gt.each,Ky=function(e){return!!e.select},Xy=function(e){return!(!e||!e.ownerDocument)&&Lr(or.fromDom(e.ownerDocument),or.fromDom(e))},Yy=function(u,s,e,c){var n,t,l,f,a,r=function(e,t){return Vy(c,e,t)},o=function(e){var t=m();t.collapse(!!e),i(t)},d=function(){return s.getSelection?s.getSelection():s.document.selection},m=function(){var e,t,n,r,o=function(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}};if(!s)return null;if(null==(r=s.document))return null;if(c.bookmark!==undefined&&!1===Kp(c)){var i=np(c);if(i.isSome())return i.map(function(e){return wy(c,[e])[0]}).getOr(r.createRange())}try{(e=d())&&(t=0<e.rangeCount?e.getRangeAt(0):e.createRange?e.createRange():r.createRange())}catch(a){}return(t=wy(c,[t])[0])||(t=r.createRange?r.createRange():r.body.createTextRange()),t.setStart&&9===t.startContainer.nodeType&&t.collapsed&&(n=u.getRoot(),t.setStart(n,0),t.setEnd(n,0)),l&&f&&(0===o(t.START_TO_START,t,l)&&0===o(t.END_TO_END,t,l)?t=f:f=l=null),t},i=function(e,t){var n,r;if((o=e)&&(Ky(o)||Xy(o.startContainer)&&Xy(o.endContainer))){var o,i=Ky(e)?e:null;if(i){f=null;try{i.select()}catch(a){}}else{if(n=d(),e=c.fire("SetSelectionRange",{range:e,forward:t}).range,n){f=e;try{n.removeAllRanges(),n.addRange(e)}catch(a){}!1===t&&n.extend&&(n.collapse(e.endContainer,e.endOffset),n.extend(e.startContainer,e.startOffset)),l=0<n.rangeCount?n.getRangeAt(0):null}e.collapsed||e.startContainer!==e.endContainer||!n.setBaseAndExtent||me.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(r=e.startContainer.childNodes[e.startOffset])&&"IMG"===r.tagName&&(n.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),n.anchorNode===e.startContainer&&n.focusNode===e.endContainer||n.setBaseAndExtent(r,0,r,1)),c.fire("AfterSetSelectionRange",{range:e,forward:t})}}},g=function(){var e,t,n=d();return!(n&&n.anchorNode&&n.focusNode)||((e=u.createRng()).setStart(n.anchorNode,n.anchorOffset),e.collapse(!0),(t=u.createRng()).setStart(n.focusNode,n.focusOffset),t.collapse(!0),e.compareBoundaryPoints(e.START_TO_START,t)<=0)},p={bookmarkManager:null,controlSelection:null,dom:u,win:s,serializer:e,editor:c,collapse:o,setCursorLocation:function(e,t){var n=u.createRng();e?(n.setStart(e,t),n.setEnd(e,t),i(n),o(!1)):(Fh(u,n,c.getBody(),!0),i(n))},getContent:function(e){return Uy(c,e)},setContent:r,getBookmark:function(e,t){return n.getBookmark(e,t)},moveToBookmark:function(e){return n.moveToBookmark(e)},select:function(e,t){var r,n,o;return(r=u,n=e,o=t,A.from(n).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(Fh(r,n,e,!0),Fh(r,n,e,!1)),n})).each(i),e},isCollapsed:function(){var e=m(),t=d();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:g,setNode:function(e){return r(u.getOuterHTML(e)),e},getNode:function(){return e=c.getBody(),(t=m())?(r=t.startContainer,o=t.endContainer,i=t.startOffset,a=t.endOffset,n=t.commonAncestorContainer,!t.collapsed&&(r===o&&a-i<2&&r.hasChildNodes()&&(n=r.childNodes[i]),3===r.nodeType&&3===o.nodeType&&(r=r.length===i?$y(r.nextSibling,!0):r.parentNode,o=0===a?$y(o.previousSibling,!1):o.parentNode,r&&r===o))?r:n&&3===n.nodeType?n.parentNode:n):e;var e,t,n,r,o,i,a},getSel:d,setRng:i,getRng:m,getStart:function(e){return jy(c.getBody(),m(),e)},getEnd:function(e){return qy(c.getBody(),m(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o,i,a=[];if(i=e.getRoot(),n=e.getParent(n||jy(i,t,t.collapsed),e.isBlock),r=e.getParent(r||qy(i,t,t.collapsed),e.isBlock),n&&n!==i&&a.push(n),n&&r&&n!==r)for(var u=new oo(o=n,i);(o=u.next())&&o!==r;)e.isBlock(o)&&a.push(o);return r&&n!==r&&r!==i&&a.push(r),a}(u,m(),e,t)},normalize:function(){var e=m(),t=d();if(!Xd(t)&&zh(c)){var n=_g(u,e);return n.each(function(e){i(e,g())}),n.getOr(e)}return e},selectorChanged:function(e,t){var i;return a||(a={},i={},c.on("NodeChange",function(e){var n=e.element,r=u.getParents(n,null,u.getRoot()),o={};Wy(a,function(e,n){Wy(r,function(t){if(u.is(t,n))return i[n]||(Wy(e,function(e){e(!0,{node:t,selector:n,parents:r})}),i[n]=e),o[n]=e,!1})}),Wy(i,function(e,t){o[t]||(delete i[t],Wy(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),a[e]||(a[e]=[]),a[e].push(t),p},getScrollContainer:function(){for(var e,t=u.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){return by(c,e,t)},placeCaretAt:function(e,t){return i(xy(e,t,c.getDoc()))},getBoundingClientRect:function(){var e=m();return e.collapsed?vu.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){s=l=f=null,t.destroy()}};return n=my(p),t=hy(p,c),p.bookmarkManager=n,p.controlSelection=t,p};(dy=fy||(fy={}))[dy.Br=0]="Br",dy[dy.Block=1]="Block",dy[dy.Wrap=2]="Wrap",dy[dy.Eol=3]="Eol";var Gy=function(e,t){return e===pu.Backwards?t.reverse():t},Jy=function(e,t,n,r){for(var o,i,a,u,s,c,l=Hs(n),f=r,d=[];f&&(s=l,c=f,o=t===pu.Forwards?s.next(c):s.prev(c));){if(Bo.isBr(o.getNode(!1)))return t===pu.Forwards?{positions:Gy(t,d).concat([o]),breakType:fy.Br,breakAt:A.some(o)}:{positions:Gy(t,d),breakType:fy.Br,breakAt:A.some(o)};if(o.isVisible()){if(e(f,o)){var m=(i=t,a=f,u=o,Bo.isBr(u.getNode(i===pu.Forwards))?fy.Br:!1===ps(a,u)?fy.Block:fy.Wrap);return{positions:Gy(t,d),breakType:m,breakAt:A.some(o)}}d.push(o),f=o}else f=o}return{positions:Gy(t,d),breakType:fy.Eol,breakAt:A.none()}},Qy=function(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===pu.Backwards?t.concat(e):[e].concat(t)}).getOr([])},Zy=function(e,i){return U(e,function(e,o){return e.fold(function(){return A.some(o)},function(r){return Wa([te(r.getClientRects()),te(o.getClientRects())],function(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},A.none())},eC=function(t,e){return te(e.getClientRects()).bind(function(e){return Zy(t,e.left)})},tC=d(Jy,gu.isAbove,-1),nC=d(Jy,gu.isBelow,1),rC=d(Qy,-1,tC),oC=d(Qy,1,nC),iC=Bo.isContentEditableFalse,aC=Ha,uC=function(e,t,n,r){var o=e===pu.Forwards,i=o?mf:gf;if(!r.collapsed){var a=aC(r);if(iC(a))return Mm(e,t,a,e===pu.Backwards,!0)}var u=pa(r.startContainer),s=Ns(e,t.getBody(),r);if(i(s))return Fm(t,s.getNode(!o));var c=yl.normalizePosition(o,n(s));if(!c)return u?r:null;if(i(c))return Mm(e,t,c.getNode(!o),o,!0);var l=n(c);return l&&i(l)&&ks(c,l)?Mm(e,t,l.getNode(!o),o,!0):u?Um(t,c.toRange(),!0):null},sC=function(e,t,n,r){var o,i,a,u,s,c,l,f,d;if(d=aC(r),o=Ns(e,t.getBody(),r),i=n(t.getBody(),rv(1),o),a=z(i,ov(1)),s=$t.last(o.getClientRects()),(mf(o)||hf(o))&&(d=o.getNode()),(gf(o)||vf(o))&&(d=o.getNode(!0)),!s)return null;if(c=s.left,(u=lv(a,c))&&iC(u.node))return l=Math.abs(c-u.left),f=Math.abs(c-u.right),Mm(e,t,u.node,l<f,!0);if(d){var m=function(e,t,n,r){var o,i,a,u,s,c,l=Hs(t),f=[],d=0,m=function(e){return $t.last(e.getClientRects())};1===e?(o=l.next,i=Va,a=Ua,u=vu.after(r)):(o=l.prev,i=Ua,a=Va,u=vu.before(r)),c=m(u);do{if(u.isVisible()&&!a(s=m(u),c)){if(0<f.length&&i(s,$t.last(f))&&d++,(s=Ma(s)).position=u,s.line=d,n(s))return f;f.push(s)}}while(u=o(u));return f}(e,t.getBody(),rv(1),d);if(u=lv(z(m,ov(1)),c))return Um(t,u.position.toRange(),!0);if(u=$t.last(z(m,ov(0))))return Um(t,u.position.toRange(),!0)}},cC=function(e,t,n){var r,o,i,a,u=Hs(e.getBody()),s=d(Ss,u.next),c=d(Ss,u.prev);if(n.collapsed&&e.settings.forced_root_block){if(!(r=e.dom.getParent(n.startContainer,"PRE")))return;(1===t?s(vu.fromRangeStart(n)):c(vu.fromRangeStart(n)))||(a=(i=e).dom.create(eg(i)),(!me.ie||11<=me.ie)&&(a.innerHTML='<br data-mce-bogus="1">'),o=a,1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse())}},lC=function(l,f){return function(){var e,t,n,r,o,i,a,u,s,c=(t=f,r=Hs((e=l).getBody()),o=d(Ss,r.next),i=d(Ss,r.prev),a=t?pu.Forwards:pu.Backwards,u=t?o:i,s=e.selection.getRng(),(n=uC(a,e,u,s))?n:(n=cC(e,a,s))||null);return!!c&&(l.selection.setRng(c),!0)}},fC=function(u,s){return function(){var e,t,n,r,o,i,a=(r=(t=s)?1:-1,o=t?nv:tv,i=(e=u).selection.getRng(),(n=sC(r,e,o,i))?n:(n=cC(e,r,i))||null);return!!a&&(u.selection.setRng(a),!0)}},dC=function(r,o){return function(){var t,e=o?vu.fromRangeEnd(r.selection.getRng()):vu.fromRangeStart(r.selection.getRng()),n=o?nC(r.getBody(),e):tC(r.getBody(),e);return(o?ne(n.positions):te(n.positions)).filter((t=o,function(e){return t?gf(e):mf(e)})).fold(q(!1),function(e){return r.selection.setRng(e.toRange()),!0})}},mC=function(e,t,n,r,o){var i,a,u,s,c=ji(or.fromDom(n),"td,th,caption").map(function(e){return e.dom()}),l=z((i=e,J(c,function(e){var t,n,r=(t=Ma(e.getBoundingClientRect()),n=-1,{left:t.left-n,top:t.top-n,right:t.right+2*n,bottom:t.bottom+2*n,width:t.width+n,height:t.height+n});return[{x:r.left,y:i(r),cell:e},{x:r.right,y:i(r),cell:e}]})),function(e){return t(e,o)});return(a=l,u=r,s=o,U(a,function(e,r){return e.fold(function(){return A.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-u)+Math.abs(e.y-s)),n=Math.sqrt(Math.abs(r.x-u)+Math.abs(r.y-s));return A.some(n<t?r:e)})},A.none())).map(function(e){return e.cell})},gC=d(mC,function(e){return e.bottom},function(e,t){return e.y<t}),pC=d(mC,function(e){return e.top},function(e,t){return e.y>t}),hC=function(t,n){return te(n.getClientRects()).bind(function(e){return gC(t,e.left,e.top)}).bind(function(e){return eC((t=e,Zs.lastPositionIn(t).map(function(e){return tC(t,e).positions.concat(e)}).getOr([])),n);var t})},vC=function(t,n){return ne(n.getClientRects()).bind(function(e){return pC(t,e.left,e.top)}).bind(function(e){return eC((t=e,Zs.firstPositionIn(t).map(function(e){return[e].concat(nC(t,e).positions)}).getOr([])),n);var t})},bC=function(e,t){e.selection.setRng(t),yy(e,t)},yC=function(e,t,n){var r,o,i,a,u=e(t,n);return(a=u).breakType===fy.Wrap&&0===a.positions.length||!Bo.isBr(n.getNode())&&(i=u).breakType===fy.Br&&1===i.positions.length?(r=e,o=t,!u.breakAt.map(function(e){return r(o,e).breakAt.isSome()}).getOr(!1)):u.breakAt.isNone()},CC=d(yC,tC),xC=d(yC,nC),wC=function(e,t,n,r){var o,i,a,u,s=e.selection.getRng(),c=t?1:-1;if(ns()&&(o=t,i=s,a=n,u=vu.fromRangeStart(i),Zs.positionIn(!o,a).map(function(e){return e.isEqual(u)}).getOr(!1))){var l=Mm(c,e,n,!t,!0);return bC(e,l),!0}return!1},NC=function(e,t){var n=t.getNode(e);return Bo.isElement(n)&&"TABLE"===n.nodeName?A.some(n):A.none()},EC=function(u,s,c){var e=NC(!!s,c),t=!1===s;e.fold(function(){return bC(u,c.toRange())},function(a){return Zs.positionIn(t,u.getBody()).filter(function(e){return e.isEqual(c)}).fold(function(){return bC(u,c.toRange())},function(e){return n=s,o=a,t=c,void((i=eg(r=u))?r.undoManager.transact(function(){var e=or.fromTag(i);yr(e,tg(r)),Ai(e,or.fromTag("br")),n?ki(or.fromDom(o),e):Si(or.fromDom(o),e);var t=r.dom.createRng();t.setStart(e.dom(),0),t.setEnd(e.dom(),0),bC(r,t)}):bC(r,t.toRange()));var n,r,o,t,i})})},SC=function(e,t,n,r){var o,i,a,u,s,c,l=e.selection.getRng(),f=vu.fromRangeStart(l),d=e.getBody();if(!t&&CC(r,f)){var m=(u=d,hC(s=n,c=f).orThunk(function(){return te(c.getClientRects()).bind(function(e){return Zy(rC(u,vu.before(s)),e.left)})}).getOr(vu.before(s)));return EC(e,t,m),!0}return!(!t||!xC(r,f))&&(o=d,m=vC(i=n,a=f).orThunk(function(){return te(a.getClientRects()).bind(function(e){return Zy(oC(o,vu.after(i)),e.left)})}).getOr(vu.after(i)),EC(e,t,m),!0)},kC=function(t,n){return function(){return A.from(t.dom.getParent(t.selection.getNode(),"td,th")).bind(function(e){return A.from(t.dom.getParent(e,"table")).map(function(e){return wC(t,n,e)})}).getOr(!1)}},TC=function(n,r){return function(){return A.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return A.from(n.dom.getParent(t,"table")).map(function(e){return SC(n,r,e,t)})}).getOr(!1)}},AC=function(e){return M(["figcaption"],sr(e))},RC=function(e){var t=H.document.createRange();return t.setStartBefore(e.dom()),t.setEndBefore(e.dom()),t},_C=function(e,t,n){n?Ai(e,t):Ti(e,t)},DC=function(e,t,n,r){return""===t?(l=e,f=r,d=or.fromTag("br"),_C(l,d,f),RC(d)):(o=e,i=r,a=t,u=n,s=or.fromTag(a),c=or.fromTag("br"),yr(s,u),Ai(s,c),_C(o,s,i),RC(c));var o,i,a,u,s,c,l,f,d},BC=function(e,t,n){return t?(o=e.dom(),nC(o,n).breakAt.isNone()):(r=e.dom(),tC(r,n).breakAt.isNone());var r,o},OC=function(t,n){var e,r,o,i=or.fromDom(t.getBody()),a=vu.fromRangeStart(t.selection.getRng()),u=eg(t),s=tg(t);return(e=a,r=i,o=d(Pr,r),Ki(or.fromDom(e.container()),lo,o).filter(AC)).exists(function(){if(BC(i,n,a)){var e=DC(i,u,s,n);return t.selection.setRng(e),!0}return!1})},PC=function(e,t){return function(){return!!e.selection.isCollapsed()&&OC(e,t)}},LC=function(e,r){return J(W(e,function(e){return Fb({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:o},e)}),function(e){return t=e,(n=r).keyCode===t.keyCode&&n.shiftKey===t.shiftKey&&n.altKey===t.altKey&&n.ctrlKey===t.ctrlKey&&n.metaKey===t.metaKey?[e]:[];var t,n})},IC=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,r)}},MC=function(e,t){return V(LC(e,t),function(e){return e.action()})},FC=function(i,a){i.on("keydown",function(e){var t,n,r,o;!1===e.isDefaultPrevented()&&(t=i,n=a,r=e,o=nr.detect().os,MC([{keyCode:pv.RIGHT,action:lC(t,!0)},{keyCode:pv.LEFT,action:lC(t,!1)},{keyCode:pv.UP,action:fC(t,!1)},{keyCode:pv.DOWN,action:fC(t,!0)},{keyCode:pv.RIGHT,action:kC(t,!0)},{keyCode:pv.LEFT,action:kC(t,!1)},{keyCode:pv.UP,action:TC(t,!1)},{keyCode:pv.DOWN,action:TC(t,!0)},{keyCode:pv.RIGHT,action:kd.move(t,n,!0)},{keyCode:pv.LEFT,action:kd.move(t,n,!1)},{keyCode:pv.RIGHT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:kd.moveNextWord(t,n)},{keyCode:pv.LEFT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:kd.movePrevWord(t,n)},{keyCode:pv.UP,action:PC(t,!1)},{keyCode:pv.DOWN,action:PC(t,!0)}],r).each(function(e){r.preventDefault()}))})},zC=function(o,i){o.on("keydown",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(t=o,n=i,r=e,MC([{keyCode:pv.BACKSPACE,action:IC(Ff,t,!1)},{keyCode:pv.DELETE,action:IC(Ff,t,!0)},{keyCode:pv.BACKSPACE,action:IC(Hm,t,!1)},{keyCode:pv.DELETE,action:IC(Hm,t,!0)},{keyCode:pv.BACKSPACE,action:IC(_d,t,n,!1)},{keyCode:pv.DELETE,action:IC(_d,t,n,!0)},{keyCode:pv.BACKSPACE,action:IC(cm,t,!1)},{keyCode:pv.DELETE,action:IC(cm,t,!0)},{keyCode:pv.BACKSPACE,action:IC(Gl,t,!1)},{keyCode:pv.DELETE,action:IC(Gl,t,!0)},{keyCode:pv.BACKSPACE,action:IC(Wl,t,!1)},{keyCode:pv.DELETE,action:IC(Wl,t,!0)},{keyCode:pv.BACKSPACE,action:IC(Pm,t,!1)},{keyCode:pv.DELETE,action:IC(Pm,t,!0)}],r).each(function(e){r.preventDefault()}))}),o.on("keyup",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=o,n=e,MC([{keyCode:pv.BACKSPACE,action:IC(zf,t)},{keyCode:pv.DELETE,action:IC(zf,t)}],n))})},UC=function(e){return A.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))},VC=function(e,t){var n,r,o,i=t,a=e.dom,u=e.schema.getMoveCaretBeforeOnEnterElements();if(t){if(/^(LI|DT|DD)$/.test(t.nodeName)){var s=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild);s&&/^(UL|OL|DL)$/.test(s.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(o=a.createRng(),t.normalize(),t.hasChildNodes()){for(n=new oo(t,t);r=n.current();){if(Bo.isText(r)){o.setStart(r,0),o.setEnd(r,0);break}if(u[r.nodeName.toLowerCase()]){o.setStartBefore(r),o.setEndBefore(r);break}i=r,r=n.next()}r||(o.setStart(i,0),o.setEnd(i,0))}else Bo.isBr(t)?t.nextSibling&&a.isBlock(t.nextSibling)?(o.setStartBefore(t),o.setEndBefore(t)):(o.setStartAfter(t),o.setEndAfter(t)):(o.setStart(t,0),o.setEnd(t,0));e.selection.setRng(o),a.remove(void 0),e.selection.scrollIntoView(t)}},HC=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},jC=UC,qC=function(e){return UC(e).fold(q(""),function(e){return e.nodeName.toUpperCase()})},$C=function(e){return UC(e).filter(function(e){return ho(or.fromDom(e))}).isSome()},WC=function(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t},KC=function(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)},XC=function(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e},YC=function(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!Bo.isElement(r);)r=r[n?"nextSibling":"previousSibling"];return r===t},GC=function(e,t,n,r,o){var i=e.dom,a=e.selection.getRng();if(n!==e.getBody()){var u;KC(u=n)&&KC(u.parentNode)&&(o="LI");var s,c,l=o?t(o):i.create("BR");if(YC(n,r,!0)&&YC(n,r,!1))WC(n,"LI")?i.insertAfter(l,XC(n)):i.replace(l,n);else if(YC(n,r,!0))WC(n,"LI")?(i.insertAfter(l,XC(n)),l.appendChild(i.doc.createTextNode(" ")),l.appendChild(n)):n.parentNode.insertBefore(l,n);else if(YC(n,r,!1))i.insertAfter(l,XC(n));else{n=XC(n);var f=a.cloneRange();f.setStartAfter(r),f.setEndAfter(n);var d=f.extractContents();"LI"===o&&(c="LI",(s=d).firstChild&&s.firstChild.nodeName===c)?(l=d.firstChild,i.insertAfter(d,n)):(i.insertAfter(d,n),i.insertAfter(l,n))}i.remove(r),VC(e,l)}},JC=function(e){e.innerHTML='<br data-mce-bogus="1">'},QC=function(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t},ZC=function(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)},ex=function(e,t,n){return!1===Bo.isText(t)?n:e?1===n&&t.data.charAt(n-1)===fa?0:n:n===t.data.length-1&&t.data.charAt(n)===fa?t.data.length:n},tx=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},nx=function(e,t){var n=eg(e);n&&n.toLowerCase()===t.tagName.toLowerCase()&&e.dom.setAttribs(t,tg(e))},rx=function(a,e){var t,u,s,i,c,n,r,o,l,f,d,m,g,p,h,v,b,y,C,x=a.dom,w=a.schema,N=w.getNonEmptyElements(),E=a.selection.getRng(),S=function(e){var t,n,r,o=s,i=w.getTextInlineElements();if(e||"TABLE"===f||"HR"===f?(t=x.create(e||m),nx(a,t)):t=c.cloneNode(!1),r=t,!1===og(a))x.setAttrib(t,"style",null),x.setAttrib(t,"class",null);else do{if(i[o.nodeName]){if(Uu(o)||cc(o))continue;n=o.cloneNode(!1),x.setAttrib(n,"id",""),t.hasChildNodes()?n.appendChild(t.firstChild):r=n,t.appendChild(n)}}while((o=o.parentNode)&&o!==u);return JC(r),t},k=function(e){var t,n,r,o;if(o=ex(e,s,i),Bo.isText(s)&&(e?0<o:o<s.nodeValue.length))return!1;if(s.parentNode===c&&g&&!e)return!0;if(e&&Bo.isElement(s)&&s===c.firstChild)return!0;if(QC(s,"TABLE")||QC(s,"HR"))return g&&!e||!g&&e;for(t=new oo(s,c),Bo.isText(s)&&(e&&0===o?t.prev():e||o!==s.nodeValue.length||t.next());n=t.current();){if(Bo.isElement(n)){if(!n.getAttribute("data-mce-bogus")&&(r=n.nodeName.toLowerCase(),N[r]&&"br"!==r))return!1}else if(Bo.isText(n)&&!/^[ \t\r\n]*$/.test(n.nodeValue))return!1;e?t.prev():t.next()}return!0},T=function(){r=/^(H[1-6]|PRE|FIGURE)$/.test(f)&&"HGROUP"!==d?S(m):S(),ig(a)&&ZC(x,l)&&x.isEmpty(c)?r=x.split(l,c):x.insertAfter(r,c),VC(a,r)};_g(x,E).each(function(e){E.setStart(e.startContainer,e.startOffset),E.setEnd(e.endContainer,e.endOffset)}),s=E.startContainer,i=E.startOffset,m=eg(a),n=e.shiftKey,Bo.isElement(s)&&s.hasChildNodes()&&(g=i>s.childNodes.length-1,s=s.childNodes[Math.min(i,s.childNodes.length-1)]||s,i=g&&Bo.isText(s)?s.nodeValue.length:0),(u=tx(x,s))&&((m&&!n||!m&&n)&&(s=function(e,t,n,r,o){var i,a,u,s,c,l,f,d=t||"P",m=e.dom,g=tx(m,r);if(!(a=m.getParent(r,m.isBlock))||!ZC(m,a)){if(l=(a=a||g)===e.getBody()||(f=a)&&/^(TD|TH|CAPTION)$/.test(f.nodeName)?a.nodeName.toLowerCase():a.parentNode.nodeName.toLowerCase(),!a.hasChildNodes())return i=m.create(d),nx(e,i),a.appendChild(i),n.setStart(i,0),n.setEnd(i,0),i;for(s=r;s.parentNode!==a;)s=s.parentNode;for(;s&&!m.isBlock(s);)s=(u=s).previousSibling;if(u&&e.schema.isValidChild(l,d.toLowerCase())){for(i=m.create(d),nx(e,i),u.parentNode.insertBefore(i,u),s=u;s&&!m.isBlock(s);)c=s.nextSibling,i.appendChild(s),s=c;n.setStart(r,o),n.setEnd(r,o)}}return r}(a,m,E,s,i)),c=x.getParent(s,x.isBlock),l=c?x.getParent(c.parentNode,x.isBlock):null,f=c?c.nodeName.toUpperCase():"","LI"!==(d=l?l.nodeName.toUpperCase():"")||e.ctrlKey||(l=(c=l).parentNode,f=d),/^(LI|DT|DD)$/.test(f)&&x.isEmpty(c)?GC(a,S,l,c,m):m&&c===a.getBody()||(m=m||"P",pa(c)?(r=Ea(c),x.isEmpty(c)&&JC(c),VC(a,r)):k()?T():k(!0)?(r=c.parentNode.insertBefore(S(),c),VC(a,QC(c,"HR")?r:c)):((t=(y=E,C=y.cloneRange(),C.setStart(y.startContainer,ex(!0,y.startContainer,y.startOffset)),C.setEnd(y.endContainer,ex(!1,y.endContainer,y.endOffset)),C).cloneRange()).setEndAfter(c),o=t.extractContents(),b=o,F(Hi(or.fromDom(b),fr),function(e){var t=e.dom();t.nodeValue=da(t.nodeValue)}),function(e){for(;Bo.isText(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(o),r=o.firstChild,x.insertAfter(o,c),function(e,t,n){var r,o=n,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;Bo.isElement(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(r=i.length;r--;)!(o=i[r]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(a=e,(u=o)&&"A"===u.nodeName&&a.isEmpty(u)&&e.remove(o));var a,u}}(x,N,r),p=x,(h=c).normalize(),(v=h.lastChild)&&!/^(left|right)$/gi.test(p.getStyle(v,"float",!0))||p.add(h,"br"),x.isEmpty(c)&&JC(c),r.normalize(),x.isEmpty(r)?(x.remove(r),T()):VC(a,r)),x.setAttrib(r,"id",""),a.fire("NewBlock",{newBlock:r})))},ox=function(e,t){return jC(e).filter(function(e){return 0<t.length&&Br(or.fromDom(e),t)}).isSome()},ix=function(e){return ox(e,ng(e))},ax=function(e){return ox(e,rg(e))},ux=Jl([{br:[]},{block:[]},{none:[]}]),sx=function(e,t){return ax(e)},cx=function(n){return function(e,t){return""===eg(e)===n}},lx=function(n){return function(e,t){return $C(e)===n}},fx=function(n,r){return function(e,t){return qC(e)===n.toUpperCase()===r}},dx=function(e){return fx("pre",e)},mx=function(n){return function(e,t){return Zm(e)===n}},gx=function(e,t){return ix(e)},px=function(e,t){return t},hx=function(e){var t=eg(e),n=HC(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")},vx=function(e,t){return function(n,r){return U(e,function(e,t){return e&&t(n,r)},!0)?A.some(t):A.none()}},bx=function(e,t){return Gf([vx([sx],ux.none()),vx([fx("summary",!0)],ux.br()),vx([dx(!0),mx(!1),px],ux.br()),vx([dx(!0),mx(!1)],ux.block()),vx([dx(!0),mx(!0),px],ux.block()),vx([dx(!0),mx(!0)],ux.br()),vx([lx(!0),px],ux.br()),vx([lx(!0)],ux.block()),vx([cx(!0),px,hx],ux.block()),vx([cx(!0)],ux.br()),vx([gx],ux.br()),vx([cx(!1),px],ux.br()),vx([hx],ux.block())],[e,t.shiftKey]).getOr(ux.none())},yx=function(e,t){bx(e,t).fold(function(){Ug(e,t)},function(){rx(e,t)},o)},Cx=function(o){o.on("keydown",function(e){var t,n,r;e.keyCode===pv.ENTER&&(t=o,(n=e).isDefaultPrevented()||(n.preventDefault(),(r=t.undoManager).typing&&(r.typing=!1,r.add()),t.undoManager.transact(function(){!1===t.selection.isCollapsed()&&t.execCommand("Delete"),yx(t,n)})))})},xx=function(n,r){var e=r.container(),t=r.offset();return Bo.isText(e)?(e.insertData(t,n),A.some(gu(e,t+n.length))):Es(r).map(function(e){var t=or.fromText(n);return r.isAtEnd()?ki(e,t):Si(e,t),gu(t.dom(),n.length)})},wx=d(xx,"\xa0"),Nx=d(xx," "),Ex=function(e,t,n){return Zs.navigateIgnore(e,t,n,ff)},Sx=function(t,n,r){var e=z(Ml(or.fromDom(r.container()),n),lo);return te(e).fold(function(){return Ex(t,n.dom(),r).forall(function(e){return!1===ps(e,r,n.dom())})},function(e){return Ex(t,e.dom(),r).isNone()})},kx=d(Sx,!1),Tx=d(Sx,!0),Ax=function(e){return gu.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()},Rx=function(e,t){var n=z(Ml(or.fromDom(t.container()),e),lo);return te(n).getOr(e)},_x=function(e,t){return Ax(t)?lf(t):lf(t)||Zs.prevPosition(Rx(e,t).dom(),t).exists(lf)},Dx=function(e,t){return Ax(t)?cf(t):cf(t)||Zs.nextPosition(Rx(e,t).dom(),t).exists(cf)},Bx=function(e){return Es(e).bind(function(e){return Ki(e,lr)}).exists(function(e){return t=Nr(e,"white-space"),M(["pre","pre-line","pre-wrap"],t);var t})},Ox=function(e,t){return o=e,i=t,Zs.prevPosition(o.dom(),i).isNone()||(n=e,r=t,Zs.nextPosition(n.dom(),r).isNone())||kx(e,t)||Tx(e,t)||tf(e,t)||ef(e,t);var n,r,o,i},Px=function(e,t){var n,r,o,i=(r=(n=t).container(),o=n.offset(),Bo.isText(r)&&o<r.data.length?gu(r,o+1):n);return!Bx(i)&&(Tx(e,i)||ef(e,i)||Dx(e,i))},Lx=function(e,t){return n=e,!Bx(r=t)&&(kx(n,r)||tf(n,r)||_x(n,r))||Px(e,t);var n,r},Ix=function(e,t){return of(e.charAt(t))},Mx=function(e){var t=e.container();return Bo.isText(t)&&Kn(t.data,"\xa0")},Fx=function(e){var t=e.data,n=W(t.split(""),function(e,t,n){return of(e)&&0<t&&t<n.length-1&&uf(n[t-1])&&uf(n[t+1])?" ":e}).join("");return n!==t&&(e.data=n,!0)},zx=function(l,e){return A.some(e).filter(Mx).bind(function(e){var t,n,r,o,i,a,u,s,c=e.container();return i=l,u=(a=c).data,s=gu(a,0),Ix(u,0)&&!Lx(i,s)&&(a.data=" "+u.slice(1),1)||Fx(c)||(t=l,r=(n=c).data,o=gu(n,r.length-1),Ix(r,r.length-1)&&!Lx(t,o)&&(n.data=r.slice(0,-1)+" ",1))?A.some(e):A.none()})},Ux=function(t){var e=or.fromDom(t.getBody());t.selection.isCollapsed()&&zx(e,gu.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})},Vx=function(r,o){return function(e){return t=r,!Bx(n=e)&&(Ox(t,n)||_x(t,n)||Dx(t,n))?wx(o):Nx(o);var t,n}},Hx=function(e){var t,n,r=vu.fromRangeStart(e.selection.getRng()),o=or.fromDom(e.getBody());if(e.selection.isCollapsed()){var i=d(yl.isInlineTarget,e),a=vu.fromRangeStart(e.selection.getRng());return gd(i,e.getBody(),a).bind((n=o,function(e){return e.fold(function(e){return Zs.prevPosition(n.dom(),vu.before(e))},function(e){return Zs.firstPositionIn(e)},function(e){return Zs.lastPositionIn(e)},function(e){return Zs.nextPosition(n.dom(),vu.after(e))})})).bind(Vx(o,r)).exists((t=e,function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}))}return!1},jx=function(r){r.on("keydown",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=r,n=e,MC([{keyCode:pv.SPACEBAR,action:IC(Hx,t)}],n).each(function(e){n.preventDefault()}))})},qx=function(e,t){var n;t.hasAttribute("data-mce-caret")&&(Ea(t),(n=e).selection.setRng(n.selection.getRng()),e.selection.scrollIntoView(t))},$x=function(e,t){var n,r=(n=e,Yi(or.fromDom(n.getBody()),"*[data-mce-caret]").fold(q(null),function(e){return e.dom()}));if(r)return"compositionstart"===t.type?(t.preventDefault(),t.stopPropagation(),void qx(e,r)):void(ba(r)&&(qx(e,r),e.undoManager.add()))},Wx=function(e){e.on("keyup compositionstart",d($x,e))},Kx=nr.detect().browser,Xx=function(t){var e,n;e=t,n=Oi(function(){e.composing||Ux(e)},0),Kx.isIE()&&(e.on("keypress",function(e){n.throttle()}),e.on("remove",function(e){n.cancel()})),t.on("input",function(e){!1===e.isComposing&&Ux(t)})},Yx=function(r){r.on("keydown",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=r,n=e,MC([{keyCode:pv.END,action:dC(t,!0)},{keyCode:pv.HOME,action:dC(t,!1)}],n).each(function(e){n.preventDefault()}))})},Gx=function(e){var t=kd.setupSelectedState(e);Wx(e),FC(e,t),zC(e,t),Cx(e),jx(e),Xx(e),Yx(e)};function Jx(u){var s,n,r,o=Gt.each,c=pv.BACKSPACE,l=pv.DELETE,f=u.dom,d=u.selection,e=u.settings,t=u.parser,i=me.gecko,a=me.ie,m=me.webkit,g="data:text/mce-internal,",p=a?"Text":"URL",h=function(e,t){try{u.getDoc().execCommand(e,!1,t)}catch(n){}},v=function(e){return e.isDefaultPrevented()},b=function(){u.shortcuts.add("meta+a",null,"SelectAll")},y=function(){u.on("keydown",function(e){if(!v(e)&&e.keyCode===c&&d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})},C=function(){u.inline||(u.contentStyles.push("body {min-height: 150px}"),u.on("click",function(e){var t;if("HTML"===e.target.nodeName){if(11<me.ie)return void u.getBody().focus();t=u.selection.getRng(),u.getBody().focus(),u.selection.setRng(t),u.selection.normalize(),u.nodeChanged()}}))};return u.on("keydown",function(e){var t,n,r,o,i;if(!v(e)&&e.keyCode===pv.BACKSPACE&&(n=(t=d.getRng()).startContainer,r=t.startOffset,o=f.getRoot(),i=n,t.collapsed&&0===r)){for(;i&&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(u.formatter.toggle("blockquote",null,i),(t=f.createRng()).setStart(n,0),t.setEnd(n,0),d.setRng(t))}}),s=function(e){var t=f.create("body"),n=e.cloneContents();return t.appendChild(n),d.serializer.serialize(t,{format:"html"})},u.on("keydown",function(e){var t,n,r,o,i,a=e.keyCode;if(!v(e)&&(a===l||a===c)){if(t=u.selection.isCollapsed(),n=u.getBody(),t&&!f.isEmpty(n))return;if(!t&&(r=u.selection.getRng(),o=s(r),(i=f.createRng()).selectNode(u.getBody()),o!==s(i)))return;e.preventDefault(),u.setContent(""),n.firstChild&&f.isBlock(n.firstChild)?u.selection.setCursorLocation(n.firstChild,0):u.selection.setCursorLocation(n,0),u.nodeChanged()}}),me.windowsPhone||u.on("keyup focusin mouseup",function(e){pv.modifierPressed(e)||d.normalize()},!0),m&&(u.settings.content_editable||f.bind(u.getDoc(),"mousedown mouseup",function(e){var t;if(e.target===u.getDoc().documentElement)if(t=d.getRng(),u.getBody().focus(),"mousedown"===e.type){if(va(t.startContainer))return;d.placeCaretAt(e.clientX,e.clientY)}else d.setRng(t)}),u.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==f.getContentEditableParent(t)&&(e.preventDefault(),u.selection.select(t),u.nodeChanged()),"A"===t.nodeName&&f.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),d.select(t))}),e.forced_root_block&&u.on("init",function(){h("DefaultParagraphSeparator",e.forced_root_block)}),u.on("init",function(){u.dom.bind(u.getBody(),"submit",function(e){e.preventDefault()})}),y(),t.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&e[t].remove()}),me.iOS?(u.inline||u.on("keydown",function(){H.document.activeElement===H.document.body&&u.getWin().focus()}),C(),u.on("click",function(e){var t=e.target;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),u.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")):b()),11<=me.ie&&(C(),y()),me.ie&&(b(),h("AutoUrlDetect",!1),u.on("dragstart",function(e){var t,n,r;(t=e).dataTransfer&&(u.selection.isCollapsed()&&"IMG"===t.target.tagName&&d.select(t.target),0<(n=u.selection.getContent()).length&&(r=g+escape(u.id)+","+escape(n),t.dataTransfer.setData(p,r)))}),u.on("drop",function(e){if(!v(e)){var t=(i=e).dataTransfer&&(a=i.dataTransfer.getData(p))&&0<=a.indexOf(g)?(a=a.substr(g.length).split(","),{id:unescape(a[0]),html:unescape(a[1])}):null;if(t&&t.id!==u.id){e.preventDefault();var n=xy(e.x,e.y,u.getDoc());d.setRng(n),r=t.html,o=!0,u.queryCommandSupported("mceInsertClipboardContent")?u.execCommand("mceInsertClipboardContent",!1,{content:r,internal:o}):u.execCommand("mceInsertContent",!1,r)}}var r,o,i,a})),i&&(u.on("keydown",function(e){if(!v(e)&&e.keyCode===c){if(!u.getBody().getElementsByTagName("hr").length)return;if(d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return f.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(f.remove(n),e.preventDefault())}}}),H.Range.prototype.getClientRects||u.on("mousedown",function(e){if(!v(e)&&"HTML"===e.target.nodeName){var t=u.getBody();t.blur(),be.setEditorTimeout(u,function(){t.focus()})}}),n=function(){var e=f.getAttribs(d.getStart().cloneNode(!1));return function(){var t=d.getStart();t!==u.getBody()&&(f.setAttrib(t,"style",null),o(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}},r=function(){return!d.isCollapsed()&&f.getParent(d.getStart(),f.isBlock)!==f.getParent(d.getEnd(),f.isBlock)},u.on("keypress",function(e){var t;if(!v(e)&&(8===e.keyCode||46===e.keyCode)&&r())return t=n(),u.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),f.bind(u.getDoc(),"cut",function(e){var t;!v(e)&&r()&&(t=n(),be.setEditorTimeout(u,function(){t()}))}),e.readonly||u.on("BeforeExecCommand MouseDown",function(){h("StyleWithCSS",!1),h("enableInlineTableEditing",!1),e.object_resizing||h("enableObjectResizing",!1)}),u.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||o(f.select("a"),function(e){var t=e.parentNode,n=f.getRoot();if(t.lastChild===e){for(;t&&!f.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}f.add(t,"br",{"data-mce-bogus":1})}})}),u.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"),me.mac&&u.on("keydown",function(e){!pv.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),u.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))}),y()),{refreshContentEditable:function(){},isHidden:function(){var e;return!i||u.removed?0:!(e=u.selection.getSel())||!e.rangeCount||0===e.rangeCount}}}var Qx=function(e){return Bo.isElement(e)&&go(or.fromDom(e))},Zx=function(t){t.on("click",function(e){3<=e.detail&&function(e){var t=e.selection.getRng(),n=gu.fromRangeStart(t),r=gu.fromRangeEnd(t);if(gu.isElementPosition(n)){var o=n.container();Qx(o)&&Zs.firstPositionIn(o).each(function(e){return t.setStart(e.container(),e.offset())})}gu.isElementPosition(r)&&(o=n.container(),Qx(o)&&Zs.lastPositionIn(o).each(function(e){return t.setEnd(e.container(),e.offset())})),e.selection.setRng(el(t))}(t)})},ew=function(e){var t,n;(t=e).on("click",function(e){t.dom.getParent(e.target,"details")&&e.preventDefault()}),(n=e).parser.addNodeFilter("details",function(e){F(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),n.serializer.addNodeFilter("details",function(e){F(e,function(e){var t=e.attr("data-mce-open");e.attr("open",R(t)?t:null),e.attr("data-mce-open",null)})})},tw=hi.DOM,nw=function(e){var t;e.bindPendingEventDelegates(),e.initialized=!0,e.fire("init"),e.focus(!0),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),(t=e).settings.auto_focus&&be.setEditorTimeout(t,function(){var e;(e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus)).destroyed||e.focus()},100)},rw=function(t,e){var n,r,u,o,i,a,s,c,l,f=t.settings,d=t.getElement(),m=t.getDoc();f.inline||(t.getElement().style.visibility=t.orgVisibility),e||f.content_editable||(m.open(),m.write(t.iframeHTML),m.close()),f.content_editable&&(t.on("remove",function(){var e=this.getBody();tw.removeClass(e,"mce-content-body"),tw.removeClass(e,"mce-edit-focus"),tw.setAttrib(e,"contentEditable",null)}),tw.addClass(d,"mce-content-body"),t.contentDocument=m=f.content_document||H.document,t.contentWindow=f.content_window||H.window,t.bodyElement=d,f.content_document=f.content_window=null,f.root_name=d.nodeName.toLowerCase()),(n=t.getBody()).disabled=!0,t.readonly=f.readonly,t.readonly||(t.inline&&"static"===tw.getStyle(n,"position",!0)&&(n.style.position="relative"),n.contentEditable=t.getParam("content_editable_state",!0)),n.disabled=!1,t.editorUpload=Rh(t),t.schema=ri(f),t.dom=hi(m,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:f.force_hex_style_colors,class_filter:f.class_filter,update_styles:!0,root_element:t.inline?t.getBody():null,collect:f.content_editable,schema:t.schema,contentCssCors:hg(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=((o=oy((u=t).settings,u.schema)).addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o,i=e.length,a=u.dom;i--;)if(r=(n=e[i]).attr(t),o="data-mce-"+t,!n.attributes.map[o]){if(0===r.indexOf("data:")||0===r.indexOf("blob:"))continue;"style"===t?((r=a.serializeStyle(a.parseStyle(r),n.name)).length||(r=null),n.attr(o,r),n.attr(t,r)):"tabindex"===t?(n.attr(o,r),n.attr(t,null)):n.attr(o,u.convertURL(r,t,n.name))}}),o.addNodeFilter("script",function(e){for(var t,n,r=e.length;r--;)0!==(n=(t=e[r]).attr("type")||"no/type").indexOf("mce-")&&t.attr("type","mce-"+n)}),o.addNodeFilter("#cdata",function(e){for(var t,n=e.length;n--;)(t=e[n]).type=8,t.name="#comment",t.value="[CDATA["+t.value+"]]"}),o.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t,n=e.length,r=u.schema.getNonEmptyElements();n--;)(t=e[n]).isEmpty(r)&&0===t.getAll("br").length&&(t.append(new Kb("br",1)).shortEnded=!0)}),o),t.serializer=cy(f,t),t.selection=Yy(t.dom,t.getWin(),t.serializer,t),t.annotator=Pc(t),t.formatter=Lb(t),t.undoManager=Hv(t),t._nodeChangeDispatcher=new Uh(t),t._selectionOverrides=yv(t),ew(t),Zx(t),Gx(t),Ph(t),t.fire("PreInit"),f.browser_spellcheck||f.gecko_spellcheck||(m.body.spellcheck=!1,tw.setAttrib(n,"spellcheck","false")),t.quirks=Jx(t),t.fire("PostRender"),f.directionality&&(n.dir=f.directionality),f.nowrap&&(n.style.whiteSpace="nowrap"),f.protect&&t.on("BeforeSetContent",function(t){Gt.each(f.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type}),0<t.contentStyles.length&&(r="",Gt.each(t.contentStyles,function(e){r+=e+"\r\n"}),t.dom.addStyle(r)),(i=t,i.inline?tw.styleSheetLoader:i.dom.styleSheetLoader).loadAll(t.contentCSS,function(e){nw(t)},function(e){nw(t)}),f.content_style&&(a=t,s=f.content_style,c=or.fromDom(a.getDoc().head),l=or.fromTag("style"),br(l,"type","text/css"),Ai(l,or.fromText(s)),Ai(c,l))},ow=hi.DOM,iw=function(e,t){var n,r,o,i,a,u,s,c=e.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),l=(n=e.id,r=c,o=t.height,i=Km(e),s=or.fromTag("iframe"),yr(s,i),yr(s,{id:n+"_ifr",frameBorder:"0",allowTransparency:"true",title:r}),wr(s,{width:"100%",height:(a=o,u="number"==typeof a?a+"px":a,u||""),display:"block"}),s).dom();l.onload=function(){l.onload=null,e.fire("load")};var f,d,m,g,p=function(e,t){if(H.document.domain!==H.window.location.hostname&&me.ie&&me.ie<12){var n=Ah.uuid("mce");e[n]=function(){rw(e)};var r='javascript:(function(){document.open();document.domain="'+H.document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(true);})()";return ow.setAttrib(t,"src",r),!0}return!1}(e,l);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=l,e.iframeHTML=(g=Xm(f=e)+"<html><head>",Ym(f)!==f.documentBaseUrl&&(g+='<base href="'+f.documentBaseURI.getURI()+'" />'),g+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',d=Gm(f),m=Jm(f),Qm(f)&&(g+='<meta http-equiv="Content-Security-Policy" content="'+Qm(f)+'" />'),g+='</head><body id="'+d+'" class="mce-content-body '+m+'" data-id="'+f.id+'"><br></body></html>'),ow.add(t.iframeContainer,l),p},aw=function(e,t){var n=iw(e,t);t.editorContainer&&(ow.get(t.editorContainer).style.display=e.orgDisplay,e.hidden=ow.isHidden(t.editorContainer)),e.getElement().style.display="none",ow.setAttrib(e.id,"aria-hidden","true"),n||rw(e)},uw=hi.DOM,sw=function(t,n,e){var r=mh.get(e),o=mh.urls[e]||t.documentBaseUrl.replace(/\/$/,"");if(e=Gt.trim(e),r&&-1===Gt.inArray(n,e)){if(Gt.each(mh.dependencies(e),function(e){sw(t,n,e)}),t.plugins[e])return;try{var i=new r(t,o,t.$);(t.plugins[e]=i).init&&(i.init(t,o),n.push(e))}catch(jN){dh.pluginInitError(t,e,jN)}}},cw=function(e){return e.replace(/^\-/,"")},lw=function(e){return{editorContainer:e,iframeContainer:e}},fw=function(e){var t,n,r=e.getElement();return e.inline?lw(null):(t=r,n=uw.create("div"),uw.insertAfter(n,t),lw(n))},dw=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.getElement();return e.orgDisplay=m.style.display,R(d.theme)?(l=(o=e).settings,f=o.getElement(),i=l.width||uw.getStyle(f,"width")||"100%",a=l.height||uw.getStyle(f,"height")||f.offsetHeight,u=l.min_height||100,(s=/^[0-9\.]+(|px)$/i).test(""+i)&&(i=Math.max(parseInt(i,10),100)),s.test(""+a)&&(a=Math.max(parseInt(a,10),u)),c=o.theme.renderUI({targetNode:f,width:i,height:a,deltaWidth:l.delta_width,deltaHeight:l.delta_height}),l.content_editable||(a=(c.iframeHeight||a)+("number"==typeof a?c.deltaHeight||0:""))<u&&(a=u),c.height=a,c):P(d.theme)?(r=(t=e).getElement(),(n=t.settings.theme(t,r)).editorContainer.nodeType&&(n.editorContainer.id=n.editorContainer.id||t.id+"_parent"),n.iframeContainer&&n.iframeContainer.nodeType&&(n.iframeContainer.id=n.iframeContainer.id||t.id+"_iframecontainer"),n.height=n.iframeHeight?n.iframeHeight:r.offsetHeight,n):fw(e)},mw=function(t){var e,n,r,o,i,a,u=t.settings,s=t.getElement();return t.rtl=u.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(u.language),u.aria_label=u.aria_label||uw.getAttrib(s,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),o=(n=t).settings.theme,R(o)?(n.settings.theme=cw(o),r=gh.get(o),n.theme=new r(n,gh.urls[o]),n.theme.init&&n.theme.init(n,gh.urls[o]||n.documentBaseUrl.replace(/\/$/,""),n.$)):n.theme={},i=t,a=[],Gt.each(i.settings.plugins.split(/[ ,]/),function(e){sw(i,a,cw(e))}),e=dw(t),t.editorContainer=e.editorContainer?e.editorContainer:null,u.content_css&&Gt.each(Gt.explode(u.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),u.content_editable?rw(t):aw(t,e)},gw=hi.DOM,pw=function(e){return"-"===e.charAt(0)},hw=function(i,a){var u=xi.ScriptLoader;!function(e,t,n,r){var o=t.settings,i=o.theme;if(R(i)){if(!pw(i)&&!gh.urls.hasOwnProperty(i)){var a=o.theme_url;a?gh.load(i,t.documentBaseURI.toAbsolute(a)):gh.load(i,"themes/"+i+"/theme"+n+".js")}e.loadQueue(function(){gh.waitFor(i,r)})}else r()}(u,i,a,function(){var e,t,n,r,o;e=u,(n=(t=i).settings).language&&"en"!==n.language&&!n.language_url&&(n.language_url=t.editorManager.baseURL+"/langs/"+n.language+".js"),n.language_url&&!t.editorManager.i18n.data[n.language]&&e.add(n.language_url),r=i.settings,o=a,Gt.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),Gt.each(r.external_plugins,function(e,t){mh.load(t,e),r.plugins+=" "+t}),Gt.each(r.plugins.split(/[ ,]/),function(e){if((e=Gt.trim(e))&&!mh.urls[e])if(pw(e)){e=e.substr(1,e.length);var t=mh.dependencies(e);Gt.each(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=mh.createUrl(t,e),mh.load(e.resource,e)})}else mh.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),u.loadQueue(function(){i.removed||mw(i)},i,function(e){dh.pluginLoadError(i,e[0]),i.removed||mw(i)})})},vw=function(t){var e=t.settings,n=t.id,r=function(){gw.unbind(H.window,"ready",r),t.render()};if(Te.Event.domLoaded){if(t.getElement()&&me.contentEditable){e.inline?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden");var o=t.getElement().form||gw.getParent(n,"form");o&&(t.formElement=o,e.hidden_input&&!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&(gw.insertAfter(gw.create("input",{type:"hidden",name:n}),n),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},gw.bind(o,"submit reset",t.formEventDelegate),t.on("reset",function(){t.setContent(t.startContent,{format:"raw"})}),!e.submit_patch||o.submit.nodeType||o.submit.length||o._mceOldSubmit||(o._mceOldSubmit=o.submit,o.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),o._mceOldSubmit(o)})),t.windowManager=rh(t),t.notificationManager=nh(t),"xml"===e.encoding&&t.on("GetContent",function(e){e.save&&(e.content=gw.encode(e.content))}),e.add_form_submit_trigger&&t.on("submit",function(){t.initialized&&t.save()}),e.add_unload_trigger&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),hw(t,t.suffix)}}else gw.bind(H.window,"ready",r)},bw=function(e,t,n){var r=e.sidebars?e.sidebars:[];r.push({name:t,settings:n}),e.sidebars=r},yw=Gt.each,Cw=Gt.trim,xw="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),ww={ftp:21,http:80,https:443,mailto:25},Nw=function(r,e){var t,n,o=this;if(r=Cw(r),t=(e=o.settings=e||{}).base_uri,/^([\w\-]+):([^\/]{2})/i.test(r)||/^\s*#/.test(r))o.source=r;else{var i=0===r.indexOf("//");0!==r.indexOf("/")||i||(r=(t&&t.protocol||"http")+"://mce_host"+r),/^[\w\-]*:?\/\//.test(r)||(n=e.base_uri?e.base_uri.path:new Nw(H.document.location.href).directory,""==e.base_uri.protocol?r="//mce_host"+o.toAbsPath(n,r):(r=/([^#?]*)([#?]?.*)/.exec(r),r=(t&&t.protocol||"http")+"://mce_host"+o.toAbsPath(n,r[1])+r[2])),r=r.replace(/@@/g,"(mce_at)"),r=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(r),yw(xw,function(e,t){var n=r[t];n&&(n=n.replace(/\(mce_at\)/g,"@@")),o[e]=n}),t&&(o.protocol||(o.protocol=t.protocol),o.userInfo||(o.userInfo=t.userInfo),o.port||"mce_host"!==o.host||(o.port=t.port),o.host&&"mce_host"!==o.host||(o.host=t.host),o.source=""),i&&(o.protocol="")}};Nw.prototype={setPath:function(e){e=/^(.*?)\/?(\w+)?$/.exec(e),this.path=e[0],this.directory=e[1],this.file=e[2],this.source="",this.getURI()},toRelative:function(e){var t;if("./"===e)return e;if("mce_host"!==(e=new Nw(e,{base_uri:this})).host&&this.host!==e.host&&e.host||this.port!==e.port||this.protocol!==e.protocol&&""!==e.protocol)return e.getURI();var n=this.getURI(),r=e.getURI();return n===r||"/"===n.charAt(n.length-1)&&n.substr(0,n.length-1)===r?n:(t=this.toRelPath(this.path,e.path),e.query&&(t+="?"+e.query),e.anchor&&(t+="#"+e.anchor),t)},toAbsolute:function(e,t){return(e=new Nw(e,{base_uri:this})).getURI(t&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=ww[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r,o,i=0,a="";if(e=(e=e.substring(0,e.lastIndexOf("/"))).split("/"),n=t.split("/"),e.length>=n.length)for(r=0,o=e.length;r<o;r++)if(r>=n.length||e[r]!==n[r]){i=r+1;break}if(e.length<n.length)for(r=0,o=n.length;r<o;r++)if(r>=e.length||e[r]!==n[r]){i=r+1;break}if(1===i)return t;for(r=0,o=e.length-(i-1);r<o;r++)a+="../";for(r=i-1,o=n.length;r<o;r++)a+=r!==i-1?"/"+n[r]:n[r];return a},toAbsPath:function(e,t){var n,r,o,i=0,a=[];for(r=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),yw(e,function(e){e&&a.push(e)}),e=a,n=t.length-1,a=[];0<=n;n--)0!==t[n].length&&"."!==t[n]&&(".."!==t[n]?0<i?i--:a.push(t[n]):i++);return 0!==(o=(n=e.length-i)<=0?a.reverse().join("/"):e.slice(0,n).join("/")+"/"+a.reverse().join("/")).indexOf("/")&&(o="/"+o),r&&o.lastIndexOf("/")!==o.length-1&&(o+=r),o},getURI:function(e){var t,n=this;return n.source&&!e||(t="",e||(n.protocol?t+=n.protocol+"://":t+="//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},Nw.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),(n=/data:([^;]+)/.exec(e[0]))&&(t=n[1]),{type:t,data:e[1]}},Nw.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t};var Ew=function(e,t,n){var r,o,i,a,u;if(t.format=t.format?t.format:"html",t.get=!0,t.getInner=!0,t.no_events||e.fire("BeforeGetContent",t),"raw"===t.format)r=Gt.trim(Sv.trimExternal(e.serializer,n.innerHTML));else if("text"===t.format)r=da(n.innerText||n.textContent);else{if("tree"===t.format)return e.serializer.serialize(n,t);i=(o=e).serializer.serialize(n,t),a=eg(o),u=new RegExp("^(<"+a+"[^>]*>( | |\\s|\xa0|<br \\/>|)<\\/"+a+">[\r\n]*|<br \\/>[\r\n]*)$"),r=i.replace(u,"")}return"text"===t.format||Co(or.fromDom(n))?t.content=r:t.content=Gt.trim(r),t.no_events||e.fire("GetContent",t),t.content},Sw=function(e,t){t(e),e.firstChild&&Sw(e.firstChild,t),e.next&&Sw(e.next,t)},kw=function(e,t,n){var r=function(e,n,t){var r={},o={},i=[];for(var a in t.firstChild&&Sw(t.firstChild,function(t){F(e,function(e){e.name===t.name&&(r[e.name]?r[e.name].nodes.push(t):r[e.name]={filter:e,nodes:[t]})}),F(n,function(e){"string"==typeof t.attr(e.name)&&(o[e.name]?o[e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})})}),r)r.hasOwnProperty(a)&&i.push(r[a]);for(var a in o)o.hasOwnProperty(a)&&i.push(o[a]);return i}(e,t,n);F(r,function(t){F(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})})},Tw=function(e){return e instanceof Kb},Aw=function(e,t){var r;e.dom.setHTML(e.getBody(),t),Kp(r=e)&&Zs.firstPositionIn(r.getBody()).each(function(e){var t=e.getNode(),n=Bo.isTable(t)?Zs.firstPositionIn(t).getOr(e):e;r.selection.setRng(n.toRange())})},Rw=function(u,s,c){return void 0===c&&(c={}),c.format=c.format?c.format:"html",c.set=!0,c.content=Tw(s)?"":s,Tw(s)||c.no_events||(u.fire("BeforeSetContent",c),s=c.content),A.from(u.getBody()).fold(q(s),function(e){return Tw(s)?function(e,t,n,r){kw(e.parser.getNodeFilters(),e.parser.getAttributeFilters(),n);var o=Jc({validate:e.validate},e.schema).serialize(n);return r.content=Co(or.fromDom(t))?o:Gt.trim(o),Aw(e,r.content),r.no_events||e.fire("SetContent",r),n}(u,e,s,c):(t=u,n=e,o=c,0===(r=s).length||/^\s+$/.test(r)?(a='<br data-mce-bogus="1">',"TABLE"===n.nodeName?r="<tr><td>"+a+"</td></tr>":/^(UL|OL)$/.test(n.nodeName)&&(r="<li>"+a+"</li>"),(i=eg(t))&&t.schema.isValidChild(n.nodeName.toLowerCase(),i.toLowerCase())?(r=a,r=t.dom.createHTML(i,t.settings.forced_root_block_attrs,r)):r||(r='<br data-mce-bogus="1">'),Aw(t,r),t.fire("SetContent",o)):("raw"!==o.format&&(r=Jc({validate:t.validate},t.schema).serialize(t.parser.parse(r,{isRootContent:!0,insert:!0}))),o.content=Co(or.fromDom(n))?r:Gt.trim(r),Aw(t,o.content),o.no_events||t.fire("SetContent",o)),o.content);var t,n,r,o,i,a})},_w=hi.DOM,Dw=function(e){return A.from(e).each(function(e){return e.destroy()})},Bw=function(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement();r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&_w.remove(o.nextSibling),bp(e),e.editorManager.remove(e),!e.inline&&r&&(i=e,_w.setStyle(i.id,"display",i.orgDisplay)),yp(e),_w.remove(e.getContainer()),Dw(t),Dw(n),e.destroy()}var i},Ow=function(e,t){var n,r,o,i=e.selection,a=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),Dw(i),Dw(a)),(r=(n=e).formElement)&&(r._mceOldSubmit&&(r.submit=r._mceOldSubmit,r._mceOldSubmit=null),_w.unbind(r,"submit reset",n.formEventDelegate)),(o=e).contentAreaContainer=o.formElement=o.container=o.editorContainer=null,o.bodyElement=o.contentDocument=o.contentWindow=null,o.iframeElement=o.targetElm=null,o.selection&&(o.selection=o.selection.win=o.selection.dom=o.selection.dom.doc=null),e.destroyed=!0):e.remove())},Pw=hi.DOM,Lw=Gt.extend,Iw=Gt.each,Mw=Gt.resolve,Fw=me.ie,zw=function(e,t,n){var r,o,i,a,u,s,c,l=this,f=l.documentBaseUrl=n.documentBaseURL,d=n.baseURI;r=l,o=e,i=f,a=n.defaultSettings,u=t,c={id:o,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:i,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,render_ui:!0,indentation:"40px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:(s=r).convertURL,url_converter_scope:s,ie7_compat:!0},t=ml(al,c,a,u),l.settings=t,Ei.language=t.language||"en",Ei.languageLoad=t.language_load,Ei.baseURL=n.baseURL,l.id=e,l.setDirty(!1),l.plugins={},l.documentBaseURI=new Nw(t.document_base_url,{base_uri:d}),l.baseURI=d,l.contentCSS=[],l.contentStyles=[],l.shortcuts=new Mp(l),l.loadedCSS={},l.editorCommands=new lp(l),l.suffix=n.suffix,l.editorManager=n,l.inline=t.inline,l.buttons={},l.menuItems={},t.cache_suffix&&(me.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),!1===t.override_viewport&&(me.overrideViewPort=!1),n.fire("SetupEditor",{editor:l}),l.execCallback("setup",l),l.$=hn.overrideDefaults(function(){return{context:l.inline?l.getBody():l.getDoc(),element:l.getBody()}})};Lw(zw.prototype={render:function(){vw(this)},focus:function(e){Wp(this,e)},hasFocus:function(){return Kp(this)},execCallback:function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?Mw(r):0,o=Mw(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,Array.prototype.slice.call(arguments,1))},translate:function(e){if(e&&Gt.is(e,"string")){var n=this.settings.language||"en",r=this.editorManager.i18n;e=r.data[n+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,t){return r.data[n+"."+t]||"{#"+t+"}"})}return this.editorManager.translate(e)},getLang:function(e,t){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(t!==undefined?t:"{#"+e+"}")},getParam:function(e,t,n){return hl(this,e,t,n)},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.stateSelector&&"undefined"==typeof t.active&&(t.active=!1),t.text||t.icon||(t.icon=e),t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addSidebar:function(e,t){return bw(this,e,t)},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems[e]=t},addContextToolbar:function(e,t){var n,r=this;r.contextToolbars=r.contextToolbars||[],"string"==typeof e&&(n=e,e=function(e){return r.dom.is(e,n)}),r.contextToolbars.push({id:Ah.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable=!0:(Pw.show(this.getContainer()),Pw.hide(this.id)),this.load(),this.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(Fw&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e===e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(Pw.hide(e.getContainer()),Pw.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var t,n=this.getElement();return this.removed?"":n?((e=e||{}).load=!0,t=this.setContent(n.value!==undefined?n.value:n.innerHTML,e),e.element=n,e.no_events||this.fire("LoadContent",e),e.element=n=null,t):void 0},save:function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,/TEXTAREA|INPUT/i.test(o.nodeName)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=Pw.getParent(r.id,"form"))&&Iw(n.elements,function(e){if(e.name===r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},setContent:function(e,t){return Rw(this,e,t)},getContent:function(e){return t=this,void 0===(n=e)&&(n={}),A.from(t.getBody()).fold(q("tree"===n.format?new Kb("body",11):""),function(e){return Ew(t,n,e)});var t,n},insertContent:function(e,t){t&&(e=Lw({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},setMode:function(e){var t,n;(n=e)!==kp(t=this)&&(t.initialized?Sp(t,"readonly"===n):t.on("init",function(){Sp(t,"readonly"===n)}),Cp(t,n))},getContainer:function(){return this.container||(this.container=Pw.get(this.editorContainer||this.id+"_parent")),this.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=Pw.get(this.id)),this.targetElm},getWin:function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},getDoc:function(){var e;return this.contentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},getBody:function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):e=this.documentBaseURI.toAbsolute(e,r.remove_script_host)},addVisual:function(e){var n,r=this,o=r.settings,i=r.dom;e=e||r.getBody(),r.hasVisual===undefined&&(r.hasVisual=o.visual),Iw(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return n=o.visual_table_class||"mce-item-table",void((t=i.getAttrib(e,"border"))&&"0"!==t||!r.hasVisual?i.removeClass(e,n):i.addClass(e,n));case"A":return void(i.getAttrib(e,"href")||(t=i.getAttrib(e,"name")||e.id,n=o.visual_anchor_class||"mce-item-anchor",t&&r.hasVisual?i.addClass(e,n):i.removeClass(e,n)))}}),r.fire("VisualAid",{element:e,hasVisual:r.hasVisual})},remove:function(){Bw(this)},destroy:function(e){Ow(this,e)},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},Bp);var Uw,Vw,Hw,jw={isEditorUIElement:function(e){return-1!==e.className.toString().indexOf("mce-")}},qw=function(n,e){var t,r;nr.detect().browser.isIE()?(r=n).on("focusout",function(){ep(r)}):(t=e,n.on("mouseup touchend",function(e){t.throttle()})),n.on("keyup nodechange",function(e){var t;"nodechange"===(t=e).type&&t.selectionChange||ep(n)})},$w=function(e){var t,n,r,o=Oi(function(){ep(e)},0);e.inline&&(t=e,n=o,r=function(){n.throttle()},hi.DOM.bind(H.document,"mouseup",r),t.on("remove",function(){hi.DOM.unbind(H.document,"mouseup",r)})),e.on("init",function(){qw(e,o)}),e.on("remove",function(){o.cancel()})},Ww=hi.DOM,Kw=function(e){return jw.isEditorUIElement(e)},Xw=function(t,e){var n=t?t.settings.custom_ui_selector:"";return null!==Ww.getParent(e,function(e){return Kw(e)||!!n&&t.dom.is(e,n)})},Yw=function(r,e){var t=e.editor;$w(t),t.on("focusin",function(){var e=r.focusedEditor;e!==this&&(e&&e.fire("blur",{focusedEditor:this}),r.setActive(this),(r.focusedEditor=this).fire("focus",{blurredEditor:e}),this.focus(!0))}),t.on("focusout",function(){var t=this;be.setEditorTimeout(t,function(){var e=r.focusedEditor;Xw(t,function(){try{return H.document.activeElement}catch(e){return H.document.body}}())||e!==t||(t.fire("blur",{focusedEditor:null}),r.focusedEditor=null)})}),Uw||(Uw=function(e){var t,n=r.activeEditor;t=e.target,n&&t.ownerDocument===H.document&&(t===H.document.body||Xw(n,t)||r.focusedEditor!==n||(n.fire("blur",{focusedEditor:null}),r.focusedEditor=null))},Ww.bind(H.document,"focusin",Uw))},Gw=function(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(Ww.unbind(H.document,"focusin",Uw),Uw=null)},Jw=function(e){e.on("AddEditor",d(Yw,e)),e.on("RemoveEditor",d(Gw,e))},Qw=hi.DOM,Zw=Gt.explode,eN=Gt.each,tN=Gt.extend,nN=0,rN=!1,oN=[],iN=[],aN=function(t){var n=t.type;eN(Hw.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})},uN=function(e){e!==rN&&(e?hn(window).on("resize scroll",aN):hn(window).off("resize scroll",aN),rN=e)},sN=function(t){var e=iN;delete oN[t.id];for(var n=0;n<oN.length;n++)if(oN[n]===t){oN.splice(n,1);break}return iN=z(iN,function(e){return t!==e}),Hw.activeEditor===t&&(Hw.activeEditor=0<iN.length?iN[0]:null),Hw.focusedEditor===t&&(Hw.focusedEditor=null),e.length!==iN.length};tN(Hw={defaultSettings:{},$:hn,majorVersion:"4",minorVersion:"9.4",releaseDate:"2019-03-20",editors:oN,i18n:ah,activeEditor:null,settings:{},setup:function(){var e,t,n,r,o="";if(t=Nw.getDocumentBaseUrl(H.document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),n=window.tinymce||window.tinyMCEPreInit)e=n.base||n.baseURL,o=n.suffix;else{for(var i=H.document.getElementsByTagName("script"),a=0;a<i.length;a++){var u=(r=i[a].src).substring(r.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(r)){-1!==u.indexOf(".min")&&(o=".min"),e=r.substring(0,r.lastIndexOf("/"));break}}!e&&H.document.currentScript&&(-1!==(r=H.document.currentScript.src).indexOf(".min")&&(o=".min"),e=r.substring(0,r.lastIndexOf("/")))}this.baseURL=new Nw(t).toAbsolute(e),this.documentBaseURL=t,this.baseURI=new Nw(this.baseURL),this.suffix=o,Jw(this)},overrideDefaults:function(e){var t,n;(t=e.base_url)&&(this.baseURL=new Nw(this.documentBaseURL).toAbsolute(t.replace(/\/+$/,"")),this.baseURI=new Nw(this.baseURL)),n=e.suffix,e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;for(var o in r)Ei.PluginManager.urls[o]=r[o]},init:function(r){var n,u,s=this;u=Gt.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var c=function(e){var t=e.id;return t||(t=(t=e.name)&&!Qw.get(t)?e.name:Qw.uniqueId(),e.setAttribute("id",t)),t},l=function(e,t){return t.constructor===RegExp?t.test(e.className):Qw.hasClass(e,t)},f=function(e){n=e},e=function(){var o,i=0,a=[],n=function(e,t,n){var r=new zw(e,t,s);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetElm=r.targetElm||n,r.render()};Qw.unbind(window,"ready",e),function(e){var t=r[e];t&&t.apply(s,Array.prototype.slice.call(arguments,2))}("onpageload"),o=hn.unique(function(t){var e,n=[];if(me.ie&&me.ie<11)return dh.initError("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(t.types)return eN(t.types,function(e){n=n.concat(Qw.select(e.selector))}),n;if(t.selector)return Qw.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":0<(e=t.elements||"").length&&eN(Zw(e),function(t){var e;(e=Qw.get(t))?n.push(e):eN(H.document.forms,function(e){eN(e.elements,function(e){e.name===t&&(t="mce_editor_"+nN++,Qw.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":eN(Qw.select("textarea"),function(e){t.editor_deselector&&l(e,t.editor_deselector)||t.editor_selector&&!l(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?eN(r.types,function(t){Gt.each(o,function(e){return!Qw.is(e,t.selector)||(n(c(e),tN({},r,t),e),!1)})}):(Gt.each(o,function(e){var t;(t=s.get(e.id))&&t.initialized&&!(t.getContainer()||t.getBody()).parentNode&&(sN(t),t.unbindAllNativeEvents(),t.destroy(!0),t.removed=!0,t=null)}),0===(o=Gt.grep(o,function(e){return!s.get(e.id)})).length?f([]):eN(o,function(e){var t;t=e,r.inline&&t.tagName.toLowerCase()in u?dh.initError("Could not initialize inline editor on invalid inline target element",e):n(c(e),r,e)}))};return s.settings=r,Qw.bind(window,"ready",e),new ge(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?iN.slice(0):R(t)?V(iN,function(e){return e.id===t}).getOr(null):L(t)&&iN[t]?iN[t]:null},add:function(e){var t=this;return oN[e.id]===e||(null===t.get(e.id)&&("length"!==e.id&&(oN[e.id]=e),oN.push(e),iN.push(e)),uN(!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),Vw||(Vw=function(){t.fire("BeforeUnload")},Qw.bind(window,"beforeunload",Vw))),e},createEditor:function(e,t){return this.add(new zw(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!R(e))return n=e,B(r.get(n.id))?null:(sN(n)&&r.fire("RemoveEditor",{editor:n}),0===iN.length&&Qw.unbind(window,"beforeunload",Vw),n.remove(),uN(0<iN.length),n);eN(Qw.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=iN.length-1;0<=t;t--)r.remove(iN[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new zw(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",0,n),!0}return!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){eN(iN,function(e){e.save()})},addI18n:function(e,t){ah.add(e,t)},translate:function(e){return ah.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!==e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},pp),Hw.setup();var cN,lN=Hw;function fN(n){return{walk:function(e,t){return Tc(n,e,t)},split:bm,normalize:function(t){return _g(n,t).fold(q(!1),function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}(cN=fN||(fN={})).compareRanges=Ng,cN.getCaretRangeFromPoint=xy,cN.getSelectedNode=Ha,cN.getNode=ja;var dN,mN,gN=fN,pN=Math.min,hN=Math.max,vN=Math.round,bN=function(e,t,n){var r,o,i,a,u,s;return r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,"b"===(n=(n||"").split(""))[0]&&(o+=s),"r"===n[1]&&(r+=u),"c"===n[0]&&(o+=vN(s/2)),"c"===n[1]&&(r+=vN(u/2)),"b"===n[3]&&(o-=a),"r"===n[4]&&(r-=i),"c"===n[3]&&(o-=vN(a/2)),"c"===n[4]&&(r-=vN(i/2)),yN(r,o,i,a)},yN=function(e,t,n,r){return{x:e,y:t,w:n,h:r}},CN={inflate:function(e,t,n){return yN(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:bN,findBestRelativePosition:function(e,t,n,r){var o,i;for(i=0;i<r.length;i++)if((o=bN(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=hN(e.x,t.x),r=hN(e.y,t.y),o=pN(e.x+e.w,t.x+t.w),i=pN(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:yN(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=hN(0,t.x-u),o=hN(0,t.y-s),i=hN(0,c-f),a=hN(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),yN(u,s,(c-=i)-u,(l-=a)-s)},create:yN,fromClientRect:function(e){return yN(e.left,e.top,e.width,e.height)}},xN={},wN={add:function(e,t){xN[e.toLowerCase()]=t},has:function(e){return!!xN[e.toLowerCase()]},get:function(e){var t=e.toLowerCase(),n=xN.hasOwnProperty(t)?xN[t]:null;if(null===n)throw new Error("Could not find module for type: "+e);return n},create:function(e,t){var n;if("string"==typeof e?(t=t||{}).type=e:e=(t=e).type,e=e.toLowerCase(),!(n=xN[e]))throw new Error("Could not find control by type: "+e);return(n=new n(t)).type=e,n}},NN=Gt.each,EN=Gt.extend,SN=function(){};SN.extend=dN=function(n){var e,t,r,o=this.prototype,i=function(){var e,t,n;if(!mN&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)},a=function(){return this},u=function(n,r){return function(){var e,t=this._super;return this._super=o[n],e=r.apply(this,arguments),this._super=t,e}};for(t in mN=!0,e=new this,mN=!1,n.Mixins&&(NN(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),o.Mixins&&(n.Mixins=o.Mixins.concat(n.Mixins))),n.Methods&&NN(n.Methods.split(","),function(e){n[e]=a}),n.Properties&&NN(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&NN(n.Statics,function(e,t){i[t]=e}),n.Defaults&&o.Defaults&&(n.Defaults=EN({},o.Defaults,n.Defaults)),n)"function"==typeof(r=n[t])&&o[t]?e[t]=u(t,r):e[t]=r;return i.prototype=e,(i.constructor=i).extend=dN,i};var kN=Math.min,TN=Math.max,AN=Math.round,RN=function(e,n){var r,o,t,i;if(n=n||'"',null===e)return"null";if("string"==(t=typeof e))return o="\bb\tt\nn\ff\rr\"\"''\\\\",n+e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=o.indexOf(t))+1?"\\"+o.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e)})+n;if("object"===t){if(e.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(e)){for(r=0,o="[";r<e.length;r++)o+=(0<r?",":"")+RN(e[r],n);return o+"]"}for(i in o="{",e)e.hasOwnProperty(i)&&(o+="function"!=typeof e[i]?(1<o.length?","+n:n)+i+n+":"+RN(e[i],n):"");return o+"}"}return""+e},_N={serialize:RN,parse:function(e){try{return JSON.parse(e)}catch(t){}}},DN={callbacks:{},count:0,send:function(t){var n=this,r=hi.DOM,o=t.count!==undefined?t.count:n.count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},BN={send:function(e){var t,n=0,r=function(){!e.async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",BN.fire("beforeInitialize",{settings:e}),t=ph()){if(t.overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&Gt.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=BN.fire("beforeSend",{xhr:t,settings:e}).xhr).send(e.data),!e.async)return r();setTimeout(r,10)}}};Gt.extend(BN,pp);var ON,PN,LN,IN,MN=Gt.extend,FN=function(e){this.settings=MN({},e),this.count=0};FN.sendRPC=function(e){return(new FN).send(e)},FN.prototype={send:function(n){var r=n.error,o=n.success;(n=MN(this.settings,n)).success=function(e,t){void 0===(e=_N.parse(e))&&(e={error:"JSON Parse error."}),e.error?r.call(n.error_scope||n.scope,e.error,t):o.call(n.success_scope||n.scope,e.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=_N.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",BN.send(n)}};try{ON=H.window.localStorage}catch(jN){PN={},LN=[],IN={getItem:function(e){var t=PN[e];return t||null},setItem:function(e,t){LN.push(e),PN[e]=String(t)},key:function(e){return LN[e]},removeItem:function(t){LN=LN.filter(function(e){return e===t}),delete PN[t]},clear:function(){LN=[],PN={}},length:0},Object.defineProperty(IN,"length",{get:function(){return LN.length},configurable:!1,enumerable:!1}),ON=IN}var zN,UN=lN,VN={geom:{Rect:CN},util:{Promise:ge,Delay:be,Tools:Gt,VK:pv,URI:Nw,Class:SN,EventDispatcher:dp,Observable:pp,I18n:ah,XHR:BN,JSON:_N,JSONRequest:FN,JSONP:DN,LocalStorage:ON,Color:function(e){var n={},u=0,s=0,c=0,t=function(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){var r,o,i,a;if(e=(parseInt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=TN(0,kN(t,1)),n=TN(0,kN(n,1)),0!==t){switch(r=e/60,i=(o=n*t)*(1-Math.abs(r%2-1)),a=n-o,Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=AN(255*(u+a)),s=AN(255*(s+a)),c=AN(255*(c+a))}else u=s=c=AN(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parseInt(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n};return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return e=u,t=s,n=c,o=0,(i=kN(e/=255,kN(t/=255,n/=255)))===(a=TN(e,TN(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:AN(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:AN(100*r),v:AN(100*o)});var e,t,n,r,o,i,a},n.toHex=function(){var e=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+e(u)+e(s)+e(c)},n.parse=t,n}},dom:{EventUtils:Te,Sizzle:Tt,DomQuery:hn,TreeWalker:oo,DOMUtils:hi,ScriptLoader:xi,RangeUtils:gN,Serializer:cy,ControlSelection:hy,BookmarkManager:my,Selection:Yy,Event:Te.Event},html:{Styles:ii,Entities:Wo,Node:Kb,Schema:ri,SaxParser:Nv,DomParser:oy,Writer:Gc,Serializer:Jc},ui:{Factory:wN},Env:me,AddOnManager:Ei,Annotator:Pc,Formatter:Lb,UndoManager:Hv,EditorCommands:lp,WindowManager:rh,NotificationManager:nh,EditorObservable:Bp,Shortcuts:Mp,Editor:zw,FocusManager:jw,EditorManager:lN,DOM:hi.DOM,ScriptLoader:xi.ScriptLoader,PluginManager:Ei.PluginManager,ThemeManager:Ei.ThemeManager,trim:Gt.trim,isArray:Gt.isArray,is:Gt.is,toArray:Gt.toArray,makeMap:Gt.makeMap,each:Gt.each,map:Gt.map,grep:Gt.grep,inArray:Gt.inArray,extend:Gt.extend,create:Gt.create,walk:Gt.walk,createNS:Gt.createNS,resolve:Gt.resolve,explode:Gt.explode,_addCacheSuffix:Gt._addCacheSuffix,isOpera:me.opera,isWebKit:me.webkit,isIE:me.ie,isGecko:me.gecko,isMac:me.mac},HN=UN=Gt.extend(UN,VN);zN=HN,window.tinymce=zN,window.tinyMCE=zN,function(e){if("object"==typeof module)try{module.exports=e}catch(t){}}(HN)}(window);
\ No newline at end of file
+// 4.9.9 (2020-03-25)
+!function(V){"use strict";var o=function(){},H=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},q=function(e){return function(){return e}},$=function(e){return e};function d(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}var e,t,n,r,i,a,u,s,c,l,f,m,g,p,h,v,y=function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}},b=q(!1),C=q(!0),x=function(){return w},w=(e=function(e){return e.isNone()},r={fold:function(e,t){return e()},is:b,isSome:b,isNone:C,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:q(null),getOrUndefined:q(undefined),or:n,orThunk:t,map:x,each:o,bind:x,exists:b,forall:C,filter:x,equals:e,equals_:e,toArray:function(){return[]},toString:q("none()")},Object.freeze&&Object.freeze(r),r),N=function(n){var e=q(n),t=function(){return o},r=function(e){return e(n)},o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:C,isNone:b,getOr:e,getOrThunk:e,getOrDie:e,getOrNull:e,getOrUndefined:e,or:t,orThunk:t,map:function(e){return N(e(n))},each:function(e){e(n)},bind:r,exists:r,forall:r,filter:function(e){return e(n)?o:w},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(b,function(e){return t(n,e)})}};return o},_={some:N,none:x,from:function(e){return null===e||e===undefined?w:N(e)}},E=function(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"===t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}},S=E("string"),T=E("object"),k=E("array"),A=E("null"),R=E("boolean"),D=E("function"),O=E("number"),B=Array.prototype.slice,P=Array.prototype.indexOf,I=Array.prototype.push,L=function(e,t){return P.call(e,t)},F=function(e,t){return-1<L(e,t)},M=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return!0;return!1},W=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r},z=function(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n)},K=function(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o)?n:r).push(a)}return{pass:n,fail:r}},U=function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n},j=function(e,t,n){return z(e,function(e){n=t(n,e)}),n},X=function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return _.some(o)}return _.none()},Y=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n))return _.some(n);return _.none()},G=function(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!k(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);I.apply(t,e[n])}return t}(W(e,t))},J=function(e,t){for(var n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n))return!1;return!0},Q=function(e,t){return U(e,function(e){return!F(t,e)})},Z=function(e){return 0===e.length?_.none():_.some(e[0])},ee=function(e){return 0===e.length?_.none():_.some(e[e.length-1])},te=D(Array.from)?Array.from:function(e){return B.call(e)},ne="undefined"!=typeof V.window?V.window:Function("return this;")(),re=function(e,t){return function(e,t){for(var n=t!==undefined&&null!==t?t:ne,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n}(e.split("."),t)},oe={getOrDie:function(e,t){var n=re(e,t);if(n===undefined||null===n)throw new Error(e+" not available on this browser");return n}},ie=function(){return oe.getOrDie("URL")},ae={createObjectURL:function(e){return ie().createObjectURL(e)},revokeObjectURL:function(e){ie().revokeObjectURL(e)}},ue=V.navigator,se=ue.userAgent,ce=function(e){return"matchMedia"in V.window&&V.matchMedia(e).matches};m=/Android/.test(se),a=(a=!(i=/WebKit/.test(se))&&/MSIE/gi.test(se)&&/Explorer/gi.test(ue.appName))&&/MSIE (\w+)\./.exec(se)[1],u=-1!==se.indexOf("Trident/")&&(-1!==se.indexOf("rv:")||-1!==ue.appName.indexOf("Netscape"))&&11,s=-1!==se.indexOf("Edge/")&&!a&&!u&&12,a=a||u||s,c=!i&&!u&&/Gecko/.test(se),l=-1!==se.indexOf("Mac"),f=/(iPad|iPhone)/.test(se),g="FormData"in V.window&&"FileReader"in V.window&&"URL"in V.window&&!!ae.createObjectURL,p=ce("only screen and (max-device-width: 480px)")&&(m||f),h=ce("only screen and (min-width: 800px)")&&(m||f),v=-1!==se.indexOf("Windows Phone"),s&&(i=!1);var le,fe={opera:!1,webkit:i,ie:a,gecko:c,mac:l,iOS:f,android:m,contentEditable:!f||g||534<=parseInt(se.match(/AppleWebKit\/(\d*)/)[1],10),transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!==a,range:V.window.getSelection&&"Range"in V.window,documentMode:a&&!s?V.document.documentMode||7:10,fileApi:g,ceFalse:!1===a||8<a,cacheSuffix:null,container:null,overrideViewPort:null,experimentalShadowDom:!1,canHaveCSP:!1===a||11<a,desktop:!p&&!h,windowsPhone:v},de=window.Promise?window.Promise:function(){function r(e,t){return function(){e.apply(t,arguments)}}var e=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},i=function(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],l(e,r(o,this),r(u,this))},t=i.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)};function a(r){var o=this;null!==this._state?t(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(o._value)}catch(n){return void r.reject(n)}r.resolve(t)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function o(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void l(r(t,e),r(o,this),r(u,this))}this._state=!0,this._value=e,s.call(this)}catch(n){u.call(this,n)}}function u(e){this._state=!1,this._value=e,s.call(this)}function s(){for(var e=0,t=this._deferreds.length;e<t;e++)a.call(this,this._deferreds[e]);this._deferreds=null}function c(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function l(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(o){if(r)return;r=!0,n(o)}}return i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(n,r){var o=this;return new i(function(e,t){a.call(o,new c(n,r,e,t))})},i.all=function(){var s=Array.prototype.slice.call(1===arguments.length&&e(arguments[0])?arguments[0]:arguments);return new i(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i}(),me=function(e,t){return"number"!=typeof t&&(t=0),setTimeout(e,t)},ge=function(e,t){return"number"!=typeof t&&(t=1),setInterval(e,t)},pe=function(t,n){var r,e;return(e=function(){var e=arguments;clearTimeout(r),r=me(function(){t.apply(this,e)},n)}).stop=function(){clearTimeout(r)},e},he={requestAnimationFrame:function(e,t){le?le.then(e):le=new de(function(e){t||(t=V.document.body),function(e,t){var n,r=V.window.requestAnimationFrame,o=["ms","moz","webkit"];for(n=0;n<o.length&&!r;n++)r=V.window[o[n]+"RequestAnimationFrame"];r||(r=function(e){V.window.setTimeout(e,0)}),r(e,t)}(e,t)}).then(e)},setTimeout:me,setInterval:ge,setEditorTimeout:function(e,t,n){return me(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r;return r=ge(function(){e.removed?clearInterval(r):t()},n)},debounce:pe,throttle:pe,clearInterval:function(e){return clearInterval(e)},clearTimeout:function(e){return clearTimeout(e)}},ve=/^(?:mouse|contextmenu)|click/,ye={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1},be=function(){return!1},Ce=function(){return!0},xe=function(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)},we=function(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)},Ne=function(e,t){var n,r,o=t||{};for(n in e)ye[n]||(o[n]=e[n]);if(o.target||(o.target=o.srcElement||V.document),fe.experimentalShadowDom&&(o.target=function(e,t){if(e.composedPath){var n=e.composedPath();if(n&&0<n.length)return n[0]}return t}(e,o.target)),e&&ve.test(e.type)&&e.pageX===undefined&&e.clientX!==undefined){var i=o.target.ownerDocument||V.document,a=i.documentElement,u=i.body;o.pageX=e.clientX+(a&&a.scrollLeft||u&&u.scrollLeft||0)-(a&&a.clientLeft||u&&u.clientLeft||0),o.pageY=e.clientY+(a&&a.scrollTop||u&&u.scrollTop||0)-(a&&a.clientTop||u&&u.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=Ce,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=Ce,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},!(o.stopImmediatePropagation=function(){o.isImmediatePropagationStopped=Ce,o.stopPropagation()})==((r=o).isDefaultPrevented===Ce||r.isDefaultPrevented===be)&&(o.isDefaultPrevented=be,o.isPropagationStopped=be,o.isImmediatePropagationStopped=be),"undefined"==typeof o.metaKey&&(o.metaKey=!1),o},Ee=function(e,t,n){var r=e.document,o={type:"ready"};if(n.domLoaded)t(o);else{var i=function(){return"complete"===r.readyState||"interactive"===r.readyState&&r.body},a=function(){n.domLoaded||(n.domLoaded=!0,t(o))},u=function(){i()&&(we(r,"readystatechange",u),a())},s=function(){try{r.documentElement.doScroll("left")}catch(e){return void he.setTimeout(s)}a()};!r.addEventListener||fe.ie&&fe.ie<11?(xe(r,"readystatechange",u),r.documentElement.doScroll&&e.self===e.top&&s()):i()?a():xe(e,"DOMContentLoaded",a),xe(e,"load",a)}},Se=function(){var m,g,p,h,v,y=this,b={};g="mce-data-"+(+new Date).toString(32),h="onmouseenter"in V.document.documentElement,p="onfocusin"in V.document.documentElement,v={mouseenter:"mouseover",mouseleave:"mouseout"},m=1,y.domLoaded=!1,y.events=b;var C=function(e,t){var n,r,o,i,a=b[t];if(n=a&&a[e.type])for(r=0,o=n.length;r<o;r++)if((i=n[r])&&!1===i.func.call(i.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return};y.bind=function(e,t,n,r){var o,i,a,u,s,c,l,f=V.window,d=function(e){C(Ne(e||f.event),o)};if(e&&3!==e.nodeType&&8!==e.nodeType){for(e[g]?o=e[g]:(o=m++,e[g]=o,b[o]={}),r=r||e,a=(t=t.split(" ")).length;a--;)c=d,s=l=!1,"DOMContentLoaded"===(u=t[a])&&(u="ready"),y.domLoaded&&"ready"===u&&"complete"===e.readyState?n.call(r,Ne({type:u})):(h||(s=v[u])&&(c=function(e){var t,n;if(t=e.currentTarget,(n=e.relatedTarget)&&t.contains)n=t.contains(n);else for(;n&&n!==t;)n=n.parentNode;n||((e=Ne(e||f.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,C(e,o))}),p||"focusin"!==u&&"focusout"!==u||(l=!0,s="focusin"===u?"focus":"blur",c=function(e){(e=Ne(e||f.event)).type="focus"===e.type?"focusin":"focusout",C(e,o)}),(i=b[o][u])?"ready"===u&&y.domLoaded?n({type:u}):i.push({func:n,scope:r}):(b[o][u]=i=[{func:n,scope:r}],i.fakeName=s,i.capture=l,i.nativeHandler=c,"ready"===u?Ee(e,c,y):xe(e,s||u,c,l)));return e=i=0,n}},y.unbind=function(e,t,n){var r,o,i,a,u,s;if(!e||3===e.nodeType||8===e.nodeType)return y;if(r=e[g]){if(s=b[r],t){for(i=(t=t.split(" ")).length;i--;)if(o=s[u=t[i]]){if(n)for(a=o.length;a--;)if(o[a].func===n){var c=o.nativeHandler,l=o.fakeName,f=o.capture;(o=o.slice(0,a).concat(o.slice(a+1))).nativeHandler=c,o.fakeName=l,o.capture=f,s[u]=o}n&&0!==o.length||(delete s[u],we(e,o.fakeName||u,o.nativeHandler,o.capture))}}else{for(u in s)o=s[u],we(e,o.fakeName||u,o.nativeHandler,o.capture);s={}}for(u in s)return y;delete b[r];try{delete e[g]}catch(d){e[g]=null}}return y},y.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return y;for((n=Ne(null,n)).type=t,n.target=e;(r=e[g])&&C(n,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!n.isPropagationStopped(););return y},y.clean=function(e){var t,n,r=y.unbind;if(!e||3===e.nodeType||8===e.nodeType)return y;if(e[g]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[g]&&r(e);return y},y.destroy=function(){b={}},y.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}};Se.Event=new Se,Se.Event.bind(V.window,"ready",function(){});var Te,ke,_e,Ae,Re,De,Oe,Be,Pe,Ie,Le,Fe,Me,ze,Ue,je,Ve,He,qe="sizzle"+-new Date,$e=V.window.document,We=0,Ke=0,Xe=Tt(),Ye=Tt(),Ge=Tt(),Je=function(e,t){return e===t&&(Le=!0),0},Qe=typeof undefined,Ze={}.hasOwnProperty,et=[],tt=et.pop,nt=et.push,rt=et.push,ot=et.slice,it=et.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},at="[\\x20\\t\\r\\n\\f]",ut="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",st="\\["+at+"*("+ut+")(?:"+at+"*([*^$|!~]?=)"+at+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ut+"))|)"+at+"*\\]",ct=":("+ut+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+st+")*)|.*)\\)|)",lt=new RegExp("^"+at+"+|((?:^|[^\\\\])(?:\\\\.)*)"+at+"+$","g"),ft=new RegExp("^"+at+"*,"+at+"*"),dt=new RegExp("^"+at+"*([>+~]|"+at+")"+at+"*"),mt=new RegExp("="+at+"*([^\\]'\"]*?)"+at+"*\\]","g"),gt=new RegExp(ct),pt=new RegExp("^"+ut+"$"),ht={ID:new RegExp("^#("+ut+")"),CLASS:new RegExp("^\\.("+ut+")"),TAG:new RegExp("^("+ut+"|[*])"),ATTR:new RegExp("^"+st),PSEUDO:new RegExp("^"+ct),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+at+"*(even|odd|(([+-]|)(\\d*)n|)"+at+"*(?:([+-]|)"+at+"*(\\d+)|))"+at+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+at+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+at+"*((?:-\\d)?\\d*)"+at+"*\\)|)(?=[^-]|$)","i")},vt=/^(?:input|select|textarea|button)$/i,yt=/^h\d$/i,bt=/^[^{]+\{\s*\[native \w/,Ct=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,xt=/[+~]/,wt=/'|\\/g,Nt=new RegExp("\\\\([\\da-f]{1,6}"+at+"?|("+at+")|.)","ig"),Et=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{rt.apply(et=ot.call($e.childNodes),$e.childNodes),et[$e.childNodes.length].nodeType}catch(oE){rt={apply:et.length?function(e,t){nt.apply(e,ot.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var St=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m;if((t?t.ownerDocument||t:$e)!==Me&&Fe(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Me).nodeType)&&9!==u)return[];if(Ue&&!r){if(o=Ct.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&He(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return rt.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&ke.getElementsByClassName)return rt.apply(n,t.getElementsByClassName(a)),n}if(ke.qsa&&(!je||!je.test(e))){if(f=l=qe,d=t,m=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=De(e),(l=t.getAttribute("id"))?f=l.replace(wt,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+Pt(c[s]);d=xt.test(e)&&Ot(t.parentNode)||t,m=c.join(",")}if(m)try{return rt.apply(n,d.querySelectorAll(m)),n}catch(g){}finally{l||t.removeAttribute("id")}}}return Be(e.replace(lt,"$1"),t,n,r)};function Tt(){var r=[];return function e(t,n){return r.push(t+" ")>_e.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function kt(e){return e[qe]=!0,e}function _t(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function At(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function Rt(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function Dt(a){return kt(function(i){return i=+i,kt(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Ot(e){return e&&typeof e.getElementsByTagName!==Qe&&e}for(Te in ke=St.support={},Re=St.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},Fe=St.setDocument=function(e){var t,s=e?e.ownerDocument||e:$e,n=s.defaultView;return s!==Me&&9===s.nodeType&&s.documentElement?(ze=(Me=s).documentElement,Ue=!Re(s),n&&n!==function(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){Fe()},!1):n.attachEvent&&n.attachEvent("onunload",function(){Fe()})),ke.attributes=!0,ke.getElementsByTagName=!0,ke.getElementsByClassName=bt.test(s.getElementsByClassName),ke.getById=!0,_e.find.ID=function(e,t){if(typeof t.getElementById!==Qe&&Ue){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},_e.filter.ID=function(e){var t=e.replace(Nt,Et);return function(e){return e.getAttribute("id")===t}},_e.find.TAG=ke.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!==Qe)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},_e.find.CLASS=ke.getElementsByClassName&&function(e,t){if(Ue)return t.getElementsByClassName(e)},Ve=[],je=[],ke.disconnectedMatch=!0,je=je.length&&new RegExp(je.join("|")),Ve=Ve.length&&new RegExp(Ve.join("|")),t=bt.test(ze.compareDocumentPosition),He=t||bt.test(ze.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},Je=t?function(e,t){if(e===t)return Le=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!ke.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===$e&&He($e,e)?-1:t===s||t.ownerDocument===$e&&He($e,t)?1:Ie?it.call(Ie,e)-it.call(Ie,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Le=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Ie?it.call(Ie,e)-it.call(Ie,t):0;if(o===i)return _t(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?_t(a[r],u[r]):a[r]===$e?-1:u[r]===$e?1:0},s):Me},St.matches=function(e,t){return St(e,null,null,t)},St.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Me&&Fe(e),t=t.replace(mt,"='$1']"),ke.matchesSelector&&Ue&&(!Ve||!Ve.test(t))&&(!je||!je.test(t)))try{var n=(void 0).call(e,t);if(n||ke.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(oE){}return 0<St(t,Me,null,[e]).length},St.contains=function(e,t){return(e.ownerDocument||e)!==Me&&Fe(e),He(e,t)},St.attr=function(e,t){(e.ownerDocument||e)!==Me&&Fe(e);var n=_e.attrHandle[t.toLowerCase()],r=n&&Ze.call(_e.attrHandle,t.toLowerCase())?n(e,t,!Ue):undefined;return r!==undefined?r:ke.attributes||!Ue?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},St.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},St.uniqueSort=function(e){var t,n=[],r=0,o=0;if(Le=!ke.detectDuplicates,Ie=!ke.sortStable&&e.slice(0),e.sort(Je),Le){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Ie=null,e},Ae=St.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=Ae(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=Ae(t);return n},(_e=St.selectors={cacheLength:50,createPseudo:kt,match:ht,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Nt,Et),e[3]=(e[3]||e[4]||e[5]||"").replace(Nt,Et),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||St.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&St.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return ht.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&>.test(n)&&(t=De(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Nt,Et).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Xe[e+" "];return t||(t=new RegExp("(^|"+at+")"+e+"("+at+"|$)"))&&Xe(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==Qe&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=St.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(m,e,t,g,p){var h="nth"!==m.slice(0,3),v="last"!==m.slice(-4),y="of-type"===e;return 1===g&&0===p?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=h!==v?"nextSibling":"previousSibling",l=e.parentNode,f=y&&e.nodeName.toLowerCase(),d=!n&&!y;if(l){if(h){for(;c;){for(i=e;i=i[c];)if(y?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===m&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[qe]||(l[qe]={}))[m]||[])[0]===We&&r[1],a=r[0]===We&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[m]=[We,u,a];break}}else if(d&&(r=(e[qe]||(e[qe]={}))[m])&&r[0]===We)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((y?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[qe]||(i[qe]={}))[m]=[We,a]),i!==e)););return(a-=p)===g||a%g==0&&0<=a/g}}},PSEUDO:function(e,i){var t,a=_e.pseudos[e]||_e.setFilters[e.toLowerCase()]||St.error("unsupported pseudo: "+e);return a[qe]?a(i):1<a.length?(t=[e,e,"",i],_e.setFilters.hasOwnProperty(e.toLowerCase())?kt(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=it.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:kt(function(e){var r=[],o=[],u=Oe(e.replace(lt,"$1"));return u[qe]?kt(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),!o.pop()}}),has:kt(function(t){return function(e){return 0<St(t,e).length}}),contains:kt(function(t){return t=t.replace(Nt,Et),function(e){return-1<(e.textContent||e.innerText||Ae(e)).indexOf(t)}}),lang:kt(function(n){return pt.test(n||"")||St.error("unsupported lang: "+n),n=n.replace(Nt,Et).toLowerCase(),function(e){var t;do{if(t=Ue?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=V.window.location&&V.window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===ze},focus:function(e){return e===Me.activeElement&&(!Me.hasFocus||Me.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!_e.pseudos.empty(e)},header:function(e){return yt.test(e.nodeName)},input:function(e){return vt.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:Dt(function(){return[0]}),last:Dt(function(e,t){return[t-1]}),eq:Dt(function(e,t,n){return[n<0?n+t:n]}),even:Dt(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:Dt(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:Dt(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:Dt(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=_e.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})_e.pseudos[Te]=At(Te);for(Te in{submit:!0,reset:!0})_e.pseudos[Te]=Rt(Te);function Bt(){}function Pt(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function It(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=Ke++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[We,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||s){if((r=(o=e[qe]||(e[qe]={}))[u])&&r[0]===We&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function Lt(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function Ft(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function Mt(m,g,p,h,v,e){return h&&!h[qe]&&(h=Mt(h)),v&&!v[qe]&&(v=Mt(v,e)),kt(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function(e,t,n){for(var r=0,o=t.length;r<o;r++)St(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:Ft(l,u,m,n,r),d=p?v||(e?m:c||h)?[]:t:f;if(p&&p(f,d,n,r),h)for(o=Ft(d,s),h(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(v||m){if(v){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);v(null,d=[],o,r)}for(i=d.length;i--;)(a=d[i])&&-1<(o=v?it.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=Ft(d===t?d.splice(c,d.length):d),v?v(null,t,d,r):rt.apply(t,d)})}function zt(e){for(var r,t,n,o=e.length,i=_e.relative[e[0].type],a=i||_e.relative[" "],u=i?1:0,s=It(function(e){return e===r},a,!0),c=It(function(e){return-1<it.call(r,e)},a,!0),l=[function(e,t,n){return!i&&(n||t!==Pe)||((r=t).nodeType?s(e,t,n):c(e,t,n))}];u<o;u++)if(t=_e.relative[e[u].type])l=[It(Lt(l),t)];else{if((t=_e.filter[e[u].type].apply(null,e[u].matches))[qe]){for(n=++u;n<o&&!_e.relative[e[n].type];n++);return Mt(1<u&&Lt(l),1<u&&Pt(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(lt,"$1"),t,u<n&&zt(e.slice(u,n)),n<o&&zt(e=e.slice(n)),n<o&&Pt(e))}l.push(t)}return Lt(l)}Bt.prototype=_e.filters=_e.pseudos,_e.setFilters=new Bt,De=St.tokenize=function(e,t){var n,r,o,i,a,u,s,c=Ye[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],s=_e.preFilter;a;){for(i in n&&!(r=ft.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=dt.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(lt," ")}),a=a.slice(n.length)),_e.filter)!(r=ht[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?St.error(e):Ye(e,u).slice(0)},Oe=St.compile=function(e,t){var n,h,v,y,b,r,o=[],i=[],a=Ge[e+" "];if(!a){for(t||(t=De(e)),n=t.length;n--;)(a=zt(t[n]))[qe]?o.push(a):i.push(a);(a=Ge(e,(h=i,y=0<(v=o).length,b=0<h.length,r=function(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=Pe,m=e||b&&_e.find.TAG("*",o),g=We+=null==d?1:Math.random()||.1,p=m.length;for(o&&(Pe=t!==Me&&t);c!==p&&null!=(i=m[c]);c++){if(b&&i){for(a=0;u=h[a++];)if(u(i,t,n)){r.push(i);break}o&&(We=g)}y&&((i=!u&&i)&&s--,e&&l.push(i))}if(s+=c,y&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=tt.call(r));f=Ft(f)}rt.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&St.uniqueSort(r)}return o&&(We=g,Pe=d),l},y?kt(r):r))).selector=e}return a},Be=St.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&De(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&ke.getById&&9===t.nodeType&&Ue&&_e.relative[i[1].type]){if(!(t=(_e.find.ID(a.matches[0].replace(Nt,Et),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=ht.needsContext.test(e)?0:i.length;o--&&(a=i[o],!_e.relative[u=a.type]);)if((s=_e.find[u])&&(r=s(a.matches[0].replace(Nt,Et),xt.test(i[0].type)&&Ot(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&Pt(i)))return rt.apply(n,r),n;break}}return(c||Oe(e,l))(r,t,!Ue,n,xt.test(e)&&Ot(t.parentNode)||t),n},ke.sortStable=qe.split("").sort(Je).join("")===qe,ke.detectDuplicates=!!Le,Fe(),ke.sortDetached=!0;var Ut=Array.isArray,jt=function(e,t,n){var r,o;if(!e)return 0;if(n=n||e,e.length!==undefined){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return 0}else for(r in e)if(e.hasOwnProperty(r)&&!1===t.call(n,e[r],r,e))return 0;return 1},Vt=function(e,t,n){var r,o;for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1},Ht={isArray:Ut,toArray:function(e){var t,n,r=e;if(!Ut(e))for(r=[],t=0,n=e.length;t<n;t++)r[t]=e[t];return r},each:jt,map:function(n,r){var o=[];return jt(n,function(e,t){o.push(r(e,t,n))}),o},filter:function(n,r){var o=[];return jt(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o},indexOf:function(e,t){var n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},reduce:function(e,t,n,r){var o=0;for(arguments.length<3&&(n=e[0]);o<e.length;o++)n=t.call(r,n,e[o],o);return n},findIndex:Vt,find:function(e,t,n){var r=Vt(e,t,n);return-1!==r?e[r]:undefined},last:function(e){return e[e.length-1]}},qt=/^\s*|\s*$/g,$t=function(e){return null===e||e===undefined?"":(""+e).replace(qt,"")},Wt=function(e,t){return t?!("array"!==t||!Ht.isArray(e))||typeof e===t:e!==undefined},Kt=function(e,n,r,o){o=o||this,e&&(r&&(e=e[r]),Ht.each(e,function(e,t){if(!1===n.call(o,e,t,r))return!1;Kt(e,n,r,o)}))},Xt={trim:$t,isArray:Ht.isArray,is:Wt,toArray:Ht.toArray,makeMap:function(e,t,n){var r;for(t=t||",","string"==typeof(e=e||[])&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n},each:Ht.each,map:Ht.map,grep:Ht.filter,inArray:Ht.indexOf,hasOwn:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},extend:function(e,t){for(var n,r,o,i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];var u,s=arguments;for(n=1,r=s.length;n<r;n++)for(o in t=s[n])t.hasOwnProperty(o)&&(u=t[o])!==undefined&&(e[o]=u);return e},create:function(e,t,n){var r,o,i,a,u,s=this,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),i=e[3].match(/(^|\.)(\w+)$/i)[2],!(o=s.createNS(e[3].replace(/\.\w+$/,""),n))[i]){if("static"===e[2])return o[i]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[i]));t[i]||(t[i]=function(){},c=1),o[i]=t[i],s.extend(o[i].prototype,t),e[5]&&(r=s.resolve(e[5]).prototype,a=e[5].match(/\.(\w+)$/i)[1],u=o[i],o[i]=c?function(){return r[a].apply(this,arguments)}:function(){return this.parent=r[a],u.apply(this,arguments)},o[i].prototype[i]=o[i],s.each(r,function(e,t){o[i].prototype[t]=r[t]}),s.each(t,function(e,t){r[t]?o[i].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==i&&(o[i].prototype[t]=e)})),s.each(t["static"],function(e,t){o[i][t]=e})}},walk:Kt,createNS:function(e,t){var n,r;for(t=t||V.window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||V.window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||Wt(e,"array")?e:Ht.map(e.split(t||","),$t)},_addCacheSuffix:function(e){var t=fe.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}},Yt=V.document,Gt=Array.prototype.push,Jt=Array.prototype.slice,Qt=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,Zt=Se.Event,en=Xt.makeMap("children,contents,next,prev"),tn=function(e){return void 0!==e},nn=function(e){return"string"==typeof e},rn=function(e,t){var n,r,o;for(o=(t=t||Yt).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n},on=function(e,t,n,r){var o;if(nn(t))t=rn(t,bn(e[0]));else if(t.length&&!t.nodeType){if(t=gn.makeArray(t),r)for(o=t.length-1;0<=o;o--)on(e,t[o],n,r);else for(o=0;o<t.length;o++)on(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},an=function(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")},un=function(e,t,n){var r,o;return t=gn(t)[0],e.each(function(){var e=this;n&&r===e.parentNode||(r=e.parentNode,o=t.cloneNode(!1),e.parentNode.insertBefore(o,e)),o.appendChild(e)}),e},sn=Xt.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),cn=Xt.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),ln={"for":"htmlFor","class":"className",readonly:"readOnly"},fn={"float":"cssFloat"},dn={},mn={},gn=function(e,t){return new gn.fn.init(e,t)},pn=/^\s*|\s*$/g,hn=function(e){return null===e||e===undefined?"":(""+e).replace(pn,"")},vn=function(e,t){var n,r,o,i;if(e)if((n=e.length)===undefined){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e},yn=function(e,n){var r=[];return vn(e,function(e,t){n(t,e)&&r.push(t)}),r},bn=function(e){return e?9===e.nodeType?e:e.ownerDocument:Yt};gn.fn=gn.prototype={constructor:gn,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return gn(e).attr(t);o.context=t=V.document}if(nn(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Qt.exec(e)))return gn(t).find(e);if(n[1])for(r=rn(e,bn(t)).firstChild;r;)Gt.call(o,r),r=r.nextSibling;else{if(!(r=bn(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Xt.toArray(this)},add:function(e,t){var n,r,o=this;if(nn(e))return o.add(gn(e));if(!1!==t)for(n=gn.unique(o.toArray().concat(gn.makeArray(e))),o.length=n.length,r=0;r<n.length;r++)o[r]=n[r];else Gt.apply(o,gn.makeArray(e));return o},attr:function(t,n){var e,r=this;if("object"==typeof t)vn(t,function(e,t){r.attr(e,t)});else{if(!tn(n)){if(r[0]&&1===r[0].nodeType){if((e=dn[t])&&e.get)return e.get(r[0],t);if(cn[t])return r.prop(t)?t:undefined;null===(n=r[0].getAttribute(t,2))&&(n=undefined)}return n}this.each(function(){var e;if(1===this.nodeType){if((e=dn[t])&&e.set)return void e.set(this,n);null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2)}})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeof(e=ln[e]||e))vn(e,function(e,t){n.prop(e,t)});else{if(!tn(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1===this.nodeType&&(this[e]=t)})}return n},css:function(n,r){var e,o,i=this,t=function(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})},a=function(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})};if("object"==typeof n)vn(n,function(e,t){i.css(e,t)});else if(tn(r))n=t(n),"number"!=typeof r||sn[n]||(r=r.toString()+"px"),i.each(function(){var e=this.style;if((o=mn[n])&&o.set)o.set(this,r);else{try{this.style[fn[n]||n]=r}catch(t){}null!==r&&""!==r||(e.removeProperty?e.removeProperty(a(n)):e.removeAttribute(n))}});else{if(e=i[0],(o=mn[n])&&o.get)return o.get(e);if(!e.ownerDocument.defaultView)return e.currentStyle?e.currentStyle[t(n)]:"";try{return e.ownerDocument.defaultView.getComputedStyle(e,null).getPropertyValue(a(n))}catch(u){return undefined}}return i},remove:function(){for(var e,t=this.length;t--;)e=this[t],Zt.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(e){var t,n=this;if(tn(e)){t=n.length;try{for(;t--;)n[t].innerHTML=e}catch(r){gn(n[t]).empty().append(e)}return n}return n[0]?n[0].innerHTML:""},text:function(e){var t,n=this;if(tn(e)){for(t=n.length;t--;)"innerText"in n[t]?n[t].innerText=e:n[0].textContent=e;return n}return n[0]?n[0].innerText||n[0].textContent:""},append:function(){return on(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return on(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&&this[0].parentNode?on(this,arguments,function(e){this.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?on(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return gn(e).append(this),this},prependTo:function(e){return gn(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return un(this,e)},wrapAll:function(e){return un(this,e,!0)},wrapInner:function(e){return this.each(function(){gn(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){gn(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),gn(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?vn(o.split(" "),function(){e.toggleClass(this,i)}):e.each(function(e,t){var n,r;(r=an(t,o))!==i&&(n=t.className,r?t.className=hn((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return an(this[0],e)},each:function(e){return vn(this,e)},on:function(e,t){return this.each(function(){Zt.bind(this,e,t)})},off:function(e,t){return this.each(function(){Zt.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?Zt.fire(this,e.type,e):Zt.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new gn(Jt.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;t<n;t++)gn.find(e,this[t],r);return gn(r)},filter:function(n){return gn("function"==typeof n?yn(this.toArray(),function(e,t){return n(t,e)}):gn.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof gn&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&gn(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),gn(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:Gt,sort:[].sort,splice:[].splice},Xt.extend(gn,{extend:Xt.extend,makeArray:function(e){return(t=e)&&t===t.window||e.nodeType?[e]:Xt.toArray(e);var t},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:Xt.isArray,each:vn,trim:hn,grep:yn,find:St,expr:St.selectors,unique:St.uniqueSort,text:St.getText,contains:St.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!==t[r].nodeType&&t.splice(r,1);return t=1===t.length?gn.find.matchesSelector(t[0],e)?[t[0]]:[]:gn.find.matches(e,t)}});var Cn=function(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof gn&&(n=n[0]);o&&9!==o.nodeType;){if(n!==undefined){if(o===n)break;if("string"==typeof n&&gn(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r},xn=function(e,t,n,r){var o=[];for(r instanceof gn&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(r!==undefined){if(e===r)break;if("string"==typeof r&&gn(e).is(r))break}o.push(e)}return o},wn=function(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null};vn({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return Cn(e,"parentNode")},next:function(e){return wn(e,"nextSibling",1)},prev:function(e){return wn(e,"previousSibling",1)},children:function(e){return xn(e.firstChild,"nextSibling",1)},contents:function(e){return Xt.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,r){gn.fn[e]=function(t){var n=[];return this.each(function(){var e=r.call(n,this,t,n);e&&(gn.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(en[e]||(n=gn.unique(n)),0===e.indexOf("parents")&&(n=n.reverse())),n=gn(n),t?n.filter(t):n}}),vn({parentsUntil:function(e,t){return Cn(e,"parentNode",t)},nextUntil:function(e,t){return xn(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return xn(e,"previousSibling",1,t).slice(1)}},function(r,o){gn.fn[r]=function(t,e){var n=[];return this.each(function(){var e=o.call(n,this,t,n);e&&(gn.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(n=gn.unique(n),0!==r.indexOf("parents")&&"prevUntil"!==r||(n=n.reverse())),n=gn(n),e?n.filter(e):n}}),gn.fn.is=function(e){return!!e&&0<this.filter(e).length},gn.fn.init.prototype=gn.fn,gn.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t||(t=r.context),new o.fn.init(e,t)};return gn.extend(o,this),o};var Nn=function(n,r,e){vn(e,function(e,t){n[e]=n[e]||{},n[e][r]=t})};fe.ie&&fe.ie<8&&(Nn(dn,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?undefined:t},size:function(e){var t=e.size;return 20===t?undefined:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?undefined:t}}),Nn(dn,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),fe.ie&&fe.ie<9&&(fn["float"]="styleFloat",Nn(mn,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),gn.attrHooks=dn,gn.cssHooks=mn;var En,Sn,Tn,kn,_n,An,Rn,Dn=function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}return undefined}(e,t);if(!n)return{major:0,minor:0};var r=function(e){return Number(t.replace(n,"$"+e))};return Bn(r(1),r(2))},On=function(){return Bn(0,0)},Bn=function(e,t){return{major:e,minor:t}},Pn={nu:Bn,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?On():Dn(e,n)},unknown:On},In="Firefox",Ln=function(e,t){return function(){return t===e}},Fn=function(e){var t=e.current;return{current:t,version:e.version,isEdge:Ln("Edge",t),isChrome:Ln("Chrome",t),isIE:Ln("IE",t),isOpera:Ln("Opera",t),isFirefox:Ln(In,t),isSafari:Ln("Safari",t)}},Mn={unknown:function(){return Fn({current:undefined,version:Pn.unknown()})},nu:Fn,edge:q("Edge"),chrome:q("Chrome"),ie:q("IE"),opera:q("Opera"),firefox:q(In),safari:q("Safari")},zn="Windows",Un="Android",jn="Solaris",Vn="FreeBSD",Hn=function(e,t){return function(){return t===e}},qn=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Hn(zn,t),isiOS:Hn("iOS",t),isAndroid:Hn(Un,t),isOSX:Hn("OSX",t),isLinux:Hn("Linux",t),isSolaris:Hn(jn,t),isFreeBSD:Hn(Vn,t)}},$n={unknown:function(){return qn({current:undefined,version:Pn.unknown()})},nu:qn,windows:q(zn),ios:q("iOS"),android:q(Un),linux:q("Linux"),osx:q("OSX"),solaris:q(jn),freebsd:q(Vn)},Wn=function(e,t){var n=String(t).toLowerCase();return X(e,function(e){return e.search(n)})},Kn=function(e,n){return Wn(e,n).map(function(e){var t=Pn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Xn=function(e,n){return Wn(e,n).map(function(e){var t=Pn.detect(e.versionRegexes,n);return{current:e.name,version:t}})},Yn=function(e,t){return-1!==e.indexOf(t)},Gn=function(e){return e.replace(/^\s+|\s+$/g,"")},Jn=function(e){return e.replace(/\s+$/g,"")},Qn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Zn=function(t){return function(e){return Yn(e,t)}},er=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Yn(e,"edge/")&&Yn(e,"chrome")&&Yn(e,"safari")&&Yn(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Qn],search:function(e){return Yn(e,"chrome")&&!Yn(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Yn(e,"msie")||Yn(e,"trident")}},{name:"Opera",versionRegexes:[Qn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Zn("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Zn("firefox")},{name:"Safari",versionRegexes:[Qn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Yn(e,"safari")||Yn(e,"mobile/"))&&Yn(e,"applewebkit")}}],tr=[{name:"Windows",search:Zn("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Yn(e,"iphone")||Yn(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Zn("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Zn("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Zn("linux"),versionRegexes:[]},{name:"Solaris",search:Zn("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Zn("freebsd"),versionRegexes:[]}],nr={browsers:q(er),oses:q(tr)},rr=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=nr.browsers(),m=nr.oses(),g=Kn(d,e).fold(Mn.unknown,Mn.nu),p=Xn(m,e).fold($n.unknown,$n.nu);return{browser:g,os:p,deviceType:(n=g,r=e,o=(t=p).isiOS()&&!0===/ipad/i.test(r),i=t.isiOS()&&!o,a=t.isAndroid()&&3===t.version.major,u=t.isAndroid()&&4===t.version.major,s=o||a||u&&!0===/mobile/i.test(r),c=t.isiOS()||t.isAndroid(),l=c&&!s,f=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(r),{isiPad:q(o),isiPhone:q(i),isTablet:q(s),isPhone:q(l),isTouch:q(c),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:q(f)})}},or={detect:(En=function(){var e=V.navigator.userAgent;return rr(e)},Tn=!1,function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return Tn||(Tn=!0,Sn=En.apply(null,e)),Sn})},ir=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:q(e)}},ar={fromHtml:function(e,t){var n=(t||V.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw V.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ir(n.childNodes[0])},fromTag:function(e,t){var n=(t||V.document).createElement(e);return ir(n)},fromText:function(e,t){var n=(t||V.document).createTextNode(e);return ir(n)},fromDom:ir,fromPoint:function(e,t,n){var r=e.dom();return _.from(r.elementFromPoint(t,n)).map(ir)}},ur=(V.Node.ATTRIBUTE_NODE,V.Node.CDATA_SECTION_NODE,V.Node.COMMENT_NODE,V.Node.DOCUMENT_NODE),sr=(V.Node.DOCUMENT_TYPE_NODE,V.Node.DOCUMENT_FRAGMENT_NODE,V.Node.ELEMENT_NODE),cr=V.Node.TEXT_NODE,lr=(V.Node.PROCESSING_INSTRUCTION_NODE,V.Node.ENTITY_REFERENCE_NODE,V.Node.ENTITY_NODE,V.Node.NOTATION_NODE,function(e){return e.dom().nodeName.toLowerCase()}),fr=function(t){return function(e){return e.dom().nodeType===t}},dr=fr(sr),mr=fr(cr),gr=Object.keys,pr=Object.hasOwnProperty,hr=function(e,t){for(var n=gr(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}},vr=function(e,r){var o={};return hr(e,function(e,t){var n=r(e,t);o[n.k]=n.v}),o},yr=function(e,n){var r={},o={};return hr(e,function(e,t){(n(e,t)?r:o)[t]=e}),{t:r,f:o}},br=function(e){return e.style!==undefined&&D(e.style.getPropertyValue)},Cr=function(e,t,n){if(!(S(n)||R(n)||O(n)))throw V.console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")},xr=function(e,t,n){Cr(e.dom(),t,n)},wr=function(e,t){var n=e.dom();hr(t,function(e,t){Cr(n,t,e)})},Nr=function(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n},Er=function(e,t){e.dom().removeAttribute(t)},Sr=function(e,t){var n=e.dom();hr(t,function(e,t){!function(e,t,n){if(!S(n))throw V.console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);br(e)&&e.style.setProperty(t,n)}(n,t,e)})},Tr=function(e,t){var n,r,o=e.dom(),i=V.window.getComputedStyle(o).getPropertyValue(t),a=""!==i||(r=mr(n=e)?n.dom().parentNode:n.dom())!==undefined&&null!==r&&r.ownerDocument.body.contains(r)?i:kr(o,t);return null===a?undefined:a},kr=function(e,t){return br(e)?e.style.getPropertyValue(t):""},_r=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(t.length!==n.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+n.length+" arguments");var r={};return z(t,function(e,t){r[e]=q(n[t])}),r}},Ar=function(e,t){for(var n=[],r=function(e){return n.push(e),t(e)},o=t(e);(o=o.bind(r)).isSome(););return n},Rr=function(){return oe.getOrDie("Node")},Dr=function(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)},Or=function(e,t){return Dr(e,t,Rr().DOCUMENT_POSITION_CONTAINED_BY)},Br=sr,Pr=ur,Ir=function(e,t){var n=e.dom();if(n.nodeType!==Br)return!1;var r=n;if(r.matches!==undefined)return r.matches(t);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(t);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(t);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},Lr=function(e){return e.nodeType!==Br&&e.nodeType!==Pr||0===e.childElementCount},Fr=function(e,t){return e.dom()===t.dom()},Mr=or.detect().browser.isIE()?function(e,t){return Or(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},zr=function(e){return ar.fromDom(e.dom().ownerDocument)},Ur=function(e){return ar.fromDom(e.dom().ownerDocument.defaultView)},jr=function(e){return _.from(e.dom().parentNode).map(ar.fromDom)},Vr=function(e){return _.from(e.dom().previousSibling).map(ar.fromDom)},Hr=function(e){return _.from(e.dom().nextSibling).map(ar.fromDom)},qr=function(e){return t=Ar(e,Vr),(n=B.call(t,0)).reverse(),n;var t,n},$r=function(e){return Ar(e,Hr)},Wr=function(e){return W(e.dom().childNodes,ar.fromDom)},Kr=function(e,t){var n=e.dom().childNodes;return _.from(n[t]).map(ar.fromDom)},Xr=function(e){return Kr(e,0)},Yr=function(e){return Kr(e,e.dom().childNodes.length-1)},Gr=(_r("element","offset"),or.detect().browser),Jr=function(e){return X(e,dr)},Qr={getPos:function(e,t,n){var r,o,i,a=0,u=0,s=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===Tr(ar.fromDom(e),"position"))return{x:a=(o=t.getBoundingClientRect()).left+(s.documentElement.scrollLeft||e.scrollLeft)-s.documentElement.clientLeft,y:u=o.top+(s.documentElement.scrollTop||e.scrollTop)-s.documentElement.clientTop};for(r=t;r&&r!==n&&r.nodeType;)a+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!==n&&r.nodeType;)a-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;u+=(i=ar.fromDom(t),Gr.isFirefox()&&"table"===lr(i)?Jr(Wr(i)).filter(function(e){return"caption"===lr(e)}).bind(function(o){return Jr($r(o)).map(function(e){var t=e.dom().offsetTop,n=o.dom().offsetTop,r=o.dom().offsetHeight;return t<=n?-r:0})}).getOr(0):0)}return{x:a,y:u}}},Zr={},eo={exports:Zr};kn=undefined,_n=Zr,An=eo,Rn=undefined,function(e){"object"==typeof _n&&void 0!==An?An.exports=e():"function"==typeof kn&&kn.amd?kn([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=e()}(function(){return function i(a,u,s){function c(t,e){if(!u[t]){if(!a[t]){var n="function"==typeof Rn&&Rn;if(!e&&n)return n(t,!0);if(l)return l(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[t]={exports:{}};a[t][0].call(o.exports,function(e){return c(a[t][1][e]||e)},o,o.exports,i,a,u,s)}return u[t].exports}for(var l="function"==typeof Rn&&Rn,e=0;e<s.length;e++)c(s[e]);return c}({1:[function(e,t,n){var r,o,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function s(e){if(r===setTimeout)return setTimeout(e,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(oE){try{return r.call(null,e,0)}catch(oE){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(oE){r=a}try{o="function"==typeof clearTimeout?clearTimeout:u}catch(oE){o=u}}();var c,l=[],f=!1,d=-1;function m(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&g())}function g(){if(!f){var e=s(m);f=!0;for(var t=l.length;t;){for(c=l,l=[];++d<t;)c&&c[d].run();d=-1,t=l.length}c=null,f=!1,function(e){if(o===clearTimeout)return clearTimeout(e);if((o===u||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(e);try{o(e)}catch(oE){try{return o.call(null,e)}catch(oE){return o.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function h(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new p(e,t)),1!==l.length||f||s(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(e,f,t){(function(n){!function(e){var t=setTimeout;function r(){}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(e,this)}function o(n,r){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,i._immediateFn(function(){var e=1===n._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(n._value)}catch(oE){return void u(r.promise,oE)}a(r.promise,t)}else(1===n._state?a:u)(r.promise,n._value)})):n._deferreds.push(r)}function a(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof i)return e._state=3,e._value=t,void s(e);if("function"==typeof n)return void l((r=n,o=t,function(){r.apply(o,arguments)}),e)}e._state=1,e._value=t,s(e)}catch(oE){u(e,oE)}var r,o}function u(e,t){e._state=2,e._value=t,s(e)}function s(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)o(e,e._deferreds[t]);e._deferreds=null}function c(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function l(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,u(t,e))})}catch(r){if(n)return;n=!0,u(t,r)}}i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(r);return o(this,new c(e,t,n)),n},i.all=function(e){var s=Array.prototype.slice.call(e);return new i(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i._immediateFn="function"==typeof n?function(e){n(e)}:function(e){t(e,0)},i._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i._setImmediateFn=function(e){i._immediateFn=e},i._setUnhandledRejectionFn=function(e){i._unhandledRejectionFn=e},void 0!==f&&f.exports?f.exports=i:e.Promise||(e.Promise=i)}(this)}).call(this,e("timers").setImmediate)},{timers:3}],3:[function(s,e,c){(function(e,t){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},a=0;function u(e,t){this._id=e,this._clearFn=t}c.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(e){e.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},c.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},c._unrefActive=c.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},c.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&o.call(arguments,1);return i[t]=!0,r(function(){i[t]&&(n?e.apply(null,n):e.call(null),c.clearImmediate(t))}),t},c.clearImmediate="function"==typeof t?t:function(e){delete i[e]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(e,t,n){var r=e("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});var to=eo.exports.boltExport,no=function(e){var n=_.none(),t=[],r=function(e){o()?a(e):t.push(e)},o=function(){return n.isSome()},i=function(e){z(e,a)},a=function(t){n.each(function(e){V.setTimeout(function(){t(e)},0)})};return e(function(e){n=_.some(e),i(t),t=[]}),{get:r,map:function(n){return no(function(t){r(function(e){t(n(e))})})},isReady:o}},ro={nu:no,pure:function(t){return no(function(e){e(t)})}},oo=function(e){V.setTimeout(function(){throw e},0)},io=function(n){var e=function(e){n().then(e,oo)};return{map:function(e){return io(function(){return n().then(e)})},bind:function(t){return io(function(){return n().then(function(e){return t(e).toPromise()})})},anonBind:function(e){return io(function(){return n().then(function(){return e.toPromise()})})},toLazy:function(){return ro.nu(e)},toCached:function(){var e=null;return io(function(){return null===e&&(e=n()),e})},toPromise:n,get:e}},ao={nu:function(e){return io(function(){return new to(e)})},pure:function(e){return io(function(){return to.resolve(e)})}},uo=function(a,e){return e(function(r){var o=[],i=0;0===a.length?r([]):z(a,function(e,t){var n;e.get((n=t,function(e){o[n]=e,++i>=a.length&&r(o)}))})})},so=function(e){return uo(e,ao.nu)},co=function(n){return{is:function(e){return n===e},isValue:C,isError:b,getOr:q(n),getOrThunk:q(n),getOrDie:q(n),or:function(e){return co(n)},orThunk:function(e){return co(n)},fold:function(e,t){return t(n)},map:function(e){return co(e(n))},mapError:function(e){return co(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return _.some(n)}}},lo=function(n){return{is:b,isValue:b,isError:C,getOr:$,getOrThunk:function(e){return e()},getOrDie:function(){return e=String(n),function(){throw new Error(e)}();var e},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return lo(n)},mapError:function(e){return lo(e(n))},each:o,bind:function(e){return lo(n)},exists:b,forall:C,toOption:_.none}},fo={value:co,error:lo,fromOption:function(e,t){return e.fold(function(){return lo(t)},co)}};function mo(e,u){var t=e,n=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==u){if(o=e[n])return o;for(i=e.parentNode;i&&i!==u;i=i.parentNode)if(o=i[n])return o}}};this.current=function(){return t},this.next=function(e){return t=n(t,"firstChild","nextSibling",e)},this.prev=function(e){return t=n(t,"lastChild","previousSibling",e)},this.prev2=function(e){return t=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],u&&o===u)return;if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==u)return i}}(t,"lastChild","previousSibling",e)}}var go,po,ho,vo=function(t){var n;return function(e){return(n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,q(!0))).hasOwnProperty(lr(e))}},yo=vo(["h1","h2","h3","h4","h5","h6"]),bo=vo(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),Co=function(e){return dr(e)&&!bo(e)},xo=function(e){return dr(e)&&"br"===lr(e)},wo=vo(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),No=vo(["ul","ol","dl"]),Eo=vo(["li","dd","dt"]),So=vo(["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param","embed","source","wbr","track"]),To=vo(["thead","tbody","tfoot"]),ko=vo(["td","th"]),_o=vo(["pre","script","textarea","style"]),Ao=function(t){return function(e){return!!e&&e.nodeType===t}},Ro=Ao(1),Do=function(e){var r=e.toLowerCase().split(" ");return function(e){var t,n;if(e&&e.nodeType)for(n=e.nodeName.toLowerCase(),t=0;t<r.length;t++)if(n===r[t])return!0;return!1}},Oo=function(t){return function(e){if(Ro(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}},Bo=Ao(3),Po=Ao(8),Io=Ao(9),Lo=Ao(11),Fo=Do("br"),Mo=Oo("true"),zo=Oo("false"),Uo={isText:Bo,isElement:Ro,isComment:Po,isDocument:Io,isDocumentFragment:Lo,isBr:Fo,isContentEditableTrue:Mo,isContentEditableFalse:zo,isRestrictedNode:function(e){return!!e&&!Object.getPrototypeOf(e)},matchNodeNames:Do,hasPropValue:function(t,n){return function(e){return Ro(e)&&e[t]===n}},hasAttribute:function(t,e){return function(e){return Ro(e)&&e.hasAttribute(t)}},hasAttributeValue:function(t,n){return function(e){return Ro(e)&&e.getAttribute(t)===n}},matchStyleValues:function(r,e){var o=e.toLowerCase().split(" ");return function(e){var t;if(Ro(e))for(t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}},isBogus:function(e){return Ro(e)&&e.hasAttribute("data-mce-bogus")},isBogusAll:function(e){return Ro(e)&&"all"===e.getAttribute("data-mce-bogus")},isTable:function(e){return Ro(e)&&"TABLE"===e.tagName}},jo=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},Vo=function(e,t){var n,r=t.childNodes;if(!Uo.isElement(t)||!jo(t)){for(n=r.length-1;0<=n;n--)Vo(e,r[n]);if(!1===Uo.isDocument(t)){if(Uo.isText(t)&&0<t.nodeValue.length){var o=Xt.trim(t.nodeValue).length;if(e.isBlock(t.parentNode)||0<o)return;if(0===o&&(a=(i=t).previousSibling&&"SPAN"===i.previousSibling.nodeName,u=i.nextSibling&&"SPAN"===i.nextSibling.nodeName,a&&u))return}else if(Uo.isElement(t)&&(1===(r=t.childNodes).length&&jo(r[0])&&t.parentNode.insertBefore(r[0],t),r.length||So(ar.fromDom(t))))return;e.remove(t)}var i,a,u;return t}},Ho={trimNode:Vo},qo=Xt.makeMap,$o=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Wo=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Ko=/[<>&\"\']/g,Xo=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,Yo={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};po={'"':""","'":"'","<":"<",">":">","&":"&","`":"`"},ho={"<":"<",">":">","&":"&",""":'"',"'":"'"};var Go=function(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),po[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}};go=Go("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var Jo=function(e,t){return e.replace(t?$o:Wo,function(e){return po[e]||e})},Qo=function(e,t){return e.replace(t?$o:Wo,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":po[e]||"&#"+e.charCodeAt(0)+";"})},Zo=function(e,t,n){return n=n||go,e.replace(t?$o:Wo,function(e){return po[e]||n[e]||e})},ei={encodeRaw:Jo,encodeAllRaw:function(e){return(""+e).replace(Ko,function(e){return po[e]||e})},encodeNumeric:Qo,encodeNamed:Zo,getEncodeFunc:function(e,t){var n=Go(t)||go,r=qo(e.replace(/\+/g,","));return r.named&&r.numeric?function(e,t){return e.replace(t?$o:Wo,function(e){return po[e]!==undefined?po[e]:n[e]!==undefined?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return Zo(e,t,n)}:Zo:r.numeric?Qo:Jo},decode:function(e){return e.replace(Xo,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):Yo[t]||String.fromCharCode(t):ho[e]||go[e]||(n=e,(r=ar.fromTag("div").dom()).innerHTML=n,r.textContent||r.innerText||n);var n,r})}},ti={},ni={},ri=Xt.makeMap,oi=Xt.each,ii=Xt.extend,ai=Xt.explode,ui=Xt.inArray,si=function(e,t){return(e=Xt.trim(e))?e.split(t||" "):[]},ci=function(e){var u,t,n,r,o,i,s={},a=function(e,t,n){var r,o,i,a=function(e,t){var n,r,o={};for(n=0,r=e.length;n<r;n++)o[e[n]]=t||{};return o};for(t=t||"","string"==typeof(n=n||[])&&(n=si(n)),r=(e=si(e)).length;r--;)i={attributes:a(o=si([u,t].join(" "))),attributesOrder:o,children:a(n,ni)},s[e[r]]=i},c=function(e,t){var n,r,o,i;for(n=(e=si(e)).length,t=si(t);n--;)for(r=s[e[n]],o=0,i=t.length;o<i;o++)r.attributes[t[o]]={},r.attributesOrder.push(t[o])};return ti[e]?ti[e]:(u="id accesskey class dir lang style tabindex title role",t="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",n="a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment","html4"!==e&&(u+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",t+=" article aside details dialog figure main header footer hgroup section nav",n+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==e&&(u+=" xml:lang",n=[n,i="acronym applet basefont big font strike tt"].join(" "),oi(si(i),function(e){a(e,"",n)}),t=[t,o="center dir isindex noframes"].join(" "),r=[t,n].join(" "),oi(si(o),function(e){a(e,"",r)})),r=r||[t,n].join(" "),a("html","manifest","head body"),a("head","","base command link meta noscript script style title"),a("title hr noscript br"),a("base","href target"),a("link","href rel media hreflang type sizes hreflang"),a("meta","name http-equiv content charset"),a("style","media type scoped"),a("script","src async defer type charset"),a("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",r),a("address dt dd div caption","",r),a("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",n),a("blockquote","cite",r),a("ol","reversed start type","li"),a("ul","","li"),a("li","value",r),a("dl","","dt dd"),a("a","href target rel media hreflang type",n),a("q","cite",n),a("ins del","cite datetime",r),a("img","src sizes srcset alt usemap ismap width height"),a("iframe","src name width height",r),a("embed","src type width height"),a("object","data type typemustmatch name usemap form width height",[r,"param"].join(" ")),a("param","name value"),a("map","name",[r,"area"].join(" ")),a("area","alt coords shape href target rel media hreflang type"),a("table","border","caption colgroup thead tfoot tbody tr"+("html4"===e?" col":"")),a("colgroup","span","col"),a("col","span"),a("tbody thead tfoot","","tr"),a("tr","","td th"),a("td","colspan rowspan headers",r),a("th","colspan rowspan headers scope abbr",r),a("form","accept-charset action autocomplete enctype method name novalidate target",r),a("fieldset","disabled form name",[r,"legend"].join(" ")),a("label","form for",n),a("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),a("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===e?r:n),a("select","disabled form multiple name required size","option optgroup"),a("optgroup","disabled label","option"),a("option","disabled label selected value"),a("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),a("menu","type label",[r,"li"].join(" ")),a("noscript","",r),"html4"!==e&&(a("wbr"),a("ruby","",[n,"rt rp"].join(" ")),a("figcaption","",r),a("mark rt rp summary bdi","",n),a("canvas","width height",r),a("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[r,"track source"].join(" ")),a("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[r,"track source"].join(" ")),a("picture","","img source"),a("source","src srcset type media sizes"),a("track","kind src srclang label default"),a("datalist","",[n,"option"].join(" ")),a("article section nav aside main header footer","",r),a("hgroup","","h1 h2 h3 h4 h5 h6"),a("figure","",[r,"figcaption"].join(" ")),a("time","datetime",n),a("dialog","open",r),a("command","type label icon disabled checked radiogroup command"),a("output","for form name",n),a("progress","value max",n),a("meter","value min max low high optimum",n),a("details","open",[r,"summary"].join(" ")),a("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==e&&(c("script","language xml:space"),c("style","xml:space"),c("object","declare classid code codebase codetype archive standby align border hspace vspace"),c("embed","align name hspace vspace"),c("param","valuetype type"),c("a","charset name rev shape coords"),c("br","clear"),c("applet","codebase archive code object alt name width height align hspace vspace"),c("img","name longdesc align border hspace vspace"),c("iframe","longdesc frameborder marginwidth marginheight scrolling align"),c("font basefont","size color face"),c("input","usemap align"),c("select","onchange"),c("textarea"),c("h1 h2 h3 h4 h5 h6 div p legend caption","align"),c("ul","type compact"),c("li","type"),c("ol dl menu dir","compact"),c("pre","width xml:space"),c("hr","align noshade size width"),c("isindex","prompt"),c("table","summary width frame rules cellspacing cellpadding align bgcolor"),c("col","width align char charoff valign"),c("colgroup","width align char charoff valign"),c("thead","align char charoff valign"),c("tr","align char charoff valign bgcolor"),c("th","axis align char charoff valign nowrap bgcolor width height"),c("form","accept"),c("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),c("tfoot","align char charoff valign"),c("tbody","align char charoff valign"),c("area","nohref"),c("body","background bgcolor text link vlink alink")),"html4"!==e&&(c("input button select textarea","autofocus"),c("input textarea","placeholder"),c("a","download"),c("link script img","crossorigin"),c("iframe","sandbox seamless allowfullscreen")),oi(si("a form meter progress dfn"),function(e){s[e]&&delete s[e].children[e]}),delete s.caption.children.table,delete s.script,ti[e]=s)},li=function(e,n){var r;return e&&(r={},"string"==typeof e&&(e={"*":e}),oi(e,function(e,t){r[t]=r[t.toUpperCase()]="map"===n?ri(e,/[, ]/):ai(e,/[, ]/)})),r};function fi(i){var e,t,n,r,o,a,u,s,c,l,f,d,m,N={},g={},E=[],p={},h={},v=function(e,t,n){var r=i[e];return r?r=ri(r,/[, ]/,ri(r.toUpperCase(),/[, ]/)):(r=ti[e])||(r=ri(t," ",ri(t.toUpperCase()," ")),r=ii(r,n),ti[e]=r),r};n=ci((i=i||{}).schema),!1===i.verify_html&&(i.valid_elements="*[*]"),e=li(i.valid_styles),t=li(i.invalid_styles,"map"),s=li(i.valid_classes,"map"),r=v("whitespace_elements","pre script noscript style textarea video audio iframe object code"),o=v("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),a=v("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),u=v("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),l=v("non_empty_elements","td th iframe video audio object script pre code",a),f=v("move_caret_before_on_enter_elements","table",l),d=v("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),c=v("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",d),m=v("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),oi((i.special||"script noscript noframes noembed title style textarea xmp").split(" "),function(e){h[e]=new RegExp("</"+e+"[^>]*>","gi")});var S=function(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")},y=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,y,b,C=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,x=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,w=/[*?+]/;if(e)for(e=si(e,","),N["@"]&&(h=N["@"].attributes,v=N["@"].attributesOrder),t=0,n=e.length;t<n;t++)if(i=C.exec(e[t])){if(g=i[1],c=i[2],p=i[3],s=i[5],a={attributes:d={},attributesOrder:m=[]},"#"===g&&(a.paddEmpty=!0),"-"===g&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),h){for(y in h)d[y]=h[y];m.push.apply(m,v)}if(s)for(r=0,o=(s=si(s,"|")).length;r<o;r++)if(i=x.exec(s[r])){if(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),g=i[3],b=i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"===f){delete d[l],m.splice(ui(m,l),1);continue}g&&("="===g&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:b}),u.defaultValue=b),":"===g&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:b}),u.forcedValue=b),"<"===g&&(u.validValues=ri(b,"?"))),w.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=S(l),a.attributePatterns.push(u)):(d[l]||m.push(l),d[l]=u)}h||"@"!==c||(h=d,v=m),p&&(a.outputName=c,N[p]=a),w.test(c)?(a.pattern=S(c),E.push(a)):N[c]=a}},b=function(e){N={},E=[],y(e),oi(n,function(e,t){g[t]=e.children})},C=function(e){var a=/^(~)?(.+)$/;e&&(ti.text_block_elements=ti.block_elements=null,oi(si(e,","),function(e){var t=a.exec(e),n="~"===t[1],r=n?"span":"div",o=t[2];if(g[o]=g[r],p[o]=r,n||(c[o.toUpperCase()]={},c[o]={}),!N[o]){var i=N[r];delete(i=ii({},i)).removeEmptyAttrs,delete i.removeEmpty,N[o]=i}oi(g,function(e,t){e[r]&&(g[t]=e=ii({},g[t]),e[o]=e[r])})}))},x=function(e){var o=/^([+\-]?)(\w+)\[([^\]]+)\]$/;ti[i.schema]=null,e&&oi(si(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?g[r[2]]:g[r[2]]={"#comment":{}},t=g[r[2]],oi(si(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})},w=function(e){var t,n=N[e];if(n)return n;for(t=E.length;t--;)if((n=E[t]).pattern.test(e))return n};return i.valid_elements?b(i.valid_elements):(oi(n,function(e,t){N[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},g[t]=e.children}),"html5"!==i.schema&&oi(si("strong/b em/i"),function(e){e=si(e,"/"),N[e[1]].outputName=e[0]}),oi(si("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){N[e]&&(N[e].removeEmpty=!0)}),oi(si("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){N[e].paddEmpty=!0}),oi(si("span"),function(e){N[e].removeEmptyAttrs=!0})),C(i.custom_elements),x(i.valid_children),y(i.extended_valid_elements),x("+ol[ul|ol],+ul[ul|ol]"),oi({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){N[t]&&(N[t].parentsRequired=si(e))}),i.invalid_elements&&oi(ai(i.invalid_elements),function(e){N[e]&&delete N[e]}),w("span")||y("span[!data-mce-type|*]"),{children:g,elements:N,getValidStyles:function(){return e},getValidClasses:function(){return s},getBlockElements:function(){return c},getInvalidStyles:function(){return t},getShortEndedElements:function(){return a},getTextBlockElements:function(){return d},getTextInlineElements:function(){return m},getBoolAttrs:function(){return u},getElementRule:w,getSelfClosingElements:function(){return o},getNonEmptyElements:function(){return l},getMoveCaretBeforeOnEnterElements:function(){return f},getWhiteSpaceElements:function(){return r},getSpecialElements:function(){return h},isValidChild:function(e,t){var n=g[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=w(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:function(){return p},addValidElements:y,setValidElements:b,addCustomElements:C,addValidChildren:x}}var di=function(e,t,n,r){var o=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+o(t)+o(n)+o(r)};function mi(b,e){var C,t,c,l,x=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,w=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,N=/\s*([^:]+):\s*([^;]+);?/g,E=/\s+$/,S={},T="\ufeff";for(b=b||{},e&&(c=e.getValidStyles(),l=e.getInvalidStyles()),t=("\\\" \\' \\; \\: ; : "+T).split(" "),C=0;C<t.length;C++)S[t[C]]=T+C,S[T+C]=t[C];return{toHex:function(e){return e.replace(x,di)},parse:function(e){var t,n,r,o,i,a,u,s,c={},l=b.url_converter,f=b.url_converter_scope||this,d=function(e,t,n){var r,o,i,a;if((r=c[e+"-top"+t])&&(o=c[e+"-right"+t])&&(i=c[e+"-bottom"+t])&&(a=c[e+"-left"+t])){var u=[r,o,i,a];for(C=u.length-1;C--&&u[C]===u[C+1];);-1<C&&n||(c[e+t]=-1===C?u[0]:u.join(" "),delete c[e+"-top"+t],delete c[e+"-right"+t],delete c[e+"-bottom"+t],delete c[e+"-left"+t])}},m=function(e){var t,n=c[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return!1;return c[e]=n[0],!0}},g=function(e){return o=!0,S[e]},p=function(e,t){return o&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return S[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e},h=function(e){return String.fromCharCode(parseInt(e.slice(1),16))},v=function(e){return e.replace(/\\[0-9a-f]+/gi,h)},y=function(e,t,n,r,o,i){if(o=o||i)return"'"+(o=p(o)).replace(/\'/g,"\\'")+"'";if(t=p(t||n||r),!b.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!b.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return l&&(t=l.call(f,t,"style")),"url('"+t.replace(/\'/g,"\\'")+"')"};if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,g).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,g)});t=N.exec(e);)if(N.lastIndex=t.index+t[0].length,n=t[1].replace(E,"").toLowerCase(),r=t[2].replace(E,""),n&&r){if(n=v(n),r=v(r),-1!==n.indexOf(T)||-1!==n.indexOf('"'))continue;if(!b.allow_script_urls&&("behavior"===n||/expression\s*\(|\/\*|\*\//.test(r)))continue;"font-weight"===n&&"700"===r?r="bold":"color"!==n&&"background-color"!==n||(r=r.toLowerCase()),r=(r=r.replace(x,di)).replace(w,y),c[n]=o?p(r,!0):r}d("border","",!0),d("border","-width"),d("border","-color"),d("border","-style"),d("padding",""),d("margin",""),i="border",u="border-style",s="border-color",m(a="border-width")&&m(u)&&m(s)&&(c[i]=c[a]+" "+c[u]+" "+c[s],delete c[a],delete c[u],delete c[s]),"medium none"===c.border&&delete c.border,"none"===c["border-image"]&&delete c["border-image"]}return c},serialize:function(i,e){var t,n,r,o,a,u="",s=function(e){var t,n,r,o;if(t=c[e])for(n=0,r=t.length;n<r;n++)e=t[n],(o=i[e])&&(u+=(0<u.length?" ":"")+e+": "+o+";")};if(e&&c)s("*"),s(e);else for(t in i)!(n=i[t])||l&&(r=t,o=e,a=void 0,(a=l["*"])&&a[r]||(a=l[o])&&a[r])||(u+=(0<u.length?" ":"")+t+": "+n+";");return u}}}var gi,pi=Xt.each,hi=Xt.grep,vi=fe.ie,yi=/^([a-z0-9],?)+$/i,bi=/^[ \t\r\n]*$/,Ci=function(n,r,o){var e={},i=r.keep_values,t={set:function(e,t,n){r.url_converter&&(t=r.url_converter.call(r.url_converter_scope||o(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}};return e={style:{set:function(e,t){null===t||"object"!=typeof t?(i&&e.attr("data-mce-style",t),e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return t=n.serialize(n.parse(t),e[0].nodeName)}}},i&&(e.href=e.src=t),e},xi=function(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName);r||(r=null),t.attr("data-mce-style",r)},wi=function(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o};function Ni(a,u){var s,c=this;void 0===u&&(u={});var r={},i=V.window,o={},t=0,e=function(m,g){void 0===g&&(g={});var p,h=0,v={};p=g.maxLoadTime||5e3;var y=function(e){m.getElementsByTagName("head")[0].appendChild(e)},n=function(e,t,n){var o,r,i,a,u=function(){for(var e=a.passed,t=e.length;t--;)e[t]();a.status=2,a.passed=[],a.failed=[]},s=function(){for(var e=a.failed,t=e.length;t--;)e[t]();a.status=3,a.passed=[],a.failed=[]},c=function(e,t){e()||((new Date).getTime()-i<p?he.setTimeout(t):s())},l=function(){c(function(){for(var e,t,n=m.styleSheets,r=n.length;r--;)if((t=(e=n[r]).ownerNode?e.ownerNode:e.owningElement)&&t.id===o.id)return u(),!0},l)},f=function(){c(function(){try{var e=r.sheet.cssRules;return u(),!!e}catch(t){}},f)};if(e=Xt._addCacheSuffix(e),v[e]?a=v[e]:(a={passed:[],failed:[]},v[e]=a),t&&a.passed.push(t),n&&a.failed.push(n),1!==a.status)if(2!==a.status)if(3!==a.status){if(a.status=1,(o=m.createElement("link")).rel="stylesheet",o.type="text/css",o.id="u"+h++,o.async=!1,o.defer=!1,i=(new Date).getTime(),g.contentCssCors&&(o.crossOrigin="anonymous"),"onload"in o&&!((d=V.navigator.userAgent.match(/WebKit\/(\d*)/))&&parseInt(d[1],10)<536))o.onload=l,o.onerror=s;else{if(0<V.navigator.userAgent.indexOf("Firefox"))return(r=m.createElement("style")).textContent='@import "'+e+'"',f(),void y(r);l()}var d;y(o),o.href=e}else s();else u()},t=function(t){return ao.nu(function(e){n(t,H(e,q(fo.value(t))),H(e,q(fo.error(t))))})},o=function(e){return e.fold($,$)};return{load:n,loadAll:function(e,n,r){so(W(e,t)).get(function(e){var t=K(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(o)):n(t.pass.map(o))})}}}(a,{contentCssCors:u.contentCssCors}),l=[],f=u.schema?u.schema:fi({}),d=mi({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),m=u.ownEvents?new Se(u.proxy):Se.Event,n=f.getBlockElements(),g=gn.overrideDefaults(function(){return{context:a,element:j.getRoot()}}),p=function(e){if(e&&a&&"string"==typeof e){var t=a.getElementById(e);return t&&t.id!==e?a.getElementsByName(e)[1]:t}return e},h=function(e){return"string"==typeof e&&(e=p(e)),g(e)},v=function(e,t,n){var r,o,i=h(e);return i.length&&(o=(r=s[t])&&r.get?r.get(i,t):i.attr(t)),void 0===o&&(o=n||""),o},y=function(e){var t=p(e);return t?t.attributes:[]},b=function(e,t,n){var r,o;""===n&&(n=null);var i=h(e);r=i.attr(t),i.length&&((o=s[t])&&o.set?o.set(i,n,t):i.attr(t,n),r!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:i,attrName:t,attrValue:n}))},C=function(){return u.root_element||a.body},x=function(e,t){return Qr.getPos(a.body,p(e),t)},w=function(e,t,n){var r=h(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=fe.ie&&fe.ie<12?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:undefined)},N=function(e){var t,n;return e=p(e),t=w(e,"width"),n=w(e,"height"),-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px")&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}},E=function(e,t){var n;if(!e)return!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(yi.test(t)){var r=t.toLowerCase().split(/,/),o=e.nodeName.toLowerCase();for(n=r.length-1;0<=n;n--)if(r[n]===o)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<St(t,i[0].ownerDocument||i[0],null,i).length},S=function(e,t,n,r){var o,i=[],a=p(e);for(r=r===undefined,n=n||("BODY"!==C().nodeName?C().parentNode:null),Xt.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return E(e,o)});a&&a!==n&&a.nodeType&&9!==a.nodeType;){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null},T=function(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){return E(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null},k=function(e,n,r){var o,t="string"==typeof e?p(e):e;if(!t)return!1;if(Xt.isArray(t)&&(t.length||0===t.length))return o=[],pi(t,function(e,t){e&&("string"==typeof e&&(e=p(e)),o.push(n.call(r,e,t)))}),o;var i=r||c;return n.call(i,t)},_=function(e,t){h(e).each(function(e,n){pi(t,function(e,t){b(n,t,e)})})},A=function(e,r){var t=h(e);vi?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+r,t.removeChild(t.firstChild)}catch(n){gn("<div></div>").html("<br>"+r).contents().slice(1).appendTo(t)}return r}}):t.html(r)},R=function(e,n,r,o,i){return k(e,function(e){var t="string"==typeof n?a.createElement(n):n;return _(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&A(t,o)),i?t:e.appendChild(t)})},D=function(e,t,n){return R(a.createElement(e),e,t,n,!0)},O=ei.decode,B=ei.encodeAllRaw,P=function(e,t){var n=h(e);return t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():n.remove(),1<n.length?n.toArray():n[0]},I=function(e,t,n){h(e).toggleClass(t,n).each(function(){""===this.className&&gn(this).attr("class",null)})},L=function(t,e,n){return k(e,function(e){return Xt.is(e,"array")&&(t=t.cloneNode(!0)),n&&pi(hi(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})},F=function(){return a.createRange()},M=function(e,t,n,r){if(Xt.isArray(e)){for(var o=e.length;o--;)e[o]=M(e[o],t,n,r);return e}return!u.collect||e!==a&&e!==i||l.push([e,t,n,r]),m.bind(e,t,n,r||j)},z=function(e,t,n){var r;if(Xt.isArray(e)){for(r=e.length;r--;)e[r]=z(e[r],t,n);return e}if(l&&(e===a||e===i))for(r=l.length;r--;){var o=l[r];e!==o[0]||t&&t!==o[1]||n&&n!==o[2]||m.unbind(o[0],o[1],o[2])}return m.unbind(e,t,n)},U=function(e){if(e&&Uo.isElement(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null},j={doc:a,settings:u,win:i,files:o,stdMode:!0,boxModel:!0,styleSheetLoader:e,boundEvents:l,styles:d,schema:f,events:m,isBlock:function(e){if("string"==typeof e)return!!n[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!n[e.nodeName])}return!1},$:g,$$:h,root:null,clone:function(t,e){if(!vi||1!==t.nodeType||e)return t.cloneNode(e);if(!e){var n=a.createElement(t.nodeName);return pi(y(t),function(e){b(n,e.nodeName,v(t,e.nodeName))}),n}return null},getRoot:C,getViewPort:function(e){var t=e||i,n=t.document.documentElement;return{x:t.pageXOffset||n.scrollLeft,y:t.pageYOffset||n.scrollTop,w:t.innerWidth||n.clientWidth,h:t.innerHeight||n.clientHeight}},getRect:function(e){var t,n;return e=p(e),t=x(e),n=N(e),{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:N,getParent:function(e,t,n){var r=S(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:S,get:p,getNext:function(e,t){return T(e,t,"nextSibling")},getPrev:function(e,t){return T(e,t,"previousSibling")},select:function(e,t){return St(e,p(t)||u.root_element||a,[])},is:E,add:R,create:D,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)t.hasOwnProperty(r)&&null!==t[r]&&"undefined"!=typeof t[r]&&(o+=" "+r+'="'+B(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r},remove:P,setStyle:function(e,t,n){var r=h(e).css(t,n);u.update_styles&&xi(d,r)},getStyle:w,setStyles:function(e,t){var n=h(e).css(t);u.update_styles&&xi(d,n)},removeAllAttribs:function(e){return k(e,function(e){var t,n=e.attributes;for(t=n.length-1;0<=t;t--)e.removeAttributeNode(n.item(t))})},setAttrib:b,setAttribs:_,getAttrib:v,getPos:x,parseStyle:function(e){return d.parse(e)},serializeStyle:function(e,t){return d.serialize(e,t)},addStyle:function(e){var t,n;if(j!==Ni.DOM&&a===V.document){if(r[e])return;r[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){var n;j===Ni.DOM||a!==V.document?(e||(e=""),n=a.getElementsByTagName("head")[0],pi(e.split(","),function(e){var t;e=Xt._addCacheSuffix(e),o[e]||(o[e]=!0,t=D("link",{rel:"stylesheet",href:e}),n.appendChild(t))})):Ni.DOM.loadCSS(e)},addClass:function(e,t){h(e).addClass(t)},removeClass:function(e,t){I(e,t,!1)},hasClass:function(e,t){return h(e).hasClass(t)},toggleClass:I,show:function(e){h(e).show()},hide:function(e){h(e).hide()},isHidden:function(e){return"none"===h(e).css("display")},uniqueId:function(e){return(e||"mce_")+t++},setHTML:A,getOuterHTML:function(e){var t="string"==typeof e?p(e):e;return Uo.isElement(t)?t.outerHTML:gn("<div></div>").append(gn(t).clone()).html()},setOuterHTML:function(e,t){h(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}P(gn(this).html(t),!0)})},decode:O,encode:B,insertAfter:function(e,t){var r=p(t);return k(e,function(e){var t,n;return t=r.parentNode,(n=r.nextSibling)?t.insertBefore(e,n):t.appendChild(e),e})},replace:L,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=D(e),pi(y(t),function(e){b(n,e.nodeName,v(t,e.nodeName))}),L(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return d.toHex(Xt.trim(e))},run:k,getAttribs:y,isEmpty:function(e,t){var n,r,o,i,a,u,s=0;if(e=e.firstChild){a=new mo(e,e.parentNode),t=t||(f?f.getNonEmptyElements():null),i=f?f.getWhiteSpaceElements():{};do{if(o=e.nodeType,Uo.isElement(e)){var c=e.getAttribute("data-mce-bogus");if(c){e=a.next("all"===c);continue}if(u=e.nodeName.toLowerCase(),t&&t[u]){if("br"===u){s++,e=a.next();continue}return!1}for(n=(r=y(e)).length;n--;)if("name"===(u=r[n].nodeName)||"data-mce-bookmark"===u)return!1}if(8===o)return!1;if(3===o&&!bi.test(e.nodeValue))return!1;if(3===o&&e.parentNode&&i[e.parentNode.nodeName]&&bi.test(e.nodeValue))return!1;e=a.next()}while(e)}return s<=1},createRng:F,nodeIndex:wi,split:function(e,t,n){var r,o,i,a=F();if(e&&t)return a.setStart(e.parentNode,wi(e)),a.setEnd(t.parentNode,wi(t)),r=a.extractContents(),(a=F()).setStart(t.parentNode,wi(t)+1),a.setEnd(e.parentNode,wi(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(Ho.trimNode(j,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(Ho.trimNode(j,o),e),P(e),n||t},bind:M,unbind:z,fire:function(e,t,n){return m.fire(e,t,n)},getContentEditable:U,getContentEditableParent:function(e){for(var t=C(),n=null;e&&e!==t&&null===(n=U(e));e=e.parentNode);return n},destroy:function(){if(l)for(var e=l.length;e--;){var t=l[e];m.unbind(t[0],t[1],t[2])}St.setDocument&&St.setDocument()},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset}};return s=Ci(d,u,function(){return j}),j}(gi=Ni||(Ni={})).DOM=gi(V.document),gi.nodeIndex=wi;var Ei=Ni,Si=Ei.DOM,Ti=Xt.each,ki=Xt.grep,_i=function(e){return"function"==typeof e},Ai=function(){var l={},o=[],i={},a=[],f=0;this.isDone=function(e){return 2===l[e]},this.markDone=function(e){l[e]=2},this.add=this.load=function(e,t,n,r){l[e]===undefined&&(o.push(e),l[e]=0),t&&(i[e]||(i[e]=[]),i[e].push({success:t,failure:r,scope:n||this}))},this.remove=function(e){delete l[e],delete i[e]},this.loadQueue=function(e,t,n){this.loadScripts(o,e,t,n)},this.loadScripts=function(n,e,t,r){var u,s=[],c=function(t,e){Ti(i[e],function(e){_i(e[t])&&e[t].call(e.scope)}),i[e]=undefined};a.push({success:e,failure:r,scope:t||this}),(u=function(){var e=ki(n);if(n.length=0,Ti(e,function(e){var t,n,r,o,i,a;2!==l[e]?3!==l[e]?1!==l[e]&&(l[e]=1,f++,t=e,n=function(){l[e]=2,f--,c("success",e),u()},r=function(){l[e]=3,f--,s.push(e),c("failure",e),u()},i=(a=Si).uniqueId(),(o=V.document.createElement("script")).id=i,o.type="text/javascript",o.src=Xt._addCacheSuffix(t),o.onload=function(){a.remove(i),o&&(o.onreadystatechange=o.onload=o=null),n()},o.onerror=function(){_i(r)?r():"undefined"!=typeof console&&console.log&&console.log("Failed to load script: "+t)},(V.document.getElementsByTagName("head")[0]||V.document.body).appendChild(o)):c("failure",e):c("success",e)}),!f){var t=a.slice(0);a.length=0,Ti(t,function(e){0===s.length?_i(e.success)&&e.success.call(e.scope):_i(e.failure)&&e.failure.call(e.scope,s)})}})()}};Ai.ScriptLoader=new Ai;var Ri,Di=Xt.each;function Oi(){var r=this,o=[],a={},u={},i=[],s=function(e){var t;return u[e]&&(t=u[e].dependencies),t||[]},c=function(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}},l=function(e,n,t,r){var o=s(e);Di(o,function(e){var t=c(n,e);f(t.resource,t,undefined,undefined)}),t&&(r?t.call(r):t.call(Ai))},f=function(e,t,n,r,o){if(!a[e]){var i="string"==typeof t?t:t.prefix+t.resource+t.suffix;0!==i.indexOf("/")&&-1===i.indexOf("://")&&(i=Oi.baseURL+"/"+i),a[e]=i.substring(0,i.lastIndexOf("/")),u[e]?l(e,t,n,r):Ai.ScriptLoader.add(i,function(){return l(e,t,n,r)},r,o)}};return{items:o,urls:a,lookup:u,_listeners:i,get:function(e){return u[e]?u[e].instance:undefined},dependencies:s,requireLangPack:function(e,t){var n=Oi.language;if(n&&!1!==Oi.languageLoad){if(t)if(-1!==(t=","+t+",").indexOf(","+n.substr(0,2)+","))n=n.substr(0,2);else if(-1===t.indexOf(","+n+","))return;Ai.ScriptLoader.add(a[e]+"/langs/"+n+".js")}},add:function(t,e,n){o.push(e),u[t]={instance:e,dependencies:n};var r=K(i,function(e){return e.name===t});return i=r.fail,Di(r.pass,function(e){e.callback()}),e},remove:function(e){delete a[e],delete u[e]},createUrl:c,addComponents:function(e,t){var n=r.urls[e];Di(t,function(e){Ai.ScriptLoader.add(n+"/"+e)})},load:f,waitFor:function(e,t){u.hasOwnProperty(e)?t():i.push({name:e,callback:t})}}}(Ri=Oi||(Oi={})).PluginManager=Ri(),Ri.ThemeManager=Ri();var Bi=function(t,n){jr(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})},Pi=function(e,t){Hr(e).fold(function(){jr(e).each(function(e){Li(e,t)})},function(e){Bi(e,t)})},Ii=function(t,n){Xr(t).fold(function(){Li(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})},Li=function(e,t){e.dom().appendChild(t.dom())},Fi=function(t,e){z(e,function(e){Li(t,e)})},Mi=function(e){e.dom().textContent="",z(Wr(e),function(e){zi(e)})},zi=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},Ui=function(e){var t,n=Wr(e);0<n.length&&(t=e,z(n,function(e){Bi(t,e)})),zi(e)},ji=function(n,r){var o=null;return{cancel:function(){null!==o&&(V.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null===o&&(o=V.setTimeout(function(){n.apply(null,e),o=null},r))}}},Vi=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return Vi(n())}}},Hi=function(e,t){var n=Nr(e,t);return n===undefined||""===n?[]:n.split(" ")},qi=function(e){return e.dom().classList!==undefined},$i=function(e,t){return o=t,i=Hi(n=e,r="class").concat([o]),xr(n,r,i.join(" ")),!0;var n,r,o,i},Wi=function(e,t){return o=t,0<(i=U(Hi(n=e,r="class"),function(e){return e!==o})).length?xr(n,r,i.join(" ")):Er(n,r),!1;var n,r,o,i},Ki=function(e,t){qi(e)?e.dom().classList.add(t):$i(e,t)},Xi=function(e){0===(qi(e)?e.dom().classList:Hi(e,"class")).length&&Er(e,"class")},Yi=function(e,t){return qi(e)&&e.dom().classList.contains(t)},Gi=function(e,t){var n=[];return z(Wr(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(Gi(e,t))}),n},Ji=function(e,t){return n=t,o=(r=e)===undefined?V.document:r.dom(),Lr(o)?[]:W(o.querySelectorAll(n),ar.fromDom);var n,r,o};function Qi(e,t,n,r,o){return e(n,r)?_.some(n):D(o)&&o(n)?_.none():t(n,r,o)}var Zi,ea=function(e,t,n){for(var r=e.dom(),o=D(n)?n:q(!1);r.parentNode;){r=r.parentNode;var i=ar.fromDom(r);if(t(i))return _.some(i);if(o(i))break}return _.none()},ta=function(e,t,n){return Qi(function(e,t){return t(e)},ea,e,t,n)},na=function(e,t,n){return ea(e,function(e){return Ir(e,t)},n)},ra=function(e,t){return n=t,o=(r=e)===undefined?V.document:r.dom(),Lr(o)?_.none():_.from(o.querySelector(n)).map(ar.fromDom);var n,r,o},oa=function(e,t,n){return Qi(Ir,na,e,t,n)},ia=q("mce-annotation"),aa=q("data-mce-annotation"),ua=q("data-mce-annotation-uid"),sa=function(r,e){var t=r.selection.getRng(),n=ar.fromDom(t.startContainer),o=ar.fromDom(r.getBody()),i=e.fold(function(){return"."+ia()},function(e){return"["+aa()+'="'+e+'"]'}),a=Kr(n,t.startOffset).getOr(n),u=oa(a,i,function(e){return Fr(e,o)}),s=function(e,t){return n=t,(r=e.dom())&&r.hasAttribute&&r.hasAttribute(n)?_.some(Nr(e,t)):_.none();var n,r};return u.bind(function(e){return s(e,""+ua()).bind(function(n){return s(e,""+aa()).map(function(e){var t=ca(r,n);return{uid:n,name:e,elements:t}})})})},ca=function(e,t){var n=ar.fromDom(e.getBody());return Ji(n,"["+ua()+'="'+t+'"]')},la=function(i,e){var n,r,o,a=Vi({}),c=function(e,t){u(e,function(e){return t(e),e})},u=function(e,t){var n=a.get(),r=t(n.hasOwnProperty(e)?n[e]:{listeners:[],previous:Vi(_.none())});n[e]=r,a.set(n)},t=(n=function(){var e,t,n,r=a.get(),o=(e=gr(r),(n=B.call(e,0)).sort(t),n);z(o,function(e){u(e,function(u){var s=u.previous.get();return sa(i,_.some(e)).fold(function(){var t;s.isSome()&&(c(t=e,function(e){z(e.listeners,function(e){return e(!1,t)})}),u.previous.set(_.none()))},function(e){var t,n,r,o=e.uid,i=e.name,a=e.elements;s.is(o)||(n=o,r=a,c(t=i,function(e){z(e.listeners,function(e){return e(!0,t,{uid:n,nodes:W(r,function(e){return e.dom()})})})}),u.previous.set(_.some(o)))}),{previous:u.previous,listeners:u.listeners}})})},r=30,o=null,{cancel:function(){null!==o&&(V.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==o&&V.clearTimeout(o),o=V.setTimeout(function(){n.apply(null,e),o=null},r)}});return i.on("remove",function(){t.cancel()}),i.on("nodeChange",function(){t.throttle()}),{addListener:function(e,t){u(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}},fa=function(e,n){e.on("init",function(){e.serializer.addNodeFilter("span",function(e){z(e,function(t){var e;(e=t,_.from(e.attributes.map[aa()]).bind(n.lookup)).each(function(e){!1===e.persistent&&t.unwrap()})})})})},da=function(){return(da=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},ma=0,ga=function(e,t){return ar.fromDom(e.dom().cloneNode(t))},pa=function(e){return ga(e,!1)},ha=function(e){return ga(e,!0)},va=function(e,t){var n,r,o=zr(e).dom(),i=ar.fromDom(o.createDocumentFragment()),a=(n=t,(r=(o||V.document).createElement("div")).innerHTML=n,Wr(ar.fromDom(r)));Fi(i,a),Mi(e),Li(e,i)},ya="\ufeff",ba=function(e){return e===ya},Ca=ya,xa=function(e){return e.replace(new RegExp(ya,"g"),"")},wa=Uo.isElement,Na=Uo.isText,Ea=function(e){return Na(e)&&(e=e.parentNode),wa(e)&&e.hasAttribute("data-mce-caret")},Sa=function(e){return Na(e)&&ba(e.data)},Ta=function(e){return Ea(e)||Sa(e)},ka=function(e){return e.firstChild!==e.lastChild||!Uo.isBr(e.firstChild)},_a=function(e){var t=e.container();return!(!e||!Uo.isText(t))&&(t.data.charAt(e.offset())===Ca||e.isAtStart()&&Sa(t.previousSibling))},Aa=function(e){var t=e.container();return!(!e||!Uo.isText(t))&&(t.data.charAt(e.offset()-1)===Ca||e.isAtEnd()&&Sa(t.nextSibling))},Ra=function(e,t,n){var r,o,i;return(r=t.ownerDocument.createElement(e)).setAttribute("data-mce-caret",n?"before":"after"),r.setAttribute("data-mce-bogus","all"),r.appendChild(((i=V.document.createElement("br")).setAttribute("data-mce-bogus","1"),i)),o=t.parentNode,n?o.insertBefore(r,t):t.nextSibling?o.insertBefore(r,t.nextSibling):o.appendChild(r),r},Da=function(e){return Na(e)&&e.data[0]===Ca},Oa=function(e){return Na(e)&&e.data[e.data.length-1]===Ca},Ba=function(e){return e&&e.hasAttribute("data-mce-caret")?(t=e.getElementsByTagName("br"),n=t[t.length-1],Uo.isBogus(n)&&n.parentNode.removeChild(n),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null;var t,n},Pa=Uo.isContentEditableTrue,Ia=Uo.isContentEditableFalse,La=Uo.isBr,Fa=Uo.isText,Ma=Uo.matchNodeNames("script style textarea"),za=Uo.matchNodeNames("img input textarea hr iframe video audio object"),Ua=Uo.matchNodeNames("table"),ja=Ta,Va=function(e){return!ja(e)&&(Fa(e)?!Ma(e.parentNode):za(e)||La(e)||Ua(e)||Ha(e))},Ha=function(e){return!1===(t=e,Uo.isElement(t)&&"true"===t.getAttribute("unselectable"))&&Ia(e);var t},qa=function(e,t){return Va(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(Ha(e))return!1;if(Pa(e))return!0}return!0}(e,t)},$a=Math.round,Wa=function(e){return e?{left:$a(e.left),top:$a(e.top),bottom:$a(e.bottom),right:$a(e.right),width:$a(e.width),height:$a(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}},Ka=function(e,t){return e=Wa(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e},Xa=function(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2},Ya=function(e,t){return e.bottom-e.height/2<t.top||!(e.top>t.bottom)&&Xa(t.top-e.bottom,e,t)},Ga=function(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&Xa(t.bottom-e.top,e,t)},Ja=function(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom},Qa=function(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null},Za=function(e,t){return 1===e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},eu=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),tu=function(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&eu.test(e)},nu=function(e,t,n){return e.isSome()&&t.isSome()?_.some(n(e.getOrDie(),t.getOrDie())):_.none()},ru=[].slice,ou=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=ru.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}},iu=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=ru.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}},au=Uo.isElement,uu=Va,su=Uo.matchStyleValues("display","block table"),cu=Uo.matchStyleValues("float","left right"),lu=ou(au,uu,y(cu)),fu=y(Uo.matchStyleValues("white-space","pre pre-line pre-wrap")),du=Uo.isText,mu=Uo.isBr,gu=Ei.nodeIndex,pu=Za,hu=function(e){return"createRange"in e?e.createRange():Ei.DOM.createRng()},vu=function(e){return e&&/[\r\n\t ]/.test(e)},yu=function(e){return!!e.setStart&&!!e.setEnd},bu=function(e){var t,n=e.startContainer,r=e.startOffset;return!!(vu(e.toString())&&fu(n.parentNode)&&Uo.isText(n)&&(t=n.data,vu(t[r-1])||vu(t[r+1])))},Cu=function(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom},xu=function(e){var t,n,r,o,i,a,u,s;return t=0<(n=e.getClientRects()).length?Wa(n[0]):Wa(e.getBoundingClientRect()),!yu(e)&&mu(e)&&Cu(t)?(i=(r=e).ownerDocument,a=hu(i),u=i.createTextNode("\xa0"),(s=r.parentNode).insertBefore(u,r),a.setStart(u,0),a.setEnd(u,1),o=Wa(a.getBoundingClientRect()),s.removeChild(u),o):Cu(t)&&yu(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&Uo.isText(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),xu(i)}return null}(e):t},wu=function(e,t){var n=Ka(e,t);return n.width=1,n.right=n.left+1,n},Nu=function(e){var t,n,r=[],o=function(e){var t,n;0!==e.height&&(0<r.length&&(t=e,n=r[r.length-1],t.left===n.left&&t.top===n.top&&t.bottom===n.bottom&&t.right===n.right)||r.push(e))},i=function(e,t){var n=hu(e.ownerDocument);if(t<e.data.length){if(tu(e.data[t]))return r;if(tu(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!bu(n)))return o(wu(xu(n),!1)),r}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),bu(n)||o(wu(xu(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),bu(n)||o(wu(xu(n),!0)))};if(du(e.container()))return i(e.container(),e.offset()),r;if(au(e.container()))if(e.isAtEnd())n=pu(e.container(),e.offset()),du(n)&&i(n,n.data.length),lu(n)&&!mu(n)&&o(wu(xu(n),!1));else{if(n=pu(e.container(),e.offset()),du(n)&&i(n,0),lu(n)&&e.isAtEnd())return o(wu(xu(n),!1)),r;t=pu(e.container(),e.offset()-1),lu(t)&&!mu(t)&&(su(t)||su(n)||!lu(n))&&o(wu(xu(t),!1)),lu(n)&&o(wu(xu(n),!0))}return r};function Eu(t,n,e){var r=function(){return e||(e=Nu(Eu(t,n))),e};return{container:q(t),offset:q(n),toRange:function(){var e;return(e=hu(t.ownerDocument)).setStart(t,n),e.setEnd(t,n),e},getClientRects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return du(t),0===n},isAtEnd:function(){return du(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return pu(t,e?n-1:n)}}}(Zi=Eu||(Eu={})).fromRangeStart=function(e){return Zi(e.startContainer,e.startOffset)},Zi.fromRangeEnd=function(e){return Zi(e.endContainer,e.endOffset)},Zi.after=function(e){return Zi(e.parentNode,gu(e)+1)},Zi.before=function(e){return Zi(e.parentNode,gu(e))},Zi.isAbove=function(e,t){return nu(Z(t.getClientRects()),ee(e.getClientRects()),Ya).getOr(!1)},Zi.isBelow=function(e,t){return nu(ee(t.getClientRects()),Z(e.getClientRects()),Ga).getOr(!1)},Zi.isAtStart=function(e){return!!e&&e.isAtStart()},Zi.isAtEnd=function(e){return!!e&&e.isAtEnd()},Zi.isTextPosition=function(e){return!!e&&Uo.isText(e.container())},Zi.isElementPosition=function(e){return!1===Zi.isTextPosition(e)};var Su,Tu,ku=Eu,_u=Uo.isText,Au=Uo.isBogus,Ru=Ei.nodeIndex,Du=function(e){var t=e.parentNode;return Au(t)?Du(t):t},Ou=function(e){return e?Ht.reduce(e.childNodes,function(e,t){return Au(t)&&"BR"!==t.nodeName?e=e.concat(Ou(t)):e.push(t),e},[]):[]},Bu=function(t){return function(e){return t===e}},Pu=function(e){var t,r,n,o;return(_u(e)?"text()":e.nodeName.toLowerCase())+"["+(r=Ou(Du(t=e)),n=Ht.findIndex(r,Bu(t),t),r=r.slice(0,n+1),o=Ht.reduce(r,function(e,t,n){return _u(t)&&_u(r[n-1])&&e++,e},0),r=Ht.filter(r,Uo.matchNodeNames(t.nodeName)),(n=Ht.findIndex(r,Bu(t),t))-o)+"]"},Iu=function(e,t){var n,r,o,i,a,u=[];return n=t.container(),r=t.offset(),_u(n)?o=function(e,t){for(;(e=e.previousSibling)&&_u(e);)t+=e.data.length;return t}(n,r):(r>=(i=n.childNodes).length?(o="after",r=i.length-1):o="before",n=i[r]),u.push(Pu(n)),a=function(e,t,n){var r=[];for(t=t.parentNode;!(t===e||n&&n(t));t=t.parentNode)r.push(t);return r}(e,n),a=Ht.filter(a,y(Uo.isBogus)),(u=u.concat(Ht.map(a,function(e){return Pu(e)}))).reverse().join("/")+","+o},Lu=function(e,t){var n,r,o;return t?(t=(n=t.split(","))[0].split("/"),o=1<n.length?n[1]:"before",(r=Ht.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),n=e,r=t[1],o=parseInt(t[2],10),i=Ou(n),i=Ht.filter(i,function(e,t){return!_u(e)||!_u(i[t-1])}),(i=Ht.filter(i,Uo.matchNodeNames(r)))[o]):null;var n,r,o,i},e))?_u(r)?function(e,t){for(var n,r=e,o=0;_u(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!_u(r.nextSibling)){e=r,t=n;break}o+=n,r=r.nextSibling}return _u(e)&&t>e.data.length&&(t=e.data.length),ku(e,t)}(r,parseInt(o,10)):(o="after"===o?Ru(r)+1:Ru(r),ku(r.parentNode,o)):null):null},Fu=function(e,t){Uo.isText(t)&&0===t.data.length&&e.remove(t)},Mu=function(e,t,n){var r,o,i,a,u,s,c;Uo.isDocumentFragment(n)?(i=e,a=t,u=n,s=_.from(u.firstChild),c=_.from(u.lastChild),a.insertNode(u),s.each(function(e){return Fu(i,e.previousSibling)}),c.each(function(e){return Fu(i,e.nextSibling)})):(r=e,o=n,t.insertNode(o),Fu(r,o.previousSibling),Fu(r,o.nextSibling))},zu=Uo.isContentEditableFalse,Uu=function(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(Uo.isText(a)?s.push(n?function(e,t,n){var r,o;for(o=e(t.data.slice(0,n)).length,r=t.previousSibling;r&&Uo.isText(r);r=r.previousSibling)o+=e(r.data).length;return o}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s},ju=function(e,t,n){var r=0;return Xt.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r},Vu=function(e,t){var n,r,o,i=t?"start":"end";n=e[i+"Container"],r=e[i+"Offset"],Uo.isElement(n)&&"TR"===n.nodeName&&(n=(o=n.childNodes)[Math.min(t?r:r-1,o.length-1)])&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r))},Hu=function(e){return Vu(e,!0),Vu(e,!1),e},qu=function(e,t){var n;if(Uo.isElement(e)&&(e=Za(e,t),zu(e)))return e;if(Ta(e)){if(Uo.isText(e)&&Ea(e)&&(e=e.parentNode),n=e.previousSibling,zu(n))return n;if(n=e.nextSibling,zu(n))return n}},$u=function(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(zu(r)||"IMG"===o)return{name:o,index:ju(n.dom,o,r)};var a,u,s,c,l,f,d,m=qu((a=i).startContainer,a.startOffset)||qu(a.endContainer,a.endOffset);return m?{name:o=m.tagName,index:ju(n.dom,o,m)}:(u=e,c=t,l=i,f=(s=n).dom,(d={}).start=Uu(f,u,c,l,!0),s.isCollapsed()||(d.end=Uu(f,u,c,l,!1)),d)},Wu=function(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,""):e.create("span",r)},Ku=function(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:ju(n,u,a)};var s=Hu(r.cloneRange());if(!i){s.collapse(!1);var c=Wu(n,o+"_end",t);Mu(n,s,c)}(r=Hu(r)).collapse(!0);var l=Wu(n,o+"_start",t);return Mu(n,r,l),e.moveToBookmark({id:o,keep:1}),{id:o}},Xu={getBookmark:function(e,t,n){return 2===t?$u(xa,n,e):3===t?(o=(r=e).getRng(),{start:Iu(r.dom.getRoot(),ku.fromRangeStart(o)),end:Iu(r.dom.getRoot(),ku.fromRangeEnd(o))}):t?{rng:e.getRng()}:Ku(e,!1);var r,o},getUndoBookmark:d($u,$,!0),getPersistentBookmark:Ku},Yu="_mce_caret",Gu=function(e){return Uo.isElement(e)&&e.id===Yu},Ju=function(e,t){for(;t&&t!==e;){if(t.id===Yu)return t;t=t.parentNode}return null},Qu=Uo.isElement,Zu=Uo.isText,es=function(e){var t=e.parentNode;t&&t.removeChild(e)},ts=function(e,t){0===t.length?es(e):e.nodeValue=t},ns=function(e){var t=xa(e);return{count:e.length-t.length,text:t}},rs=function(e,t){return as(e),t},os=function(e,t){var n,r,o,i=t.container(),a=(n=te(i.childNodes),r=e,o=L(n,r),-1===o?_.none():_.some(o)).map(function(e){return e<t.offset()?ku(i,t.offset()-1):t}).getOr(t);return as(e),a},is=function(e,t){return Zu(e)&&t.container()===e?(r=t,o=ns((n=e).data.substr(0,r.offset())),i=ns(n.data.substr(r.offset())),0<(a=o.text+i.text).length?(ts(n,a),ku(n,r.offset()-o.count)):r):rs(e,t);var n,r,o,i,a},as=function(e){if(Qu(e)&&Ta(e)&&(ka(e)?e.removeAttribute("data-mce-caret"):es(e)),Zu(e)){var t=xa(function(e){try{return e.nodeValue}catch(t){return""}}(e));ts(e,t)}},us={removeAndReposition:function(e,t){return ku.isTextPosition(t)?is(e,t):(n=e,(r=t).container()===n.parentNode?os(n,r):rs(n,r));var n,r},remove:as},ss=or.detect().browser,cs=Uo.isContentEditableFalse,ls=function(e,t,n){var r,o,i,a,u,s=Ka(t.getBoundingClientRect(),n);return"BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,i=e.scrollTop||r.scrollTop):(u=e.getBoundingClientRect(),o=e.scrollLeft-u.left,i=e.scrollTop-u.top),s.left+=o,s.right+=o,s.top+=i,s.bottom+=i,s.width=1,0<(a=t.offsetWidth-t.clientWidth)&&(n&&(a*=-1),s.left+=a,s.right+=a),s},fs=function(a,u,e){var t,s,c=Vi(_.none()),l=function(){!function(e){var t,n,r,o,i;for(t=gn("*[contentEditable=false]",e),o=0;o<t.length;o++)r=(n=t[o]).previousSibling,Oa(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(i.length-1,1)),r=n.nextSibling,Da(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(0,1))}(a),s&&(us.remove(s),s=null),c.get().each(function(e){gn(e.caret).remove(),c.set(_.none())}),clearInterval(t)},f=function(){t=he.setInterval(function(){e()?gn("div.mce-visual-caret",a).toggleClass("mce-visual-caret-hidden"):gn("div.mce-visual-caret",a).addClass("mce-visual-caret-hidden")},500)};return{show:function(t,e){var n,r,o;if(l(),o=e,Uo.isElement(o)&&/^(TD|TH)$/i.test(o.tagName))return null;if(!u(e))return s=function(e,t){var n,r,o;if(r=e.ownerDocument.createTextNode(Ca),o=e.parentNode,t){if(n=e.previousSibling,Na(n)){if(Ta(n))return n;if(Oa(n))return n.splitText(n.data.length-1)}o.insertBefore(r,e)}else{if(n=e.nextSibling,Na(n)){if(Ta(n))return n;if(Da(n))return n.splitText(1),n}e.nextSibling?o.insertBefore(r,e.nextSibling):o.appendChild(r)}return r}(e,t),r=e.ownerDocument.createRange(),cs(s.nextSibling)?(r.setStart(s,0),r.setEnd(s,0)):(r.setStart(s,1),r.setEnd(s,1)),r;s=Ra("p",e,t),n=ls(a,e,t),gn(s).css("top",n.top);var i=gn('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(a)[0];return c.set(_.some({caret:i,element:e,before:t})),c.get().each(function(e){t&&gn(e.caret).addClass("mce-visual-caret-before")}),f(),(r=e.ownerDocument.createRange()).setStart(s,0),r.setEnd(s,0),r},hide:l,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){c.get().each(function(e){var t=ls(a,e.element,e.before);gn(e.caret).css(t)})},destroy:function(){return he.clearInterval(t)}}},ds=function(){return ss.isIE()||ss.isEdge()||ss.isFirefox()},ms=function(e){return cs(e)||Uo.isTable(e)&&ds()},gs=Uo.isContentEditableFalse,ps=Uo.matchStyleValues("display","block table table-cell table-caption list-item"),hs=Ta,vs=Ea,ys=Uo.isElement,bs=Va,Cs=function(e){return 0<e},xs=function(e){return e<0},ws=function(e,t){for(var n;n=e(t);)if(!vs(n))return n;return null},Ns=function(e,t,n,r,o){var i=new mo(e,r);if(xs(t)){if((gs(e)||vs(e))&&n(e=ws(i.prev,!0)))return e;for(;e=ws(i.prev,o);)if(n(e))return e}if(Cs(t)){if((gs(e)||vs(e))&&n(e=ws(i.next,!0)))return e;for(;e=ws(i.next,o);)if(n(e))return e}return null},Es=function(e,t){for(;e&&e!==t;){if(ps(e))return e;e=e.parentNode}return null},Ss=function(e,t,n){return Es(e.container(),n)===Es(t.container(),n)},Ts=function(e,t){var n,r;return t?(n=t.container(),r=t.offset(),ys(n)?n.childNodes[r+e]:null):null},ks=function(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n},_s=function(e,t,n){var r,o,i,a;for(o=e?"previousSibling":"nextSibling";n&&n!==t;){if(r=n[o],hs(r)&&(r=r[o]),gs(r)){if(a=n,Es(r,i=t)===Es(a,i))return r;break}if(bs(r))break;n=n.parentNode}return null},As=d(ks,!0),Rs=d(ks,!1),Ds=function(e,t,n){var r,o,i,a,u=d(_s,!0,t),s=d(_s,!1,t);if(o=n.startContainer,i=n.startOffset,Ea(o)){if(ys(o)||(o=o.parentNode),"before"===(a=o.getAttribute("data-mce-caret"))&&(r=o.nextSibling,ms(r)))return As(r);if("after"===a&&(r=o.previousSibling,ms(r)))return Rs(r)}if(!n.collapsed)return n;if(Uo.isText(o)){if(hs(o)){if(1===e){if(r=s(o))return As(r);if(r=u(o))return Rs(r)}if(-1===e){if(r=u(o))return Rs(r);if(r=s(o))return As(r)}return n}if(Oa(o)&&i>=o.data.length-1)return 1===e&&(r=s(o))?As(r):n;if(Da(o)&&i<=1)return-1===e&&(r=u(o))?Rs(r):n;if(i===o.data.length)return(r=s(o))?As(r):n;if(0===i)return(r=u(o))?Rs(r):n}return n},Os=function(e,t){return _.from(Ts(e?0:-1,t)).filter(gs)},Bs=function(e,t,n){var r=Ds(e,t,n);return-1===e?Eu.fromRangeStart(r):Eu.fromRangeEnd(r)},Ps=function(e){return _.from(e.getNode()).map(ar.fromDom)},Is=function(e,t){for(;t=e(t);)if(t.isVisible())return t;return t},Ls=function(e,t){var n=Ss(e,t);return!(n||!Uo.isBr(e.getNode()))||n};(Tu=Su||(Su={}))[Tu.Backwards=-1]="Backwards",Tu[Tu.Forwards=1]="Forwards";var Fs,Ms,zs,Us=Uo.isContentEditableFalse,js=Uo.isText,Vs=Uo.isElement,Hs=Uo.isBr,qs=Va,$s=function(e){return za(e)||!!Ha(t=e)&&!0!==j(te(t.getElementsByTagName("*")),function(e,t){return e||Pa(t)},!1);var t},Ws=qa,Ks=function(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null},Xs=function(e,t){if(Cs(e)){if(qs(t.previousSibling)&&!js(t.previousSibling))return ku.before(t);if(js(t))return ku(t,0)}if(xs(e)){if(qs(t.nextSibling)&&!js(t.nextSibling))return ku.after(t);if(js(t))return ku(t,t.data.length)}return xs(e)?Hs(t)?ku.before(t):ku.after(t):ku.before(t)},Ys=function(e,t,n){var r,o,i,a,u;if(!Vs(n)||!t)return null;if(t.isEqual(ku.after(n))&&n.lastChild){if(u=ku.after(n.lastChild),xs(e)&&qs(n.lastChild)&&Vs(n.lastChild))return Hs(n.lastChild)?ku.before(n.lastChild):u}else u=t;var s,c,l,f=u.container(),d=u.offset();if(js(f)){if(xs(e)&&0<d)return ku(f,--d);if(Cs(e)&&d<f.length)return ku(f,++d);r=f}else{if(xs(e)&&0<d&&(o=Ks(f,d-1),qs(o)))return!$s(o)&&(i=Ns(o,e,Ws,o))?js(i)?ku(i,i.data.length):ku.after(i):js(o)?ku(o,o.data.length):ku.before(o);if(Cs(e)&&d<f.childNodes.length&&(o=Ks(f,d),qs(o)))return Hs(o)?(s=n,(l=(c=o).nextSibling)&&qs(l)?js(l)?ku(l,0):ku.before(l):Ys(Su.Forwards,ku.after(c),s)):!$s(o)&&(i=Ns(o,e,Ws,o))?js(i)?ku(i,0):ku.before(i):js(o)?ku(o,0):ku.after(o);r=o||u.getNode()}return(Cs(e)&&u.isAtEnd()||xs(e)&&u.isAtStart())&&(r=Ns(r,e,q(!0),n,!0),Ws(r,n))?Xs(e,r):(o=Ns(r,e,Ws,n),!(a=Ht.last(U(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNode;return n}(f,n),Us)))||o&&a.contains(o)?o?Xs(e,o):null:u=Cs(e)?ku.after(a):ku.before(a))},Gs=function(t){return{next:function(e){return Ys(Su.Forwards,e,t)},prev:function(e){return Ys(Su.Backwards,e,t)}}},Js=function(e){return ku.isTextPosition(e)?0===e.offset():Va(e.getNode())},Qs=function(e){if(ku.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return Va(e.getNode(!0))},Zs=function(e,t){return!ku.isTextPosition(e)&&!ku.isTextPosition(t)&&e.getNode()===t.getNode(!0)},ec=function(e,t,n){return e?!Zs(t,n)&&(r=t,!(!ku.isTextPosition(r)&&Uo.isBr(r.getNode())))&&Qs(t)&&Js(n):!Zs(n,t)&&Js(t)&&Qs(n);var r},tc=function(e,t,n){var r=Gs(t);return _.from(e?r.next(n):r.prev(n))},nc=function(t,n,r){return tc(t,n,r).bind(function(e){return Ss(r,e,n)&&ec(t,r,e)?tc(t,n,e):_.some(e)})},rc=function(t,n,e,r){return nc(t,n,e).bind(function(e){return r(e)?rc(t,n,e,r):_.some(e)})},oc=function(e,t){var n,r,o,i,a,u=e?t.firstChild:t.lastChild;return Uo.isText(u)?_.some(ku(u,e?0:u.data.length)):u?Va(u)?_.some(e?ku.before(u):(a=u,Uo.isBr(a)?ku.before(a):ku.after(a))):(r=t,o=u,i=(n=e)?ku.before(o):ku.after(o),tc(n,r,i)):_.none()},ic=d(tc,!0),ac=d(tc,!1),uc={fromPosition:tc,nextPosition:ic,prevPosition:ac,navigate:nc,navigateIgnore:rc,positionIn:oc,firstPositionIn:d(oc,!0),lastPositionIn:d(oc,!1)},sc=function(e,t){return Uo.isElement(t)&&e.isBlock(t)&&!t.innerHTML&&!fe.ie&&(t.innerHTML='<br data-mce-bogus="1" />'),t},cc=function(e,t){return uc.lastPositionIn(e).fold(function(){return!1},function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})},lc=function(e,t,n){return!(!1!==t.hasChildNodes()||!Ju(e,t)||(o=n,i=(r=t).ownerDocument.createTextNode(Ca),r.appendChild(i),o.setStart(i,0),o.setEnd(i,0),0));var r,o,i},fc=function(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,lc(c,i,r))return!0;if(s[o]>u.length-1)return!!lc(c,i,r)||cc(i,r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return!0},dc=function(e){return Uo.isText(e)&&0<e.data.length},mc=function(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,"start"===t?l?c.hasChildNodes()?(r=c.firstChild,o=1):dc(c.nextSibling)?(r=c.nextSibling,o=0):dc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)+1):o=e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,o=1):dc(c.previousSibling)?(r=c.previousSibling,o=c.previousSibling.data.length):(r=c.parentNode,o=e.nodeIndex(c)):o=e.nodeIndex(c),u=r,s=o,!l){for(a=c.previousSibling,i=c.nextSibling,Xt.each(Xt.grep(c.childNodes),function(e){Uo.isText(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&Uo.isText(a)&&!fe.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),u=a,s=o)}return _.some(ku(u,s))}return _.none()},gc=function(e,t){var n,r,o,i,a,u,s,c,l,f,d,m,g,p,h,v,y=e.dom;if(t){if(v=t,Xt.isArray(v.start))return p=t,h=(g=y).createRng(),fc(g,!0,p,h)&&fc(g,!1,p,h)?_.some(h):_.none();if("string"==typeof t.start)return _.some((f=t,d=(l=y).createRng(),m=Lu(l.getRoot(),f.start),d.setStart(m.container(),m.offset()),m=Lu(l.getRoot(),f.end),d.setEnd(m.container(),m.offset()),d));if(t.hasOwnProperty("id"))return s=mc(o=y,"start",i=t),c=mc(o,"end",i),nu(s,(u=s,(a=c).isSome()?a:u),function(e,t){var n=o.createRng();return n.setStart(sc(o,e.container()),e.offset()),n.setEnd(sc(o,t.container()),t.offset()),n});if(t.hasOwnProperty("name"))return n=y,r=t,_.from(n.select(r.name)[r.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t});if(t.hasOwnProperty("rng"))return _.some(t.rng)}return _.none()},pc=function(e,t,n){return Xu.getBookmark(e,t,n)},hc=function(t,e){gc(t,e).each(function(e){t.setRng(e)})},vc=function(e){return Uo.isElement(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},yc=function(e){return e&&/^(IMG)$/.test(e.nodeName)},bc=function(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)},Cc=function(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),"fontFamily"===n&&(t=t.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+t},xc={isInlineBlock:yc,moveStart:function(e,t,n){var r,o,i,a=n.startOffset,u=n.startContainer;if((n.startContainer!==n.endContainer||!yc(n.startContainer.childNodes[n.startOffset]))&&1===u.nodeType)for(a<(i=u.childNodes).length?r=new mo(u=i[a],e.getParent(u,e.isBlock)):(r=new mo(u=i[i.length-1],e.getParent(u,e.isBlock))).next(!0),o=r.current();o;o=r.next())if(3===o.nodeType&&!bc(o))return n.setStart(o,0),void t.setRng(n)},getNonWhiteSpaceSibling:function(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1===e.nodeType||!bc(e))return e},isTextBlock:function(e,t){return t.nodeType&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]},isValid:function(e,t,n){return e.schema.isValidChild(t,n)},isWhiteSpaceNode:bc,replaceVars:function(e,n){return"string"!=typeof e?e=e(n):n&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e},isEq:function(e,t){return t=t||"",e=""+((e=e||"").nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()===t.toLowerCase()},normalizeStyleValue:Cc,getStyle:function(e,t,n){return Cc(e,e.getStyle(t,n),n)},getTextDecoration:function(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,"text-decoration"))&&"none"!==n}),n},getParents:function(e,t,n){return e.getParents(t,n,e.getRoot())}},wc=vc,Nc=xc.getParents,Ec=xc.isWhiteSpaceNode,Sc=xc.isTextBlock,Tc=function(e,t){for(void 0===t&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)(e=e.childNodes[t])&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}},kc=function(e,t){for(var n=t;n;){if(1===n.nodeType&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t},_c=function(e,t,n,r){var o,i,a=n.nodeValue;return void 0===r&&(r=e?a.length:0),e?(o=a.lastIndexOf(" ",r),-1!==(o=(i=a.lastIndexOf("\xa0",r))<o?o:i)&&!t&&(o<r||!e)&&o<=a.length&&o++):(o=a.indexOf(" ",r),i=a.indexOf("\xa0",r),o=-1!==o&&(-1===i||o<i)?o:i),o},Ac=function(e,t,n,r,o,i){var a,u,s,c;if(3===n.nodeType){if(-1!==(s=_c(o,i,n,r)))return{container:n,offset:s};c=n}for(a=new mo(n,e.getParent(n,e.isBlock)||t);u=a[o?"prev":"next"]();)if(3!==u.nodeType||wc(u.parentNode)){if(e.isBlock(u)||xc.isEq(u,"BR"))break}else if(-1!==(s=_c(o,i,c=u)))return{container:u,offset:s};if(c)return{container:c,offset:r=o?0:c.length}},Rc=function(e,t,n,r,o){var i,a,u,s;for(3===r.nodeType&&0===r.nodeValue.length&&r[o]&&(r=r[o]),i=Nc(e,r),a=0;a<i.length;a++)for(u=0;u<t.length;u++)if(!("collapsed"in(s=t[u])&&s.collapsed!==n.collapsed)&&e.is(i[a],s.selector))return i[a];return r},Dc=function(t,e,n,r){var o,i=t.dom,a=i.getRoot();if(e[0].wrapper||(o=i.getParent(n,e[0].block,a)),!o){var u=i.getParent(n,"LI,TD,TH");o=i.getParent(3===n.nodeType?n.parentNode:n,function(e){return e!==a&&Sc(t,e)},u)}if(o&&e[0].wrapper&&(o=Nc(i,o,"ul,ol").reverse()[0]||o),!o)for(o=n;o[r]&&!i.isBlock(o[r])&&(o=o[r],!xc.isEq(o,"br")););return o||n},Oc=function(e,t,n,r,o,i,a){var u,s,c,l,f,d;if(u=s=a?n:o,l=a?"previousSibling":"nextSibling",f=e.getRoot(),3===u.nodeType&&!Ec(u)&&(a?0<r:i<u.nodeValue.length))return u;for(;;){if(!t[0].block_expand&&e.isBlock(s))return s;for(c=s[l];c;c=c[l])if(!wc(c)&&!Ec(c)&&("BR"!==(d=c).nodeName||!d.getAttribute("data-mce-bogus")||d.nextSibling))return s;if(s===f||s.parentNode===f){u=s;break}s=s.parentNode}return u},Bc=function(e,t,n,r){var o,i=t.startContainer,a=t.startOffset,u=t.endContainer,s=t.endOffset,c=e.dom;return 1===i.nodeType&&i.hasChildNodes()&&3===(i=Za(i,a)).nodeType&&(a=0),1===u.nodeType&&u.hasChildNodes()&&3===(u=Za(u,t.collapsed?s:s-1)).nodeType&&(s=u.nodeValue.length),i=kc(c,i),u=kc(c,u),(wc(i.parentNode)||wc(i))&&(i=wc(i)?i:i.parentNode,3===(i=t.collapsed?i.previousSibling||i:i.nextSibling||i).nodeType&&(a=t.collapsed?i.length:0)),(wc(u.parentNode)||wc(u))&&(u=wc(u)?u:u.parentNode,3===(u=t.collapsed?u.nextSibling||u:u.previousSibling||u).nodeType&&(s=t.collapsed?0:u.length)),t.collapsed&&((o=Ac(c,e.getBody(),i,a,!0,r))&&(i=o.container,a=o.offset),(o=Ac(c,e.getBody(),u,s,!1,r))&&(u=o.container,s=o.offset)),n[0].inline&&(u=r?u:function(e,t){var n=Tc(e,t);if(n.node){for(;n.node&&0===n.offset&&n.node.previousSibling;)n=Tc(n.node.previousSibling);n.node&&0<n.offset&&3===n.node.nodeType&&" "===n.node.nodeValue.charAt(n.offset-1)&&1<n.offset&&(e=n.node).splitText(n.offset-1)}return e}(u,s)),(n[0].inline||n[0].block_expand)&&(n[0].inline&&3===i.nodeType&&0!==a||(i=Oc(c,n,i,a,u,s,!0)),n[0].inline&&3===u.nodeType&&s!==u.nodeValue.length||(u=Oc(c,n,i,a,u,s,!1))),n[0].selector&&!1!==n[0].expand&&!n[0].inline&&(i=Rc(c,n,t,i,"previousSibling"),u=Rc(c,n,t,u,"nextSibling")),(n[0].block||n[0].selector)&&(i=Dc(e,n,i,"previousSibling"),u=Dc(e,n,u,"nextSibling"),n[0].block&&(c.isBlock(i)||(i=Oc(c,n,i,a,u,s,!0)),c.isBlock(u)||(u=Oc(c,n,i,a,u,s,!1)))),1===i.nodeType&&(a=c.nodeIndex(i),i=i.parentNode),1===u.nodeType&&(s=c.nodeIndex(u)+1,u=u.parentNode),{startContainer:i,startOffset:a,endContainer:u,endOffset:s}},Pc=Xt.each,Ic=function(e,t,o){var n,r,i,a,u,s,c,l=t.startContainer,f=t.startOffset,d=t.endContainer,m=t.endOffset;if(0<(c=e.select("td[data-mce-selected],th[data-mce-selected]")).length)Pc(c,function(e){o([e])});else{var g,p,h,v=function(e){var t;return 3===(t=e[0]).nodeType&&t===l&&f>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===m&&0<e.length&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e},y=function(e,t,n){for(var r=[];e&&e!==n;e=e[t])r.push(e);return r},b=function(e,t){do{if(e.parentNode===t)return e;e=e.parentNode}while(e)},C=function(e,t,n){var r=n?"nextSibling":"previousSibling";for(u=(a=e).parentNode;a&&a!==t;a=u)u=a.parentNode,(s=y(a===e?a:a[r],r)).length&&(n||s.reverse(),o(v(s)))};if(1===l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[f]),1===d.nodeType&&d.hasChildNodes()&&(p=m,h=(g=d).childNodes,--p>h.length-1?p=h.length-1:p<0&&(p=0),d=h[p]||g),l===d)return o(v([l]));for(n=e.findCommonAncestor(l,d),a=l;a;a=a.parentNode){if(a===d)return C(l,n,!0);if(a===n)break}for(a=d;a;a=a.parentNode){if(a===l)return C(d,n);if(a===n)break}r=b(l,n)||l,i=b(d,n)||d,C(l,r,!0),(s=y(r===l?r:r.nextSibling,"nextSibling",i===d?i.nextSibling:i)).length&&o(v(s)),C(d,i)}},Lc=(Fs=mr,Ms="text",{get:function(e){if(!Fs(e))throw new Error("Can only get "+Ms+" value of a "+Ms+" node");return zs(e).getOr("")},getOption:zs=function(e){return Fs(e)?_.from(e.dom().nodeValue):_.none()},set:function(e,t){if(!Fs(e))throw new Error("Can only set raw "+Ms+" value of a "+Ms+" node");e.dom().nodeValue=t}}),Fc=function(e){return Lc.get(e)},Mc=function(r,o,i,a){return jr(o).fold(function(){return"skipping"},function(e){return"br"===a||mr(n=o)&&"\ufeff"===Fc(n)?"valid":dr(t=o)&&Yi(t,ia())?"existing":Gu(o)?"caret":xc.isValid(r,i,a)&&xc.isValid(r,lr(e),i)?"valid":"invalid-child";var t,n})},zc=function(e,t,n,r){var o,i,a=t.uid,u=void 0===a?(o="mce-annotation",i=(new Date).getTime(),o+"_"+Math.floor(1e9*Math.random())+ ++ma+String(i)):a,s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(t,["uid"]),c=ar.fromTag("span",e);Ki(c,ia()),xr(c,""+ua(),u),xr(c,""+aa(),n);var l,f=r(u,s),d=f.attributes,m=void 0===d?{}:d,g=f.classes,p=void 0===g?[]:g;return wr(c,m),l=c,z(p,function(e){Ki(l,e)}),c},Uc=function(i,e,t,n,r){var a=[],u=zc(i.getDoc(),r,t,n),s=Vi(_.none()),c=function(){s.set(_.none())},l=function(e){z(e,o)},o=function(e){var t,n;switch(Mc(i,e,"span",lr(e))){case"invalid-child":c();var r=Wr(e);l(r),c();break;case"valid":var o=s.get().getOrThunk(function(){var e=pa(u);return a.push(e),s.set(_.some(e)),e});Bi(t=e,n=o),Li(n,t)}};return Ic(i.dom,e,function(e){var t;c(),t=W(e,ar.fromDom),l(t)}),a},jc=function(s,c,l,f){s.undoManager.transact(function(){var e,t,n,r,o=s.selection.getRng();if(o.collapsed&&(r=Bc(e=s,t=o,[{inline:!0}],3===(n=t).startContainer.nodeType&&n.startContainer.nodeValue.length>=n.startOffset&&"\xa0"===n.startContainer.nodeValue[n.startOffset]),t.setStart(r.startContainer,r.startOffset),t.setEnd(r.endContainer,r.endOffset),e.selection.setRng(t)),s.selection.getRng().collapsed){var i=zc(s.getDoc(),f,c,l.decorate);va(i,"\xa0"),s.selection.getRng().insertNode(i.dom()),s.selection.select(i.dom())}else{var a=Xu.getPersistentBookmark(s.selection,!1),u=s.selection.getRng();Uc(s,u,c,l.decorate,f),s.selection.moveToBookmark(a)}})};function Vc(s){var n,r=(n={},{register:function(e,t){n[e]={name:e,settings:t}},lookup:function(e){return n.hasOwnProperty(e)?_.from(n[e]).map(function(e){return e.settings}):_.none()}});fa(s,r);var o=la(s);return{register:function(e,t){r.register(e,t)},annotate:function(t,n){r.lookup(t).each(function(e){jc(s,t,e,n)})},annotationChanged:function(e,t){o.addListener(e,t)},remove:function(e){sa(s,_.some(e)).each(function(e){var t=e.elements;z(t,Ui)})},getAll:function(e){var t,n,r,o,i,a,u=(t=s,n=e,r=ar.fromDom(t.getBody()),o=Ji(r,"["+aa()+'="'+n+'"]'),i={},z(o,function(e){var t=Nr(e,ua()),n=i.hasOwnProperty(t)?i[t]:[];i[t]=n.concat([e])}),i);return a=function(e){return W(e,function(e){return e.dom()})},vr(u,function(e,t){return{k:t,v:a(e,t)}})}}}var Hc=function(e){return Xt.grep(e.childNodes,function(e){return"LI"===e.nodeName})},qc=function(e){return e&&e.firstChild&&e.firstChild===e.lastChild&&("\xa0"===(t=e.firstChild).data||Uo.isBr(t));var t},$c=function(e){return 0<e.length&&(!(t=e[e.length-1]).firstChild||qc(t))?e.slice(0,-1):e;var t},Wc=function(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null},Kc=function(e,t){var n=ku.after(e),r=Gs(t).prev(n);return r?r.toRange():null},Xc=function(t,e,n){var r,o,i,a,u=t.parentNode;return Xt.each(e,function(e){u.insertBefore(e,t)}),r=t,o=n,i=ku.before(r),(a=Gs(o).next(i))?a.toRange():null},Yc=function(e,t){var n,r,o,i,a,u,s=t.firstChild,c=t.lastChild;return s&&"meta"===s.name&&(s=s.next),c&&"mce_marker"===c.attr("id")&&(c=c.prev),r=c,u=(n=e).getNonEmptyElements(),r&&(r.isEmpty(u)||(o=r,n.getBlockElements()[o.name]&&(a=o).firstChild&&a.firstChild===a.lastChild&&("br"===(i=o.firstChild).name||"\xa0"===i.value)))&&(c=c.prev),!(!s||s!==c||"ul"!==s.name&&"ol"!==s.name)},Gc=function(e,o,i,t){var n,r,a,u,s,c,l,f,d,m,g,p,h,v,y,b,C,x,w,N=(n=o,r=t,c=e.serialize(r),l=n.createFragment(c),u=(a=l).firstChild,s=a.lastChild,u&&"META"===u.nodeName&&u.parentNode.removeChild(u),s&&"mce_marker"===s.id&&s.parentNode.removeChild(s),a),E=Wc(o,i.startContainer),S=$c(Hc(N.firstChild)),T=o.getRoot(),k=function(e){var t=ku.fromRangeStart(i),n=Gs(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||Wc(o,r.getNode())!==E};return k(1)?Xc(E,S,T):k(2)?(f=E,d=S,m=T,o.insertAfter(d.reverse(),f),Kc(d[0],m)):(p=S,h=T,v=g=E,b=(y=i).cloneRange(),C=y.cloneRange(),b.setStartBefore(v),C.setEndAfter(v),x=[b.cloneContents(),C.cloneContents()],(w=g.parentNode).insertBefore(x[0],g),Xt.each(p,function(e){w.insertBefore(e,g)}),w.insertBefore(x[1],g),w.removeChild(g),Kc(p[p.length-1],h))},Jc=function(e,t){return!!Wc(e,t)},Qc=Xt.each,Zc=function(o){this.compare=function(e,t){if(e.nodeName!==t.nodeName)return!1;var n=function(n){var r={};return Qc(o.getAttribs(n),function(e){var t=e.nodeName.toLowerCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r},r=function(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(void 0===(n=t[r]))return!1;if(e[r]!==n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0};return!(!r(n(e),n(t))||!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))||vc(e)||vc(t))}},el=function(e){var t=Ji(e,"br"),n=U(function(e){for(var t=[],n=e.dom();n;)t.push(ar.fromDom(n)),n=n.lastChild;return t}(e).slice(-1),xo);t.length===n.length&&z(n,zi)},tl=function(e){Mi(e),Li(e,ar.fromHtml('<br data-mce-bogus="1">'))},nl=function(n){Yr(n).each(function(t){Vr(t).each(function(e){bo(n)&&xo(t)&&bo(e)&&zi(t)})})},rl=Xt.makeMap;function ol(e){var u,s,c,l,f,d=[];return u=(e=e||{}).indent,s=rl(e.indent_before||""),c=rl(e.indent_after||""),l=ei.getEncodeFunc(e.entity_encoding||"raw",e.entities),f="html"===e.element_format,{start:function(e,t,n){var r,o,i,a;if(u&&s[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n"),d.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],d.push(" ",i.name,'="',l(i.value,!0),'"');d[d.length]=!n||f?">":" />",n&&u&&c[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n")},end:function(e){var t;d.push("</",e,">"),u&&c[e]&&0<d.length&&0<(t=d[d.length-1]).length&&"\n"!==t&&d.push("\n")},text:function(e,t){0<e.length&&(d[d.length]=t?e:l(e))},cdata:function(e){d.push("<![CDATA[",e,"]]>")},comment:function(e){d.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?d.push("<?",e," ",l(t),"?>"):d.push("<?",e,"?>"),u&&d.push("\n")},doctype:function(e){d.push("<!DOCTYPE",e,">",u?"\n":"")},reset:function(){d.length=0},getContent:function(){return d.join("").replace(/\n$/,"")}}}function il(t,g){void 0===g&&(g=fi());var p=ol(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f,d;d=t.validate,f={3:function(e){p.text(e.value,e.raw)},8:function(e){p.comment(e.value)},7:function(e){p.pi(e.name,e.value)},10:function(e){p.doctype(e.value)},4:function(e){p.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;m(e),e=e.next;);}},p.reset();var m=function(e){var t,n,r,o,i,a,u,s,c,l=f[e.type];if(l)l(e);else{if(t=e.name,n=e.shortEnded,r=e.attributes,d&&r&&1<r.length&&((a=[]).map={},c=g.getElementRule(e.name))){for(u=0,s=c.attributesOrder.length;u<s;u++)(o=c.attributesOrder[u])in r.map&&(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));for(u=0,s=r.length;u<s;u++)(o=r[u].name)in a.map||(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));r=a}if(p.start(e.name,r,n),!n){if(e=e.firstChild)for(;m(e),e=e.next;);p.end(t)}}};return 1!==e.type||t.inner?f[11](e):m(e),p.getContent()}}}var al,ul=function(a){var u=ku.fromRangeStart(a),s=ku.fromRangeEnd(a),c=a.commonAncestorContainer;return uc.fromPosition(!1,c,s).map(function(e){return!Ss(u,s,c)&&Ss(u,e,c)?(t=u.container(),n=u.offset(),r=e.container(),o=e.offset(),(i=V.document.createRange()).setStart(t,n),i.setEnd(r,o),i):a;var t,n,r,o,i}).getOr(a)},sl=function(e){return e.collapsed?e:ul(e)},cl=Uo.matchNodeNames("td th"),ll=function(e,t){var n,r,o=e.selection.getRng(),i=o.startContainer,a=o.startOffset;o.collapsed&&(n=i,r=a,Uo.isText(n)&&"\xa0"===n.nodeValue[r-1])&&Uo.isText(i)&&(i.insertData(a-1," "),i.deleteData(a,1),o.setStart(i,a),o.setEnd(i,a),e.selection.setRng(o)),e.selection.setContent(t)},fl=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=e.selection,p=e.dom;if(/^ | $/.test(t)&&(t=function(e,t){var n,r;n=e.startContainer,r=e.startOffset;var o=function(e){return n[e]&&3===n[e].nodeType};return 3===n.nodeType&&(0<r?t=t.replace(/^ /," "):o("previousSibling")||(t=t.replace(/^ /," ")),r<n.length?t=t.replace(/ (<br>|)$/," "):o("nextSibling")||(t=t.replace(/( | )(<br>|)$/," "))),t}(g.getRng(),t)),r=e.parser,m=n.merge,o=il({validate:e.settings.validate},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">​</span>',s={content:t,format:"html",selection:!0,paste:n.paste},(s=e.fire("BeforeSetContent",s)).isDefaultPrevented())e.fire("SetContent",{content:s.content,format:"html",selection:!0,paste:n.paste});else{-1===(t=s.content).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var h,v,y,b,C,x,w=(l=g.getRng()).startContainer||(l.parentElement?l.parentElement():null),N=e.getBody();w===N&&g.isCollapsed()&&p.isBlock(N.firstChild)&&(h=e,(v=N.firstChild)&&!h.schema.getShortEndedElements()[v.nodeName])&&p.isEmpty(N.firstChild)&&((l=p.createRng()).setStart(N.firstChild,0),l.setEnd(N.firstChild,0),g.setRng(l)),g.isCollapsed()||(e.selection.setRng(sl(e.selection.getRng())),e.getDoc().execCommand("Delete",!1,null),y=e.selection.getRng(),b=t,C=y.startContainer,x=y.startOffset,3===C.nodeType&&y.collapsed&&("\xa0"===C.data[x]?(C.deleteData(x,1),/[\u00a0| ]$/.test(b)||(b+=" ")):"\xa0"===C.data[x-1]&&(C.deleteData(x-1,1),/[\u00a0| ]$/.test(b)||(b=" "+b))),t=b);var E,S,T,k={context:(i=g.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0};if(u=r.parse(t,k),!0===n.paste&&Yc(e.schema,u)&&Jc(p,i))return l=Gc(o,p,e.selection.getRng(),u),e.selection.setRng(l),void e.fire("SetContent",s);if(function(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}(u),"mce_marker"===(f=u.lastChild).attr("id"))for(f=(c=f).prev;f;f=f.walk(!0))if(3===f.type||!p.isBlock(f.name)){e.schema.isValidChild(f.parent.name,"span")&&f.parent.insert(c,f,"br"===f.name);break}if(e._selectionOverrides.showBlockCaretContainer(i),k.invalid){for(ll(e,d),i=g.getNode(),a=e.getBody(),9===i.nodeType?i=f=a:f=i;f!==a;)f=(i=f).parentNode;t=i===a?a.innerHTML:p.getOuterHTML(i),t=o.serialize(r.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return o.serialize(u)}))),i===a?p.setHTML(a,t):p.setOuterHTML(i,t)}else!function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,o=n.lastChild;!r||r===o&&"BR"===r.nodeName?e.dom.setHTML(n,t):ll(e,t)}}(e,t=o.serialize(u),i);!function(e,t){var n=e.schema.getTextInlineElements(),r=e.dom;if(t){var o=e.getBody(),i=new Zc(r);Xt.each(r.select("*[data-mce-fragment]"),function(e){for(var t=e.parentNode;t&&t!==o;t=t.parentNode)n[e.nodeName.toLowerCase()]&&i.compare(t,e)&&r.remove(e,!0)})}}(e,m),function(n,e){var t,r,o,i,a,u=n.dom,s=n.selection;if(e){if(n.selection.scrollIntoView(e),t=function(e){for(var t=n.getBody();e&&e!==t;e=e.parentNode)if("false"===n.dom.getContentEditable(e))return e;return null}(e))return u.remove(e),s.select(t);var c=u.createRng();(i=e.previousSibling)&&3===i.nodeType?(c.setStart(i,i.nodeValue.length),fe.ie||(a=e.nextSibling)&&3===a.nodeType&&(i.appendData(a.data),a.parentNode.removeChild(a))):(c.setStartBefore(e),c.setEndBefore(e)),r=u.getParent(e,u.isBlock),u.remove(e),r&&u.isEmpty(r)&&(n.$(r).empty(),c.setStart(r,0),c.setEnd(r,0),cl(r)||r.getAttribute("data-mce-fragment")||!(o=function(e){var t=ku.fromRangeStart(e);if(t=Gs(n.getBody()).next(t))return t.toRange()}(c))?u.add(r,u.create("br",{"data-mce-bogus":"1"})):(c=o,u.remove(r))),s.setRng(c)}}(e,p.get("mce_marker")),E=e.getBody(),Xt.each(E.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")}),S=e.dom,T=e.selection.getStart(),_.from(S.getParent(T,"td,th")).map(ar.fromDom).each(nl),e.fire("SetContent",s),e.addVisual()}},dl=function(e,t){var n,r,o="string"!=typeof(n=t)?(r=Xt.extend({paste:n.paste,data:{paste:n.paste}},n),{content:n.content,details:r}):{content:n,details:{}};fl(e,o.content,o.details)},ml=/[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,gl=function(e,t,n){var r=e.getParam(t,n);if(-1!==r.indexOf("=")){var o=e.getParam(t,"","hash");return o.hasOwnProperty(e.id)?o[e.id]:n}return r},pl=function(e){return e.getParam("iframe_attrs",{})},hl=function(e){return e.getParam("doctype","<!DOCTYPE html>")},vl=function(e){return e.getParam("document_base_url","")},yl=function(e){return gl(e,"body_id","tinymce")},bl=function(e){return gl(e,"body_class","")},Cl=function(e){return e.getParam("content_security_policy","")},xl=function(e){return e.getParam("br_in_pre",!0)},wl=function(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":t},Nl=function(e){return e.getParam("forced_root_block_attrs",{})},El=function(e){return e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption")},Sl=function(e){return e.getParam("no_newline_selector","")},Tl=function(e){return e.getParam("keep_styles",!0)},kl=function(e){return e.getParam("end_container_on_empty_block",!1)},_l=function(e){return Xt.explode(e.getParam("font_size_style_values",""))},Al=function(e){return Xt.explode(e.getParam("font_size_classes",""))},Rl=function(e){return e.getParam("images_dataimg_filter",q(!0),"function")},Dl=function(e){return e.getParam("automatic_uploads",!0,"boolean")},Ol=function(e){return e.getParam("images_reuse_filename",!1,"boolean")},Bl=function(e){return e.getParam("images_replace_blob_uris",!0,"boolean")},Pl=function(e){return e.getParam("images_upload_url","","string")},Il=function(e){return e.getParam("images_upload_base_path","","string")},Ll=function(e){return e.getParam("images_upload_credentials",!1,"boolean")},Fl=function(e){return e.getParam("images_upload_handler",null,"function")},Ml=function(e){return e.getParam("content_css_cors",!1,"boolean")},zl=function(e){return e.getParam("inline_boundaries_selector","a[href],code,.mce-annotation","string")},Ul=function(e,t){if(!t)return t;var n=t.container(),r=t.offset();return e?Sa(n)?Uo.isText(n.nextSibling)?ku(n.nextSibling,0):ku.after(n):_a(t)?ku(n,r+1):t:Sa(n)?Uo.isText(n.previousSibling)?ku(n.previousSibling,n.previousSibling.data.length):ku.before(n):Aa(t)?ku(n,r-1):t},jl={isInlineTarget:function(e,t){return Ir(ar.fromDom(t),zl(e))},findRootInline:function(e,t,n){var r,o,i,a=(r=e,o=t,i=n,U(Ei.DOM.getParents(i.container(),"*",o),r));return _.from(a[a.length-1])},isRtl:function(e){return"rtl"===Ei.DOM.getStyle(e,"direction",!0)||(t=e.textContent,ml.test(t));var t},isAtZwsp:function(e){return _a(e)||Aa(e)},normalizePosition:Ul,normalizeForwards:d(Ul,!0),normalizeBackwards:d(Ul,!1),hasSameParentBlock:function(e,t,n){var r=Es(t,e),o=Es(n,e);return r&&r===o}},Vl=function(e,t){return Mr(e,t)?ta(t,function(e){return wo(e)||Eo(e)},(n=e,function(e){return Fr(n,ar.fromDom(e.dom().parentNode))})):_.none();var n},Hl=function(e){var t,n,r;e.dom.isEmpty(e.getBody())&&(e.setContent(""),n=(t=e).getBody(),r=n.firstChild&&t.dom.isBlock(n.firstChild)?n.firstChild:n,t.selection.setCursorLocation(r,0))},ql=function(i,a,u){return nu(uc.firstPositionIn(u),uc.lastPositionIn(u),function(e,t){var n=jl.normalizePosition(!0,e),r=jl.normalizePosition(!1,t),o=jl.normalizePosition(!1,a);return i?uc.nextPosition(u,o).map(function(e){return e.isEqual(r)&&a.isEqual(n)}).getOr(!1):uc.prevPosition(u,o).map(function(e){return e.isEqual(n)&&a.isEqual(r)}).getOr(!1)}).getOr(!0)},$l=function(e,t){var n,r,o,i=ar.fromDom(e),a=ar.fromDom(t);return n=a,r="pre,code",o=d(Fr,i),na(n,r,o).isSome()},Wl=function(e,t){return Va(t)&&!1===(r=e,o=t,Uo.isText(o)&&/^[ \t\r\n]*$/.test(o.data)&&!1===$l(r,o))||(n=t,Uo.isElement(n)&&"A"===n.nodeName&&n.hasAttribute("name"))||Kl(t);var n,r,o},Kl=Uo.hasAttribute("data-mce-bookmark"),Xl=Uo.hasAttribute("data-mce-bogus"),Yl=Uo.hasAttributeValue("data-mce-bogus","all"),Gl=function(e){return function(e){var t,n,r=0;if(Wl(e,e))return!1;if(!(n=e.firstChild))return!0;t=new mo(n,e);do{if(Yl(n))n=t.next(!0);else if(Xl(n))n=t.next();else if(Uo.isBr(n))r++,n=t.next();else{if(Wl(e,n))return!1;n=t.next()}}while(n);return r<=1}(e.dom())},Jl=_r("block","position"),Ql=_r("from","to"),Zl=function(e,t){var n=ar.fromDom(e),r=ar.fromDom(t.container());return Vl(n,r).map(function(e){return Jl(e,t)})},ef=function(o,i,e){var t=Zl(o,ku.fromRangeStart(e)),n=t.bind(function(e){return uc.fromPosition(i,o,e.position()).bind(function(e){return Zl(o,e).map(function(e){return t=o,n=i,r=e,Uo.isBr(r.position().getNode())&&!1===Gl(r.block())?uc.positionIn(!1,r.block().dom()).bind(function(e){return e.isEqual(r.position())?uc.fromPosition(n,t,e).bind(function(e){return Zl(t,e)}):_.some(r)}).getOr(r):r;var t,n,r})})});return nu(t,n,Ql).filter(function(e){return!1===Fr((r=e).from().block(),r.to().block())&&jr((n=e).from().block()).bind(function(t){return jr(n.to().block()).filter(function(e){return Fr(t,e)})}).isSome()&&(t=e,!1===Uo.isContentEditableFalse(t.from().block().dom())&&!1===Uo.isContentEditableFalse(t.to().block().dom()));var t,n,r})},tf=function(e,t,n){return n.collapsed?ef(e,t,n):_.none()},nf=function(e,t,n){return Mr(t,e)?function(e,t){for(var n=D(t)?t:b,r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,a=ar.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(e,function(e){return n(e)||Fr(e,t)}).slice(0,-1):[]},rf=function(e,t){return nf(e,t,q(!1))},of=rf,af=function(e,t){return[e].concat(rf(e,t))},uf=function(e){var t,n=(t=Wr(e),Y(t,bo).fold(function(){return t},function(e){return t.slice(0,e)}));return z(n,zi),n},sf=function(e,t){var n=af(t,e);return X(n.reverse(),Gl).each(zi)},cf=function(e,t,n,r){if(Gl(n))return tl(n),uc.firstPositionIn(n.dom());0===U(qr(r),function(e){return!Gl(e)}).length&&Gl(t)&&Bi(r,ar.fromTag("br"));var o=uc.prevPosition(n.dom(),ku.before(r.dom()));return z(uf(t),function(e){Bi(r,e)}),sf(e,t),o},lf=function(e,t,n){if(Gl(n))return zi(n),Gl(t)&&tl(t),uc.firstPositionIn(t.dom());var r=uc.lastPositionIn(n.dom());return z(uf(t),function(e){Li(n,e)}),sf(e,t),r},ff=function(e,t){return Mr(t,e)?(n=af(e,t),_.from(n[n.length-1])):_.none();var n},df=function(e,t){uc.positionIn(e,t.dom()).map(function(e){return e.getNode()}).map(ar.fromDom).filter(xo).each(zi)},mf=function(e,t,n){return df(!0,t),df(!1,n),ff(t,n).fold(d(lf,e,t,n),d(cf,e,t,n))},gf=function(e,t,n,r){return t?mf(e,r,n):mf(e,n,r)},pf=function(t,n){var e,r=ar.fromDom(t.getBody());return(e=tf(r.dom(),n,t.selection.getRng()).bind(function(e){return gf(r,n,e.from().block(),e.to().block())})).each(function(e){t.selection.setRng(e.toRange())}),e.isSome()},hf=function(e,t){var n=ar.fromDom(t),r=d(Fr,e);return ea(n,ko,r).isSome()},vf=function(e,t){var n,r,o=uc.prevPosition(e.dom(),ku.fromRangeStart(t)).isNone(),i=uc.nextPosition(e.dom(),ku.fromRangeEnd(t)).isNone();return!(hf(n=e,(r=t).startContainer)||hf(n,r.endContainer))&&o&&i},yf=function(e){var n,r,o,t,i=ar.fromDom(e.getBody()),a=e.selection.getRng();return vf(i,a)?((t=e).setContent(""),t.selection.setCursorLocation(),!0):(n=i,r=e.selection,o=r.getRng(),nu(Vl(n,ar.fromDom(o.startContainer)),Vl(n,ar.fromDom(o.endContainer)),function(e,t){return!1===Fr(e,t)&&(o.deleteContents(),gf(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1))},bf=function(e,t){return!e.selection.isCollapsed()&&yf(e)},Cf=function(a){if(!k(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};return z(a,function(e,r){var t=gr(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!k(i))throw new Error("case arguments must be an array");u.push(o),n[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var n=new Array(e),t=0;t<n.length;t++)n[t]=arguments[t];return{fold:function(){if(arguments.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+arguments.length);return arguments[r].apply(null,n)},match:function(e){var t=gr(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(","));if(!J(u,function(e){return F(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+u.join(", "));return e[o].apply(null,n)},log:function(e){V.console.log(e,{constructors:u,constructor:o,params:n})}}}}),n},xf=function(e){return Ps(e).exists(xo)},wf=function(e,t,n){var r=U(af(ar.fromDom(n.container()),t),bo),o=Z(r).getOr(t);return uc.fromPosition(e,o.dom(),n).filter(xf)},Nf=function(e,t){return Ps(t).exists(xo)||wf(!0,e,t).isSome()},Ef=function(e,t){return(n=t,_.from(n.getNode(!0)).map(ar.fromDom)).exists(xo)||wf(!1,e,t).isSome();var n},Sf=d(wf,!1),Tf=d(wf,!0),kf=(al="\xa0",function(e){return al===e}),_f=function(e){return/^[\r\n\t ]$/.test(e)},Af=function(e){return!_f(e)&&!kf(e)},Rf=function(n,r,o){return _.from(o.container()).filter(Uo.isText).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})},Df=d(Rf,!0,_f),Of=d(Rf,!1,_f),Bf=function(e){var t=e.container();return Uo.isText(t)&&0===t.data.length},Pf=function(e,t){var n=Ts(e,t);return Uo.isContentEditableFalse(n)&&!Uo.isBogusAll(n)},If=d(Pf,0),Lf=d(Pf,-1),Ff=function(e,t){return Uo.isTable(Ts(e,t))},Mf=d(Ff,0),zf=d(Ff,-1),Uf=Cf([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),jf=function(e,t,n,r){var o=r.getNode(!1===t);return Vl(ar.fromDom(e),ar.fromDom(n.getNode())).map(function(e){return Gl(e)?Uf.remove(e.dom()):Uf.moveToElement(o)}).orThunk(function(){return _.some(Uf.moveToElement(o))})},Vf=function(u,s,c){return uc.fromPosition(s,u,c).bind(function(e){return a=e.getNode(),ko(ar.fromDom(a))||Eo(ar.fromDom(a))?_.none():(t=u,o=e,i=function(e){return Co(ar.fromDom(e))&&!Ss(r,o,t)},Os(!(n=s),r=c).fold(function(){return Os(n,o).fold(q(!1),i)},i)?_.none():s&&Uo.isContentEditableFalse(e.getNode())?jf(u,s,c,e):!1===s&&Uo.isContentEditableFalse(e.getNode(!0))?jf(u,s,c,e):s&&Lf(c)?_.some(Uf.moveToPosition(e)):!1===s&&If(c)?_.some(Uf.moveToPosition(e)):_.none());var t,n,r,o,i,a})},Hf=function(r,e,o){return i=e,a=o.getNode(!1===i),u=i?"after":"before",Uo.isElement(a)&&a.getAttribute("data-mce-caret")===u?(t=e,n=o.getNode(!1===e),t&&Uo.isContentEditableFalse(n.nextSibling)?_.some(Uf.moveToElement(n.nextSibling)):!1===t&&Uo.isContentEditableFalse(n.previousSibling)?_.some(Uf.moveToElement(n.previousSibling)):_.none()).fold(function(){return Vf(r,e,o)},_.some):Vf(r,e,o).bind(function(e){return t=r,n=o,e.fold(function(e){return _.some(Uf.remove(e))},function(e){return _.some(Uf.moveToElement(e))},function(e){return Ss(n,e,t)?_.none():_.some(Uf.moveToPosition(e))});var t,n});var t,n,i,a,u},qf=function(e,t,n){if(0!==n){var r,o,i,a=e.data.slice(t,t+n),u=t+n>=e.data.length,s=0===t;e.replaceData(t,n,(o=s,i=u,j((r=a).split(""),function(e,t){return-1!==" \f\n\r\t\x0B".indexOf(t)||"\xa0"===t?e.previousCharIsSpace||""===e.str&&o||e.str.length===r.length-1&&i?{previousCharIsSpace:!1,str:e.str+"\xa0"}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str))}},$f=function(e,t){var n,r=e.data.slice(t),o=r.length-(n=r,n.replace(/^\s+/g,"")).length;return qf(e,t,o)},Wf=function(e,t){return r=e,o=(n=t).container(),i=n.offset(),!1===ku.isTextPosition(n)&&o===r.parentNode&&i>ku.before(r).offset()?ku(t.container(),t.offset()-1):t;var n,r,o,i},Kf=function(e){return Va(e.previousSibling)?_.some((t=e.previousSibling,Uo.isText(t)?ku(t,t.data.length):ku.after(t))):e.previousSibling?uc.lastPositionIn(e.previousSibling):_.none();var t},Xf=function(e){return Va(e.nextSibling)?_.some((t=e.nextSibling,Uo.isText(t)?ku(t,0):ku.before(t))):e.nextSibling?uc.firstPositionIn(e.nextSibling):_.none();var t},Yf=function(r,o){return Kf(o).orThunk(function(){return Xf(o)}).orThunk(function(){return e=r,t=o,n=ku.before(t.previousSibling?t.previousSibling:t.parentNode),uc.prevPosition(e,n).fold(function(){return uc.nextPosition(e,ku.after(t))},_.some);var e,t,n})},Gf=function(n,r){return Xf(r).orThunk(function(){return Kf(r)}).orThunk(function(){return e=n,t=r,uc.nextPosition(e,ku.after(t)).fold(function(){return uc.prevPosition(e,ku.before(t))},_.some);var e,t})},Jf=function(e,t,n){return(r=e,o=t,i=n,r?Gf(o,i):Yf(o,i)).map(d(Wf,n));var r,o,i},Qf=function(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})},Zf=function(e,t){return t&&e.schema.getBlockElements().hasOwnProperty(lr(t))},ed=function(e){if(Gl(e)){var t=ar.fromHtml('<br data-mce-bogus="1">');return Mi(e),Li(e,t),_.some(ku.before(t.dom()))}return _.none()},td=function(e,t,l){var n,r,o,i,a=Vr(e).filter(mr),u=Hr(e).filter(mr);return zi(e),(n=a,r=u,o=t,i=function(e,t,n){var r,o,i,a,u=e.dom(),s=t.dom(),c=u.data.length;return o=s,i=l,a=Jn((r=u).data).length,r.appendData(o.data),zi(ar.fromDom(o)),i&&$f(r,a),n.container()===s?ku(u,c):n},n.isSome()&&r.isSome()&&o.isSome()?_.some(i(n.getOrDie(),r.getOrDie(),o.getOrDie())):_.none()).orThunk(function(){return l&&(a.each(function(e){return t=e.dom(),n=e.dom().length,r=t.data.slice(0,n),o=r.length-Jn(r).length,qf(t,n-o,o);var t,n,r,o}),u.each(function(e){return $f(e.dom(),0)})),t})},nd=function(e,t){return n=e.schema.getTextInlineElements(),r=lr(t),pr.call(n,r);var n,r},rd=function(t,n,e,r){void 0===r&&(r=!0);var o,i=Jf(n,t.getBody(),e.dom()),a=ea(e,d(Zf,t),(o=t.getBody(),function(e){return e.dom()===o})),u=td(e,i,nd(t,e));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):a.bind(ed).fold(function(){r&&Qf(t,n,u)},function(e){r&&Qf(t,n,_.some(e))})},od=function(a,u){var e,t,n,r,o,i;return(e=a.getBody(),t=u,n=a.selection.getRng(),r=Ds(t?1:-1,e,n),o=ku.fromRangeStart(r),i=ar.fromDom(e),!1===t&&Lf(o)?_.some(Uf.remove(o.getNode(!0))):t&&If(o)?_.some(Uf.remove(o.getNode())):!1===t&&If(o)&&Ef(i,o)?Sf(i,o).map(function(e){return Uf.remove(e.getNode())}):t&&Lf(o)&&Nf(i,o)?Tf(i,o).map(function(e){return Uf.remove(e.getNode())}):Hf(e,t,o)).map(function(e){return e.fold((o=a,i=u,function(e){return o._selectionOverrides.hideFakeCaret(),rd(o,i,ar.fromDom(e)),!0}),(n=a,r=u,function(e){var t=r?ku.before(e):ku.after(e);return n.selection.setRng(t.toRange()),!0}),(t=a,function(e){return t.selection.setRng(e.toRange()),!0}));var t,n,r,o,i}).getOr(!1)},id=function(e,t){var n,r=e.selection.getNode();return!!Uo.isContentEditableFalse(r)&&(n=ar.fromDom(e.getBody()),z(Ji(n,".mce-offscreen-selection"),zi),rd(e,t,ar.fromDom(e.selection.getNode())),Hl(e),!0)},ad=function(e,t){return e.selection.isCollapsed()?od(e,t):id(e,t)},ud=function(e){var t,n=function(e,t){for(;t&&t!==e;){if(Uo.isContentEditableTrue(t)||Uo.isContentEditableFalse(t))return t;t=t.parentNode}return null}(e.getBody(),e.selection.getNode());return Uo.isContentEditableTrue(n)&&e.dom.isBlock(n)&&e.dom.isEmpty(n)&&(t=e.dom.create("br",{"data-mce-bogus":"1"}),e.dom.setHTML(n,""),n.appendChild(t),e.selection.setRng(ku.before(t).toRange())),!0},sd=Uo.isText,cd=function(e){return sd(e)&&e.data[0]===Ca},ld=function(e){return sd(e)&&e.data[e.data.length-1]===Ca},fd=function(e){return e.ownerDocument.createTextNode(Ca)},dd=function(e,t){return e?function(e){if(sd(e.previousSibling))return ld(e.previousSibling)||e.previousSibling.appendData(Ca),e.previousSibling;if(sd(e))return cd(e)||e.insertData(0,Ca),e;var t=fd(e);return e.parentNode.insertBefore(t,e),t}(t):function(e){if(sd(e.nextSibling))return cd(e.nextSibling)||e.nextSibling.insertData(0,Ca),e.nextSibling;if(sd(e))return ld(e)||e.appendData(Ca),e;var t=fd(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t}(t)},md=d(dd,!0),gd=d(dd,!1),pd=function(e,t){return Uo.isText(e.container())?dd(t,e.container()):dd(t,e.getNode())},hd=function(e,t){var n=t.get();return n&&e.container()===n&&Sa(n)},vd=function(n,e){return e.fold(function(e){us.remove(n.get());var t=md(e);return n.set(t),_.some(ku(t,t.length-1))},function(e){return uc.firstPositionIn(e).map(function(e){if(hd(e,n))return ku(n.get(),1);us.remove(n.get());var t=pd(e,!0);return n.set(t),ku(t,1)})},function(e){return uc.lastPositionIn(e).map(function(e){if(hd(e,n))return ku(n.get(),n.get().length-1);us.remove(n.get());var t=pd(e,!1);return n.set(t),ku(t,t.length-1)})},function(e){us.remove(n.get());var t=gd(e);return n.set(t),_.some(ku(t,1))})},yd=function(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}return _.none()},bd=Cf([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element"]}]),Cd=function(e,t){var n=Es(t,e);return n||e},xd=function(e,t,n){var r=jl.normalizeForwards(n),o=Cd(t,r.container());return jl.findRootInline(e,o,r).fold(function(){return uc.nextPosition(o,r).bind(d(jl.findRootInline,e,o)).map(function(e){return bd.before(e)})},_.none)},wd=function(e,t){return null===Ju(e,t)},Nd=function(e,t,n){return jl.findRootInline(e,t,n).filter(d(wd,t))},Ed=function(e,t,n){var r=jl.normalizeBackwards(n);return Nd(e,t,r).bind(function(e){return uc.prevPosition(e,r).isNone()?_.some(bd.start(e)):_.none()})},Sd=function(e,t,n){var r=jl.normalizeForwards(n);return Nd(e,t,r).bind(function(e){return uc.nextPosition(e,r).isNone()?_.some(bd.end(e)):_.none()})},Td=function(e,t,n){var r=jl.normalizeBackwards(n),o=Cd(t,r.container());return jl.findRootInline(e,o,r).fold(function(){return uc.prevPosition(o,r).bind(d(jl.findRootInline,e,o)).map(function(e){return bd.after(e)})},_.none)},kd=function(e){return!1===jl.isRtl(Ad(e))},_d=function(e,t,n){return yd([xd,Ed,Sd,Td],[e,t,n]).filter(kd)},Ad=function(e){return e.fold($,$,$,$)},Rd=function(e){return e.fold(q("before"),q("start"),q("end"),q("after"))},Dd=function(e){return e.fold(bd.before,bd.before,bd.after,bd.after)},Od=function(n,e,r,t,o,i){return nu(jl.findRootInline(e,r,t),jl.findRootInline(e,r,o),function(e,t){return e!==t&&jl.hasSameParentBlock(r,e,t)?bd.after(n?e:t):i}).getOr(i)},Bd=function(e,r){return e.fold(q(!0),function(e){return n=r,!(Rd(t=e)===Rd(n)&&Ad(t)===Ad(n));var t,n})},Pd=function(e,t){return e?t.fold(H(_.some,bd.start),_.none,H(_.some,bd.after),_.none):t.fold(_.none,H(_.some,bd.before),_.none,H(_.some,bd.end))},Id=function(a,u,s,c){var e=jl.normalizePosition(a,c),l=_d(u,s,e);return _d(u,s,e).bind(d(Pd,a)).orThunk(function(){return t=a,n=u,r=s,o=l,e=c,i=jl.normalizePosition(t,e),uc.fromPosition(t,r,i).map(d(jl.normalizePosition,t)).fold(function(){return o.map(Dd)},function(e){return _d(n,r,e).map(d(Od,t,n,r,i,e)).filter(d(Bd,o))}).filter(kd);var t,n,r,o,e,i})},Ld=_d,Fd=Id,Md=(d(Id,!1),d(Id,!0),Dd),zd=function(e){return e.fold(bd.start,bd.start,bd.end,bd.end)},Ud=function(e){return D(e.selection.getSel().modify)},jd=function(e,t,n){var r=e?1:-1;return t.setRng(ku(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0},Vd=function(e,t){var n=t.selection.getRng(),r=e?ku.fromRangeEnd(n):ku.fromRangeStart(n);return!!Ud(t)&&(e&&_a(r)?jd(!0,t.selection,r):!(e||!Aa(r))&&jd(!1,t.selection,r))},Hd=function(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)},qd=function(e){return!1!==e.settings.inline_boundaries},$d=function(e,t){e?t.setAttribute("data-mce-selected","inline-boundary"):t.removeAttribute("data-mce-selected")},Wd=function(t,e,n){return vd(e,n).map(function(e){return Hd(t,e),n})},Kd=function(e,t,n){return function(){return!!qd(t)&&Vd(e,t)}},Xd={move:function(a,u,s){return function(){return!!qd(a)&&(t=a,n=u,e=s,r=t.getBody(),o=ku.fromRangeStart(t.selection.getRng()),i=d(jl.isInlineTarget,t),Fd(e,i,r,o).bind(function(e){return Wd(t,n,e)})).isSome();var t,n,e,r,o,i}},moveNextWord:d(Kd,!0),movePrevWord:d(Kd,!1),setupSelectedState:function(a){var u=Vi(null),s=d(jl.isInlineTarget,a);return a.on("NodeChange",function(e){var t,n,r,o,i;qd(a)&&(t=s,n=a.dom,r=e.parents,o=U(n.select('*[data-mce-selected="inline-boundary"]'),t),i=U(r,t),z(Q(o,i),d($d,!1)),z(Q(i,o),d($d,!0)),function(e,t){if(e.selection.isCollapsed()&&!0!==e.composing&&t.get()){var n=ku.fromRangeStart(e.selection.getRng());ku.isTextPosition(n)&&!1===jl.isAtZwsp(n)&&(Hd(e,us.removeAndReposition(t.get(),n)),t.set(null))}}(a,u),function(n,r,o,e){if(r.selection.isCollapsed()){var t=U(e,n);z(t,function(e){var t=ku.fromRangeStart(r.selection.getRng());Ld(n,r.getBody(),t).bind(function(e){return Wd(r,o,e)})})}}(s,a,u,e.parents))}),u},setCaretPosition:Hd},Yd=function(t,n){return function(e){return vd(n,e).map(function(e){return Xd.setCaretPosition(t,e),!0}).getOr(!1)}},Gd=function(r,o,i,a){var u=r.getBody(),s=d(jl.isInlineTarget,r);r.undoManager.ignore(function(){var e,t,n;r.selection.setRng((e=i,t=a,(n=V.document.createRange()).setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n)),r.execCommand("Delete"),Ld(s,u,ku.fromRangeStart(r.selection.getRng())).map(zd).map(Yd(r,o))}),r.nodeChanged()},Jd=function(n,r,i,o){var e,t,a=(e=n.getBody(),t=o.container(),Es(t,e)||e),u=d(jl.isInlineTarget,n),s=Ld(u,a,o);return s.bind(function(e){return i?e.fold(q(_.some(zd(e))),_.none,q(_.some(Md(e))),_.none):e.fold(_.none,q(_.some(Md(e))),_.none,q(_.some(zd(e))))}).map(Yd(n,r)).getOrThunk(function(){var t=uc.navigate(i,a,o),e=t.bind(function(e){return Ld(u,a,e)});return s.isSome()&&e.isSome()?jl.findRootInline(u,a,o).map(function(e){return o=e,!!nu(uc.firstPositionIn(o),uc.lastPositionIn(o),function(e,t){var n=jl.normalizePosition(!0,e),r=jl.normalizePosition(!1,t);return uc.nextPosition(o,n).map(function(e){return e.isEqual(r)}).getOr(!0)}).getOr(!0)&&(rd(n,i,ar.fromDom(e)),!0);var o}).getOr(!1):e.bind(function(e){return t.map(function(e){return i?Gd(n,r,o,e):Gd(n,r,e,o),!0})}).getOr(!1)})},Qd=function(e,t,n){if(e.selection.isCollapsed()&&!1!==e.settings.inline_boundaries){var r=ku.fromRangeStart(e.selection.getRng());return Jd(e,t,n,r)}return!1},Zd=_r("start","end"),em=_r("rng","table","cells"),tm=Cf([{removeTable:["element"]},{emptyCells:["cells"]}]),nm=function(e,t){return oa(ar.fromDom(e),"td,th",t)},rm=function(e,t){return na(e,"table",t)},om=function(e){return!1===Fr(e.start(),e.end())},im=function(e,n){return rm(e.start(),n).bind(function(t){return rm(e.end(),n).bind(function(e){return Fr(t,e)?_.some(t):_.none()})})},am=function(e){return Ji(e,"td,th")},um=function(r,e){var t=nm(e.startContainer,r),n=nm(e.endContainer,r);return e.collapsed?_.none():nu(t,n,Zd).fold(function(){return t.fold(function(){return n.bind(function(t){return rm(t,r).bind(function(e){return Z(am(e)).map(function(e){return Zd(e,t)})})})},function(t){return rm(t,r).bind(function(e){return ee(am(e)).map(function(e){return Zd(t,e)})})})},function(e){return sm(r,e)?_.none():(n=r,rm((t=e).start(),n).bind(function(e){return ee(am(e)).map(function(e){return Zd(t.start(),e)})}));var t,n})},sm=function(e,t){return im(t,e).isSome()},cm=function(e,t){var n,r,o,i,a=d(Fr,e);return(n=t,r=a,o=nm(n.startContainer,r),i=nm(n.endContainer,r),nu(o,i,Zd).filter(om).filter(function(e){return sm(r,e)}).orThunk(function(){return um(r,n)})).bind(function(e){return im(t=e,a).map(function(e){return em(t,e,am(e))});var t})},lm=function(e,t){return Y(e,function(e){return Fr(e,t)})},fm=function(n){return(r=n,nu(lm(r.cells(),r.rng().start()),lm(r.cells(),r.rng().end()),function(e,t){return r.cells().slice(e,t+1)})).map(function(e){var t=n.cells();return e.length===t.length?tm.removeTable(n.table()):tm.emptyCells(e)});var r},dm=function(e,t){return cm(e,t).bind(fm)},mm=function(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t},gm=mm,pm=function(e){return G(e,function(e){var t=Qa(e);return t?[ar.fromDom(t)]:[]})},hm=function(e){return 1<mm(e).length},vm=function(e){return U(pm(e),ko)},ym=function(e){return Ji(e,"td[data-mce-selected],th[data-mce-selected]")},bm=function(e,t){var n=ym(t),r=vm(e);return 0<n.length?n:r},Cm=bm,xm=function(e){return bm(gm(e.selection.getSel()),ar.fromDom(e.getBody()))},wm=function(e,t){return z(t,tl),e.selection.setCursorLocation(t[0].dom(),0),!0},Nm=function(e,t){return rd(e,!1,t),!0},Em=function(n,e,r,t){return Tm(e,t).fold(function(){return t=n,dm(e,r).map(function(e){return e.fold(d(Nm,t),d(wm,t))});var t},function(e){return km(n,e)}).getOr(!1)},Sm=function(e,t){return X(af(t,e),ko)},Tm=function(e,t){return X(af(t,e),function(e){return"caption"===lr(e)})},km=function(e,t){return tl(t),e.selection.setCursorLocation(t.dom(),0),_.some(!0)},_m=function(u,s,c,l,f){return uc.navigate(c,u.getBody(),f).bind(function(e){return r=l,o=c,i=f,a=e,uc.firstPositionIn(r.dom()).bind(function(t){return uc.lastPositionIn(r.dom()).map(function(e){return o?i.isEqual(t)&&a.isEqual(e):i.isEqual(e)&&a.isEqual(t)})}).getOr(!0)?km(u,l):(t=l,n=e,Tm(s,ar.fromDom(n.getNode())).map(function(e){return!1===Fr(e,t)}));var t,n,r,o,i,a}).or(_.some(!0))},Am=function(a,u,s,e){var c=ku.fromRangeStart(a.selection.getRng());return Sm(s,e).bind(function(e){return Gl(e)?km(a,e):(t=a,n=s,r=u,o=e,i=c,uc.navigate(r,t.getBody(),i).bind(function(e){return Sm(n,ar.fromDom(e.getNode())).map(function(e){return!1===Fr(e,o)})}));var t,n,r,o,i})},Rm=function(a,u,e){var s=ar.fromDom(a.getBody());return Tm(s,e).fold(function(){return Am(a,u,s,e)},function(e){return t=a,n=u,r=s,o=e,i=ku.fromRangeStart(t.selection.getRng()),Gl(o)?km(t,o):_m(t,r,n,o,i);var t,n,r,o,i}).getOr(!1)},Dm=function(e,t){var n,r,o,i,a,u=ar.fromDom(e.selection.getStart(!0)),s=xm(e);return e.selection.isCollapsed()&&0===s.length?Rm(e,t,u):(n=e,r=u,o=ar.fromDom(n.getBody()),i=n.selection.getRng(),0!==(a=xm(n)).length?wm(n,a):Em(n,o,i,r))},Om=xc.isEq,Bm=function(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o<r.length;o++)if(!1===r[o].inherit&&e.dom.is(t,r[o].selector))return!0;return!1},Pm=function(t,e,n,r){var o=t.dom.getRoot();return e!==o&&(e=t.dom.getParent(e,function(e){return!!Bm(t,e,n)||e.parentNode===o||!!Fm(t,e,n,r,!0)}),Fm(t,e,n,r))},Im=function(e,t,n){return!!Om(t,n.inline)||!!Om(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0)},Lm=function(e,t,n,r,o,i){var a,u,s,c=n[r];if(n.onmatch)return n.onmatch(t,n,r);if(c)if("undefined"==typeof c.length){for(a in c)if(c.hasOwnProperty(a)){if(u="attributes"===r?e.getAttrib(t,a):xc.getStyle(e,t,a),o&&!u&&!n.exact)return;if((!o||n.exact)&&!Om(u,xc.normalizeStyleValue(e,xc.replaceVars(c[a],i),a)))return}}else for(s=0;s<c.length;s++)if("attributes"===r?e.getAttrib(t,c[s]):xc.getStyle(e,t,c[s]))return n;return n},Fm=function(e,t,n,r,o){var i,a,u,s,c=e.formatter.get(n),l=e.dom;if(c&&t)for(a=0;a<c.length;a++)if(i=c[a],Im(e.dom,t,i)&&Lm(l,t,i,"attributes",o,r)&&Lm(l,t,i,"styles",o,r)){if(s=i.classes)for(u=0;u<s.length;u++)if(!e.dom.hasClass(t,s[u]))return;return i}},Mm={matchNode:Fm,matchName:Im,match:function(e,t,n,r){var o;return r?Pm(e,r,t,n):(r=e.selection.getNode(),!!Pm(e,r,t,n)||!((o=e.selection.getStart())===r||!Pm(e,o,t,n)))},matchAll:function(r,o,i){var e,a=[],u={};return e=r.selection.getStart(),r.dom.getParent(e,function(e){var t,n;for(t=0;t<o.length;t++)n=o[t],!u[n]&&Fm(r,e,n,i)&&(u[n]=!0,a.push(n))},r.dom.getRoot()),a},canApply:function(e,t){var n,r,o,i,a,u=e.formatter.get(t),s=e.dom;if(u)for(n=e.selection.getStart(),r=xc.getParents(s,n),i=u.length-1;0<=i;i--){if(!(a=u[i].selector)||u[i].defaultBlock)return!0;for(o=r.length-1;0<=o;o--)if(s.is(r[o],a))return!0}return!1},matchesUnInheritedFormatSelector:Bm},zm=function(e,t){return e.splitText(t)},Um=function(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t===r&&Uo.isText(t)?0<n&&n<t.nodeValue.length&&(t=(r=zm(t,n)).previousSibling,n<o?(t=r=zm(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(Uo.isText(t)&&0<n&&n<t.nodeValue.length&&(t=zm(t,n),n=0),Uo.isText(r)&&0<o&&o<r.nodeValue.length&&(o=(r=zm(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}},jm=Ca,Vm="_mce_caret",Hm=function(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==jm||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length},qm=function(e){var t;if(e)for(e=(t=new mo(e,e)).current();e;e=t.next())if(3===e.nodeType)return e;return null},$m=function(e){var t=ar.fromTag("span");return wr(t,{id:Vm,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&Li(t,ar.fromText(jm)),t},Wm=function(e,t,n){void 0===n&&(n=!0);var r,o=e.dom,i=e.selection;if(Hm(t))rd(e,!1,ar.fromDom(t),n);else{var a=i.getRng(),u=o.getParent(t,o.isBlock),s=((r=qm(t))&&r.nodeValue.charAt(0)===jm&&r.deleteData(0,1),r);a.startContainer===s&&0<a.startOffset&&a.setStart(s,a.startOffset-1),a.endContainer===s&&0<a.endOffset&&a.setEnd(s,a.endOffset-1),o.remove(t,!0),u&&o.isEmpty(u)&&tl(ar.fromDom(u)),i.setRng(a)}},Km=function(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)Wm(e,t,n);else if(!(t=Ju(e.getBody(),o.getStart())))for(;t=r.get(Vm);)Wm(e,t,!1)},Xm=function(e,t,n){var r=e.dom,o=r.getParent(n,d(xc.isTextBlock,e));o&&r.isEmpty(o)?n.parentNode.replaceChild(t,n):(el(ar.fromDom(n)),r.isEmpty(n)?n.parentNode.replaceChild(t,n):r.insertAfter(t,n))},Ym=function(e,t){return e.appendChild(t),t},Gm=function(e,t){var n,r,o=(n=function(e,t){return Ym(e,t.cloneNode(!1))},r=t,function(e,t){for(var n=e.length-1;0<=n;n--)t(e[n],n)}(e,function(e){r=n(r,e)}),r);return Ym(o,o.ownerDocument.createTextNode(jm))},Jm=function(i){i.on("mouseup keydown",function(e){var t,n,r,o;t=i,n=e.keyCode,r=t.selection,o=t.getBody(),Km(t,null,!1),8!==n&&46!==n||!r.isCollapsed()||r.getStart().innerHTML!==jm||Km(t,Ju(o,r.getStart())),37!==n&&39!==n||Km(t,Ju(o,r.getStart()))})},Qm=function(e,t){return e.schema.getTextInlineElements().hasOwnProperty(lr(t))&&!Gu(t.dom())&&!Uo.isBogus(t.dom())},Zm=function(e){return 1===Wr(e).length},eg=function(e,t,n,r){var o,i,a,u,s=d(Qm,t),c=W(U(r,s),function(e){return e.dom()});if(0===c.length)rd(t,e,n);else{var l=(o=n.dom(),i=c,a=$m(!1),u=Gm(i,a.dom()),Bi(ar.fromDom(o),a),zi(ar.fromDom(o)),ku(u,0));t.selection.setRng(l.toRange())}},tg=function(r,o){var t,e=ar.fromDom(r.getBody()),n=ar.fromDom(r.selection.getStart()),i=U((t=af(n,e),Y(t,bo).fold(q(t),function(e){return t.slice(0,e)})),Zm);return ee(i).map(function(e){var t,n=ku.fromRangeStart(r.selection.getRng());return!(!ql(o,n,e.dom())||Gu((t=e).dom())&&Hm(t.dom())||(eg(o,r,e,i),0))}).getOr(!1)},ng=function(e,t){return!!e.selection.isCollapsed()&&tg(e,t)},rg=Uo.isContentEditableTrue,og=Uo.isContentEditableFalse,ig=function(e,t,n,r,o){return t._selectionOverrides.showCaret(e,n,r,o)},ag=function(e,t){var n,r;return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?null:((r=(n=t).ownerDocument.createRange()).selectNode(n),r)},ug=function(e,t,n){var r=Ds(1,e.getBody(),t),o=ku.fromRangeStart(r),i=o.getNode();if(og(i))return ig(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(og(a))return ig(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return og(e)||rg(e)});return og(u)?ig(1,e,u,!1,n):null},sg=function(e,t,n){if(!t||!t.collapsed)return t;var r=ug(e,t,n);return r||t},cg=function(e,t,n,r,o,i){var a,u,s=ig(r,e,i.getNode(!o),o,!0);if(t.collapsed){var c=t.cloneRange();o?c.setEnd(s.startContainer,s.startOffset):c.setStart(s.endContainer,s.endOffset),c.deleteContents()}else t.deleteContents();return e.selection.setRng(s),a=e.dom,u=n,Uo.isText(u)&&0===u.data.length&&a.remove(u),!0},lg=function(e,t){return function(e,t){var n=e.selection.getRng();if(!Uo.isText(n.commonAncestorContainer))return!1;var r=t?Su.Forwards:Su.Backwards,o=Gs(e.getBody()),i=d(Is,o.next),a=d(Is,o.prev),u=t?i:a,s=t?If:Lf,c=Bs(r,e.getBody(),n),l=jl.normalizePosition(t,u(c));if(!l)return!1;if(s(l))return cg(e,n,c.getNode(),r,t,l);var f=u(l);return!!(f&&s(f)&&Ls(l,f))&&cg(e,n,c.getNode(),r,t,f)}(e,t)},fg=function(e,t){e.getDoc().execCommand(t,!1,null)},dg=function(e){ad(e,!1)||lg(e,!1)||Qd(e,!1)||pf(e,!1)||Dm(e)||bf(e,!1)||ng(e,!1)||(fg(e,"Delete"),Hl(e))},mg=function(e){ad(e,!0)||lg(e,!0)||Qd(e,!0)||pf(e,!0)||Dm(e)||bf(e,!0)||ng(e,!0)||fg(e,"ForwardDelete")},gg=function(o,t,e){var n=function(e){return t=o,n=e.dom(),r=kr(n,t),_.from(r).filter(function(e){return 0<e.length});var t,n,r};return ta(ar.fromDom(e),function(e){return n(e).isSome()},function(e){return Fr(ar.fromDom(t),e)}).bind(n)},pg=function(o){return function(r,e){return _.from(e).map(ar.fromDom).filter(dr).bind(function(e){return gg(o,r,e.dom()).or((t=o,n=e.dom(),_.from(Ei.DOM.getStyle(n,t,!0))));var t,n}).getOr("")}},hg={getFontSize:pg("font-size"),getFontFamily:H(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},pg("font-family")),toPt:function(e,t){return/[0-9.]+px$/.test(e)?(n=72*parseInt(e,10)/96,r=t||0,o=Math.pow(10,r),Math.round(n*o)/o+"pt"):e;var n,r,o}},vg=function(e){return uc.firstPositionIn(e.getBody()).map(function(e){var t=e.container();return Uo.isText(t)?t.parentNode:t})},yg=function(o){return _.from(o.selection.getRng()).bind(function(e){var t,n,r=o.getBody();return n=r,(t=e).startContainer===n&&0===t.startOffset?_.none():_.from(o.selection.getStart(!0))})},bg=function(e,t){if(/^[0-9\.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=_l(e),o=Al(e);return o?o[n-1]||t:r[n-1]||t}return t}return t},Cg=function(e,t){return e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset},xg=function(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)},wg=function(e,t,n){return xg(e,t,function(e){return e.nodeName===n})},Ng=function(e){return e&&"TABLE"===e.nodeName},Eg=function(e,t,n){for(var r=new mo(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(Uo.isBr(t))return!0},Sg=function(e,t,n,r,o){var i,a,u,s,c,l,f=e.getRoot(),d=e.schema.getNonEmptyElements();if(u=e.getParent(o.parentNode,e.isBlock)||f,r&&Uo.isBr(o)&&t&&e.isEmpty(u))return _.some(Eu(o.parentNode,e.nodeIndex(o)));for(i=new mo(o,u);s=i[r?"prev":"next"]();){if("false"===e.getContentEditableParent(s)||(l=f,Ta(c=s)&&!1===xg(c,l,Gu)))return _.none();if(Uo.isText(s)&&0<s.nodeValue.length)return!1===wg(s,f,"A")?_.some(Eu(s,r?s.nodeValue.length:0)):_.none();if(e.isBlock(s)||d[s.nodeName.toLowerCase()])return _.none();a=s}return n&&a?_.some(Eu(a,0)):_.none()},Tg=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g=e.getRoot(),p=!1;if(o=r[(n?"start":"end")+"Container"],i=r[(n?"start":"end")+"Offset"],l=Uo.isElement(o)&&i===o.childNodes.length,s=e.schema.getNonEmptyElements(),c=n,Ta(o))return _.none();if(Uo.isElement(o)&&i>o.childNodes.length-1&&(c=!1),Uo.isDocument(o)&&(o=g,i=0),o===g){if(c&&(u=o.childNodes[0<i?i-1:0])){if(Ta(u))return _.none();if(s[u.nodeName]||Ng(u))return _.none()}if(o.hasChildNodes()){if(i=Math.min(!c&&0<i?i-1:i,o.childNodes.length-1),o=o.childNodes[i],i=Uo.isText(o)&&l?o.data.length:0,!t&&o===g.lastChild&&Ng(o))return _.none();if(function(e,t){for(;t&&t!==e;){if(Uo.isContentEditableFalse(t))return!0;t=t.parentNode}return!1}(g,o)||Ta(o))return _.none();if(o.hasChildNodes()&&!1===Ng(o)){a=new mo(u=o,g);do{if(Uo.isContentEditableFalse(u)||Ta(u)){p=!1;break}if(Uo.isText(u)&&0<u.nodeValue.length){i=c?0:u.nodeValue.length,o=u,p=!0;break}if(s[u.nodeName.toLowerCase()]&&(!(f=u)||!/^(TD|TH|CAPTION)$/.test(f.nodeName))){i=e.nodeIndex(u),o=u.parentNode,c||i++,p=!0;break}}while(u=c?a.next():a.prev())}}}return t&&(Uo.isText(o)&&0===i&&Sg(e,l,t,!0,o).each(function(e){o=e.container(),i=e.offset(),p=!0}),Uo.isElement(o)&&((u=o.childNodes[i])||(u=o.childNodes[i-1]),!u||!Uo.isBr(u)||(m="A",(d=u).previousSibling&&d.previousSibling.nodeName===m)||Eg(e,u,!1)||Eg(e,u,!0)||Sg(e,l,t,!0,u).each(function(e){o=e.container(),i=e.offset(),p=!0}))),c&&!t&&Uo.isText(o)&&i===o.nodeValue.length&&Sg(e,l,t,!1,o).each(function(e){o=e.container(),i=e.offset(),p=!0}),p?_.some(Eu(o,i)):_.none()},kg=function(e,t){var n=t.collapsed,r=t.cloneRange(),o=Eu.fromRangeStart(t);return Tg(e,n,!0,r).each(function(e){n&&Eu.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||Tg(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),Cg(t,r)?_.none():_.some(r)},_g=function(e,t,n){var r=e.create("span",{}," ");n.parentNode.insertBefore(r,n),t.scrollIntoView(r),e.remove(r)},Ag=function(e,t,n,r){var o=e.createRng();r?(o.setStartBefore(n),o.setEndBefore(n)):(o.setStartAfter(n),o.setEndAfter(n)),t.setRng(o)},Rg=function(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();kg(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u=a.startOffset,s=a.startContainer;if(1===s.nodeType&&s.hasChildNodes()){var c=u>s.childNodes.length-1;s=s.childNodes[Math.min(u,s.childNodes.length-1)]||s,u=c&&3===s.nodeType?s.nodeValue.length:0}var l=i.getParent(s,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",m=t&&t.ctrlKey;"LI"!==d||m||(l=f),s&&3===s.nodeType&&u>=s.nodeValue.length&&(function(e,t,n){for(var r,o=new mo(t,n),i=e.getNonEmptyElements();r=o.next();)if(i[r.nodeName.toLowerCase()]||0<r.length)return!0}(e.schema,s,l)||(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0)),n=i.create("br"),Mu(i,a,n),_g(i,o,n),Ag(i,o,n,r),e.undoManager.add()},Dg=function(e,t){var n=ar.fromTag("br");Bi(ar.fromDom(t),n),e.undoManager.add()},Og=function(e,t){Bg(e.getBody(),t)||Pi(ar.fromDom(t),ar.fromTag("br"));var n=ar.fromTag("br");Pi(ar.fromDom(t),n),_g(e.dom,e.selection,n.dom()),Ag(e.dom,e.selection,n.dom(),!1),e.undoManager.add()},Bg=function(e,t){return n=ku.after(t),!!Uo.isBr(n.getNode())||uc.nextPosition(e,ku.after(t)).map(function(e){return Uo.isBr(e.getNode())}).getOr(!1);var n},Pg=function(e){return e&&"A"===e.nodeName&&"href"in e},Ig=function(e){return e.fold(q(!1),Pg,Pg,q(!1))},Lg=function(e,t){t.fold(o,d(Dg,e),d(Og,e),o)},Fg=function(e,t){var n,r,o,i=(n=e,r=d(jl.isInlineTarget,n),o=ku.fromRangeStart(n.selection.getRng()),Ld(r,n.getBody(),o).filter(Ig));i.isSome()?i.each(d(Lg,e)):Rg(e,t)},Mg={create:_r("start","soffset","finish","foffset")},zg=Cf([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Ug=(zg.before,zg.on,zg.after,function(e){return e.fold($,$,$)}),jg=Cf([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Vg={domRange:jg.domRange,relative:jg.relative,exact:jg.exact,exactFromRange:function(e){return jg.exact(e.start(),e.soffset(),e.finish(),e.foffset())},getWin:function(e){var t=e.match({domRange:function(e){return ar.fromDom(e.startContainer)},relative:function(e,t){return Ug(e)},exact:function(e,t,n,r){return e}});return Ur(t)},range:Mg.create},Hg=or.detect().browser,qg=function(e,t){var n=mr(t)?Fc(t).length:Wr(t).length+1;return n<e?n:e<0?0:e},$g=function(e){return Vg.range(e.start(),qg(e.soffset(),e.start()),e.finish(),qg(e.foffset(),e.finish()))},Wg=function(e,t){return!Uo.isRestrictedNode(t.dom())&&(Mr(e,t)||Fr(e,t))},Kg=function(t){return function(e){return Wg(t,e.start())&&Wg(t,e.finish())}},Xg=function(e){return!0===e.inline||Hg.isIE()},Yg=function(e){return Vg.range(ar.fromDom(e.startContainer),e.startOffset,ar.fromDom(e.endContainer),e.endOffset)},Gg=function(e){var t=e.getSelection();return(t&&0!==t.rangeCount?_.from(t.getRangeAt(0)):_.none()).map(Yg)},Jg=function(e){var t=Ur(e);return Gg(t.dom()).filter(Kg(e))},Qg=function(e,t){return _.from(t).filter(Kg(e)).map($g)},Zg=function(e){var t=V.document.createRange();try{return t.setStart(e.start().dom(),e.soffset()),t.setEnd(e.finish().dom(),e.foffset()),_.some(t)}catch(n){return _.none()}},ep=function(e){return(e.bookmark?e.bookmark:_.none()).bind(d(Qg,ar.fromDom(e.getBody()))).bind(Zg)},tp=function(e){var t=Xg(e)?Jg(ar.fromDom(e.getBody())):_.none();e.bookmark=t.isSome()?t:e.bookmark},np=function(t){ep(t).each(function(e){t.selection.setRng(e)})},rp=ep,op=function(e){return No(e)||Eo(e)},ip=function(e){return U(W(e.selection.getSelectedBlocks(),ar.fromDom),function(e){return!op(e)&&!jr(e).map(op).getOr(!1)})},ap=function(e,t){var n=e.settings,r=e.dom,o=e.selection,i=e.formatter,a=/[a-z%]+$/i.exec(n.indentation)[0],u=parseInt(n.indentation,10),s=e.getParam("indent_use_margin",!1);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||n.forced_root_block||r.getParent(o.getNode(),r.isBlock)||i.apply("div"),z(ip(e),function(e){!function(e,t,n,r,o,i){if("false"!==e.getContentEditable(i)){var a=n?"margin":"padding";if(a="TABLE"===i.nodeName?"margin":a,a+="rtl"===e.getStyle(i,"direction",!0)?"Right":"Left","outdent"===t){var u=Math.max(0,parseInt(i.style[a]||0,10)-r);e.setStyle(i,a,u?u+o:"")}else u=parseInt(i.style[a]||0,10)+r+o,e.setStyle(i,a,u)}}(r,t,s,u,a,e.dom())})},up=Xt.each,sp=Xt.extend,cp=Xt.map,lp=Xt.inArray;function fp(s){var o,i,a,t,c={state:{},exec:{},value:{}},n=s.settings;s.on("PreInit",function(){o=s.dom,i=s.selection,n=s.settings,a=s.formatter});var r=function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.state[e])return t(e);try{return s.getDoc().queryCommandState(e)}catch(n){}return!1}},e=function(e,n){n=n||"exec",up(e,function(t,e){up(e.toLowerCase().split(","),function(e){c[n][e]=t})})},u=function(e,t,n){e=e.toLowerCase(),c.value[e]=function(){return t.call(n||s)}};sp(this,{execCommand:function(t,n,r,e){var o,i,a=!1;if(!s.removed){if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?np(s):s.focus(),(e=s.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;if(i=t.toLowerCase(),o=c.exec[i])return o(i,n,r),s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(up(s.plugins,function(e){if(e.execCommand&&e.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(s.theme&&s.theme.execCommand&&s.theme.execCommand(t,n,r))return s.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=s.getDoc().execCommand(t,n,r)}catch(u){}return!!a&&(s.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},queryCommandState:r,queryCommandValue:function(e){var t;if(!s.quirks.isHidden()&&!s.removed){if(e=e.toLowerCase(),t=c.value[e])return t(e);try{return s.getDoc().queryCommandValue(e)}catch(n){}}},queryCommandSupported:function(e){if(e=e.toLowerCase(),c.exec[e])return!0;try{return s.getDoc().queryCommandSupported(e)}catch(t){}return!1},addCommands:e,addCommand:function(e,o,i){e=e.toLowerCase(),c.exec[e]=function(e,t,n,r){return o.call(i||s,t,n,r)}},addQueryStateHandler:function(e,t,n){e=e.toLowerCase(),c.state[e]=function(){return t.call(n||s)}},addQueryValueHandler:u,hasCustomCommand:function(e){return e=e.toLowerCase(),!!c.exec[e]}});var l=function(e,t,n){return t===undefined&&(t=!1),n===undefined&&(n=null),s.getDoc().execCommand(e,t,n)},f=function(e){return a.match(e)},d=function(e,t){a.toggle(e,t?{value:t}:undefined),s.nodeChanged()},m=function(e){t=i.getBookmark(e)},g=function(){i.moveToBookmark(t)};e({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){s.undoManager.add()},"Cut,Copy,Paste":function(e){var t,n=s.getDoc();try{l(e)}catch(o){t=!0}if("paste"!==e||n.queryCommandEnabled(e)||(t=!0),t||!n.queryCommandSupported(e)){var r=s.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");fe.mac&&(r=r.replace(/Ctrl\+/g,"\u2318+")),s.notificationManager.open({text:r,type:"error"})}},unlink:function(){if(i.isCollapsed()){var e=s.dom.getParent(s.selection.getStart(),"a");e&&s.dom.remove(e,!0)}else a.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),up("left,center,right,justify".split(","),function(e){t!==e&&a.remove("align"+e)}),"none"!==t&&d("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;l(e),(t=o.getParent(i.getNode(),"ol,ul"))&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(m(),o.split(n,t),g()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){d(e)},"ForeColor,HiliteColor":function(e,t,n){d(e,n)},FontName:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontname",{value:bg(r,o)}),r.nodeChanged()},FontSize:function(e,t,n){var r,o;o=n,(r=s).formatter.toggle("fontsize",{value:bg(r,o)}),r.nodeChanged()},RemoveFormat:function(e){a.remove(e)},mceBlockQuote:function(){d("blockquote")},FormatBlock:function(e,t,n){return d(n||"p")},mceCleanup:function(){var e=i.getBookmark();s.setContent(s.getContent()),i.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||i.getNode();r!==s.getBody()&&(m(),s.dom.remove(r,!0),g())},mceSelectNodeDepth:function(e,t,n){var r=0;o.getParent(i.getNode(),function(e){if(1===e.nodeType&&r++===n)return i.select(e),!1},s.getBody())},mceSelectNode:function(e,t,n){i.select(n)},mceInsertContent:function(e,t,n){dl(s,n)},mceInsertRawHTML:function(e,t,n){i.setContent("tiny_mce_marker");var r=s.getContent();s.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceToggleFormat:function(e,t,n){d(n)},mceSetContent:function(e,t,n){s.setContent(n)},"Indent,Outdent":function(e){ap(s,e)},mceRepaint:function(){},InsertHorizontalRule:function(){s.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){s.hasVisual=!s.hasVisual,s.addVisual()},mceReplaceContent:function(e,t,n){s.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,i.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=o.getParent(i.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||a.remove("link"),n.href&&a.apply("link",n,r)},selectAll:function(){var e=o.getParent(i.getStart(),Uo.isContentEditableTrue);if(e){var t=o.createRng();t.selectNodeContents(e),i.setRng(t)}},"delete":function(){dg(s)},forwardDelete:function(){mg(s)},mceNewDocument:function(){s.setContent("")},InsertLineBreak:function(e,t,n){return Fg(s,n),!0}});var p=function(n){return function(){var e=i.isCollapsed()?[o.getParent(i.getNode(),o.isBlock)]:i.getSelectedBlocks(),t=cp(e,function(e){return!!a.matchNode(e,n)});return-1!==lp(t,!0)}};e({JustifyLeft:p("alignleft"),JustifyCenter:p("aligncenter"),JustifyRight:p("alignright"),JustifyFull:p("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return f(e)},mceBlockQuote:function(){return f("blockquote")},Outdent:function(){var e;if(n.inline_styles){if((e=o.getParent(i.getStart(),o.isBlock))&&0<parseInt(e.style.paddingLeft,10))return!0;if((e=o.getParent(i.getEnd(),o.isBlock))&&0<parseInt(e.style.paddingLeft,10))return!0}return r("InsertUnorderedList")||r("InsertOrderedList")||!n.inline_styles&&!!o.getParent(i.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=o.getParent(i.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),e({Undo:function(){s.undoManager.undo()},Redo:function(){s.undoManager.redo()}}),u("FontName",function(){return yg(t=s).fold(function(){return vg(t).map(function(e){return hg.getFontFamily(t.getBody(),e)}).getOr("")},function(e){return hg.getFontFamily(t.getBody(),e)});var t},this),u("FontSize",function(){return yg(t=s).fold(function(){return vg(t).map(function(e){return hg.getFontSize(t.getBody(),e)}).getOr("")},function(e){return hg.getFontSize(t.getBody(),e)});var t},this)}var dp=Xt.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend"," "),mp=function(a){var u,s,c=this,l={},f=function(){return!1},d=function(){return!0};u=(a=a||{}).scope||c,s=a.toggleEvent||f;var r=function(e,t,n,r){var o,i,a;if(!1===t&&(t=f),t)for(t={func:t},r&&Xt.extend(t,r),a=(i=e.toLowerCase().split(" ")).length;a--;)e=i[a],(o=l[e])||(o=l[e]=[],s(e,!0)),n?o.unshift(t):o.push(t);return c},m=function(e,t){var n,r,o,i,a;if(e)for(n=(i=e.toLowerCase().split(" ")).length;n--;){if(e=i[n],r=l[e],!e){for(o in l)s(o,!1),delete l[o];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),l[e]=r);else r.length=0;r.length||(s(e,!1),delete l[e])}}else{for(e in l)s(e,!1);l={}}return c};c.fire=function(e,t){var n,r,o,i;if(e=e.toLowerCase(),(t=t||{}).type=e,t.target||(t.target=u),t.preventDefault||(t.preventDefault=function(){t.isDefaultPrevented=d},t.stopPropagation=function(){t.isPropagationStopped=d},t.stopImmediatePropagation=function(){t.isImmediatePropagationStopped=d},t.isDefaultPrevented=f,t.isPropagationStopped=f,t.isImmediatePropagationStopped=f),a.beforeFire&&a.beforeFire(t),n=l[e])for(r=0,o=n.length;r<o;r++){if((i=n[r]).once&&m(e,i.func),t.isImmediatePropagationStopped())return t.stopPropagation(),t;if(!1===i.func.call(u,t))return t.preventDefault(),t}return t},c.on=r,c.off=m,c.once=function(e,t,n){return r(e,t,n,{once:!0})},c.has=function(e){return e=e.toLowerCase(),!(!l[e]||0===l[e].length)}};mp.isNative=function(e){return!!dp[e.toLowerCase()]};var gp,pp=function(n){return n._eventDispatcher||(n._eventDispatcher=new mp({scope:n,toggleEvent:function(e,t){mp.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher},hp={fire:function(e,t,n){if(this.removed&&"remove"!==e&&"detach"!==e)return t;if(t=pp(this).fire(e,t,n),!1!==n&&this.parent)for(var r=this.parent();r&&!t.isPropagationStopped();)r.fire(e,t,!1),r=r.parent();return t},on:function(e,t,n){return pp(this).on(e,t,n)},off:function(e,t){return pp(this).off(e,t)},once:function(e,t){return pp(this).once(e,t)},hasEventListeners:function(e){return pp(this).has(e)}},vp=function(e,t){return e.fire("PreProcess",t)},yp=function(e,t){return e.fire("PostProcess",t)},bp=function(e){return e.fire("remove")},Cp=function(e){return e.fire("detach")},xp=function(e,t){return e.fire("SwitchMode",{mode:t})},wp=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},Np=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},Ep=function(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}},Sp=function(e,t,n){var r,o;Yi(e,t)&&!1===n?(o=t,qi(r=e)?r.dom().classList.remove(o):Wi(r,o),Xi(r)):n&&Ki(e,t)},Tp=function(e,t){Sp(ar.fromDom(e.getBody()),"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e.readonly=!0,e.getBody().contentEditable="false"):(e.readonly=!1,e.getBody().contentEditable="true",Ep(e,"StyleWithCSS",!1),Ep(e,"enableInlineTableEditing",!1),Ep(e,"enableObjectResizing",!1),e.focus(),e.nodeChanged())},kp=function(e){return e.readonly?"readonly":"design"},_p=Ei.DOM,Ap=function(e,t){return"selectionchange"===t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=_p.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()},Rp=function(e,t,n){var r;(r=e).hidden||r.readonly?!0===e.readonly&&n.preventDefault():e.fire(t,n)},Dp=function(i,a){var e,t;if(i.delegates||(i.delegates={}),!i.delegates[a]&&!i.removed)if(e=Ap(i,a),i.settings.event_root){if(gp||(gp={},i.editorManager.on("removeEditor",function(){var e;if(!i.editorManager.activeEditor&&gp){for(e in gp)i.dom.unbind(Ap(i,e));gp=null}})),gp[a])return;t=function(e){for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();(o===t||_p.isChildOf(t,o))&&Rp(n[r],a,e)}},gp[a]=t,_p.bind(e,a,t)}else t=function(e){Rp(i,a,e)},_p.bind(e,a,t),i.delegates[a]=t},Op={bindPendingEventDelegates:function(){var t=this;Xt.each(t._pendingNativeEvents,function(e){Dp(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(t?n.initialized?Dp(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(Ap(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e,t=this,n=t.getBody(),r=t.dom;if(t.delegates){for(e in t.delegates)t.dom.unbind(Ap(t,e),e,t.delegates[e]);delete t.delegates}!t.inline&&n&&r&&(n.onload=null,r.unbind(t.getWin()),r.unbind(t.getDoc())),r&&(r.unbind(n),r.unbind(t.getContainer()))}},Bp=Op=Xt.extend({},hp,Op),Pp=_r("sections","settings"),Ip=or.detect().deviceType.isTouch(),Lp=["lists","autolink","autosave"],Fp={theme:"mobile"},Mp=function(e){var t=k(e)?e.join(" "):e,n=W(S(t)?t.split(" "):[],Gn);return U(n,function(e){return 0<e.length})},zp=function(e,t){return e.sections().hasOwnProperty(t)},Up=function(e,t,n,r){var o,i=Mp(n.forced_plugins),a=Mp(r.plugins),u=e&&zp(t,"mobile")?U(a,d(F,Lp)):a,s=(o=u,[].concat(Mp(i)).concat(Mp(o)));return Xt.extend(r,{plugins:s.join(" ")})},jp=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,m,g,p,h=(o=["mobile"],i=yr(r,function(e,t){return F(o,t)}),Pp(i.t,i.f)),v=Xt.extend(t,n,h.settings(),(m=e,p=(g=h).settings().inline,m&&zp(g,"mobile")&&!p?(c="mobile",l=Fp,f=h.sections(),d=f.hasOwnProperty(c)?f[c]:{},Xt.extend({},l,d)):{}),{validate:!0,content_editable:h.settings().inline,external_plugins:(a=n,u=h.settings(),s=u.external_plugins?u.external_plugins:{},a&&a.external_plugins?Xt.extend({},a.external_plugins,s):s)});return Up(e,h,n,v)},Vp=function(e,t,n){return _.from(t.settings[n]).filter(e)},Hp=function(e,t,n,r){var o,i,a,u=t in e.settings?e.settings[t]:n;return"hash"===r?(a={},"string"==typeof(i=u)?z(0<i.indexOf("=")?i.split(/[;,](?![^=;,]*(?:[;,]|$))/):i.split(","),function(e){var t=e.split("=");1<t.length?a[Xt.trim(t[0])]=Xt.trim(t[1]):a[Xt.trim(t[0])]=Xt.trim(t)}):a=i,a):"string"===r?Vp(S,e,t).getOr(n):"number"===r?Vp(O,e,t).getOr(n):"boolean"===r?Vp(R,e,t).getOr(n):"object"===r?Vp(T,e,t).getOr(n):"array"===r?Vp(k,e,t).getOr(n):"string[]"===r?Vp((o=S,function(e){return k(e)&&J(e,o)}),e,t).getOr(n):"function"===r?Vp(D,e,t).getOr(n):u},qp=Xt.each,$p=Xt.explode,Wp={f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},Kp=Xt.makeMap("alt,ctrl,shift,meta,access");function Xp(i){var a={},r=[],u=function(e){var t,n,r={};for(n in qp($p(e,"+"),function(e){e in Kp?r[e]=!0:/^[0-9]{2,}$/.test(e)?r.keyCode=parseInt(e,10):(r.charCode=e.charCodeAt(0),r.keyCode=Wp[e]||e.toUpperCase().charCodeAt(0))}),t=[r.keyCode],Kp)r[n]?t.push(n):r[n]=!1;return r.id=t.join(","),r.access&&(r.alt=!0,fe.mac?r.ctrl=!0:r.shift=!0),r.meta&&(fe.mac?r.meta=!0:(r.ctrl=!0,r.meta=!1)),r},s=function(e,t,n,r){var o;return(o=Xt.map($p(e,">"),u))[o.length-1]=Xt.extend(o[o.length-1],{func:n,scope:r||i}),Xt.extend(o[0],{desc:i.translate(t),subpatterns:o.slice(1)})},o=function(e,t){return!!t&&t.ctrl===e.ctrlKey&&t.meta===e.metaKey&&t.alt===e.altKey&&t.shift===e.shiftKey&&!!(e.keyCode===t.keyCode||e.charCode&&e.charCode===t.charCode)&&(e.preventDefault(),!0)},c=function(e){return e.func?e.func.call(e.scope):null};i.on("keyup keypress keydown",function(t){var e,n;((n=t).altKey||n.ctrlKey||n.metaKey||"keydown"===(e=t).type&&112<=e.keyCode&&e.keyCode<=123)&&!t.isDefaultPrevented()&&(qp(a,function(e){if(o(t,e))return r=e.subpatterns.slice(0),"keydown"===t.type&&c(e),!0}),o(t,r[0])&&(1===r.length&&"keydown"===t.type&&c(r[0]),r.shift()))}),this.add=function(e,n,r,o){var t;return"string"==typeof(t=r)?r=function(){i.execCommand(t,!1,null)}:Xt.isArray(t)&&(r=function(){i.execCommand(t[0],t[1],t[2])}),qp($p(Xt.trim(e.toLowerCase())),function(e){var t=s(e,n,r,o);a[t.id]=t}),!0},this.remove=function(e){var t=s(e);return!!a[t.id]&&(delete a[t.id],!0)}}var Yp=function(e){var t=zr(e).dom();return e.dom()===t.activeElement},Gp=function(t){return(e=zr(t),n=e!==undefined?e.dom():V.document,_.from(n.activeElement).map(ar.fromDom)).filter(function(e){return t.dom().contains(e.dom())});var e,n},Jp=function(t,e){return(n=e,n.collapsed?_.from(Za(n.startContainer,n.startOffset)).map(ar.fromDom):_.none()).bind(function(e){return To(e)?_.some(e):!1===Mr(t,e)?_.some(t):_.none()});var n},Qp=function(t,e){Jp(ar.fromDom(t.getBody()),e).bind(function(e){return uc.firstPositionIn(e.dom())}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})},Zp=function(e){if(e.setActive)try{e.setActive()}catch(t){e.focus()}else e.focus()},eh=function(e){var t,n=e.getBody();return n&&(t=ar.fromDom(n),Yp(t)||Gp(t).isSome())},th=function(e){return e.inline?eh(e):(t=e).iframeElement&&Yp(ar.fromDom(t.iframeElement));var t},nh=function(e){return e.editorManager.setActive(e)},rh=function(e,t){e.removed||(t?nh(e):function(t){var e=t.selection,n=t.settings.content_editable,r=t.getBody(),o=e.getRng();t.quirks.refreshContentEditable();var i,a,u=(i=t,a=e.getNode(),i.dom.getParent(a,function(e){return"true"===i.dom.getContentEditable(e)}));if(t.$.contains(r,u))return Zp(u),Qp(t,o),nh(t);t.bookmark!==undefined&&!1===th(t)&&rp(t).each(function(e){t.selection.setRng(e),o=e}),n||(fe.opera||Zp(r),t.getWin().focus()),(fe.gecko||n)&&(Zp(r),Qp(t,o)),nh(t)}(e))},oh=th,ih=function(e,t){return t.dom()[e]},ah=function(e,t){return parseInt(Tr(t,e),10)},uh=d(ih,"clientWidth"),sh=d(ih,"clientHeight"),ch=d(ah,"margin-top"),lh=d(ah,"margin-left"),fh=function(e,t,n){var r,o,i,a,u,s,c,l,f,d,m,g=ar.fromDom(e.getBody()),p=e.inline?g:(r=g,ar.fromDom(r.dom().ownerDocument.documentElement)),h=(o=e.inline,a=t,u=n,s=(i=p).dom().getBoundingClientRect(),{x:a-(o?s.left+i.dom().clientLeft+lh(i):0),y:u-(o?s.top+i.dom().clientTop+ch(i):0)});return l=h.x,f=h.y,d=uh(c=p),m=sh(c),0<=l&&0<=f&&l<=d&&f<=m},dh=function(e){var t,n=e.inline?e.getBody():e.getContentAreaContainer();return(t=n,_.from(t).map(ar.fromDom)).map(function(e){return Mr(zr(e),e)}).getOr(!1)};function mh(n){var t,o=[],i=function(){var e,t=n.theme;return t&&t.getNotificationManagerImpl?t.getNotificationManagerImpl():{open:e=function(){throw new Error("Theme did not provide a NotificationManager implementation.")},close:e,reposition:e,getArgs:e}},a=function(){0<o.length&&i().reposition(o)},u=function(t){Y(o,function(e){return e===t}).each(function(e){o.splice(e,1)})},r=function(r){if(!n.removed&&dh(n))return X(o,function(e){return t=i().getArgs(e),n=r,!(t.type!==n.type||t.text!==n.text||t.progressBar||t.timeout||n.progressBar||n.timeout);var t,n}).getOrThunk(function(){n.editorManager.setActive(n);var e,t=i().open(r,function(){u(t),a()});return e=t,o.push(e),a(),t})};return(t=n).on("SkinLoaded",function(){var e=t.settings.service_message;e&&r({text:e,type:"warning",timeout:0,icon:""})}),t.on("ResizeEditor ResizeWindow",function(){he.requestAnimationFrame(a)}),t.on("remove",function(){z(o.slice(),function(e){i().close(e)})}),{open:r,close:function(){_.from(o[0]).each(function(e){i().close(e),u(e),a()})},getNotifications:function(){return o}}}function gh(r){var o=[],i=function(){var e,t=r.theme;return t&&t.getWindowManagerImpl?t.getWindowManagerImpl():{open:e=function(){throw new Error("Theme did not provide a WindowManager implementation.")},alert:e,confirm:e,close:e,getParams:e,setParams:e}},a=function(e,t){return function(){return t?t.apply(e,arguments):undefined}},u=function(e){var t;o.push(e),t=e,r.fire("OpenWindow",{win:t})},s=function(n){Y(o,function(e){return e===n}).each(function(e){var t;o.splice(e,1),t=n,r.fire("CloseWindow",{win:t}),0===o.length&&r.focus()})},e=function(){return _.from(o[o.length-1])};return r.on("remove",function(){z(o.slice(0),function(e){i().close(e)})}),{windows:o,open:function(e,t){r.editorManager.setActive(r),tp(r);var n=i().open(e,t,s);return u(n),n},alert:function(e,t,n){var r=i().alert(e,a(n||this,t),s);u(r)},confirm:function(e,t,n){var r=i().confirm(e,a(n||this,t),s);u(r)},close:function(){e().each(function(e){i().close(e),s(e)})},getParams:function(){return e().map(i().getParams).getOr(null)},setParams:function(t){e().each(function(e){i().setParams(e,t)})},getWindows:function(){return o}}}var ph={},hh="en",vh={setCode:function(e){e&&(hh=e,this.rtl=!!this.data[e]&&"rtl"===this.data[e]._dir)},getCode:function(){return hh},rtl:!1,add:function(e,t){var n=ph[e];for(var r in n||(ph[e]=n={}),t)n[r]=t[r];this.setCode(e)},translate:function(e){var t=ph[hh]||{},n=function(e){return Xt.is(e,"function")?Object.prototype.toString.call(e):r(e)?"":""+e},r=function(e){return""===e||null===e||Xt.is(e,"undefined")},o=function(e){return e=n(e),Xt.hasOwn(t,e)?n(t[e]):e};if(r(e))return"";if(Xt.is(e,"object")&&Xt.hasOwn(e,"raw"))return n(e.raw);if(Xt.is(e,"array")){var i=e.slice(1);e=o(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return Xt.hasOwn(i,t)?n(i[t]):e})}return o(e).replace(/{context:\w+}$/,"")},data:ph},yh=Oi.PluginManager,bh=function(e,t){var n=function(e,t){for(var n in yh.urls)if(yh.urls[n]+"/plugin"+t+".js"===e)return n;return null}(t,e.suffix);return n?vh.translate(["Failed to load plugin: {0} from url {1}",n,t]):vh.translate(["Failed to load plugin url: {0}",t])},Ch=function(e,t){e.notificationManager.open({type:"error",text:t})},xh=function(e,t){e._skinLoaded?Ch(e,t):e.on("SkinLoaded",function(){Ch(e,t)})},wh=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=V.window.console;r&&(r.error?r.error.apply(r,arguments):r.log.apply(r,arguments))},Nh={pluginLoadError:function(e,t){xh(e,bh(e,t))},pluginInitError:function(e,t,n){var r=vh.translate(["Failed to initialize plugin: {0}",t]);wh(r,n),xh(e,r)},uploadError:function(e,t){xh(e,vh.translate(["Failed to upload image: {0}",t]))},displayError:xh,initError:wh},Eh=Oi.PluginManager,Sh=Oi.ThemeManager;function Th(){return new(oe.getOrDie("XMLHttpRequest"))}function kh(u,s){var r={},n=function(e,r,o,t){var i,n;(i=Th()).open("POST",s.url),i.withCredentials=s.credentials,i.upload.onprogress=function(e){t(e.loaded/e.total*100)},i.onerror=function(){o("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var e,t,n;i.status<200||300<=i.status?o("HTTP Error: "+i.status):(e=JSON.parse(i.responseText))&&"string"==typeof e.location?r((t=s.basePath,n=e.location,t?t.replace(/\/$/,"")+"/"+n.replace(/^\//,""):n)):o("Invalid JSON: "+i.responseText)},(n=new V.FormData).append("file",e.blob(),e.filename()),i.send(n)},c=function(e,t){return{url:t,blobInfo:e,status:!0}},l=function(e,t){return{url:"",blobInfo:e,status:!1,error:t}},f=function(e,t){Xt.each(r[e],function(e){e(t)}),delete r[e]},o=function(e,n){return e=Xt.grep(e,function(e){return!u.isUploaded(e.blobUri())}),de.all(Xt.map(e,function(e){return u.isPending(e.blobUri())?(t=e.blobUri(),new de(function(e){r[t]=r[t]||[],r[t].push(e)})):(o=e,i=s.handler,a=n,u.markPending(o.blobUri()),new de(function(t){var n;try{var r=function(){n&&n.close()};i(o,function(e){r(),u.markUploaded(o.blobUri(),e),f(o.blobUri(),c(o,e)),t(c(o,e))},function(e){r(),u.removeFailed(o.blobUri()),f(o.blobUri(),l(o,e)),t(l(o,e))},function(e){e<0||100<e||(n||(n=a()),n.progressBar.value(e))})}catch(e){t(l(o,e.message))}}));var o,i,a,t}))};return!1===D(s.handler)&&(s.handler=n),{upload:function(e,t){return s.url||s.handler!==n?o(e,t):new de(function(e){e([])})}}}var _h=function(e){return oe.getOrDie("atob")(e)},Ah=function(e){var t,n,r=decodeURIComponent(e).split(",");return(n=/data:([^;]+)/.exec(r[0]))&&(t=n[1]),{type:t,data:r[1]}},Rh=function(a){return new de(function(e){var t,n,r,o,i=Ah(a);try{t=_h(i.data)}catch(oE){return void e(new V.Blob([]))}for(o=t.length,n=new(oe.getOrDie("Uint8Array"))(o),r=0;r<n.length;r++)n[r]=t.charCodeAt(r);e(new V.Blob([n],{type:i.type}))})},Dh=function(e){return 0===e.indexOf("blob:")?(i=e,new de(function(e,t){var n=function(){t("Cannot convert "+i+" to Blob. Resource might not exist or is inaccessible.")};try{var r=Th();r.open("GET",i,!0),r.responseType="blob",r.onload=function(){200===this.status?e(this.response):n()},r.onerror=n,r.send()}catch(o){n()}})):0===e.indexOf("data:")?Rh(e):null;var i},Oh=function(n){return new de(function(e){var t=new(oe.getOrDie("FileReader"));t.onloadend=function(){e(t.result)},t.readAsDataURL(n)})},Bh=Ah,Ph=0,Ih=function(e){return(e||"blobid")+Ph++},Lh=function(n,r,o,t){var i,a;0!==r.src.indexOf("blob:")?(i=Bh(r.src).data,(a=n.findFirst(function(e){return e.base64()===i}))?o({image:r,blobInfo:a}):Dh(r.src).then(function(e){a=n.create(Ih(),e,i),n.add(a),o({image:r,blobInfo:a})},function(e){t(e)})):(a=n.getByUri(r.src))?o({image:r,blobInfo:a}):Dh(r.src).then(function(t){Oh(t).then(function(e){i=Bh(e).data,a=n.create(Ih(),t,i),n.add(a),o({image:r,blobInfo:a})})},function(e){t(e)})},Fh=function(e){return e?te(e.getElementsByTagName("img")):[]},Mh=0,zh={uuid:function(e){return e+Mh+++(t=function(){return Math.round(4294967295*Math.random()).toString(36)},"s"+(new Date).getTime().toString(36)+t()+t()+t());var t}};function Uh(u){var n,o,t,e,i,r,a,s,c,l=(n=[],o=function(e){var t,n,r;if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");return t=e.id||zh.uuid("blobid"),n=e.name||t,{id:q(t),name:q(n),filename:q(n+"."+(r=e.blob.type,{"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"}[r.toLowerCase()]||"dat")),blob:q(e.blob),base64:q(e.base64),blobUri:q(e.blobUri||ae.createObjectURL(e.blob)),uri:q(e.uri)}},{create:function(e,t,n,r){if(S(e))return o({id:e,name:r,blob:t,base64:n});if(T(e))return o(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t=function(t){return e(function(e){return e.id()===t})},getByUri:function(t){return e(function(e){return e.blobUri()===t})},findFirst:e=function(e){return U(n,e)[0]},removeByUri:function(t){n=U(n,function(e){return e.blobUri()!==t||(ae.revokeObjectURL(e.blobUri()),!1)})},destroy:function(){z(n,function(e){ae.revokeObjectURL(e.blobUri())}),n=[]}}),f=(a={},s=function(e,t){return{status:e,resultUri:t}},{hasBlobUri:c=function(e){return e in a},getResultUri:function(e){var t=a[e];return t?t.resultUri:null},isPending:function(e){return!!c(e)&&1===a[e].status},isUploaded:function(e){return!!c(e)&&2===a[e].status},markPending:function(e){a[e]=s(1,null)},markUploaded:function(e,t){a[e]=s(2,t)},removeFailed:function(e){delete a[e]},destroy:function(){a={}}}),d=[],m=function(t){return function(e){return u.selection?t(e):[]}},g=function(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e},p=function(e,t,n){return e=g(e,'src="'+t+'"','src="'+n+'"'),e=g(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')},h=function(t,n){z(u.undoManager.data,function(e){"fragmented"===e.type?e.fragments=W(e.fragments,function(e){return p(e,t,n)}):e.content=p(e.content,t,n)})},v=function(){return u.notificationManager.open({text:u.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})},y=function(e,t){l.removeByUri(e.src),h(e.src,t),u.$(e).attr({src:Ol(u)?t+"?"+(new Date).getTime():t,"data-mce-src":u.convertURL(t,"src")})},b=function(n){return i||(i=kh(f,{url:Pl(u),basePath:Il(u),credentials:Ll(u),handler:Fl(u)})),w().then(m(function(r){var e;return e=W(r,function(e){return e.blobInfo}),i.upload(e,v).then(m(function(e){var t=W(e,function(e,t){var n=r[t].image;return e.status&&Bl(u)?y(n,e.url):e.error&&Nh.uploadError(u,e.error),{element:n,status:e.status}});return n&&n(t),t}))}))},C=function(e){if(Dl(u))return b(e)},x=function(t){return!1!==J(d,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||Rl(u)(t))},w=function(){var o,i,a;return r||(o=f,i=l,a={},r={findAll:function(e,n){var t;n||(n=q(!0)),t=U(Fh(e),function(e){var t=e.src;return!!fe.fileApi&&!e.hasAttribute("data-mce-bogus")&&!e.hasAttribute("data-mce-placeholder")&&!(!t||t===fe.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e))});var r=W(t,function(n){if(a[n.src])return new de(function(t){a[n.src].then(function(e){if("string"==typeof e)return e;t({image:n,blobInfo:e.blobInfo})})});var e=new de(function(e,t){Lh(i,n,e,t)}).then(function(e){return delete a[e.image.src],e})["catch"](function(e){return delete a[n.src],e});return a[n.src]=e});return de.all(r)}}),r.findAll(u.getBody(),x).then(m(function(e){return e=U(e,function(e){return"string"!=typeof e||(Nh.displayError(u,e),!1)}),z(e,function(e){h(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))},N=function(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=f.getResultUri(n);if(t)return'src="'+t+'"';var r=l.getByUri(n);return r||(r=j(u.editorManager.get(),function(e,t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null)),r?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})};return u.on("setContent",function(){Dl(u)?C():w()}),u.on("RawSaveContent",function(e){e.content=N(e.content)}),u.on("getContent",function(e){e.source_view||"raw"===e.format||(e.content=N(e.content))}),u.on("PostRender",function(){u.parser.addNodeFilter("img",function(e){z(e,function(e){var t=e.attr("src");if(!l.getByUri(t)){var n=f.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:l,addFilter:function(e){d.push(e)},uploadImages:b,uploadImagesAuto:C,scanForImages:w,destroy:function(){l.destroy(),f.destroy(),r=i=null}}}var jh=function(e,t){return e.hasOwnProperty(t.nodeName)},Vh=function(e,t){if(Uo.isText(t)){if(0===t.nodeValue.length)return!0;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||jh(e,t.nextSibling)))return!0}return!1},Hh=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.dom,g=e.selection,p=e.schema,h=p.getBlockElements(),v=g.getStart(),y=e.getBody();if(f=d.forced_root_block,v&&Uo.isElement(v)&&f&&(l=y.nodeName.toLowerCase(),p.isValidChild(l,f.toLowerCase())&&(b=h,C=y,x=v,!M(of(ar.fromDom(x),ar.fromDom(C)),function(e){return jh(b,e.dom())})))){var b,C,x,w,N;for(n=(t=g.getRng()).startContainer,r=t.startOffset,o=t.endContainer,i=t.endOffset,c=oh(e),v=y.firstChild;v;)if(w=h,N=v,Uo.isText(N)||Uo.isElement(N)&&!jh(w,N)&&!vc(N)){if(Vh(h,v)){v=(u=v).nextSibling,m.remove(u);continue}a||(a=m.create(f,e.settings.forced_root_block_attrs),v.parentNode.insertBefore(a,v),s=!0),v=(u=v).nextSibling,a.appendChild(u)}else a=null,v=v.nextSibling;s&&c&&(t.setStart(n,r),t.setEnd(o,i),g.setRng(t),e.nodeChanged())}},qh=function(e){e.settings.forced_root_block&&e.on("NodeChange",d(Hh,e))},$h=function(t){return Xr(t).fold(q([t]),function(e){return[t].concat($h(e))})},Wh=function(t){return Yr(t).fold(q([t]),function(e){return"br"===lr(e)?Vr(e).map(function(e){return[t].concat(Wh(e))}).getOr([]):[t].concat(Wh(e))})},Kh=function(o,e){return nu((i=e,a=i.startContainer,u=i.startOffset,Uo.isText(a)?0===u?_.some(ar.fromDom(a)):_.none():_.from(a.childNodes[u]).map(ar.fromDom)),(t=e,n=t.endContainer,r=t.endOffset,Uo.isText(n)?r===n.data.length?_.some(ar.fromDom(n)):_.none():_.from(n.childNodes[r-1]).map(ar.fromDom)),function(e,t){var n=X($h(o),d(Fr,e)),r=X(Wh(o),d(Fr,t));return n.isSome()&&r.isSome()}).getOr(!1);var t,n,r,i,a,u},Xh=function(e,t,n,r){var o=n,i=new mo(n,o),a=e.schema.getNonEmptyElements();do{if(3===n.nodeType&&0!==Xt.trim(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(fe.ie&&fe.ie<11&&e.isBlock(n)&&e.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))},Yh=function(e){var t=e.selection.getSel();return t&&0<t.rangeCount};function Gh(i){var r,o=[];"onselectionchange"in i.getDoc()||i.on("NodeChange Click MouseUp KeyUp Focus",function(e){var t,n;n={startContainer:(t=i.selection.getRng()).startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset},"nodechange"!==e.type&&Cg(n,r)||i.fire("SelectionChange"),r=n}),i.on("contextmenu",function(){i.fire("SelectionChange")}),i.on("SelectionChange",function(){var e=i.selection.getStart(!0);!e||!fe.range&&i.selection.isCollapsed()||Yh(i)&&!function(e){var t,n;if((n=i.$(e).parentsUntil(i.getBody()).add(e)).length===o.length){for(t=n.length;0<=t&&n[t]===o[t];t--);if(-1===t)return o=n,!0}return o=n,!1}(e)&&i.dom.isChildOf(e,i.getBody())&&i.nodeChanged({selectionChange:!0})}),i.on("MouseUp",function(e){!e.isDefaultPrevented()&&Yh(i)&&("IMG"===i.selection.getNode().nodeName?he.setEditorTimeout(i,function(){i.nodeChanged()}):i.nodeChanged())}),this.nodeChanged=function(e){var t,n,r,o=i.selection;i.initialized&&o&&!i.settings.disable_nodechange&&!i.readonly&&(r=i.getBody(),(t=o.getStart(!0)||r).ownerDocument===i.getDoc()&&i.dom.isChildOf(t,r)||(t=r),n=[],i.dom.getParent(t,function(e){if(e===r)return!0;n.push(e)}),(e=e||{}).element=t,e.parents=n,i.fire("NodeChange",e))}}var Jh,Qh,Zh=function(e){var t,n,r,o;return o=e.getBoundingClientRect(),n=(t=e.ownerDocument).documentElement,r=t.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}},ev=function(e,t){return n=(u=e).inline?Zh(u.getBody()):{left:0,top:0},a=(i=e).getBody(),r=i.inline?{left:a.scrollLeft,top:a.scrollTop}:{left:0,top:0},{pageX:(o=function(e,t){if(t.target.ownerDocument!==e.getDoc()){var n=Zh(e.getContentAreaContainer()),r=(i=(o=e).getBody(),a=o.getDoc().documentElement,u={left:i.scrollLeft,top:i.scrollTop},s={left:i.scrollLeft||a.scrollLeft,top:i.scrollTop||a.scrollTop},o.inline?u:s);return{left:t.pageX-n.left+r.left,top:t.pageY-n.top+r.top}}var o,i,a,u,s;return{left:t.pageX,top:t.pageY}}(e,t)).left-n.left+r.left,pageY:o.top-n.top+r.top};var n,r,o,i,a,u},tv=Uo.isContentEditableFalse,nv=Uo.isContentEditableTrue,rv=function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},ov=function(u,s){return function(e){if(0===e.button){var t=X(s.dom.getParents(e.target),iu(tv,nv)).getOr(null);if(i=s.getBody(),tv(a=t)&&a!==i){var n=s.dom.getPos(t),r=s.getBody(),o=s.getDoc().documentElement;u.element=t,u.screenX=e.screenX,u.screenY=e.screenY,u.maxX=(s.inline?r.scrollWidth:o.offsetWidth)-2,u.maxY=(s.inline?r.scrollHeight:o.offsetHeight)-2,u.relX=e.pageX-n.x,u.relY=e.pageY-n.y,u.width=t.offsetWidth,u.height=t.offsetHeight,u.ghost=function(e,t,n,r){var o=t.cloneNode(!0);e.dom.setStyles(o,{width:n,height:r}),e.dom.setAttrib(o,"data-mce-selected",null);var i=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(s,t,u.width,u.height)}}var i,a}},iv=function(l,f){return function(e){if(l.dragging&&(s=(i=f).selection,c=s.getSel().getRangeAt(0).startContainer,a=3===c.nodeType?c.parentNode:c,u=l.element,a!==u&&!i.dom.isChildOf(a,u)&&!tv(a))){var t=(r=l.element,(o=r.cloneNode(!0)).removeAttribute("data-mce-selected"),o),n=f.fire("drop",{targetClone:t,clientX:e.clientX,clientY:e.clientY});n.isDefaultPrevented()||(t=n.targetClone,f.undoManager.transact(function(){rv(l.element),f.insertContent(f.dom.getOuterHTML(t)),f._selectionOverrides.hideFakeCaret()}))}var r,o,i,a,u,s,c;av(l)}},av=function(e){e.dragging=!1,e.element=null,rv(e.ghost)},uv=function(e){var t,n,r,o,i,a,p,h,v,u,s,c={};t=Ei.DOM,a=V.document,n=ov(c,e),p=c,h=e,v=he.throttle(function(e,t){h._selectionOverrides.hideFakeCaret(),h.selection.placeCaretAt(e,t)},0),r=function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m=Math.max(Math.abs(e.screenX-p.screenX),Math.abs(e.screenY-p.screenY));if(p.element&&!p.dragging&&10<m){if(h.fire("dragstart",{target:p.element}).isDefaultPrevented())return;p.dragging=!0,h.focus()}if(p.dragging){var g=(f=p,{pageX:(d=ev(h,e)).pageX-f.relX,pageY:d.pageY+5});c=p.ghost,l=h.getBody(),c.parentNode!==l&&l.appendChild(c),t=p.ghost,n=g,r=p.width,o=p.height,i=p.maxX,a=p.maxY,s=u=0,t.style.left=n.pageX+"px",t.style.top=n.pageY+"px",n.pageX+r>i&&(u=n.pageX+r-i),n.pageY+o>a&&(s=n.pageY+o-a),t.style.width=r-u+"px",t.style.height=o-s+"px",v(e.clientX,e.clientY)}},o=iv(c,e),u=c,i=function(){u.dragging&&s.fire("dragend"),av(u)},(s=e).on("mousedown",n),e.on("mousemove",r),e.on("mouseup",o),t.bind(a,"mousemove",r),t.bind(a,"mouseup",i),e.on("remove",function(){t.unbind(a,"mousemove",r),t.unbind(a,"mouseup",i)})},sv=function(e){var n;uv(e),(n=e).on("drop",function(e){var t="undefined"!=typeof e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;(tv(t)||tv(n.dom.getContentEditableParent(t)))&&e.preventDefault()})},cv=function(e){return j(e,function(e,t){return e.concat(function(t){var e=function(e){return W(e,function(e){return(e=Wa(e)).node=t,e})};if(Uo.isElement(t))return e(t.getClientRects());if(Uo.isText(t)){var n=t.ownerDocument.createRange();return n.setStart(t,0),n.setEnd(t,t.data.length),e(n.getClientRects())}}(t))},[])};(Qh=Jh||(Jh={}))[Qh.Up=-1]="Up",Qh[Qh.Down=1]="Down";var lv=function(o,i,a,e,u,t){var n,s,c=0,l=[],r=function(e){var t,n,r;for(r=cv([e]),-1===o&&(r=r.reverse()),t=0;t<r.length;t++)if(n=r[t],!a(n,s)){if(0<l.length&&i(n,Ht.last(l))&&c++,n.line=c,u(n))return!0;l.push(n)}};return(s=Ht.last(t.getClientRects()))&&(r(n=t.getNode()),function(e,t,n,r){for(;r=Ns(r,e,qa,t);)if(n(r))return}(o,e,r,n)),l},fv=d(lv,Jh.Up,Ya,Ga),dv=d(lv,Jh.Down,Ga,Ya),mv=function(n){return function(e){return t=n,e.line>t;var t}},gv=function(n){return function(e){return t=n,e.line===t;var t}},pv=Uo.isContentEditableFalse,hv=Ns,vv=function(e,t){return Math.abs(e.left-t)},yv=function(e,t){return Math.abs(e.right-t)},bv=function(e,t){return e>=t.left&&e<=t.right},Cv=function(e,o){return Ht.reduce(e,function(e,t){var n,r;return n=Math.min(vv(e,o),yv(e,o)),r=Math.min(vv(t,o),yv(t,o)),bv(o,t)?t:bv(o,e)?e:r===n&&pv(t.node)?t:r<n?t:e})},xv=function(e,t,n,r){for(;r=hv(r,e,qa,t);)if(n(r))return},wv=function(e,t,n){var r,o,i,a,u,s,c,l=cv(U(te(e.getElementsByTagName("*")),ms)),f=U(l,function(e){return n>=e.top&&n<=e.bottom});return(r=Cv(f,t))&&(r=Cv((a=e,c=function(t,e){var n;return n=U(cv([e]),function(e){return!t(e,u)}),s=s.concat(n),0===n.length},(s=[]).push(u=r),xv(Jh.Up,a,d(c,Ya),u.node),xv(Jh.Down,a,d(c,Ga),u.node),s),t))&&ms(r.node)?(i=t,{node:(o=r).node,before:vv(o,i)<yv(o,i)}):null},Nv=function(t,n,e){if(e.collapsed)return!1;if(fe.ie&&fe.ie<=11&&e.startOffset===e.endOffset-1&&e.startContainer===e.endContainer){var r=e.startContainer.childNodes[e.startOffset];if(Uo.isElement(r))return M(r.getClientRects(),function(e){return Ja(e,t,n)})}return M(e.getClientRects(),function(e){return Ja(e,t,n)})},Ev=function(t){var e=ji(function(){if(!t.removed&&t.selection.getRng().collapsed){var e=sg(t,t.selection.getRng(),!1);t.selection.setRng(e)}},0);t.on("focus",function(){e.throttle()}),t.on("blur",function(){e.cancel()})},Sv={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,END:35,HOME:36,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(e){return fe.mac?e.metaKey:e.ctrlKey&&!e.altKey}},Tv=Uo.isContentEditableTrue,kv=Uo.isContentEditableFalse,_v=function(e,t){for(var n=e.getBody();t&&t!==n;){if(Tv(t)||kv(t))return t;t=t.parentNode}return null},Av=function(g){var p,e,t,a=g.getBody(),o=fs(g.getBody(),function(e){return g.dom.isBlock(e)},function(){return oh(g)}),h="sel-"+g.dom.uniqueId(),u=function(e){e&&g.selection.setRng(e)},s=function(){return g.selection.getRng()},v=function(e,t,n,r){return void 0===r&&(r=!0),g.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&g.selection.scrollIntoView(t,-1===e),o.show(n,t))},y=function(e,t){return t=Ds(e,a,t),-1===e?ku.fromRangeStart(t):ku.fromRangeEnd(t)},n=function(e){return Ta(e)||Da(e)||Oa(e)},b=function(e){return n(e.startContainer)||n(e.endContainer)},c=function(e,t){var n,r,o,i,a,u,s,c,l,f,d=g.$,m=g.dom;if(!e)return null;if(e.collapsed){if(!b(e))if(!1===t){if(c=y(-1,e),ms(c.getNode(!0)))return v(-1,c.getNode(!0),!1,!1);if(ms(c.getNode()))return v(-1,c.getNode(),!c.isAtEnd(),!1)}else{if(c=y(1,e),ms(c.getNode()))return v(1,c.getNode(),!c.isAtEnd(),!1);if(ms(c.getNode(!0)))return v(1,c.getNode(!0),!1,!1)}return null}return i=e.startContainer,a=e.startOffset,u=e.endOffset,3===i.nodeType&&0===a&&kv(i.parentNode)&&(i=i.parentNode,a=m.nodeIndex(i),i=i.parentNode),1!==i.nodeType?null:(u===a+1&&i===e.endContainer&&(n=i.childNodes[a]),kv(n)?(l=f=n.cloneNode(!0),(s=g.fire("ObjectSelected",{target:n,targetClone:l})).isDefaultPrevented()?null:(r=ra(ar.fromDom(g.getBody()),"#"+h).fold(function(){return d([])},function(e){return d([e.dom()])}),l=s.targetClone,0===r.length&&(r=d('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",h)).appendTo(g.getBody()),e=g.dom.createRng(),l===f&&fe.ie?(r.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(l),e.setStartAfter(r[0].firstChild.firstChild),e.setEndAfter(l)):(r.empty().append("\xa0").append(l).append("\xa0"),e.setStart(r[0].firstChild,1),e.setEnd(r[0].lastChild,0)),r.css({top:m.getPos(n,g.getBody()).y}),r[0].focus(),(o=g.selection.getSel()).removeAllRanges(),o.addRange(e),z(Ji(ar.fromDom(g.getBody()),"*[data-mce-selected]"),function(e){Er(e,"data-mce-selected")}),n.setAttribute("data-mce-selected","1"),p=n,C(),e)):null)},l=function(){p&&(p.removeAttribute("data-mce-selected"),ra(ar.fromDom(g.getBody()),"#"+h).each(zi),p=null),ra(ar.fromDom(g.getBody()),"#"+h).each(zi),p=null},C=function(){o.hide()};return fe.ceFalse&&(function(){g.on("mouseup",function(e){var t=s();t.collapsed&&fh(g,e.clientX,e.clientY)&&u(ug(g,t,!1))}),g.on("click",function(e){var t;(t=_v(g,e.target))&&(kv(t)&&(e.preventDefault(),g.focus()),Tv(t)&&g.dom.isChildOf(t,g.selection.getNode())&&l())}),g.on("blur NewBlock",function(){l()}),g.on("ResizeWindow FullscreenStateChanged",function(){return o.reposition()});var n,r,i=function(e,t){var n,r,o=g.dom.getParent(e,g.dom.isBlock),i=g.dom.getParent(t,g.dom.isBlock);return!(!o||!g.dom.isChildOf(o,i)||!1!==kv(_v(g,o)))||o&&(n=o,r=i,!(g.dom.getParent(n,g.dom.isBlock)===g.dom.getParent(r,g.dom.isBlock)))&&function(e){var t=Gs(e);if(!e.firstChild)return!1;var n=ku.before(e.firstChild),r=t.next(n);return r&&!If(r)&&!Lf(r)}(o)};r=!1,(n=g).on("touchstart",function(){r=!1}),n.on("touchmove",function(){r=!0}),n.on("touchend",function(e){var t=_v(n,e.target);kv(t)&&(r||(e.preventDefault(),c(ag(n,t))))}),g.on("mousedown",function(e){var t,n=e.target;if((n===a||"HTML"===n.nodeName||g.dom.isChildOf(n,a))&&!1!==fh(g,e.clientX,e.clientY))if(t=_v(g,n))kv(t)?(e.preventDefault(),c(ag(g,t))):(l(),Tv(t)&&e.shiftKey||Nv(e.clientX,e.clientY,g.selection.getRng())||(C(),g.selection.placeCaretAt(e.clientX,e.clientY)));else if(!1===ms(n)){l(),C();var r=wv(a,e.clientX,e.clientY);if(r&&!i(e.target,r.node)){e.preventDefault();var o=v(1,r.node,r.before,!1);g.getBody().focus(),u(o)}}}),g.on("keypress",function(e){Sv.modifierPressed(e)||(e.keyCode,kv(g.selection.getNode())&&e.preventDefault())}),g.on("getSelectionRange",function(e){var t=e.range;if(p){if(!p.parentNode)return void(p=null);(t=t.cloneRange()).selectNode(p),e.range=t}}),g.on("setSelectionRange",function(e){var t;(t=c(e.range,e.forward))&&(e.range=t)}),g.on("AfterSetSelectionRange",function(e){var t,n=e.range;b(n)||"mcepastebin"===n.startContainer.parentNode.id||C(),t=n.startContainer.parentNode,g.dom.hasClass(t,"mce-offscreen-selection")||l()}),g.on("copy",function(e){var t,n=e.clipboardData;if(!e.isDefaultPrevented()&&e.clipboardData&&!fe.ie){var r=(t=g.dom.get(h))?t.getElementsByTagName("*")[0]:t;r&&(e.preventDefault(),n.clearData(),n.setData("text/html",r.outerHTML),n.setData("text/plain",r.outerText))}}),sv(g),Ev(g)}(),e=g.contentStyles,t=".mce-content-body",e.push(o.getCss()),e.push(t+" .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}"+t+" *[contentEditable=false] {cursor: default;}"+t+" *[contentEditable=true] {cursor: text;}")),{showCaret:v,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Ba(e),u(s()),g.selection.scrollIntoView(e[0]))},hideFakeCaret:C,destroy:function(){o.destroy(),p=null}}},Rv=function(e,t,n){var r,o,i,a,u=1;for(a=e.getShortEndedElements(),(i=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex=r=n;o=i.exec(t);){if(r=i.lastIndex,"/"===o[1])u--;else if(!o[1]){if(o[2]in a)continue;u++}if(0===u)break}return r},Dv=function(e,t){var n=e.exec(t);if(n){var r=n[1],o=n[2];return"string"==typeof r&&"data-mce-bogus"===r.toLowerCase()?o:null}return null};function Ov(z,U){void 0===U&&(U=fi());var e=function(){};!1!==(z=z||{}).fix_self_closing&&(z.fix_self_closing=!0);var j=z.comment?z.comment:e,V=z.cdata?z.cdata:e,H=z.text?z.text:e,q=z.start?z.start:e,$=z.end?z.end:e,W=z.pi?z.pi:e,K=z.doctype?z.doctype:e;return{parse:function(e){var t,n,r,d,o,i,a,m,u,s,g,c,p,l,f,h,v,y,b,C,x,w,N,E,S,T,k,_,A,R=0,D=[],O=0,B=ei.decode,P=Xt.makeMap("src,href,data,background,formaction,poster,xlink:href"),I=/((java|vb)script|mhtml):/i,L=function(e){var t,n;for(t=D.length;t--&&D[t].name!==e;);if(0<=t){for(n=D.length-1;t<=n;n--)(e=D[n]).valid&&$(e.name);D.length=t}},F=function(e,t,n,r,o){var i,a,u,s,c;if(n=(t=t.toLowerCase())in g?t:B(n||r||o||""),p&&!m&&0==(0===(u=t).indexOf("data-")||0===u.indexOf("aria-"))){if(!(i=y[t])&&b){for(a=b.length;a--&&!(i=b[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if(P[t]&&!z.allow_script_urls){var l=n.replace(/[\s\u0000-\u001F]+/g,"");try{l=decodeURIComponent(l)}catch(f){l=unescape(l)}if(I.test(l))return;if(c=l,!(s=z).allow_html_data_urls&&(/^data:image\//i.test(c)?!1===s.allow_svg_data_urls&&/^data:image\/svg\+xml/i.test(c):/^data:/i.test(c)))return}m&&(t in P||0===t.indexOf("on"))||(d.map[t]=n,d.push({name:t,value:n}))};for(S=new RegExp("<(?:(?:!--([\\w\\W]*?)--!?>)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),T=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,s=U.getShortEndedElements(),E=z.self_closing_elements||U.getSelfClosingElements(),g=U.getBoolAttrs(),p=z.validate,u=z.remove_internals,A=z.fix_self_closing,k=U.getSpecialElements(),N=e+">";t=S.exec(N);){if(R<t.index&&H(B(e.substr(R,t.index-R))),n=t[6])":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),L(n);else if(n=t[7]){if(t.index+t[0].length>e.length){H(B(e.substr(t.index))),R=t.index+t[0].length;continue}":"===(n=n.toLowerCase()).charAt(0)&&(n=n.substr(1)),c=n in s,A&&E[n]&&0<D.length&&D[D.length-1].name===n&&L(n);var M=Dv(T,t[8]);if(null!==M){if("all"===M){R=Rv(U,e,S.lastIndex),S.lastIndex=R;continue}f=!1}if(!p||(l=U.getElementRule(n))){if(f=!0,p&&(y=l.attributes,b=l.attributePatterns),(v=t[8])?((m=-1!==v.indexOf("data-mce-type"))&&u&&(f=!1),(d=[]).map={},v.replace(T,F)):(d=[]).map={},p&&!m){if(C=l.attributesRequired,x=l.attributesDefault,w=l.attributesForced,l.removeEmptyAttrs&&!d.length&&(f=!1),w)for(o=w.length;o--;)a=(h=w[o]).name,"{$uid}"===(_=h.value)&&(_="mce_"+O++),d.map[a]=_,d.push({name:a,value:_});if(x)for(o=x.length;o--;)(a=(h=x[o]).name)in d.map||("{$uid}"===(_=h.value)&&(_="mce_"+O++),d.map[a]=_,d.push({name:a,value:_}));if(C){for(o=C.length;o--&&!(C[o]in d.map););-1===o&&(f=!1)}if(h=d.map["data-mce-bogus"]){if("all"===h){R=Rv(U,e,S.lastIndex),S.lastIndex=R;continue}f=!1}}f&&q(n,d,c)}else f=!1;if(r=k[n]){r.lastIndex=R=t.index+t[0].length,(t=r.exec(e))?(f&&(i=e.substr(R,t.index-R)),R=t.index+t[0].length):(i=e.substr(R),R=e.length),f&&(0<i.length&&H(i,!0),$(n)),S.lastIndex=R;continue}c||(v&&v.indexOf("/")===v.length-1?f&&$(n):D.push({name:n,valid:f}))}else(n=t[1])?(">"===n.charAt(0)&&(n=" "+n),z.allow_conditional_comments||"[if"!==n.substr(0,3).toLowerCase()||(n=" "+n),j(n)):(n=t[2])?V(n.replace(/<!--|--!?>/g,"")):(n=t[3])?K(n):(n=t[4])&&W(n,t[5]);R=t.index+t[0].length}for(R<e.length&&H(B(e.substr(R))),o=D.length-1;0<=o;o--)(n=D[o]).valid&&$(n.name)}}}(Ov||(Ov={})).findEndTag=Rv;var Bv=Ov,Pv=function(e,t){var n,r,o,i,a,u,s,c,l=t,f=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,d=e.schema;for(u=e.getTempAttrs(),s=l,c=new RegExp(["\\s?("+u.join("|")+')="[^"]+"'].join("|"),"gi"),l=s.replace(c,""),a=d.getShortEndedElements();i=f.exec(l);)r=f.lastIndex,o=i[0].length,n=a[i[1]]?r:Bv.findEndTag(d,l,r),l=l.substring(0,r-o)+l.substring(n),f.lastIndex=r-o;return xa(l)},Iv={trimExternal:Pv,trimInternal:Pv},Lv=0,Fv=2,Mv=1,zv=function(g,p){var e=g.length+p.length+2,h=new Array(e),v=new Array(e),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&g[a]===p[u]?(o.push([0,g[a]]),++a,++u):r-n<t-e?(o.push([2,g[a]]),++a):(o.push([1,p[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,g[s]]);c(i.end,t,i.end-i.diag,r,o)}},y=function(e,t,n,r){for(var o=e;o-t<r&&o<n&&g[o]===p[o-t];)++o;return{start:e,end:o,diag:t}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0===o||0===i)return null;var a,u,s,c,l,f=o-i,d=i+o,m=(d%2==0?d:d+1)/2;for(h[1+m]=e,v[1+m]=t+1,a=0;a<=m;++a){for(u=-a;u<=a;u+=2){for(s=u+m,u===-a||u!==a&&h[s-1]<h[s+1]?h[s]=h[s+1]:h[s]=h[s-1]+1,l=(c=h[s])-e+n-u;c<t&&l<r&&g[c]===p[l];)h[s]=++c,++l;if(f%2!=0&&f-a<=u&&u<=f+a&&v[s-f]<=h[s])return y(v[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+m-f,u===f-a||u!==f+a&&v[s+1]<=v[s-1]?v[s]=v[s+1]-1:v[s]=v[s-1],l=(c=v[s]-1)-e+n-u;e<=c&&n<=l&&g[c]===p[l];)v[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&v[s]<=h[s+f])return y(v[s],u+e-n,t,r)}}},t=[];return c(0,g.length,0,p.length,t),t},Uv=function(e){return Uo.isElement(e)?e.outerHTML:Uo.isText(e)?ei.encodeRaw(e.data,!1):Uo.isComment(e)?"\x3c!--"+e.data+"--\x3e":""},jv=function(e,t,n){var r=function(e){var t,n,r;for(r=V.document.createElement("div"),t=V.document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return t}(t);if(e.hasChildNodes()&&n<e.childNodes.length){var o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else e.appendChild(r)},Vv=function(e){return U(W(te(e.childNodes),Uv),function(e){return 0<e.length})},Hv=function(e,t){var n,r,o,i=W(te(t.childNodes),Uv);return n=zv(i,e),r=t,o=0,z(n,function(e){e[0]===Lv?o++:e[0]===Mv?(jv(r,e[1],o),o++):e[0]===Fv&&function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var n=e.childNodes[t];n.parentNode.removeChild(n)}}(r,o)}),t},qv=Vi(_.none()),$v=function(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}},Wv=function(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}},Kv=function(e){return"fragmented"===e.type?e.fragments.join(""):e.content},Xv=function(e){var t=ar.fromTag("body",qv.get().getOrThunk(function(){var e=V.document.implementation.createHTMLDocument("undo");return qv.set(_.some(e)),e}));return va(t,Kv(e)),z(Ji(t,"*[data-mce-bogus]"),Ui),t.dom().innerHTML},Yv=function(n){var e,t,r;return e=Vv(n.getBody()),-1!==(t=(r=G(e,function(e){var t=Iv.trimInternal(n.serializer,e);return 0<t.length?[t]:[]})).join("")).indexOf("</iframe>")?$v(r):Wv(t)},Gv=function(e,t,n){"fragmented"===t.type?Hv(t.fragments,e.getBody()):e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(n?t.beforeBookmark:t.bookmark)},Jv=function(e,t){return!(!e||!t)&&(r=t,Kv(e)===Kv(r)||(n=t,Xv(e)===Xv(n)));var n,r};function Qv(u){var s,r,o=this,c=0,l=[],t=0,f=function(){return 0===t},i=function(e){f()&&(o.typing=e)},d=function(e){u.setDirty(e)},a=function(e){i(!1),o.add({},e)},n=function(){o.typing&&(i(!1),o.add())};return u.on("init",function(){o.add()}),u.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(n(),o.beforeChange())}),u.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&a(e)}),u.on("ObjectResizeStart Cut",function(){o.beforeChange()}),u.on("SaveContent ObjectResized blur",a),u.on("DragEnd",a),u.on("KeyUp",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(a(),u.nodeChanged()),46!==t&&8!==t||u.nodeChanged(),r&&o.typing&&!1===Jv(Yv(u),l[0])&&(!1===u.isDirty()&&(d(!0),u.fire("change",{level:l[0],lastLevel:null})),u.fire("TypingUndo"),r=!1,u.nodeChanged()))}),u.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented())if(33<=t&&t<=36||37<=t&&t<=40||45===t)o.typing&&a(e);else{var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||20<t)||224===t||91===t||o.typing||n||(o.beforeChange(),i(!0),o.add({},e),r=!0)}}),u.on("MouseDown",function(e){o.typing&&a(e)}),u.on("input",function(e){var t;e.inputType&&("insertReplacementText"===e.inputType||"insertText"===(t=e).inputType&&null===t.data)&&a(e)}),u.addShortcut("meta+z","","Undo"),u.addShortcut("meta+y,meta+shift+z","","Redo"),u.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||u.nodeChanged()}),o={data:l,typing:!1,beforeChange:function(){f()&&(s=Xu.getUndoBookmark(u.selection))},add:function(e,t){var n,r,o,i=u.settings;if(o=Yv(u),e=e||{},e=Xt.extend(e,o),!1===f()||u.removed)return null;if(r=l[c],u.fire("BeforeAddUndo",{level:e,lastLevel:r,originalEvent:t}).isDefaultPrevented())return null;if(r&&Jv(r,e))return null;if(l[c]&&(l[c].beforeBookmark=s),i.custom_undo_redo_levels&&l.length>i.custom_undo_redo_levels){for(n=0;n<l.length-1;n++)l[n]=l[n+1];l.length--,c=l.length}e.bookmark=Xu.getUndoBookmark(u.selection),c<l.length-1&&(l.length=c+1),l.push(e),c=l.length-1;var a={level:e,lastLevel:r,originalEvent:t};return u.fire("AddUndo",a),0<c&&(d(!0),u.fire("change",a)),e},undo:function(){var e;return o.typing&&(o.add(),o.typing=!1,i(!1)),0<c&&(e=l[--c],Gv(u,e,!0),d(!0),u.fire("undo",{level:e})),e},redo:function(){var e;return c<l.length-1&&(e=l[++c],Gv(u,e,!1),d(!0),u.fire("redo",{level:e})),e},clear:function(){l=[],c=0,o.typing=!1,o.data=l,u.fire("ClearUndos")},hasUndo:function(){return 0<c||o.typing&&l[0]&&!Jv(Yv(u),l[0])},hasRedo:function(){return c<l.length-1&&!o.typing},transact:function(e){return n(),o.beforeChange(),o.ignore(e),o.add()},ignore:function(e){try{t++,e()}finally{t--}},extra:function(e,t){var n,r;o.transact(e)&&(r=l[c].bookmark,n=l[c-1],Gv(u,n,!0),o.transact(t)&&(l[c-1].beforeBookmark=r))}}}var Zv,ey,ty={},ny=Ht.filter,ry=Ht.each;ey=function(e){var t,n,r=e.selection.getRng();t=Uo.matchNodeNames("pre"),r.collapsed||(n=e.selection.getSelectedBlocks(),ry(ny(ny(n,t),function(e){return t(e.previousSibling)&&-1!==Ht.indexOf(n,e.previousSibling)}),function(e){var t,n;t=e.previousSibling,gn(n=e).remove(),gn(t).append("<br><br>").append(n.childNodes)}))},ty[Zv="pre"]||(ty[Zv]=[]),ty[Zv].push(ey);var oy=function(e,t){ry(ty[e],function(e){e(t)})},iy=/^(src|href|style)$/,ay=Xt.each,uy=xc.isEq,sy=function(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)},cy=function(e,t,n){var r,o,i;return r=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],Uo.isElement(r)&&(i=r.childNodes.length-1,!n&&o&&o--,r=r.childNodes[i<o?i:o]),Uo.isText(r)&&n&&o>=r.nodeValue.length&&(r=new mo(r,e.getBody()).next()||r),Uo.isText(r)&&!n&&0===o&&(r=new mo(r,e.getBody()).prev()||r),r},ly=function(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o},fy=function(e,t,n,r,o){var i=ar.fromDom(t),a=ar.fromDom(e.create(r,o)),u=n?$r(i):qr(i);return Fi(a,u),n?(Bi(i,a),Ii(a,i)):(Pi(i,a),Li(a,i)),a.dom()},dy=function(e,t,n,r){return!(t=xc.getNonWhiteSpaceSibling(t,n,r))||"BR"===t.nodeName||e.isBlock(t)},my=function(e,n,r,o,i){var t,a,u,s,c,l,f,d,m,g,p,h,v,y,b=e.dom;if(c=b,!(uy(l=o,(f=n).inline)||uy(l,f.block)||(f.selector?Uo.isElement(l)&&c.is(l,f.selector):void 0)||(s=o,n.links&&"A"===s.tagName)))return!1;if("all"!==n.remove)for(ay(n.styles,function(e,t){e=xc.normalizeStyleValue(b,xc.replaceVars(e,r),t),"number"==typeof t&&(t=e,i=0),(n.remove_similar||!i||uy(xc.getStyle(b,i,t),e))&&b.setStyle(o,t,""),u=1}),u&&""===b.getAttrib(o,"style")&&(o.removeAttribute("style"),o.removeAttribute("data-mce-style")),ay(n.attributes,function(e,t){var n;if(e=xc.replaceVars(e,r),"number"==typeof t&&(t=e,i=0),!i||uy(b.getAttrib(i,t),e)){if("class"===t&&(e=b.getAttrib(o,t))&&(n="",ay(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))return void b.setAttrib(o,t,n);"class"===t&&o.removeAttribute("className"),iy.test(t)&&o.removeAttribute("data-mce-"+t),o.removeAttribute(t)}}),ay(n.classes,function(e){e=xc.replaceVars(e,r),i&&!b.hasClass(i,e)||b.removeClass(o,e)}),a=b.getAttribs(o),t=0;t<a.length;t++){var C=a[t].nodeName;if(0!==C.indexOf("_")&&0!==C.indexOf("data-"))return!1}return"none"!==n.remove?(d=e,g=n,h=(m=o).parentNode,v=d.dom,y=d.settings.forced_root_block,g.block&&(y?h===v.getRoot()&&(g.list_block&&uy(m,g.list_block)||ay(Xt.grep(m.childNodes),function(e){xc.isValid(d,y,e.nodeName.toLowerCase())?p?p.appendChild(e):(p=ly(v,e,y),v.setAttribs(p,d.settings.forced_root_block_attrs)):p=0})):v.isBlock(m)&&!v.isBlock(h)&&(dy(v,m,!1)||dy(v,m.firstChild,!0,1)||m.insertBefore(v.create("br"),m.firstChild),dy(v,m,!0)||dy(v,m.lastChild,!1,1)||m.appendChild(v.create("br")))),g.selector&&g.inline&&!uy(g.inline,m)||v.remove(m,1),!0):void 0},gy=my,py=function(s,c,l,e,f){var t,n,d=s.formatter.get(c),m=d[0],a=!0,u=s.dom,r=s.selection,i=function(e){var n,t,r,o,i,a,u=(n=s,t=e,r=c,o=l,i=f,ay(xc.getParents(n.dom,t.parentNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=Mm.matchNode(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a);return function(e,t,n,r,o,i,a,u){var s,c,l,f,d,m,g=e.dom;if(n){for(m=n.parentNode,s=r.parentNode;s&&s!==m;s=s.parentNode){for(c=g.clone(s,!1),d=0;d<t.length;d++)if(my(e,t[d],u,c,c)){c=0;break}c&&(l&&c.appendChild(l),f||(f=c),l=c)}!i||a.mixed&&g.isBlock(n)||(r=g.split(n,r)),l&&(o.parentNode.insertBefore(l,o),f.appendChild(o))}return r}(s,d,u,e,e,!0,m,l)},g=function(e){var t,n,r,o,i;if(Uo.isElement(e)&&u.getContentEditable(e)&&(o=a,a="true"===u.getContentEditable(e),i=!0),t=Xt.grep(e.childNodes),a&&!i)for(n=0,r=d.length;n<r&&!my(s,d[n],l,e,e);n++);if(m.deep&&t.length){for(n=0,r=t.length;n<r;n++)g(t[n]);i&&(a=o)}},p=function(e){var t,n=u.get(e?"_start":"_end"),r=n[e?"firstChild":"lastChild"];return vc(t=r)&&Uo.isElement(t)&&("_start"===t.id||"_end"===t.id)&&(r=r[e?"firstChild":"lastChild"]),Uo.isText(r)&&0===r.data.length&&(r=e?n.previousSibling||n.nextSibling:n.nextSibling||n.previousSibling),u.remove(n,!0),r},o=function(e){var t,n,r=e.commonAncestorContainer;if(e=Bc(s,e,d,!0),m.split){if(e=Um(e),(t=cy(s,e,!0))!==(n=cy(s,e))){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"===t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&/^(TH|TD)$/.test(n.nodeName)&&n.firstChild&&(n=n.firstChild||n),sy(u,t,n)){var o=_.from(t.firstChild).getOr(t);return i(fy(u,o,!0,"span",{id:"_start","data-mce-type":"bookmark"})),void p(!0)}if(sy(u,n,t))return o=_.from(n.lastChild).getOr(n),i(fy(u,o,!1,"span",{id:"_end","data-mce-type":"bookmark"})),void p(!1);t=ly(u,t,"span",{id:"_start","data-mce-type":"bookmark"}),n=ly(u,n,"span",{id:"_end","data-mce-type":"bookmark"}),i(t),i(n),t=p(!0),n=p()}else t=n=i(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=u.nodeIndex(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=u.nodeIndex(n)+1}Ic(u,e,function(e){ay(e,function(e){g(e),Uo.isElement(e)&&"underline"===s.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===xc.getTextDecoration(u,e.parentNode)&&my(s,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})};if(e)e.nodeType?((n=u.createRng()).setStartBefore(e),n.setEndAfter(e),o(n)):o(e);else if("false"!==u.getContentEditable(r.getNode()))r.isCollapsed()&&m.inline&&!u.select("td[data-mce-selected],th[data-mce-selected]").length?function(e,t,n,r){var o,i,a,u,s,c,l,f=e.dom,d=e.selection,m=[],g=d.getRng();for(o=g.startContainer,i=g.startOffset,3===(s=o).nodeType&&(i!==o.nodeValue.length&&(u=!0),s=s.parentNode);s;){if(Mm.matchNode(e,s,t,n,r)){c=s;break}s.nextSibling&&(u=!0),m.push(s),s=s.parentNode}if(c)if(u){a=d.getBookmark(),g.collapse(!0);var p=Bc(e,g,e.formatter.get(t),!0);p=Um(p),e.formatter.remove(t,n,p),d.moveToBookmark(a)}else{l=Ju(e.getBody(),c);var h=$m(!1).dom(),v=Gm(m,h);Xm(e,h,l||c),Wm(e,l,!1),d.setCursorLocation(v,1),f.isEmpty(c)&&f.remove(c)}}(s,c,l,f):(t=Xu.getPersistentBookmark(s.selection,!0),o(r.getRng()),r.moveToBookmark(t),m.inline&&Mm.match(s,c,l,r.getStart())&&xc.moveStart(u,r,r.getRng()),s.nodeChanged());else{e=r.getNode();for(var h=0,v=d.length;h<v&&(!d[h].ceFalseOverride||!my(s,d[h],l,e,e));h++);}},hy=Xt.each,vy=function(e){return e&&1===e.nodeType&&!vc(e)&&!Gu(e)&&!Uo.isBogus(e)},yy=function(e,t){var n;for(n=e;n;n=n[t]){if(3===n.nodeType&&0!==n.nodeValue.length)return e;if(1===n.nodeType&&!vc(n))return n}return e},by=function(e,t,n){var r,o,i=new Zc(e);if(t&&n&&(t=yy(t,"previousSibling"),n=yy(n,"nextSibling"),i.compare(t,n))){for(r=t.nextSibling;r&&r!==n;)r=(o=r).nextSibling,t.appendChild(o);return e.remove(n),Xt.each(Xt.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n},Cy=function(e,t,n){hy(e.childNodes,function(e){vy(e)&&(t(e)&&n(e),e.hasChildNodes()&&Cy(e,t,n))})},xy=function(n,e){return d(function(e,t){return!(!t||!xc.getStyle(n,t,e))},e)},wy=function(r,e,t){return d(function(e,t,n){r.setStyle(n,e,t),""===n.getAttribute("style")&&n.removeAttribute("style"),Ny(r,n)},e,t)},Ny=function(e,t){"SPAN"===t.nodeName&&0===e.getAttribs(t).length&&e.remove(t,!0)},Ey=function(e,t){var n;1===t.nodeType&&t.parentNode&&1===t.parentNode.nodeType&&(n=xc.getTextDecoration(e,t.parentNode),e.getStyle(t,"color")&&n?e.setStyle(t,"text-decoration",n):e.getStyle(t,"text-decoration")===n&&e.setStyle(t,"text-decoration",null))},Sy=function(n,e,r,o){hy(e,function(t){hy(n.dom.select(t.inline,o),function(e){vy(e)&&gy(n,t,r,e,t.exact?e:null)}),function(r,e,t){if(e.clear_child_styles){var n=e.links?"*:not(a)":"*";hy(r.select(n,t),function(n){vy(n)&&hy(e.styles,function(e,t){r.setStyle(n,t,"")})})}}(n.dom,t,o)})},Ty=function(e,t,n,r){(t.styles.color||t.styles.textDecoration)&&(Xt.walk(r,d(Ey,e),"childNodes"),Ey(e,r))},ky=function(e,t,n,r){t.styles&&t.styles.backgroundColor&&Cy(r,xy(e,"fontSize"),wy(e,"backgroundColor",xc.replaceVars(t.styles.backgroundColor,n)))},_y=function(e,t,n,r){"sub"!==t.inline&&"sup"!==t.inline||(Cy(r,xy(e,"fontSize"),wy(e,"fontSize","")),e.remove(e.select("sup"===t.inline?"sub":"sup",r),!0))},Ay=function(e,t,n,r){r&&!1!==t.merge_siblings&&(r=by(e,xc.getNonWhiteSpaceSibling(r),r),r=by(e,r,xc.getNonWhiteSpaceSibling(r,!0)))},Ry=function(t,n,r,o,i){Mm.matchNode(t,i.parentNode,r,o)&&gy(t,n,o,i)||n.merge_with_parents&&t.dom.getParent(i.parentNode,function(e){if(Mm.matchNode(t,e,r,o))return gy(t,n,o,i),!0})},Dy=Xt.each,Oy=function(g,p,h,r){var e,t,v=g.formatter.get(p),y=v[0],o=!r&&g.selection.isCollapsed(),i=g.dom,n=g.selection,b=function(n,e){if(e=e||y,n){if(e.onformat&&e.onformat(n,e,h,r),Dy(e.styles,function(e,t){i.setStyle(n,t,xc.replaceVars(e,h))}),e.styles){var t=i.getAttrib(n,"style");t&&n.setAttribute("data-mce-style",t)}Dy(e.attributes,function(e,t){i.setAttrib(n,t,xc.replaceVars(e,h))}),Dy(e.classes,function(e){e=xc.replaceVars(e,h),i.hasClass(n,e)||i.addClass(n,e)})}},C=function(e,t){var n=!1;return!!y.selector&&(Dy(e,function(e){if(!("collapsed"in e&&e.collapsed!==o))return i.is(t,e.selector)&&!Gu(t)?(b(t,e),!(n=!0)):void 0}),n)},a=function(s,e,t,c){var l,f,d=[],m=!0;l=y.inline||y.block,f=s.create(l),b(f),Ic(s,e,function(e){var a,u=function(e){var t,n,r,o;if(o=m,t=e.nodeName.toLowerCase(),n=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&s.getContentEditable(e)&&(o=m,m="true"===s.getContentEditable(e),r=!0),xc.isEq(t,"br"))return a=0,void(y.block&&s.remove(e));if(y.wrapper&&Mm.matchNode(g,e,p,h))a=0;else{if(m&&!r&&y.block&&!y.wrapper&&xc.isTextBlock(g,t)&&xc.isValid(g,n,l))return e=s.rename(e,l),b(e),d.push(e),void(a=0);if(y.selector){var i=C(v,e);if(!y.inline||i)return void(a=0)}!m||r||!xc.isValid(g,l,t)||!xc.isValid(g,n,l)||!c&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||Gu(e)||y.inline&&s.isBlock(e)?(a=0,Dy(Xt.grep(e.childNodes),u),r&&(m=o),a=0):(a||(a=s.clone(f,!1),e.parentNode.insertBefore(a,e),d.push(a)),a.appendChild(e))}};Dy(e,u)}),!0===y.links&&Dy(d,function(e){var t=function(e){"A"===e.nodeName&&b(e,y),Dy(Xt.grep(e.childNodes),t)};t(e)}),Dy(d,function(e){var t,n,r,o,i,a=function(e){var n=!1;return Dy(e.childNodes,function(e){if((t=e)&&1===t.nodeType&&!vc(t)&&!Gu(t)&&!Uo.isBogus(t))return n=e,!1;var t}),n};n=0,Dy(e.childNodes,function(e){xc.isWhiteSpaceNode(e)||vc(e)||n++}),t=n,!(1<d.length)&&s.isBlock(e)||0!==t?(y.inline||y.wrapper)&&(y.exact||1!==t||((o=a(r=e))&&!vc(o)&&Mm.matchName(s,o,y)&&(i=s.clone(o,!1),b(i),s.replace(i,r,!0),s.remove(o,1)),e=i||r),Sy(g,v,h,e),Ry(g,y,p,h,e),ky(s,y,h,e),_y(s,y,h,e),Ay(s,y,h,e)):s.remove(e,1)})};if("false"!==i.getContentEditable(n.getNode())){if(y){if(r)r.nodeType?C(v,r)||((t=i.createRng()).setStartBefore(r),t.setEndAfter(r),a(i,Bc(g,t,v),0,!0)):a(i,r,0,!0);else if(o&&y.inline&&!i.select("td[data-mce-selected],th[data-mce-selected]").length)!function(e,t,n){var r,o,i,a,u,s,c=e.selection;a=(r=c.getRng(!0)).startOffset,s=r.startContainer.nodeValue,(o=Ju(e.getBody(),c.getStart()))&&(i=qm(o));var l,f,d=/[^\s\u00a0\u00ad\u200b\ufeff]/;s&&0<a&&a<s.length&&d.test(s.charAt(a))&&d.test(s.charAt(a-1))?(u=c.getBookmark(),r.collapse(!0),r=Bc(e,r,e.formatter.get(t)),r=Um(r),e.formatter.apply(t,n,r),c.moveToBookmark(u)):(o&&i.nodeValue===jm||(l=e.getDoc(),f=$m(!0).dom(),i=(o=l.importNode(f,!0)).firstChild,r.insertNode(o),a=1),e.formatter.apply(t,n,o),c.setCursorLocation(i,a))}(g,p,h);else{var u=g.selection.getNode();g.settings.forced_root_block||!v[0].defaultBlock||i.getParent(u,i.isBlock)||Oy(g,v[0].defaultBlock),g.selection.setRng(sl(g.selection.getRng())),e=Xu.getPersistentBookmark(g.selection,!0),a(i,Bc(g,n.getRng(),v)),y.styles&&Ty(i,y,h,u),n.moveToBookmark(e),xc.moveStart(i,n,n.getRng()),g.nodeChanged()}oy(p,g)}}else{r=n.getNode();for(var s=0,c=v.length;s<c;s++)if(v[s].ceFalseOverride&&i.is(r,v[s].selector))return void b(r,v[s])}},By={applyFormat:Oy},Py=Xt.each,Iy=function(e,t,n,r,o){var i,a,u,s,c,l,f,d;null===t.get()&&(a=e,u={},(i=t).set({}),a.on("NodeChange",function(n){var r=xc.getParents(a.dom,n.element),o={};r=Xt.grep(r,function(e){return 1===e.nodeType&&!e.getAttribute("data-mce-bogus")}),Py(i.get(),function(e,n){Py(r,function(t){return a.formatter.matchNode(t,n,{},e.similar)?(u[n]||(Py(e,function(e){e(!0,{node:t,format:n,parents:r})}),u[n]=e),o[n]=e,!1):!Mm.matchesUnInheritedFormatSelector(a,t,n)&&void 0})}),Py(u,function(e,t){o[t]||(delete u[t],Py(e,function(e){e(!1,{node:n.element,format:t,parents:r})}))})})),c=n,l=r,f=o,d=(s=t).get(),Py(c.split(","),function(e){d[e]||(d[e]=[],d[e].similar=f),d[e].push(l)}),s.set(d)},Ly={get:function(r){var t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(n,e,t){Xt.each(t,function(e,t){r.setAttrib(n,t,e)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]};return Xt.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t}},Fy=Xt.each,My=Ei.DOM,zy=function(e,t){var n,o,r,m=t&&t.schema||fi({}),g=function(e){var t,n,r;return o="string"==typeof e?{name:e,classes:[],attrs:{}}:e,t=My.create(o.name),n=t,(r=o).classes.length&&My.addClass(n,r.classes.join(" ")),My.setAttribs(n,r.attrs),t},p=function(n,e,t){var r,o,i,a,u,s,c,l,f=0<e.length&&e[0],d=f&&f.name;if(u=d,s="string"!=typeof(a=n)?a.nodeName.toLowerCase():a,c=m.getElementRule(s),i=!(!(l=c&&c.parentsRequired)||!l.length)&&(u&&-1!==Xt.inArray(l,u)?u:l[0]))d===i?(o=e[0],e=e.slice(1)):o=i;else if(f)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=g(o)).appendChild(n),t&&(r||(r=My.create("div")).appendChild(n),Xt.each(t,function(e){var t=g(e);r.insertBefore(t,n)})),p(r,e,o&&o.siblings)};return e&&e.length?(o=e[0],n=g(o),(r=My.create("div")).appendChild(p(n,e.slice(1),o.siblings)),r):""},Uy=function(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=Xt.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==Xt.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}if("["===r){var i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/);i&&(a.attrs[i[1]]=i[2])}return""})),a.name=t||"div",a},jy=function(e){return e&&"string"==typeof e?(e=(e=e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),Xt.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Xt.map(e.split(/(?:~\+|~|\+)/),Uy),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[]},Vy=function(n,e){var t,r,o,i,a,u,s="";if(!1===(u=n.settings.preview_styles))return"";"string"!=typeof u&&(u="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");var c=function(e){return e.replace(/%(\w+)/g,"")};if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}return"preview"in e&&!1===(u=e.preview)?"":(t=e.block||e.inline||"span",(i=jy(e.selector)).length?(i[0].name||(i[0].name=t),t=e.selector,r=zy(i,n)):r=zy([t],n),o=My.select(t,r)[0]||r.firstChild,Fy(e.styles,function(e,t){(e=c(e))&&My.setStyle(o,t,e)}),Fy(e.attributes,function(e,t){(e=c(e))&&My.setAttrib(o,t,e)}),Fy(e.classes,function(e){e=c(e),My.hasClass(o,e)||My.addClass(o,e)}),n.fire("PreviewFormats"),My.setStyles(r,{position:"absolute",left:-65535}),n.getBody().appendChild(r),a=My.getStyle(n.getBody(),"fontSize",!0),a=/px$/.test(a)?parseInt(a,10):0,Fy(u.split(" "),function(e){var t=My.getStyle(o,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=My.getStyle(n.getBody(),e,!0),"#ffffff"===My.toHex(t).toLowerCase())||"color"===e&&"#000000"===My.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===a)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*a+"px"}"border"===e&&t&&(s+="padding:0 2px;"),s+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),My.remove(r),s)},Hy=function(e,t,n,r,o){var i=t.get(n);!Mm.match(e,n,r,o)||"toggle"in i[0]&&!i[0].toggle?By.applyFormat(e,n,r,o):py(e,n,r,o)},qy=function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])};function $y(e){var t,n,r,o=(t=e,n={},(r=function(e,t){e&&("string"!=typeof e?Xt.each(e,function(e,t){r(t,e)}):(t=t.length?t:[t],Xt.each(t,function(e){"undefined"==typeof e.deep&&(e.deep=!e.selector),"undefined"==typeof e.split&&(e.split=!e.selector||e.inline),"undefined"==typeof e.remove&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),n[e]=t))})(Ly.get(t.dom)),r(t.settings.formats),{get:function(e){return e?n[e]:n},register:r,unregister:function(e){return e&&n[e]&&delete n[e],n}}),i=Vi(null);return qy(e),Jm(e),{get:o.get,register:o.register,unregister:o.unregister,apply:d(By.applyFormat,e),remove:d(py,e),toggle:d(Hy,e,o),match:d(Mm.match,e),matchAll:d(Mm.matchAll,e),matchNode:d(Mm.matchNode,e),canApply:d(Mm.canApply,e),formatChanged:d(Iy,e,i),getCssText:d(Vy,e)}}var Wy,Ky=Object.prototype.hasOwnProperty,Xy=(Wy=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Ky.call(o,i)&&(n[i]=Wy(n[i],o[i]))}return n}),Yy={register:function(t,s,c){t.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n,r=e.length;r--;)(n=e[r]).attr("tabindex",n.attributes.map["data-mce-tabindex"]),n.attr(t,null)}),t.addAttributeFilter("src,href,style",function(e,t){for(var n,r,o=e.length,i="data-mce-"+t,a=s.url_converter,u=s.url_converter_scope;o--;)(r=(n=e[o]).attributes.map[i])!==undefined?(n.attr(t,0<r.length?r:null),n.attr(i,null)):(r=n.attributes.map[t],"style"===t?r=c.serializeStyle(c.parseStyle(r),n.name):a&&(r=a.call(u,r,t,n.name)),n.attr(t,0<r.length?r:null))}),t.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)(n=(t=e[r]).attr("class"))&&(n=t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),t.attr("class",0<n.length?n:null))}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r,o=e.length;o--;)"bookmark"!==(r=e[o]).attributes.map["data-mce-type"]||n.cleanup||(_.from(r.firstChild).exists(function(e){return!ba(e.value)})?r.unwrap():r.remove())}),t.addNodeFilter("noscript",function(e){for(var t,n=e.length;n--;)(t=e[n].firstChild)&&(t.value=ei.decode(t.value))}),t.addNodeFilter("script,style",function(e,t){for(var n,r,o,i=e.length,a=function(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")};i--;)r=(n=e[i]).firstChild?n.firstChild.value:"","script"===t?((o=n.attr("type"))&&n.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="// <![CDATA[\n"+a(r)+"\n// ]]>")):"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="\x3c!--\n"+a(r)+"\n--\x3e")}),t.addNodeFilter("#comment",function(e){for(var t,n=e.length;n--;)0===(t=e[n]).value.indexOf("[CDATA[")?(t.name="#cdata",t.type=4,t.value=t.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===t.value.indexOf("mce:protected ")&&(t.name="#text",t.type=3,t.raw=!0,t.value=unescape(t.value).substr(14))}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n,r=e.length;r--;)7===(n=e[r]).type?n.remove():1===n.type&&("input"!==t||"type"in n.attributes.map||n.attr("type","text"))}),t.addAttributeFilter("data-mce-type",function(e){z(e,function(e){"format-caret"===e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)})},trimTrailingBr:function(e){var t,n,r=function(e){return e&&"br"===e.name};r(t=e.lastChild)&&r(n=t.prev)&&(t.remove(),n.remove())}},Gy={process:function(e,t,n){return f=n,(l=e)&&l.hasEventListeners("PreProcess")&&!f.no_events?(o=t,i=n,c=(r=e).dom,o=o.cloneNode(!0),(a=V.document.implementation).createHTMLDocument&&(u=a.createHTMLDocument(""),Xt.each("BODY"===o.nodeName?o.childNodes:[o],function(e){u.body.appendChild(u.importNode(e,!0))}),o="BODY"!==o.nodeName?u.body.firstChild:u.body,s=c.doc,c.doc=u),vp(r,Xy(i,{node:o})),s&&(c.doc=s),o):t;var r,o,i,a,u,s,c,l,f}},Jy=function(e,a,u){e.addNodeFilter("font",function(e){z(e,function(e){var t,n=a.parse(e.attr("style")),r=e.attr("color"),o=e.attr("face"),i=e.attr("size");r&&(n.color=r),o&&(n["font-family"]=o),i&&(n["font-size"]=u[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",a.serialize(n)),t=e,z(["color","face","size"],function(e){t.attr(e,null)})})})},Qy=function(e,t){var n,r=mi();t.convert_fonts_to_spans&&Jy(e,r,Xt.explode(t.font_size_legacy_values)),n=r,e.addNodeFilter("strike",function(e){z(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})},Zy={register:function(e,t){t.inline_styles&&Qy(e,t)}},eb=/^[ \t\r\n]*$/,tb={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11},nb=function(e,t,n){var r,o,i=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[i])return e[i];if(e!==t){if(r=e[a])return r;for(o=e.parent;o&&o!==t;o=o.parent)if(r=o[a])return r}},rb=function(){function a(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}return a.create=function(e,t){var n,r;if(n=new a(e,tb[e]||1),t)for(r in t)n.attr(r,t[r]);return n},a.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},a.prototype.attr=function(e,t){var n,r;if("string"!=typeof e){for(r in e)this.attr(r,e[r]);return this}if(n=this.attributes){if(t!==undefined){if(null===t){if(e in n.map)for(delete n.map[e],r=n.length;r--;)if(n[r].name===e)return n=n.splice(r,1),this;return this}if(e in n.map){for(r=n.length;r--;)if(n[r].name===e){n[r].value=t;break}}else n.push({name:e,value:t});return n.map[e]=t,this}return n.map[e]}},a.prototype.clone=function(){var e,t,n,r,o,i=new a(this.name,this.type);if(n=this.attributes){for((o=[]).map={},e=0,t=n.length;e<t;e++)"id"!==(r=n[e]).name&&(o[o.length]={name:r.name,value:r.value},o.map[r.name]=r.value);i.attributes=o}return i.value=this.value,i.shortEnded=this.shortEnded,i},a.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},a.prototype.unwrap=function(){var e,t;for(e=this.firstChild;e;)t=e.next,this.insert(e,this,!0),e=t;this.remove()},a.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},a.prototype.append=function(e){var t;return e.parent&&e.remove(),(t=this.lastChild)?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=this,e},a.prototype.insert=function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},a.prototype.getAll=function(e){var t,n=[];for(t=this.firstChild;t;t=nb(t,this))t.name===e&&n.push(t);return n},a.prototype.empty=function(){var e,t,n;if(this.firstChild){for(e=[],n=this.firstChild;n;n=nb(n,this))e.push(n);for(t=e.length;t--;)(n=e[t]).parent=n.firstChild=n.lastChild=n.next=n.prev=null}return this.firstChild=this.lastChild=null,this},a.prototype.isEmpty=function(e,t,n){var r,o,i=this.firstChild;if(t=t||{},i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(e[i.name])return!1;for(r=i.attributes.length;r--;)if("name"===(o=i.attributes[r].name)||0===o.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!eb.test(i.value))return!1;if(3===i.type&&i.parent&&t[i.parent.name]&&eb.test(i.value))return!1;if(n&&n(i))return!1}while(i=nb(i,this));return!0},a.prototype.walk=function(e){return nb(this,null,e)},a}(),ob=function(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new rb("br",1)).shortEnded=!0:r.empty().append(new rb("#text",3)).value="\xa0"},ib=function(e){return ab(e,"#text")&&"\xa0"===e.firstChild.value},ab=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},ub=function(r,e,t,n){return n.isEmpty(e,t,function(e){return t=e,(n=r.getElementRule(t.name))&&n.paddEmpty;var t,n})},sb=function(e,t){return e&&(t[e.name]||"br"===e.name)},cb=function(e,p){var h=e.schema;p.remove_trailing_brs&&e.addNodeFilter("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=Xt.extend({},h.getBlockElements()),m=h.getNonEmptyElements(),g=h.getNonEmptyElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){if("br"!==s)break;if("br"===s){o=null;break}}u=u.prev}o&&(o.remove(),ub(h,m,g,i)&&(c=h.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&ob(p,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==p.padd_empty_with_br&&((l=new rb("#text",3)).value="\xa0",o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r,o=e.length;if(!p.allow_unsafe_link_target)for(;o--;)"a"===(t=e[o]).name&&"_blank"===t.attr("target")&&t.attr("rel",(n=t.attr("rel"),r=n?Xt.trim(n):"",/\b(noopener)\b/g.test(r)?r:r.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}),p.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),p.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r=e.length;r--;)if("ul"===(n=(t=e[r]).parent).name||"ol"===n.name)if(t.prev&&"li"===t.prev.name)t.prev.append(t);else{var o=new rb("li",1);o.attr("style","list-style-type: none"),t.wrap(o)}}),p.validate&&h.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t,n,r,o,i,a,u,s=e.length,c=h.getValidClasses();s--;){for(n=(t=e[s]).attr("class").split(" "),i="",r=0;r<n.length;r++)o=n[r],u=!1,(a=c["*"])&&a[o]&&(u=!0),a=c[t.name],!u&&a&&a[o]&&(u=!0),u&&(i&&(i+=" "),i+=o);i.length||(i=null),t.attr("class",i)}})},lb=Xt.makeMap,fb=Xt.each,db=Xt.explode,mb=Xt.extend;function gb(T,k){void 0===k&&(k=fi());var _={},A=[],R={},D={};(T=T||{}).validate=!("validate"in T)||T.validate,T.root_name=T.root_name||"body";var O=function(e){var t,n,r;(n=e.name)in _&&((r=R[n])?r.push(e):R[n]=[e]),t=A.length;for(;t--;)(n=A[t].name)in e.attributes.map&&((r=D[n])?r.push(e):D[n]=[e]);return e},e={schema:k,addAttributeFilter:function(e,n){fb(db(e),function(e){var t;for(t=0;t<A.length;t++)if(A[t].name===e)return void A[t].callbacks.push(n);A.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(A)},addNodeFilter:function(e,n){fb(db(e),function(e){var t=_[e];t||(_[e]=t=[]),t.push(n)})},getNodeFilters:function(){var e=[];for(var t in _)_.hasOwnProperty(t)&&e.push({name:t,callbacks:_[t]});return e},filterNode:O,parse:function(e,a){var t,n,r,o,i,u,s,c,l,f,d,m=[];a=a||{},R={},D={},l=mb(lb("script,style,head,html,body,title,meta,param"),k.getBlockElements());var g=k.getNonEmptyElements(),p=k.children,h=T.validate,v="forced_root_block"in a?a.forced_root_block:T.forced_root_block,y=k.getWhiteSpaceElements(),b=/^[ \t\r\n]+/,C=/[ \t\r\n]+$/,x=/[ \t\r\n]+/g,w=/^[ \t\r\n]+$/;f=y.hasOwnProperty(a.context)||y.hasOwnProperty(T.root_name);var N=function(e,t){var n,r=new rb(e,t);return e in _&&((n=R[e])?n.push(r):R[e]=[r]),r},E=function(e){var t,n,r,o,i=k.getBlockElements();for(t=e.prev;t&&3===t.type;){if(0<(r=t.value.replace(C,"")).length)return void(t.value=r);if(n=t.next){if(3===n.type&&n.value.length){t=t.prev;continue}if(!i[n.name]&&"script"!==n.name&&"style"!==n.name){t=t.prev;continue}}o=t.prev,t.remove(),t=o}};t=Bv({validate:h,allow_script_urls:T.allow_script_urls,allow_conditional_comments:T.allow_conditional_comments,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(k.getSelfClosingElements()),cdata:function(e){d.append(N("#cdata",4)).value=e},text:function(e,t){var n;f||(e=e.replace(x," "),sb(d.lastChild,l)&&(e=e.replace(b,""))),0!==e.length&&((n=N("#text",3)).raw=!!t,d.append(n).value=e)},comment:function(e){d.append(N("#comment",8)).value=e},pi:function(e,t){d.append(N(e,7)).value=t,E(d)},doctype:function(e){d.append(N("#doctype",10)).value=e,E(d)},start:function(e,t,n){var r,o,i,a,u;if(i=h?k.getElementRule(e):{}){for((r=N(i.outputName||e,1)).attributes=t,r.shortEnded=n,d.append(r),(u=p[d.name])&&p[r.name]&&!u[r.name]&&m.push(r),o=A.length;o--;)(a=A[o].name)in t.map&&((s=D[a])?s.push(r):D[a]=[r]);l[e]&&E(r),n||(d=r),!f&&y[e]&&(f=!0)}},end:function(e){var t,n,r,o,i;if(n=h?k.getElementRule(e):{}){if(l[e]&&!f){if((t=d.firstChild)&&3===t.type)if(0<(r=t.value.replace(b,"")).length)t.value=r,t=t.next;else for(o=t.next,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.next,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o;if((t=d.lastChild)&&3===t.type)if(0<(r=t.value.replace(C,"")).length)t.value=r,t=t.prev;else for(o=t.prev,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.prev,(0===r.length||w.test(r))&&(t.remove(),t=o),t=o}if(f&&y[e]&&(f=!1),n.removeEmpty&&ub(k,g,y,d)&&!d.attributes.map.name&&!d.attr("id"))return i=d.parent,l[d.name]?d.empty().remove():d.unwrap(),void(d=i);n.paddEmpty&&(ib(d)||ub(k,g,y,d))&&ob(T,a,l,d),d=d.parent}}},k);var S=d=new rb(a.context||T.root_name,11);if(t.parse(e),h&&m.length&&(a.context?a.invalid=!0:function(e){var t,n,r,o,i,a,u,s,c,l,f,d,m,g,p,h;for(d=lb("tr,td,th,tbody,thead,tfoot,table"),l=k.getNonEmptyElements(),f=k.getWhiteSpaceElements(),m=k.getTextBlockElements(),g=k.getSpecialElements(),t=0;t<e.length;t++)if((n=e[t]).parent&&!n.fixed)if(m[n.name]&&"li"===n.parent.name){for(p=n.next;p&&m[p.name];)p.name="li",p.fixed=!0,n.parent.insert(p,n.parent),p=p.next;n.unwrap(n)}else{for(o=[n],r=n.parent;r&&!k.isValidChild(r.name,n.name)&&!d[r.name];r=r.parent)o.push(r);if(r&&1<o.length){for(o.reverse(),i=a=O(o[0].clone()),c=0;c<o.length-1;c++){for(k.isValidChild(a.name,o[c].name)?(u=O(o[c].clone()),a.append(u)):u=a,s=o[c].firstChild;s&&s!==o[c+1];)h=s.next,u.append(s),s=h;a=u}ub(k,l,f,i)?r.insert(n,o[0],!0):(r.insert(i,o[0],!0),r.insert(n,i)),r=o[0],(ub(k,l,f,r)||ab(r,"br"))&&r.empty().remove()}else if(n.parent){if("li"===n.name){if((p=n.prev)&&("ul"===p.name||"ul"===p.name)){p.append(n);continue}if((p=n.next)&&("ul"===p.name||"ul"===p.name)){p.insert(n,p.firstChild,!0);continue}n.wrap(O(new rb("ul",1)));continue}k.isValidChild(n.parent.name,"div")&&k.isValidChild("div",n.name)?n.wrap(O(new rb("div",1))):g[n.name]?n.empty().remove():n.unwrap()}}}(m)),v&&("body"===S.name||a.isRootContent)&&function(){var e,t,n=S.firstChild,r=function(e){e&&((n=e.firstChild)&&3===n.type&&(n.value=n.value.replace(b,"")),(n=e.lastChild)&&3===n.type&&(n.value=n.value.replace(C,"")))};if(k.isValidChild(S.name,v.toLowerCase())){for(;n;)e=n.next,3===n.type||1===n.type&&"p"!==n.name&&!l[n.name]&&!n.attr("data-mce-type")?(t||((t=N(v,1)).attr(T.forced_root_block_attrs),S.insert(t,n)),t.append(n)):(r(t),t=null),n=e;r(t)}}(),!a.invalid){for(c in R){for(s=_[c],i=(n=R[c]).length;i--;)n[i].parent||n.splice(i,1);for(r=0,o=s.length;r<o;r++)s[r](n,c,a)}for(r=0,o=A.length;r<o;r++)if((s=A[r]).name in D){for(i=(n=D[s.name]).length;i--;)n[i].parent||n.splice(i,1);for(i=0,u=s.callbacks.length;i<u;i++)s.callbacks[i](n,s.name,a)}}return S}};return cb(e,T),Zy.register(e,T),e}var pb=function(e,t,n){-1===Xt.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))},hb=function(e,t,n){var r=xa(n.getInner?t.innerHTML:e.getOuterHTML(t));return n.selection||_o(ar.fromDom(t))?r:Xt.trim(r)},vb=function(e,t,n){var r=n.selection?Xy({forced_root_block:!1},n):n,o=e.parse(t,r);return Yy.trimTrailingBr(o),o},yb=function(e,t,n,r,o){var i,a,u,s,c=(i=r,il(t,n).serialize(i));return a=e,s=c,!(u=o).no_events&&a?yp(a,Xy(u,{content:s})).content:s};function bb(e,t){var a,u,s,c,l,n,r=(a=e,n=["data-mce-selected"],s=(u=t)&&u.dom?u.dom:Ei.DOM,c=u&&u.schema?u.schema:fi(a),a.entity_encoding=a.entity_encoding||"named",a.remove_trailing_brs=!("remove_trailing_brs"in a)||a.remove_trailing_brs,l=gb(a,c),Yy.register(l,a,s),{schema:c,addNodeFilter:l.addNodeFilter,addAttributeFilter:l.addAttributeFilter,serialize:function(e,t){var n=Xy({format:"html"},t||{}),r=Gy.process(u,e,n),o=hb(s,r,n),i=vb(l,o,n);return"tree"===n.format?i:yb(u,a,c,i,n)},addRules:function(e){c.addValidElements(e)},setRules:function(e){c.setValidElements(e)},addTempAttr:d(pb,l,n),getTempAttrs:function(){return n}});return{schema:r.schema,addNodeFilter:r.addNodeFilter,addAttributeFilter:r.addAttributeFilter,serialize:r.serialize,addRules:r.addRules,setRules:r.setRules,addTempAttr:r.addTempAttr,getTempAttrs:r.getTempAttrs}}function Cb(e){return{getBookmark:d(pc,e),moveToBookmark:d(hc,e)}}(Cb||(Cb={})).isBookmarkNode=vc;var xb,wb,Nb=Cb,Eb=Uo.isContentEditableFalse,Sb=Uo.isContentEditableTrue,Tb=function(r,a){var u,s,c,l,f,d,m,g,p,h,v,y,i,b,C,x,w,N=a.dom,E=Xt.each,S=a.getDoc(),T=V.document,k=Math.abs,_=Math.round,A=a.getBody();l={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var e=".mce-content-body";a.contentStyles.push(e+" div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: content-box;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+e+" .mce-resizehandle:hover {background: #000}"+e+" img[data-mce-selected],"+e+" hr[data-mce-selected] {outline: 1px solid black;resize: none}"+e+" .mce-clonedresizable {position: absolute;"+(fe.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+e+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}");var R=function(e){return e&&("IMG"===e.nodeName||a.dom.is(e,"figure.image"))},n=function(e){var t,n,r=e.target;t=e,n=a.selection.getRng(),!R(t.target)||Nv(t.clientX,t.clientY,n)||e.isDefaultPrevented()||a.selection.select(r)},D=function(e){return a.dom.is(e,"figure.image")?e.querySelector("img"):e},O=function(e){var t=a.settings.object_resizing;return!1!==t&&!fe.iOS&&("string"!=typeof t&&(t="table,img,figure.image,div"),"false"!==e.getAttribute("data-mce-resize")&&e!==a.getBody()&&Ir(ar.fromDom(e),t))},B=function(e){var t,n,r,o;t=e.screenX-d,n=e.screenY-m,b=t*f[2]+h,C=n*f[3]+v,b=b<5?5:b,C=C<5?5:C,(R(u)&&!1!==a.settings.resize_img_proportional?!Sv.modifierPressed(e):Sv.modifierPressed(e)||R(u)&&f[2]*f[3]!=0)&&(k(t)>k(n)?(C=_(b*y),b=_(C/y)):(b=_(C/y),C=_(b*y))),N.setStyles(D(s),{width:b,height:C}),r=0<(r=f.startPos.x+t)?r:0,o=0<(o=f.startPos.y+n)?o:0,N.setStyles(c,{left:r,top:o,display:"block"}),c.innerHTML=b+" × "+C,f[2]<0&&s.clientWidth<=b&&N.setStyle(s,"left",g+(h-b)),f[3]<0&&s.clientHeight<=C&&N.setStyle(s,"top",p+(v-C)),(t=A.scrollWidth-x)+(n=A.scrollHeight-w)!=0&&N.setStyles(c,{left:r-t,top:o-n}),i||(wp(a,u,h,v),i=!0)},P=function(){i=!1;var e=function(e,t){t&&(u.style[e]||!a.schema.isValid(u.nodeName.toLowerCase(),e)?N.setStyle(D(u),e,t):N.setAttrib(D(u),e,t))};e("width",b),e("height",C),N.unbind(S,"mousemove",B),N.unbind(S,"mouseup",P),T!==S&&(N.unbind(T,"mousemove",B),N.unbind(T,"mouseup",P)),N.remove(s),N.remove(c),o(u),Np(a,u,b,C),N.setAttrib(u,"style",N.getAttrib(u,"style")),a.nodeChanged()},o=function(e){var t,r,o,n,i;I(),M(),t=N.getPos(e,A),g=t.x,p=t.y,i=e.getBoundingClientRect(),r=i.width||i.right-i.left,o=i.height||i.bottom-i.top,u!==e&&(u=e,b=C=0),n=a.fire("ObjectSelected",{target:e}),O(e)&&!n.isDefaultPrevented()?E(l,function(n,e){var t;(t=N.get("mceResizeHandle"+e))&&N.remove(t),t=N.add(A,"div",{id:"mceResizeHandle"+e,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+e+"-resize; margin:0; padding:0"}),11===fe.ie&&(t.contentEditable=!1),N.bind(t,"mousedown",function(e){var t;e.stopImmediatePropagation(),e.preventDefault(),d=(t=e).screenX,m=t.screenY,h=D(u).clientWidth,v=D(u).clientHeight,y=v/h,(f=n).startPos={x:r*n[0]+g,y:o*n[1]+p},x=A.scrollWidth,w=A.scrollHeight,s=u.cloneNode(!0),N.addClass(s,"mce-clonedresizable"),N.setAttrib(s,"data-mce-bogus","all"),s.contentEditable=!1,s.unSelectabe=!0,N.setStyles(s,{left:g,top:p,margin:0}),s.removeAttribute("data-mce-selected"),A.appendChild(s),N.bind(S,"mousemove",B),N.bind(S,"mouseup",P),T!==S&&(N.bind(T,"mousemove",B),N.bind(T,"mouseup",P)),c=N.add(A,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},h+" × "+v)}),n.elm=t,N.setStyles(t,{left:r*n[0]+g-t.offsetWidth/2,top:o*n[1]+p-t.offsetHeight/2})}):I(),u.setAttribute("data-mce-selected","1")},I=function(){var e,t;for(e in M(),u&&u.removeAttribute("data-mce-selected"),l)(t=N.get("mceResizeHandle"+e))&&(N.unbind(t),N.remove(t))},L=function(e){var t,n=function(e,t){if(e)do{if(e===t)return!0}while(e=e.parentNode)};i||a.removed||(E(N.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),t="mousedown"===e.type?e.target:r.getNode(),n(t=N.$(t).closest("table,img,figure.image,hr")[0],A)&&(z(),n(r.getStart(!0),t)&&n(r.getEnd(!0),t))?o(t):I())},F=function(e){return Eb(function(e,t){for(;t&&t!==e;){if(Sb(t)||Eb(t))return t;t=t.parentNode}return null}(a.getBody(),e))},M=function(){for(var e in l){var t=l[e];t.elm&&(N.unbind(t.elm),delete t.elm)}},z=function(){try{a.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}};return a.on("init",function(){z(),fe.ie&&11<=fe.ie&&(a.on("mousedown click",function(e){var t=e.target,n=t.nodeName;i||!/^(TABLE|IMG|HR)$/.test(n)||F(t)||(2!==e.button&&a.selection.select(t,"TABLE"===n),"mousedown"===e.type&&a.nodeChanged())}),a.dom.bind(A,"mscontrolselect",function(e){var t=function(e){he.setEditorTimeout(a,function(){a.selection.select(e)})};if(F(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}));var t=he.throttle(function(e){a.composing||L(e)});a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged",t),a.on("keyup compositionend",function(e){u&&"TABLE"===u.nodeName&&t(e)}),a.on("hide blur",I),a.on("contextmenu",n)}),a.on("remove",M),{isResizable:O,showResizeRect:o,hideResizeRect:I,updateResizeRect:L,destroy:function(){u=s=null}}},kb=function(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}},_b=function(e,t,n){var r,o,i,a,u,s=e.dom,c=s.getRoot(),l=0;if(u={elm:t,alignToTop:n},e.fire("scrollIntoView",u),!u.isDefaultPrevented()&&Uo.isElement(t)){if(!1===n&&(l=t.offsetHeight),"BODY"!==c.nodeName){var f=e.selection.getScrollContainer();if(f)return r=kb(t).y-kb(f).y+l,a=f.clientHeight,void((r<(i=f.scrollTop)||i+a<r+25)&&(f.scrollTop=r<i?r:r-a+25))}o=s.getViewPort(e.getWin()),r=s.getPos(t).y+l,i=o.y,a=o.h,(r<o.y||i+a<r+25)&&e.getWin().scrollTo(0,r<i?r:r-a+25)}},Ab=function(d,e){Z(Eu.fromRangeStart(e).getClientRects()).each(function(e){var t,n,r,o,i,a,u,s,c,l=function(e){if(e.inline)return e.getBody().getBoundingClientRect();var t=e.getWin();return{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight,width:t.innerWidth,height:t.innerHeight}}(d),f={x:(i=t=l,a=n=e,a.left>i.left&&a.right<i.right?0:a.left<i.left?a.left-i.left:a.right-i.right),y:(r=t,o=n,o.top>r.top&&o.bottom<r.bottom?0:o.top<r.top?o.top-r.top:o.bottom-r.bottom)};s=0!==f.x?0<f.x?f.x+4:f.x-4:0,c=0!==f.y?0<f.y?f.y+4:f.y-4:0,(u=d).inline?(u.getBody().scrollLeft+=s,u.getBody().scrollTop+=c):u.getWin().scrollBy(s,c)})},Rb=function(e){return Uo.isContentEditableTrue(e)||Uo.isContentEditableFalse(e)},Db=function(e,t,n){var r,o,i,a,u,s=n;if(s.caretPositionFromPoint)(o=s.caretPositionFromPoint(e,t))&&((r=n.createRange()).setStart(o.offsetNode,o.offset),r.collapse(!0));else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(s.body.createTextRange){r=s.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(c){r=function(e,n,t){var r,o,i;if(r=t.elementFromPoint(e,n),o=t.body.createTextRange(),r&&"HTML"!==r.tagName||(r=t.body),o.moveToElementText(r),0<(i=(i=Xt.toArray(o.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-(t=Math.abs(Math.max(t.top-n,t.bottom-n)))})).length){n=(i[0].bottom+i[0].top)/2;try{return o.moveToPoint(e,n),o.collapse(!0),o}catch(a){}}return null}(e,t,n)}return i=r,a=n.body,u=i&&i.parentElement?i.parentElement():null,Uo.isContentEditableFalse(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(u,a,Rb))?null:i}return r},Ob=function(n,e){return W(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})},Bb=function(e,t){var n=(t||V.document).createDocumentFragment();return z(e,function(e){n.appendChild(e.dom())}),ar.fromDom(n)},Pb=_r("element","width","rows"),Ib=_r("element","cells"),Lb=_r("x","y"),Fb=function(e,t){var n=parseInt(Nr(e,t),10);return isNaN(n)?1:n},Mb=function(e){return j(e,function(e,t){return t.cells().length>e?t.cells().length:e},0)},zb=function(e,t){for(var n=e.rows(),r=0;r<n.length;r++)for(var o=n[r].cells(),i=0;i<o.length;i++)if(Fr(o[i],t))return _.some(Lb(i,r));return _.none()},Ub=function(e,t,n,r,o){for(var i=[],a=e.rows(),u=n;u<=o;u++){var s=a[u].cells(),c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(Ib(a[u].element(),c))}return i},jb=function(e){var o=Pb(pa(e),0,[]);return z(Ji(e,"tr"),function(n,r){z(Ji(n,"td,th"),function(e,t){!function(e,t,n,r,o){for(var i=Fb(o,"rowspan"),a=Fb(o,"colspan"),u=e.rows(),s=n;s<n+i;s++){u[s]||(u[s]=Ib(ha(r),[]));for(var c=t;c<t+a;c++)u[s].cells()[c]=s===n&&c===t?o:pa(o)}}(o,function(e,t,n){for(;r=t,o=n,i=void 0,((i=e.rows())[o]?i[o].cells():[])[r];)t++;var r,o,i;return t}(o,t,r),r,n,e)})}),Pb(o.element(),Mb(o.rows()),o.rows())},Vb=function(e){return n=W((t=e).rows(),function(e){var t=W(e.cells(),function(e){var t=ha(e);return Er(t,"colspan"),Er(t,"rowspan"),t}),n=pa(e.element());return Fi(n,t),n}),r=pa(t.element()),o=ar.fromTag("tbody"),Fi(o,n),Li(r,o),r;var t,n,r,o},Hb=function(l,e,t){return zb(l,e).bind(function(c){return zb(l,t).map(function(e){return t=l,r=e,o=(n=c).x(),i=n.y(),a=r.x(),u=r.y(),s=i<u?Ub(t,o,i,a,u):Ub(t,o,u,a,i),Pb(t.element(),Mb(s),s);var t,n,r,o,i,a,u,s})})},qb=function(n,t){return X(n,function(e){return"li"===lr(e)&&Kh(e,t)}).fold(q([]),function(e){return(t=n,X(t,function(e){return"ul"===lr(e)||"ol"===lr(e)})).map(function(e){return[ar.fromTag("li"),ar.fromTag(lr(e))]}).getOr([]);var t})},$b=function(e,t){var n,r=ar.fromDom(t.commonAncestorContainer),o=af(r,e),i=U(o,function(e){return Co(e)||yo(e)}),a=qb(o,t),u=i.concat(a.length?a:Eo(n=r)?jr(n).filter(No).fold(q([]),function(e){return[n,e]}):No(n)?[n]:[]);return W(u,pa)},Wb=function(){return Bb([])},Kb=function(e,t){return n=ar.fromDom(t.cloneContents()),r=$b(e,t),o=j(r,function(e,t){return Li(t,e),t},n),0<r.length?Bb([o]):o;var n,r,o},Xb=function(e,o){return(t=e,n=o[0],na(n,"table",d(Fr,t))).bind(function(e){var t=o[0],n=o[o.length-1],r=jb(e);return Hb(r,t,n).map(function(e){return Bb([Vb(e)])})}).getOrThunk(Wb);var t,n},Yb=function(e,t){var n,r,o=Cm(t,e);return 0<o.length?Xb(e,o):(n=e,0<(r=t).length&&r[0].collapsed?Wb():Kb(n,r[0]))},Gb=function(e,t){if(void 0===t&&(t={}),t.get=!0,t.format=t.format||"html",t.selection=!0,(t=e.fire("BeforeGetContent",t)).isDefaultPrevented())return e.fire("GetContent",t),t.content;if("text"===t.format)return c=e,_.from(c.selection.getRng()).map(function(e){var t=c.dom.add(c.getBody(),"div",{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),n=xa(t.innerText);return c.dom.remove(t),n}).getOr("");t.getInner=!0;var n,r,o,i,a,u,s,c,l=(r=t,i=(n=e).selection.getRng(),a=n.dom.create("body"),u=n.selection.getSel(),s=Ob(n,gm(u)),(o=r.contextual?Yb(ar.fromDom(n.getBody()),s).dom():i.cloneContents())&&a.appendChild(o),n.selection.serializer.serialize(a,r));return"tree"===t.format?l:(t.content=e.selection.isCollapsed()?"":l,e.fire("GetContent",t),t.content)},Jb=function(e,t,n){var r,o,i,a=e.selection.getRng(),u=e.getDoc();if((n=n||{format:"html"}).set=!0,n.selection=!0,n.content=t,n.no_events||!(n=e.fire("BeforeSetContent",n)).isDefaultPrevented()){if(t=n.content,a.insertNode){t+='<span id="__caret">_</span>',a.startContainer===u&&a.endContainer===u?u.body.innerHTML=t:(a.deleteContents(),0===u.body.childNodes.length?u.body.innerHTML=t:a.createContextualFragment?a.insertNode(a.createContextualFragment(t)):(o=u.createDocumentFragment(),i=u.createElement("div"),o.appendChild(i),i.outerHTML=t,a.insertNode(o))),r=e.dom.get("__caret"),(a=u.createRange()).setStartBefore(r),a.setEndBefore(r),e.selection.setRng(a),e.dom.remove("__caret");try{e.selection.setRng(a)}catch(s){}}else a.item&&(u.execCommand("Delete",!1,null),a=e.getRng()),/^\s+/.test(t)?(a.pasteHTML('<span id="__mce_tmp">_</span>'+t),e.dom.remove("__mce_tmp")):a.pasteHTML(t);n.no_events||e.fire("SetContent",n)}else e.fire("SetContent",n)},Qb=function(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return _.from(i).map(ar.fromDom).map(function(e){return r&&t.collapsed?e:Kr(e,o(e,a)).getOr(e)}).bind(function(e){return dr(e)?_.some(e):jr(e)}).map(function(e){return e.dom()}).getOr(e)},Zb=function(e,t,n){return Qb(e,t,!0,n,function(e,t){return Math.min(e.dom().childNodes.length,t)})},eC=function(e,t,n){return Qb(e,t,!1,n,function(e,t){return 0<t?t-1:t})},tC=function(e,t){for(var n=e;e&&Uo.isText(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n},nC=Xt.each,rC=function(e){return!!e.select},oC=function(e){return!(!e||!e.ownerDocument)&&Mr(ar.fromDom(e.ownerDocument),ar.fromDom(e))},iC=function(u,s,e,c){var n,t,l,f,a,r=function(e,t){return Jb(c,e,t)},o=function(e){var t=m();t.collapse(!!e),i(t)},d=function(){return s.getSelection?s.getSelection():s.document.selection},m=function(){var e,t,n,r,o=function(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}};if(!s)return null;if(null==(r=s.document))return null;if(c.bookmark!==undefined&&!1===oh(c)){var i=rp(c);if(i.isSome())return i.map(function(e){return Ob(c,[e])[0]}).getOr(r.createRange())}try{(e=d())&&!Uo.isRestrictedNode(e.anchorNode)&&(t=0<e.rangeCount?e.getRangeAt(0):e.createRange?e.createRange():r.createRange())}catch(a){}return(t=Ob(c,[t])[0])||(t=r.createRange?r.createRange():r.body.createTextRange()),t.setStart&&9===t.startContainer.nodeType&&t.collapsed&&(n=u.getRoot(),t.setStart(n,0),t.setEnd(n,0)),l&&f&&(0===o(t.START_TO_START,t,l)&&0===o(t.END_TO_END,t,l)?t=f:f=l=null),t},i=function(e,t){var n,r;if((o=e)&&(rC(o)||oC(o.startContainer)&&oC(o.endContainer))){var o,i=rC(e)?e:null;if(i){f=null;try{i.select()}catch(a){}}else{if(n=d(),e=c.fire("SetSelectionRange",{range:e,forward:t}).range,n){f=e;try{n.removeAllRanges(),n.addRange(e)}catch(a){}!1===t&&n.extend&&(n.collapse(e.endContainer,e.endOffset),n.extend(e.startContainer,e.startOffset)),l=0<n.rangeCount?n.getRangeAt(0):null}e.collapsed||e.startContainer!==e.endContainer||!n.setBaseAndExtent||fe.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(r=e.startContainer.childNodes[e.startOffset])&&"IMG"===r.tagName&&(n.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),n.anchorNode===e.startContainer&&n.focusNode===e.endContainer||n.setBaseAndExtent(r,0,r,1)),c.fire("AfterSetSelectionRange",{range:e,forward:t})}}},g=function(){var e,t,n=d();return!(n&&n.anchorNode&&n.focusNode)||((e=u.createRng()).setStart(n.anchorNode,n.anchorOffset),e.collapse(!0),(t=u.createRng()).setStart(n.focusNode,n.focusOffset),t.collapse(!0),e.compareBoundaryPoints(e.START_TO_START,t)<=0)},p={bookmarkManager:null,controlSelection:null,dom:u,win:s,serializer:e,editor:c,collapse:o,setCursorLocation:function(e,t){var n=u.createRng();e?(n.setStart(e,t),n.setEnd(e,t),i(n),o(!1)):(Xh(u,n,c.getBody(),!0),i(n))},getContent:function(e){return Gb(c,e)},setContent:r,getBookmark:function(e,t){return n.getBookmark(e,t)},moveToBookmark:function(e){return n.moveToBookmark(e)},select:function(e,t){var r,n,o;return(r=u,n=e,o=t,_.from(n).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(Xh(r,n,e,!0),Xh(r,n,e,!1)),n})).each(i),e},isCollapsed:function(){var e=m(),t=d();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:g,setNode:function(e){return r(u.getOuterHTML(e)),e},getNode:function(){return e=c.getBody(),(t=m())?(r=t.startContainer,o=t.endContainer,i=t.startOffset,a=t.endOffset,n=t.commonAncestorContainer,!t.collapsed&&(r===o&&a-i<2&&r.hasChildNodes()&&(n=r.childNodes[i]),3===r.nodeType&&3===o.nodeType&&(r=r.length===i?tC(r.nextSibling,!0):r.parentNode,o=0===a?tC(o.previousSibling,!1):o.parentNode,r&&r===o))?r:n&&3===n.nodeType?n.parentNode:n):e;var e,t,n,r,o,i,a},getSel:d,setRng:i,getRng:m,getStart:function(e){return Zb(c.getBody(),m(),e)},getEnd:function(e){return eC(c.getBody(),m(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o,i,a=[];if(i=e.getRoot(),n=e.getParent(n||Zb(i,t,t.collapsed),e.isBlock),r=e.getParent(r||eC(i,t,t.collapsed),e.isBlock),n&&n!==i&&a.push(n),n&&r&&n!==r)for(var u=new mo(o=n,i);(o=u.next())&&o!==r;)e.isBlock(o)&&a.push(o);return r&&n!==r&&r!==i&&a.push(r),a}(u,m(),e,t)},normalize:function(){var e=m(),t=d();if(!hm(t)&&Yh(c)){var n=kg(u,e);return n.each(function(e){i(e,g())}),n.getOr(e)}return e},selectorChanged:function(e,t){var i;return a||(a={},i={},c.on("NodeChange",function(e){var n=e.element,r=u.getParents(n,null,u.getRoot()),o={};nC(a,function(e,n){nC(r,function(t){if(u.is(t,n))return i[n]||(nC(e,function(e){e(!0,{node:t,selector:n,parents:r})}),i[n]=e),o[n]=e,!1})}),nC(i,function(e,t){o[t]||(delete i[t],nC(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),a[e]||(a[e]=[]),a[e].push(t),p},getScrollContainer:function(){for(var e,t=u.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){return _b(c,e,t)},placeCaretAt:function(e,t){return i(Db(e,t,c.getDoc()))},getBoundingClientRect:function(){var e=m();return e.collapsed?ku.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){s=l=f=null,t.destroy()}};return n=Nb(p),t=Tb(p,c),p.bookmarkManager=n,p.controlSelection=t,p};(wb=xb||(xb={}))[wb.Br=0]="Br",wb[wb.Block=1]="Block",wb[wb.Wrap=2]="Wrap",wb[wb.Eol=3]="Eol";var aC=function(e,t){return e===Su.Backwards?t.reverse():t},uC=function(e,t,n,r){for(var o,i,a,u,s,c,l=Gs(n),f=r,d=[];f&&(s=l,c=f,o=t===Su.Forwards?s.next(c):s.prev(c));){if(Uo.isBr(o.getNode(!1)))return t===Su.Forwards?{positions:aC(t,d).concat([o]),breakType:xb.Br,breakAt:_.some(o)}:{positions:aC(t,d),breakType:xb.Br,breakAt:_.some(o)};if(o.isVisible()){if(e(f,o)){var m=(i=t,a=f,u=o,Uo.isBr(u.getNode(i===Su.Forwards))?xb.Br:!1===Ss(a,u)?xb.Block:xb.Wrap);return{positions:aC(t,d),breakType:m,breakAt:_.some(o)}}d.push(o),f=o}else f=o}return{positions:aC(t,d),breakType:xb.Eol,breakAt:_.none()}},sC=function(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===Su.Backwards?t.concat(e):[e].concat(t)}).getOr([])},cC=function(e,i){return j(e,function(e,o){return e.fold(function(){return _.some(o)},function(r){return nu(Z(r.getClientRects()),Z(o.getClientRects()),function(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},_.none())},lC=function(t,e){return Z(e.getClientRects()).bind(function(e){return cC(t,e.left)})},fC=d(uC,Eu.isAbove,-1),dC=d(uC,Eu.isBelow,1),mC=d(sC,-1,fC),gC=d(sC,1,dC),pC=Uo.isContentEditableFalse,hC=Qa,vC=function(e,t,n,r){var o=e===Su.Forwards,i=o?If:Lf;if(!r.collapsed){var a=hC(r);if(pC(a))return ig(e,t,a,e===Su.Backwards,!0)}var u=Ea(r.startContainer),s=Bs(e,t.getBody(),r);if(i(s))return ag(t,s.getNode(!o));var c=jl.normalizePosition(o,n(s));if(!c)return u?r:null;if(i(c))return ig(e,t,c.getNode(!o),o,!0);var l=n(c);return l&&i(l)&&Ls(c,l)?ig(e,t,l.getNode(!o),o,!0):u?sg(t,c.toRange(),!0):null},yC=function(e,t,n,r){var o,i,a,u,s,c,l,f,d;if(d=hC(r),o=Bs(e,t.getBody(),r),i=n(t.getBody(),mv(1),o),a=U(i,gv(1)),s=Ht.last(o.getClientRects()),(If(o)||Mf(o))&&(d=o.getNode()),(Lf(o)||zf(o))&&(d=o.getNode(!0)),!s)return null;if(c=s.left,(u=Cv(a,c))&&pC(u.node))return l=Math.abs(c-u.left),f=Math.abs(c-u.right),ig(e,t,u.node,l<f,!0);if(d){var m=function(e,t,n,r){var o,i,a,u,s,c,l=Gs(t),f=[],d=0,m=function(e){return Ht.last(e.getClientRects())};1===e?(o=l.next,i=Ga,a=Ya,u=ku.after(r)):(o=l.prev,i=Ya,a=Ga,u=ku.before(r)),c=m(u);do{if(u.isVisible()&&!a(s=m(u),c)){if(0<f.length&&i(s,Ht.last(f))&&d++,(s=Wa(s)).position=u,s.line=d,n(s))return f;f.push(s)}}while(u=o(u));return f}(e,t.getBody(),mv(1),d);if(u=Cv(U(m,gv(1)),c))return sg(t,u.position.toRange(),!0);if(u=Ht.last(U(m,gv(0))))return sg(t,u.position.toRange(),!0)}},bC=function(e,t,n){var r,o,i,a,u=Gs(e.getBody()),s=d(Is,u.next),c=d(Is,u.prev);if(n.collapsed&&e.settings.forced_root_block){if(!(r=e.dom.getParent(n.startContainer,"PRE")))return;(1===t?s(ku.fromRangeStart(n)):c(ku.fromRangeStart(n)))||(a=(i=e).dom.create(wl(i)),(!fe.ie||11<=fe.ie)&&(a.innerHTML='<br data-mce-bogus="1">'),o=a,1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse())}},CC=function(l,f){return function(){var e,t,n,r,o,i,a,u,s,c=(t=f,r=Gs((e=l).getBody()),o=d(Is,r.next),i=d(Is,r.prev),a=t?Su.Forwards:Su.Backwards,u=t?o:i,s=e.selection.getRng(),(n=vC(a,e,u,s))?n:(n=bC(e,a,s))||null);return!!c&&(l.selection.setRng(c),!0)}},xC=function(u,s){return function(){var e,t,n,r,o,i,a=(r=(t=s)?1:-1,o=t?dv:fv,i=(e=u).selection.getRng(),(n=yC(r,e,o,i))?n:(n=bC(e,r,i))||null);return!!a&&(u.selection.setRng(a),!0)}},wC=function(r,o){return function(){var t,e=o?ku.fromRangeEnd(r.selection.getRng()):ku.fromRangeStart(r.selection.getRng()),n=o?dC(r.getBody(),e):fC(r.getBody(),e);return(o?ee(n.positions):Z(n.positions)).filter((t=o,function(e){return t?Lf(e):If(e)})).fold(q(!1),function(e){return r.selection.setRng(e.toRange()),!0})}},NC=function(e,t,n,r,o){var i,a,u,s,c=Ji(ar.fromDom(n),"td,th,caption").map(function(e){return e.dom()}),l=U((i=e,G(c,function(e){var t,n,r=(t=Wa(e.getBoundingClientRect()),n=-1,{left:t.left-n,top:t.top-n,right:t.right+2*n,bottom:t.bottom+2*n,width:t.width+n,height:t.height+n});return[{x:r.left,y:i(r),cell:e},{x:r.right,y:i(r),cell:e}]})),function(e){return t(e,o)});return(a=l,u=r,s=o,j(a,function(e,r){return e.fold(function(){return _.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-u)+Math.abs(e.y-s)),n=Math.sqrt(Math.abs(r.x-u)+Math.abs(r.y-s));return _.some(n<t?r:e)})},_.none())).map(function(e){return e.cell})},EC=d(NC,function(e){return e.bottom},function(e,t){return e.y<t}),SC=d(NC,function(e){return e.top},function(e,t){return e.y>t}),TC=function(t,n){return Z(n.getClientRects()).bind(function(e){return EC(t,e.left,e.top)}).bind(function(e){return lC((t=e,uc.lastPositionIn(t).map(function(e){return fC(t,e).positions.concat(e)}).getOr([])),n);var t})},kC=function(t,n){return ee(n.getClientRects()).bind(function(e){return SC(t,e.left,e.top)}).bind(function(e){return lC((t=e,uc.firstPositionIn(t).map(function(e){return[e].concat(dC(t,e).positions)}).getOr([])),n);var t})},_C=function(e,t){e.selection.setRng(t),Ab(e,t)},AC=function(e,t,n){var r,o,i,a,u=e(t,n);return(a=u).breakType===xb.Wrap&&0===a.positions.length||!Uo.isBr(n.getNode())&&(i=u).breakType===xb.Br&&1===i.positions.length?(r=e,o=t,!u.breakAt.map(function(e){return r(o,e).breakAt.isSome()}).getOr(!1)):u.breakAt.isNone()},RC=d(AC,fC),DC=d(AC,dC),OC=function(e,t,n,r){var o,i,a,u,s=e.selection.getRng(),c=t?1:-1;if(ds()&&(o=t,i=s,a=n,u=ku.fromRangeStart(i),uc.positionIn(!o,a).map(function(e){return e.isEqual(u)}).getOr(!1))){var l=ig(c,e,n,!t,!0);return _C(e,l),!0}return!1},BC=function(e,t){var n=t.getNode(e);return Uo.isElement(n)&&"TABLE"===n.nodeName?_.some(n):_.none()},PC=function(u,s,c){var e=BC(!!s,c),t=!1===s;e.fold(function(){return _C(u,c.toRange())},function(a){return uc.positionIn(t,u.getBody()).filter(function(e){return e.isEqual(c)}).fold(function(){return _C(u,c.toRange())},function(e){return n=s,o=a,t=c,void((i=wl(r=u))?r.undoManager.transact(function(){var e=ar.fromTag(i);wr(e,Nl(r)),Li(e,ar.fromTag("br")),n?Pi(ar.fromDom(o),e):Bi(ar.fromDom(o),e);var t=r.dom.createRng();t.setStart(e.dom(),0),t.setEnd(e.dom(),0),_C(r,t)}):_C(r,t.toRange()));var n,r,o,t,i})})},IC=function(e,t,n,r){var o,i,a,u,s,c,l=e.selection.getRng(),f=ku.fromRangeStart(l),d=e.getBody();if(!t&&RC(r,f)){var m=(u=d,TC(s=n,c=f).orThunk(function(){return Z(c.getClientRects()).bind(function(e){return cC(mC(u,ku.before(s)),e.left)})}).getOr(ku.before(s)));return PC(e,t,m),!0}return!(!t||!DC(r,f))&&(o=d,m=kC(i=n,a=f).orThunk(function(){return Z(a.getClientRects()).bind(function(e){return cC(gC(o,ku.after(i)),e.left)})}).getOr(ku.after(i)),PC(e,t,m),!0)},LC=function(t,n){return function(){return _.from(t.dom.getParent(t.selection.getNode(),"td,th")).bind(function(e){return _.from(t.dom.getParent(e,"table")).map(function(e){return OC(t,n,e)})}).getOr(!1)}},FC=function(n,r){return function(){return _.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return _.from(n.dom.getParent(t,"table")).map(function(e){return IC(n,r,e,t)})}).getOr(!1)}},MC=function(e){return F(["figcaption"],lr(e))},zC=function(e){var t=V.document.createRange();return t.setStartBefore(e.dom()),t.setEndBefore(e.dom()),t},UC=function(e,t,n){n?Li(e,t):Ii(e,t)},jC=function(e,t,n,r){return""===t?(l=e,f=r,d=ar.fromTag("br"),UC(l,d,f),zC(d)):(o=e,i=r,a=t,u=n,s=ar.fromTag(a),c=ar.fromTag("br"),wr(s,u),Li(s,c),UC(o,s,i),zC(c));var o,i,a,u,s,c,l,f,d},VC=function(e,t,n){return t?(o=e.dom(),dC(o,n).breakAt.isNone()):(r=e.dom(),fC(r,n).breakAt.isNone());var r,o},HC=function(t,n){var e,r,o,i=ar.fromDom(t.getBody()),a=ku.fromRangeStart(t.selection.getRng()),u=wl(t),s=Nl(t);return(e=a,r=i,o=d(Fr,r),ta(ar.fromDom(e.container()),bo,o).filter(MC)).exists(function(){if(VC(i,n,a)){var e=jC(i,u,s,n);return t.selection.setRng(e),!0}return!1})},qC=function(e,t){return function(){return!!e.selection.isCollapsed()&&HC(e,t)}},$C=function(e,r){return G(W(e,function(e){return Xy({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:o},e)}),function(e){return t=e,(n=r).keyCode===t.keyCode&&n.shiftKey===t.shiftKey&&n.altKey===t.altKey&&n.ctrlKey===t.ctrlKey&&n.metaKey===t.metaKey?[e]:[];var t,n})},WC=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,r)}},KC=function(e,t){return X($C(e,t),function(e){return e.action()})},XC=function(i,a){i.on("keydown",function(e){var t,n,r,o;!1===e.isDefaultPrevented()&&(t=i,n=a,r=e,o=or.detect().os,KC([{keyCode:Sv.RIGHT,action:CC(t,!0)},{keyCode:Sv.LEFT,action:CC(t,!1)},{keyCode:Sv.UP,action:xC(t,!1)},{keyCode:Sv.DOWN,action:xC(t,!0)},{keyCode:Sv.RIGHT,action:LC(t,!0)},{keyCode:Sv.LEFT,action:LC(t,!1)},{keyCode:Sv.UP,action:FC(t,!1)},{keyCode:Sv.DOWN,action:FC(t,!0)},{keyCode:Sv.RIGHT,action:Xd.move(t,n,!0)},{keyCode:Sv.LEFT,action:Xd.move(t,n,!1)},{keyCode:Sv.RIGHT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:Xd.moveNextWord(t,n)},{keyCode:Sv.LEFT,ctrlKey:!o.isOSX(),altKey:o.isOSX(),action:Xd.movePrevWord(t,n)},{keyCode:Sv.UP,action:qC(t,!1)},{keyCode:Sv.DOWN,action:qC(t,!0)}],r).each(function(e){r.preventDefault()}))})},YC=function(o,i){o.on("keydown",function(e){var t,n,r;!1===e.isDefaultPrevented()&&(t=o,n=i,r=e,KC([{keyCode:Sv.BACKSPACE,action:WC(ad,t,!1)},{keyCode:Sv.DELETE,action:WC(ad,t,!0)},{keyCode:Sv.BACKSPACE,action:WC(lg,t,!1)},{keyCode:Sv.DELETE,action:WC(lg,t,!0)},{keyCode:Sv.BACKSPACE,action:WC(Qd,t,n,!1)},{keyCode:Sv.DELETE,action:WC(Qd,t,n,!0)},{keyCode:Sv.BACKSPACE,action:WC(Dm,t,!1)},{keyCode:Sv.DELETE,action:WC(Dm,t,!0)},{keyCode:Sv.BACKSPACE,action:WC(bf,t,!1)},{keyCode:Sv.DELETE,action:WC(bf,t,!0)},{keyCode:Sv.BACKSPACE,action:WC(pf,t,!1)},{keyCode:Sv.DELETE,action:WC(pf,t,!0)},{keyCode:Sv.BACKSPACE,action:WC(ng,t,!1)},{keyCode:Sv.DELETE,action:WC(ng,t,!0)}],r).each(function(e){r.preventDefault()}))}),o.on("keyup",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=o,n=e,KC([{keyCode:Sv.BACKSPACE,action:WC(ud,t)},{keyCode:Sv.DELETE,action:WC(ud,t)}],n))})},GC=function(e){return _.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))},JC=function(e,t){var n,r,o,i=t,a=e.dom,u=e.schema.getMoveCaretBeforeOnEnterElements();if(t){if(/^(LI|DT|DD)$/.test(t.nodeName)){var s=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild);s&&/^(UL|OL|DL)$/.test(s.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(o=a.createRng(),t.normalize(),t.hasChildNodes()){for(n=new mo(t,t);r=n.current();){if(Uo.isText(r)){o.setStart(r,0),o.setEnd(r,0);break}if(u[r.nodeName.toLowerCase()]){o.setStartBefore(r),o.setEndBefore(r);break}i=r,r=n.next()}r||(o.setStart(i,0),o.setEnd(i,0))}else Uo.isBr(t)?t.nextSibling&&a.isBlock(t.nextSibling)?(o.setStartBefore(t),o.setEndBefore(t)):(o.setStartAfter(t),o.setEndAfter(t)):(o.setStart(t,0),o.setEnd(t,0));e.selection.setRng(o),a.remove(void 0),e.selection.scrollIntoView(t)}},QC=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},ZC=GC,ex=function(e){return GC(e).fold(q(""),function(e){return e.nodeName.toUpperCase()})},tx=function(e){return GC(e).filter(function(e){return Eo(ar.fromDom(e))}).isSome()},nx=function(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t},rx=function(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)},ox=function(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e},ix=function(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!Uo.isElement(r);)r=r[n?"nextSibling":"previousSibling"];return r===t},ax=function(e,t,n,r,o){var i=e.dom,a=e.selection.getRng();if(n!==e.getBody()){var u;rx(u=n)&&rx(u.parentNode)&&(o="LI");var s,c,l=o?t(o):i.create("BR");if(ix(n,r,!0)&&ix(n,r,!1))nx(n,"LI")?i.insertAfter(l,ox(n)):i.replace(l,n);else if(ix(n,r,!0))nx(n,"LI")?(i.insertAfter(l,ox(n)),l.appendChild(i.doc.createTextNode(" ")),l.appendChild(n)):n.parentNode.insertBefore(l,n);else if(ix(n,r,!1))i.insertAfter(l,ox(n));else{n=ox(n);var f=a.cloneRange();f.setStartAfter(r),f.setEndAfter(n);var d=f.extractContents();"LI"===o&&(c="LI",(s=d).firstChild&&s.firstChild.nodeName===c)?(l=d.firstChild,i.insertAfter(d,n)):(i.insertAfter(d,n),i.insertAfter(l,n))}i.remove(r),JC(e,l)}},ux=function(e){e.innerHTML='<br data-mce-bogus="1">'},sx=function(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t},cx=function(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)},lx=function(e,t,n){return!1===Uo.isText(t)?n:e?1===n&&t.data.charAt(n-1)===Ca?0:n:n===t.data.length-1&&t.data.charAt(n)===Ca?t.data.length:n},fx=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},dx=function(o,i,e){_.from(e.style).map(o.dom.parseStyle).each(function(e){var t=function(e){var t={},n=e.dom();if(br(n))for(var r=0;r<n.style.length;r++){var o=n.style.item(r);t[o]=n.style[o]}return t}(ar.fromDom(i)),n=da(da({},t),e);o.dom.setStyles(i,n)});var t=_.from(e["class"]).map(function(e){return e.split(/\s+/)}),n=_.from(i.className).map(function(e){return U(e.split(/\s+/),function(e){return""!==e})});nu(t,n,function(t,e){var n=U(e,function(e){return!F(t,e)}),r=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),o=0;for(t=0;t<n;t++)for(var i=arguments[t],a=0,u=i.length;a<u;a++,o++)r[o]=i[a];return r}(t,n);o.dom.setAttrib(i,"class",r.join(" "))});var r=["style","class"],a=yr(e,function(e,t){return!F(r,t)}).t;o.dom.setAttribs(i,a)},mx=function(e,t){var n=wl(e);if(n&&n.toLowerCase()===t.tagName.toLowerCase()){var r=Nl(e);dx(e,t,r)}},gx=function(a,e){var t,u,s,i,c,n,r,o,l,f,d,m,g,p,h,v,y,b,C,x=a.dom,w=a.schema,N=w.getNonEmptyElements(),E=a.selection.getRng(),S=function(e){var t,n,r,o=s,i=w.getTextInlineElements();if(r=t=e||"TABLE"===f||"HR"===f?x.create(e||m):c.cloneNode(!1),!1===Tl(a))x.setAttrib(t,"style",null),x.setAttrib(t,"class",null);else do{if(i[o.nodeName]){if(Gu(o)||vc(o))continue;n=o.cloneNode(!1),x.setAttrib(n,"id",""),t.hasChildNodes()?n.appendChild(t.firstChild):r=n,t.appendChild(n)}}while((o=o.parentNode)&&o!==u);return mx(a,t),ux(r),t},T=function(e){var t,n,r,o;if(o=lx(e,s,i),Uo.isText(s)&&(e?0<o:o<s.nodeValue.length))return!1;if(s.parentNode===c&&g&&!e)return!0;if(e&&Uo.isElement(s)&&s===c.firstChild)return!0;if(sx(s,"TABLE")||sx(s,"HR"))return g&&!e||!g&&e;for(t=new mo(s,c),Uo.isText(s)&&(e&&0===o?t.prev():e||o!==s.nodeValue.length||t.next());n=t.current();){if(Uo.isElement(n)){if(!n.getAttribute("data-mce-bogus")&&(r=n.nodeName.toLowerCase(),N[r]&&"br"!==r))return!1}else if(Uo.isText(n)&&!/^[ \t\r\n]*$/.test(n.nodeValue))return!1;e?t.prev():t.next()}return!0},k=function(){r=/^(H[1-6]|PRE|FIGURE)$/.test(f)&&"HGROUP"!==d?S(m):S(),kl(a)&&cx(x,l)&&x.isEmpty(c)?r=x.split(l,c):x.insertAfter(r,c),JC(a,r)};kg(x,E).each(function(e){E.setStart(e.startContainer,e.startOffset),E.setEnd(e.endContainer,e.endOffset)}),s=E.startContainer,i=E.startOffset,m=wl(a),n=e.shiftKey,Uo.isElement(s)&&s.hasChildNodes()&&(g=i>s.childNodes.length-1,s=s.childNodes[Math.min(i,s.childNodes.length-1)]||s,i=g&&Uo.isText(s)?s.nodeValue.length:0),(u=fx(x,s))&&((m&&!n||!m&&n)&&(s=function(e,t,n,r,o){var i,a,u,s,c,l,f,d=t||"P",m=e.dom,g=fx(m,r);if(!(a=m.getParent(r,m.isBlock))||!cx(m,a)){if(l=(a=a||g)===e.getBody()||(f=a)&&/^(TD|TH|CAPTION)$/.test(f.nodeName)?a.nodeName.toLowerCase():a.parentNode.nodeName.toLowerCase(),!a.hasChildNodes())return i=m.create(d),mx(e,i),a.appendChild(i),n.setStart(i,0),n.setEnd(i,0),i;for(s=r;s.parentNode!==a;)s=s.parentNode;for(;s&&!m.isBlock(s);)s=(u=s).previousSibling;if(u&&e.schema.isValidChild(l,d.toLowerCase())){for(i=m.create(d),mx(e,i),u.parentNode.insertBefore(i,u),s=u;s&&!m.isBlock(s);)c=s.nextSibling,i.appendChild(s),s=c;n.setStart(r,o),n.setEnd(r,o)}}return r}(a,m,E,s,i)),c=x.getParent(s,x.isBlock),l=c?x.getParent(c.parentNode,x.isBlock):null,f=c?c.nodeName.toUpperCase():"","LI"!==(d=l?l.nodeName.toUpperCase():"")||e.ctrlKey||(l=(c=l).parentNode,f=d),/^(LI|DT|DD)$/.test(f)&&x.isEmpty(c)?ax(a,S,l,c,m):m&&c===a.getBody()||(m=m||"P",Ea(c)?(r=Ba(c),x.isEmpty(c)&&ux(c),mx(a,r),JC(a,r)):T()?k():T(!0)?(r=c.parentNode.insertBefore(S(),c),JC(a,sx(c,"HR")?r:c)):((t=(b=E,C=b.cloneRange(),C.setStart(b.startContainer,lx(!0,b.startContainer,b.startOffset)),C.setEnd(b.endContainer,lx(!1,b.endContainer,b.endOffset)),C).cloneRange()).setEndAfter(c),o=t.extractContents(),y=o,z(Gi(ar.fromDom(y),mr),function(e){var t=e.dom();t.nodeValue=xa(t.nodeValue)}),function(e){for(;Uo.isText(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(o),r=o.firstChild,x.insertAfter(o,c),function(e,t,n){var r,o=n,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;Uo.isElement(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(r=i.length;r--;)!(o=i[r]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(a=e,(u=o)&&"A"===u.nodeName&&a.isEmpty(u)&&e.remove(o));var a,u}}(x,N,r),p=x,(h=c).normalize(),(v=h.lastChild)&&!/^(left|right)$/gi.test(p.getStyle(v,"float",!0))||p.add(h,"br"),x.isEmpty(c)&&ux(c),r.normalize(),x.isEmpty(r)?(x.remove(r),k()):(mx(a,r),JC(a,r))),x.setAttrib(r,"id",""),a.fire("NewBlock",{newBlock:r})))},px=function(e,t){return ZC(e).filter(function(e){return 0<t.length&&Ir(ar.fromDom(e),t)}).isSome()},hx=function(e){return px(e,El(e))},vx=function(e){return px(e,Sl(e))},yx=Cf([{br:[]},{block:[]},{none:[]}]),bx=function(e,t){return vx(e)},Cx=function(n){return function(e,t){return""===wl(e)===n}},xx=function(n){return function(e,t){return tx(e)===n}},wx=function(n,r){return function(e,t){return ex(e)===n.toUpperCase()===r}},Nx=function(e){return wx("pre",e)},Ex=function(n){return function(e,t){return xl(e)===n}},Sx=function(e,t){return hx(e)},Tx=function(e,t){return t},kx=function(e){var t=wl(e),n=QC(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")},_x=function(e,t){return function(n,r){return j(e,function(e,t){return e&&t(n,r)},!0)?_.some(t):_.none()}},Ax=function(e,t){return yd([_x([bx],yx.none()),_x([wx("summary",!0)],yx.br()),_x([Nx(!0),Ex(!1),Tx],yx.br()),_x([Nx(!0),Ex(!1)],yx.block()),_x([Nx(!0),Ex(!0),Tx],yx.block()),_x([Nx(!0),Ex(!0)],yx.br()),_x([xx(!0),Tx],yx.br()),_x([xx(!0)],yx.block()),_x([Cx(!0),Tx,kx],yx.block()),_x([Cx(!0)],yx.br()),_x([Sx],yx.br()),_x([Cx(!1),Tx],yx.br()),_x([kx],yx.block())],[e,t.shiftKey]).getOr(yx.none())},Rx=function(e,t){Ax(e,t).fold(function(){Fg(e,t)},function(){gx(e,t)},o)},Dx=function(o){o.on("keydown",function(e){var t,n,r;e.keyCode===Sv.ENTER&&(t=o,(n=e).isDefaultPrevented()||(n.preventDefault(),(r=t.undoManager).typing&&(r.typing=!1,r.add()),t.undoManager.transact(function(){!1===t.selection.isCollapsed()&&t.execCommand("Delete"),Rx(t,n)})))})},Ox=function(n,r){var e=r.container(),t=r.offset();return Uo.isText(e)?(e.insertData(t,n),_.some(Eu(e,t+n.length))):Ps(r).map(function(e){var t=ar.fromText(n);return r.isAtEnd()?Pi(e,t):Bi(e,t),Eu(t.dom(),n.length)})},Bx=d(Ox,"\xa0"),Px=d(Ox," "),Ix=function(e,t,n){return uc.navigateIgnore(e,t,n,Bf)},Lx=function(e,t){return X(af(ar.fromDom(t.container()),e),bo)},Fx=function(e,n,r){return Ix(e,n.dom(),r).forall(function(t){return Lx(n,r).fold(function(){return!1===Ss(t,r,n.dom())},function(e){return!1===Ss(t,r,n.dom())&&Mr(e,ar.fromDom(t.container()))})})},Mx=function(t,n,r){return Lx(n,r).fold(function(){return Ix(t,n.dom(),r).forall(function(e){return!1===Ss(e,r,n.dom())})},function(e){return Ix(t,e.dom(),r).isNone()})},zx=d(Mx,!1),Ux=d(Mx,!0),jx=d(Fx,!1),Vx=d(Fx,!0),Hx=function(e){return Eu.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()},qx=function(e,t){var n=U(af(ar.fromDom(t.container()),e),bo);return Z(n).getOr(e)},$x=function(e,t){return Hx(t)?Of(t):Of(t)||uc.prevPosition(qx(e,t).dom(),t).exists(Of)},Wx=function(e,t){return Hx(t)?Df(t):Df(t)||uc.nextPosition(qx(e,t).dom(),t).exists(Df)},Kx=function(e){return Ps(e).bind(function(e){return ta(e,dr)}).exists(function(e){return t=Tr(e,"white-space"),F(["pre","pre-wrap"],t);var t})},Xx=function(e,t){return o=e,i=t,uc.prevPosition(o.dom(),i).isNone()||(n=e,r=t,uc.nextPosition(n.dom(),r).isNone())||zx(e,t)||Ux(e,t)||Ef(e,t)||Nf(e,t);var n,r,o,i},Yx=function(e,t){var n,r,o,i=(r=(n=t).container(),o=n.offset(),Uo.isText(r)&&o<r.data.length?Eu(r,o+1):n);return!Kx(i)&&(Ux(e,i)||Vx(e,i)||Nf(e,i)||Wx(e,i))},Gx=function(e,t){return n=e,!Kx(r=t)&&(zx(n,r)||jx(n,r)||Ef(n,r)||$x(n,r))||Yx(e,t);var n,r},Jx=function(e,t){return kf(e.charAt(t))},Qx=function(e){var t=e.container();return Uo.isText(t)&&Yn(t.data,"\xa0")},Zx=function(e){var n,t=e.data,r=(n=t.split(""),W(n,function(e,t){return kf(e)&&0<t&&t<n.length-1&&Af(n[t-1])&&Af(n[t+1])?" ":e}).join(""));return r!==t&&(e.data=r,!0)},ew=function(l,e){return _.some(e).filter(Qx).bind(function(e){var t,n,r,o,i,a,u,s,c=e.container();return i=l,u=(a=c).data,s=Eu(a,0),Jx(u,0)&&!Gx(i,s)&&(a.data=" "+u.slice(1),1)||Zx(c)||(t=l,r=(n=c).data,o=Eu(n,r.length-1),Jx(r,r.length-1)&&!Gx(t,o)&&(n.data=r.slice(0,-1)+" ",1))?_.some(e):_.none()})},tw=function(t){var e=ar.fromDom(t.getBody());t.selection.isCollapsed()&&ew(e,Eu.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})},nw=function(r,o){return function(e){return t=r,!Kx(n=e)&&(Xx(t,n)||$x(t,n)||Wx(t,n))?Bx(o):Px(o);var t,n}},rw=function(e){var t,n,r=ku.fromRangeStart(e.selection.getRng()),o=ar.fromDom(e.getBody());if(e.selection.isCollapsed()){var i=d(jl.isInlineTarget,e),a=ku.fromRangeStart(e.selection.getRng());return Ld(i,e.getBody(),a).bind((n=o,function(e){return e.fold(function(e){return uc.prevPosition(n.dom(),ku.before(e))},function(e){return uc.firstPositionIn(e)},function(e){return uc.lastPositionIn(e)},function(e){return uc.nextPosition(n.dom(),ku.after(e))})})).bind(nw(o,r)).exists((t=e,function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}))}return!1},ow=function(r){r.on("keydown",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=r,n=e,KC([{keyCode:Sv.SPACEBAR,action:WC(rw,t)}],n).each(function(e){n.preventDefault()}))})},iw=function(e,t){var n;t.hasAttribute("data-mce-caret")&&(Ba(t),(n=e).selection.setRng(n.selection.getRng()),e.selection.scrollIntoView(t))},aw=function(e,t){var n,r=(n=e,ra(ar.fromDom(n.getBody()),"*[data-mce-caret]").fold(q(null),function(e){return e.dom()}));if(r)return"compositionstart"===t.type?(t.preventDefault(),t.stopPropagation(),void iw(e,r)):void(ka(r)&&(iw(e,r),e.undoManager.add()))},uw=function(e){e.on("keyup compositionstart",d(aw,e))},sw=or.detect().browser,cw=function(t){var e,n;e=t,n=ji(function(){e.composing||tw(e)},0),sw.isIE()&&(e.on("keypress",function(e){n.throttle()}),e.on("remove",function(e){n.cancel()})),t.on("input",function(e){!1===e.isComposing&&tw(t)})},lw=function(r){r.on("keydown",function(e){var t,n;!1===e.isDefaultPrevented()&&(t=r,n=e,KC([{keyCode:Sv.END,action:wC(t,!0)},{keyCode:Sv.HOME,action:wC(t,!1)}],n).each(function(e){n.preventDefault()}))})},fw=function(e){var t=Xd.setupSelectedState(e);uw(e),XC(e,t),YC(e,t),Dx(e),ow(e),cw(e),lw(e)};function dw(u){var s,n,r,o=Xt.each,c=Sv.BACKSPACE,l=Sv.DELETE,f=u.dom,d=u.selection,e=u.settings,t=u.parser,i=fe.gecko,a=fe.ie,m=fe.webkit,g="data:text/mce-internal,",p=a?"Text":"URL",h=function(e,t){try{u.getDoc().execCommand(e,!1,t)}catch(n){}},v=function(e){return e.isDefaultPrevented()},y=function(){u.shortcuts.add("meta+a",null,"SelectAll")},b=function(){u.on("keydown",function(e){if(!v(e)&&e.keyCode===c&&d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})},C=function(){u.inline||(u.contentStyles.push("body {min-height: 150px}"),u.on("click",function(e){var t;if("HTML"===e.target.nodeName){if(11<fe.ie)return void u.getBody().focus();t=u.selection.getRng(),u.getBody().focus(),u.selection.setRng(t),u.selection.normalize(),u.nodeChanged()}}))};return u.on("keydown",function(e){var t,n,r,o,i;if(!v(e)&&e.keyCode===Sv.BACKSPACE&&(n=(t=d.getRng()).startContainer,r=t.startOffset,o=f.getRoot(),i=n,t.collapsed&&0===r)){for(;i&&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(u.formatter.toggle("blockquote",null,i),(t=f.createRng()).setStart(n,0),t.setEnd(n,0),d.setRng(t))}}),s=function(e){var t=f.create("body"),n=e.cloneContents();return t.appendChild(n),d.serializer.serialize(t,{format:"html"})},u.on("keydown",function(e){var t,n,r,o,i,a=e.keyCode;if(!v(e)&&(a===l||a===c)){if(t=u.selection.isCollapsed(),n=u.getBody(),t&&!f.isEmpty(n))return;if(!t&&(r=u.selection.getRng(),o=s(r),(i=f.createRng()).selectNode(u.getBody()),o!==s(i)))return;e.preventDefault(),u.setContent(""),n.firstChild&&f.isBlock(n.firstChild)?u.selection.setCursorLocation(n.firstChild,0):u.selection.setCursorLocation(n,0),u.nodeChanged()}}),fe.windowsPhone||u.on("keyup focusin mouseup",function(e){Sv.modifierPressed(e)||d.normalize()},!0),m&&(u.settings.content_editable||f.bind(u.getDoc(),"mousedown mouseup",function(e){var t;if(e.target===u.getDoc().documentElement)if(t=d.getRng(),u.getBody().focus(),"mousedown"===e.type){if(Ta(t.startContainer))return;d.placeCaretAt(e.clientX,e.clientY)}else d.setRng(t)}),u.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==f.getContentEditableParent(t)&&(e.preventDefault(),u.selection.select(t),u.nodeChanged()),"A"===t.nodeName&&f.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),d.select(t))}),e.forced_root_block&&u.on("init",function(){h("DefaultParagraphSeparator",e.forced_root_block)}),u.on("init",function(){u.dom.bind(u.getBody(),"submit",function(e){e.preventDefault()})}),b(),t.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&e[t].remove()}),fe.iOS?(u.inline||u.on("keydown",function(){V.document.activeElement===V.document.body&&u.getWin().focus()}),C(),u.on("click",function(e){var t=e.target;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),u.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")):y()),11<=fe.ie&&(C(),b()),fe.ie&&(y(),h("AutoUrlDetect",!1),u.on("dragstart",function(e){var t,n,r;(t=e).dataTransfer&&(u.selection.isCollapsed()&&"IMG"===t.target.tagName&&d.select(t.target),0<(n=u.selection.getContent()).length&&(r=g+escape(u.id)+","+escape(n),t.dataTransfer.setData(p,r)))}),u.on("drop",function(e){if(!v(e)){var t=(i=e).dataTransfer&&(a=i.dataTransfer.getData(p))&&0<=a.indexOf(g)?(a=a.substr(g.length).split(","),{id:unescape(a[0]),html:unescape(a[1])}):null;if(t&&t.id!==u.id){e.preventDefault();var n=Db(e.x,e.y,u.getDoc());d.setRng(n),r=t.html,o=!0,u.queryCommandSupported("mceInsertClipboardContent")?u.execCommand("mceInsertClipboardContent",!1,{content:r,internal:o}):u.execCommand("mceInsertContent",!1,r)}}var r,o,i,a})),i&&(u.on("keydown",function(e){if(!v(e)&&e.keyCode===c){if(!u.getBody().getElementsByTagName("hr").length)return;if(d.isCollapsed()&&0===d.getRng().startOffset){var t=d.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return f.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(f.remove(n),e.preventDefault())}}}),V.Range.prototype.getClientRects||u.on("mousedown",function(e){if(!v(e)&&"HTML"===e.target.nodeName){var t=u.getBody();t.blur(),he.setEditorTimeout(u,function(){t.focus()})}}),n=function(){var e=f.getAttribs(d.getStart().cloneNode(!1));return function(){var t=d.getStart();t!==u.getBody()&&(f.setAttrib(t,"style",null),o(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}},r=function(){return!d.isCollapsed()&&f.getParent(d.getStart(),f.isBlock)!==f.getParent(d.getEnd(),f.isBlock)},u.on("keypress",function(e){var t;if(!v(e)&&(8===e.keyCode||46===e.keyCode)&&r())return t=n(),u.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),f.bind(u.getDoc(),"cut",function(e){var t;!v(e)&&r()&&(t=n(),he.setEditorTimeout(u,function(){t()}))}),e.readonly||u.on("BeforeExecCommand MouseDown",function(){h("StyleWithCSS",!1),h("enableInlineTableEditing",!1),e.object_resizing||h("enableObjectResizing",!1)}),u.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||o(f.select("a"),function(e){var t=e.parentNode,n=f.getRoot();if(t.lastChild===e){for(;t&&!f.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}f.add(t,"br",{"data-mce-bogus":1})}})}),u.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"),fe.mac&&u.on("keydown",function(e){!Sv.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),u.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))}),b()),{refreshContentEditable:function(){},isHidden:function(){var e;return!i||u.removed?0:!(e=u.selection.getSel())||!e.rangeCount||0===e.rangeCount}}}var mw=function(e){return Uo.isElement(e)&&wo(ar.fromDom(e))},gw=function(t){t.on("click",function(e){3<=e.detail&&function(e){var t=e.selection.getRng(),n=Eu.fromRangeStart(t),r=Eu.fromRangeEnd(t);if(Eu.isElementPosition(n)){var o=n.container();mw(o)&&uc.firstPositionIn(o).each(function(e){return t.setStart(e.container(),e.offset())})}Eu.isElementPosition(r)&&(o=n.container(),mw(o)&&uc.lastPositionIn(o).each(function(e){return t.setEnd(e.container(),e.offset())})),e.selection.setRng(sl(t))}(t)})},pw=function(e){var t,n;(t=e).on("click",function(e){t.dom.getParent(e.target,"details")&&e.preventDefault()}),(n=e).parser.addNodeFilter("details",function(e){z(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),n.serializer.addNodeFilter("details",function(e){z(e,function(e){var t=e.attr("data-mce-open");e.attr("open",S(t)?t:null),e.attr("data-mce-open",null)})})},hw=Ei.DOM,vw=function(e){var t;e.bindPendingEventDelegates(),e.initialized=!0,e.fire("init"),e.focus(!0),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),(t=e).settings.auto_focus&&he.setEditorTimeout(t,function(){var e;(e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus)).destroyed||e.focus()},100)},yw=function(t,e){var n,r,u,o,i,a,s,c,l,f=t.settings,d=t.getElement(),m=t.getDoc();f.inline||(t.getElement().style.visibility=t.orgVisibility),e||f.content_editable||(m.open(),m.write(t.iframeHTML),m.close()),f.content_editable&&(t.on("remove",function(){var e=this.getBody();hw.removeClass(e,"mce-content-body"),hw.removeClass(e,"mce-edit-focus"),hw.setAttrib(e,"contentEditable",null)}),hw.addClass(d,"mce-content-body"),t.contentDocument=m=f.content_document||V.document,t.contentWindow=f.content_window||V.window,t.bodyElement=d,f.content_document=f.content_window=null,f.root_name=d.nodeName.toLowerCase()),(n=t.getBody()).disabled=!0,t.readonly=f.readonly,t.readonly||(t.inline&&"static"===hw.getStyle(n,"position",!0)&&(n.style.position="relative"),n.contentEditable=t.getParam("content_editable_state",!0)),n.disabled=!1,t.editorUpload=Uh(t),t.schema=fi(f),t.dom=Ei(m,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:f.force_hex_style_colors,class_filter:f.class_filter,update_styles:!0,root_element:t.inline?t.getBody():null,collect:f.content_editable,schema:t.schema,contentCssCors:Ml(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=((o=gb((u=t).settings,u.schema)).addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o,i=e.length,a=u.dom;i--;)if(r=(n=e[i]).attr(t),o="data-mce-"+t,!n.attributes.map[o]){if(0===r.indexOf("data:")||0===r.indexOf("blob:"))continue;"style"===t?((r=a.serializeStyle(a.parseStyle(r),n.name)).length||(r=null),n.attr(o,r),n.attr(t,r)):"tabindex"===t?(n.attr(o,r),n.attr(t,null)):n.attr(o,u.convertURL(r,t,n.name))}}),o.addNodeFilter("script",function(e){for(var t,n,r=e.length;r--;)0!==(n=(t=e[r]).attr("type")||"no/type").indexOf("mce-")&&t.attr("type","mce-"+n)}),o.addNodeFilter("#cdata",function(e){for(var t,n=e.length;n--;)(t=e[n]).type=8,t.name="#comment",t.value="[CDATA["+t.value+"]]"}),o.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t,n=e.length,r=u.schema.getNonEmptyElements();n--;)(t=e[n]).isEmpty(r)&&0===t.getAll("br").length&&(t.append(new rb("br",1)).shortEnded=!0)}),o),t.serializer=bb(f,t),t.selection=iC(t.dom,t.getWin(),t.serializer,t),t.annotator=Vc(t),t.formatter=$y(t),t.undoManager=Qv(t),t._nodeChangeDispatcher=new Gh(t),t._selectionOverrides=Av(t),pw(t),gw(t),fw(t),qh(t),t.fire("PreInit"),f.browser_spellcheck||f.gecko_spellcheck||(m.body.spellcheck=!1,hw.setAttrib(n,"spellcheck","false")),t.quirks=dw(t),t.fire("PostRender"),f.directionality&&(n.dir=f.directionality),f.nowrap&&(n.style.whiteSpace="nowrap"),f.protect&&t.on("BeforeSetContent",function(t){Xt.each(f.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type}),0<t.contentStyles.length&&(r="",Xt.each(t.contentStyles,function(e){r+=e+"\r\n"}),t.dom.addStyle(r)),(i=t,i.inline?hw.styleSheetLoader:i.dom.styleSheetLoader).loadAll(t.contentCSS,function(e){vw(t)},function(e){vw(t)}),f.content_style&&(a=t,s=f.content_style,c=ar.fromDom(a.getDoc().head),l=ar.fromTag("style"),xr(l,"type","text/css"),Li(l,ar.fromText(s)),Li(c,l))},bw=Ei.DOM,Cw=function(e,t){var n,r,o,i,a,u,s,c=e.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),l=(n=e.id,r=c,o=t.height,i=pl(e),s=ar.fromTag("iframe"),wr(s,i),wr(s,{id:n+"_ifr",frameBorder:"0",allowTransparency:"true",title:r}),Sr(s,{width:"100%",height:(a=o,u="number"==typeof a?a+"px":a,u||""),display:"block"}),s).dom();l.onload=function(){l.onload=null,e.fire("load")};var f,d,m,g,p=function(e,t){if(V.document.domain!==V.window.location.hostname&&fe.ie&&fe.ie<12){var n=zh.uuid("mce");e[n]=function(){yw(e)};var r='javascript:(function(){document.open();document.domain="'+V.document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(true);})()";return bw.setAttrib(t,"src",r),!0}return!1}(e,l);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=l,e.iframeHTML=(g=hl(f=e)+"<html><head>",vl(f)!==f.documentBaseUrl&&(g+='<base href="'+f.documentBaseURI.getURI()+'" />'),g+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',d=yl(f),m=bl(f),Cl(f)&&(g+='<meta http-equiv="Content-Security-Policy" content="'+Cl(f)+'" />'),g+='</head><body id="'+d+'" class="mce-content-body '+m+'" data-id="'+f.id+'"><br></body></html>'),bw.add(t.iframeContainer,l),p},xw=function(e,t){var n=Cw(e,t);t.editorContainer&&(bw.get(t.editorContainer).style.display=e.orgDisplay,e.hidden=bw.isHidden(t.editorContainer)),e.getElement().style.display="none",bw.setAttrib(e.id,"aria-hidden","true"),n||yw(e)},ww=Ei.DOM,Nw=function(t,n,e){var r=Eh.get(e),o=Eh.urls[e]||t.documentBaseUrl.replace(/\/$/,"");if(e=Xt.trim(e),r&&-1===Xt.inArray(n,e)){if(Xt.each(Eh.dependencies(e),function(e){Nw(t,n,e)}),t.plugins[e])return;try{var i=new r(t,o,t.$);(t.plugins[e]=i).init&&(i.init(t,o),n.push(e))}catch(oE){Nh.pluginInitError(t,e,oE)}}},Ew=function(e){return e.replace(/^\-/,"")},Sw=function(e){return{editorContainer:e,iframeContainer:e}},Tw=function(e){var t,n,r=e.getElement();return e.inline?Sw(null):(t=r,n=ww.create("div"),ww.insertAfter(n,t),Sw(n))},kw=function(e){var t,n,r,o,i,a,u,s,c,l,f,d=e.settings,m=e.getElement();return e.orgDisplay=m.style.display,S(d.theme)?(l=(o=e).settings,f=o.getElement(),i=l.width||ww.getStyle(f,"width")||"100%",a=l.height||ww.getStyle(f,"height")||f.offsetHeight,u=l.min_height||100,(s=/^[0-9\.]+(|px)$/i).test(""+i)&&(i=Math.max(parseInt(i,10),100)),s.test(""+a)&&(a=Math.max(parseInt(a,10),u)),c=o.theme.renderUI({targetNode:f,width:i,height:a,deltaWidth:l.delta_width,deltaHeight:l.delta_height}),l.content_editable||(a=(c.iframeHeight||a)+("number"==typeof a?c.deltaHeight||0:""))<u&&(a=u),c.height=a,c):D(d.theme)?(r=(t=e).getElement(),(n=t.settings.theme(t,r)).editorContainer.nodeType&&(n.editorContainer.id=n.editorContainer.id||t.id+"_parent"),n.iframeContainer&&n.iframeContainer.nodeType&&(n.iframeContainer.id=n.iframeContainer.id||t.id+"_iframecontainer"),n.height=n.iframeHeight?n.iframeHeight:r.offsetHeight,n):Tw(e)},_w=function(t){var e,n,r,o,i,a,u=t.settings,s=t.getElement();return t.rtl=u.rtl_ui||t.editorManager.i18n.rtl,t.editorManager.i18n.setCode(u.language),u.aria_label=u.aria_label||ww.getAttrib(s,"aria-label",t.getLang("aria.rich_text_area")),t.fire("ScriptsLoaded"),o=(n=t).settings.theme,S(o)?(n.settings.theme=Ew(o),r=Sh.get(o),n.theme=new r(n,Sh.urls[o]),n.theme.init&&n.theme.init(n,Sh.urls[o]||n.documentBaseUrl.replace(/\/$/,""),n.$)):n.theme={},i=t,a=[],Xt.each(i.settings.plugins.split(/[ ,]/),function(e){Nw(i,a,Ew(e))}),e=kw(t),t.editorContainer=e.editorContainer?e.editorContainer:null,u.content_css&&Xt.each(Xt.explode(u.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),u.content_editable?yw(t):xw(t,e)},Aw=Ei.DOM,Rw=function(e){return"-"===e.charAt(0)},Dw=function(i,a){var u=Ai.ScriptLoader;!function(e,t,n,r){var o=t.settings,i=o.theme;if(S(i)){if(!Rw(i)&&!Sh.urls.hasOwnProperty(i)){var a=o.theme_url;a?Sh.load(i,t.documentBaseURI.toAbsolute(a)):Sh.load(i,"themes/"+i+"/theme"+n+".js")}e.loadQueue(function(){Sh.waitFor(i,r)})}else r()}(u,i,a,function(){var e,t,n,r,o;e=u,(n=(t=i).settings).language&&"en"!==n.language&&!n.language_url&&(n.language_url=t.editorManager.baseURL+"/langs/"+n.language+".js"),n.language_url&&!t.editorManager.i18n.data[n.language]&&e.add(n.language_url),r=i.settings,o=a,Xt.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),Xt.each(r.external_plugins,function(e,t){Eh.load(t,e),r.plugins+=" "+t}),Xt.each(r.plugins.split(/[ ,]/),function(e){if((e=Xt.trim(e))&&!Eh.urls[e])if(Rw(e)){e=e.substr(1,e.length);var t=Eh.dependencies(e);Xt.each(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=Eh.createUrl(t,e),Eh.load(e.resource,e)})}else Eh.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),u.loadQueue(function(){i.removed||_w(i)},i,function(e){Nh.pluginLoadError(i,e[0]),i.removed||_w(i)})})},Ow=function(t){var e=t.settings,n=t.id,r=function(){Aw.unbind(V.window,"ready",r),t.render()};if(Se.Event.domLoaded){if(t.getElement()&&fe.contentEditable){e.inline?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden");var o=t.getElement().form||Aw.getParent(n,"form");o&&(t.formElement=o,e.hidden_input&&!/TEXTAREA|INPUT/i.test(t.getElement().nodeName)&&(Aw.insertAfter(Aw.create("input",{type:"hidden",name:n}),n),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},Aw.bind(o,"submit reset",t.formEventDelegate),t.on("reset",function(){t.setContent(t.startContent,{format:"raw"})}),!e.submit_patch||o.submit.nodeType||o.submit.length||o._mceOldSubmit||(o._mceOldSubmit=o.submit,o.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),o._mceOldSubmit(o)})),t.windowManager=gh(t),t.notificationManager=mh(t),"xml"===e.encoding&&t.on("GetContent",function(e){e.save&&(e.content=Aw.encode(e.content))}),e.add_form_submit_trigger&&t.on("submit",function(){t.initialized&&t.save()}),e.add_unload_trigger&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),Dw(t,t.suffix)}}else Aw.bind(V.window,"ready",r)},Bw=function(e,t,n){var r=e.sidebars?e.sidebars:[];r.push({name:t,settings:n}),e.sidebars=r},Pw=Xt.each,Iw=Xt.trim,Lw="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),Fw={ftp:21,http:80,https:443,mailto:25},Mw=function(r,e){var t,n,o=this;if(r=Iw(r),t=(e=o.settings=e||{}).base_uri,/^([\w\-]+):([^\/]{2})/i.test(r)||/^\s*#/.test(r))o.source=r;else{var i=0===r.indexOf("//");0!==r.indexOf("/")||i||(r=(t&&t.protocol||"http")+"://mce_host"+r),/^[\w\-]*:?\/\//.test(r)||(n=e.base_uri?e.base_uri.path:new Mw(V.document.location.href).directory,""==e.base_uri.protocol?r="//mce_host"+o.toAbsPath(n,r):(r=/([^#?]*)([#?]?.*)/.exec(r),r=(t&&t.protocol||"http")+"://mce_host"+o.toAbsPath(n,r[1])+r[2])),r=r.replace(/@@/g,"(mce_at)"),r=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(r),Pw(Lw,function(e,t){var n=r[t];n&&(n=n.replace(/\(mce_at\)/g,"@@")),o[e]=n}),t&&(o.protocol||(o.protocol=t.protocol),o.userInfo||(o.userInfo=t.userInfo),o.port||"mce_host"!==o.host||(o.port=t.port),o.host&&"mce_host"!==o.host||(o.host=t.host),o.source=""),i&&(o.protocol="")}};Mw.prototype={setPath:function(e){e=/^(.*?)\/?(\w+)?$/.exec(e),this.path=e[0],this.directory=e[1],this.file=e[2],this.source="",this.getURI()},toRelative:function(e){var t;if("./"===e)return e;if("mce_host"!==(e=new Mw(e,{base_uri:this})).host&&this.host!==e.host&&e.host||this.port!==e.port||this.protocol!==e.protocol&&""!==e.protocol)return e.getURI();var n=this.getURI(),r=e.getURI();return n===r||"/"===n.charAt(n.length-1)&&n.substr(0,n.length-1)===r?n:(t=this.toRelPath(this.path,e.path),e.query&&(t+="?"+e.query),e.anchor&&(t+="#"+e.anchor),t)},toAbsolute:function(e,t){return(e=new Mw(e,{base_uri:this})).getURI(t&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=Fw[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r,o,i=0,a="";if(e=(e=e.substring(0,e.lastIndexOf("/"))).split("/"),n=t.split("/"),e.length>=n.length)for(r=0,o=e.length;r<o;r++)if(r>=n.length||e[r]!==n[r]){i=r+1;break}if(e.length<n.length)for(r=0,o=n.length;r<o;r++)if(r>=e.length||e[r]!==n[r]){i=r+1;break}if(1===i)return t;for(r=0,o=e.length-(i-1);r<o;r++)a+="../";for(r=i-1,o=n.length;r<o;r++)a+=r!==i-1?"/"+n[r]:n[r];return a},toAbsPath:function(e,t){var n,r,o,i=0,a=[];for(r=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),Pw(e,function(e){e&&a.push(e)}),e=a,n=t.length-1,a=[];0<=n;n--)0!==t[n].length&&"."!==t[n]&&(".."!==t[n]?0<i?i--:a.push(t[n]):i++);return 0!==(o=(n=e.length-i)<=0?a.reverse().join("/"):e.slice(0,n).join("/")+"/"+a.reverse().join("/")).indexOf("/")&&(o="/"+o),r&&o.lastIndexOf("/")!==o.length-1&&(o+=r),o},getURI:function(e){var t,n=this;return n.source&&!e||(t="",e||(n.protocol?t+=n.protocol+"://":t+="//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},Mw.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),(n=/data:([^;]+)/.exec(e[0]))&&(t=n[1]),{type:t,data:e[1]}},Mw.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t};var zw=function(e,t,n){var r,o,i,a,u;if(t.format=t.format?t.format:"html",t.get=!0,t.getInner=!0,t.no_events||e.fire("BeforeGetContent",t),"raw"===t.format)r=Xt.trim(Iv.trimExternal(e.serializer,n.innerHTML));else if("text"===t.format)r=xa(n.innerText||n.textContent);else{if("tree"===t.format)return e.serializer.serialize(n,t);i=(o=e).serializer.serialize(n,t),a=wl(o),u=new RegExp("^(<"+a+"[^>]*>( | |\\s|\xa0|<br \\/>|)<\\/"+a+">[\r\n]*|<br \\/>[\r\n]*)$"),r=i.replace(u,"")}return"text"===t.format||_o(ar.fromDom(n))?t.content=r:t.content=Xt.trim(r),t.no_events||e.fire("GetContent",t),t.content},Uw=function(e,t){t(e),e.firstChild&&Uw(e.firstChild,t),e.next&&Uw(e.next,t)},jw=function(e,t,n){var r=function(e,n,t){var r={},o={},i=[];for(var a in t.firstChild&&Uw(t.firstChild,function(t){z(e,function(e){e.name===t.name&&(r[e.name]?r[e.name].nodes.push(t):r[e.name]={filter:e,nodes:[t]})}),z(n,function(e){"string"==typeof t.attr(e.name)&&(o[e.name]?o[e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})})}),r)r.hasOwnProperty(a)&&i.push(r[a]);for(var a in o)o.hasOwnProperty(a)&&i.push(o[a]);return i}(e,t,n);z(r,function(t){z(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})})},Vw=function(e){return e instanceof rb},Hw=function(e,t){var r;e.dom.setHTML(e.getBody(),t),oh(r=e)&&uc.firstPositionIn(r.getBody()).each(function(e){var t=e.getNode(),n=Uo.isTable(t)?uc.firstPositionIn(t).getOr(e):e;r.selection.setRng(n.toRange())})},qw=function(u,s,c){return void 0===c&&(c={}),c.format=c.format?c.format:"html",c.set=!0,c.content=Vw(s)?"":s,Vw(s)||c.no_events||(u.fire("BeforeSetContent",c),s=c.content),_.from(u.getBody()).fold(q(s),function(e){return Vw(s)?function(e,t,n,r){jw(e.parser.getNodeFilters(),e.parser.getAttributeFilters(),n);var o=il({validate:e.validate},e.schema).serialize(n);return r.content=_o(ar.fromDom(t))?o:Xt.trim(o),Hw(e,r.content),r.no_events||e.fire("SetContent",r),n}(u,e,s,c):(t=u,n=e,o=c,0===(r=s).length||/^\s+$/.test(r)?(a='<br data-mce-bogus="1">',"TABLE"===n.nodeName?r="<tr><td>"+a+"</td></tr>":/^(UL|OL)$/.test(n.nodeName)&&(r="<li>"+a+"</li>"),(i=wl(t))&&t.schema.isValidChild(n.nodeName.toLowerCase(),i.toLowerCase())?(r=a,r=t.dom.createHTML(i,t.settings.forced_root_block_attrs,r)):r||(r='<br data-mce-bogus="1">'),Hw(t,r),t.fire("SetContent",o)):("raw"!==o.format&&(r=il({validate:t.validate},t.schema).serialize(t.parser.parse(r,{isRootContent:!0,insert:!0}))),o.content=_o(ar.fromDom(n))?r:Xt.trim(r),Hw(t,o.content),o.no_events||t.fire("SetContent",o)),o.content);var t,n,r,o,i,a})},$w=Ei.DOM,Ww=function(e){return _.from(e).each(function(e){return e.destroy()})},Kw=function(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement();r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&$w.remove(o.nextSibling),bp(e),e.editorManager.remove(e),!e.inline&&r&&(i=e,$w.setStyle(i.id,"display",i.orgDisplay)),Cp(e),$w.remove(e.getContainer()),Ww(t),Ww(n),e.destroy()}var i},Xw=function(e,t){var n,r,o,i=e.selection,a=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),Ww(i),Ww(a)),(r=(n=e).formElement)&&(r._mceOldSubmit&&(r.submit=r._mceOldSubmit,r._mceOldSubmit=null),$w.unbind(r,"submit reset",n.formEventDelegate)),(o=e).contentAreaContainer=o.formElement=o.container=o.editorContainer=null,o.bodyElement=o.contentDocument=o.contentWindow=null,o.iframeElement=o.targetElm=null,o.selection&&(o.selection=o.selection.win=o.selection.dom=o.selection.dom.doc=null),e.destroyed=!0):e.remove())},Yw=Ei.DOM,Gw=Xt.extend,Jw=Xt.each,Qw=Xt.resolve,Zw=fe.ie,eN=function(e,t,n){var r,o,i,a,u,s,c,l=this,f=l.documentBaseUrl=n.documentBaseURL,d=n.baseURI;r=l,o=e,i=f,a=n.defaultSettings,u=t,c={id:o,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:i,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,render_ui:!0,indentation:"40px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:(s=r).convertURL,url_converter_scope:s,ie7_compat:!0},t=jp(Ip,c,a,u),l.settings=t,Oi.language=t.language||"en",Oi.languageLoad=t.language_load,Oi.baseURL=n.baseURL,l.id=e,l.setDirty(!1),l.plugins={},l.documentBaseURI=new Mw(t.document_base_url,{base_uri:d}),l.baseURI=d,l.contentCSS=[],l.contentStyles=[],l.shortcuts=new Xp(l),l.loadedCSS={},l.editorCommands=new fp(l),l.suffix=n.suffix,l.editorManager=n,l.inline=t.inline,l.buttons={},l.menuItems={},t.cache_suffix&&(fe.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),!1===t.override_viewport&&(fe.overrideViewPort=!1),n.fire("SetupEditor",{editor:l}),l.execCallback("setup",l),l.$=gn.overrideDefaults(function(){return{context:l.inline?l.getBody():l.getDoc(),element:l.getBody()}})};Gw(eN.prototype={render:function(){Ow(this)},focus:function(e){rh(this,e)},hasFocus:function(){return oh(this)},execCallback:function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?Qw(r):0,o=Qw(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,Array.prototype.slice.call(arguments,1))},translate:function(e){if(e&&Xt.is(e,"string")){var n=this.settings.language||"en",r=this.editorManager.i18n;e=r.data[n+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,t){return r.data[n+"."+t]||"{#"+t+"}"})}return this.editorManager.translate(e)},getLang:function(e,t){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(t!==undefined?t:"{#"+e+"}")},getParam:function(e,t,n){return Hp(this,e,t,n)},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.stateSelector&&"undefined"==typeof t.active&&(t.active=!1),t.text||t.icon||(t.icon=e),t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addSidebar:function(e,t){return Bw(this,e,t)},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems[e]=t},addContextToolbar:function(e,t){var n,r=this;r.contextToolbars=r.contextToolbars||[],"string"==typeof e&&(n=e,e=function(e){return r.dom.is(e,n)}),r.contextToolbars.push({id:zh.uuid("mcet"),predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable=!0:(Yw.show(this.getContainer()),Yw.hide(this.id)),this.load(),this.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(Zw&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e===e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(Yw.hide(e.getContainer()),Yw.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var t,n=this.getElement();return this.removed?"":n?((e=e||{}).load=!0,t=this.setContent(n.value!==undefined?n.value:n.innerHTML,e),e.element=n,e.no_events||this.fire("LoadContent",e),e.element=n=null,t):void 0},save:function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,/TEXTAREA|INPUT/i.test(o.nodeName)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=Yw.getParent(r.id,"form"))&&Jw(n.elements,function(e){if(e.name===r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},setContent:function(e,t){return qw(this,e,t)},getContent:function(e){return t=this,void 0===(n=e)&&(n={}),_.from(t.getBody()).fold(q("tree"===n.format?new rb("body",11):""),function(e){return zw(t,n,e)});var t,n},insertContent:function(e,t){t&&(e=Gw({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},setDirty:function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},setMode:function(e){var t,n;(n=e)!==kp(t=this)&&(t.initialized?Tp(t,"readonly"===n):t.on("init",function(){Tp(t,"readonly"===n)}),xp(t,n))},getContainer:function(){return this.container||(this.container=Yw.get(this.editorContainer||this.id+"_parent")),this.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=Yw.get(this.id)),this.targetElm},getWin:function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},getDoc:function(){var e;return this.contentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},getBody:function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},convertURL:function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):e=this.documentBaseURI.toAbsolute(e,r.remove_script_host)},addVisual:function(e){var n,r=this,o=r.settings,i=r.dom;e=e||r.getBody(),r.hasVisual===undefined&&(r.hasVisual=o.visual),Jw(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return n=o.visual_table_class||"mce-item-table",void((t=i.getAttrib(e,"border"))&&"0"!==t||!r.hasVisual?i.removeClass(e,n):i.addClass(e,n));case"A":return void(i.getAttrib(e,"href")||(t=i.getAttrib(e,"name")||e.id,n=o.visual_anchor_class||"mce-item-anchor",t&&r.hasVisual?i.addClass(e,n):i.removeClass(e,n)))}}),r.fire("VisualAid",{element:e,hasVisual:r.hasVisual})},remove:function(){Kw(this)},destroy:function(e){Xw(this,e)},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()}},Bp);var tN,nN,rN,oN={isEditorUIElement:function(e){return-1!==e.className.toString().indexOf("mce-")}},iN=function(n,e){var t,r;or.detect().browser.isIE()?(r=n).on("focusout",function(){tp(r)}):(t=e,n.on("mouseup touchend",function(e){t.throttle()})),n.on("keyup nodechange",function(e){var t;"nodechange"===(t=e).type&&t.selectionChange||tp(n)})},aN=function(e){var t,n,r,o=ji(function(){tp(e)},0);e.inline&&(t=e,n=o,r=function(){n.throttle()},Ei.DOM.bind(V.document,"mouseup",r),t.on("remove",function(){Ei.DOM.unbind(V.document,"mouseup",r)})),e.on("init",function(){iN(e,o)}),e.on("remove",function(){o.cancel()})},uN=Ei.DOM,sN=function(e){return oN.isEditorUIElement(e)},cN=function(t,e){var n=t?t.settings.custom_ui_selector:"";return null!==uN.getParent(e,function(e){return sN(e)||!!n&&t.dom.is(e,n)})},lN=function(r,e){var t=e.editor;aN(t),t.on("focusin",function(){var e=r.focusedEditor;e!==this&&(e&&e.fire("blur",{focusedEditor:this}),r.setActive(this),(r.focusedEditor=this).fire("focus",{blurredEditor:e}),this.focus(!0))}),t.on("focusout",function(){var t=this;he.setEditorTimeout(t,function(){var e=r.focusedEditor;cN(t,function(){try{return V.document.activeElement}catch(e){return V.document.body}}())||e!==t||(t.fire("blur",{focusedEditor:null}),r.focusedEditor=null)})}),tN||(tN=function(e){var t,n=r.activeEditor;t=e.target,n&&t.ownerDocument===V.document&&(t===V.document.body||cN(n,t)||r.focusedEditor!==n||(n.fire("blur",{focusedEditor:null}),r.focusedEditor=null))},uN.bind(V.document,"focusin",tN))},fN=function(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(uN.unbind(V.document,"focusin",tN),tN=null)},dN=function(e){e.on("AddEditor",d(lN,e)),e.on("RemoveEditor",d(fN,e))},mN=Ei.DOM,gN=Xt.explode,pN=Xt.each,hN=Xt.extend,vN=0,yN=!1,bN=[],CN=[],xN=function(t){var n=t.type;pN(rN.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})},wN=function(e){e!==yN&&(e?gn(window).on("resize scroll",xN):gn(window).off("resize scroll",xN),yN=e)},NN=function(t){var e=CN;delete bN[t.id];for(var n=0;n<bN.length;n++)if(bN[n]===t){bN.splice(n,1);break}return CN=U(CN,function(e){return t!==e}),rN.activeEditor===t&&(rN.activeEditor=0<CN.length?CN[0]:null),rN.focusedEditor===t&&(rN.focusedEditor=null),e.length!==CN.length};hN(rN={defaultSettings:{},$:gn,majorVersion:"4",minorVersion:"9.9",releaseDate:"2020-03-25",editors:bN,i18n:vh,activeEditor:null,settings:{},setup:function(){var e,t,n="";t=Mw.getDocumentBaseUrl(V.document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/"));var r=window.tinymce||window.tinyMCEPreInit;if(r)e=r.base||r.baseURL,n=r.suffix;else{for(var o=V.document.getElementsByTagName("script"),i=0;i<o.length;i++){var a;if(""!==(a=o[i].src||"")){var u=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!==u.indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/"));break}}}!e&&V.document.currentScript&&(-1!==(a=V.document.currentScript.src).indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/")))}this.baseURL=new Mw(t).toAbsolute(e),this.documentBaseURL=t,this.baseURI=new Mw(this.baseURL),this.suffix=n,dN(this)},overrideDefaults:function(e){var t,n;(t=e.base_url)&&(this.baseURL=new Mw(this.documentBaseURL).toAbsolute(t.replace(/\/+$/,"")),this.baseURI=new Mw(this.baseURL)),n=e.suffix,e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;for(var o in r)Oi.PluginManager.urls[o]=r[o]},init:function(r){var n,u,s=this;u=Xt.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu"," ");var c=function(e){var t=e.id;return t||(t=(t=e.name)&&!mN.get(t)?e.name:mN.uniqueId(),e.setAttribute("id",t)),t},l=function(e,t){return t.constructor===RegExp?t.test(e.className):mN.hasClass(e,t)},f=function(e){n=e},e=function(){var o,i=0,a=[],n=function(e,t,n){var r=new eN(e,t,s);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetElm=r.targetElm||n,r.render()};mN.unbind(window,"ready",e),function(e){var t=r[e];t&&t.apply(s,Array.prototype.slice.call(arguments,2))}("onpageload"),o=gn.unique(function(t){var e,n=[];if(fe.ie&&fe.ie<11)return Nh.initError("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(t.types)return pN(t.types,function(e){n=n.concat(mN.select(e.selector))}),n;if(t.selector)return mN.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":0<(e=t.elements||"").length&&pN(gN(e),function(t){var e;(e=mN.get(t))?n.push(e):pN(V.document.forms,function(e){pN(e.elements,function(e){e.name===t&&(t="mce_editor_"+vN++,mN.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":pN(mN.select("textarea"),function(e){t.editor_deselector&&l(e,t.editor_deselector)||t.editor_selector&&!l(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?pN(r.types,function(t){Xt.each(o,function(e){return!mN.is(e,t.selector)||(n(c(e),hN({},r,t),e),!1)})}):(Xt.each(o,function(e){var t;(t=s.get(e.id))&&t.initialized&&!(t.getContainer()||t.getBody()).parentNode&&(NN(t),t.unbindAllNativeEvents(),t.destroy(!0),t.removed=!0,t=null)}),0===(o=Xt.grep(o,function(e){return!s.get(e.id)})).length?f([]):pN(o,function(e){var t;t=e,r.inline&&t.tagName.toLowerCase()in u?Nh.initError("Could not initialize inline editor on invalid inline target element",e):n(c(e),r,e)}))};return s.settings=r,mN.bind(window,"ready",e),new de(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?CN.slice(0):S(t)?X(CN,function(e){return e.id===t}).getOr(null):O(t)&&CN[t]?CN[t]:null},add:function(e){var t=this;return bN[e.id]===e||(null===t.get(e.id)&&("length"!==e.id&&(bN[e.id]=e),bN.push(e),CN.push(e)),wN(!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),nN||(nN=function(){t.fire("BeforeUnload")},mN.bind(window,"beforeunload",nN))),e},createEditor:function(e,t){return this.add(new eN(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!S(e))return n=e,A(r.get(n.id))?null:(NN(n)&&r.fire("RemoveEditor",{editor:n}),0===CN.length&&mN.unbind(window,"beforeunload",nN),n.remove(),wN(0<CN.length),n);pN(mN.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=CN.length-1;0<=t;t--)r.remove(CN[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new eN(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",0,n),!0}return!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){pN(CN,function(e){e.save()})},addI18n:function(e,t){vh.add(e,t)},translate:function(e){return vh.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!==e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},hp),rN.setup();var EN,SN=rN;function TN(n){return{walk:function(e,t){return Ic(n,e,t)},split:Um,normalize:function(t){return kg(n,t).fold(q(!1),function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}(EN=TN||(TN={})).compareRanges=Cg,EN.getCaretRangeFromPoint=Db,EN.getSelectedNode=Qa,EN.getNode=Za;var kN,_N,AN=TN,RN=Math.min,DN=Math.max,ON=Math.round,BN=function(e,t,n){var r,o,i,a,u,s;return r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,"b"===(n=(n||"").split(""))[0]&&(o+=s),"r"===n[1]&&(r+=u),"c"===n[0]&&(o+=ON(s/2)),"c"===n[1]&&(r+=ON(u/2)),"b"===n[3]&&(o-=a),"r"===n[4]&&(r-=i),"c"===n[3]&&(o-=ON(a/2)),"c"===n[4]&&(r-=ON(i/2)),PN(r,o,i,a)},PN=function(e,t,n,r){return{x:e,y:t,w:n,h:r}},IN={inflate:function(e,t,n){return PN(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:BN,findBestRelativePosition:function(e,t,n,r){var o,i;for(i=0;i<r.length;i++)if((o=BN(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=DN(e.x,t.x),r=DN(e.y,t.y),o=RN(e.x+e.w,t.x+t.w),i=RN(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:PN(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=DN(0,t.x-u),o=DN(0,t.y-s),i=DN(0,c-f),a=DN(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),PN(u,s,(c-=i)-u,(l-=a)-s)},create:PN,fromClientRect:function(e){return PN(e.left,e.top,e.width,e.height)}},LN={},FN={add:function(e,t){LN[e.toLowerCase()]=t},has:function(e){return!!LN[e.toLowerCase()]},get:function(e){var t=e.toLowerCase(),n=LN.hasOwnProperty(t)?LN[t]:null;if(null===n)throw new Error("Could not find module for type: "+e);return n},create:function(e,t){var n;if("string"==typeof e?(t=t||{}).type=e:e=(t=e).type,e=e.toLowerCase(),!(n=LN[e]))throw new Error("Could not find control by type: "+e);return(n=new n(t)).type=e,n}},MN=Xt.each,zN=Xt.extend,UN=function(){};UN.extend=kN=function(n){var e,t,r,o=this.prototype,i=function(){var e,t,n;if(!_N&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)},a=function(){return this},u=function(n,r){return function(){var e,t=this._super;return this._super=o[n],e=r.apply(this,arguments),this._super=t,e}};for(t in _N=!0,e=new this,_N=!1,n.Mixins&&(MN(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),o.Mixins&&(n.Mixins=o.Mixins.concat(n.Mixins))),n.Methods&&MN(n.Methods.split(","),function(e){n[e]=a}),n.Properties&&MN(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&MN(n.Statics,function(e,t){i[t]=e}),n.Defaults&&o.Defaults&&(n.Defaults=zN({},o.Defaults,n.Defaults)),n)"function"==typeof(r=n[t])&&o[t]?e[t]=u(t,r):e[t]=r;return i.prototype=e,(i.constructor=i).extend=kN,i};var jN=Math.min,VN=Math.max,HN=Math.round,qN=function(e,n){var r,o,t,i;if(n=n||'"',null===e)return"null";if("string"==(t=typeof e))return o="\bb\tt\nn\ff\rr\"\"''\\\\",n+e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=o.indexOf(t))+1?"\\"+o.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e)})+n;if("object"===t){if(e.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(e)){for(r=0,o="[";r<e.length;r++)o+=(0<r?",":"")+qN(e[r],n);return o+"]"}for(i in o="{",e)e.hasOwnProperty(i)&&(o+="function"!=typeof e[i]?(1<o.length?","+n:n)+i+n+":"+qN(e[i],n):"");return o+"}"}return""+e},$N={serialize:qN,parse:function(e){try{return JSON.parse(e)}catch(t){}}},WN={callbacks:{},count:0,send:function(t){var n=this,r=Ei.DOM,o=t.count!==undefined?t.count:n.count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},KN={send:function(e){var t,n=0,r=function(){!e.async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",KN.fire("beforeInitialize",{settings:e}),t=Th()){if(t.overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&Xt.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=KN.fire("beforeSend",{xhr:t,settings:e}).xhr).send(e.data),!e.async)return r();setTimeout(r,10)}}};Xt.extend(KN,hp);var XN,YN,GN,JN,QN=Xt.extend,ZN=function(e){this.settings=QN({},e),this.count=0};ZN.sendRPC=function(e){return(new ZN).send(e)},ZN.prototype={send:function(n){var r=n.error,o=n.success;(n=QN(this.settings,n)).success=function(e,t){void 0===(e=$N.parse(e))&&(e={error:"JSON Parse error."}),e.error?r.call(n.error_scope||n.scope,e.error,t):o.call(n.success_scope||n.scope,e.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=$N.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",KN.send(n)}};try{XN=V.window.localStorage}catch(oE){YN={},GN=[],JN={getItem:function(e){var t=YN[e];return t||null},setItem:function(e,t){GN.push(e),YN[e]=String(t)},key:function(e){return GN[e]},removeItem:function(t){GN=GN.filter(function(e){return e===t}),delete YN[t]},clear:function(){GN=[],YN={}},length:0},Object.defineProperty(JN,"length",{get:function(){return GN.length},configurable:!1,enumerable:!1}),XN=JN}var eE,tE=SN,nE={geom:{Rect:IN},util:{Promise:de,Delay:he,Tools:Xt,VK:Sv,URI:Mw,Class:UN,EventDispatcher:mp,Observable:hp,I18n:vh,XHR:KN,JSON:$N,JSONRequest:ZN,JSONP:WN,LocalStorage:XN,Color:function(e){var n={},u=0,s=0,c=0,t=function(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){var r,o,i,a;if(e=(parseInt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=VN(0,jN(t,1)),n=VN(0,jN(n,1)),0!==t){switch(r=e/60,i=(o=n*t)*(1-Math.abs(r%2-1)),a=n-o,Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=HN(255*(u+a)),s=HN(255*(s+a)),c=HN(255*(c+a))}else u=s=c=HN(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parseInt(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n};return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return e=u,t=s,n=c,o=0,(i=jN(e/=255,jN(t/=255,n/=255)))===(a=VN(e,VN(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:HN(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:HN(100*r),v:HN(100*o)});var e,t,n,r,o,i,a},n.toHex=function(){var e=function(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e};return"#"+e(u)+e(s)+e(c)},n.parse=t,n}},dom:{EventUtils:Se,Sizzle:St,DomQuery:gn,TreeWalker:mo,DOMUtils:Ei,ScriptLoader:Ai,RangeUtils:AN,Serializer:bb,ControlSelection:Tb,BookmarkManager:Nb,Selection:iC,Event:Se.Event},html:{Styles:mi,Entities:ei,Node:rb,Schema:fi,SaxParser:Bv,DomParser:gb,Writer:ol,Serializer:il},ui:{Factory:FN},Env:fe,AddOnManager:Oi,Annotator:Vc,Formatter:$y,UndoManager:Qv,EditorCommands:fp,WindowManager:gh,NotificationManager:mh,EditorObservable:Bp,Shortcuts:Xp,Editor:eN,FocusManager:oN,EditorManager:SN,DOM:Ei.DOM,ScriptLoader:Ai.ScriptLoader,PluginManager:Oi.PluginManager,ThemeManager:Oi.ThemeManager,trim:Xt.trim,isArray:Xt.isArray,is:Xt.is,toArray:Xt.toArray,makeMap:Xt.makeMap,each:Xt.each,map:Xt.map,grep:Xt.grep,inArray:Xt.inArray,extend:Xt.extend,create:Xt.create,walk:Xt.walk,createNS:Xt.createNS,resolve:Xt.resolve,explode:Xt.explode,_addCacheSuffix:Xt._addCacheSuffix,isOpera:fe.opera,isWebKit:fe.webkit,isIE:fe.ie,isGecko:fe.gecko,isMac:fe.mac},rE=tE=Xt.extend(tE,nE);eE=rE,window.tinymce=eE,window.tinyMCE=eE,function(e){if("object"==typeof module)try{module.exports=e}catch(t){}}(rE)}(window);
\ No newline at end of file
[](https://github.com/BookStackApp/BookStack/releases/latest)
[](https://github.com/BookStackApp/BookStack/blob/master/LICENSE)
+[](https://crowdin.com/project/bookstack)
[](https://github.com/BookStackApp/BookStack/actions)
[](https://discord.gg/ztkBqR2)
-A platform for storing and organising information and documentation. General information and documentation for BookStack can be found at https://www.bookstackapp.com/.
+A platform for storing and organising information and documentation. Details for BookStack can be found on the official website at https://www.bookstackapp.com/.
* [Installation Instructions](https://www.bookstackapp.com/docs/admin/installation)
* [Documentation](https://www.bookstackapp.com/docs)
* [Demo Instance](https://demo.bookstackapp.com)
* [Admin Login](https://demo.bookstackapp.com/
[email protected]&password=password)
* [BookStack Blog](https://www.bookstackapp.com/blog)
+* [Issue List](https://github.com/BookStackApp/BookStack/issues)
+* [Discord Chat](https://discord.gg/ztkBqR2)
## 📚 Project Definition
Below is a high-level road map view for BookStack to provide a sense of direction of where the project is going. This can change at any point and does not reflect many features and improvements that will also be included as part of the journey along this road map. For more granular detail of what will be included in upcoming releases you can review the project milestones as defined in the "Release Process" section below.
-- **Platform REST API** *(In Design)*
+- **Platform REST API** *(Base Implemented, In review and roll-out)*
- *A REST API covering, at minimum, control of core content models (Books, Chapters, Pages) for automation and platform extension.*
- **Editor Alignment & Review**
- *Review the page editors with goal of achieving increased interoperability & feature parity while also considering collaborative editing potential.*
* [Node.js](https://nodejs.org/en/) v10.0+
-SASS is used to help the CSS development and the JavaScript is run through babel to allow for writing ES6 code. This is done using webpack. To run the build task you can use the following commands:
+This project uses SASS for CSS development and this is built, along with the JavaScript, using webpack. The below npm commands can be used to install the dependencies & run the build tasks:
``` bash
# Install NPM Dependencies
### 📜 Code Standards
-PHP code within BookStack is generally to [PSR-2](http://www.php-fig.org/psr/psr-2/) standards. From the BookStack root folder you can run `./vendor/bin/phpcs` to check code is formatted correctly and `./vendor/bin/phpcbf` to auto-fix non-PSR-2 code.
+PHP code within BookStack is generally to [PSR-2](http://www.php-fig.org/psr/psr-2/) standards. From the BookStack root folder you can run `./vendor/bin/phpcs` to check code is formatted correctly and `./vendor/bin/phpcbf` to auto-fix non-PSR-2 code. Please don't auto-fix code unless it's related to changes you've made otherwise you'll likely cause git conflicts.
### 🐋 Development using Docker
Feel free to create issues to request new features or to report bugs & problems. Just please follow the template given when creating the issue.
-Pull requests are welcome. Unless a small tweak or language update, It may be best to open the pull request early or create an issue for your intended change to discuss how it will fit in to the project and plan out the merge. Pull requests should be created from the `master` branch since they will be merged back into `master` once done. Please do not build from or request a merge into the `release` branch as this is only for publishing releases. If you are looking to alter CSS or JavaScript content please edit the source files found in `resources/assets`. Any CSS or JS files within `public` are built from these source files and therefore should not be edited directly.
+Pull requests are welcome. Unless a small tweak or language update, It may be best to open the pull request early or create an issue for your intended change to discuss how it will fit in to the project and plan out the merge. Just because a feature request exists, or is tagged, does not mean that feature would be accepted into the core project.
+
+Pull requests should be created from the `master` branch since they will be merged back into `master` once done. Please do not build from or request a merge into the `release` branch as this is only for publishing releases. If you are looking to alter CSS or JavaScript content please edit the source files found in `resources/assets`. Any CSS or JS files within `public` are built from these source files and therefore should not be edited directly.
The project's code of conduct [can be found here](https://github.com/BookStackApp/BookStack/blob/master/.github/CODE_OF_CONDUCT.md).
* [Laravel](http://laravel.com/)
* [TinyMCE](https://www.tinymce.com/)
* [CodeMirror](https://codemirror.net)
-* [Vue.js](http://vuejs.org/)
-* [Sortable](https://github.com/SortableJS/Sortable) & [Vue.Draggable](https://github.com/SortableJS/Vue.Draggable)
+* [Sortable](https://github.com/SortableJS/Sortable)
* [Google Material Icons](https://material.io/icons/)
* [Dropzone.js](http://www.dropzonejs.com/)
* [clipboard.js](https://clipboardjs.com/)
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 2c-1.82 0-3.53.5-5 1.35C7.99 5.08 10 8.3 10 12s-2.01 6.92-5 8.65C6.47 21.5 8.18 22 10 22c5.52 0 10-4.48 10-10S15.52 2 10 2z"/></svg>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 15.31L23.31 12 20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69zM12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"/></svg>
\ No newline at end of file
--- /dev/null
+import {onChildEvent} from "../services/dom";
+import {uniqueId} from "../services/util";
+
+/**
+ * AddRemoveRows
+ * Allows easy row add/remove controls onto a table.
+ * Needs a model row to use when adding a new row.
+ * @extends {Component}
+ */
+class AddRemoveRows {
+ setup() {
+ this.modelRow = this.$refs.model;
+ this.addButton = this.$refs.add;
+ this.removeSelector = this.$opts.removeSelector;
+ this.rowSelector = this.$opts.rowSelector;
+ this.setupListeners();
+ }
+
+ setupListeners() {
+ this.addButton.addEventListener('click', this.add.bind(this));
+
+ onChildEvent(this.$el, this.removeSelector, 'click', (e) => {
+ const row = e.target.closest(this.rowSelector);
+ row.remove();
+ });
+ }
+
+ // For external use
+ add() {
+ const clone = this.modelRow.cloneNode(true);
+ clone.classList.remove('hidden');
+ this.setClonedInputNames(clone);
+ this.modelRow.parentNode.insertBefore(clone, this.modelRow);
+ window.components.init(clone);
+ }
+
+ /**
+ * Update the HTML names of a clone to be unique if required.
+ * Names can use placeholder values. For exmaple, a model row
+ * may have name="tags[randrowid][name]".
+ * These are the available placeholder values:
+ * - randrowid - An random string ID, applied the same across the row.
+ * @param {HTMLElement} clone
+ */
+ setClonedInputNames(clone) {
+ const rowId = uniqueId();
+ const randRowIdElems = clone.querySelectorAll(`[name*="randrowid"]`);
+ for (const elem of randRowIdElems) {
+ elem.name = elem.name.split('randrowid').join(rowId);
+ }
+ }
+}
+
+export default AddRemoveRows;
\ No newline at end of file
--- /dev/null
+/**
+ * AjaxDelete
+ * @extends {Component}
+ */
+import {onSelect} from "../services/dom";
+
+class AjaxDeleteRow {
+ setup() {
+ this.row = this.$el;
+ this.url = this.$opts.url;
+ this.deleteButtons = this.$manyRefs.delete;
+
+ onSelect(this.deleteButtons, this.runDelete.bind(this));
+ }
+
+ runDelete() {
+ this.row.style.opacity = '0.7';
+ this.row.style.pointerEvents = 'none';
+
+ window.$http.delete(this.url).then(resp => {
+ if (typeof resp.data === 'object' && resp.data.message) {
+ window.$events.emit('success', resp.data.message);
+ }
+ this.row.remove();
+ }).catch(err => {
+ this.row.style.opacity = null;
+ this.row.style.pointerEvents = null;
+ });
+ }
+}
+
+export default AjaxDeleteRow;
\ No newline at end of file
--- /dev/null
+import {onEnterPress, onSelect} from "../services/dom";
+
+/**
+ * Ajax Form
+ * Will handle button clicks or input enter press events and submit
+ * the data over ajax. Will always expect a partial HTML view to be returned.
+ * Fires an 'ajax-form-success' event when submitted successfully.
+ *
+ * Will handle a real form if that's what the component is added to
+ * otherwise will act as a fake form element.
+ *
+ * @extends {Component}
+ */
+class AjaxForm {
+ setup() {
+ this.container = this.$el;
+ this.responseContainer = this.container;
+ this.url = this.$opts.url;
+ this.method = this.$opts.method || 'post';
+ this.successMessage = this.$opts.successMessage;
+ this.submitButtons = this.$manyRefs.submit || [];
+
+ if (this.$opts.responseContainer) {
+ this.responseContainer = this.container.closest(this.$opts.responseContainer);
+ }
+
+ this.setupListeners();
+ }
+
+ setupListeners() {
+
+ if (this.container.tagName === 'FORM') {
+ this.container.addEventListener('submit', this.submitRealForm.bind(this));
+ return;
+ }
+
+ onEnterPress(this.container, event => {
+ this.submitFakeForm();
+ event.preventDefault();
+ });
+
+ this.submitButtons.forEach(button => onSelect(button, this.submitFakeForm.bind(this)));
+ }
+
+ submitFakeForm() {
+ const fd = new FormData();
+ const inputs = this.container.querySelectorAll(`[name]`);
+ for (const input of inputs) {
+ fd.append(input.getAttribute('name'), input.value);
+ }
+ this.submit(fd);
+ }
+
+ submitRealForm(event) {
+ event.preventDefault();
+ const fd = new FormData(this.container);
+ this.submit(fd);
+ }
+
+ async submit(formData) {
+ this.responseContainer.style.opacity = '0.7';
+ this.responseContainer.style.pointerEvents = 'none';
+
+ try {
+ const resp = await window.$http[this.method.toLowerCase()](this.url, formData);
+ this.$emit('success', {formData});
+ this.responseContainer.innerHTML = resp.data;
+ if (this.successMessage) {
+ window.$events.emit('success', this.successMessage);
+ }
+ } catch (err) {
+ this.responseContainer.innerHTML = err.data;
+ }
+
+ window.components.init(this.responseContainer);
+ this.responseContainer.style.opacity = null;
+ this.responseContainer.style.pointerEvents = null;
+ }
+
+}
+
+export default AjaxForm;
\ No newline at end of file
--- /dev/null
+/**
+ * Attachments
+ * @extends {Component}
+ */
+import {showLoading} from "../services/dom";
+
+class Attachments {
+
+ setup() {
+ this.container = this.$el;
+ this.pageId = this.$opts.pageId;
+ this.editContainer = this.$refs.editContainer;
+ this.listContainer = this.$refs.listContainer;
+ this.mainTabs = this.$refs.mainTabs;
+ this.list = this.$refs.list;
+
+ this.setupListeners();
+ }
+
+ setupListeners() {
+ const reloadListBound = this.reloadList.bind(this);
+ this.container.addEventListener('dropzone-success', reloadListBound);
+ this.container.addEventListener('ajax-form-success', reloadListBound);
+
+ this.container.addEventListener('sortable-list-sort', event => {
+ this.updateOrder(event.detail.ids);
+ });
+
+ this.container.addEventListener('event-emit-select-edit', event => {
+ this.startEdit(event.detail.id);
+ });
+
+ this.container.addEventListener('event-emit-select-edit-back', event => {
+ this.stopEdit();
+ });
+ }
+
+ reloadList() {
+ this.stopEdit();
+ this.mainTabs.components.tabs.show('items');
+ window.$http.get(`/attachments/get/page/${this.pageId}`).then(resp => {
+ this.list.innerHTML = resp.data;
+ window.components.init(this.list);
+ });
+ }
+
+ updateOrder(idOrder) {
+ window.$http.put(`/attachments/sort/page/${this.pageId}`, {order: idOrder}).then(resp => {
+ window.$events.emit('success', resp.data.message);
+ });
+ }
+
+ async startEdit(id) {
+ this.editContainer.classList.remove('hidden');
+ this.listContainer.classList.add('hidden');
+
+ showLoading(this.editContainer);
+ const resp = await window.$http.get(`/attachments/edit/${id}`);
+ this.editContainer.innerHTML = resp.data;
+ window.components.init(this.editContainer);
+ }
+
+ stopEdit() {
+ this.editContainer.classList.add('hidden');
+ this.listContainer.classList.remove('hidden');
+ }
+
+}
+
+export default Attachments;
\ No newline at end of file
--- /dev/null
+import {escapeHtml} from "../services/util";
+import {onChildEvent} from "../services/dom";
+
+const ajaxCache = {};
+
+/**
+ * AutoSuggest
+ * @extends {Component}
+ */
+class AutoSuggest {
+ setup() {
+ this.parent = this.$el.parentElement;
+ this.container = this.$el;
+ this.type = this.$opts.type;
+ this.url = this.$opts.url;
+ this.input = this.$refs.input;
+ this.list = this.$refs.list;
+
+ this.lastPopulated = 0;
+ this.setupListeners();
+ }
+
+ setupListeners() {
+ this.input.addEventListener('input', this.requestSuggestions.bind(this));
+ this.input.addEventListener('focus', this.requestSuggestions.bind(this));
+ this.input.addEventListener('keydown', event => {
+ if (event.key === 'Tab') {
+ this.hideSuggestions();
+ }
+ });
+
+ this.input.addEventListener('blur', this.hideSuggestionsIfFocusedLost.bind(this));
+ this.container.addEventListener('keydown', this.containerKeyDown.bind(this));
+
+ onChildEvent(this.list, 'button', 'click', (event, el) => {
+ this.selectSuggestion(el.textContent);
+ });
+ onChildEvent(this.list, 'button', 'keydown', (event, el) => {
+ if (event.key === 'Enter') {
+ this.selectSuggestion(el.textContent);
+ }
+ });
+
+ }
+
+ selectSuggestion(value) {
+ this.input.value = value;
+ this.lastPopulated = Date.now();
+ this.input.focus();
+ this.input.dispatchEvent(new Event('input', {bubbles: true}));
+ this.input.dispatchEvent(new Event('change', {bubbles: true}));
+ this.hideSuggestions();
+ }
+
+ containerKeyDown(event) {
+ if (event.key === 'Enter') event.preventDefault();
+ if (this.list.classList.contains('hidden')) return;
+
+ // Down arrow
+ if (event.key === 'ArrowDown') {
+ this.moveFocus(true);
+ event.preventDefault();
+ }
+ // Up Arrow
+ else if (event.key === 'ArrowUp') {
+ this.moveFocus(false);
+ event.preventDefault();
+ }
+ // Escape key
+ else if (event.key === 'Escape') {
+ this.hideSuggestions();
+ event.preventDefault();
+ }
+ }
+
+ moveFocus(forward = true) {
+ const focusables = Array.from(this.container.querySelectorAll('input,button'));
+ const index = focusables.indexOf(document.activeElement);
+ const newFocus = focusables[index + (forward ? 1 : -1)];
+ if (newFocus) {
+ newFocus.focus()
+ }
+ }
+
+ async requestSuggestions() {
+ if (Date.now() - this.lastPopulated < 50) {
+ return;
+ }
+
+ const nameFilter = this.getNameFilterIfNeeded();
+ const search = this.input.value.slice(0, 3).toLowerCase();
+ const suggestions = await this.loadSuggestions(search, nameFilter);
+ let toShow = suggestions.slice(0, 6);
+ if (search.length > 0) {
+ toShow = suggestions.filter(val => {
+ return val.toLowerCase().includes(search);
+ }).slice(0, 6);
+ }
+
+ this.displaySuggestions(toShow);
+ }
+
+ getNameFilterIfNeeded() {
+ if (this.type !== 'value') return null;
+ return this.parent.querySelector('input').value;
+ }
+
+ /**
+ * @param {String} search
+ * @param {String|null} nameFilter
+ * @returns {Promise<Object|String|*>}
+ */
+ async loadSuggestions(search, nameFilter = null) {
+ const params = {search, name: nameFilter};
+ const cacheKey = `${this.url}:${JSON.stringify(params)}`;
+
+ if (ajaxCache[cacheKey]) {
+ return ajaxCache[cacheKey];
+ }
+
+ const resp = await window.$http.get(this.url, params);
+ ajaxCache[cacheKey] = resp.data;
+ return resp.data;
+ }
+
+ /**
+ * @param {String[]} suggestions
+ */
+ displaySuggestions(suggestions) {
+ if (suggestions.length === 0) {
+ return this.hideSuggestions();
+ }
+
+ this.list.innerHTML = suggestions.map(value => `<li><button type="button">${escapeHtml(value)}</button></li>`).join('');
+ this.list.style.display = 'block';
+ for (const button of this.list.querySelectorAll('button')) {
+ button.addEventListener('blur', this.hideSuggestionsIfFocusedLost.bind(this));
+ }
+ }
+
+ hideSuggestions() {
+ this.list.style.display = 'none';
+ }
+
+ hideSuggestionsIfFocusedLost(event) {
+ if (!this.container.contains(event.relatedTarget)) {
+ this.hideSuggestions();
+ }
+ }
+}
+
+export default AutoSuggest;
\ No newline at end of file
-import Sortable from "sortablejs";
+import {Sortable, MultiDrag} from "sortablejs";
// Auto sort control
const sortOperations = {
this.input = elem.querySelector('[book-sort-input]');
const initialSortBox = elem.querySelector('.sort-box');
+ Sortable.mount(new MultiDrag());
this.setupBookSortable(initialSortBox);
this.setupSortPresets();
onSort: this.updateMapInput.bind(this),
dragClass: 'bg-white',
ghostClass: 'primary-background-light',
+ multiDrag: true,
+ multiDragKey: 'CTRL',
+ selectedClass: 'sortable-selected',
});
}
}
--- /dev/null
+import Code from "../services/code";
+import {onChildEvent, onEnterPress, onSelect} from "../services/dom";
+
+/**
+ * Code Editor
+ * @extends {Component}
+ */
+class CodeEditor {
+
+ setup() {
+ this.container = this.$refs.container;
+ this.popup = this.$el;
+ this.editorInput = this.$refs.editor;
+ this.languageLinks = this.$manyRefs.languageLink;
+ this.saveButton = this.$refs.saveButton;
+ this.languageInput = this.$refs.languageInput;
+ this.historyDropDown = this.$refs.historyDropDown;
+ this.historyList = this.$refs.historyList;
+
+ this.callback = null;
+ this.editor = null;
+ this.history = {};
+ this.historyKey = 'code_history';
+ this.setupListeners();
+ }
+
+ setupListeners() {
+ this.container.addEventListener('keydown', event => {
+ if (event.ctrlKey && event.key === 'Enter') {
+ this.save();
+ }
+ });
+
+ onSelect(this.languageLinks, event => {
+ const language = event.target.dataset.lang;
+ this.languageInput.value = language;
+ this.updateEditorMode(language);
+ });
+
+ onEnterPress(this.languageInput, e => this.save());
+ onSelect(this.saveButton, e => this.save());
+
+ onChildEvent(this.historyList, 'button', 'click', (event, elem) => {
+ event.preventDefault();
+ const historyTime = elem.dataset.time;
+ if (this.editor) {
+ this.editor.setValue(this.history[historyTime]);
+ }
+ });
+ }
+
+ save() {
+ if (this.callback) {
+ this.callback(this.editor.getValue(), this.languageInput.value);
+ }
+ this.hide();
+ }
+
+ open(code, language, callback) {
+ this.languageInput.value = language;
+ this.callback = callback;
+
+ this.show();
+ this.updateEditorMode(language);
+
+ Code.setContent(this.editor, code);
+ }
+
+ show() {
+ if (!this.editor) {
+ this.editor = Code.popupEditor(this.editorInput, this.languageInput.value);
+ }
+ this.loadHistory();
+ this.popup.components.popup.show(() => {
+ Code.updateLayout(this.editor);
+ this.editor.focus();
+ }, () => {
+ this.addHistory()
+ });
+ }
+
+ hide() {
+ this.popup.components.popup.hide();
+ this.addHistory();
+ }
+
+ updateEditorMode(language) {
+ Code.setMode(this.editor, language, this.editor.getValue());
+ }
+
+ loadHistory() {
+ this.history = JSON.parse(window.sessionStorage.getItem(this.historyKey) || '{}');
+ const historyKeys = Object.keys(this.history).reverse();
+ this.historyDropDown.classList.toggle('hidden', historyKeys.length === 0);
+ this.historyList.innerHTML = historyKeys.map(key => {
+ const localTime = (new Date(parseInt(key))).toLocaleTimeString();
+ return `<li><button type="button" data-time="${key}">${localTime}</button></li>`;
+ }).join('');
+ }
+
+ addHistory() {
+ if (!this.editor) return;
+ const code = this.editor.getValue();
+ if (!code) return;
+
+ // Stop if we'd be storing the same as the last item
+ const lastHistoryKey = Object.keys(this.history).pop();
+ if (this.history[lastHistoryKey] === code) return;
+
+ this.history[String(Date.now())] = code;
+ const historyString = JSON.stringify(this.history);
+ window.sessionStorage.setItem(this.historyKey, historyString);
+ }
+
+}
+
+export default CodeEditor;
\ No newline at end of file
}
openIfContainsError() {
- const error = this.content.querySelector('.text-neg');
+ const error = this.content.querySelector('.text-neg.text-small');
if (error) {
this.open();
}
/**
* Dropdown
* Provides some simple logic to create simple dropdown menus.
+ * @extends {Component}
*/
class DropDown {
- constructor(elem) {
- this.container = elem;
- this.menu = elem.querySelector('.dropdown-menu, [dropdown-menu]');
- this.moveMenu = elem.hasAttribute('dropdown-move-menu');
- this.toggle = elem.querySelector('[dropdown-toggle]');
+ setup() {
+ this.container = this.$el;
+ this.menu = this.$refs.menu;
+ this.toggle = this.$refs.toggle;
+ this.moveMenu = this.$opts.moveMenu;
+
+ this.direction = (document.dir === 'rtl') ? 'right' : 'left';
this.body = document.body;
this.showing = false;
this.setupListeners();
this.rect = this.menu.getBoundingClientRect();
this.body.appendChild(this.menu);
this.menu.style.position = 'fixed';
- this.menu.style.left = `${this.rect.left}px`;
+ if (this.direction === 'right') {
+ this.menu.style.right = `${(this.rect.right - this.rect.width)}px`;
+ } else {
+ this.menu.style.left = `${this.rect.left}px`;
+ }
this.menu.style.top = `${this.rect.top}px`;
this.menu.style.width = `${this.rect.width}px`;
}
this.toggle.setAttribute('aria-expanded', 'false');
if (this.moveMenu) {
this.menu.style.position = '';
- this.menu.style.left = '';
+ this.menu.style[this.direction] = '';
this.menu.style.top = '';
this.menu.style.width = '';
this.container.appendChild(this.menu);
--- /dev/null
+import DropZoneLib from "dropzone";
+import {fadeOut} from "../services/animations";
+
+/**
+ * Dropzone
+ * @extends {Component}
+ */
+class Dropzone {
+ setup() {
+ this.container = this.$el;
+ this.url = this.$opts.url;
+ this.successMessage = this.$opts.successMessage;
+ this.removeMessage = this.$opts.removeMessage;
+ this.uploadLimitMessage = this.$opts.uploadLimitMessage;
+ this.timeoutMessage = this.$opts.timeoutMessage;
+
+ const _this = this;
+ this.dz = new DropZoneLib(this.container, {
+ addRemoveLinks: true,
+ dictRemoveFile: this.removeMessage,
+ timeout: Number(window.uploadTimeout) || 60000,
+ maxFilesize: Number(window.uploadLimit) || 256,
+ url: this.url,
+ withCredentials: true,
+ init() {
+ this.dz = this;
+ this.dz.on('sending', _this.onSending.bind(_this));
+ this.dz.on('success', _this.onSuccess.bind(_this));
+ this.dz.on('error', _this.onError.bind(_this));
+ }
+ });
+ }
+
+ onSending(file, xhr, data) {
+
+ const token = window.document.querySelector('meta[name=token]').getAttribute('content');
+ data.append('_token', token);
+
+ xhr.ontimeout = (e) => {
+ this.dz.emit('complete', file);
+ this.dz.emit('error', file, this.timeoutMessage);
+ }
+ }
+
+ onSuccess(file, data) {
+ this.$emit('success', {file, data});
+
+ if (this.successMessage) {
+ window.$events.emit('success', this.successMessage);
+ }
+
+ fadeOut(file.previewElement, 800, () => {
+ this.dz.removeFile(file);
+ });
+ }
+
+ onError(file, errorMessage, xhr) {
+ this.$emit('error', {file, errorMessage, xhr});
+
+ const setMessage = (message) => {
+ const messsageEl = file.previewElement.querySelector('[data-dz-errormessage]');
+ messsageEl.textContent = message;
+ }
+
+ if (xhr && xhr.status === 413) {
+ setMessage(this.uploadLimitMessage);
+ } else if (errorMessage.file) {
+ setMessage(errorMessage.file);
+ }
+ }
+
+ removeAll() {
+ this.dz.removeAllFiles(true);
+ }
+}
+
+export default Dropzone;
\ No newline at end of file
--- /dev/null
+import {onSelect} from "../services/dom";
+
+/**
+ * Class EntitySearch
+ * @extends {Component}
+ */
+class EntitySearch {
+ setup() {
+ this.entityId = this.$opts.entityId;
+ this.entityType = this.$opts.entityType;
+
+ this.contentView = this.$refs.contentView;
+ this.searchView = this.$refs.searchView;
+ this.searchResults = this.$refs.searchResults;
+ this.searchInput = this.$refs.searchInput;
+ this.searchForm = this.$refs.searchForm;
+ this.clearButton = this.$refs.clearButton;
+ this.loadingBlock = this.$refs.loadingBlock;
+
+ this.setupListeners();
+ }
+
+ setupListeners() {
+ this.searchInput.addEventListener('change', this.runSearch.bind(this));
+ this.searchForm.addEventListener('submit', e => {
+ e.preventDefault();
+ this.runSearch();
+ });
+
+ onSelect(this.clearButton, this.clearSearch.bind(this));
+ }
+
+ runSearch() {
+ const term = this.searchInput.value.trim();
+ if (term.length === 0) {
+ return this.clearSearch();
+ }
+
+ this.searchView.classList.remove('hidden');
+ this.contentView.classList.add('hidden');
+ this.loadingBlock.classList.remove('hidden');
+
+ const url = window.baseUrl(`/search/${this.entityType}/${this.entityId}`);
+ window.$http.get(url, {term}).then(resp => {
+ this.searchResults.innerHTML = resp.data;
+ }).catch(console.error).then(() => {
+ this.loadingBlock.classList.add('hidden');
+ });
+ }
+
+ clearSearch() {
+ this.searchView.classList.add('hidden');
+ this.contentView.classList.remove('hidden');
+ this.loadingBlock.classList.add('hidden');
+ this.searchInput.value = '';
+ }
+}
+
+export default EntitySearch;
\ No newline at end of file
-
+/**
+ * Entity Selector Popup
+ * @extends {Component}
+ */
class EntitySelectorPopup {
- constructor(elem) {
- this.elem = elem;
+ setup() {
+ this.elem = this.$el;
+ this.selectButton = this.$refs.select;
window.EntitySelectorPopup = this;
this.callback = null;
this.selection = null;
- this.selectButton = elem.querySelector('.entity-link-selector-confirm');
this.selectButton.addEventListener('click', this.onSelectButtonClick.bind(this));
-
window.$events.listen('entity-select-change', this.onSelectionChange.bind(this));
window.$events.listen('entity-select-confirm', this.onSelectionConfirm.bind(this));
}
show(callback) {
this.callback = callback;
- this.elem.components.overlay.show();
+ this.elem.components.popup.show();
}
hide() {
- this.elem.components.overlay.hide();
+ this.elem.components.popup.hide();
}
onSelectButtonClick() {
--- /dev/null
+import {onSelect} from "../services/dom";
+
+/**
+ * EventEmitSelect
+ * Component will simply emit an event when selected.
+ *
+ * Has one required option: "name".
+ * A name of "hello" will emit a component DOM event of
+ * "event-emit-select-name"
+ *
+ * All options will be set as the "detail" of the event with
+ * their values included.
+ *
+ * @extends {Component}
+ */
+class EventEmitSelect {
+ setup() {
+ this.container = this.$el;
+ this.name = this.$opts.name;
+
+
+ onSelect(this.$el, () => {
+ this.$emit(this.name, this.$opts);
+ });
+ }
+
+}
+
+export default EventEmitSelect;
\ No newline at end of file
--- /dev/null
+import {onChildEvent, onSelect, removeLoading, showLoading} from "../services/dom";
+
+/**
+ * ImageManager
+ * @extends {Component}
+ */
+class ImageManager {
+
+ setup() {
+
+ // Options
+ this.uploadedTo = this.$opts.uploadedTo;
+
+ // Element References
+ this.container = this.$el;
+ this.popupEl = this.$refs.popup;
+ this.searchForm = this.$refs.searchForm;
+ this.searchInput = this.$refs.searchInput;
+ this.cancelSearch = this.$refs.cancelSearch;
+ this.listContainer = this.$refs.listContainer;
+ this.filterTabs = this.$manyRefs.filterTabs;
+ this.selectButton = this.$refs.selectButton;
+ this.formContainer = this.$refs.formContainer;
+ this.dropzoneContainer = this.$refs.dropzoneContainer;
+
+ // Instance data
+ this.type = 'gallery';
+ this.lastSelected = {};
+ this.lastSelectedTime = 0;
+ this.callback = null;
+ this.resetState = () => {
+ this.hasData = false;
+ this.page = 1;
+ this.filter = 'all';
+ };
+ this.resetState();
+
+ this.setupListeners();
+
+ window.ImageManager = this;
+ }
+
+ setupListeners() {
+ onSelect(this.filterTabs, e => {
+ this.resetAll();
+ this.filter = e.target.dataset.filter;
+ this.setActiveFilterTab(this.filter);
+ this.loadGallery();
+ });
+
+ this.searchForm.addEventListener('submit', event => {
+ this.resetListView();
+ this.loadGallery();
+ event.preventDefault();
+ });
+
+ onSelect(this.cancelSearch, event => {
+ this.resetListView();
+ this.resetSearchView();
+ this.loadGallery();
+ this.cancelSearch.classList.remove('active');
+ });
+
+ this.searchInput.addEventListener('input', event => {
+ this.cancelSearch.classList.toggle('active', this.searchInput.value.trim());
+ });
+
+ onChildEvent(this.listContainer, '.load-more', 'click', async event => {
+ showLoading(event.target);
+ this.page++;
+ await this.loadGallery();
+ event.target.remove();
+ });
+
+ this.listContainer.addEventListener('event-emit-select-image', this.onImageSelectEvent.bind(this));
+
+ onSelect(this.selectButton, () => {
+ if (this.callback) {
+ this.callback(this.lastSelected);
+ }
+ this.hide();
+ });
+
+ onChildEvent(this.formContainer, '#image-manager-delete', 'click', event => {
+ if (this.lastSelected) {
+ this.loadImageEditForm(this.lastSelected.id, true);
+ }
+ });
+
+ this.formContainer.addEventListener('ajax-form-success', this.refreshGallery.bind(this));
+ this.container.addEventListener('dropzone-success', this.refreshGallery.bind(this));
+ }
+
+ show(callback, type = 'gallery') {
+ this.resetAll();
+
+ this.callback = callback;
+ this.type = type;
+ this.popupEl.components.popup.show();
+ this.dropzoneContainer.classList.toggle('hidden', type !== 'gallery');
+
+ if (!this.hasData) {
+ this.loadGallery();
+ this.hasData = true;
+ }
+ }
+
+ hide() {
+ this.popupEl.components.popup.hide();
+ }
+
+ async loadGallery() {
+ const params = {
+ page: this.page,
+ search: this.searchInput.value || null,
+ uploaded_to: this.uploadedTo,
+ filter_type: this.filter === 'all' ? null : this.filter,
+ };
+
+ const {data: html} = await window.$http.get(`images/${this.type}`, params);
+ this.addReturnedHtmlElementsToList(html);
+ removeLoading(this.listContainer);
+ }
+
+ addReturnedHtmlElementsToList(html) {
+ const el = document.createElement('div');
+ el.innerHTML = html;
+ window.components.init(el);
+ for (const child of [...el.children]) {
+ this.listContainer.appendChild(child);
+ }
+ }
+
+ setActiveFilterTab(filterName) {
+ this.filterTabs.forEach(t => t.classList.remove('selected'));
+ const activeTab = this.filterTabs.find(t => t.dataset.filter === filterName);
+ if (activeTab) {
+ activeTab.classList.add('selected');
+ }
+ }
+
+ resetAll() {
+ this.resetState();
+ this.resetListView();
+ this.resetSearchView();
+ this.resetEditForm();
+ this.setActiveFilterTab('all');
+ this.selectButton.classList.add('hidden');
+ }
+
+ resetSearchView() {
+ this.searchInput.value = '';
+ }
+
+ resetEditForm() {
+ this.formContainer.innerHTML = '';
+ }
+
+ resetListView() {
+ showLoading(this.listContainer);
+ this.page = 1;
+ }
+
+ refreshGallery() {
+ this.resetListView();
+ this.loadGallery();
+ }
+
+ onImageSelectEvent(event) {
+ const image = JSON.parse(event.detail.data);
+ const isDblClick = ((image && image.id === this.lastSelected.id)
+ && Date.now() - this.lastSelectedTime < 400);
+ const alreadySelected = event.target.classList.contains('selected');
+ [...this.listContainer.querySelectorAll('.selected')].forEach(el => {
+ el.classList.remove('selected');
+ });
+
+ if (!alreadySelected) {
+ event.target.classList.add('selected');
+ this.loadImageEditForm(image.id);
+ } else {
+ this.resetEditForm();
+ }
+ this.selectButton.classList.toggle('hidden', alreadySelected);
+
+ if (isDblClick && this.callback) {
+ this.callback(image);
+ this.hide();
+ }
+
+ this.lastSelected = image;
+ this.lastSelectedTime = Date.now();
+ }
+
+ async loadImageEditForm(imageId, requestDelete = false) {
+ if (!requestDelete) {
+ this.formContainer.innerHTML = '';
+ }
+
+ const params = requestDelete ? {delete: true} : {};
+ const {data: formHtml} = await window.$http.get(`/images/edit/${imageId}`, params);
+ this.formContainer.innerHTML = formHtml;
+ window.components.init(this.formContainer);
+ }
+
+}
+
+export default ImageManager;
\ No newline at end of file
-import dropdown from "./dropdown";
-import overlay from "./overlay";
-import backToTop from "./back-to-top";
-import notification from "./notification";
-import chapterToggle from "./chapter-toggle";
-import expandToggle from "./expand-toggle";
-import entitySelectorPopup from "./entity-selector-popup";
-import entitySelector from "./entity-selector";
-import sidebar from "./sidebar";
-import pagePicker from "./page-picker";
-import pageComments from "./page-comments";
-import wysiwygEditor from "./wysiwyg-editor";
-import markdownEditor from "./markdown-editor";
-import editorToolbox from "./editor-toolbox";
-import imagePicker from "./image-picker";
-import collapsible from "./collapsible";
-import toggleSwitch from "./toggle-switch";
-import pageDisplay from "./page-display";
-import shelfSort from "./shelf-sort";
-import homepageControl from "./homepage-control";
-import headerMobileToggle from "./header-mobile-toggle";
-import listSortControl from "./list-sort-control";
-import triLayout from "./tri-layout";
-import breadcrumbListing from "./breadcrumb-listing";
-import permissionsTable from "./permissions-table";
-import customCheckbox from "./custom-checkbox";
-import bookSort from "./book-sort";
-import settingAppColorPicker from "./setting-app-color-picker";
-import settingColorPicker from "./setting-color-picker";
-import entityPermissionsEditor from "./entity-permissions-editor";
-import templateManager from "./template-manager";
-import newUserPassword from "./new-user-password";
-import detailsHighlighter from "./details-highlighter";
-import codeHighlighter from "./code-highlighter";
-
-const componentMapping = {
- 'dropdown': dropdown,
- 'overlay': overlay,
- 'back-to-top': backToTop,
- 'notification': notification,
- 'chapter-toggle': chapterToggle,
- 'expand-toggle': expandToggle,
- 'entity-selector-popup': entitySelectorPopup,
- 'entity-selector': entitySelector,
- 'sidebar': sidebar,
- 'page-picker': pagePicker,
- 'page-comments': pageComments,
- 'wysiwyg-editor': wysiwygEditor,
- 'markdown-editor': markdownEditor,
- 'editor-toolbox': editorToolbox,
- 'image-picker': imagePicker,
- 'collapsible': collapsible,
- 'toggle-switch': toggleSwitch,
- 'page-display': pageDisplay,
- 'shelf-sort': shelfSort,
- 'homepage-control': homepageControl,
- 'header-mobile-toggle': headerMobileToggle,
- 'list-sort-control': listSortControl,
- 'tri-layout': triLayout,
- 'breadcrumb-listing': breadcrumbListing,
- 'permissions-table': permissionsTable,
- 'custom-checkbox': customCheckbox,
- 'book-sort': bookSort,
- 'setting-app-color-picker': settingAppColorPicker,
- 'setting-color-picker': settingColorPicker,
- 'entity-permissions-editor': entityPermissionsEditor,
- 'template-manager': templateManager,
- 'new-user-password': newUserPassword,
- 'details-highlighter': detailsHighlighter,
- 'code-highlighter': codeHighlighter,
-};
+const componentMapping = {};
-window.components = {};
+const definitionFiles = require.context('./', false, /\.js$/);
+for (const fileName of definitionFiles.keys()) {
+ const name = fileName.replace('./', '').split('.')[0];
+ if (name !== 'index') {
+ componentMapping[name] = definitionFiles(fileName).default;
+ }
+}
-const componentNames = Object.keys(componentMapping);
+window.components = {};
/**
* Initialize components of the given name within the given element.
* @param {String} componentName
* @param {HTMLElement|Document} parentElement
*/
-function initComponent(componentName, parentElement) {
- let elems = parentElement.querySelectorAll(`[${componentName}]`);
- if (elems.length === 0) return;
-
- let component = componentMapping[componentName];
- if (typeof window.components[componentName] === "undefined") window.components[componentName] = [];
+function searchForComponentInParent(componentName, parentElement) {
+ const elems = parentElement.querySelectorAll(`[${componentName}]`);
for (let j = 0, jLen = elems.length; j < jLen; j++) {
- let instance = new component(elems[j]);
- if (typeof elems[j].components === 'undefined') elems[j].components = {};
- elems[j].components[componentName] = instance;
- window.components[componentName].push(instance);
+ initComponent(componentName, elems[j]);
+ }
+}
+
+/**
+ * Initialize a component instance on the given dom element.
+ * @param {String} name
+ * @param {Element} element
+ */
+function initComponent(name, element) {
+ const componentModel = componentMapping[name];
+ if (componentModel === undefined) return;
+
+ // Create our component instance
+ let instance;
+ try {
+ instance = new componentModel(element);
+ instance.$el = element;
+ const allRefs = parseRefs(name, element);
+ instance.$refs = allRefs.refs;
+ instance.$manyRefs = allRefs.manyRefs;
+ instance.$opts = parseOpts(name, element);
+ instance.$emit = (eventName, data = {}) => {
+ data.from = instance;
+ const event = new CustomEvent(`${name}-${eventName}`, {
+ bubbles: true,
+ detail: data
+ });
+ instance.$el.dispatchEvent(event);
+ };
+ if (typeof instance.setup === 'function') {
+ instance.setup();
+ }
+ } catch (e) {
+ console.error('Failed to create component', e, name, element);
+ }
+
+
+ // Add to global listing
+ if (typeof window.components[name] === "undefined") {
+ window.components[name] = [];
+ }
+ window.components[name].push(instance);
+
+ // Add to element listing
+ if (typeof element.components === 'undefined') {
+ element.components = {};
}
+ element.components[name] = instance;
+}
+
+/**
+ * Parse out the element references within the given element
+ * for the given component name.
+ * @param {String} name
+ * @param {Element} element
+ */
+function parseRefs(name, element) {
+ const refs = {};
+ const manyRefs = {};
+
+ const prefix = `${name}@`
+ const selector = `[refs*="${prefix}"]`;
+ const refElems = [...element.querySelectorAll(selector)];
+ if (element.matches(selector)) {
+ refElems.push(element);
+ }
+
+ for (const el of refElems) {
+ const refNames = el.getAttribute('refs')
+ .split(' ')
+ .filter(str => str.startsWith(prefix))
+ .map(str => str.replace(prefix, ''))
+ .map(kebabToCamel);
+ for (const ref of refNames) {
+ refs[ref] = el;
+ if (typeof manyRefs[ref] === 'undefined') {
+ manyRefs[ref] = [];
+ }
+ manyRefs[ref].push(el);
+ }
+ }
+ return {refs, manyRefs};
+}
+
+/**
+ * Parse out the element component options.
+ * @param {String} name
+ * @param {Element} element
+ * @return {Object<String, String>}
+ */
+function parseOpts(name, element) {
+ const opts = {};
+ const prefix = `option:${name}:`;
+ for (const {name, value} of element.attributes) {
+ if (name.startsWith(prefix)) {
+ const optName = name.replace(prefix, '');
+ opts[kebabToCamel(optName)] = value || '';
+ }
+ }
+ return opts;
+}
+
+/**
+ * Convert a kebab-case string to camelCase
+ * @param {String} kebab
+ * @returns {string}
+ */
+function kebabToCamel(kebab) {
+ const ucFirst = (word) => word.slice(0,1).toUpperCase() + word.slice(1);
+ const words = kebab.split('-');
+ return words[0] + words.slice(1).map(ucFirst).join('');
}
/**
*/
function initAll(parentElement) {
if (typeof parentElement === 'undefined') parentElement = document;
- for (let i = 0, len = componentNames.length; i < len; i++) {
- initComponent(componentNames[i], parentElement);
+
+ // Old attribute system
+ for (const componentName of Object.keys(componentMapping)) {
+ searchForComponentInParent(componentName, parentElement);
+ }
+
+ // New component system
+ const componentElems = parentElement.querySelectorAll(`[component],[components]`);
+
+ for (const el of componentElems) {
+ const componentNames = `${el.getAttribute('component') || ''} ${(el.getAttribute('components'))}`.toLowerCase().split(' ').filter(Boolean);
+ for (const name of componentNames) {
+ initComponent(name, el);
+ }
}
}
window.components.init = initAll;
+window.components.first = (name) => (window.components[name] || [null])[0];
export default initAll;
+
+/**
+ * @typedef Component
+ * @property {HTMLElement} $el
+ * @property {Object<String, HTMLElement>} $refs
+ * @property {Object<String, HTMLElement[]>} $manyRefs
+ * @property {Object<String, String>} $opts
+ * @property {function(string, Object)} $emit
+ */
\ No newline at end of file
class MarkdownEditor {
- constructor(elem) {
- this.elem = elem;
+ setup() {
+ this.elem = this.$el;
- const pageEditor = document.getElementById('page-editor');
- this.pageId = pageEditor.getAttribute('page-id');
- this.textDirection = pageEditor.getAttribute('text-direction');
+ this.pageId = this.$opts.pageId;
+ this.textDirection = this.$opts.textDirection;
this.markdown = new MarkdownIt({html: true});
this.markdown.use(mdTasksLists, {label: true});
this.onMarkdownScroll = this.onMarkdownScroll.bind(this);
- this.display.addEventListener('load', () => {
+ const displayLoad = () => {
this.displayDoc = this.display.contentDocument;
this.init();
- });
+ };
+
+ if (this.display.contentDocument.readyState === 'complete') {
+ displayLoad();
+ } else {
+ this.display.addEventListener('load', displayLoad.bind(this));
+ }
- window.$events.emitPublic(elem, 'editor-markdown::setup', {
+ window.$events.emitPublic(this.elem, 'editor-markdown::setup', {
markdownIt: this.markdown,
displayEl: this.display,
codeMirrorInstance: this.cm,
loadStylesIntoDisplay() {
if (this.displayStylesLoaded) return;
- this.displayDoc.documentElement.className = 'markdown-editor-display';
+ this.displayDoc.documentElement.classList.add('markdown-editor-display');
+ // Set display to be dark mode if parent is
+
+ if (document.documentElement.classList.contains('dark-mode')) {
+ this.displayDoc.documentElement.style.backgroundColor = '#222';
+ this.displayDoc.documentElement.classList.add('dark-mode');
+ }
this.displayDoc.head.innerHTML = '';
const styles = document.head.querySelectorAll('style,link[rel=stylesheet]');
});
}
+ getDrawioUrl() {
+ const drawioUrlElem = document.querySelector('[drawio-url]');
+ return drawioUrlElem ? drawioUrlElem.getAttribute('drawio-url') : false;
+ }
+
// Show draw.io if enabled and handle save.
actionStartDrawing() {
- if (document.querySelector('[drawio-enabled]').getAttribute('drawio-enabled') !== 'true') return;
- let cursorPos = this.cm.getCursor('from');
+ const url = this.getDrawioUrl();
+ if (!url) return;
- DrawIO.show(() => {
+ const cursorPos = this.cm.getCursor('from');
+
+ DrawIO.show(url,() => {
return Promise.resolve('');
}, (pngData) => {
- // let id = "image-" + Math.random().toString(16).slice(2);
- // let loadingImage = window.baseUrl('/loading.gif');
- let data = {
+
+ const data = {
image: pngData,
uploaded_to: Number(document.getElementById('page-editor').getAttribute('page-id'))
};
// Show draw.io if enabled and handle save.
actionEditDrawing(imgContainer) {
- const drawingDisabled = document.querySelector('[drawio-enabled]').getAttribute('drawio-enabled') !== 'true';
- if (drawingDisabled) {
+ const drawioUrl = this.getDrawioUrl();
+ if (!drawioUrl) {
return;
}
const cursorPos = this.cm.getCursor('from');
const drawingId = imgContainer.getAttribute('drawio-diagram');
- DrawIO.show(() => {
+ DrawIO.show(drawioUrl, () => {
return DrawIO.load(drawingId);
}, (pngData) => {
const prependLineCount = markdown.split('\n').length;
this.cm.setCursor(cursorPos.line + prependLineCount, cursorPos.ch);
});
+
+ // Focus on editor
+ window.$events.listen('editor::focus', () => {
+ this.cm.focus();
+ });
}
}
this.elem.classList.add('showing');
}, 1);
- if (this.autohide) setTimeout(this.hide.bind(this), 2000);
+ if (this.autohide) {
+ const words = textToShow.split(' ').length;
+ const timeToShow = Math.max(2000, 1000 + (250 * words));
+ setTimeout(this.hide.bind(this), timeToShow);
+ }
}
hide() {
--- /dev/null
+import {onSelect} from "../services/dom";
+
+class OptionalInput {
+ setup() {
+ this.removeButton = this.$refs.remove;
+ this.showButton = this.$refs.show;
+ this.input = this.$refs.input;
+ this.setupListeners();
+ }
+
+ setupListeners() {
+ onSelect(this.removeButton, () => {
+ this.input.value = '';
+ this.input.classList.add('hidden');
+ this.removeButton.classList.add('hidden');
+ this.showButton.classList.remove('hidden');
+ });
+
+ onSelect(this.showButton, () => {
+ this.input.classList.remove('hidden');
+ this.removeButton.classList.remove('hidden');
+ this.showButton.classList.add('hidden');
+ });
+ }
+
+}
+
+export default OptionalInput;
\ No newline at end of file
+++ /dev/null
-import {fadeIn, fadeOut} from "../services/animations";
-
-class Overlay {
-
- constructor(elem) {
- this.container = elem;
- elem.addEventListener('click', event => {
- if (event.target === elem) return this.hide();
- });
-
- window.addEventListener('keyup', event => {
- if (event.key === 'Escape') {
- this.hide();
- }
- });
-
- let closeButtons = elem.querySelectorAll('.popup-header-close');
- for (let i=0; i < closeButtons.length; i++) {
- closeButtons[i].addEventListener('click', this.hide.bind(this));
- }
- }
-
- hide(onComplete = null) { this.toggle(false, onComplete); }
- show(onComplete = null) { this.toggle(true, onComplete); }
-
- toggle(show = true, onComplete) {
- if (show) {
- fadeIn(this.container, 240, onComplete);
- } else {
- fadeOut(this.container, 240, onComplete);
- }
- }
-
- focusOnBody() {
- const body = this.container.querySelector('.popup-body');
- if (body) {
- body.focus();
- }
- }
-
-}
-
-export default Overlay;
\ No newline at end of file
-import MarkdownIt from "markdown-it";
import {scrollAndHighlightElement} from "../services/util";
-const md = new MarkdownIt({ html: false });
-
class PageComments {
constructor(elem) {
let text = form.querySelector('textarea').value;
let reqData = {
text: text,
- html: md.render(text),
parent_id: this.parentId || null,
};
this.showLoading(form);
let commentId = this.editingComment.getAttribute('comment');
- window.$http.put(window.baseUrl(`/ajax/comment/${commentId}`), reqData).then(resp => {
+ window.$http.put(`/ajax/comment/${commentId}`, reqData).then(resp => {
let newComment = document.createElement('div');
newComment.innerHTML = resp.data;
this.editingComment.innerHTML = newComment.children[0].innerHTML;
deleteComment(commentElem) {
let id = commentElem.getAttribute('comment');
this.showLoading(commentElem.querySelector('[comment-content]'));
- window.$http.delete(window.baseUrl(`/ajax/comment/${id}`)).then(resp => {
+ window.$http.delete(`/ajax/comment/${id}`).then(resp => {
commentElem.parentNode.removeChild(commentElem);
window.$events.emit('success', window.trans('entities.comment_deleted_success'));
this.updateCount();
let text = this.formInput.value;
let reqData = {
text: text,
- html: md.render(text),
parent_id: this.parentId || null,
};
this.showLoading(this.form);
- window.$http.post(window.baseUrl(`/ajax/page/${this.pageId}/comment`), reqData).then(resp => {
+ window.$http.post(`/ajax/page/${this.pageId}/comment`, reqData).then(resp => {
let newComment = document.createElement('div');
newComment.innerHTML = resp.data;
let newElem = newComment.children[0];
}
showLoading(formElem) {
- let groups = formElem.querySelectorAll('.form-group');
- for (let i = 0, len = groups.length; i < len; i++) {
- groups[i].style.display = 'none';
+ const groups = formElem.querySelectorAll('.form-group');
+ for (let group of groups) {
+ group.style.display = 'none';
}
formElem.querySelector('.form-group.loading').style.display = 'block';
}
hideLoading(formElem) {
- let groups = formElem.querySelectorAll('.form-group');
- for (let i = 0, len = groups.length; i < len; i++) {
- groups[i].style.display = 'block';
+ const groups = formElem.querySelectorAll('.form-group');
+ for (let group of groups) {
+ group.style.display = 'block';
}
formElem.querySelector('.form-group.loading').style.display = 'none';
}
--- /dev/null
+import * as Dates from "../services/dates";
+import {onSelect} from "../services/dom";
+
+/**
+ * Page Editor
+ * @extends {Component}
+ */
+class PageEditor {
+ setup() {
+ // Options
+ this.draftsEnabled = this.$opts.draftsEnabled === 'true';
+ this.editorType = this.$opts.editorType;
+ this.pageId = Number(this.$opts.pageId);
+ this.isNewDraft = this.$opts.pageNewDraft === 'true';
+ this.hasDefaultTitle = this.$opts.isDefaultTitle || false;
+
+ // Elements
+ this.container = this.$el;
+ this.titleElem = this.$refs.titleContainer.querySelector('input');
+ this.saveDraftButton = this.$refs.saveDraft;
+ this.discardDraftButton = this.$refs.discardDraft;
+ this.discardDraftWrap = this.$refs.discardDraftWrap;
+ this.draftDisplay = this.$refs.draftDisplay;
+ this.draftDisplayIcon = this.$refs.draftDisplayIcon;
+ this.changelogInput = this.$refs.changelogInput;
+ this.changelogDisplay = this.$refs.changelogDisplay;
+
+ // Translations
+ this.draftText = this.$opts.draftText;
+ this.autosaveFailText = this.$opts.autosaveFailText;
+ this.editingPageText = this.$opts.editingPageText;
+ this.draftDiscardedText = this.$opts.draftDiscardedText;
+ this.setChangelogText = this.$opts.setChangelogText;
+
+ // State data
+ this.editorHTML = '';
+ this.editorMarkdown = '';
+ this.autoSave = {
+ interval: null,
+ frequency: 30000,
+ last: 0,
+ };
+ this.draftHasError = false;
+
+ if (this.pageId !== 0 && this.draftsEnabled) {
+ window.setTimeout(() => {
+ this.startAutoSave();
+ }, 1000);
+ }
+ this.draftDisplay.innerHTML = this.draftText;
+
+ this.setupListeners();
+ this.setInitialFocus();
+ }
+
+ setupListeners() {
+ // Listen to save events from editor
+ window.$events.listen('editor-save-draft', this.saveDraft.bind(this));
+ window.$events.listen('editor-save-page', this.savePage.bind(this));
+
+ // Listen to content changes from the editor
+ window.$events.listen('editor-html-change', html => {
+ this.editorHTML = html;
+ });
+ window.$events.listen('editor-markdown-change', markdown => {
+ this.editorMarkdown = markdown;
+ });
+
+ // Changelog controls
+ this.changelogInput.addEventListener('change', this.updateChangelogDisplay.bind(this));
+
+ // Draft Controls
+ onSelect(this.saveDraftButton, this.saveDraft.bind(this));
+ onSelect(this.discardDraftButton, this.discardDraft.bind(this));
+ }
+
+ setInitialFocus() {
+ if (this.hasDefaultTitle) {
+ return this.titleElem.select();
+ }
+
+ window.setTimeout(() => {
+ window.$events.emit('editor::focus', '');
+ }, 500);
+ }
+
+ startAutoSave() {
+ let lastContent = this.titleElem.value.trim() + '::' + this.editorHTML;
+ this.autoSaveInterval = window.setInterval(() => {
+ // Stop if manually saved recently to prevent bombarding the server
+ let savedRecently = (Date.now() - this.autoSave.last < (this.autoSave.frequency)/2);
+ if (savedRecently) return;
+ const newContent = this.titleElem.value.trim() + '::' + this.editorHTML;
+ if (newContent !== lastContent) {
+ lastContent = newContent;
+ this.saveDraft();
+ }
+
+ }, this.autoSave.frequency);
+ }
+
+ savePage() {
+ this.container.closest('form').submit();
+ }
+
+ async saveDraft() {
+ const data = {
+ name: this.titleElem.value.trim(),
+ html: this.editorHTML,
+ };
+
+ if (this.editorType === 'markdown') {
+ data.markdown = this.editorMarkdown;
+ }
+
+ try {
+ const resp = await window.$http.put(`/ajax/page/${this.pageId}/save-draft`, data);
+ this.draftHasError = false;
+ if (!this.isNewDraft) {
+ this.toggleDiscardDraftVisibility(true);
+ }
+ this.draftNotifyChange(`${resp.data.message} ${Dates.utcTimeStampToLocalTime(resp.data.timestamp)}`);
+ this.autoSave.last = Date.now();
+ } catch (err) {
+ if (!this.draftHasError) {
+ this.draftHasError = true;
+ window.$events.emit('error', this.autosaveFailText);
+ }
+ }
+
+ }
+
+ draftNotifyChange(text) {
+ this.draftDisplay.innerText = text;
+ this.draftDisplayIcon.classList.add('visible');
+ window.setTimeout(() => {
+ this.draftDisplayIcon.classList.remove('visible');
+ }, 2000);
+ }
+
+ async discardDraft() {
+ let response;
+ try {
+ response = await window.$http.get(`/ajax/page/${this.pageId}`);
+ } catch (e) {
+ return console.error(e);
+ }
+
+ if (this.autoSave.interval) {
+ window.clearInterval(this.autoSave.interval);
+ }
+
+ this.draftDisplay.innerText = this.editingPageText;
+ this.toggleDiscardDraftVisibility(false);
+ window.$events.emit('editor-html-update', response.data.html || '');
+ window.$events.emit('editor-markdown-update', response.data.markdown || response.data.html);
+
+ this.titleElem.value = response.data.name;
+ window.setTimeout(() => {
+ this.startAutoSave();
+ }, 1000);
+ window.$events.emit('success', this.draftDiscardedText);
+
+ }
+
+ updateChangelogDisplay() {
+ let summary = this.changelogInput.value.trim();
+ if (summary.length === 0) {
+ summary = this.setChangelogText;
+ } else if (summary.length > 16) {
+ summary = summary.slice(0, 16) + '...';
+ }
+ this.changelogDisplay.innerText = summary;
+ }
+
+ toggleDiscardDraftVisibility(show) {
+ this.discardDraftWrap.classList.toggle('hidden', !show);
+ }
+
+}
+
+export default PageEditor;
\ No newline at end of file
--- /dev/null
+import {fadeIn, fadeOut} from "../services/animations";
+import {onSelect} from "../services/dom";
+
+/**
+ * Popup window that will contain other content.
+ * This component provides the show/hide functionality
+ * with the ability for popup@hide child references to close this.
+ * @extends {Component}
+ */
+class Popup {
+
+ setup() {
+ this.container = this.$el;
+ this.hideButtons = this.$manyRefs.hide || [];
+
+ this.onkeyup = null;
+ this.onHide = null;
+ this.setupListeners();
+ }
+
+ setupListeners() {
+ let lastMouseDownTarget = null;
+ this.container.addEventListener('mousedown', event => {
+ lastMouseDownTarget = event.target;
+ });
+
+ this.container.addEventListener('click', event => {
+ if (event.target === this.container && lastMouseDownTarget === this.container) {
+ return this.hide();
+ }
+ });
+
+ onSelect(this.hideButtons, e => this.hide());
+ }
+
+ hide(onComplete = null) {
+ fadeOut(this.container, 240, onComplete);
+ if (this.onkeyup) {
+ window.removeEventListener('keyup', this.onkeyup);
+ this.onkeyup = null;
+ }
+ if (this.onHide) {
+ this.onHide();
+ }
+ }
+
+ show(onComplete = null, onHide = null) {
+ fadeIn(this.container, 240, onComplete);
+
+ this.onkeyup = (event) => {
+ if (event.key === 'Escape') {
+ this.hide();
+ }
+ };
+ window.addEventListener('keyup', this.onkeyup);
+ this.onHide = onHide;
+ }
+
+}
+
+export default Popup;
\ No newline at end of file
--- /dev/null
+import Sortable from "sortablejs";
+
+/**
+ * SortableList
+ * @extends {Component}
+ */
+class SortableList {
+ setup() {
+ this.container = this.$el;
+ this.handleSelector = this.$opts.handleSelector;
+
+ const sortable = new Sortable(this.container, {
+ handle: this.handleSelector,
+ animation: 150,
+ onSort: () => {
+ this.$emit('sort', {ids: sortable.toArray()});
+ }
+ });
+ }
+}
+
+export default SortableList;
\ No newline at end of file
--- /dev/null
+/**
+ * Tabs
+ * Works by matching 'tabToggle<Key>' with 'tabContent<Key>' sections.
+ * @extends {Component}
+ */
+import {onSelect} from "../services/dom";
+
+class Tabs {
+
+ setup() {
+ this.tabContentsByName = {};
+ this.tabButtonsByName = {};
+ this.allContents = [];
+ this.allButtons = [];
+
+ for (const [key, elems] of Object.entries(this.$manyRefs || {})) {
+ if (key.startsWith('toggle')) {
+ const cleanKey = key.replace('toggle', '').toLowerCase();
+ onSelect(elems, e => this.show(cleanKey));
+ this.allButtons.push(...elems);
+ this.tabButtonsByName[cleanKey] = elems;
+ }
+ if (key.startsWith('content')) {
+ const cleanKey = key.replace('content', '').toLowerCase();
+ this.tabContentsByName[cleanKey] = elems;
+ this.allContents.push(...elems);
+ }
+ }
+ }
+
+ show(key) {
+ this.allContents.forEach(c => {
+ c.classList.add('hidden');
+ c.classList.remove('selected');
+ });
+ this.allButtons.forEach(b => b.classList.remove('selected'));
+
+ const contents = this.tabContentsByName[key] || [];
+ const buttons = this.tabButtonsByName[key] || [];
+ if (contents.length > 0) {
+ contents.forEach(c => {
+ c.classList.remove('hidden')
+ c.classList.add('selected')
+ });
+ buttons.forEach(b => b.classList.add('selected'));
+ }
+ }
+
+}
+
+export default Tabs;
\ No newline at end of file
--- /dev/null
+/**
+ * TagManager
+ * @extends {Component}
+ */
+class TagManager {
+ setup() {
+ this.addRemoveComponentEl = this.$refs.addRemove;
+ this.container = this.$el;
+ this.rowSelector = this.$opts.rowSelector;
+
+ this.setupListeners();
+ }
+
+ setupListeners() {
+ this.container.addEventListener('change', event => {
+ const addRemoveComponent = this.addRemoveComponentEl.components['add-remove-rows'];
+ if (!this.hasEmptyRows()) {
+ addRemoveComponent.add();
+ }
+ });
+ }
+
+ hasEmptyRows() {
+ const rows = this.container.querySelectorAll(this.rowSelector);
+ const firstEmpty = [...rows].find(row => {
+ return [...row.querySelectorAll('input')].filter(input => input.value).length === 0;
+ });
+ return firstEmpty !== undefined;
+ }
+}
+
+export default TagManager;
\ No newline at end of file
setupSearchBox() {
const searchBox = this.elem.querySelector('.search-box');
+
+ // Search box may not exist if there are no existing templates in the system.
+ if (!searchBox) return;
+
const input = searchBox.querySelector('input');
const submitButton = searchBox.querySelector('button');
const cancelButton = searchBox.querySelector('button.search-box-cancel');
}
performSearch = performSearch.bind(this);
- // Searchbox enter press
+ // Search box enter press
searchBox.addEventListener('keypress', event => {
if (event.key === 'Enter') {
event.preventDefault();
// Loop through callout styles
editor.shortcuts.add('meta+9', '', function() {
- let selectedNode = editor.selection.getNode();
- let formats = ['info', 'success', 'warning', 'danger'];
+ const selectedNode = editor.selection.getNode();
+ const callout = selectedNode ? selectedNode.closest('.callout') : null;
- if (!selectedNode || selectedNode.className.indexOf('callout') === -1) {
- editor.formatter.apply('calloutinfo');
- return;
- }
+ const formats = ['info', 'success', 'warning', 'danger'];
+ const currentFormatIndex = formats.findIndex(format => callout && callout.classList.contains(format));
+ const newFormatIndex = (currentFormatIndex + 1) % formats.length;
+ const newFormat = formats[newFormatIndex];
- for (let i = 0; i < formats.length; i++) {
- if (selectedNode.className.indexOf(formats[i]) === -1) continue;
- let newFormat = (i === formats.length -1) ? formats[0] : formats[i+1];
- editor.formatter.apply('callout' + newFormat);
- return;
- }
- editor.formatter.apply('p');
+ editor.formatter.apply('callout' + newFormat);
});
}
}
function showPopup(editor) {
- let selectedNode = editor.selection.getNode();
+ const selectedNode = editor.selection.getNode();
if (!elemIsCodeBlock(selectedNode)) {
- let providedCode = editor.selection.getNode().textContent;
- window.vues['code-editor'].open(providedCode, '', (code, lang) => {
- let wrap = document.createElement('div');
+ const providedCode = editor.selection.getNode().textContent;
+ window.components.first('code-editor').open(providedCode, '', (code, lang) => {
+ const wrap = document.createElement('div');
wrap.innerHTML = `<pre><code class="language-${lang}"></code></pre>`;
wrap.querySelector('code').innerText = code;
editor.formatter.toggle('pre');
- let node = editor.selection.getNode();
+ const node = editor.selection.getNode();
editor.dom.setHTML(node, wrap.querySelector('pre').innerHTML);
editor.fire('SetContent');
+
+ editor.focus()
});
return;
}
let lang = selectedNode.hasAttribute('data-lang') ? selectedNode.getAttribute('data-lang') : '';
let currentCode = selectedNode.querySelector('textarea').textContent;
- window.vues['code-editor'].open(currentCode, lang, (code, lang) => {
- let editorElem = selectedNode.querySelector('.CodeMirror');
- let cmInstance = editorElem.CodeMirror;
+ window.components.first('code-editor').open(currentCode, lang, (code, lang) => {
+ const editorElem = selectedNode.querySelector('.CodeMirror');
+ const cmInstance = editorElem.CodeMirror;
if (cmInstance) {
Code.setContent(cmInstance, code);
Code.setMode(cmInstance, lang, code);
}
- let textArea = selectedNode.querySelector('textarea');
+ const textArea = selectedNode.querySelector('textarea');
if (textArea) textArea.textContent = code;
selectedNode.setAttribute('data-lang', lang);
+
+ editor.focus()
});
}
});
}
-function drawIoPlugin() {
+function drawIoPlugin(drawioUrl, isDarkMode, pageId) {
let pageEditor = null;
let currentNode = null;
function showDrawingEditor(mceEditor, selectedNode = null) {
pageEditor = mceEditor;
currentNode = selectedNode;
- DrawIO.show(drawingInit, updateContent);
+ DrawIO.show(drawioUrl, drawingInit, updateContent);
}
async function updateContent(pngData) {
const id = "image-" + Math.random().toString(16).slice(2);
const loadingImage = window.baseUrl('/loading.gif');
- const pageId = Number(document.getElementById('page-editor').getAttribute('page-id'));
// Handle updating an existing image
if (currentNode) {
window.tinymce.PluginManager.add('drawio', function(editor, url) {
editor.addCommand('drawio', () => {
- let selectedNode = editor.selection.getNode();
+ const selectedNode = editor.selection.getNode();
showDrawingEditor(editor, isDrawing(selectedNode) ? selectedNode : null);
});
editor.addButton('drawio', {
type: 'splitbutton',
tooltip: 'Drawing',
- image: `data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiMwMDAwMDAiICB4bWxucz0iaHR0cDovL3d3 dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0iTTIzIDdWMWgtNnYySDdWMUgxdjZoMnYx MEgxdjZoNnYtMmgxMHYyaDZ2LTZoLTJWN2gyek0zIDNoMnYySDNWM3ptMiAxOEgzdi0yaDJ2Mnpt MTItMkg3di0ySDVWN2gyVjVoMTB2MmgydjEwaC0ydjJ6bTQgMmgtMnYtMmgydjJ6TTE5IDVWM2gy djJoLTJ6bS01LjI3IDloLTMuNDlsLS43MyAySDcuODlsMy40LTloMS40bDMuNDEgOWgtMS42M2wt Ljc0LTJ6bS0zLjA0LTEuMjZoMi42MUwxMiA4LjkxbC0xLjMxIDMuODN6Ii8+CiAgICA8cGF0aCBk PSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+Cjwvc3ZnPg==`,
+ image: `data:image/svg+xml;base64,${btoa(`<svg viewBox="0 0 24 24" fill="${isDarkMode ? '#BBB' : '#000000'}" xmlns="http://www.w3.org/2000/svg">
+ <path d="M23 7V1h-6v2H7V1H1v6h2v10H1v6h6v-2h10v2h6v-6h-2V7h2zM3 3h2v2H3V3zm2 18H3v-2h2v2zm12-2H7v-2H5V7h2V5h10v2h2v10h-2v2zm4 2h-2v-2h2v2zM19 5V3h2v2h-2zm-5.27 9h-3.49l-.73 2H7.89l3.4-9h1.4l3.41 9h-1.63l-.74-2zm-3.04-1.26h2.61L12 8.91l-1.31 3.83z"/>
+ <path d="M0 0h24v24H0z" fill="none"/>
+</svg>`)}`,
cmd: 'drawio',
menu: [
{
editor.setContent(content);
});
+ // Focus on the editor
+ window.$events.listen('editor::focus', () => {
+ editor.focus();
+ });
}
class WysiwygEditor {
- constructor(elem) {
- this.elem = elem;
- const pageEditor = document.getElementById('page-editor');
- this.pageId = pageEditor.getAttribute('page-id');
- this.textDirection = pageEditor.getAttribute('text-direction');
+ setup() {
+ this.elem = this.$el;
+
+ this.pageId = this.$opts.pageId;
+ this.textDirection = this.$opts.textDirection;
+ this.isDarkMode = document.documentElement.classList.contains('dark-mode');
- this.plugins = "image table textcolor paste link autolink fullscreen imagetools code customhr autosave lists codeeditor media";
+ this.plugins = "image table textcolor paste link autolink fullscreen code customhr autosave lists codeeditor media";
this.loadPlugins();
this.tinyMceConfig = this.getTinyMceConfig();
- window.$events.emitPublic(elem, 'editor-tinymce::pre-init', {config: this.tinyMceConfig});
+ window.$events.emitPublic(this.elem, 'editor-tinymce::pre-init', {config: this.tinyMceConfig});
window.tinymce.init(this.tinyMceConfig);
}
loadPlugins() {
codePlugin();
customHrPlugin();
- if (document.querySelector('[drawio-enabled]').getAttribute('drawio-enabled') === 'true') {
- drawIoPlugin();
+
+ const drawioUrlElem = document.querySelector('[drawio-url]');
+ if (drawioUrlElem) {
+ const url = drawioUrlElem.getAttribute('drawio-url');
+ drawIoPlugin(url, this.isDarkMode, this.pageId);
this.plugins += ' drawio';
}
+
if (this.textDirection === 'rtl') {
this.plugins += ' directionality'
}
window.baseUrl('/dist/styles.css'),
],
branding: false,
+ skin: this.isDarkMode ? 'dark' : 'lightgray',
body_class: 'page-content',
browser_spellcheck: true,
relative_urls: false,
plugins: this.plugins,
imagetools_toolbar: 'imageoptions',
toolbar: this.getToolBar(),
- content_style: "html, body {background: #FFF;} body {padding-left: 15px !important; padding-right: 15px !important; margin:0!important; margin-left:auto!important;margin-right:auto!important;}",
+ content_style: `html, body, html.dark-mode {background: ${this.isDarkMode ? '#222' : '#fff'};} body {padding-left: 15px !important; padding-right: 15px !important; margin:0!important; margin-left:auto!important;margin-right:auto!important;}`,
style_formats: [
{title: "Header Large", format: "h2"},
{title: "Header Medium", format: "h3"},
const originalField = win.document.getElementById(field_name);
originalField.value = entity.link;
const mceForm = originalField.closest('.mce-form');
- mceForm.querySelectorAll('input')[2].value = entity.name;
+ const inputs = mceForm.querySelectorAll('input');
+
+ // Set text to display if not empty
+ if (!inputs[1].value) {
+ inputs[1].value = entity.name;
+ }
+
+ // Set title field
+ inputs[2].value = entity.name;
});
}
});
function editorChange() {
- let content = editor.getContent();
+ const content = editor.getContent();
+ if (context.isDarkMode) {
+ editor.contentDocument.documentElement.classList.add('dark-mode');
+ }
window.$events.emit('editor-html-change', content);
}
registerEditorShortcuts(editor);
let wrap;
+ let draggedContentEditable;
function hasTextContent(node) {
return node && !!( node.textContent || node.innerText );
editor.on('dragstart', function () {
let node = editor.selection.getNode();
- if (node.nodeName !== 'IMG') return;
- wrap = editor.dom.getParent(node, '.mceTemp');
+ if (node.nodeName === 'IMG') {
+ wrap = editor.dom.getParent(node, '.mceTemp');
+
+ if (!wrap && node.parentNode.nodeName === 'A' && !hasTextContent(node.parentNode)) {
+ wrap = node.parentNode;
+ }
+ }
- if (!wrap && node.parentNode.nodeName === 'A' && !hasTextContent(node.parentNode)) {
- wrap = node.parentNode;
+ // Track dragged contenteditable blocks
+ if (node.hasAttribute('contenteditable') && node.getAttribute('contenteditable') === 'false') {
+ draggedContentEditable = node;
}
+
});
editor.on('drop', function (event) {
rng = tinymce.dom.RangeUtils.getCaretRangeFromPoint(event.clientX, event.clientY, editor.getDoc());
// Template insertion
- const templateId = event.dataTransfer.getData('bookstack/template');
+ const templateId = event.dataTransfer && event.dataTransfer.getData('bookstack/template');
if (templateId) {
event.preventDefault();
window.$http.get(`/templates/${templateId}`).then(resp => {
});
}
+ // Handle contenteditable section drop
+ if (!event.isDefaultPrevented() && draggedContentEditable) {
+ event.preventDefault();
+ editor.undoManager.transact(function () {
+ const selectedNode = editor.selection.getNode();
+ const range = editor.selection.getRng();
+ const selectedNodeRoot = selectedNode.closest('body > *');
+ if (range.startOffset > (range.startContainer.length / 2)) {
+ editor.$(selectedNodeRoot).after(draggedContentEditable);
+ } else {
+ editor.$(selectedNodeRoot).before(draggedContentEditable);
+ }
+ });
+ }
+
+ // Handle image insert
if (!event.isDefaultPrevented()) {
editorPaste(event, editor, context);
}
window.trans = translator.get.bind(translator);
window.trans_choice = translator.getPlural.bind(translator);
-// Make services available to Vue instances
-import Vue from "vue"
-Vue.prototype.$http = httpInstance;
-Vue.prototype.$events = eventManager;
-
-// Load Vues and components
-import vues from "./vues/vues"
+// Load Components
import components from "./components"
-vues();
components();
\ No newline at end of file
import 'codemirror/mode/css/css';
import 'codemirror/mode/clike/clike';
import 'codemirror/mode/diff/diff';
+import 'codemirror/mode/fortran/fortran';
import 'codemirror/mode/go/go';
+import 'codemirror/mode/haskell/haskell';
import 'codemirror/mode/htmlmixed/htmlmixed';
import 'codemirror/mode/javascript/javascript';
import 'codemirror/mode/julia/julia';
import 'codemirror/mode/lua/lua';
-import 'codemirror/mode/haskell/haskell';
import 'codemirror/mode/markdown/markdown';
import 'codemirror/mode/mllike/mllike';
import 'codemirror/mode/nginx/nginx';
+import 'codemirror/mode/perl/perl';
+import 'codemirror/mode/pascal/pascal';
import 'codemirror/mode/php/php';
import 'codemirror/mode/powershell/powershell';
import 'codemirror/mode/properties/properties';
import 'codemirror/mode/toml/toml';
import 'codemirror/mode/xml/xml';
import 'codemirror/mode/yaml/yaml';
-import 'codemirror/mode/pascal/pascal';
// Addons
import 'codemirror/addon/scroll/scrollpastend';
'c#': 'text/x-csharp',
csharp: 'text/x-csharp',
diff: 'diff',
+ for: 'fortran',
+ fortran: 'fortran',
go: 'go',
haskell: 'haskell',
hs: 'haskell',
markdown: 'markdown',
ml: 'mllike',
nginx: 'nginx',
+ perl: 'perl',
+ pl: 'perl',
powershell: 'powershell',
properties: 'properties',
ocaml: 'mllike',
function highlightElem(elem) {
const innerCodeElem = elem.querySelector('code[class^=language-]');
elem.innerHTML = elem.innerHTML.replace(/<br\s*[\/]?>/gi ,'\n');
- const content = elem.textContent;
+ const content = elem.textContent.trimEnd();
let mode = '';
if (innerCodeElem !== null) {
* @returns {*|string}
*/
function getTheme() {
- return window.codeTheme || 'default';
+ const darkMode = document.documentElement.classList.contains('dark-mode');
+ return window.codeTheme || (darkMode ? 'darcula' : 'default');
}
/**
/**
* Helper to run an action when an element is selected.
* A "select" is made to be accessible, So can be a click, space-press or enter-press.
- * @param listenerElement
- * @param callback
+ * @param {HTMLElement|Array} elements
+ * @param {function} callback
*/
-export function onSelect(listenerElement, callback) {
- listenerElement.addEventListener('click', callback);
- listenerElement.addEventListener('keydown', (event) => {
- if (event.key === 'Enter' || event.key === ' ') {
- event.preventDefault();
+export function onSelect(elements, callback) {
+ if (!Array.isArray(elements)) {
+ elements = [elements];
+ }
+
+ for (const listenerElement of elements) {
+ listenerElement.addEventListener('click', callback);
+ listenerElement.addEventListener('keydown', (event) => {
+ if (event.key === 'Enter' || event.key === ' ') {
+ event.preventDefault();
+ callback(event);
+ }
+ });
+ }
+}
+
+/**
+ * Listen to enter press on the given element(s).
+ * @param {HTMLElement|Array} elements
+ * @param {function} callback
+ */
+export function onEnterPress(elements, callback) {
+ if (!Array.isArray(elements)) {
+ elements = [elements];
+ }
+
+ const listener = event => {
+ if (event.key === 'Enter') {
callback(event);
}
- });
+ }
+
+ elements.forEach(e => e.addEventListener('keypress', listener));
}
/**
}
}
return null;
+}
+
+/**
+ * Show a loading indicator in the given element.
+ * This will effectively clear the element.
+ * @param {Element} element
+ */
+export function showLoading(element) {
+ element.innerHTML = `<div class="loading-container"><div></div><div></div><div></div></div>`;
+}
+
+/**
+ * Remove any loading indicators within the given element.
+ * @param {Element} element
+ */
+export function removeLoading(element) {
+ const loadingEls = element.querySelectorAll('.loading-container');
+ for (const el of loadingEls) {
+ el.remove();
+ }
}
\ No newline at end of file
-
-const drawIoUrl = 'https://www.draw.io/?embed=1&ui=atlas&spin=1&proto=json';
let iFrame = null;
let onInit, onSave;
/**
* Show the draw.io editor.
- * @param onInitCallback - Must return a promise with the xml to load for the editor.
- * @param onSaveCallback - Is called with the drawing data on save.
+ * @param {String} drawioUrl
+ * @param {Function} onInitCallback - Must return a promise with the xml to load for the editor.
+ * @param {Function} onSaveCallback - Is called with the drawing data on save.
*/
-function show(onInitCallback, onSaveCallback) {
+function show(drawioUrl, onInitCallback, onSaveCallback) {
onInit = onInitCallback;
onSave = onSaveCallback;
iFrame = document.createElement('iframe');
iFrame.setAttribute('frameborder', '0');
window.addEventListener('message', drawReceive);
- iFrame.setAttribute('src', drawIoUrl);
+ iFrame.setAttribute('src', drawioUrl);
iFrame.setAttribute('class', 'fullscreen');
iFrame.style.backgroundColor = '#FFFFFF';
document.body.appendChild(iFrame);
body: data,
};
+ // Send data as JSON if a plain object
if (typeof data === 'object' && !(data instanceof FormData)) {
options.headers = {'Content-Type': 'application/json'};
options.body = JSON.stringify(data);
}
+ // Ensure FormData instances are sent over POST
+ // Since Laravel does not read multipart/form-data from other types
+ // of request. Hence the addition of the magic _method value.
+ if (data instanceof FormData && method !== 'post') {
+ data.append('_method', method);
+ options.method = 'post';
+ }
+
return request(url, options)
}
const response = await fetch(url, options);
const content = await getResponseContent(response);
- return {
+ const returnData = {
data: content,
headers: response.headers,
redirected: response.redirected,
statusText: response.statusText,
url: response.url,
original: response,
+ };
+
+ if (!response.ok) {
+ throw returnData;
}
+
+ return returnData;
}
/**
element.classList.remove('selectFade');
element.style.backgroundColor = '';
}, 3000);
+}
+
+/**
+ * Escape any HTML in the given 'unsafe' string.
+ * Take from https://stackoverflow.com/a/6234804.
+ * @param {String} unsafe
+ * @returns {string}
+ */
+export function escapeHtml(unsafe) {
+ return unsafe
+ .replace(/&/g, "&")
+ .replace(/</g, "<")
+ .replace(/>/g, ">")
+ .replace(/"/g, """)
+ .replace(/'/g, "'");
+}
+
+/**
+ * Generate a random unique ID.
+ *
+ * @returns {string}
+ */
+export function uniqueId() {
+ const S4 = () => (((1+Math.random())*0x10000)|0).toString(16).substring(1);
+ return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
\ No newline at end of file
+++ /dev/null
-import draggable from "vuedraggable";
-import dropzone from "./components/dropzone";
-
-function mounted() {
- this.pageId = this.$el.getAttribute('page-id');
- this.file = this.newFile();
-
- this.$http.get(window.baseUrl(`/attachments/get/page/${this.pageId}`)).then(resp => {
- this.files = resp.data;
- }).catch(err => {
- this.checkValidationErrors('get', err);
- });
-}
-
-let data = {
- pageId: null,
- files: [],
- fileToEdit: null,
- file: {},
- tab: 'list',
- editTab: 'file',
- errors: {link: {}, edit: {}, delete: {}}
-};
-
-const components = {dropzone, draggable};
-
-let methods = {
-
- newFile() {
- return {page_id: this.pageId};
- },
-
- getFileUrl(file) {
- if (file.external && file.path.indexOf('http') !== 0) {
- return file.path;
- }
- return window.baseUrl(`/attachments/${file.id}`);
- },
-
- fileSortUpdate() {
- this.$http.put(window.baseUrl(`/attachments/sort/page/${this.pageId}`), {files: this.files}).then(resp => {
- this.$events.emit('success', resp.data.message);
- }).catch(err => {
- this.checkValidationErrors('sort', err);
- });
- },
-
- startEdit(file) {
- this.fileToEdit = Object.assign({}, file);
- this.fileToEdit.link = file.external ? file.path : '';
- this.editTab = file.external ? 'link' : 'file';
- },
-
- deleteFile(file) {
- if (!file.deleting) {
- return this.$set(file, 'deleting', true);
- }
-
- this.$http.delete(window.baseUrl(`/attachments/${file.id}`)).then(resp => {
- this.$events.emit('success', resp.data.message);
- this.files.splice(this.files.indexOf(file), 1);
- }).catch(err => {
- this.checkValidationErrors('delete', err)
- });
- },
-
- uploadSuccess(upload) {
- this.files.push(upload.data);
- this.$events.emit('success', trans('entities.attachments_file_uploaded'));
- },
-
- uploadSuccessUpdate(upload) {
- let fileIndex = this.filesIndex(upload.data);
- if (fileIndex === -1) {
- this.files.push(upload.data)
- } else {
- this.files.splice(fileIndex, 1, upload.data);
- }
-
- if (this.fileToEdit && this.fileToEdit.id === upload.data.id) {
- this.fileToEdit = Object.assign({}, upload.data);
- }
- this.$events.emit('success', trans('entities.attachments_file_updated'));
- },
-
- checkValidationErrors(groupName, err) {
- if (typeof err.response.data === "undefined" && typeof err.response.data === "undefined") return;
- this.errors[groupName] = err.response.data;
- },
-
- getUploadUrl(file) {
- let url = window.baseUrl(`/attachments/upload`);
- if (typeof file !== 'undefined') url += `/${file.id}`;
- return url;
- },
-
- cancelEdit() {
- this.fileToEdit = null;
- },
-
- attachNewLink(file) {
- file.uploaded_to = this.pageId;
- this.errors.link = {};
- this.$http.post(window.baseUrl('/attachments/link'), file).then(resp => {
- this.files.push(resp.data);
- this.file = this.newFile();
- this.$events.emit('success', trans('entities.attachments_link_attached'));
- }).catch(err => {
- this.checkValidationErrors('link', err);
- });
- },
-
- updateFile(file) {
- $http.put(window.baseUrl(`/attachments/${file.id}`), file).then(resp => {
- let search = this.filesIndex(resp.data);
- if (search === -1) {
- this.files.push(resp.data);
- } else {
- this.files.splice(search, 1, resp.data);
- }
-
- if (this.fileToEdit && !file.external) this.fileToEdit.link = '';
- this.fileToEdit = false;
-
- this.$events.emit('success', trans('entities.attachments_updated_success'));
- }).catch(err => {
- this.checkValidationErrors('edit', err);
- });
- },
-
- filesIndex(file) {
- for (let i = 0, len = this.files.length; i < len; i++) {
- if (this.files[i].id === file.id) return i;
- }
- return -1;
- }
-
-};
-
-export default {
- data, methods, mounted, components,
-};
\ No newline at end of file
+++ /dev/null
-import codeLib from "../services/code";
-
-const methods = {
- show() {
- if (!this.editor) this.editor = codeLib.popupEditor(this.$refs.editor, this.language);
- this.$refs.overlay.components.overlay.show(() => {
- codeLib.updateLayout(this.editor);
- });
- },
- hide() {
- this.$refs.overlay.components.overlay.hide();
- },
- updateEditorMode(language) {
- codeLib.setMode(this.editor, language, this.editor.getValue());
- },
- updateLanguage(lang) {
- this.language = lang;
- this.updateEditorMode(lang);
- },
- open(code, language, callback) {
- this.show();
- this.updateEditorMode(language);
- this.language = language;
- codeLib.setContent(this.editor, code);
- this.code = code;
- this.callback = callback;
- },
- save() {
- if (!this.callback) return;
- this.callback(this.editor.getValue(), this.language);
- this.hide();
- }
-};
-
-const data = {
- editor: null,
- language: '',
- code: '',
- callback: null
-};
-
-export default {
- methods,
- data
-};
\ No newline at end of file
+++ /dev/null
-
-const template = `
- <div>
- <input :value="value" :autosuggest-type="type" ref="input"
- :placeholder="placeholder" :name="name"
- @input="inputUpdate($event.target.value)" @focus="inputUpdate($event.target.value)"
- @blur="inputBlur"
- @keydown="inputKeydown"
- :aria-label="placeholder"
- />
- <ul class="suggestion-box" v-if="showSuggestions">
- <li v-for="(suggestion, i) in suggestions"
- @click="selectSuggestion(suggestion)"
- :class="{active: (i === active)}">{{suggestion}}</li>
- </ul>
- </div>
-
-`;
-
-function data() {
- return {
- suggestions: [],
- showSuggestions: false,
- active: 0,
- };
-}
-
-const ajaxCache = {};
-
-const props = ['url', 'type', 'value', 'placeholder', 'name'];
-
-function getNameInputVal(valInput) {
- let parentRow = valInput.parentNode.parentNode;
- let nameInput = parentRow.querySelector('[autosuggest-type="name"]');
- return (nameInput === null) ? '' : nameInput.value;
-}
-
-const methods = {
-
- inputUpdate(inputValue) {
- this.$emit('input', inputValue);
- let params = {};
-
- if (this.type === 'value') {
- let nameVal = getNameInputVal(this.$el);
- if (nameVal !== "") params.name = nameVal;
- }
-
- this.getSuggestions(inputValue.slice(0, 3), params).then(suggestions => {
- if (inputValue.length === 0) {
- this.displaySuggestions(suggestions.slice(0, 6));
- return;
- }
- // Filter to suggestions containing searched term
- suggestions = suggestions.filter(item => {
- return item.toLowerCase().indexOf(inputValue.toLowerCase()) !== -1;
- }).slice(0, 4);
- this.displaySuggestions(suggestions);
- });
- },
-
- inputBlur() {
- setTimeout(() => {
- this.$emit('blur');
- this.showSuggestions = false;
- }, 100);
- },
-
- inputKeydown(event) {
- if (event.key === 'Enter') event.preventDefault();
- if (!this.showSuggestions) return;
-
- // Down arrow
- if (event.key === 'ArrowDown') {
- this.active = (this.active === this.suggestions.length - 1) ? 0 : this.active+1;
- }
- // Up Arrow
- else if (event.key === 'ArrowUp') {
- this.active = (this.active === 0) ? this.suggestions.length - 1 : this.active-1;
- }
- // Enter key
- else if ((event.key === 'Enter') && !event.shiftKey) {
- this.selectSuggestion(this.suggestions[this.active]);
- }
- // Escape key
- else if (event.key === 'Escape') {
- this.showSuggestions = false;
- }
- },
-
- displaySuggestions(suggestions) {
- if (suggestions.length === 0) {
- this.suggestions = [];
- this.showSuggestions = false;
- return;
- }
-
- this.suggestions = suggestions;
- this.showSuggestions = true;
- this.active = 0;
- },
-
- selectSuggestion(suggestion) {
- this.$refs.input.value = suggestion;
- this.$refs.input.focus();
- this.$emit('input', suggestion);
- this.showSuggestions = false;
- },
-
- /**
- * Get suggestions from BookStack. Store and use local cache if already searched.
- * @param {String} input
- * @param {Object} params
- */
- getSuggestions(input, params) {
- params.search = input;
- const cacheKey = `${this.url}:${JSON.stringify(params)}`;
-
- if (typeof ajaxCache[cacheKey] !== "undefined") {
- return Promise.resolve(ajaxCache[cacheKey]);
- }
-
- return this.$http.get(this.url, params).then(resp => {
- ajaxCache[cacheKey] = resp.data;
- return resp.data;
- });
- }
-
-};
-
-export default {template, data, props, methods};
\ No newline at end of file
+++ /dev/null
-import DropZone from "dropzone";
-import { fadeOut } from "../../services/animations";
-
-const template = `
- <div class="dropzone-container text-center">
- <button type="button" class="dz-message">{{placeholder}}</button>
- </div>
-`;
-
-const props = ['placeholder', 'uploadUrl', 'uploadedTo'];
-
-function mounted() {
- const container = this.$el;
- const _this = this;
- this._dz = new DropZone(container, {
- addRemoveLinks: true,
- dictRemoveFile: trans('components.image_upload_remove'),
- timeout: Number(window.uploadTimeout) || 60000,
- maxFilesize: Number(window.uploadLimit) || 256,
- url: function() {
- return _this.uploadUrl;
- },
- init: function () {
- const dz = this;
-
- dz.on('sending', function (file, xhr, data) {
- const token = window.document.querySelector('meta[name=token]').getAttribute('content');
- data.append('_token', token);
- const uploadedTo = typeof _this.uploadedTo === 'undefined' ? 0 : _this.uploadedTo;
- data.append('uploaded_to', uploadedTo);
-
- xhr.ontimeout = function (e) {
- dz.emit('complete', file);
- dz.emit('error', file, trans('errors.file_upload_timeout'));
- }
- });
-
- dz.on('success', function (file, data) {
- _this.$emit('success', {file, data});
- fadeOut(file.previewElement, 800, () => {
- dz.removeFile(file);
- });
- });
-
- dz.on('error', function (file, errorMessage, xhr) {
- _this.$emit('error', {file, errorMessage, xhr});
-
- function setMessage(message) {
- const messsageEl = file.previewElement.querySelector('[data-dz-errormessage]');
- messsageEl.textContent = message;
- }
-
- if (xhr && xhr.status === 413) {
- setMessage(trans('errors.server_upload_limit'))
- } else if (errorMessage.file) {
- setMessage(errorMessage.file);
- }
-
- });
- }
- });
-}
-
-function data() {
- return {};
-}
-
-const methods = {
- onClose: function () {
- this._dz.removeAllFiles(true);
- }
-};
-
-export default {
- template,
- props,
- mounted,
- data,
- methods
-};
+++ /dev/null
-let data = {
- id: null,
- type: '',
- searching: false,
- searchTerm: '',
- searchResults: '',
-};
-
-let computed = {
-
-};
-
-let methods = {
-
- searchBook() {
- if (this.searchTerm.trim().length === 0) return;
- this.searching = true;
- this.searchResults = '';
- let url = window.baseUrl(`/search/${this.type}/${this.id}`);
- url += `?term=${encodeURIComponent(this.searchTerm)}`;
- this.$http.get(url).then(resp => {
- this.searchResults = resp.data;
- });
- },
-
- checkSearchForm() {
- this.searching = this.searchTerm > 0;
- },
-
- clearSearch() {
- this.searching = false;
- this.searchTerm = '';
- }
-
-};
-
-function mounted() {
- this.id = Number(this.$el.getAttribute('entity-id'));
- this.type = this.$el.getAttribute('entity-type');
-}
-
-export default {
- data, computed, methods, mounted
-};
\ No newline at end of file
+++ /dev/null
-import * as Dates from "../services/dates";
-import dropzone from "./components/dropzone";
-
-let page = 1;
-let previousClickTime = 0;
-let previousClickImage = 0;
-let dataLoaded = false;
-let callback = false;
-let baseUrl = '';
-
-let preSearchImages = [];
-let preSearchHasMore = false;
-
-const data = {
- images: [],
-
- imageType: false,
- uploadedTo: false,
-
- selectedImage: false,
- dependantPages: false,
- showing: false,
- filter: null,
- hasMore: false,
- searching: false,
- searchTerm: '',
-
- imageUpdateSuccess: false,
- imageDeleteSuccess: false,
- deleteConfirm: false,
-};
-
-const methods = {
-
- show(providedCallback, imageType = null) {
- callback = providedCallback;
- this.showing = true;
- this.$el.children[0].components.overlay.show();
-
- // Get initial images if they have not yet been loaded in.
- if (dataLoaded && imageType === this.imageType) return;
- if (imageType) {
- this.imageType = imageType;
- this.resetState();
- }
- this.fetchData();
- dataLoaded = true;
- },
-
- hide() {
- if (this.$refs.dropzone) {
- this.$refs.dropzone.onClose();
- }
- this.showing = false;
- this.selectedImage = false;
- this.$el.children[0].components.overlay.hide();
- },
-
- async fetchData() {
- const params = {
- page,
- search: this.searching ? this.searchTerm : null,
- uploaded_to: this.uploadedTo || null,
- filter_type: this.filter,
- };
-
- const {data} = await this.$http.get(baseUrl, params);
- this.images = this.images.concat(data.images);
- this.hasMore = data.has_more;
- page++;
- },
-
- setFilterType(filterType) {
- this.filter = filterType;
- this.resetState();
- this.fetchData();
- },
-
- resetState() {
- this.cancelSearch();
- this.resetListView();
- this.deleteConfirm = false;
- baseUrl = window.baseUrl(`/images/${this.imageType}`);
- },
-
- resetListView() {
- this.images = [];
- this.hasMore = false;
- page = 1;
- },
-
- searchImages() {
- if (this.searchTerm === '') return this.cancelSearch();
-
- // Cache current settings for later
- if (!this.searching) {
- preSearchImages = this.images;
- preSearchHasMore = this.hasMore;
- }
-
- this.searching = true;
- this.resetListView();
- this.fetchData();
- },
-
- cancelSearch() {
- if (!this.searching) return;
- this.searching = false;
- this.searchTerm = '';
- this.images = preSearchImages;
- this.hasMore = preSearchHasMore;
- },
-
- imageSelect(image) {
- const dblClickTime = 300;
- const currentTime = Date.now();
- const timeDiff = currentTime - previousClickTime;
- const isDblClick = timeDiff < dblClickTime && image.id === previousClickImage;
-
- if (isDblClick) {
- this.callbackAndHide(image);
- } else {
- this.selectedImage = image;
- this.deleteConfirm = false;
- this.dependantPages = false;
- }
-
- previousClickTime = currentTime;
- previousClickImage = image.id;
- },
-
- callbackAndHide(imageResult) {
- if (callback) callback(imageResult);
- this.hide();
- },
-
- async saveImageDetails() {
- let url = window.baseUrl(`/images/${this.selectedImage.id}`);
- try {
- await this.$http.put(url, this.selectedImage)
- } catch (error) {
- if (error.response.status === 422) {
- let errors = error.response.data;
- let message = '';
- Object.keys(errors).forEach((key) => {
- message += errors[key].join('\n');
- });
- this.$events.emit('error', message);
- }
- }
- },
-
- async deleteImage() {
-
- if (!this.deleteConfirm) {
- const url = window.baseUrl(`/images/usage/${this.selectedImage.id}`);
- try {
- const {data} = await this.$http.get(url);
- this.dependantPages = data;
- } catch (error) {
- console.error(error);
- }
- this.deleteConfirm = true;
- return;
- }
-
- const url = window.baseUrl(`/images/${this.selectedImage.id}`);
- await this.$http.delete(url);
- this.images.splice(this.images.indexOf(this.selectedImage), 1);
- this.selectedImage = false;
- this.$events.emit('success', trans('components.image_delete_success'));
- this.deleteConfirm = false;
- },
-
- getDate(stringDate) {
- return Dates.formatDateTime(new Date(stringDate));
- },
-
- uploadSuccess(event) {
- this.images.unshift(event.data);
- this.$events.emit('success', trans('components.image_upload_success'));
- },
-};
-
-const computed = {
- uploadUrl() {
- return window.baseUrl(`/images/${this.imageType}`);
- }
-};
-
-function mounted() {
- window.ImageManager = this;
- this.imageType = this.$el.getAttribute('image-type');
- this.uploadedTo = this.$el.getAttribute('uploaded-to');
- baseUrl = window.baseUrl('/images/' + this.imageType)
-}
-
-export default {
- mounted,
- methods,
- data,
- computed,
- components: {dropzone},
-};
+++ /dev/null
-import * as Dates from "../services/dates";
-
-let autoSaveFrequency = 30;
-
-let autoSave = false;
-let draftErroring = false;
-
-let currentContent = {
- title: false,
- html: false
-};
-
-let lastSave = 0;
-
-function mounted() {
- let elem = this.$el;
- this.draftsEnabled = elem.getAttribute('drafts-enabled') === 'true';
- this.editorType = elem.getAttribute('editor-type');
- this.pageId= Number(elem.getAttribute('page-id'));
- this.isNewDraft = Number(elem.getAttribute('page-new-draft')) === 1;
- this.isUpdateDraft = Number(elem.getAttribute('page-update-draft')) === 1;
-
- if (this.pageId !== 0 && this.draftsEnabled) {
- window.setTimeout(() => {
- this.startAutoSave();
- }, 1000);
- }
-
- if (this.isUpdateDraft || this.isNewDraft) {
- this.draftText = trans('entities.pages_editing_draft');
- } else {
- this.draftText = trans('entities.pages_editing_page');
- }
-
- // Listen to save events from editor
- window.$events.listen('editor-save-draft', this.saveDraft);
- window.$events.listen('editor-save-page', this.savePage);
-
- // Listen to content changes from the editor
- window.$events.listen('editor-html-change', html => {
- this.editorHTML = html;
- });
- window.$events.listen('editor-markdown-change', markdown => {
- this.editorMarkdown = markdown;
- });
-}
-
-let data = {
- draftsEnabled: false,
- editorType: 'wysiwyg',
- pagedId: 0,
- isNewDraft: false,
- isUpdateDraft: false,
-
- draftText: '',
- draftUpdated : false,
- changeSummary: '',
-
- editorHTML: '',
- editorMarkdown: '',
-};
-
-let methods = {
-
- startAutoSave() {
- currentContent.title = document.getElementById('name').value.trim();
- currentContent.html = this.editorHTML;
-
- autoSave = window.setInterval(() => {
- // Return if manually saved recently to prevent bombarding the server
- if (Date.now() - lastSave < (1000 * autoSaveFrequency)/2) return;
- const newTitle = document.getElementById('name').value.trim();
- const newHtml = this.editorHTML;
-
- if (newTitle !== currentContent.title || newHtml !== currentContent.html) {
- currentContent.html = newHtml;
- currentContent.title = newTitle;
- this.saveDraft();
- }
-
- }, 1000 * autoSaveFrequency);
- },
-
- saveDraft() {
- if (!this.draftsEnabled) return;
-
- const data = {
- name: document.getElementById('name').value.trim(),
- html: this.editorHTML
- };
-
- if (this.editorType === 'markdown') data.markdown = this.editorMarkdown;
-
- const url = window.baseUrl(`/ajax/page/${this.pageId}/save-draft`);
- window.$http.put(url, data).then(response => {
- draftErroring = false;
- if (!this.isNewDraft) this.isUpdateDraft = true;
- this.draftNotifyChange(`${response.data.message} ${Dates.utcTimeStampToLocalTime(response.data.timestamp)}`);
- lastSave = Date.now();
- }, errorRes => {
- if (draftErroring) return;
- window.$events.emit('error', trans('errors.page_draft_autosave_fail'));
- draftErroring = true;
- });
- },
-
- savePage() {
- this.$el.closest('form').submit();
- },
-
- draftNotifyChange(text) {
- this.draftText = text;
- this.draftUpdated = true;
- window.setTimeout(() => {
- this.draftUpdated = false;
- }, 2000);
- },
-
- discardDraft() {
- let url = window.baseUrl(`/ajax/page/${this.pageId}`);
- window.$http.get(url).then(response => {
- if (autoSave) window.clearInterval(autoSave);
-
- this.draftText = trans('entities.pages_editing_page');
- this.isUpdateDraft = false;
- window.$events.emit('editor-html-update', response.data.html);
- window.$events.emit('editor-markdown-update', response.data.markdown || response.data.html);
-
- document.getElementById('name').value = response.data.name;
- window.setTimeout(() => {
- this.startAutoSave();
- }, 1000);
- window.$events.emit('success', trans('entities.pages_draft_discarded'));
- });
- },
-
-};
-
-let computed = {
- changeSummaryShort() {
- let len = this.changeSummary.length;
- if (len === 0) return trans('entities.pages_edit_set_changelog');
- if (len <= 16) return this.changeSummary;
- return this.changeSummary.slice(0, 16) + '...';
- }
-};
-
-export default {
- mounted, data, methods, computed,
-};
\ No newline at end of file
+++ /dev/null
-import * as Dates from "../services/dates";
-
-let data = {
- terms: '',
- termString : '',
- search: {
- type: {
- page: true,
- chapter: true,
- book: true,
- bookshelf: true,
- },
- exactTerms: [],
- tagTerms: [],
- option: {},
- dates: {
- updated_after: false,
- updated_before: false,
- created_after: false,
- created_before: false,
- }
- }
-};
-
-let computed = {
-
-};
-
-let methods = {
-
- appendTerm(term) {
- this.termString += ' ' + term;
- this.termString = this.termString.replace(/\s{2,}/g, ' ');
- this.termString = this.termString.replace(/^\s+/, '');
- this.termString = this.termString.replace(/\s+$/, '');
- },
-
- exactParse(searchString) {
- this.search.exactTerms = [];
- let exactFilter = /"(.+?)"/g;
- let matches;
- while ((matches = exactFilter.exec(searchString)) !== null) {
- this.search.exactTerms.push(matches[1]);
- }
- },
-
- exactChange() {
- let exactFilter = /"(.+?)"/g;
- this.termString = this.termString.replace(exactFilter, '');
- let matchesTerm = this.search.exactTerms.filter(term => term.trim() !== '').map(term => `"${term}"`).join(' ');
- this.appendTerm(matchesTerm);
- },
-
- addExact() {
- this.search.exactTerms.push('');
- setTimeout(() => {
- let exactInputs = document.querySelectorAll('.exact-input');
- exactInputs[exactInputs.length - 1].focus();
- }, 100);
- },
-
- removeExact(index) {
- this.search.exactTerms.splice(index, 1);
- this.exactChange();
- },
-
- tagParse(searchString) {
- this.search.tagTerms = [];
- let tagFilter = /\[(.+?)\]/g;
- let matches;
- while ((matches = tagFilter.exec(searchString)) !== null) {
- this.search.tagTerms.push(matches[1]);
- }
- },
-
- tagChange() {
- let tagFilter = /\[(.+?)\]/g;
- this.termString = this.termString.replace(tagFilter, '');
- let matchesTerm = this.search.tagTerms.filter(term => {
- return term.trim() !== '';
- }).map(term => {
- return `[${term}]`
- }).join(' ');
- this.appendTerm(matchesTerm);
- },
-
- addTag() {
- this.search.tagTerms.push('');
- setTimeout(() => {
- let tagInputs = document.querySelectorAll('.tag-input');
- tagInputs[tagInputs.length - 1].focus();
- }, 100);
- },
-
- removeTag(index) {
- this.search.tagTerms.splice(index, 1);
- this.tagChange();
- },
-
- typeParse(searchString) {
- let typeFilter = /{\s?type:\s?(.*?)\s?}/;
- let match = searchString.match(typeFilter);
- let type = this.search.type;
- if (!match) {
- type.page = type.book = type.chapter = type.bookshelf = true;
- return;
- }
- let splitTypes = match[1].replace(/ /g, '').split('|');
- type.page = (splitTypes.indexOf('page') !== -1);
- type.chapter = (splitTypes.indexOf('chapter') !== -1);
- type.book = (splitTypes.indexOf('book') !== -1);
- type.bookshelf = (splitTypes.indexOf('bookshelf') !== -1);
- },
-
- typeChange() {
- let typeFilter = /{\s?type:\s?(.*?)\s?}/;
- let type = this.search.type;
- if (type.page === type.chapter === type.book === type.bookshelf) {
- this.termString = this.termString.replace(typeFilter, '');
- return;
- }
- let selectedTypes = Object.keys(type).filter(type => this.search.type[type]).join('|');
- let typeTerm = '{type:'+selectedTypes+'}';
- if (this.termString.match(typeFilter)) {
- this.termString = this.termString.replace(typeFilter, typeTerm);
- return;
- }
- this.appendTerm(typeTerm);
- },
-
- optionParse(searchString) {
- let optionFilter = /{([a-z_\-:]+?)}/gi;
- let matches;
- while ((matches = optionFilter.exec(searchString)) !== null) {
- this.search.option[matches[1].toLowerCase()] = true;
- }
- },
-
- optionChange(optionName) {
- let isChecked = this.search.option[optionName];
- if (isChecked) {
- this.appendTerm(`{${optionName}}`);
- } else {
- this.termString = this.termString.replace(`{${optionName}}`, '');
- }
- },
-
- updateSearch(e) {
- e.preventDefault();
- window.location = window.baseUrl('/search?term=' + encodeURIComponent(this.termString));
- },
-
- enableDate(optionName) {
- this.search.dates[optionName.toLowerCase()] = Dates.getCurrentDay();
- this.dateChange(optionName);
- },
-
- dateParse(searchString) {
- let dateFilter = /{([a-z_\-]+?):([a-z_\-0-9]+?)}/gi;
- let dateTags = Object.keys(this.search.dates);
- let matches;
- while ((matches = dateFilter.exec(searchString)) !== null) {
- if (dateTags.indexOf(matches[1]) === -1) continue;
- this.search.dates[matches[1].toLowerCase()] = matches[2];
- }
- },
-
- dateChange(optionName) {
- let dateFilter = new RegExp('{\\s?'+optionName+'\\s?:([a-z_\\-0-9]+?)}', 'gi');
- this.termString = this.termString.replace(dateFilter, '');
- if (!this.search.dates[optionName]) return;
- this.appendTerm(`{${optionName}:${this.search.dates[optionName]}}`);
- },
-
- dateRemove(optionName) {
- this.search.dates[optionName] = false;
- this.dateChange(optionName);
- }
-
-};
-
-function created() {
- this.termString = document.querySelector('[name=searchTerm]').value;
- this.typeParse(this.termString);
- this.exactParse(this.termString);
- this.tagParse(this.termString);
- this.optionParse(this.termString);
- this.dateParse(this.termString);
-}
-
-export default {
- data, computed, methods, created
-};
+++ /dev/null
-import draggable from 'vuedraggable';
-import autosuggest from './components/autosuggest';
-
-const data = {
- entityId: false,
- entityType: null,
- tags: [],
-};
-
-const components = {draggable, autosuggest};
-const directives = {};
-
-const methods = {
-
- addEmptyTag() {
- this.tags.push({name: '', value: '', key: Math.random().toString(36).substring(7)});
- },
-
- /**
- * When an tag changes check if another empty editable field needs to be added onto the end.
- * @param tag
- */
- tagChange(tag) {
- let tagPos = this.tags.indexOf(tag);
- if (tagPos === this.tags.length-1 && (tag.name !== '' || tag.value !== '')) this.addEmptyTag();
- },
-
- /**
- * When an tag field loses focus check the tag to see if its
- * empty and therefore could be removed from the list.
- * @param tag
- */
- tagBlur(tag) {
- let isLast = (this.tags.indexOf(tag) === this.tags.length-1);
- if (tag.name !== '' || tag.value !== '' || isLast) return;
- let cPos = this.tags.indexOf(tag);
- this.tags.splice(cPos, 1);
- },
-
- removeTag(tag) {
- let tagPos = this.tags.indexOf(tag);
- if (tagPos === -1) return;
- this.tags.splice(tagPos, 1);
- },
-
- getTagFieldName(index, key) {
- return `tags[${index}][${key}]`;
- },
-};
-
-function mounted() {
- this.entityId = Number(this.$el.getAttribute('entity-id'));
- this.entityType = this.$el.getAttribute('entity-type');
-
- let url = window.baseUrl(`/ajax/tags/get/${this.entityType}/${this.entityId}`);
- this.$http.get(url).then(response => {
- let tags = response.data;
- for (let i = 0, len = tags.length; i < len; i++) {
- tags[i].key = Math.random().toString(36).substring(7);
- }
- this.tags = tags;
- this.addEmptyTag();
- });
-}
-
-export default {
- data, methods, mounted, components, directives
-};
\ No newline at end of file
+++ /dev/null
-import Vue from "vue";
-
-function exists(id) {
- return document.getElementById(id) !== null;
-}
-
-import searchSystem from "./search";
-import entityDashboard from "./entity-dashboard";
-import codeEditor from "./code-editor";
-import imageManager from "./image-manager";
-import tagManager from "./tag-manager";
-import attachmentManager from "./attachment-manager";
-import pageEditor from "./page-editor";
-
-let vueMapping = {
- 'search-system': searchSystem,
- 'entity-dashboard': entityDashboard,
- 'code-editor': codeEditor,
- 'image-manager': imageManager,
- 'tag-manager': tagManager,
- 'attachment-manager': attachmentManager,
- 'page-editor': pageEditor,
-};
-
-window.vues = {};
-
-function load() {
- let ids = Object.keys(vueMapping);
- for (let i = 0, len = ids.length; i < len; i++) {
- if (!exists(ids[i])) continue;
- let config = vueMapping[ids[i]];
- config.el = '#' + ids[i];
- window.vues[ids[i]] = new Vue(config);
- }
-}
-
-export default load;
-
-
-
'reset_password' => 'استعادة كلمة المرور',
'reset_password_send_instructions' => 'أدخل بريدك الإلكتروني بالأسفل وسيتم إرسال رسالة برابط لاستعادة كلمة المرور.',
'reset_password_send_button' => 'أرسل رابط الاستعادة',
- 'reset_password_sent_success' => 'تم إرسال رابط استعادة كلمة المرور إلى :email.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'تمت استعادة كلمة المرور بنجاح.',
'email_reset_subject' => 'استعد كلمة المرور الخاصة بتطبيق :appName',
'email_reset_text' => 'تم إرسال هذه الرسالة بسبب تلقينا لطلب استعادة كلمة المرور الخاصة بحسابكم.',
'profile_menu' => 'Profile Menu',
'view_profile' => 'عرض الملف الشخصي',
'edit_profile' => 'تعديل الملف الشخصي',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Info',
// Error pages
'404_page_not_found' => 'لم يتم العثور على الصفحة',
'sorry_page_not_found' => 'عفواً, لا يمكن العثور على الصفحة التي تبحث عنها.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => 'العودة للصفحة الرئيسية',
'error_occurred' => 'حدث خطأ',
'app_down' => ':appName لا يعمل حالياً',
'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
'api_user_token_expired' => 'The authorization token used has expired',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => 'يجب أن تتكون كلمة المرور من ستة أحرف على الأقل وأن تطابق التأكيد.',
'user' => "لم يتم العثور على مستخدم بعنوان البريد الإلكتروني المعطى.",
- 'token' => 'رابط تجديد كلمة المرور غير صحيح.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'تم إرسال رابط تجديد كلمة المرور إلى بريدكم الإلكتروني!',
'reset' => 'تم تجديد كلمة المرور الخاصة بكم!',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'name' => 'Jméno',
'username' => 'Jméno účtu',
- 'email' => 'Email',
+ 'email' => 'E-mail',
'password' => 'Heslo',
'password_confirm' => 'Potvrdit heslo',
'password_hint' => 'Musí mít víc než 7 znaků',
'remember_me' => 'Neodhlašovat',
'ldap_email_hint' => 'Zadejte email, který chcete přiřadit k tomuto účtu.',
'create_account' => 'Vytvořit účet',
- 'already_have_account' => 'Already have an account?',
- 'dont_have_account' => 'Don\'t have an account?',
+ 'already_have_account' => 'Máte už založený účet?',
+ 'dont_have_account' => 'Nemáte učet?',
'social_login' => 'Přihlášení přes sociální sítě',
'social_registration' => 'Registrace přes sociální sítě',
'social_registration_text' => 'Registrovat a přihlásit se přes jinou službu',
'reset_password' => 'Resetovat heslo',
'reset_password_send_instructions' => 'Zadejte vaší emailovou adresu a bude vám zaslán odkaz na resetování hesla.',
'reset_password_send_button' => 'Poslat odkaz pro reset hesla',
- 'reset_password_sent_success' => 'Odkaz na resetování hesla vám byl zaslán na :email.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'Vaše heslo bylo úspěšně resetováno.',
'email_reset_subject' => 'Reset hesla do :appName',
'email_reset_text' => 'Tento email jste obdrželi, protože jsme dostali žádost o resetování vašeho hesla k účtu v :appName.',
'email_not_confirmed_resend_button' => 'Znovu poslat email pro potvrzení emailové adresy',
// User Invite
- 'user_invite_email_subject' => 'You have been invited to join :appName!',
- 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
- 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
- 'user_invite_email_action' => 'Set Account Password',
- 'user_invite_page_welcome' => 'Welcome to :appName!',
- 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
- 'user_invite_page_confirm_button' => 'Confirm Password',
- 'user_invite_success' => 'Password set, you now have access to :appName!'
+ 'user_invite_email_subject' => 'Byl jste pozván do :appName!',
+ 'user_invite_email_greeting' => 'Byl pro vás vytvořen účet na :appName.',
+ 'user_invite_email_text' => 'Klikněte na tlačítko níže pro nastavení hesla k účtu a získání přístupu:',
+ 'user_invite_email_action' => 'Nastavit heslo účtu',
+ 'user_invite_page_welcome' => 'Vítejte v :appName!',
+ 'user_invite_page_text' => 'Chcete-li dokončit svůj účet a získat přístup, musíte nastavit heslo, které bude použito k přihlášení do :appName při budoucích návštěvách.',
+ 'user_invite_page_confirm_button' => 'Potvrdit heslo',
+ 'user_invite_success' => 'Heslo nastaveno, nyní máte přístup k :appName!'
];
\ No newline at end of file
'save' => 'Uložit',
'continue' => 'Pokračovat',
'select' => 'Zvolit',
- 'toggle_all' => 'Toggle All',
+ 'toggle_all' => 'Přepnout vše',
'more' => 'Více',
// Form Labels
'name' => 'Jméno',
'description' => 'Popis',
- 'role' => 'Role',
+ 'role' => 'Funkce',
'cover_image' => 'Obrázek na přebal',
'cover_image_description' => 'Obrázek by měl být asi 440 × 250px.',
// Actions
'actions' => 'Akce',
'view' => 'Pohled',
- 'view_all' => 'View All',
+ 'view_all' => 'Zobrazit vše',
'create' => 'Vytvořit',
'update' => 'Aktualizovat',
'edit' => 'Upravit',
'delete' => 'Smazat',
'search' => 'Hledat',
'search_clear' => 'Vyčistit hledání',
- 'reset' => 'Reset',
+ 'reset' => 'Resetovat',
'remove' => 'Odstranit',
'add' => 'Přidat',
- 'fullscreen' => 'Fullscreen',
+ 'fullscreen' => 'Celá obrazovka',
// Sort Options
- 'sort_options' => 'Sort Options',
- 'sort_direction_toggle' => 'Sort Direction Toggle',
- 'sort_ascending' => 'Sort Ascending',
- 'sort_descending' => 'Sort Descending',
- 'sort_name' => 'Name',
- 'sort_created_at' => 'Created Date',
- 'sort_updated_at' => 'Updated Date',
+ 'sort_options' => 'Možnosti řazení',
+ 'sort_direction_toggle' => 'Přepínač směru řazení',
+ 'sort_ascending' => 'Řadit vzestupně',
+ 'sort_descending' => 'Řadit sestupně',
+ 'sort_name' => 'Jméno',
+ 'sort_created_at' => 'Datum vytvoření',
+ 'sort_updated_at' => 'Datum aktualizace',
// Misc
'deleted_user' => 'Smazaný uživatel',
'grid_view' => 'Zobrazit dlaždice',
'list_view' => 'Zobrazit seznam',
'default' => 'Výchozí',
- 'breadcrumb' => 'Breadcrumb',
+ 'breadcrumb' => 'Drobečková navigace',
// Header
- 'profile_menu' => 'Profile Menu',
+ 'profile_menu' => 'Nabídka profilu',
'view_profile' => 'Ukázat profil',
'edit_profile' => 'Upravit profil',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Info',
- 'tab_content' => 'Content',
+ 'tab_content' => 'Obsah',
// Email Content
'email_action_help' => 'Pokud se vám nedaří kliknout na tlačítko ":actionText", zkopírujte odkaz níže přímo do webového prohlížeče:',
// Error pages
'404_page_not_found' => 'Stránka nenalezena',
'sorry_page_not_found' => 'Omlouváme se, ale stránka, kterou hledáte nebyla nalezena.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => 'Návrat domů',
'error_occurred' => 'Nastala chyba',
'app_down' => ':appName je momentálně vypnutá',
'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
'api_user_token_expired' => 'The authorization token used has expired',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => 'Heslo musí být alespoň 6 znaků dlouhé a shodovat se v obou polích.',
'user' => "Nemůžeme najít uživatele se zadanou emailovou adresou.",
- 'token' => 'Tento odkaz pro reset hesla je neplatný.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'Poslali jsme vám odkaz pro reset hesla!',
'reset' => 'Vaše heslo bylo resetováno!',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'register_thanks' => 'Tak for registreringen!',
'register_confirm' => 'Check venligst din e-mail og klik deri på bekræftelses knappen for at tilgå :appName.',
- 'registrations_disabled' => 'Registrations are currently disabled',
- 'registration_email_domain_invalid' => 'That email domain does not have access to this application',
- 'register_success' => 'Thanks for signing up! You are now registered and signed in.',
+ 'registrations_disabled' => 'Registrering er i øjeblikket deaktiveret',
+ 'registration_email_domain_invalid' => 'E-Mail domænet har ikke adgang til denne applikation',
+ 'register_success' => 'Tak for din registrering. Du er nu registeret og logget ind.',
// Password Reset
- 'reset_password' => 'Reset Password',
- 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
- 'reset_password_send_button' => 'Send Reset Link',
- 'reset_password_sent_success' => 'A password reset link has been sent to :email.',
- 'reset_password_success' => 'Your password has been successfully reset.',
- 'email_reset_subject' => 'Reset your :appName password',
- 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
- 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.',
+ 'reset_password' => 'Nulstil adgangskode',
+ 'reset_password_send_instructions' => 'Indtast din E-Mail herunder og du vil blive sendt en E-Mail med et link til at nulstille din adgangskode.',
+ 'reset_password_send_button' => 'Send link til nulstilling',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Din adgangskode er blevet nulstillet.',
+ 'email_reset_subject' => 'Nulstil din :appName adgangskode',
+ 'email_reset_text' => 'Du modtager denne E-Mail fordi vi har modtaget en anmodning om at nulstille din adgangskode.',
+ 'email_reset_not_requested' => 'Hvis du ikke har anmodet om at få din adgangskode nulstillet, behøver du ikke at foretage dig noget.',
// Email Confirmation
- 'email_confirm_subject' => 'Confirm your email on :appName',
- 'email_confirm_greeting' => 'Thanks for joining :appName!',
- 'email_confirm_text' => 'Please confirm your email address by clicking the button below:',
- 'email_confirm_action' => 'Confirm Email',
- 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.',
- 'email_confirm_success' => 'Your email has been confirmed!',
- 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.',
+ 'email_confirm_subject' => 'Bekræft din E-Mail på :appName',
+ 'email_confirm_greeting' => 'Tak for at oprette dig på :appName!',
+ 'email_confirm_text' => 'Bekræft venligst din E-Mail adresse ved at klikke på linket nedenfor:',
+ 'email_confirm_action' => 'Bekræft E-Mail',
+ 'email_confirm_send_error' => 'E-Mail-bekræftelse kræves, men systemet kunne ikke sende E-Mailen. Kontakt administratoren for at sikre, at E-Mail er konfigureret korrekt.',
+ 'email_confirm_success' => 'Din E-Mail er blevet bekræftet!',
+ 'email_confirm_resent' => 'Bekræftelsesmail sendt, tjek venligst din indboks.',
- 'email_not_confirmed' => 'Email Address Not Confirmed',
- 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
- 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
- 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
- 'email_not_confirmed_resend_button' => 'Resend Confirmation Email',
+ 'email_not_confirmed' => 'E-Mail adresse ikke bekræftet',
+ 'email_not_confirmed_text' => 'Din E-Mail adresse er endnu ikke blevet bekræftet.',
+ 'email_not_confirmed_click_link' => 'Klik venligst på linket i E-Mailen der blev sendt kort efter du registrerede dig.',
+ 'email_not_confirmed_resend' => 'Hvis du ikke kan finde E-Mailen, kan du du få gensendt bekræftelsesemailen ved at trykke herunder.',
+ 'email_not_confirmed_resend_button' => 'Gensend bekræftelsesemail',
// User Invite
- 'user_invite_email_subject' => 'You have been invited to join :appName!',
- 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
- 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
- 'user_invite_email_action' => 'Set Account Password',
- 'user_invite_page_welcome' => 'Welcome to :appName!',
- 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
- 'user_invite_page_confirm_button' => 'Confirm Password',
- 'user_invite_success' => 'Password set, you now have access to :appName!'
+ 'user_invite_email_subject' => 'Du er blevet inviteret til :appName!',
+ 'user_invite_email_greeting' => 'En konto er blevet oprettet til dig på :appName.',
+ 'user_invite_email_text' => 'Klik på knappen nedenunderm for at sætte en adgangskode og opnå adgang:',
+ 'user_invite_email_action' => 'Set adgangskode',
+ 'user_invite_page_welcome' => 'Velkommen til :appName!',
+ 'user_invite_page_text' => 'For at færdiggøre din konto og få adgang skal du indstille en adgangskode, der bruges til at logge ind på :appName ved fremtidige besøg.',
+ 'user_invite_page_confirm_button' => 'Bekræft adgangskode',
+ 'user_invite_success' => 'Adgangskode indstillet, du har nu adgang til :appName!'
];
\ No newline at end of file
'description' => 'Beskrivelse',
'role' => 'Rolle',
'cover_image' => 'Coverbillede',
- 'cover_image_description' => 'This image should be approx 440x250px.',
+ 'cover_image_description' => 'Dette billede skal være omtrent 440x250px.',
// Actions
- 'actions' => 'Actions',
+ 'actions' => 'Handlinger',
'view' => 'Vis',
'view_all' => 'Vis alle',
'create' => 'Opret',
// Sort Options
'sort_options' => 'Sorteringsindstillinger',
- 'sort_direction_toggle' => 'Sort Direction Toggle',
- 'sort_ascending' => 'Sort Ascending',
- 'sort_descending' => 'Sort Descending',
- 'sort_name' => 'Name',
- 'sort_created_at' => 'Created Date',
- 'sort_updated_at' => 'Updated Date',
+ 'sort_direction_toggle' => 'Sorteringsretning',
+ 'sort_ascending' => 'Sorter stigende',
+ 'sort_descending' => 'Sorter faldende',
+ 'sort_name' => 'Navn',
+ 'sort_created_at' => 'Oprettelsesdato',
+ 'sort_updated_at' => 'Opdateringsdato',
// Misc
- 'deleted_user' => 'Deleted User',
- 'no_activity' => 'No activity to show',
- 'no_items' => 'No items available',
- 'back_to_top' => 'Back to top',
- 'toggle_details' => 'Toggle Details',
- 'toggle_thumbnails' => 'Toggle Thumbnails',
- 'details' => 'Details',
- 'grid_view' => 'Grid View',
- 'list_view' => 'List View',
- 'default' => 'Default',
- 'breadcrumb' => 'Breadcrumb',
+ 'deleted_user' => 'Slettet bruger',
+ 'no_activity' => 'Ingen aktivitet at vise',
+ 'no_items' => 'Intet indhold tilgængeligt',
+ 'back_to_top' => 'Tilbage til toppen',
+ 'toggle_details' => 'Vis/skjul detaljer',
+ 'toggle_thumbnails' => 'Vis/skjul miniaturer',
+ 'details' => 'Detaljer',
+ 'grid_view' => 'Gittervisning',
+ 'list_view' => 'Listevisning',
+ 'default' => 'Standard',
+ 'breadcrumb' => 'Brødkrumme',
// Header
- 'profile_menu' => 'Profile Menu',
- 'view_profile' => 'View Profile',
- 'edit_profile' => 'Edit Profile',
+ 'profile_menu' => 'Profilmenu',
+ 'view_profile' => 'Vis profil',
+ 'edit_profile' => 'Redigér Profil',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Info',
- 'tab_content' => 'Content',
+ 'tab_content' => 'Indhold',
// Email Content
- 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
- 'email_rights' => 'All rights reserved',
+ 'email_action_help' => 'Hvis du har problemer med at trykke på ":actionText" knappen, prøv at kopiere og indsætte linket herunder ind i din webbrowser:',
+ 'email_rights' => 'Alle rettigheder forbeholdes',
];
--- /dev/null
+<?php
+/**
+ * Text used in custom JavaScript driven components.
+ */
+return [
+
+ // Image Manager
+ 'image_select' => 'Billedselektion',
+ 'image_all' => 'Alt',
+ 'image_all_title' => 'Se alle billeder',
+ 'image_book_title' => 'Vis billeder uploadet til denne bog',
+ 'image_page_title' => 'Vis billeder uploadet til denne side',
+ 'image_search_hint' => 'Søg efter billednavn',
+ 'image_uploaded' => 'Uploadet :uploadedDate',
+ 'image_load_more' => 'Indlæse mere',
+ 'image_image_name' => 'Billednavn',
+ 'image_delete_used' => 'Dette billede er brugt på siderne nedenfor.',
+ 'image_delete_confirm' => 'Tryk på slet igen for at bekræft at du ønsker at slette dette billede.',
+ 'image_select_image' => 'Vælg billede',
+ 'image_dropzone' => 'Træk-og-slip billede eller klik her for at uploade',
+ 'images_deleted' => 'Billede slettet',
+ 'image_preview' => 'Billedeksempel',
+ 'image_upload_success' => 'Foto uploadet',
+ 'image_update_success' => 'Billeddetaljer succesfuldt opdateret',
+ 'image_delete_success' => 'Billede slettet',
+ 'image_upload_remove' => 'Fjern',
+
+ // Code Editor
+ 'code_editor' => 'Rediger kode',
+ 'code_language' => 'Kodesprog',
+ 'code_content' => 'Kodeindhold',
+ 'code_save' => 'Gem kode',
+];
--- /dev/null
+<?php
+/**
+ * Text used for 'Entities' (Document Structure Elements) such as
+ * Books, Shelves, Chapters & Pages
+ */
+return [
+
+ // Shared
+ 'recently_created' => 'Nyligt oprettet',
+ 'recently_created_pages' => 'Nyligt oprettede sider',
+ 'recently_updated_pages' => 'Nyligt opdaterede sider',
+ 'recently_created_chapters' => 'Nyligt oprettede kapitler',
+ 'recently_created_books' => 'Nyligt oprettede bøger',
+ 'recently_created_shelves' => 'Nyligt oprettede reoler',
+ 'recently_update' => 'Opdateret for nyligt',
+ 'recently_viewed' => 'Senest viste',
+ 'recent_activity' => 'Seneste aktivitet',
+ 'create_now' => 'Opret en nu',
+ 'revisions' => 'Revisioner',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Oprettet :timeLength',
+ 'meta_created_name' => 'Oprettet :timeLength af :user',
+ 'meta_updated' => 'Opdateret :timeLength',
+ 'meta_updated_name' => 'Opdateret :timeLength af :user',
+ 'entity_select' => 'Vælg emne',
+ 'images' => 'Billeder',
+ 'my_recent_drafts' => 'Mine seneste kladder',
+ 'my_recently_viewed' => 'Mine senest viste',
+ 'no_pages_viewed' => 'Du har ikke besøgt nogle sider',
+ 'no_pages_recently_created' => 'Ingen sider er blevet oprettet for nyligt',
+ 'no_pages_recently_updated' => 'Ingen sider er blevet opdateret for nyligt',
+ 'export' => 'Exporter',
+ 'export_html' => 'Indeholdt webfil',
+ 'export_pdf' => 'PDF-fil',
+ 'export_text' => 'Almindelig tekstfil',
+
+ // Permissions and restrictions
+ 'permissions' => 'Rettigheder',
+ 'permissions_intro' => 'Når de er aktiveret, vil disse tilladelser have prioritet over alle indstillede rolletilladelser.',
+ 'permissions_enable' => 'Aktivér tilpassede tilladelser',
+ 'permissions_save' => 'Gem tilladelser',
+
+ // Search
+ 'search_results' => 'Søgeresultater',
+ 'search_total_results_found' => ':count resultat fundet|:count resultater fundet',
+ 'search_clear' => 'Ryd søgning',
+ 'search_no_pages' => 'Ingen sider matchede søgning',
+ 'search_for_term' => 'Søgning for :term',
+ 'search_more' => 'Flere resultater',
+ 'search_filters' => 'Søgefiltre',
+ 'search_content_type' => 'Indholdstype',
+ 'search_exact_matches' => 'Nøjagtige matches',
+ 'search_tags' => 'Tagsøgninger',
+ 'search_options' => 'Indstillinger',
+ 'search_viewed_by_me' => 'Set af mig',
+ 'search_not_viewed_by_me' => 'Ikke set af mig',
+ 'search_permissions_set' => 'Rettigheders sæt',
+ 'search_created_by_me' => 'Oprettet af mig',
+ 'search_updated_by_me' => 'Opdateret af mig',
+ 'search_date_options' => 'Datoindstillinger',
+ 'search_updated_before' => 'Opdateret før',
+ 'search_updated_after' => 'Opdateret efter',
+ 'search_created_before' => 'Oprettet før',
+ 'search_created_after' => 'Oprettet efter',
+ 'search_set_date' => 'Sæt dato',
+ 'search_update' => 'Opdatér søgning',
+
+ // Shelves
+ 'shelf' => 'Reol',
+ 'shelves' => 'Reoler',
+ 'x_shelves' => ':count reol|:count reoler',
+ 'shelves_long' => 'Bogreoler',
+ 'shelves_empty' => 'Ingen reoler er blevet oprettet',
+ 'shelves_create' => 'Opret ny reol',
+ 'shelves_popular' => 'Populære reoler',
+ 'shelves_new' => 'Nye reoler',
+ 'shelves_new_action' => 'Ny reol',
+ 'shelves_popular_empty' => 'De mest populære reoler vil blive vist her.',
+ 'shelves_new_empty' => 'De nyeste reoler vil blive vist her.',
+ 'shelves_save' => 'Gem reol',
+ 'shelves_books' => 'Bøger på denne reol',
+ 'shelves_add_books' => 'Tilføj bøger til denne reol',
+ 'shelves_drag_books' => 'Træk bog her for at tilføje dem til denne reol',
+ 'shelves_empty_contents' => 'Denne reol har ingen bøger tilknyttet til den',
+ 'shelves_edit_and_assign' => 'Rediger reol for at tilføje bøger',
+ 'shelves_edit_named' => 'Rediger reol :name',
+ 'shelves_edit' => 'Rediger reol',
+ 'shelves_delete' => 'Slet reol',
+ 'shelves_delete_named' => 'Slet bogreol :name',
+ 'shelves_delete_explain' => "Dette vil slette bogreolen med navn ':name'. Bøger heri vil ikke blive slettet.",
+ 'shelves_delete_confirmation' => 'Er du sikker på at du vil slette denne bogreol?',
+ 'shelves_permissions' => 'Reoltilladelser',
+ 'shelves_permissions_updated' => 'Reoltilladelser opdateret',
+ 'shelves_permissions_active' => 'Aktive reoltilladelser',
+ 'shelves_copy_permissions_to_books' => 'Kopier tilladelser til bøger',
+ 'shelves_copy_permissions' => 'Kopier tilladelser',
+ 'shelves_copy_permissions_explain' => 'Dette vil anvende de aktuelle tilladelsesindstillinger på denne boghylde på alle bøger indeholdt i. Før aktivering skal du sikre dig, at ændringer i tilladelserne til denne boghylde er blevet gemt.',
+ 'shelves_copy_permission_success' => 'Reolstilladelser kopieret til :count bøger',
+
+ // Books
+ 'book' => 'Bog',
+ 'books' => 'Bøger',
+ 'x_books' => ':count bog|:count bøger',
+ 'books_empty' => 'Ingen bøger er blevet oprettet',
+ 'books_popular' => 'Populære bøger',
+ 'books_recent' => 'Nylige bøger',
+ 'books_new' => 'Nye bøger',
+ 'books_new_action' => 'Ny bog',
+ 'books_popular_empty' => 'De mest populære bøger vil blive vist her.',
+ 'books_new_empty' => 'De nyeste boger vil blive vist her.',
+ 'books_create' => 'Lav en ny bog',
+ 'books_delete' => 'Slet bog',
+ 'books_delete_named' => 'Slet bog :bookName',
+ 'books_delete_explain' => 'Dette vil slette bogen ved navn \':bookName\'. Alle sider og kapitler vil blive slettet.',
+ 'books_delete_confirmation' => 'Er du sikker på at du vil slette denne bog?',
+ 'books_edit' => 'Rediger bog',
+ 'books_edit_named' => 'Rediger bog :bookName',
+ 'books_form_book_name' => 'Bognavn',
+ 'books_save' => 'Gem bog',
+ 'books_permissions' => 'Bogtilladelser',
+ 'books_permissions_updated' => 'Bogtilladelser opdateret',
+ 'books_empty_contents' => 'Ingen sider eller kapitler er blevet oprettet i denne bog.',
+ 'books_empty_create_page' => 'Opret en ny side',
+ 'books_empty_sort_current_book' => 'Sortér denne bog',
+ 'books_empty_add_chapter' => 'Tilføj et kapitel',
+ 'books_permissions_active' => 'Aktive bogtilladelser',
+ 'books_search_this' => 'Søg i denne bog',
+ 'books_navigation' => 'Bognavigation',
+ 'books_sort' => 'Sorter bogindhold',
+ 'books_sort_named' => 'Sorter bog :bookName',
+ 'books_sort_name' => 'Sortér efter navn',
+ 'books_sort_created' => 'Sortér efter oprettelsesdato',
+ 'books_sort_updated' => 'Sortér efter opdateringsdato',
+ 'books_sort_chapters_first' => 'Kapitler først',
+ 'books_sort_chapters_last' => 'Kapitler sidst',
+ 'books_sort_show_other' => 'Vis andre bøger',
+ 'books_sort_save' => 'Gem ny ordre',
+
+ // Chapters
+ 'chapter' => 'Kapitel',
+ 'chapters' => 'Kapitler',
+ 'x_chapters' => ':count kapitel|:count kapitler',
+ 'chapters_popular' => 'Populære kapitler',
+ 'chapters_new' => 'Nyt kapitel',
+ 'chapters_create' => 'Opret nyt kapitel',
+ 'chapters_delete' => 'Slet kapitel',
+ 'chapters_delete_named' => 'Slet kapitel :chapterName',
+ 'chapters_delete_explain' => 'Dette vil slette kapitlet med navnet \':chapterName\'. Alle sider fjernes og tilføjes direkte til den tilhørende bog.',
+ 'chapters_delete_confirm' => 'Er du sikker på du vil slette dette kapitel?',
+ 'chapters_edit' => 'Rediger kapitel',
+ 'chapters_edit_named' => 'Rediger kapitel :chapterName',
+ 'chapters_save' => 'Gem kapitel',
+ 'chapters_move' => 'Flyt kapitel',
+ 'chapters_move_named' => 'Flyt kapitel :chapterName',
+ 'chapter_move_success' => 'Kapitel flyttet til :bookName',
+ 'chapters_permissions' => 'Kapiteltilladelser',
+ 'chapters_empty' => 'Der er lige nu ingen sider i dette kapitel.',
+ 'chapters_permissions_active' => 'Aktive kapiteltilladelser',
+ 'chapters_permissions_success' => 'Kapiteltilladelser opdateret',
+ 'chapters_search_this' => 'Søg i dette kapitel',
+
+ // Pages
+ 'page' => 'Side',
+ 'pages' => 'Sider',
+ 'x_pages' => ':count Side|:count Sider',
+ 'pages_popular' => 'Populære sider',
+ 'pages_new' => 'Ny side',
+ 'pages_attachments' => 'Vedhæftninger',
+ 'pages_navigation' => 'Sidenavigation',
+ 'pages_delete' => 'Slet side',
+ 'pages_delete_named' => 'Slet side :pageName',
+ 'pages_delete_draft_named' => 'Slet kladdesidde :pageName',
+ 'pages_delete_draft' => 'Slet kladdeside',
+ 'pages_delete_success' => 'Side slettet',
+ 'pages_delete_draft_success' => 'Kladdeside slettet',
+ 'pages_delete_confirm' => 'Er du sikker på, du vil slette denne side?',
+ 'pages_delete_draft_confirm' => 'Er du sikker på at du vil slette denne kladdesidde?',
+ 'pages_editing_named' => 'Redigerer :pageName',
+ 'pages_edit_draft_options' => 'Kladdeindstillinger',
+ 'pages_edit_save_draft' => 'Gem kladde',
+ 'pages_edit_draft' => 'Rediger sidekladde',
+ 'pages_editing_draft' => 'Redigerer kladde',
+ 'pages_editing_page' => 'Redigerer side',
+ 'pages_edit_draft_save_at' => 'Kladde gemt ved ',
+ 'pages_edit_delete_draft' => 'Slet kladde',
+ 'pages_edit_discard_draft' => 'Kassér kladde',
+ 'pages_edit_set_changelog' => 'Sæt ændringsoversigt',
+ 'pages_edit_enter_changelog_desc' => 'Indtast en kort beskrivelse af ændringer du har lavet',
+ 'pages_edit_enter_changelog' => 'Indtast ændringsoversigt',
+ 'pages_save' => 'Gem siden',
+ 'pages_title' => 'Overskrift',
+ 'pages_name' => 'Sidenavn',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Forhåndsvisning',
+ 'pages_md_insert_image' => 'Indsæt billede',
+ 'pages_md_insert_link' => 'Indsæt emnelink',
+ 'pages_md_insert_drawing' => 'Indsæt tegning',
+ 'pages_not_in_chapter' => 'Side er ikke i et kapitel',
+ 'pages_move' => 'Flyt side',
+ 'pages_move_success' => 'Flyt side til ":parentName"',
+ 'pages_copy' => 'Kopier side',
+ 'pages_copy_desination' => 'Kopier destination',
+ 'pages_copy_success' => 'Side kopieret succesfuldt',
+ 'pages_permissions' => 'Sidetilladelser',
+ 'pages_permissions_success' => 'Sidetilladelser opdateret',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Sidserevisioner',
+ 'pages_revisions_named' => 'Siderevisioner for :pageName',
+ 'pages_revision_named' => 'Siderevision for :pageName',
+ 'pages_revisions_created_by' => 'Oprettet af',
+ 'pages_revisions_date' => 'Revisionsdato',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id ændringer',
+ 'pages_revisions_changelog' => 'Ændringsoversigt',
+ 'pages_revisions_changes' => 'Ændringer',
+ 'pages_revisions_current' => 'Nuværende version',
+ 'pages_revisions_preview' => 'Forhåndsvisning',
+ 'pages_revisions_restore' => 'Gendan',
+ 'pages_revisions_none' => 'Denne side har ingen revisioner',
+ 'pages_copy_link' => 'Kopier link',
+ 'pages_edit_content_link' => 'Redigér indhold',
+ 'pages_permissions_active' => 'Aktive sidetilladelser',
+ 'pages_initial_revision' => 'Første udgivelse',
+ 'pages_initial_name' => 'Ny side',
+ 'pages_editing_draft_notification' => 'Du redigerer en kladde der sidst var gemt :timeDiff.',
+ 'pages_draft_edited_notification' => 'Siden har været opdateret siden da. Det er anbefalet at du kasserer denne kladde.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count brugerer har begyndt at redigere denne side',
+ 'start_b' => ':userName er begyndt at redigere denne side',
+ 'time_a' => 'siden siden sidst blev opdateret',
+ 'time_b' => 'i de sidste :minCount minutter',
+ 'message' => ':start : time. Pas på ikke at overskrive hinandens opdateringer!',
+ ],
+ 'pages_draft_discarded' => 'Kladde kasseret, editoren er blevet opdateret med aktuelt sideindhold',
+ 'pages_specific' => 'Specifik side',
+ 'pages_is_template' => 'Sideskabelon',
+
+ // Editor Sidebar
+ 'page_tags' => 'Sidetags',
+ 'chapter_tags' => 'Kapiteltags',
+ 'book_tags' => 'Bogtags',
+ 'shelf_tags' => 'Reoltags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tag_name' => 'Tagnavn',
+ 'tag_value' => 'Tagværdi (valgfri)',
+ 'tags_explain' => "Tilføj nogle tags for bedre at kategorisere dit indhold. \n Du kan tildele en værdi til et tag for mere dybdegående organisering.",
+ 'tags_add' => 'Tilføj endnu et tag',
+ 'tags_remove' => 'Fjern dette tag',
+ 'attachments' => 'Vedhæftninger',
+ 'attachments_explain' => 'Upload nogle filer, eller vedhæft nogle links, der skal vises på siden. Disse er synlige i sidepanelet.',
+ 'attachments_explain_instant_save' => 'Ændringer her gemmes med det samme.',
+ 'attachments_items' => 'Vedhæftede emner',
+ 'attachments_upload' => 'Upload fil',
+ 'attachments_link' => 'Vedhæft link',
+ 'attachments_set_link' => 'Sæt link',
+ 'attachments_delete_confirm' => 'Tryk på slet igen for at bekræft at du ønsker at slette denne vedhæftning.',
+ 'attachments_dropzone' => 'Slip filer eller klik her for at vedhæfte en fil',
+ 'attachments_no_files' => 'Ingen filer er blevet overført',
+ 'attachments_explain_link' => 'Du kan vedhæfte et link, hvis du foretrækker ikke at uploade en fil. Dette kan være et link til en anden side eller et link til en fil i skyen.',
+ 'attachments_link_name' => 'Linknavn',
+ 'attachment_link' => 'Vedhæftningslink',
+ 'attachments_link_url' => 'Link til filen',
+ 'attachments_link_url_hint' => 'Adresse (URL) på side eller fil',
+ 'attach' => 'Vedhæft',
+ 'attachments_edit_file' => 'Rediger fil',
+ 'attachments_edit_file_name' => 'Filnavn',
+ 'attachments_edit_drop_upload' => 'Slip filer eller klik her for at uploade og overskrive',
+ 'attachments_order_updated' => 'Vedhæftningsordre opdateret',
+ 'attachments_updated_success' => 'Vedhæftningsdetaljer opdateret',
+ 'attachments_deleted' => 'Vedhæftning slettet',
+ 'attachments_file_uploaded' => 'Filen blev uploadet korrekt',
+ 'attachments_file_updated' => 'Filen blev opdateret korrekt',
+ 'attachments_link_attached' => 'Link succesfuldt vedhæftet til side',
+ 'templates' => 'Skabeloner',
+ 'templates_set_as_template' => 'Side er en skabelon',
+ 'templates_explain_set_as_template' => 'Du kan indstille denne side som en skabelon, så dens indhold bruges, når du opretter andre sider. Andre brugere vil kunne bruge denne skabelon, hvis de har visningstilladelser til denne side.',
+ 'templates_replace_content' => 'Udskift sideindhold',
+ 'templates_append_content' => 'Tilføj efter sideindhold',
+ 'templates_prepend_content' => 'Tilføj før sideindhold',
+
+ // Profile View
+ 'profile_user_for_x' => 'Bruger i :time',
+ 'profile_created_content' => 'Oprettet indhold',
+ 'profile_not_created_pages' => ':userName har ikke oprettet nogle sider',
+ 'profile_not_created_chapters' => ':userName har ikke oprettet nogle kapitler',
+ 'profile_not_created_books' => ':userName har ikke oprettet nogle bøger',
+ 'profile_not_created_shelves' => ':userName har ikke oprettet nogle reoler',
+
+ // Comments
+ 'comment' => 'Kommentar',
+ 'comments' => 'Kommentarer',
+ 'comment_add' => 'Tilføj kommentar',
+ 'comment_placeholder' => 'Skriv en kommentar her',
+ 'comment_count' => '{0} Ingen kommentarer|{1} 1 Kommentar|[2,*] :count kommentarer',
+ 'comment_save' => 'Gem kommentar',
+ 'comment_saving' => 'Gemmer kommentar...',
+ 'comment_deleting' => 'Sletter kommentar...',
+ 'comment_new' => 'Ny kommentar',
+ 'comment_created' => 'kommenteret :createDiff',
+ 'comment_updated' => 'Opdateret :updateDiff af :username',
+ 'comment_deleted_success' => 'Kommentar slettet',
+ 'comment_created_success' => 'Kommentaren er tilføjet',
+ 'comment_updated_success' => 'Kommentaren er opdateret',
+ 'comment_delete_confirm' => 'Er du sikker på, at du vil slette denne kommentar?',
+ 'comment_in_reply_to' => 'Som svar til :commentId',
+
+ // Revision
+ 'revision_delete_confirm' => 'Er du sikker på at du vil slette denne revision?',
+ 'revision_restore_confirm' => 'Er du sikker på at du ønsker at gendanne denne revision? Nuværende sideindhold vil blive erstattet.',
+ 'revision_delete_success' => 'Revision slettet',
+ 'revision_cannot_delete_latest' => 'Kan ikke slette seneste revision.'
+];
\ No newline at end of file
'email_already_confirmed' => 'Email er allerede bekræftet. Prøv at logge ind.',
'email_confirmation_invalid' => 'Denne bekræftelsestoken er ikke gyldig eller er allerede blevet brugt. Prøv at registrere dig igen.',
'email_confirmation_expired' => 'Bekræftelsestoken er udløbet. En ny bekræftelsesmail er blevet sendt.',
- 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
- 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'email_confirmation_awaiting' => 'Mail-adressen for din konto i brug er nød til at blive bekræftet',
+ 'ldap_fail_anonymous' => 'LDAP-adgang fejlede ved brugen af annonym bind',
'ldap_fail_authed' => 'LDAP adgang fejlede med de givne DN & kodeord oplysninger',
'ldap_extension_not_installed' => 'LDAP PHP udvidelse er ikke installeret',
'ldap_cannot_connect' => 'Kan ikke forbinde til ldap server. Indledende forbindelse mislykkedes',
'saml_already_logged_in' => 'Allerede logget ind',
'saml_user_not_registered' => 'Brugeren :name er ikke registreret, og automatisk registrering er slået fra',
- 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
- 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
- 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
- 'social_no_action_defined' => 'No action defined',
- 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
- 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
- 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
- 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
- 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
- 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
- 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
- 'social_driver_not_found' => 'Social driver not found',
- 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
- 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'saml_no_email_address' => 'Kunne ikke finde en e-mail-adresse for denne bruger i de data, der leveres af det eksterne godkendelsessystem',
+ 'saml_invalid_response_id' => 'Anmodningen fra det eksterne godkendelsessystem genkendes ikke af en proces, der er startet af denne applikation. Navigering tilbage efter et login kan forårsage dette problem.',
+ 'saml_fail_authed' => 'Login ved hjælp af :system failed, systemet har ikke givet tilladelse',
+ 'social_no_action_defined' => 'Ingen handling er defineret',
+ 'social_login_bad_response' => "Der opstod en fejl under :socialAccount login:\n:error",
+ 'social_account_in_use' => 'Denne :socialAccount konto er allerede i brug, prøv at logge ind med :socialAccount loginmetoden.',
+ 'social_account_email_in_use' => 'Emailen :email er allerede i brug. Hvis du allerede har en konto, kan du forbinde din :socialAccount fra dine profilindstillinger.',
+ 'social_account_existing' => ':socialAccount er allerede tilknyttet din profil.',
+ 'social_account_already_used_existing' => 'Denne :socialAccount konto er allerede i brug af en anden bruger.',
+ 'social_account_not_used' => 'Denne :socialAccount konto er ikke tilknyttet nogle brugere. Tilknyt den i dine profilindstillinger. ',
+ 'social_account_register_instructions' => 'Hvis du ikke har en konto, kan du registrere en konto gennem :socialAccount loginmetoden.',
+ 'social_driver_not_found' => 'Socialdriver ikke fundet',
+ 'social_driver_not_configured' => 'Dine :socialAccount indstillinger er ikke konfigureret korret.',
+ 'invite_token_expired' => 'Dette invitationslink er udløbet. I stedet kan du prøve at nulstille din kontos kodeord.',
// System
- 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
- 'cannot_get_image_from_url' => 'Cannot get image from :url',
- 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
- 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
- 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
- 'image_upload_error' => 'An error occurred uploading the image',
- 'image_upload_type_error' => 'The image type being uploaded is invalid',
- 'file_upload_timeout' => 'The file upload has timed out.',
+ 'path_not_writable' => 'Filsti :filePath kunne ikke uploades til. Sørg for at den kan skrives til af webserveren.',
+ 'cannot_get_image_from_url' => 'Kan ikke finde billede på :url',
+ 'cannot_create_thumbs' => 'Serveren kan ikke oprette miniaturer. Kontroller, at GD PHP-udvidelsen er installeret.',
+ 'server_upload_limit' => 'Serveren tillader ikke uploads af denne størrelse. Prøv en mindre filstørrelse.',
+ 'uploaded' => 'Serveren tillader ikke uploads af denne størrelse. Prøv en mindre filstørrelse.',
+ 'image_upload_error' => 'Der opstod en fejl ved upload af billedet',
+ 'image_upload_type_error' => 'Billedtypen, der uploades, er ugyldig',
+ 'file_upload_timeout' => 'Filuploaden udløb.',
// Attachments
- 'attachment_page_mismatch' => 'Page mismatch during attachment update',
- 'attachment_not_found' => 'Attachment not found',
+ 'attachment_page_mismatch' => 'Der blev fundet en uoverensstemmelse på siden under opdatering af vedhæftet fil',
+ 'attachment_not_found' => 'Vedhæftning ikke fundet',
// Pages
- 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
- 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+ 'page_draft_autosave_fail' => 'Kunne ikke gemme kladde. Tjek at du har internetforbindelse før du gemmer siden',
+ 'page_custom_home_deletion' => 'Kan ikke slette en side der er sat som forside',
// Entities
- 'entity_not_found' => 'Entity not found',
- 'bookshelf_not_found' => 'Bookshelf not found',
- 'book_not_found' => 'Book not found',
- 'page_not_found' => 'Page not found',
- 'chapter_not_found' => 'Chapter not found',
- 'selected_book_not_found' => 'The selected book was not found',
- 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
- 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+ 'entity_not_found' => 'Emne ikke fundet',
+ 'bookshelf_not_found' => 'Bogreol ikke fundet',
+ 'book_not_found' => 'Bog ikke fundet',
+ 'page_not_found' => 'Side ikke fundet',
+ 'chapter_not_found' => 'Kapitel ikke fundet',
+ 'selected_book_not_found' => 'Den valgte bog kunne ikke findes',
+ 'selected_book_chapter_not_found' => 'Den valgte bog eller kapitel kunne ikke findes',
+ 'guests_cannot_save_drafts' => 'Gæster kan ikke gemme kladder',
// Users
- 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
- 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+ 'users_cannot_delete_only_admin' => 'Du kan ikke slette den eneste admin',
+ 'users_cannot_delete_guest' => 'Du kan ikke slette gæstebrugeren',
// Roles
- 'role_cannot_be_edited' => 'This role cannot be edited',
- 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
- 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
- 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+ 'role_cannot_be_edited' => 'Denne rolle kan ikke redigeres',
+ 'role_system_cannot_be_deleted' => 'Denne rolle er en systemrolle og kan ikke slettes',
+ 'role_registration_default_cannot_delete' => 'Kan ikke slette rollen mens den er sat som standardrolle for registrerede brugere',
+ 'role_cannot_remove_only_admin' => 'Denne bruger er den eneste bruger der har administratorrollen. Tilføj en anden bruger til administratorrollen før du forsøger at slette den her.',
// Comments
- 'comment_list' => 'An error occurred while fetching the comments.',
- 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
- 'comment_add' => 'An error occurred while adding / updating the comment.',
- 'comment_delete' => 'An error occurred while deleting the comment.',
- 'empty_comment' => 'Cannot add an empty comment.',
+ 'comment_list' => 'Der opstod en fejl under hentning af kommentarerne.',
+ 'cannot_add_comment_to_draft' => 'Du kan ikke kommentere på en kladde.',
+ 'comment_add' => 'Der opstod en fejl under tilføjelse/opdatering af kommentaren.',
+ 'comment_delete' => 'Der opstod en fejl under sletning af kommentaren.',
+ 'empty_comment' => 'Kan ikke tilføje en tom kommentar.',
// Error pages
- '404_page_not_found' => 'Page Not Found',
- 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
- 'return_home' => 'Return to home',
- 'error_occurred' => 'An Error Occurred',
- 'app_down' => ':appName is down right now',
- 'back_soon' => 'It will be back up soon.',
+ '404_page_not_found' => 'Siden blev ikke fundet',
+ 'sorry_page_not_found' => 'Beklager, siden du leder efter blev ikke fundet.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ 'return_home' => 'Gå tilbage til hjem',
+ 'error_occurred' => 'Der opstod en fejl',
+ 'app_down' => ':appName er nede lige nu',
+ 'back_soon' => 'Den er oppe igen snart.',
// API errors
- 'api_no_authorization_found' => 'No authorization token found on the request',
- 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
- 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
- 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
- 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
- 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_no_authorization_found' => 'Der blev ikke fundet nogen autorisationstoken på anmodningen',
+ 'api_bad_authorization_format' => 'En autorisationstoken blev fundet på anmodningen, men formatet var forkert',
+ 'api_user_token_not_found' => 'Der blev ikke fundet nogen matchende API-token for det angivne autorisationstoken',
+ 'api_incorrect_token_secret' => 'Hemmeligheden leveret til det givne anvendte API-token er forkert',
+ 'api_user_no_api_permission' => 'Ejeren af den brugte API token har ikke adgang til at foretage API-kald',
+ 'api_user_token_expired' => 'Den brugte godkendelsestoken er udløbet',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Følgende fejl opstod under afsendelse af testemail:',
];
--- /dev/null
+<?php
+/**
+ * Pagination Language Lines
+ * The following language lines are used by the paginator library to build
+ * the simple pagination links.
+ */
+return [
+
+ 'previous' => '« Previous',
+ 'next' => 'Next »',
+
+];
'password' => 'Adgangskoder skal være mindst otte tegn og svare til bekræftelsen.',
'user' => "Vi kan ikke finde en bruger med den e-mail adresse.",
- 'token' => 'Denne adgangskode nulstillingstoken er ugyldig.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'Vi har sendt dig en e-mail med et link til at nulstille adgangskoden!',
'reset' => 'Dit kodeord er blevet nulstillet!',
'settings_save_success' => 'Indstillinger gemt',
// App Settings
- 'app_customization' => 'Customization',
- 'app_features_security' => 'Features & Security',
- 'app_name' => 'Application Name',
- 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
- 'app_name_header' => 'Show name in header',
+ 'app_customization' => 'Tilpasning',
+ 'app_features_security' => 'Funktioner & sikkerhed',
+ 'app_name' => 'Programnavn',
+ 'app_name_desc' => 'Dette er navnet vist i headeren og i systemafsendte E-Mails.',
+ 'app_name_header' => 'Vis navn i header',
'app_public_access' => 'Offentlig adgang',
- 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
- 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_desc' => 'Aktivering af denne funktion giver besøgende, der ikke er logget ind, adgang til indhold i din BookStack-instans.',
+ 'app_public_access_desc_guest' => 'Adgang for ikke-registrerede besøgende kan kontrolleres via "Gæst" -brugeren.',
'app_public_access_toggle' => 'Tillad offentlig adgang',
- 'app_public_viewing' => 'Allow public viewing?',
- 'app_secure_images' => 'Higher Security Image Uploads',
- 'app_secure_images_toggle' => 'Enable higher security image uploads',
- 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
- 'app_editor' => 'Page Editor',
- 'app_editor_desc' => 'Select which editor will be used by all users to edit pages.',
- 'app_custom_html' => 'Custom HTML Head Content',
- 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the <head> section of every page. This is handy for overriding styles or adding analytics code.',
- 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
- 'app_logo' => 'Application Logo',
- 'app_logo_desc' => 'This image should be 43px in height. <br>Large images will be scaled down.',
- 'app_primary_color' => 'Application Primary Color',
- 'app_primary_color_desc' => 'Sets the primary color for the application including the banner, buttons, and links.',
- 'app_homepage' => 'Application Homepage',
- 'app_homepage_desc' => 'Select a view to show on the homepage instead of the default view. Page permissions are ignored for selected pages.',
+ 'app_public_viewing' => 'Tillad offentlig visning?',
+ 'app_secure_images' => 'Højere sikkerhed for billeduploads',
+ 'app_secure_images_toggle' => 'Aktiver højere sikkerhed for billeduploads',
+ 'app_secure_images_desc' => 'Af ydeevneårsager er alle billeder offentlige. Denne funktion tilføjer en tilfældig, vanskelig at gætte streng foran billed-Url\'er. Sørg for, at mappeindekser ikke er aktiveret for at forhindre nem adgang.',
+ 'app_editor' => 'Sideeditor',
+ 'app_editor_desc' => 'Vælg hvilken editor der skal bruges af alle brugere til at redigere sider.',
+ 'app_custom_html' => 'Tilpasset HTML head-indhold',
+ 'app_custom_html_desc' => 'Al indhold tilføjet her, vil blive indsat i bunden af <head> sektionen på alle sider. Dette er brugbart til overskrivning af styling og tilføjelse af analysekode.',
+ 'app_custom_html_disabled_notice' => 'Brugerdefineret HTML-head indhold er deaktiveret på denne indstillingsside for at sikre, at ødelæggende ændringer kan rettes.',
+ 'app_logo' => 'Programlogo',
+ 'app_logo_desc' => 'Dette billede skal være 43px højt. <br> Større billeder vil blive skaleret ned.',
+ 'app_primary_color' => 'Primær programfarve',
+ 'app_primary_color_desc' => 'Sætter den primære farve for applikationen herunder banneret, knapper og links.',
+ 'app_homepage' => 'Programforside',
+ 'app_homepage_desc' => 'Vælg en visning, der skal vises på startsiden i stedet for standardvisningen. Sidetilladelser ignoreres for valgte sider.',
'app_homepage_select' => 'Vælg en side',
- 'app_disable_comments' => 'Disable Comments',
- 'app_disable_comments_toggle' => 'Disable comments',
- 'app_disable_comments_desc' => 'Disables comments across all pages in the application. <br> Existing comments are not shown.',
+ 'app_disable_comments' => 'Deaktiver kommentarer',
+ 'app_disable_comments_toggle' => 'Deaktiver kommentar',
+ 'app_disable_comments_desc' => 'Deaktiverer kommentarer på tværs af alle sider i applikationen. <br> Eksisterende kommentarer vises ikke.',
// Color settings
- 'content_colors' => 'Content Colors',
- 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
- 'bookshelf_color' => 'Shelf Color',
- 'book_color' => 'Book Color',
- 'chapter_color' => 'Chapter Color',
+ 'content_colors' => 'Indholdsfarver',
+ 'content_colors_desc' => 'Sætter farver for alle elementer i sideorganisationshierarkiet. Valg af farver med en lignende lysstyrke som standardfarverne anbefales af hensyn til læsbarhed.',
+ 'bookshelf_color' => 'Bogreolfarve',
+ 'book_color' => 'Bogfarve',
+ 'chapter_color' => 'Kapitelfarve',
'page_color' => 'Sidefarve',
- 'page_draft_color' => 'Page Draft Color',
+ 'page_draft_color' => 'Sidekladdefarve',
// Registration Settings
'reg_settings' => 'Registrering',
'reg_enable' => 'Aktivér tilmelding',
'reg_enable_toggle' => 'Aktivér tilmelding',
- 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
- 'reg_default_role' => 'Default user role after registration',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_desc' => 'Når registrering er aktiveret, vil alle kunne registrere sig som en applikationsbruger. Ved registrering får de en standardbrugerrolle.',
+ 'reg_default_role' => 'Standardrolle efter registrering',
+ 'reg_enable_external_warning' => 'Indstillingen ovenfor ignoreres, mens ekstern LDAP- eller SAML-godkendelse er aktiv. Brugerkonti for ikke-eksisterende medlemmer oprettes automatisk, hvis godkendelse mod det eksterne system, der er i brug, er vellykket.',
'reg_email_confirmation' => 'Email bekræftelse',
- 'reg_email_confirmation_toggle' => 'Require email confirmation',
- 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
- 'reg_confirm_restrict_domain' => 'Domain Restriction',
- 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. <br> Note that users will be able to change their email addresses after successful registration.',
- 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+ 'reg_email_confirmation_toggle' => 'Kræv E-Mail bekræftelse',
+ 'reg_confirm_email_desc' => 'Hvis domænebegrænsning bruges, kræves e-mail-bekræftelse, og denne indstilling ignoreres.',
+ 'reg_confirm_restrict_domain' => 'Domæneregistrering',
+ 'reg_confirm_restrict_domain_desc' => 'Indtast en kommasepareret liste over e-mail-domæner, som du vil begrænse registreringen til. Brugere får en E-Mail for at bekræfte deres adresse, før de får tilladelse til at interagere med applikationen. <br> Bemærk, at brugere vil kunne ændre deres e-mail-adresser efter vellykket registrering.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Ingen restriktion opsat',
// Maintenance settings
'maint' => 'Vedligeholdelse',
- 'maint_image_cleanup' => 'Cleanup Images',
- 'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.",
- 'maint_image_cleanup_ignore_revisions' => 'Ignore images in revisions',
- 'maint_image_cleanup_run' => 'Run Cleanup',
- 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
- 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
- 'maint_image_cleanup_nothing_found' => 'No unused images found, Nothing deleted!',
- 'maint_send_test_email' => 'Send a Test Email',
- 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.',
- 'maint_send_test_email_run' => 'Send test email',
- 'maint_send_test_email_success' => 'Email sent to :address',
- 'maint_send_test_email_mail_subject' => 'Test Email',
- 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!',
- 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.',
+ 'maint_image_cleanup' => 'Ryd op i billeder',
+ 'maint_image_cleanup_desc' => "Scanner side & revisionsindhold for at kontrollere, hvilke billeder og tegninger, der i øjeblikket er i brug, og hvilke billeder, der er overflødige. Sørg for, at du opretter en komplet database og billedbackup, før du kører dette.",
+ 'maint_image_cleanup_ignore_revisions' => 'Ignorer billeder i revisioner',
+ 'maint_image_cleanup_run' => 'Kør Oprydning',
+ 'maint_image_cleanup_warning' => 'der blev fundet :count potentielt ubrugte billeder. Er du sikker på, at du vil slette disse billeder?',
+ 'maint_image_cleanup_success' => ':count: potentielt ubrugte billeder fundet og slettet!',
+ 'maint_image_cleanup_nothing_found' => 'Ingen ubrugte billeder fundet, intet slettet!',
+ 'maint_send_test_email' => 'Send en Testemail',
+ 'maint_send_test_email_desc' => 'Dette sender en testmail til din mailadresse specificeret på din profil.',
+ 'maint_send_test_email_run' => 'Afsend test E-Mail',
+ 'maint_send_test_email_success' => 'E-Mail sendt til :address',
+ 'maint_send_test_email_mail_subject' => 'Test E-Mail',
+ 'maint_send_test_email_mail_greeting' => 'E-Mail levering ser ud til at virke!',
+ 'maint_send_test_email_mail_text' => 'Tillykke! Da du har modtaget denne mailnotifikation, ser det ud som om, at dine mailindstillinger er opsat korrekt.',
// Role Settings
'roles' => 'Roller',
'role_create' => 'Opret en ny rolle',
'role_create_success' => 'Rollen blev oprette korrekt',
'role_delete' => 'Slet rolle',
- 'role_delete_confirm' => 'This will delete the role with the name \':roleName\'.',
- 'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.',
- 'role_delete_no_migration' => "Don't migrate users",
- 'role_delete_sure' => 'Are you sure you want to delete this role?',
- 'role_delete_success' => 'Role successfully deleted',
+ 'role_delete_confirm' => 'Dette vil slette rollen med navnet \':roleName\'.',
+ 'role_delete_users_assigned' => 'Denne rolle er tildelt :userCount brugere. Hvis du vil rykke disse brugere fra denne rolle, kan du vælge en ny nedenunder.',
+ 'role_delete_no_migration' => "Ryk ikke brugere",
+ 'role_delete_sure' => 'Er du sikker på, at du vil slette denne rolle?',
+ 'role_delete_success' => 'Rollen blev slettet',
'role_edit' => 'Rediger rolle',
- 'role_details' => 'Role Details',
+ 'role_details' => 'Rolledetaljer',
'role_name' => 'Rollenavn',
- 'role_desc' => 'Short Description of Role',
- 'role_external_auth_id' => 'External Authentication IDs',
- 'role_system' => 'System Permissions',
+ 'role_desc' => 'Kort beskrivelse af rolle',
+ 'role_external_auth_id' => 'Eksterne godkendelses-IDer',
+ 'role_system' => 'Systemtilladelser',
'role_manage_users' => 'Administrere brugere',
- 'role_manage_roles' => 'Manage roles & role permissions',
- 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
- 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
- 'role_manage_page_templates' => 'Manage page templates',
- 'role_access_api' => 'Access system API',
- 'role_manage_settings' => 'Manage app settings',
- 'role_asset' => 'Asset Permissions',
- 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
- 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_manage_roles' => 'Administrer roller & rollerettigheder',
+ 'role_manage_entity_permissions' => 'Administrer alle bog-, kapitel- & side-rettigheder',
+ 'role_manage_own_entity_permissions' => 'Administrer tilladelser på egne bøger, kapitler og sider',
+ 'role_manage_page_templates' => 'Administrer side-skabeloner',
+ 'role_access_api' => 'Tilgå system-API',
+ 'role_manage_settings' => 'Administrer app-indstillinger',
+ 'role_asset' => 'Tilladelser for medier og "assets"',
+ 'role_asset_desc' => 'Disse tilladelser kontrollerer standardadgang til medier og "assets" i systemet. Tilladelser til bøger, kapitler og sider tilsidesætter disse tilladelser.',
+ 'role_asset_admins' => 'Administratorer får automatisk adgang til alt indhold, men disse indstillinger kan vise eller skjule UI-indstillinger.',
'role_all' => 'Alle',
'role_own' => 'Eget',
- 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
- 'role_save' => 'Save Role',
- 'role_update_success' => 'Role successfully updated',
- 'role_users' => 'Users in this role',
- 'role_users_none' => 'No users are currently assigned to this role',
+ 'role_controlled_by_asset' => 'Styres af det medie/"asset", de uploades til',
+ 'role_save' => 'Gem rolle',
+ 'role_update_success' => 'Rollen blev opdateret',
+ 'role_users' => 'Brugere med denne rolle',
+ 'role_users_none' => 'Ingen brugere er i øjeblikket tildelt denne rolle',
// Users
'users' => 'Brugere',
'users_add_new' => 'Tilføj ny bruger',
'users_search' => 'Søg efter brugere',
'users_details' => 'Brugeroplysninger',
- 'users_details_desc' => 'Set a display name and an email address for this user. The email address will be used for logging into the application.',
- 'users_details_desc_no_email' => 'Set a display name for this user so others can recognise them.',
+ 'users_details_desc' => 'Angiv et visningsnavn og en E-Mail-adresse for denne bruger. E-Mail-adressen bruges til at logge ind på applikationen.',
+ 'users_details_desc_no_email' => 'Sætter et visningsnavn for denne bruger, så andre kan genkende dem.',
'users_role' => 'Brugerroller',
- 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
- 'users_password' => 'User Password',
- 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 6 characters long.',
- 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
- 'users_send_invite_option' => 'Send user invite email',
+ 'users_role_desc' => 'Vælg hvilke roller denne bruger skal tildeles. Hvis en bruger er tildelt flere roller, sammenføres tilladelserne fra disse roller, og de får alle evnerne fra de tildelte roller.',
+ 'users_password' => 'Brugeradgangskode',
+ 'users_password_desc' => 'Sæt et kodeord, der bruges til at logge på applikationen. Dette skal være mindst 6 tegn langt.',
+ 'users_send_invite_text' => 'Du kan vælge at sende denne bruger en invitation på E-Mail, som giver dem mulighed for at indstille deres egen adgangskode, ellers kan du indstille deres adgangskode selv.',
+ 'users_send_invite_option' => 'Send bruger en invitationsmail',
'users_external_auth_id' => 'Ekstern godkendelses ID',
- 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
- 'users_password_warning' => 'Only fill the below if you would like to change your password.',
- 'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.',
- 'users_delete' => 'Delete User',
- 'users_delete_named' => 'Delete user :userName',
- 'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.',
- 'users_delete_confirm' => 'Are you sure you want to delete this user?',
- 'users_delete_success' => 'Users successfully removed',
- 'users_edit' => 'Edit User',
- 'users_edit_profile' => 'Edit Profile',
- 'users_edit_success' => 'User successfully updated',
- 'users_avatar' => 'User Avatar',
- 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
- 'users_preferred_language' => 'Preferred Language',
- 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
- 'users_social_accounts' => 'Social Accounts',
- 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
- 'users_social_connect' => 'Connect Account',
- 'users_social_disconnect' => 'Disconnect Account',
+ 'users_external_auth_id_desc' => 'Dette er det ID, der bruges til at matche denne bruger ved kommunikation med dit eksterne godkendelsessystem.',
+ 'users_password_warning' => 'Udfyld kun nedenstående, hvis du vil ændre din adgangskode.',
+ 'users_system_public' => 'Denne bruger repræsenterer alle gæstebrugere, der besøger din instans. Den kan ikke bruges til at logge på, men tildeles automatisk.',
+ 'users_delete' => 'Slet bruger',
+ 'users_delete_named' => 'Slet bruger :userName',
+ 'users_delete_warning' => 'Dette vil helt slette denne bruger med navnet \':userName\' fra systemet.',
+ 'users_delete_confirm' => 'Er du sikker på, at du vil slette denne bruger?',
+ 'users_delete_success' => 'Brugere blev fjernet',
+ 'users_edit' => 'Rediger bruger',
+ 'users_edit_profile' => 'Rediger profil',
+ 'users_edit_success' => 'Bruger suscesfuldt opdateret',
+ 'users_avatar' => 'Brugeravatar',
+ 'users_avatar_desc' => 'Vælg et billede for at repræsentere denne bruger. Dette skal være ca. 256px kvadratisk.',
+ 'users_preferred_language' => 'Foretrukket sprog',
+ 'users_preferred_language_desc' => 'Denne indstilling ændrer det sprog, der bruges til applikationens brugergrænseflade. Dette påvirker ikke noget brugeroprettet indhold.',
+ 'users_social_accounts' => 'Sociale konti',
+ 'users_social_accounts_info' => 'Her kan du forbinde dine andre konti for hurtigere og lettere login. Afbrydelse af en konto her tilbagekalder ikke tidligere autoriseret adgang. Tilbagekald adgang fra dine profilindstillinger på den tilsluttede sociale konto.',
+ 'users_social_connect' => 'Forbind konto',
+ 'users_social_disconnect' => 'Frakobl konto',
'users_social_connected' => ':socialAccount kontoen blev knyttet til din profil.',
'users_social_disconnected' => ':socialAccount kontoen blev afbrudt fra din profil.',
'users_api_tokens' => 'API Tokens',
- 'users_api_tokens_none' => 'No API tokens have been created for this user',
- 'users_api_tokens_create' => 'Create Token',
- 'users_api_tokens_expires' => 'Expires',
- 'users_api_tokens_docs' => 'API Documentation',
+ 'users_api_tokens_none' => 'Ingen API tokens er blevet oprettet for denne bruger',
+ 'users_api_tokens_create' => 'Opret Token',
+ 'users_api_tokens_expires' => 'Udløber',
+ 'users_api_tokens_docs' => 'API-dokumentation',
// API Tokens
- 'user_api_token_create' => 'Create API Token',
- 'user_api_token_name' => 'Name',
- 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
- 'user_api_token_expiry' => 'Expiry Date',
- 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
- 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
- 'user_api_token_create_success' => 'API token successfully created',
- 'user_api_token_update_success' => 'API token successfully updated',
+ 'user_api_token_create' => 'Opret API-token',
+ 'user_api_token_name' => 'Navn',
+ 'user_api_token_name_desc' => 'Giv din token et læsbart navn som en fremtidig påmindelse om dets tilsigtede formål.',
+ 'user_api_token_expiry' => 'Udløbsdato',
+ 'user_api_token_expiry_desc' => 'Indstil en dato, hvorpå denne token udløber. Efter denne dato fungerer anmodninger, der er lavet med denne token, ikke længere. Hvis du lader dette felt være tomt, udløber den 100 år ud i fremtiden.',
+ 'user_api_token_create_secret_message' => 'Umiddelbart efter oprettelse af denne token genereres og vises et "Token-ID" og Token hemmelighed". Hemmeligheden vises kun en gang, så husk at kopiere værdien til et sikkert sted inden du fortsætter.',
+ 'user_api_token_create_success' => 'API token succesfuldt oprettet',
+ 'user_api_token_update_success' => 'API token succesfuldt opdateret',
'user_api_token' => 'API Token',
- 'user_api_token_id' => 'Token ID',
- 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
- 'user_api_token_secret' => 'Token Secret',
- 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
- 'user_api_token_created' => 'Token Created :timeAgo',
- 'user_api_token_updated' => 'Token Updated :timeAgo',
- 'user_api_token_delete' => 'Delete Token',
- 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
- 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
- 'user_api_token_delete_success' => 'API token successfully deleted',
+ 'user_api_token_id' => 'Token-ID',
+ 'user_api_token_id_desc' => 'Dette er en ikke-redigerbar systemgenereret identifikator for denne token, som skal sendes i API-anmodninger.',
+ 'user_api_token_secret' => 'Token hemmelighed',
+ 'user_api_token_secret_desc' => 'Dette er et system genereret hemmelighed for denne token, som skal sendes i API-anmodninger. Dette vises kun denne ene gang, så kopier denne værdi til et sikkert sted.',
+ 'user_api_token_created' => 'Token oprettet :timeAgo',
+ 'user_api_token_updated' => 'Token opdateret :timeAgo',
+ 'user_api_token_delete' => 'Slet Token',
+ 'user_api_token_delete_warning' => 'Dette vil helt slette API-token\'en med navnet \':tokenName\' fra systemet.',
+ 'user_api_token_delete_confirm' => 'Er du sikker på, at du vil slette denne API-token?',
+ 'user_api_token_delete_success' => 'API-token slettet',
//! If editing translations files directly please ignore this in all
//! languages apart from en. Content will be auto-copied from en.
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
--- /dev/null
+<?php
+/**
+ * Validation Lines
+ * The following language lines contain the default error messages used by
+ * the validator class. Some of these rules have multiple versions such
+ * as the size rules. Feel free to tweak each of these messages here.
+ */
+return [
+
+ // Standard laravel validation lines
+ 'accepted' => ':attribute skal være accepteret.',
+ 'active_url' => ':attribute er ikke en gyldig URL.',
+ 'after' => ':attribute skal være en dato efter :date.',
+ 'alpha' => ':attribute må kun indeholde bogstaver.',
+ 'alpha_dash' => ':attribute må kun bestå af bogstaver, tal, binde- og under-streger.',
+ 'alpha_num' => ':attribute må kun indeholde bogstaver og tal.',
+ 'array' => ':attribute skal være et array.',
+ 'before' => ':attribute skal være en dato før :date.',
+ 'between' => [
+ 'numeric' => ':attribute skal være mellem :min og :max.',
+ 'file' => ':attribute skal være mellem :min og :max kilobytes.',
+ 'string' => ':attribute skal være mellem :min og :max tegn.',
+ 'array' => ':attribute skal have mellem :min og :max elementer.',
+ ],
+ 'boolean' => ':attribute-feltet skal være enten sandt eller falsk.',
+ 'confirmed' => ':attribute-bekræftelsen matcher ikke.',
+ 'date' => ':attribute er ikke en gyldig dato.',
+ 'date_format' => ':attribute matcher ikke formatet :format.',
+ 'different' => ':attribute og :other skal være forskellige.',
+ 'digits' => ':attribute skal være :digits cifre.',
+ 'digits_between' => ':attribute skal være mellem :min og :max cifre.',
+ 'email' => ':attribute skal være en gyldig mail-adresse.',
+ 'ends_with' => ':attribute skal slutte på en af følgende værdier: :values',
+ 'filled' => ':attribute er obligatorisk.',
+ 'gt' => [
+ 'numeric' => ':attribute skal være større end :value.',
+ 'file' => ':attribute skal være større end :value kilobytes.',
+ 'string' => ':attribute skal have mere end :value tegn.',
+ 'array' => ':attribute skal indeholde mere end :value elementer.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute skal mindst være :value.',
+ 'file' => ':attribute skal være mindst :value kilobytes.',
+ 'string' => ':attribute skal indeholde mindst :value tegn.',
+ 'array' => ':attribute skal have :value elementer eller flere.',
+ ],
+ 'exists' => 'Den valgte :attribute er ikke gyldig.',
+ 'image' => ':attribute skal være et billede.',
+ 'image_extension' => ':attribute skal være et gyldigt og understøttet billedformat.',
+ 'in' => 'Den valgte :attribute er ikke gyldig.',
+ 'integer' => ':attribute skal være et heltal.',
+ 'ip' => ':attribute skal være en gyldig IP-adresse.',
+ 'ipv4' => ':attribute skal være en gyldig IPv4-adresse.',
+ 'ipv6' => ':attribute skal være en gyldig IPv6-adresse.',
+ 'json' => ':attribute skal være en gyldig JSON-streng.',
+ 'lt' => [
+ 'numeric' => ':attribute skal være mindre end :value.',
+ 'file' => ':attribute skal være mindre end :value kilobytes.',
+ 'string' => ':attribute skal have mindre end :value tegn.',
+ 'array' => ':attribute skal indeholde mindre end :value elementer.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute skal være mindre end eller lig med :value.',
+ 'file' => 'The :attribute skal være mindre eller lig med :value kilobytes.',
+ 'string' => ':attribute skal maks være :value tegn.',
+ 'array' => ':attribute må ikke indeholde mere end :value elementer.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute må ikke overstige :max.',
+ 'file' => ':attribute må ikke overstige :max kilobytes.',
+ 'string' => ':attribute må ikke overstige :max. tegn.',
+ 'array' => ':attribute må ikke have mere end :max elementer.',
+ ],
+ 'mimes' => ':attribute skal være en fil af typen: :values.',
+ 'min' => [
+ 'numeric' => ':attribute skal mindst være :min.',
+ 'file' => ':attribute skal være mindst :min kilobytes.',
+ 'string' => ':attribute skal mindst være :min tegn.',
+ 'array' => ':attribute skal have mindst :min elementer.',
+ ],
+ 'no_double_extension' => ':attribute må kun indeholde én filtype.',
+ 'not_in' => 'Den valgte :attribute er ikke gyldig.',
+ 'not_regex' => ':attribute-formatet er ugyldigt.',
+ 'numeric' => ':attribute skal være et tal.',
+ 'regex' => ':attribute-formatet er ugyldigt.',
+ 'required' => ':attribute er obligatorisk.',
+ 'required_if' => ':attribute skal udfyldes når :other er :value.',
+ 'required_with' => ':attribute skal udfyldes når :values er udfyldt.',
+ 'required_with_all' => ':attribute skal udfyldes når :values er udfyldt.',
+ 'required_without' => ':attribute skal udfyldes når :values ikke er udfyldt.',
+ 'required_without_all' => ':attribute skal udfyldes når ingen af :values er udfyldt.',
+ 'same' => ':attribute og :other skal være ens.',
+ 'size' => [
+ 'numeric' => ':attribute skal være :size.',
+ 'file' => ':attribute skal være :size kilobytes.',
+ 'string' => ':attribute skal være :size tegn.',
+ 'array' => ':attribute skal indeholde :size elementer.',
+ ],
+ 'string' => ':attribute skal være tekst.',
+ 'timezone' => ':attribute skal være en gyldig zone.',
+ 'unique' => ':attribute er allerede i brug.',
+ 'url' => ':attribute-formatet er ugyldigt.',
+ 'uploaded' => 'Filen kunne ikke oploades. Serveren accepterer muligvis ikke filer af denne størrelse.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Adgangskodebekræftelse påkrævet',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
'reset_password' => 'Passwort vergessen',
'reset_password_send_instructions' => 'Bitte geben Sie Ihre E-Mail-Adresse ein. Danach erhalten Sie eine E-Mail mit einem Link zum Zurücksetzen Ihres Passwortes.',
'reset_password_send_button' => 'Passwort zurücksetzen',
- 'reset_password_sent_success' => 'Eine E-Mail mit dem Link zum Zurücksetzen Ihres Passwortes wurde an :email gesendet.',
+ 'reset_password_sent' => 'Ein Link zum Zurücksetzen des Passworts wird an :email gesendet, wenn diese E-Mail-Adresse im System gefunden wird.',
'reset_password_success' => 'Ihr Passwort wurde erfolgreich zurückgesetzt.',
'email_reset_subject' => 'Passwort zurücksetzen für :appName',
'email_reset_text' => 'Sie erhalten diese E-Mail, weil jemand versucht hat, Ihr Passwort zurückzusetzen.',
'profile_menu' => 'Profilmenü',
'view_profile' => 'Profil ansehen',
'edit_profile' => 'Profil bearbeiten',
+ 'dark_mode' => 'Dunkler Modus',
+ 'light_mode' => 'Heller Modus',
// Layout tabs
'tab_info' => 'Info',
// Error pages
'404_page_not_found' => 'Seite nicht gefunden',
'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Sie angefordert haben, wurde nicht gefunden.',
+ 'sorry_page_not_found_permission_warning' => 'Wenn Sie erwartet haben, dass diese Seite existiert, haben Sie möglicherweise nicht die Berechtigung, sie anzuzeigen.',
'return_home' => 'Zurück zur Startseite',
'error_occurred' => 'Es ist ein Fehler aufgetreten',
'app_down' => ':appName befindet sich aktuell im Wartungsmodus.',
'api_user_no_api_permission' => 'Der Besitzer des verwendeten API-Token hat keine Berechtigung für API-Aufrufe',
'api_user_token_expired' => 'Das verwendete Autorisierungs-Token ist abgelaufen',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Fehler beim Senden einer Test E-Mail:',
+
];
'password' => 'Passwörter müssen aus mindestens sechs Zeichen bestehen und mit der eingegebenen Wiederholung übereinstimmen.',
'user' => "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.",
- 'token' => 'Dieser Link zum Zurücksetzen des Passwortes ist ungültig!',
+ 'token' => 'Der Link zum Zurücksetzen Ihres Passworts ist entweder ungültig oder abgelaufen.',
'sent' => 'Der Link zum Zurücksetzen Ihres Passwortes wurde Ihnen per E-Mail zugesendet.',
'reset' => 'Ihr Passwort wurde zurückgesetzt!',
'reg_enable_toggle' => 'Registrierung erlauben',
'reg_enable_desc' => 'Wenn die Registrierung erlaubt ist, kann sich der Benutzer als Anwendungsbenutzer anmelden. Bei der Registrierung erhält er eine einzige, voreingestellte Benutzerrolle.',
'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_external_warning' => 'Die obige Option wird ignoriert, während eine externe LDAP oder SAML Authentifizierung aktiv ist. Benutzerkonten für nicht existierende Mitglieder werden automatisch erzeugt, wenn die Authentifizierung gegen das verwendete externe System erfolgreich ist.',
'reg_email_confirmation' => 'Bestätigung per E-Mail',
'reg_email_confirmation_toggle' => 'Bestätigung per E-Mail erforderlich',
'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.',
'users_send_invite_text' => 'Sie können diesem Benutzer eine Einladungs-E-Mail senden, die es ihm erlaubt, sein eigenes Passwort zu setzen, andernfalls können Sie sein Passwort selbst setzen.',
'users_send_invite_option' => 'Benutzer-Einladungs-E-Mail senden',
'users_external_auth_id' => 'Externe Authentifizierungs-ID',
- 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
+ 'users_external_auth_id_desc' => 'Dies ist die ID, mit der dieser Benutzer bei der Kommunikation mit Ihrem externen Authentifizierungssystem übereinstimmt.',
'users_password_warning' => 'Füllen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort ändern möchten:',
'users_system_public' => 'Dieser Benutzer repräsentiert alle unangemeldeten Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.',
'users_delete' => 'Benutzer löschen',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dänisch',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'Hebräisch',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'username' => 'Benutzername',
'email' => 'E-Mail',
'password' => 'Passwort',
- 'password_confirm' => 'Passwort bestätigen',
+ 'password_confirm' => 'Passwort bestätigen',
'password_hint' => 'Mindestlänge: 7 Zeichen',
'forgot_password' => 'Passwort vergessen?',
'remember_me' => 'Angemeldet bleiben',
'social_registration' => 'Mit Sozialem Netzwerk registrieren',
'social_registration_text' => 'Mit einer dieser Dienste registrieren oder anmelden',
- 'register_thanks' => 'Vielen Dank für Ihre Registrierung!',
+ 'register_thanks' => 'Vielen Dank für deine Registrierung!',
'register_confirm' => 'Bitte prüfe Deinen Posteingang und bestätig die Registrierung.',
'registrations_disabled' => 'Eine Registrierung ist momentan nicht möglich',
'registration_email_domain_invalid' => 'Du kannst dich mit dieser E-Mail nicht registrieren.',
- 'register_success' => 'Vielen Dank für Deine Registrierung! Die Daten sind gespeichert und Du bist angemeldet.',
+ 'register_success' => 'Vielen Dank für deine Registrierung! Du bist jetzt registriert und eingeloggt.',
// Password Reset
'reset_password' => 'Passwort vergessen',
'reset_password_send_instructions' => 'Bitte gib Deine E-Mail-Adresse ein. Danach erhältst Du eine E-Mail mit einem Link zum Zurücksetzen Deines Passwortes.',
'reset_password_send_button' => 'Passwort zurücksetzen',
- 'reset_password_sent_success' => 'Eine E-Mail mit dem Link zum Zurücksetzen Deines Passwortes wurde an :email gesendet.',
+ 'reset_password_sent' => 'Ein Link zum Zurücksetzen des Passworts wird an :email gesendet, wenn diese E-Mail-Adresse im System gefunden wird.',
'reset_password_success' => 'Dein Passwort wurde erfolgreich zurückgesetzt.',
'email_reset_subject' => 'Passwort zurücksetzen für :appName',
'email_reset_text' => 'Du erhältsts diese E-Mail, weil jemand versucht hat, Dein Passwort zurückzusetzen.',
- 'email_reset_not_requested' => 'Wenn Du das nicht warst, brauchst Du nichts weiter zu tun.',
+ 'email_reset_not_requested' => 'Wenn du das zurücksetzen des Passworts nicht angefordert hast, ist keine weitere Aktion erforderlich.',
// Email Confirmation
'email_confirm_greeting' => 'Danke, dass Du dich für :appName registrierst hast!',
'email_confirm_text' => 'Bitte bestätige Deine E-Mail-Adresse, indem Du auf die Schaltfläche klickst:',
'email_confirm_action' => 'E-Mail-Adresse bestätigen',
- 'email_confirm_send_error' => 'Leider konnte die für die Registrierung notwendige E-Mail zur Bestätigung Deine E-Mail-Adresse nicht versandt werden. Bitte kontaktiere den Systemadministrator!',
- 'email_confirm_success' => 'Deine E-Mail-Adresse wurde bestätigt!',
+ 'email_confirm_send_error' => 'Leider konnte die für die Registrierung notwendige E-Mail zur Bestätigung Deiner E-Mail-Adresse nicht versandt werden. Bitte kontaktiere den Systemadministrator!',
+ 'email_confirm_success' => 'Deine E-Mail-Adresse wurde bestätigt!',
'email_confirm_resent' => 'Bestätigungs-E-Mail wurde erneut versendet, bitte überprüfe Deinen Posteingang.',
'email_not_confirmed' => 'E-Mail-Adresse ist nicht bestätigt',
// User Invite
'user_invite_email_subject' => 'Du wurdest eingeladen :appName beizutreten!',
- 'user_invite_email_greeting' => 'Ein Konto wurde für Sie auf :appName erstellt.',
- 'user_invite_email_text' => 'Klicken Sie auf die Schaltfläche unten, um ein Passwort festzulegen und Zugriff zu erhalten:',
- 'user_invite_email_action' => 'Account-Passwort festlegen',
+ 'user_invite_email_greeting' => 'Ein Konto wurde für dich auf :appName erstellt.',
+ 'user_invite_email_text' => 'Klicke auf die Schaltfläche unten, um ein Passwort festzulegen und Zugriff zu erhalten:',
+ 'user_invite_email_action' => 'Konto-Passwort festlegen',
'user_invite_page_welcome' => 'Willkommen bei :appName!',
'user_invite_page_text' => 'Um die Anmeldung abzuschließen und Zugriff auf :appName zu bekommen muss noch ein Passwort festgelegt werden. Dieses wird in Zukunft zum Einloggen benötigt.',
- 'user_invite_page_confirm_button' => 'Passwort wiederholen',
- 'user_invite_success' => 'Passwort gesetzt, Sie haben nun Zugriff auf :appName!'
+ 'user_invite_page_confirm_button' => 'Passwort bestätigen',
+ 'user_invite_success' => 'Das Passwort wurde gesetzt, du hast nun Zugriff auf :appName!'
];
\ No newline at end of file
'profile_menu' => 'Profilmenü',
'view_profile' => 'Profil ansehen',
'edit_profile' => 'Profil bearbeiten',
+ 'dark_mode' => 'Dunkler Modus',
+ 'light_mode' => 'Heller Modus',
// Layout tabs
'tab_info' => 'Info',
'attachments_link_attached' => 'Link erfolgreich der Seite hinzugefügt',
'templates' => 'Vorlagen',
'templates_set_as_template' => 'Seite ist eine Vorlage',
- 'templates_explain_set_as_template' => 'Sie können diese Seite als Vorlage festlegen, damit deren Inhalt beim Erstellen anderer Seiten verwendet werden kann. Andere Benutzer können diese Vorlage verwenden, wenn sie die Zugriffsrechte für diese Seite haben.',
+ 'templates_explain_set_as_template' => 'Du kannst diese Seite als Vorlage festlegen, damit deren Inhalt beim Erstellen anderer Seiten verwendet werden kann. Andere Benutzer können diese Vorlage verwenden, wenn diese die Zugriffsrechte für diese Seite haben.',
'templates_replace_content' => 'Seiteninhalt ersetzen',
'templates_append_content' => 'An Seiteninhalt anhängen',
'templates_prepend_content' => 'Seiteninhalt voranstellen',
'email_confirmation_awaiting' => 'Die E-Mail-Adresse für das verwendete Konto muss bestätigt werden',
'ldap_fail_anonymous' => 'Anonymer LDAP-Zugriff ist fehlgeschlafgen',
'ldap_fail_authed' => 'LDAP-Zugriff mit DN und Passwort ist fehlgeschlagen',
- 'ldap_extension_not_installed' => 'LDAP-PHP-Erweiterung ist nicht installiert.',
- 'ldap_cannot_connect' => 'Die Verbindung zum LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf.',
+ 'ldap_extension_not_installed' => 'LDAP-PHP-Erweiterung ist nicht installiert',
+ 'ldap_cannot_connect' => 'Die Verbindung zum LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf',
'saml_already_logged_in' => 'Du bist bereits angemeldet',
'saml_user_not_registered' => 'Kein Benutzer mit ID :name registriert und die automatische Registrierung ist deaktiviert',
'saml_no_email_address' => 'Es konnte keine E-Mail-Adresse für diesen Benutzer in den vom externen Authentifizierungssystem zur Verfügung gestellten Daten gefunden werden',
'saml_invalid_response_id' => 'Die Anfrage vom externen Authentifizierungssystem wird von einem von dieser Anwendung gestarteten Prozess nicht erkannt. Das Zurückgehen nach einem Login könnte dieses Problem verursachen.',
'saml_fail_authed' => 'Anmeldung mit :system fehlgeschlagen, System konnte keine erfolgreiche Autorisierung bereitstellen',
'social_no_action_defined' => 'Es ist keine Aktion definiert',
- 'social_login_bad_response' => "Fehler bei der :socialAccount-Anmeldung: \n:error",
+ 'social_login_bad_response' => "Fehler bei :socialAccount Login: \n:error",
'social_account_in_use' => 'Dieses :socialAccount-Konto wird bereits verwendet. Bitte melde dich mit dem :socialAccount-Konto an.',
'social_account_email_in_use' => 'Die E-Mail-Adresse ":email" ist bereits registriert. Wenn Du bereits registriert bist, kannst Du Dein :socialAccount-Konto in Deinen Profil-Einstellungen verknüpfen.',
'social_account_existing' => 'Dieses :socialAccount-Konto ist bereits mit Ihrem Profil verknüpft.',
// Error pages
'404_page_not_found' => 'Seite nicht gefunden',
'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Du angefordert hast, wurde nicht gefunden.',
+ 'sorry_page_not_found_permission_warning' => 'Wenn du erwartet hast, dass diese Seite existiert, hast du möglicherweise nicht die Berechtigung, sie anzuzeigen.',
'return_home' => 'Zurück zur Startseite',
'error_occurred' => 'Es ist ein Fehler aufgetreten',
'app_down' => ':appName befindet sich aktuell im Wartungsmodus.',
'api_no_authorization_found' => 'Kein Autorisierungs-Token für die Anfrage gefunden',
'api_bad_authorization_format' => 'Ein Autorisierungs-Token wurde auf die Anfrage gefunden, aber das Format schien falsch zu sein',
'api_user_token_not_found' => 'Es wurde kein passender API-Token für den angegebenen Autorisierungs-Token gefunden',
- 'api_incorrect_token_secret' => 'Das für den angegebenen API-Token angegebene Kennwort ist falsch',
+ 'api_incorrect_token_secret' => 'Das für den API-Token angegebene geheimen Token ist falsch',
'api_user_no_api_permission' => 'Der Besitzer des verwendeten API-Token hat keine Berechtigung für API-Aufrufe',
'api_user_token_expired' => 'Das verwendete Autorisierungs-Token ist abgelaufen',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Fehler beim Senden einer Test E-Mail:',
+
];
'password' => 'Passwörter müssen aus mindestens sechs Zeichen bestehen und mit der eingegebenen Wiederholung übereinstimmen.',
'user' => "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.",
- 'token' => 'Dieser Link zum Zurücksetzen des Passwortes ist ungültig!',
+ 'token' => 'Der Link zum Zurücksetzen Ihres Passworts ist entweder ungültig oder abgelaufen.',
'sent' => 'Der Link zum Zurücksetzen Ihres Passwortes wurde Ihnen per E-Mail zugesendet.',
'reset' => 'Ihr Passwort wurde zurückgesetzt!',
'app_public_access_toggle' => 'Öffentlichen Zugriff erlauben',
'app_public_viewing' => 'Öffentliche Ansicht erlauben?',
'app_secure_images' => 'Erhöhte Sicherheit für hochgeladene Bilder aktivieren?',
- 'app_secure_images_toggle' => 'Aktiviere Bild-Upload höherer Sicherheit',
+ 'app_secure_images_toggle' => 'Aktiviere Bild-Upload mit höherer Sicherheit',
'app_secure_images_desc' => 'Aus Leistungsgründen sind alle Bilder öffentlich sichtbar. Diese Option fügt zufällige, schwer zu eratene, Zeichenketten zu Bild-URLs hinzu. Stellen sie sicher, dass Verzeichnisindizes deaktiviert sind, um einen einfachen Zugriff zu verhindern.',
'app_editor' => 'Seiteneditor',
'app_editor_desc' => 'Wähle den Editor aus, der von allen Benutzern genutzt werden soll, um Seiten zu editieren.',
'reg_enable_toggle' => 'Registrierung erlauben',
'reg_enable_desc' => 'Wenn die Registrierung erlaubt ist, kann sich der Benutzer als Anwendungsbenutzer anmelden. Bei der Registrierung erhält er eine einzige, voreingestellte Benutzerrolle.',
'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_external_warning' => 'Die obige Option wird ignoriert, während eine externe LDAP oder SAML Authentifizierung aktiv ist. Benutzerkonten für nicht existierende Mitglieder werden automatisch erzeugt, wenn die Authentifizierung gegen das verwendete externe System erfolgreich ist.',
'reg_email_confirmation' => 'Bestätigung per E-Mail',
'reg_email_confirmation_toggle' => 'Bestätigung per E-Mail erforderlich',
'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.',
'maint_image_cleanup_success' => ':count eventuell unbenutze Bilder wurden gefunden und gelöscht.',
'maint_image_cleanup_nothing_found' => 'Keine unbenutzen Bilder gefunden. Nichts zu löschen!',
'maint_send_test_email' => 'Test Email versenden',
- 'maint_send_test_email_desc' => 'Dies sendet eine Test E-Mail an Ihre in Ihrem Profil angegebene E-Mail-Adresse.',
+ 'maint_send_test_email_desc' => 'Dies sendet eine Test E-Mail an die in deinem Profil angegebene E-Mail-Adresse.',
'maint_send_test_email_run' => 'Sende eine Test E-Mail',
'maint_send_test_email_success' => 'E-Mail wurde an :address gesendet',
'maint_send_test_email_mail_subject' => 'Test E-Mail',
'maint_send_test_email_mail_greeting' => 'E-Mail-Versand scheint zu funktionieren!',
- 'maint_send_test_email_mail_text' => 'Glückwunsch! Da Sie diese E-Mail Benachrichtigung erhalten haben, scheinen Ihre E-Mail-Einstellungen korrekt konfiguriert zu sein.',
+ 'maint_send_test_email_mail_text' => 'Glückwunsch! Da du diese E-Mail Benachrichtigung erhalten hast, scheinen deine E-Mail-Einstellungen korrekt konfiguriert zu sein.',
// Role Settings
'roles' => 'Rollen',
'users_role_desc' => 'Wählen Sie aus, welchen Rollen dieser Benutzer zugeordnet werden soll. Wenn ein Benutzer mehreren Rollen zugeordnet ist, werden die Berechtigungen dieser Rollen gestapelt und er erhält alle Fähigkeiten der zugewiesenen Rollen.',
'users_password' => 'Benutzerpasswort',
'users_password_desc' => 'Legen Sie ein Passwort fest, mit dem Sie sich anmelden möchten. Diese muss mindestens 5 Zeichen lang sein.',
- 'users_send_invite_text' => 'Sie können diesem Benutzer eine Einladungs-E-Mail senden, die es ihm erlaubt, sein eigenes Passwort zu setzen, andernfalls können Sie sein Passwort selbst setzen.',
+ 'users_send_invite_text' => 'Du kannst diesem Benutzer eine Einladungs-E-Mail senden, die es ihm erlaubt, sein eigenes Passwort zu setzen, andernfalls kannst du sein Passwort selbst setzen.',
'users_send_invite_option' => 'Benutzer-Einladungs-E-Mail senden',
'users_external_auth_id' => 'Externe Authentifizierungs-ID',
- 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
+ 'users_external_auth_id_desc' => 'Dies ist die ID, die verwendet wird, um diesen Benutzer bei der Kommunikation mit deinem externen Authentifizierungssystem abzugleichen.',
'users_password_warning' => 'Fülle die folgenden Felder nur aus, wenn Du Dein Passwort ändern möchtest:',
'users_system_public' => 'Dieser Benutzer repräsentiert alle unangemeldeten Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.',
'users_delete' => 'Benutzer löschen',
// API Tokens
'user_api_token_create' => 'Neuen API-Token erstellen',
'user_api_token_name' => 'Name',
- 'user_api_token_name_desc' => 'Geben Sie Ihrem Token einen aussagekräftigen Namen als spätere Erinnerung an seinen Verwendungszweck.',
+ 'user_api_token_name_desc' => 'Gebe deinem Token einen aussagekräftigen Namen als spätere Erinnerung an seinen Verwendungszweck.',
'user_api_token_expiry' => 'Ablaufdatum',
- 'user_api_token_expiry_desc' => 'Legen Sie ein Datum fest, an dem dieser Token abläuft. Nach diesem Datum funktionieren Anfragen, die mit diesem Token gestellt werden, nicht mehr. Wenn Sie dieses Feld leer lassen, wird ein Ablaufdatum von 100 Jahren in der Zukunft festgelegt.',
- 'user_api_token_create_secret_message' => 'Unmittelbar nach der Erstellung dieses Tokens wird eine "Token ID" & ein "Token Kennwort" generiert und angezeigt. Das Kennwort wird nur ein einziges Mal angezeigt. Stellen Sie also sicher, dass Sie den Inhalt an einen sicheren Ort kopieren, bevor Sie fortfahren.',
+ 'user_api_token_expiry_desc' => 'Lege ein Datum fest, an dem dieser Token abläuft. Nach diesem Datum funktionieren Anfragen, die mit diesem Token gestellt werden, nicht mehr. Wenn du dieses Feld leer lässt, wird ein Ablaufdatum von 100 Jahren in der Zukunft festgelegt.',
+ 'user_api_token_create_secret_message' => 'Unmittelbar nach der Erstellung dieses Tokens wird eine "Token ID" & ein "Token Kennwort" generiert und angezeigt. Das Kennwort wird nur ein einziges Mal angezeigt. Stelle also sicher, dass du den Inhalt an einen sicheren Ort kopierst, bevor du fortfährst.',
'user_api_token_create_success' => 'API-Token erfolgreich erstellt',
'user_api_token_update_success' => 'API-Token erfolgreich aktualisiert',
'user_api_token' => 'API-Token',
'user_api_token_id' => 'Token ID',
'user_api_token_id_desc' => 'Dies ist ein nicht editierbarer, vom System generierter Identifikator für diesen Token, welcher bei API-Anfragen angegeben werden muss.',
'user_api_token_secret' => 'Token Kennwort',
- 'user_api_token_secret_desc' => 'Dies ist ein systemgeneriertes Kennwort für diesen Token, das bei API-Anfragen zur Verfügung gestellt werden muss. Es wird nur dieses eine Mal angezeigt, deshalb kopieren Sie diesen Wert an einen sicheren und geschützten Ort.',
+ 'user_api_token_secret_desc' => 'Dies ist ein systemgeneriertes Kennwort für diesen Token, das bei API-Anfragen zur Verfügung gestellt werden muss. Es wird nur dieses eine Mal angezeigt, deshalb kopiere diesen an einen sicheren und geschützten Ort.',
'user_api_token_created' => 'Token erstellt :timeAgo',
'user_api_token_updated' => 'Token aktualisiert :timeAgo',
'user_api_token_delete' => 'Lösche Token',
'user_api_token_delete_warning' => 'Dies löscht den API-Token mit dem Namen \':tokenName\' vollständig aus dem System.',
- 'user_api_token_delete_confirm' => 'Sind Sie sicher, dass Sie diesen API-Token löschen möchten?',
+ 'user_api_token_delete_confirm' => 'Bist du sicher, dass du diesen API-Token löschen möchtest?',
'user_api_token_delete_success' => 'API-Token erfolgreich gelöscht',
//! If editing translations files directly please ignore this in all
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dänisch',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'Hebräisch',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slowenisch',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'filled' => ':attribute ist erforderlich.',
'gt' => [
'numeric' => ':attribute muss größer als :value sein.',
- 'file' => ':attribute muss mindestens :value Kilobytes groß sein.',
+ 'file' => ':attribute muss mindestens größer als :value Kilobytes sein.',
'string' => ':attribute muss mehr als :value Zeichen haben.',
- 'array' => ':attribute muss mindestens :value Elemente haben.',
+ 'array' => ':attribute muss mehr als :value Elemente haben.',
],
'gte' => [
'numeric' => ':attribute muss größer-gleich :value sein.',
- 'file' => ':attribute muss mindestens :value Kilobytes groß sein.',
- 'string' => ':attribute muss mindestens :value Zeichen enthalten.',
+ 'file' => ':attribute muss größer-gleich :value Kilobytes sein.',
+ 'string' => ':attribute muss mindestens :value Zeichen haben.',
'array' => ':attribute muss :value Elemente oder mehr haben.',
],
'exists' => ':attribute ist ungültig.',
'ip' => ':attribute muss eine valide IP-Adresse sein.',
'ipv4' => ':attribute muss eine gültige IPv4 Adresse sein.',
'ipv6' => ':attribute muss eine gültige IPv6-Adresse sein.',
- 'json' => 'Das Attribut muss eine gültige JSON-Zeichenfolge sein.',
+ 'json' => ':attribute muss ein gültiger JSON-String sein.',
'lt' => [
- 'numeric' => ':attribute muss kleiner sein :value sein.',
+ 'numeric' => ':attribute muss kleiner als :value sein.',
'file' => ':attribute muss kleiner als :value Kilobytes sein.',
'string' => ':attribute muss weniger als :value Zeichen haben.',
'array' => ':attribute muss weniger als :value Elemente haben.',
'lte' => [
'numeric' => ':attribute muss kleiner oder gleich :value sein.',
'file' => ':attribute muss kleiner oder gleich :value Kilobytes sein.',
- 'string' => ':attribute darf höchstens :value Zeichen besitzen.',
+ 'string' => ':attribute muss :value oder weniger Zeichen haben.',
'array' => ':attribute darf höchstens :value Elemente haben.',
],
'max' => [
],
'no_double_extension' => ':attribute darf nur eine gültige Dateiendung',
'not_in' => ':attribute ist ungültig.',
- 'not_regex' => ':attribute ist kein valides Format.',
+ 'not_regex' => ':attribute ist kein gültiges Format.',
'numeric' => ':attribute muss eine Zahl sein.',
'regex' => ':attribute ist in einem ungültigen Format.',
'required' => ':attribute ist erforderlich.',
'reset_password' => 'Reset Password',
'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
'reset_password_send_button' => 'Send Reset Link',
- 'reset_password_sent_success' => 'A password reset link has been sent to :email.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'Your password has been successfully reset.',
'email_reset_subject' => 'Reset your :appName password',
'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
'copy' => 'Copy',
'reply' => 'Reply',
'delete' => 'Delete',
+ 'delete_confirm' => 'Confirm Deletion',
'search' => 'Search',
'search_clear' => 'Clear Search',
'reset' => 'Reset',
'profile_menu' => 'Profile Menu',
'view_profile' => 'View Profile',
'edit_profile' => 'Edit Profile',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Info',
'image_load_more' => 'Load More',
'image_image_name' => 'Image Name',
'image_delete_used' => 'This image is used in the pages below.',
- 'image_delete_confirm' => 'Click delete again to confirm you want to delete this image.',
+ 'image_delete_confirm_text' => 'Are you sure you want to delete this image?',
'image_select_image' => 'Select Image',
'image_dropzone' => 'Drop images or click here to upload',
'images_deleted' => 'Images Deleted',
'code_editor' => 'Edit Code',
'code_language' => 'Code Language',
'code_content' => 'Code Content',
+ 'code_session_history' => 'Session History',
'code_save' => 'Save Code',
];
'search_no_pages' => 'No pages matched this search',
'search_for_term' => 'Search for :term',
'search_more' => 'More Results',
- 'search_filters' => 'Search Filters',
+ 'search_advanced' => 'Advanced Search',
+ 'search_terms' => 'Search Terms',
'search_content_type' => 'Content Type',
'search_exact_matches' => 'Exact Matches',
'search_tags' => 'Tag Searches',
'attachments_upload' => 'Upload File',
'attachments_link' => 'Attach Link',
'attachments_set_link' => 'Set Link',
- 'attachments_delete_confirm' => 'Click delete again to confirm you want to delete this attachment.',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
'attachments_dropzone' => 'Drop files or click here to attach a file',
'attachments_no_files' => 'No files have been uploaded',
'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
'file_upload_timeout' => 'The file upload has timed out.',
// Attachments
- 'attachment_page_mismatch' => 'Page mismatch during attachment update',
'attachment_not_found' => 'Attachment not found',
// Pages
// Error pages
'404_page_not_found' => 'Page Not Found',
'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => 'Return to home',
'error_occurred' => 'An Error Occurred',
'app_down' => ':appName is down right now',
'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
'api_user_token_expired' => 'The authorization token used has expired',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => 'Passwords must be at least eight characters and match the confirmation.',
'user' => "We can't find a user with that e-mail address.",
- 'token' => 'This password reset token is invalid.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'We have e-mailed your password reset link!',
'reset' => 'Your password has been reset!',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
// Pages
'page_create' => 'página creada',
- 'page_create_notification' => 'Página creada exitosamente',
+ 'page_create_notification' => 'Página creada correctamente',
'page_update' => 'página actualizada',
- 'page_update_notification' => 'Página actualizada exitosamente',
- 'page_delete' => 'página borrada',
- 'page_delete_notification' => 'Página borrada exitosamente',
+ 'page_update_notification' => 'Página actualizada correctamente',
+ 'page_delete' => 'página eliminada',
+ 'page_delete_notification' => 'Página eliminada correctamente',
'page_restore' => 'página restaurada',
- 'page_restore_notification' => 'Página restaurada exitosamente',
+ 'page_restore_notification' => 'Página restaurada correctamente',
'page_move' => 'página movida',
// Chapters
'chapter_create' => 'capítulo creado',
- 'chapter_create_notification' => 'Capítulo creado exitosamente',
+ 'chapter_create_notification' => 'Capítulo creado correctamente',
'chapter_update' => 'capítulo actualizado',
- 'chapter_update_notification' => 'Capítulo actualizado exitosamente',
- 'chapter_delete' => 'capítulo borrado',
- 'chapter_delete_notification' => 'Capítulo borrado exitosamente',
+ 'chapter_update_notification' => 'Capítulo actualizado correctamente',
+ 'chapter_delete' => 'capítulo eliminado',
+ 'chapter_delete_notification' => 'Capítulo eliminado correctamente',
'chapter_move' => 'capítulo movido',
// Books
'book_create' => 'libro creado',
- 'book_create_notification' => 'Libro creado exitosamente',
+ 'book_create_notification' => 'Libro creado correctamente',
'book_update' => 'libro actualizado',
- 'book_update_notification' => 'Libro actualizado exitosamente',
- 'book_delete' => 'libro borrado',
- 'book_delete_notification' => 'Libro borrado exitosamente',
+ 'book_update_notification' => 'Libro actualizado correctamente',
+ 'book_delete' => 'libro eliminado',
+ 'book_delete_notification' => 'Libro eliminado correctamente',
'book_sort' => 'libro ordenado',
- 'book_sort_notification' => 'Libro reordenado exitosamente',
+ 'book_sort_notification' => 'Libro reordenado correctamente',
// Bookshelves
'bookshelf_create' => 'estante creado',
- 'bookshelf_create_notification' => 'Estante creado exitosamente',
+ 'bookshelf_create_notification' => 'Estante creado correctamente',
'bookshelf_update' => 'estante actualizado',
- 'bookshelf_update_notification' => 'Estante actualizado exitosamente',
- 'bookshelf_delete' => 'estante borrado',
- 'bookshelf_delete_notification' => 'Estante borrado exitosamente',
+ 'bookshelf_update_notification' => 'Estante actualizado correctamente',
+ 'bookshelf_delete' => 'estante eliminado',
+ 'bookshelf_delete_notification' => 'Estante eliminado correctamente',
// Other
'commented_on' => 'comentada el',
*/
return [
- 'failed' => 'Las credenciales no concuerdan con nuestros registros.',
- 'throttle' => 'Demasiados intentos fallidos de conexión. Por favor intente nuevamente en :seconds segundos.',
+ 'failed' => 'Estas credenciales no coinciden con nuestros registros.',
+ 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.',
// Login & Register
'sign_up' => 'Registrarse',
'log_in' => 'Acceder',
'log_in_with' => 'Acceder con :socialDriver',
'sign_up_with' => 'Registrarse con :socialDriver',
- 'logout' => 'Salir',
+ 'logout' => 'Cerrar sesión',
'name' => 'Nombre',
'username' => 'Usuario',
'reset_password' => 'Resetear Contraseña',
'reset_password_send_instructions' => 'Introduzca su correo electrónico a continuación y le será enviado un correo con un link para la restauración',
'reset_password_send_button' => 'Enviar Enlace de Reseteo',
- 'reset_password_sent_success' => 'Un enlace para resetear la contraseña ha sido enviado a :email.',
+ 'reset_password_sent' => 'Un enlace para cambiar la contraseña será enviado a su dirección de correo electrónico si existe en nuestro sistema.',
'reset_password_success' => 'Su password ha sido reseteado de manera éxitosa.',
'email_reset_subject' => 'Resetee la contraseña de :appName',
'email_reset_text' => 'Está recibiendo este correo electrónico debido a que recibimos una solicitud de reseteo de contraseña de su cuenta.',
'profile_menu' => 'Menú de Perfil',
'view_profile' => 'Ver Perfil',
'edit_profile' => 'Editar Perfil',
+ 'dark_mode' => 'Modo Oscuro',
+ 'light_mode' => 'Modo Claro',
// Layout tabs
'tab_info' => 'Información',
// Error pages
'404_page_not_found' => 'Página no encontrada',
'sorry_page_not_found' => 'Lo sentimos, la página a la que intenta acceder no pudo ser encontrada.',
+ 'sorry_page_not_found_permission_warning' => 'Si esperaba que esta página existiera, puede que no tenga permiso para verla.',
'return_home' => 'Volver a la página de inicio',
'error_occurred' => 'Ha ocurrido un error',
'app_down' => 'La aplicación :appName se encuentra caída en este momento',
'api_user_no_api_permission' => 'El propietario del token API usado no tiene permiso para hacer llamadas API',
'api_user_token_expired' => 'El token de autorización usado ha caducado',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error al enviar un email de prueba:',
+
];
'password' => 'La contraseña debe ser como mínimo de seis caracteres y coincidir con la confirmación.',
'user' => "No podemos encontrar un usuario con esta dirección de correo electrónico.",
- 'token' => 'El token de reseteo de la contraseña es inválido.',
+ 'token' => 'El token de modificación de contraseña no es válido para esta dirección de correo electrónico.',
'sent' => '¡Hemos enviado a su cuenta de e-mail un enlace para restaurar su contraseña!',
'reset' => '¡Su contraseña ha sido restaurada!',
'reg_enable_toggle' => 'Habilitar registro',
'reg_enable_desc' => 'Cuando se habilita el registro los usuarios podrán registrarse como usuarios de la aplicación. Al registrarse se les asigna un rol único por defecto.',
'reg_default_role' => 'Rol de usuario por defecto después del registro',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_external_warning' => 'La opción anterior no se utiliza mientras la autenticación LDAP o SAML externa esté activa. Las cuentas de usuario para los miembros no existentes se crearán automáticamente si la autenticación en el sistema externo en uso es exitosa.',
'reg_email_confirmation' => 'Confirmación por Email',
'reg_email_confirmation_toggle' => 'Requerir confirmación por Email',
'reg_confirm_email_desc' => 'Si se emplea la restricción por dominio, entonces se requerirá la confirmación por correo electrónico y esta opción será ignorada.',
'reg_confirm_restrict_domain' => 'Restricción de Dominio',
- 'reg_confirm_restrict_domain_desc' => 'Introduzca una lista separada por comas de los dominio a los que les gustaría restringir el registro de usuarios. A los usuarios les será enviado un correo electrónico para confirmar la dirección antes de que se le permita interactuar con la aplicación. <br> Tenga en cuenta que los usuarios podrán cambiar sus direcciones de correo electrónico después de registrarse exitosamente.',
+ 'reg_confirm_restrict_domain_desc' => 'Introduzca una lista separada por comas de los dominios para cuentas de correo a los que se les permitirá el registro de usuarios. A los usuarios les será enviado un correo electrónico para confirmar la dirección antes de que se le permita interactuar con la aplicación. <br> Tenga en cuenta que los usuarios podrán cambiar sus direcciones de correo electrónico después de registrarse exitosamente.',
'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida',
// Maintenance settings
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Danés',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'reset_password' => 'Restablecer la contraseña',
'reset_password_send_instructions' => 'Introduzca su correo electrónico a continuación y se le enviará un correo electrónico con un enlace para la restauración',
'reset_password_send_button' => 'Enviar enlace de restauración',
- 'reset_password_sent_success' => 'Se envió un enlace para restablecer la contraseña a :email.',
+ 'reset_password_sent' => 'Un enlace para cambiar la contraseña será enviado a su dirección de correo electrónico si existe en nuestro sistema.',
'reset_password_success' => 'Su contraseña se restableció con éxito.',
'email_reset_subject' => 'Restauración de la contraseña de para la aplicación :appName',
'email_reset_text' => 'Ud. esta recibiendo este correo electrónico debido a que recibimos una solicitud de restauración de la contraseña de su cuenta.',
'profile_menu' => 'Menu del Perfil',
'view_profile' => 'Ver Perfil',
'edit_profile' => 'Editar Perfil',
+ 'dark_mode' => 'Modo Oscuro',
+ 'light_mode' => 'Modo Claro',
// Layout tabs
'tab_info' => 'Información',
// Error pages
'404_page_not_found' => 'Página no encontrada',
'sorry_page_not_found' => 'Lo sentimos, la página que intenta acceder no pudo ser encontrada.',
+ 'sorry_page_not_found_permission_warning' => 'Si esperaba que esta página existiera, puede que no tenga permiso para verla.',
'return_home' => 'Volver al home',
'error_occurred' => 'Ha ocurrido un error',
'app_down' => 'La aplicación :appName se encuentra caída en este momento',
'api_user_no_api_permission' => 'El propietario del token API usado no tiene permiso para hacer llamadas API',
'api_user_token_expired' => 'El token de autorización usado ha caducado',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error al enviar un email de prueba:',
+
];
'password' => 'La contraseña debe ser como mínimo de seis caracteres y coincidir con la confirmación.',
'user' => "No podemos encontrar un usuario con esta dirección de correo electrónico.",
- 'token' => 'Este token de restablecimiento de contraseña no es válido.',
+ 'token' => 'El token de modificación de contraseña no es válido para esta dirección de correo electrónico.',
'sent' => '¡Hemos enviado a su cuenta de correo electrónico un enlace para restaurar su contraseña!',
'reset' => '¡Su contraseña fue restaurada!',
'reg_enable_toggle' => 'Habilitar registro',
'reg_enable_desc' => 'Cuando se habilita el registro, el usuario podrá crear su usuario en la aplicación. Con el regsitro, se le otorga un rol de usuario único y por defecto.',
'reg_default_role' => 'Rol de usuario por defecto despúes del registro',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_external_warning' => 'La opción anterior no se utiliza mientras la autenticación LDAP o SAML externa esté activa. Las cuentas de usuario para los miembros no existentes se crearán automáticamente si la autenticación en el sistema externo en uso es exitosa.',
'reg_email_confirmation' => 'Confirmación de correo electrónico',
'reg_email_confirmation_toggle' => 'Requerir confirmación de correo electrónico',
'reg_confirm_email_desc' => 'Si se utiliza la restricción por dominio, entonces se requerirá la confirmación por correo electrónico y se ignorará el valor a continuación.',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Danés',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
--- /dev/null
+<?php
+/**
+ * Activity text strings.
+ * Is used for all the text within activity logs & notifications.
+ */
+return [
+
+ // Pages
+ 'page_create' => 'created page',
+ 'page_create_notification' => 'Page Successfully Created',
+ 'page_update' => 'updated page',
+ 'page_update_notification' => 'Page Successfully Updated',
+ 'page_delete' => 'deleted page',
+ 'page_delete_notification' => 'Page Successfully Deleted',
+ 'page_restore' => 'restored page',
+ 'page_restore_notification' => 'Page Successfully Restored',
+ 'page_move' => 'moved page',
+
+ // Chapters
+ 'chapter_create' => 'created chapter',
+ 'chapter_create_notification' => 'Chapter Successfully Created',
+ 'chapter_update' => 'updated chapter',
+ 'chapter_update_notification' => 'Chapter Successfully Updated',
+ 'chapter_delete' => 'deleted chapter',
+ 'chapter_delete_notification' => 'Chapter Successfully Deleted',
+ 'chapter_move' => 'moved chapter',
+
+ // Books
+ 'book_create' => 'created book',
+ 'book_create_notification' => 'Book Successfully Created',
+ 'book_update' => 'updated book',
+ 'book_update_notification' => 'Book Successfully Updated',
+ 'book_delete' => 'deleted book',
+ 'book_delete_notification' => 'Book Successfully Deleted',
+ 'book_sort' => 'sorted book',
+ 'book_sort_notification' => 'Book Successfully Re-sorted',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created Bookshelf',
+ 'bookshelf_create_notification' => 'Bookshelf Successfully Created',
+ 'bookshelf_update' => 'updated bookshelf',
+ 'bookshelf_update_notification' => 'Bookshelf Successfully Updated',
+ 'bookshelf_delete' => 'deleted bookshelf',
+ 'bookshelf_delete_notification' => 'Bookshelf Successfully Deleted',
+
+ // Other
+ 'commented_on' => 'commented on',
+];
--- /dev/null
+<?php
+/**
+ * Authentication Language Lines
+ * The following language lines are used during authentication for various
+ * messages that we need to display to the user.
+ */
+return [
+
+ 'failed' => 'These credentials do not match our records.',
+ 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+
+ // Login & Register
+ 'sign_up' => 'Sign up',
+ 'log_in' => 'Log in',
+ 'log_in_with' => 'Login with :socialDriver',
+ 'sign_up_with' => 'Sign up with :socialDriver',
+ 'logout' => 'Logout',
+
+ 'name' => 'Name',
+ 'username' => 'Username',
+ 'email' => 'Email',
+ 'password' => 'Password',
+ 'password_confirm' => 'Confirm Password',
+ 'password_hint' => 'Must be over 7 characters',
+ 'forgot_password' => 'Forgot Password?',
+ 'remember_me' => 'Remember Me',
+ 'ldap_email_hint' => 'Please enter an email to use for this account.',
+ 'create_account' => 'Create Account',
+ 'already_have_account' => 'Already have an account?',
+ 'dont_have_account' => 'Don\'t have an account?',
+ 'social_login' => 'Social Login',
+ 'social_registration' => 'Social Registration',
+ 'social_registration_text' => 'Register and sign in using another service.',
+
+ 'register_thanks' => 'Thanks for registering!',
+ 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.',
+ 'registrations_disabled' => 'Registrations are currently disabled',
+ 'registration_email_domain_invalid' => 'That email domain does not have access to this application',
+ 'register_success' => 'Thanks for signing up! You are now registered and signed in.',
+
+
+ // Password Reset
+ 'reset_password' => 'Reset Password',
+ 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
+ 'reset_password_send_button' => 'Send Reset Link',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Your password has been successfully reset.',
+ 'email_reset_subject' => 'Reset your :appName password',
+ 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
+ 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.',
+
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirm your email on :appName',
+ 'email_confirm_greeting' => 'Thanks for joining :appName!',
+ 'email_confirm_text' => 'Please confirm your email address by clicking the button below:',
+ 'email_confirm_action' => 'Confirm Email',
+ 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.',
+ 'email_confirm_success' => 'Your email has been confirmed!',
+ 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.',
+
+ 'email_not_confirmed' => 'Email Address Not Confirmed',
+ 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
+ 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
+ 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
+ 'email_not_confirmed_resend_button' => 'Resend Confirmation Email',
+
+ // User Invite
+ 'user_invite_email_subject' => 'You have been invited to join :appName!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Set Account Password',
+ 'user_invite_page_welcome' => 'Welcome to :appName!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Confirm Password',
+ 'user_invite_success' => 'Password set, you now have access to :appName!'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Common elements found throughout many areas of BookStack.
+ */
+return [
+
+ // Buttons
+ 'cancel' => 'Cancel',
+ 'confirm' => 'Confirm',
+ 'back' => 'Back',
+ 'save' => 'Save',
+ 'continue' => 'Continue',
+ 'select' => 'Select',
+ 'toggle_all' => 'Toggle All',
+ 'more' => 'More',
+
+ // Form Labels
+ 'name' => 'Name',
+ 'description' => 'Description',
+ 'role' => 'Role',
+ 'cover_image' => 'Cover image',
+ 'cover_image_description' => 'This image should be approx 440x250px.',
+
+ // Actions
+ 'actions' => 'Actions',
+ 'view' => 'View',
+ 'view_all' => 'View All',
+ 'create' => 'Create',
+ 'update' => 'Update',
+ 'edit' => 'Edit',
+ 'sort' => 'Sort',
+ 'move' => 'Move',
+ 'copy' => 'Copy',
+ 'reply' => 'Reply',
+ 'delete' => 'Delete',
+ 'search' => 'Search',
+ 'search_clear' => 'Clear Search',
+ 'reset' => 'Reset',
+ 'remove' => 'Remove',
+ 'add' => 'Add',
+ 'fullscreen' => 'Fullscreen',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'Name',
+ 'sort_created_at' => 'Created Date',
+ 'sort_updated_at' => 'Updated Date',
+
+ // Misc
+ 'deleted_user' => 'Deleted User',
+ 'no_activity' => 'No activity to show',
+ 'no_items' => 'No items available',
+ 'back_to_top' => 'Back to top',
+ 'toggle_details' => 'Toggle Details',
+ 'toggle_thumbnails' => 'Toggle Thumbnails',
+ 'details' => 'Details',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'List View',
+ 'default' => 'Default',
+ 'breadcrumb' => 'Breadcrumb',
+
+ // Header
+ 'profile_menu' => 'Profile Menu',
+ 'view_profile' => 'View Profile',
+ 'edit_profile' => 'Edit Profile',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_content' => 'Content',
+
+ // Email Content
+ 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
+ 'email_rights' => 'All rights reserved',
+];
--- /dev/null
+<?php
+/**
+ * Text used in custom JavaScript driven components.
+ */
+return [
+
+ // Image Manager
+ 'image_select' => 'Image Select',
+ 'image_all' => 'All',
+ 'image_all_title' => 'View all images',
+ 'image_book_title' => 'View images uploaded to this book',
+ 'image_page_title' => 'View images uploaded to this page',
+ 'image_search_hint' => 'Search by image name',
+ 'image_uploaded' => 'Uploaded :uploadedDate',
+ 'image_load_more' => 'Load More',
+ 'image_image_name' => 'Image Name',
+ 'image_delete_used' => 'This image is used in the pages below.',
+ 'image_delete_confirm' => 'Click delete again to confirm you want to delete this image.',
+ 'image_select_image' => 'Select Image',
+ 'image_dropzone' => 'Drop images or click here to upload',
+ 'images_deleted' => 'Images Deleted',
+ 'image_preview' => 'Image Preview',
+ 'image_upload_success' => 'Image uploaded successfully',
+ 'image_update_success' => 'Image details successfully updated',
+ 'image_delete_success' => 'Image successfully deleted',
+ 'image_upload_remove' => 'Remove',
+
+ // Code Editor
+ 'code_editor' => 'Edit Code',
+ 'code_language' => 'Code Language',
+ 'code_content' => 'Code Content',
+ 'code_save' => 'Save Code',
+];
--- /dev/null
+<?php
+/**
+ * Text used for 'Entities' (Document Structure Elements) such as
+ * Books, Shelves, Chapters & Pages
+ */
+return [
+
+ // Shared
+ 'recently_created' => 'Recently Created',
+ 'recently_created_pages' => 'Recently Created Pages',
+ 'recently_updated_pages' => 'Recently Updated Pages',
+ 'recently_created_chapters' => 'Recently Created Chapters',
+ 'recently_created_books' => 'Recently Created Books',
+ 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_update' => 'Recently Updated',
+ 'recently_viewed' => 'Recently Viewed',
+ 'recent_activity' => 'Recent Activity',
+ 'create_now' => 'Create one now',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Created :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Updated :timeLength',
+ 'meta_updated_name' => 'Updated :timeLength by :user',
+ 'entity_select' => 'Entity Select',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'My Recent Drafts',
+ 'my_recently_viewed' => 'My Recently Viewed',
+ 'no_pages_viewed' => 'You have not viewed any pages',
+ 'no_pages_recently_created' => 'No pages have been recently created',
+ 'no_pages_recently_updated' => 'No pages have been recently updated',
+ 'export' => 'Export',
+ 'export_html' => 'Contained Web File',
+ 'export_pdf' => 'PDF File',
+ 'export_text' => 'Plain Text File',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissions',
+ 'permissions_intro' => 'Once enabled, These permissions will take priority over any set role permissions.',
+ 'permissions_enable' => 'Enable Custom Permissions',
+ 'permissions_save' => 'Save Permissions',
+
+ // Search
+ 'search_results' => 'Search Results',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Clear Search',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_filters' => 'Search Filters',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Shelves',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_long' => 'Bookshelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books here to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Bookshelf :name',
+ 'shelves_edit' => 'Edit Bookshelf',
+ 'shelves_delete' => 'Delete Bookshelf',
+ 'shelves_delete_named' => 'Delete Bookshelf :name',
+ 'shelves_delete_explain' => "This will delete the bookshelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this bookshelf?',
+ 'shelves_permissions' => 'Bookshelf Permissions',
+ 'shelves_permissions_updated' => 'Bookshelf Permissions Updated',
+ 'shelves_permissions_active' => 'Bookshelf Permissions Active',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this bookshelf to all books contained within. Before activating, ensure any changes to the permissions of this bookshelf have been saved.',
+ 'shelves_copy_permission_success' => 'Bookshelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages will be removed and added directly to the parent book.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapter_move_success' => 'Chapter moved to :bookName',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_move_success' => 'Page moved to ":parentName"',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Edit Content',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded, The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ 'tags_explain' => "Add some tags to better categorise your content. \n You can assign a value to a tag for more in-depth organisation.",
+ 'tags_add' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_items' => 'Attached Items',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete_confirm' => 'Click delete again to confirm you want to delete this attachment.',
+ 'attachments_dropzone' => 'Drop files or click here to attach a file',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_count' => '{0} No Comments|{1} 1 Comment|[2,*] :count Comments',
+ 'comment_save' => 'Save Comment',
+ 'comment_saving' => 'Saving comment...',
+ 'comment_deleting' => 'Deleting comment...',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_delete_success' => 'Revision deleted',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Text shown in error messaging.
+ */
+return [
+
+ // Permissions
+ 'permission' => 'You do not have permission to access the requested page.',
+ 'permissionJson' => 'You do not have permission to perform the requested action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'file_upload_timeout' => 'The file upload has timed out.',
+
+ // Attachments
+ 'attachment_page_mismatch' => 'Page mismatch during attachment update',
+ 'attachment_not_found' => 'Attachment not found',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Bookshelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ 'return_home' => 'Return to home',
+ 'error_occurred' => 'An Error Occurred',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+];
--- /dev/null
+<?php
+/**
+ * Pagination Language Lines
+ * The following language lines are used by the paginator library to build
+ * the simple pagination links.
+ */
+return [
+
+ 'previous' => '« Previous',
+ 'next' => 'Next »',
+
+];
--- /dev/null
+<?php
+/**
+ * Password Reminder Language Lines
+ * The following language lines are the default lines which match reasons
+ * that are given by the password broker for a password update attempt has failed.
+ */
+return [
+
+ 'password' => 'Passwords must be at least eight characters and match the confirmation.',
+ 'user' => "We can't find a user with that e-mail address.",
+ 'token' => 'The password reset token is invalid for this email address.',
+ 'sent' => 'We have e-mailed your password reset link!',
+ 'reset' => 'Your password has been reset!',
+
+];
--- /dev/null
+<?php
+/**
+ * Settings text strings
+ * Contains all text strings used in the general settings sections of BookStack
+ * including users and roles.
+ */
+return [
+
+ // Common Messages
+ 'settings' => 'Settings',
+ 'settings_save' => 'Save Settings',
+ 'settings_save_success' => 'Settings saved',
+
+ // App Settings
+ 'app_customization' => 'Customization',
+ 'app_features_security' => 'Features & Security',
+ 'app_name' => 'Application Name',
+ 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
+ 'app_name_header' => 'Show name in header',
+ 'app_public_access' => 'Public Access',
+ 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
+ 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_toggle' => 'Allow public access',
+ 'app_public_viewing' => 'Allow public viewing?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_editor' => 'Page Editor',
+ 'app_editor_desc' => 'Select which editor will be used by all users to edit pages.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the <head> section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Application Logo',
+ 'app_logo_desc' => 'This image should be 43px in height. <br>Large images will be scaled down.',
+ 'app_primary_color' => 'Application Primary Color',
+ 'app_primary_color_desc' => 'Sets the primary color for the application including the banner, buttons, and links.',
+ 'app_homepage' => 'Application Homepage',
+ 'app_homepage_desc' => 'Select a view to show on the homepage instead of the default view. Page permissions are ignored for selected pages.',
+ 'app_homepage_select' => 'Select a page',
+ 'app_disable_comments' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. <br> Existing comments are not shown.',
+
+ // Color settings
+ 'content_colors' => 'Content Colors',
+ 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. <br> Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ 'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.",
+ 'maint_image_cleanup_ignore_revisions' => 'Ignore images in revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ 'maint_image_cleanup_nothing_found' => 'No unused images found, Nothing deleted!',
+ 'maint_send_test_email' => 'Send a Test Email',
+ 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.',
+ 'maint_send_test_email_run' => 'Send test email',
+ 'maint_send_test_email_success' => 'Email sent to :address',
+ 'maint_send_test_email_mail_subject' => 'Test Email',
+ 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!',
+ 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'role_create' => 'Create New Role',
+ 'role_create_success' => 'Role successfully created',
+ 'role_delete' => 'Delete Role',
+ 'role_delete_confirm' => 'This will delete the role with the name \':roleName\'.',
+ 'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.',
+ 'role_delete_no_migration' => "Don't migrate users",
+ 'role_delete_sure' => 'Are you sure you want to delete this role?',
+ 'role_delete_success' => 'Role successfully deleted',
+ 'role_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_asset' => 'Asset Permissions',
+ 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_update_success' => 'Role successfully updated',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_details' => 'User Details',
+ 'users_details_desc' => 'Set a display name and an email address for this user. The email address will be used for logging into the application.',
+ 'users_details_desc_no_email' => 'Set a display name for this user so others can recognise them.',
+ 'users_role' => 'User Roles',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 6 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
+ 'users_password_warning' => 'Only fill the below if you would like to change your password.',
+ 'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.',
+ 'users_delete' => 'Delete User',
+ 'users_delete_named' => 'Delete user :userName',
+ 'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.',
+ 'users_delete_confirm' => 'Are you sure you want to delete this user?',
+ 'users_delete_success' => 'Users successfully removed',
+ 'users_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_edit_success' => 'User successfully updated',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token_create_success' => 'API token successfully created',
+ 'user_api_token_update_success' => 'API token successfully updated',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token Created :timeAgo',
+ 'user_api_token_updated' => 'Token Updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+ 'user_api_token_delete_success' => 'API token successfully deleted',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'English',
+ 'ar' => 'العربية',
+ 'cs' => 'Česky',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ]
+ //!////////////////////////////////
+];
--- /dev/null
+<?php
+/**
+ * Validation Lines
+ * The following language lines contain the default error messages used by
+ * the validator class. Some of these rules have multiple versions such
+ * as the size rules. Feel free to tweak each of these messages here.
+ */
+return [
+
+ // Standard laravel validation lines
+ 'accepted' => '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, dashes and underscores.',
+ '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.',
+ 'ends_with' => 'The :attribute must end with one of the following: :values',
+ 'filled' => 'The :attribute field is required.',
+ 'gt' => [
+ 'numeric' => 'The :attribute must be greater than :value.',
+ 'file' => 'The :attribute must be greater than :value kilobytes.',
+ 'string' => 'The :attribute must be greater than :value characters.',
+ 'array' => 'The :attribute must have more than :value items.',
+ ],
+ 'gte' => [
+ 'numeric' => 'The :attribute must be greater than or equal :value.',
+ 'file' => 'The :attribute must be greater than or equal :value kilobytes.',
+ 'string' => 'The :attribute must be greater than or equal :value characters.',
+ 'array' => 'The :attribute must have :value items or more.',
+ ],
+ 'exists' => 'The selected :attribute is invalid.',
+ 'image' => 'The :attribute must be an image.',
+ 'image_extension' => 'The :attribute must have a valid & supported image extension.',
+ 'in' => 'The selected :attribute is invalid.',
+ 'integer' => 'The :attribute must be an integer.',
+ 'ip' => 'The :attribute must be a valid IP address.',
+ 'ipv4' => 'The :attribute must be a valid IPv4 address.',
+ 'ipv6' => 'The :attribute must be a valid IPv6 address.',
+ 'json' => 'The :attribute must be a valid JSON string.',
+ 'lt' => [
+ 'numeric' => 'The :attribute must be less than :value.',
+ 'file' => 'The :attribute must be less than :value kilobytes.',
+ 'string' => 'The :attribute must be less than :value characters.',
+ 'array' => 'The :attribute must have less than :value items.',
+ ],
+ 'lte' => [
+ 'numeric' => 'The :attribute must be less than or equal :value.',
+ 'file' => 'The :attribute must be less than or equal :value kilobytes.',
+ 'string' => 'The :attribute must be less than or equal :value characters.',
+ 'array' => 'The :attribute must not have more than :value items.',
+ ],
+ '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.',
+ ],
+ 'no_double_extension' => 'The :attribute must only have a single file extension.',
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ '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.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
'reset_password' => 'Réinitialiser le mot de passe',
'reset_password_send_instructions' => 'Entrez votre adresse e-mail ci-dessous et un e-mail avec un lien de réinitialisation de mot de passe vous sera envoyé.',
'reset_password_send_button' => 'Envoyer un lien de réinitialisation',
- 'reset_password_sent_success' => 'Un lien de réinitialisation a été envoyé à :email.',
+ 'reset_password_sent' => 'Un lien de réinitialisation du mot de passe sera envoyé à :email si cette adresse e-mail est trouvée dans le système.',
'reset_password_success' => 'Votre mot de passe a été réinitialisé avec succès.',
'email_reset_subject' => 'Réinitialisez votre mot de passe pour :appName',
'email_reset_text' => 'Vous recevez cet e-mail parce que nous avons reçu une demande de réinitialisation pour votre compte.',
'reset' => 'Réinitialiser',
'remove' => 'Enlever',
'add' => 'Ajouter',
- 'fullscreen' => 'Fullscreen',
+ 'fullscreen' => 'Plein écran',
// Sort Options
'sort_options' => 'Options de tri',
'profile_menu' => 'Menu du profil',
'view_profile' => 'Voir le profil',
'edit_profile' => 'Modifier le profil',
+ 'dark_mode' => 'Mode sombre',
+ 'light_mode' => 'Mode clair',
// Layout tabs
'tab_info' => 'Informations',
// Error pages
'404_page_not_found' => 'Page non trouvée',
'sorry_page_not_found' => 'Désolé, cette page n\'a pas pu être trouvée.',
+ 'sorry_page_not_found_permission_warning' => 'Si vous vous attendiez à ce que cette page existe, il se peut que vous n\'ayez pas l\'autorisation de la consulter.',
'return_home' => 'Retour à l\'accueil',
'error_occurred' => 'Une erreur est survenue',
'app_down' => ':appName n\'est pas en service pour le moment',
'api_no_authorization_found' => 'Aucun jeton d\'autorisation trouvé pour la demande',
'api_bad_authorization_format' => 'Un jeton d\'autorisation a été trouvé pour la requête, mais le format semble incorrect',
'api_user_token_not_found' => 'Aucun jeton API correspondant n\'a été trouvé pour le jeton d\'autorisation fourni',
- 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
- 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_incorrect_token_secret' => 'Le secret fourni pour le jeton d\'API utilisé est incorrect',
+ 'api_user_no_api_permission' => 'Le propriétaire du jeton API utilisé n\'a pas la permission de passer des appels API',
'api_user_token_expired' => 'Le jeton d\'autorisation utilisé a expiré',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Erreur émise lors de l\'envoi d\'un e-mail de test :',
+
];
'password' => 'Les mots de passe doivent faire au moins 6 caractères et correspondre à la confirmation.',
'user' => "Nous n'avons pas trouvé d'utilisateur avec cette adresse.",
- 'token' => 'Le jeton de réinitialisation est invalide.',
+ 'token' => 'Le mot de passe reset du token n\'est pas valide pour cette adresse e-mail.',
'sent' => 'Nous vous avons envoyé un lien de réinitialisation de mot de passe !',
'reset' => 'Votre mot de passe a été réinitialisé !',
'app_editor_desc' => 'Sélectionnez l\'éditeur qui sera utilisé pour modifier les pages.',
'app_custom_html' => 'HTML personnalisé dans l\'en-tête',
'app_custom_html_desc' => 'Le contenu inséré ici sera ajouté en bas de la balise <head> de toutes les pages. Vous pouvez l\'utiliser pour ajouter du CSS personnalisé ou un tracker analytique.',
- 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_custom_html_disabled_notice' => 'Le contenu de la tête HTML personnalisée est désactivé sur cette page de paramètres pour garantir que les modifications les plus récentes peuvent être annulées.',
'app_logo' => 'Logo de l\'Application',
'app_logo_desc' => 'Cette image doit faire 43px de hauteur. <br>Les images plus larges seront réduites.',
'app_primary_color' => 'Couleur principale de l\'application',
'reg_enable_toggle' => 'Activer l\'inscription',
'reg_enable_desc' => 'Lorsque l\'inscription est activée, l\'utilisateur pourra s\'enregistrer en tant qu\'utilisateur de l\'application. Lors de l\'inscription, ils se voient attribuer un rôle par défaut.',
'reg_default_role' => 'Rôle par défaut lors de l\'inscription',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_external_warning' => 'L\'option ci-dessus est ignorée lorsque l\'authentification externe LDAP ou SAML est activée. Les comptes utilisateur pour les membres non existants seront créés automatiquement si l\'authentification, par rapport au système externe utilisé, est réussie.',
'reg_email_confirmation' => 'Confirmation de l\'e-mail',
'reg_email_confirmation_toggle' => 'Obliger la confirmation par e-mail ?',
'reg_confirm_email_desc' => 'Si la restriction de domaine est activée, la confirmation sera automatiquement obligatoire et cette valeur sera ignorée.',
'users_send_invite_text' => 'Vous pouvez choisir d\'envoyer à cet utilisateur un email d\'invitation qui lui permet de définir son propre mot de passe, sinon vous pouvez définir son mot de passe vous-même.',
'users_send_invite_option' => 'Envoyer l\'e-mail d\'invitation',
'users_external_auth_id' => 'Identifiant d\'authentification externe',
- 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
+ 'users_external_auth_id_desc' => 'C\'est l\'ID utilisé pour correspondre à cet utilisateur lors de la communication avec votre système d\'authentification externe.',
'users_password_warning' => 'Remplissez ce formulaire uniquement si vous souhaitez changer de mot de passe:',
'users_system_public' => 'Cet utilisateur représente les invités visitant votre instance. Il est assigné automatiquement aux invités.',
'users_delete' => 'Supprimer un utilisateur',
// API Tokens
'user_api_token_create' => 'Créer un nouveau jeton API',
'user_api_token_name' => 'Nom',
- 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_name_desc' => 'Donnez à votre jeton un nom lisible pour l\'identifier plus tard.',
'user_api_token_expiry' => 'Date d\'expiration',
- 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
- 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token_expiry_desc' => 'Définissez une date à laquelle ce jeton expire. Après cette date, les demandes effectuées à l\'aide de ce jeton ne fonctionneront plus. Le fait de laisser ce champ vide entraînera une expiration dans 100 ans.',
+ 'user_api_token_create_secret_message' => 'Immédiatement après la création de ce jeton, un "ID de jeton" "et" Secret de jeton "sera généré et affiché. Le secret ne sera affiché qu\'une seule fois, alors assurez-vous de copier la valeur dans un endroit sûr et sécurisé avant de continuer.',
'user_api_token_create_success' => 'L\'API token a été créé avec succès',
'user_api_token_update_success' => 'L\'API token a été mis à jour avec succès',
'user_api_token' => 'Token API',
'user_api_token_id' => 'Token ID',
- 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_id_desc' => 'Il s\'agit d\'un identifiant généré par le système non modifiable pour ce jeton qui devra être fourni dans les demandes d\'API.',
'user_api_token_secret' => 'Token Secret',
- 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_secret_desc' => 'Il s\'agit d\'un secret généré par le système pour ce jeton, qui devra être fourni dans les demandes d\'API. Cela ne sera affiché qu\'une seule fois, alors copiez cette valeur dans un endroit sûr et sécurisé.',
'user_api_token_created' => 'Jeton créé :timeAgo',
'user_api_token_updated' => 'Jeton mis à jour :timeAgo',
'user_api_token_delete' => 'Supprimer le Token',
- 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_warning' => 'Cela supprimera complètement le jeton d\'API avec le nom \':tokenName\'.',
'user_api_token_delete_confirm' => 'Souhaitez-vous vraiment effacer l\'API Token ?',
'user_api_token_delete_success' => 'L\'API token a été supprimé avec succès',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Danois',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'Hébreu',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
--- /dev/null
+<?php
+/**
+ * Activity text strings.
+ * Is used for all the text within activity logs & notifications.
+ */
+return [
+
+ // Pages
+ 'page_create' => 'created page',
+ 'page_create_notification' => 'הדף נוצר בהצלחה',
+ 'page_update' => 'updated page',
+ 'page_update_notification' => 'הדף עודכן בהצלחה',
+ 'page_delete' => 'deleted page',
+ 'page_delete_notification' => 'הדף הוסר בהצלחה',
+ 'page_restore' => 'restored page',
+ 'page_restore_notification' => 'הדף שוחזר בהצלחה',
+ 'page_move' => 'moved page',
+
+ // Chapters
+ 'chapter_create' => 'created chapter',
+ 'chapter_create_notification' => 'הפרק נוצר בהצלחה',
+ 'chapter_update' => 'updated chapter',
+ 'chapter_update_notification' => 'הפרק עודכן בהצלחה',
+ 'chapter_delete' => 'deleted chapter',
+ 'chapter_delete_notification' => 'הפרק הוסר בהצלחה',
+ 'chapter_move' => 'moved chapter',
+
+ // Books
+ 'book_create' => 'created book',
+ 'book_create_notification' => 'הספר נוצר בהצלחה',
+ 'book_update' => 'updated book',
+ 'book_update_notification' => 'הספר עודכן בהצלחה',
+ 'book_delete' => 'deleted book',
+ 'book_delete_notification' => 'הספר הוסר בהצלחה',
+ 'book_sort' => 'sorted book',
+ 'book_sort_notification' => 'הספר מוין מחדש בהצלחה',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created Bookshelf',
+ 'bookshelf_create_notification' => 'מדף הספרים נוצר בהצלחה',
+ 'bookshelf_update' => 'updated bookshelf',
+ 'bookshelf_update_notification' => 'מדף הספרים עודכן בהצלחה',
+ 'bookshelf_delete' => 'deleted bookshelf',
+ 'bookshelf_delete_notification' => 'מדף הספרים הוסר בהצלחה',
+
+ // Other
+ 'commented_on' => 'commented on',
+];
--- /dev/null
+<?php
+/**
+ * Authentication Language Lines
+ * The following language lines are used during authentication for various
+ * messages that we need to display to the user.
+ */
+return [
+
+ 'failed' => 'פרטי ההתחברות אינם תואמים את הנתונים שלנו',
+ 'throttle' => 'נסיונות התחברות רבים מדי, יש להמתין :seconds שניות ולנסות שנית',
+
+ // Login & Register
+ 'sign_up' => 'הרשמה',
+ 'log_in' => 'התחבר',
+ 'log_in_with' => 'התחבר באמצעות :socialDriver',
+ 'sign_up_with' => 'הרשם באמצעות :socialDriver',
+ 'logout' => 'התנתק',
+
+ 'name' => 'שם',
+ 'username' => 'שם משתמש',
+ 'email' => 'אי-מייל',
+ 'password' => 'סיסמא',
+ 'password_confirm' => 'אימות סיסמא',
+ 'password_hint' => 'חייבת להיות יותר מ-5 תווים',
+ 'forgot_password' => 'שכחת סיסמא?',
+ 'remember_me' => 'זכור אותי',
+ 'ldap_email_hint' => 'אנא ציין כתובת אי-מייל לשימוש בחשבון זה',
+ 'create_account' => 'צור חשבון',
+ 'already_have_account' => 'יש לך כבר חשבון?',
+ 'dont_have_account' => 'אין לך חשבון?',
+ 'social_login' => 'התחברות באמצעות אתר חברתי',
+ 'social_registration' => 'הרשמה באמצעות אתר חברתי',
+ 'social_registration_text' => 'הרשם והתחבר באמצעות שירות אחר',
+
+ 'register_thanks' => 'תודה על הרשמתך!',
+ 'register_confirm' => 'יש לבדוק את תיבת המייל שלך ולאשר את ההרשמה על מנת להשתמש ב:appName',
+ 'registrations_disabled' => 'הרשמה כרגע מבוטלת',
+ 'registration_email_domain_invalid' => 'לא ניתן להרשם באמצעות המייל שסופק',
+ 'register_success' => 'תודה על הרשמתך! ניתן כעת להתחבר',
+
+
+ // Password Reset
+ 'reset_password' => 'איפוס סיסמא',
+ 'reset_password_send_instructions' => 'יש להזין את כתובת המייל למטה ואנו נשלח אלייך הוראות לאיפוס הסיסמא',
+ 'reset_password_send_button' => 'שלח קישור לאיפוס סיסמא',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'סיסמתך עודכנה בהצלחה',
+ 'email_reset_subject' => 'איפוס סיסמא ב :appName',
+ 'email_reset_text' => 'קישור זה נשלח עקב בקשה לאיפוס סיסמא בחשבון שלך',
+ 'email_reset_not_requested' => 'אם לא ביקשת לאפס את סיסמתך, אפשר להתעלם ממייל זה',
+
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'אמת אי-מייל ב :appName',
+ 'email_confirm_greeting' => 'תודה שהצטרפת אל :appName!',
+ 'email_confirm_text' => 'יש לאמת את כתובת המייל של על ידי לחיצה על הכפור למטה:',
+ 'email_confirm_action' => 'אמת כתובת אי-מייל',
+ 'email_confirm_send_error' => 'נדרש אימות אי-מייל אך שליחת האי-מייל אליך נכשלה. יש ליצור קשר עם מנהל המערכת כדי לוודא שאכן ניתן לשלוח מיילים.',
+ 'email_confirm_success' => 'האי-מייל שלך אושר!',
+ 'email_confirm_resent' => 'אימות נשלח לאי-מייל שלך, יש לבדוק בתיבת הדואר הנכנס',
+
+ 'email_not_confirmed' => 'כתובת המייל לא אומתה',
+ 'email_not_confirmed_text' => 'כתובת המייל שלך טרם אומתה',
+ 'email_not_confirmed_click_link' => 'יש ללחוץ על הקישור אשר נשלח אליך לאחר ההרשמה',
+ 'email_not_confirmed_resend' => 'אם אינך מוצא את המייל, ניתן לשלוח בשנית את האימות על ידי לחיצה על הכפתור למטה',
+ 'email_not_confirmed_resend_button' => 'שלח שוב מייל אימות',
+
+ // User Invite
+ 'user_invite_email_subject' => 'You have been invited to join :appName!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Set Account Password',
+ 'user_invite_page_welcome' => 'Welcome to :appName!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Confirm Password',
+ 'user_invite_success' => 'Password set, you now have access to :appName!'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Common elements found throughout many areas of BookStack.
+ */
+return [
+
+ // Buttons
+ 'cancel' => 'ביטול',
+ 'confirm' => 'אישור',
+ 'back' => 'אחורה',
+ 'save' => 'שמור',
+ 'continue' => 'המשך',
+ 'select' => 'בחר',
+ 'toggle_all' => 'סמן הכל',
+ 'more' => 'עוד',
+
+ // Form Labels
+ 'name' => 'שם',
+ 'description' => 'תיאור',
+ 'role' => 'תפקיד',
+ 'cover_image' => 'תמונת נושא',
+ 'cover_image_description' => 'התמונה צריכה להיות בסביבות 440x250px',
+
+ // Actions
+ 'actions' => 'פעולות',
+ 'view' => 'הצג',
+ 'view_all' => 'הצג הכל',
+ 'create' => 'צור',
+ 'update' => 'עדכן',
+ 'edit' => 'ערוך',
+ 'sort' => 'מיין',
+ 'move' => 'הזז',
+ 'copy' => 'העתק',
+ 'reply' => 'השב',
+ 'delete' => 'מחק',
+ 'search' => 'חיפוש',
+ 'search_clear' => 'נקה חיפוש',
+ 'reset' => 'איפוס',
+ 'remove' => 'הסר',
+ 'add' => 'הוסף',
+ 'fullscreen' => 'Fullscreen',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'שם',
+ 'sort_created_at' => 'תאריך יצירה',
+ 'sort_updated_at' => 'תאריך עדכון',
+
+ // Misc
+ 'deleted_user' => 'משתמש שנמחק',
+ 'no_activity' => 'אין פעילות להציג',
+ 'no_items' => 'אין פריטים זמינים',
+ 'back_to_top' => 'בחזרה ללמעלה',
+ 'toggle_details' => 'הצג/הסתר פרטים',
+ 'toggle_thumbnails' => 'הצג/הסתר תמונות',
+ 'details' => 'פרטים',
+ 'grid_view' => 'תצוגת רשת',
+ 'list_view' => 'תצוגת רשימה',
+ 'default' => 'ברירת מחדל',
+ 'breadcrumb' => 'Breadcrumb',
+
+ // Header
+ 'profile_menu' => 'Profile Menu',
+ 'view_profile' => 'הצג פרופיל',
+ 'edit_profile' => 'ערוך פרופיל',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+
+ // Layout tabs
+ 'tab_info' => 'מידע',
+ 'tab_content' => 'תוכן',
+
+ // Email Content
+ 'email_action_help' => 'אם לא ניתן ללחות על כפתור ״:actionText״, יש להעתיק ולהדביק את הכתובת למטה אל דפדפן האינטרנט שלך:',
+ 'email_rights' => 'כל הזכויות שמורות',
+];
--- /dev/null
+<?php
+/**
+ * Text used in custom JavaScript driven components.
+ */
+return [
+
+ // Image Manager
+ 'image_select' => 'בחירת תמונה',
+ 'image_all' => 'הכל',
+ 'image_all_title' => 'הצג את כל התמונות',
+ 'image_book_title' => 'הצג תמונות שהועלו לספר זה',
+ 'image_page_title' => 'הצג תמונות שהועלו לדף זה',
+ 'image_search_hint' => 'חפש תמונה לפי שם',
+ 'image_uploaded' => 'הועלה :uploadedDate',
+ 'image_load_more' => 'טען עוד',
+ 'image_image_name' => 'שם התמונה',
+ 'image_delete_used' => 'תמונה זו בשימוש בדפים שמתחת',
+ 'image_delete_confirm' => 'לחץ ״מחק״ שוב על מנת לאשר שברצונך למחוק תמונה זו',
+ 'image_select_image' => 'בחר תמונה',
+ 'image_dropzone' => 'גרור תמונות או לחץ כאן להעלאה',
+ 'images_deleted' => 'התמונות נמחקו',
+ 'image_preview' => 'תצוגה מקדימה',
+ 'image_upload_success' => 'התמונה עלתה בהצלחה',
+ 'image_update_success' => 'פרטי התמונה עודכנו בהצלחה',
+ 'image_delete_success' => 'התמונה נמחקה בהצלחה',
+ 'image_upload_remove' => 'מחק',
+
+ // Code Editor
+ 'code_editor' => 'ערוך קוד',
+ 'code_language' => 'שפת הקוד',
+ 'code_content' => 'תוכן הקוד',
+ 'code_save' => 'שמור קוד',
+];
--- /dev/null
+<?php
+/**
+ * Text used for 'Entities' (Document Structure Elements) such as
+ * Books, Shelves, Chapters & Pages
+ */
+return [
+
+ // Shared
+ 'recently_created' => 'נוצר לאחרונה',
+ 'recently_created_pages' => 'דפים שנוצרו לאחרונה',
+ 'recently_updated_pages' => 'דפים שעודכנו לאחרונה',
+ 'recently_created_chapters' => 'פרקים שנוצרו לאחרונה',
+ 'recently_created_books' => 'ספרים שנוצרו לאחרונה',
+ 'recently_created_shelves' => 'מדפים שנוצרו לאחרונה',
+ 'recently_update' => 'עודכן לאחרונה',
+ 'recently_viewed' => 'נצפה לאחרונה',
+ 'recent_activity' => 'פעילות לאחרונה',
+ 'create_now' => 'צור אחד כעת',
+ 'revisions' => 'עדכונים',
+ 'meta_revision' => 'עדכון #:revisionCount',
+ 'meta_created' => 'נוצר :timeLength',
+ 'meta_created_name' => 'נוצר :timeLength על ידי :user',
+ 'meta_updated' => 'עודכן :timeLength',
+ 'meta_updated_name' => 'עודכן :timeLength על ידי :user',
+ 'entity_select' => 'בחר יישות',
+ 'images' => 'תמונות',
+ 'my_recent_drafts' => 'הטיוטות האחרונות שלי',
+ 'my_recently_viewed' => 'הנצפים לאחרונה שלי',
+ 'no_pages_viewed' => 'לא צפית בדפים כלשהם',
+ 'no_pages_recently_created' => 'לא נוצרו דפים לאחרונה',
+ 'no_pages_recently_updated' => 'לא עודכנו דפים לאחרונה',
+ 'export' => 'ייצוא',
+ 'export_html' => 'דף אינטרנט',
+ 'export_pdf' => 'קובץ PDF',
+ 'export_text' => 'טקסט רגיל',
+
+ // Permissions and restrictions
+ 'permissions' => 'הרשאות',
+ 'permissions_intro' => 'ברגע שמסומן, הרשאות אלו יגברו על כל הרשאת תפקיד שקיימת',
+ 'permissions_enable' => 'הפעל הרשאות מותאמות אישית',
+ 'permissions_save' => 'שמור הרשאות',
+
+ // Search
+ 'search_results' => 'תוצאות חיפוש',
+ 'search_total_results_found' => ':count תוצאות נמצאו|:count סה״כ תוצאות',
+ 'search_clear' => 'נקה חיפוש',
+ 'search_no_pages' => 'לא נמצאו דפים התואמים לחיפוש',
+ 'search_for_term' => 'חפש את :term',
+ 'search_more' => 'תוצאות נוספות',
+ 'search_filters' => 'מסנני חיפוש',
+ 'search_content_type' => 'סוג התוכן',
+ 'search_exact_matches' => 'התאמות מדויקות',
+ 'search_tags' => 'חפש בתגים',
+ 'search_options' => 'אפשרויות',
+ 'search_viewed_by_me' => 'נצפו על ידי',
+ 'search_not_viewed_by_me' => 'שלא נצפו על ידי',
+ 'search_permissions_set' => 'סט הרשאות',
+ 'search_created_by_me' => 'שנוצרו על ידי',
+ 'search_updated_by_me' => 'שעודכנו על ידי',
+ 'search_date_options' => 'אפשרויות תאריך',
+ 'search_updated_before' => 'שעודכנו לפני',
+ 'search_updated_after' => 'שעודכנו לאחר',
+ 'search_created_before' => 'שנוצרו לפני',
+ 'search_created_after' => 'שנוצרו לאחר',
+ 'search_set_date' => 'הגדר תאריך',
+ 'search_update' => 'עדכן חיפוש',
+
+ // Shelves
+ 'shelf' => 'מדף',
+ 'shelves' => 'מדפים',
+ 'x_shelves' => ':count מדף|:count מדפים',
+ 'shelves_long' => 'מדפים',
+ 'shelves_empty' => 'לא נוצרו מדפים',
+ 'shelves_create' => 'צור מדף חדש',
+ 'shelves_popular' => 'מדפים פופולרים',
+ 'shelves_new' => 'מדפים חדשים',
+ 'shelves_new_action' => 'מדף חדש',
+ 'shelves_popular_empty' => 'המדפים הפופולריים ביותר יופיעו כאן',
+ 'shelves_new_empty' => 'המדפים שנוצרו לאחרונה יופיעו כאן',
+ 'shelves_save' => 'שמור מדף',
+ 'shelves_books' => 'ספרים במדף זה',
+ 'shelves_add_books' => 'הוסף ספרים למדף זה',
+ 'shelves_drag_books' => 'גרור ספרים לכאן על מנת להוסיף אותם למדף',
+ 'shelves_empty_contents' => 'במדף זה לא קיימים ספרים',
+ 'shelves_edit_and_assign' => 'עריכת מדף להוספת ספרים',
+ 'shelves_edit_named' => 'עריכת מדף :name',
+ 'shelves_edit' => 'ערוך מדף',
+ 'shelves_delete' => 'מחק מדף',
+ 'shelves_delete_named' => 'מחיקת דף :name',
+ 'shelves_delete_explain' => "פעולה זו תמחק את המדף :name - הספרים שמופיעים בו ימחקו גם כן!",
+ 'shelves_delete_confirmation' => 'האם ברצונך למחוק את המדף?',
+ 'shelves_permissions' => 'הרשאות מדף',
+ 'shelves_permissions_updated' => 'הרשאות מדף עודכנו',
+ 'shelves_permissions_active' => 'הרשאות מדף פעילות',
+ 'shelves_copy_permissions_to_books' => 'העתק הרשאות מדף אל הספרים',
+ 'shelves_copy_permissions' => 'העתק הרשאות',
+ 'shelves_copy_permissions_explain' => 'פעולה זו תעתיק את כל הרשאות המדף לכל הספרים המשוייכים למדף זה. לפני הביצוע, יש לוודא שכל הרשאות המדף אכן נשמרו.',
+ 'shelves_copy_permission_success' => 'הרשאות המדף הועתקו אל :count ספרים',
+
+ // Books
+ 'book' => 'ספר',
+ 'books' => 'ספרים',
+ 'x_books' => ':count ספר|:count ספרים',
+ 'books_empty' => 'לא נוצרו ספרים',
+ 'books_popular' => 'ספרים פופולריים',
+ 'books_recent' => 'ספרים אחרונים',
+ 'books_new' => 'ספרים חדשים',
+ 'books_new_action' => 'ספר חדש',
+ 'books_popular_empty' => 'הספרים הפופולריים יופיעו כאן',
+ 'books_new_empty' => 'הספרים שנוצרו לאחרונה יופיעו כאן',
+ 'books_create' => 'צור ספר חדש',
+ 'books_delete' => 'מחק ספר',
+ 'books_delete_named' => 'מחק ספר :bookName',
+ 'books_delete_explain' => 'פעולה זו תמחק את הספר :bookName, כל הדפים והפרקים ימחקו גם כן.',
+ 'books_delete_confirmation' => 'האם ברצונך למחוק את הספר הזה?',
+ 'books_edit' => 'ערוך ספר',
+ 'books_edit_named' => 'עריכת ספר :bookName',
+ 'books_form_book_name' => 'שם הספר',
+ 'books_save' => 'שמור ספר',
+ 'books_permissions' => 'הרשאות ספר',
+ 'books_permissions_updated' => 'הרשאות הספר עודכנו',
+ 'books_empty_contents' => 'לא נוצרו פרקים או דפים עבור ספר זה',
+ 'books_empty_create_page' => 'צור דף חדש',
+ 'books_empty_sort_current_book' => 'מיין את הספר הנוכחי',
+ 'books_empty_add_chapter' => 'הוסף פרק',
+ 'books_permissions_active' => 'הרשאות ספר פעילות',
+ 'books_search_this' => 'חפש בספר זה',
+ 'books_navigation' => 'ניווט בספר',
+ 'books_sort' => 'מיין את תוכן הספר',
+ 'books_sort_named' => 'מיין את הספר :bookName',
+ 'books_sort_name' => 'מיין לפי שם',
+ 'books_sort_created' => 'מיין לפי תאריך יצירה',
+ 'books_sort_updated' => 'מיין לפי תאריך עדכון',
+ 'books_sort_chapters_first' => 'פרקים בהתחלה',
+ 'books_sort_chapters_last' => 'פרקים בסוף',
+ 'books_sort_show_other' => 'הצג ספרים אחרונים',
+ 'books_sort_save' => 'שמור את הסדר החדש',
+
+ // Chapters
+ 'chapter' => 'פרק',
+ 'chapters' => 'פרקים',
+ 'x_chapters' => ':count פרק|:count פרקים',
+ 'chapters_popular' => 'פרקים פופולריים',
+ 'chapters_new' => 'פרק חדש',
+ 'chapters_create' => 'צור פרק חדש',
+ 'chapters_delete' => 'מחק פרק',
+ 'chapters_delete_named' => 'מחק את פרק :chapterName',
+ 'chapters_delete_explain' => 'פעולה זו תמחוק את הפרק בשם \':chapterName\'. כל הדפים יועברו אוטומטית לספר עצמו',
+ 'chapters_delete_confirm' => 'האם ברצונך למחוק פרק זה?',
+ 'chapters_edit' => 'ערוך פרק',
+ 'chapters_edit_named' => 'ערוך פרק :chapterName',
+ 'chapters_save' => 'שמור פרק',
+ 'chapters_move' => 'העבר פרק',
+ 'chapters_move_named' => 'העבר פרק :chapterName',
+ 'chapter_move_success' => 'הפרק הועבר אל :bookName',
+ 'chapters_permissions' => 'הרשאות פרק',
+ 'chapters_empty' => 'לא נמצאו דפים בפרק זה.',
+ 'chapters_permissions_active' => 'הרשאות פרק פעילות',
+ 'chapters_permissions_success' => 'הרשאות פרק עודכנו',
+ 'chapters_search_this' => 'חפש בפרק זה',
+
+ // Pages
+ 'page' => 'דף',
+ 'pages' => 'דפים',
+ 'x_pages' => ':count דף|:count דפים',
+ 'pages_popular' => 'דפים פופולריים',
+ 'pages_new' => 'דף חדש',
+ 'pages_attachments' => 'קבצים מצורפים',
+ 'pages_navigation' => 'ניווט בדף',
+ 'pages_delete' => 'מחק דף',
+ 'pages_delete_named' => 'מחק דף :pageName',
+ 'pages_delete_draft_named' => 'מחק טיוטת דף :pageName',
+ 'pages_delete_draft' => 'מחק טיוטת דף',
+ 'pages_delete_success' => 'הדף נמחק',
+ 'pages_delete_draft_success' => 'טיוטת דף נמחקה',
+ 'pages_delete_confirm' => 'האם ברצונך למחוק דף זה?',
+ 'pages_delete_draft_confirm' => 'האם ברצונך למחוק את טיוטת הדף הזה?',
+ 'pages_editing_named' => 'עריכת דף :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'שמור טיוטה',
+ 'pages_edit_draft' => 'ערוך טיוטת דף',
+ 'pages_editing_draft' => 'עריכת טיוטה',
+ 'pages_editing_page' => 'עריכת דף',
+ 'pages_edit_draft_save_at' => 'טיוטה נשמרה ב ',
+ 'pages_edit_delete_draft' => 'מחק טיוטה',
+ 'pages_edit_discard_draft' => 'התעלם מהטיוטה',
+ 'pages_edit_set_changelog' => 'הגדר יומן שינויים',
+ 'pages_edit_enter_changelog_desc' => 'ציין תיאור קצר אודות השינויים שביצעת',
+ 'pages_edit_enter_changelog' => 'הכנס יומן שינויים',
+ 'pages_save' => 'שמור דף',
+ 'pages_title' => 'כותרת דף',
+ 'pages_name' => 'שם הדף',
+ 'pages_md_editor' => 'עורך',
+ 'pages_md_preview' => 'תצוגה מקדימה',
+ 'pages_md_insert_image' => 'הכנס תמונה',
+ 'pages_md_insert_link' => 'הכנס קישור ליישות',
+ 'pages_md_insert_drawing' => 'הכנס סרטוט',
+ 'pages_not_in_chapter' => 'דף אינו חלק מפרק',
+ 'pages_move' => 'העבר דף',
+ 'pages_move_success' => 'הדף הועבר אל ":parentName"',
+ 'pages_copy' => 'העתק דף',
+ 'pages_copy_desination' => 'העתק יעד',
+ 'pages_copy_success' => 'הדף הועתק בהצלחה',
+ 'pages_permissions' => 'הרשאות דף',
+ 'pages_permissions_success' => 'הרשאות הדף עודכנו',
+ 'pages_revision' => 'נוסח',
+ 'pages_revisions' => 'נוסחי דף',
+ 'pages_revisions_named' => 'נוסחי דף עבור :pageName',
+ 'pages_revision_named' => 'נוסח דף עבור :pageName',
+ 'pages_revisions_created_by' => 'נוצר על ידי',
+ 'pages_revisions_date' => 'תאריך נוסח',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_numbered' => 'נוסח #:id',
+ 'pages_revisions_numbered_changes' => 'שינויי נוסח #:id',
+ 'pages_revisions_changelog' => 'יומן שינויים',
+ 'pages_revisions_changes' => 'שינויים',
+ 'pages_revisions_current' => 'גירסא נוכחית',
+ 'pages_revisions_preview' => 'תצוגה מקדימה',
+ 'pages_revisions_restore' => 'שחזר',
+ 'pages_revisions_none' => 'לדף זה אין נוסחים',
+ 'pages_copy_link' => 'העתק קישור',
+ 'pages_edit_content_link' => 'ערוך תוכן',
+ 'pages_permissions_active' => 'הרשאות דף פעילות',
+ 'pages_initial_revision' => 'פרסום ראשוני',
+ 'pages_initial_name' => 'דף חדש',
+ 'pages_editing_draft_notification' => 'הינך עורך טיוטה אשר נשמרה לאחרונה ב :timeDiff',
+ 'pages_draft_edited_notification' => 'דף זה עודכן מאז, מומלץ להתעלם מהטיוטה הזו.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count משתמשים החלו לערוך דף זה',
+ 'start_b' => ':userName החל לערוך דף זה',
+ 'time_a' => 'מאז שהדף עודכן לאחרונה',
+ 'time_b' => 'ב :minCount דקות האחרונות',
+ 'message' => ':start :time. יש לשים לב לא לדרוס שינויים של משתמשים אחרים!',
+ ],
+ 'pages_draft_discarded' => 'הסקיצה נמחקה, העורך עודכן עם תוכן הדף העכשוי',
+ 'pages_specific' => 'דף ספציפי',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'page_tags' => 'תגיות דף',
+ 'chapter_tags' => 'תגיות פרק',
+ 'book_tags' => 'תגיות ספר',
+ 'shelf_tags' => 'תגיות מדף',
+ 'tag' => 'תגית',
+ 'tags' => 'תגיות',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'ערך התגית (אופציונאלי)',
+ 'tags_explain' => "הכנס תגיות על מנת לסדר את התוכן שלך. \n ניתן לציין ערך לתגית על מנת לבצע סידור יסודי יותר",
+ 'tags_add' => 'הוסף תגית נוספת',
+ 'tags_remove' => 'Remove this tag',
+ 'attachments' => 'קבצים מצורפים',
+ 'attachments_explain' => 'צרף קבצים או קישורים על מנת להציגם בדף שלך. צירופים אלו יהיו זמינים בתפריט הצדדי של הדף',
+ 'attachments_explain_instant_save' => 'שינויים נשמרים באופן מיידי',
+ 'attachments_items' => 'פריטים שצורפו',
+ 'attachments_upload' => 'העלה קובץ',
+ 'attachments_link' => 'צרף קישור',
+ 'attachments_set_link' => 'הגדר קישור',
+ 'attachments_delete_confirm' => 'יש ללחוץ שוב על מחיקה על מנת לאשר את מחיקת הקובץ המצורף',
+ 'attachments_dropzone' => 'גרור לכאן קבצים או לחץ על מנת לצרף קבצים',
+ 'attachments_no_files' => 'לא הועלו קבצים',
+ 'attachments_explain_link' => 'ניתן לצרף קישור במקום העלאת קובץ, קישור זה יכול להוביל לדף אחר או לכל קובץ באינטרנט',
+ 'attachments_link_name' => 'שם הקישור',
+ 'attachment_link' => 'כתובת הקישור',
+ 'attachments_link_url' => 'קישור לקובץ',
+ 'attachments_link_url_hint' => 'כתובת האתר או הקובץ',
+ 'attach' => 'צרף',
+ 'attachments_edit_file' => 'ערוך קובץ',
+ 'attachments_edit_file_name' => 'שם הקובץ',
+ 'attachments_edit_drop_upload' => 'גרור קבצים או לחץ כאן על מנת להעלות קבצים במקום הקבצים הקיימים',
+ 'attachments_order_updated' => 'סדר הקבצים עודכן',
+ 'attachments_updated_success' => 'פרטי הקבצים עודכנו',
+ 'attachments_deleted' => 'קובץ מצורף הוסר',
+ 'attachments_file_uploaded' => 'הקובץ עלה בהצלחה',
+ 'attachments_file_updated' => 'הקובץ עודכן בהצלחה',
+ 'attachments_link_attached' => 'הקישור צורף לדף בהצלחה',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'משתמש במערכת כ :time',
+ 'profile_created_content' => 'תוכן שנוצר',
+ 'profile_not_created_pages' => 'המשתמש :userName לא יצר דפים',
+ 'profile_not_created_chapters' => 'המשתמש :userName לא יצר פרקים',
+ 'profile_not_created_books' => 'המשתמש :userName לא יצר ספרים',
+ 'profile_not_created_shelves' => 'המשתמש :userName לא יצר מדפים',
+
+ // Comments
+ 'comment' => 'תגובה',
+ 'comments' => 'תגובות',
+ 'comment_add' => 'הוסף תגובה',
+ 'comment_placeholder' => 'השאר תגובה כאן',
+ 'comment_count' => '{0} אין תגובות|{1} 1 תגובה|[2,*] :count תגובות',
+ 'comment_save' => 'שמור תגובה',
+ 'comment_saving' => 'שומר תגובה...',
+ 'comment_deleting' => 'מוחק תגובה...',
+ 'comment_new' => 'תגובה חדשה',
+ 'comment_created' => 'הוגב :createDiff',
+ 'comment_updated' => 'עודכן :updateDiff על ידי :username',
+ 'comment_deleted_success' => 'התגובה נמחקה',
+ 'comment_created_success' => 'התגובה נוספה',
+ 'comment_updated_success' => 'התגובה עודכנה',
+ 'comment_delete_confirm' => 'האם ברצונך למחוק תגובה זו?',
+ 'comment_in_reply_to' => 'בתגובה ל :commentId',
+
+ // Revision
+ 'revision_delete_confirm' => 'האם ברצונך למחוק נוסח זה?',
+ 'revision_restore_confirm' => 'האם ברצונך לשחזר נוסח זה? תוכן הדף הנוכחי יעודכן לנוסח זה.',
+ 'revision_delete_success' => 'נוסח נמחק',
+ 'revision_cannot_delete_latest' => 'לא ניתן למחוק את הנוסח האחרון'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Text shown in error messaging.
+ */
+return [
+
+ // Permissions
+ 'permission' => 'אין לך הרשאות על מנת לצפות בדף המבוקש.',
+ 'permissionJson' => 'אין לך הרשאות על מנת לבצע את הפעולה המבוקשת.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'משתמש עם המייל :email כבר קיים אך עם פרטי הזדהות שונים',
+ 'email_already_confirmed' => 'המייל כבר אומת, אנא נסה להתחבר',
+ 'email_confirmation_invalid' => 'מפתח האימות אינו תקין או שכבר נעשה בו שימוש, אנא נסה להרשם שנית',
+ 'email_confirmation_expired' => 'מפתח האימות פג-תוקף, מייל אימות חדש נשלח שוב.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'לא הוגדרה פעולה',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'החשבון :socialAccount כבר בשימוש. אנא נסה להתחבר באמצעות אפשרות :socialAccount',
+ 'social_account_email_in_use' => 'המייל :email כבר נמצא בשימוש. אם כבר יש ברשותך חשבון ניתן להתחבר באמצעות :socialAccount ממסך הגדרות הפרופיל שלך.',
+ 'social_account_existing' => 'ה - :socialAccount כבר מחובר לחשבון שלך.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'החשבון :socialAccount אינו מחובר למשתמש כלשהוא. אנא חבר אותו לחשבונך במסך הגדרות הפרופיל שלך.',
+ 'social_account_register_instructions' => 'אם אין ברשותך חשבון, תוכל להרשם באמצעות :socialAccount',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'הגדרות ה :socialAccount אינן מוגדרות כראוי',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+
+ // System
+ 'path_not_writable' => 'לא ניתן להעלות את :filePath אנא ודא שניתן לכתוב למיקום זה',
+ 'cannot_get_image_from_url' => 'לא ניתן לקבל תמונה מ :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'השרת אינו מרשה העלאת קבצים במשקל זה. אנא נסה להעלות קובץ קטן יותר.',
+ 'uploaded' => 'השרת אינו מרשה העלאת קבצים במשקל זה. אנא נסה להעלות קובץ קטן יותר.',
+ 'image_upload_error' => 'התרחשה שגיאה במהלך העלאת התמונה',
+ 'image_upload_type_error' => 'התמונה שהועלתה אינה תקינה',
+ 'file_upload_timeout' => 'The file upload has timed out.',
+
+ // Attachments
+ 'attachment_page_mismatch' => 'Page mismatch during attachment update',
+ 'attachment_not_found' => 'קובץ מצורף לא נמצא',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'שגיאה בשמירת הטיוטה. אנא ודא כי חיבור האינטרנט תקין לפני שמירת דף זה.',
+ 'page_custom_home_deletion' => 'לא ניתן למחוק דף אשר מוגדר כדף הבית',
+
+ // Entities
+ 'entity_not_found' => 'פריט לא נמצא',
+ 'bookshelf_not_found' => 'מדף הספרים לא נמצא',
+ 'book_not_found' => 'ספר לא נמצא',
+ 'page_not_found' => 'דף לא נמצא',
+ 'chapter_not_found' => 'פרק לא נמצא',
+ 'selected_book_not_found' => 'הספר שנבחר לא נמצא',
+ 'selected_book_chapter_not_found' => 'הפרק או הספר שנבחר לא נמצאו',
+ 'guests_cannot_save_drafts' => 'אורחים אינם יכולים לשמור סקיצות',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'אינך יכול למחוק את המנהל היחיד',
+ 'users_cannot_delete_guest' => 'אינך יכול למחוק את משתמש האורח',
+
+ // Roles
+ 'role_cannot_be_edited' => 'לא ניתן לערוך תפקיד זה',
+ 'role_system_cannot_be_deleted' => 'תפקיד זה הינו תפקיד מערכת ולא ניתן למחיקה',
+ 'role_registration_default_cannot_delete' => 'לא ניתן למחוק תפקיד זה מכיוון שהוא מוגדר כתפקיד ברירת המחדל בעת הרשמה',
+ 'role_cannot_remove_only_admin' => 'משתמש זה הינו המשתמש היחיד המשוייך לפקיד המנהל. נסה לשייך את תפקיד המנהל למשתמש נוסף לפני הסרה כאן',
+
+ // Comments
+ 'comment_list' => 'התרחשה שגיאה בעת שליפת התגובות',
+ 'cannot_add_comment_to_draft' => 'אינך יכול להוסיף תגובות לסקיצה זו',
+ 'comment_add' => 'התרחשה שגיאה בעת הוספה / עדכון התגובה',
+ 'comment_delete' => 'התרחשה שגיאה בעת מחיקת התגובה',
+ 'empty_comment' => 'לא ניתן להוסיף תגובה ריקה',
+
+ // Error pages
+ '404_page_not_found' => 'דף לא קיים',
+ 'sorry_page_not_found' => 'מצטערים, הדף שחיפשת אינו קיים',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ 'return_home' => 'בחזרה לדף הבית',
+ 'error_occurred' => 'התרחשה שגיאה',
+ 'app_down' => ':appName כרגע אינו זמין',
+ 'back_soon' => 'מקווים שיחזור במהרה',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+];
--- /dev/null
+<?php
+/**
+ * Pagination Language Lines
+ * The following language lines are used by the paginator library to build
+ * the simple pagination links.
+ */
+return [
+
+ 'previous' => '« הקודם',
+ 'next' => 'הבא »',
+
+];
--- /dev/null
+<?php
+/**
+ * Password Reminder Language Lines
+ * The following language lines are the default lines which match reasons
+ * that are given by the password broker for a password update attempt has failed.
+ */
+return [
+
+ 'password' => 'הסיסמא חייבת להיות בעלת 6 תווים ולהתאים לאימות',
+ 'user' => "לא ניתן למצוא משתמש עם המייל שסופק",
+ 'token' => 'The password reset token is invalid for this email address.',
+ 'sent' => 'נשלח אליך אי-מייל עם קישור לאיפוס הסיסמא',
+ 'reset' => 'איפוס הסיסמא הושלם בהצלחה!',
+
+];
--- /dev/null
+<?php
+/**
+ * Settings text strings
+ * Contains all text strings used in the general settings sections of BookStack
+ * including users and roles.
+ */
+return [
+
+ // Common Messages
+ 'settings' => 'הגדרות',
+ 'settings_save' => 'שמור הגדרות',
+ 'settings_save_success' => 'ההגדרות נשמרו',
+
+ // App Settings
+ 'app_customization' => 'התאמה אישית',
+ 'app_features_security' => 'מאפיינים ואבטחה',
+ 'app_name' => 'שם היישום',
+ 'app_name_desc' => 'השם הזה יופיע בכותרת ובכל אי-מייל הנשלח מהמערכת',
+ 'app_name_header' => 'הצג שם בחלק העליון',
+ 'app_public_access' => 'גישה ציבורית',
+ 'app_public_access_desc' => 'הפעלת אפשרות זו תאפשר למשתמשים אשר אינם רשומים לגשת לתוכן שלך',
+ 'app_public_access_desc_guest' => 'הגדרות הרשאה למשתמשים ציבוריים ניתנות לשינוי דרך משתמש מסוג ״אורח״',
+ 'app_public_access_toggle' => 'אפשר גישה ציבורית',
+ 'app_public_viewing' => 'לאפשר גישה ציבורית?',
+ 'app_secure_images' => 'העלאת תמונות מאובטחת',
+ 'app_secure_images_toggle' => 'אפשר העלאת תמונות מאובטחת',
+ 'app_secure_images_desc' => 'משיקולי ביצועים, כל התמונות הינן ציבוריות. אפשרות זו מוסיפה מחרוזת אקראית שקשה לנחש לכל כתובת של תמונה. אנא ודא שאפשרות הצגת תוכן התיקייה מבוטל.',
+ 'app_editor' => 'עורך הדפים',
+ 'app_editor_desc' => 'בחר באמצעות איזה עורך תתבצע עריכת הדפים',
+ 'app_custom_html' => 'HTML מותאם אישית לחלק העליון',
+ 'app_custom_html_desc' => 'כל קוד שיתווסף כאן, יופיע בתחתית תגית ה head של כל דף. חלק זה שימושי על מנת להגדיר עיצובי CSS והתקנת קוד Analytics',
+ 'app_custom_html_disabled_notice' => 'קוד HTML מותאם מבוטל בדף ההגדרות על מנת לוודא ששינויים שגורמים לבעיה יוכלו להיות מבוטלים לאחר מכן',
+ 'app_logo' => 'לוגו היישום',
+ 'app_logo_desc' => 'תמונה זו צריכה להיות בגובה 43 פיקסלים. תמונות גדולות יותר יוקטנו.',
+ 'app_primary_color' => 'צבע עיקרי ליישום',
+ 'app_primary_color_desc' => 'ערך זה צריך להיות מסוג hex. <br> יש להשאיר ריק לשימוש בצבע ברירת המחדל',
+ 'app_homepage' => 'דף הבית של היישום',
+ 'app_homepage_desc' => 'אנא בחר דף להצגה בדף הבית במקום דף ברירת המחדל. הרשאות הדף לא יחולו בדפים הנבחרים.',
+ 'app_homepage_select' => 'בחר דף',
+ 'app_disable_comments' => 'ביטול תגובות',
+ 'app_disable_comments_toggle' => 'בטל תגובות',
+ 'app_disable_comments_desc' => 'מבטל את התגובות לאורך כל היישום, תגובות קיימות לא יוצגו.',
+
+ // Color settings
+ 'content_colors' => 'Content Colors',
+ 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'הרשמה',
+ 'reg_enable' => 'אפשר הרשמה',
+ 'reg_enable_toggle' => 'אפשר להרשם',
+ 'reg_enable_desc' => 'כאשר אפשר להרשם משתמשים יוכלו להכנס באופן עצמאי. בעת ההרשמה המשתמש יקבל הרשאה יחידה כברירת מחדל.',
+ 'reg_default_role' => 'הרשאה כברירת מחדל',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'אימות כתובת אי-מייל',
+ 'reg_email_confirmation_toggle' => 'יש לאמת את כתובת המייל',
+ 'reg_confirm_email_desc' => 'אם מופעלת הגבלה לדומיין ספציפי אז אימות המייל לא יבוצע',
+ 'reg_confirm_restrict_domain' => 'הגבלה לדומיין ספציפי',
+ 'reg_confirm_restrict_domain_desc' => 'הכנס דומיינים מופרדים בפסיק אשר עבורם תוגבל ההרשמה. משתמשים יקבלו אי-מייל על מנת לאמת את כתובת המייל שלהם. <br> לתשומת לבך: משתמש יוכל לשנות את כתובת המייל שלו לאחר ההרשמה',
+ 'reg_confirm_restrict_domain_placeholder' => 'אין הגבלה לדומיין',
+
+ // Maintenance settings
+ 'maint' => 'תחזוקה',
+ 'maint_image_cleanup' => 'ניקוי תמונות',
+ 'maint_image_cleanup_desc' => "סורק את הדפים והגרסאות על מנת למצוא אילו תמונות לא בשימוש. יש לוודא גיבוי מלא של מסד הנתונים והתמונות לפני הרצה",
+ 'maint_image_cleanup_ignore_revisions' => 'התעלם מהתמונות בגרסאות',
+ 'maint_image_cleanup_run' => 'הפעל ניקוי תמונות',
+ 'maint_image_cleanup_warning' => 'נמצאו כ :count תמונות אשר לא בשימוש האם ברצונך להמשיך?',
+ 'maint_image_cleanup_success' => ':count תמונות שלא בשימוש נמחקו',
+ 'maint_image_cleanup_nothing_found' => 'לא נמצאו תמונות אשר לא בשימוש, לא נמחקו קבצים כלל.',
+ 'maint_send_test_email' => 'Send a Test Email',
+ 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.',
+ 'maint_send_test_email_run' => 'Send test email',
+ 'maint_send_test_email_success' => 'Email sent to :address',
+ 'maint_send_test_email_mail_subject' => 'Test Email',
+ 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!',
+ 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.',
+
+ // Role Settings
+ 'roles' => 'תפקידים',
+ 'role_user_roles' => 'תפקידי משתמשים',
+ 'role_create' => 'צור תפקיד משתמש חדש',
+ 'role_create_success' => 'התפקיד נוצר בהצלחה',
+ 'role_delete' => 'מחק תפקיד',
+ 'role_delete_confirm' => 'פעולה זו תמחק את התפקיד: :roleName',
+ 'role_delete_users_assigned' => 'לתפקיד :userCount יש משתמשים אשר משויכים אליו. אם ברצונך להעבירם לתפקיד אחר אנא בחר תפקיד מלמטה',
+ 'role_delete_no_migration' => "אל תעביר משתמשים לתפקיד",
+ 'role_delete_sure' => 'האם אתה בטוח שברצונך למחוק את התפקיד?',
+ 'role_delete_success' => 'התפקיד נמחק בהצלחה',
+ 'role_edit' => 'ערוך תפקיד',
+ 'role_details' => 'פרטי תפקיד',
+ 'role_name' => 'שם התפקיד',
+ 'role_desc' => 'תיאור קצר של התפקיד',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'הרשאות מערכת',
+ 'role_manage_users' => 'ניהול משתמשים',
+ 'role_manage_roles' => 'ניהול תפקידים והרשאות תפקידים',
+ 'role_manage_entity_permissions' => 'נהל הרשאות ספרים, פרקים ודפים',
+ 'role_manage_own_entity_permissions' => 'נהל הרשאות על ספרים, פרקים ודפים בבעלותך',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'ניהול הגדרות יישום',
+ 'role_asset' => 'הרשאות משאבים',
+ 'role_asset_desc' => 'הרשאות אלו שולטות בגישת ברירת המחדל למשאבים בתוך המערכת. הרשאות של ספרים, פרקים ודפים יגברו על הרשאות אלו.',
+ 'role_asset_admins' => 'מנהלים מקבלים הרשאה מלאה לכל התוכן אך אפשרויות אלו עלולות להציג או להסתיר אפשרויות בממשק',
+ 'role_all' => 'הכל',
+ 'role_own' => 'שלי',
+ 'role_controlled_by_asset' => 'נשלטים על ידי המשאב אליו הועלו',
+ 'role_save' => 'שמור תפקיד',
+ 'role_update_success' => 'התפקיד עודכן בהצלחה',
+ 'role_users' => 'משתמשים משוייכים לתפקיד זה',
+ 'role_users_none' => 'אין משתמשים המשוייכים לתפקיד זה',
+
+ // Users
+ 'users' => 'משתמשים',
+ 'user_profile' => 'פרופיל משתמש',
+ 'users_add_new' => 'הוסף משתמש חדש',
+ 'users_search' => 'חפש משתמשים',
+ 'users_details' => 'פרטי משתמש',
+ 'users_details_desc' => 'הגדר שם לתצוגה ומייל עבור משתמש זה. כתובת המייל תשמש על מנת להתחבר למערכת',
+ 'users_details_desc_no_email' => 'הגדר שם לתצוגה כדי שאחרים יוכלו לזהות',
+ 'users_role' => 'תפקידי משתמשים',
+ 'users_role_desc' => 'בחר אילו תפקידים ישויכו למשתמש זה. אם המשתמש משוייך למספר תפקידים, ההרשאות יהיו כלל ההרשאות של כל התפקידים',
+ 'users_password' => 'סיסמא',
+ 'users_password_desc' => 'הגדר סיסמא עבור גישה למערכת. על הסיסמא להיות באורך של 5 תווים לפחות',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'זיהוי חיצוני - ID',
+ 'users_external_auth_id_desc' => 'זיהוי זה יהיה בשימוש מול מערכת ה LDAP שלך',
+ 'users_password_warning' => 'יש למלא רק אם ברצונך לשנות את הסיסמא.',
+ 'users_system_public' => 'משתמש זה מייצג את כל האורחים שלא מזוהים אשר משתמשים במערכת. לא ניתן להתחבר למשתמש זה אך הוא מוגדר כברירת מחדל',
+ 'users_delete' => 'מחק משתמש',
+ 'users_delete_named' => 'מחק משתמש :userName',
+ 'users_delete_warning' => 'פעולה זו תמחק את המשתמש \':userName\' מהמערכת',
+ 'users_delete_confirm' => 'האם ברצונך למחוק משתמש זה?',
+ 'users_delete_success' => 'המשתמש נמחק בהצלחה',
+ 'users_edit' => 'עריכת משתמש',
+ 'users_edit_profile' => 'עריכת פרופיל',
+ 'users_edit_success' => 'המשתמש עודכן בהצלחה',
+ 'users_avatar' => 'תמונת משתמש',
+ 'users_avatar_desc' => 'בחר תמונה אשר תייצג את המשתמש. על התמונה להיות ריבוע של 256px',
+ 'users_preferred_language' => 'שפה מועדפת',
+ 'users_preferred_language_desc' => 'אפשרות זו תשנע את השפה אשר מוצגת בממשק המערכת. פעולה זו לא תשנה את התוכן אשר נכתב על ידי המשתמשים.',
+ 'users_social_accounts' => 'רשתות חברתיות',
+ 'users_social_accounts_info' => 'כן ניתן לשייך חשבונות אחרים שלך לחיבור וזיהוי קל ומהיר. ניתוק חשבון אינו מנתק גישה קיימת למערכת. לביצוע ניתוק יש לשנות את ההגדרה בהגדרות של חשבון הרשת החברתית',
+ 'users_social_connect' => 'חיבור החשבון',
+ 'users_social_disconnect' => 'ניתוק חשבון',
+ 'users_social_connected' => 'חשבון :socialAccount חובר בהצלחה לחשבון שלך',
+ 'users_social_disconnected' => ':socialAccount נותק בהצלחה מהחשבון שלך',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token_create_success' => 'API token successfully created',
+ 'user_api_token_update_success' => 'API token successfully updated',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token Created :timeAgo',
+ 'user_api_token_updated' => 'Token Updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+ 'user_api_token_delete_success' => 'API token successfully deleted',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'English',
+ 'ar' => 'العربية',
+ 'cs' => 'Česky',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ]
+ //!////////////////////////////////
+];
--- /dev/null
+<?php
+/**
+ * Validation Lines
+ * The following language lines contain the default error messages used by
+ * the validator class. Some of these rules have multiple versions such
+ * as the size rules. Feel free to tweak each of these messages here.
+ */
+return [
+
+ // Standard laravel validation lines
+ 'accepted' => 'שדה :attribute חייב להיות מסומן.',
+ 'active_url' => 'שדה :attribute הוא לא כתובת אתר תקנית.',
+ 'after' => 'שדה :attribute חייב להיות תאריך אחרי :date.',
+ 'alpha' => 'שדה :attribute יכול להכיל אותיות בלבד.',
+ 'alpha_dash' => 'שדה :attribute יכול להכיל אותיות, מספרים ומקפים בלבד.',
+ 'alpha_num' => 'שדה :attribute יכול להכיל אותיות ומספרים בלבד.',
+ 'array' => 'שדה :attribute חייב להיות מערך.',
+ 'before' => 'שדה :attribute חייב להיות תאריך לפני :date.',
+ 'between' => [
+ 'numeric' => 'שדה :attribute חייב להיות בין :min ל-:max.',
+ 'file' => 'שדה :attribute חייב להיות בין :min ל-:max קילובייטים.',
+ 'string' => 'שדה :attribute חייב להיות בין :min ל-:max תווים.',
+ 'array' => 'שדה :attribute חייב להיות בין :min ל-:max פריטים.',
+ ],
+ 'boolean' => 'שדה :attribute חייב להיות אמת או שקר.',
+ 'confirmed' => 'שדה האישור של :attribute לא תואם.',
+ 'date' => 'שדה :attribute אינו תאריך תקני.',
+ 'date_format' => 'שדה :attribute לא תואם את הפורמט :format.',
+ 'different' => 'שדה :attribute ושדה :other חייבים להיות שונים.',
+ 'digits' => 'שדה :attribute חייב להיות בעל :digits ספרות.',
+ 'digits_between' => 'שדה :attribute חייב להיות בין :min ו-:max ספרות.',
+ 'email' => 'שדה :attribute חייב להיות כתובת אימייל תקנית.',
+ 'ends_with' => 'The :attribute must end with one of the following: :values',
+ 'filled' => 'שדה :attribute הוא חובה.',
+ 'gt' => [
+ 'numeric' => 'The :attribute must be greater than :value.',
+ 'file' => 'The :attribute must be greater than :value kilobytes.',
+ 'string' => 'The :attribute must be greater than :value characters.',
+ 'array' => 'The :attribute must have more than :value items.',
+ ],
+ 'gte' => [
+ 'numeric' => 'The :attribute must be greater than or equal :value.',
+ 'file' => 'The :attribute must be greater than or equal :value kilobytes.',
+ 'string' => 'The :attribute must be greater than or equal :value characters.',
+ 'array' => 'The :attribute must have :value items or more.',
+ ],
+ 'exists' => 'בחירת ה-:attribute אינה תקפה.',
+ 'image' => 'שדה :attribute חייב להיות תמונה.',
+ 'image_extension' => 'שדה :attribute חייב להיות מסוג תמונה נתמך',
+ 'in' => 'בחירת ה-:attribute אינה תקפה.',
+ 'integer' => 'שדה :attribute חייב להיות מספר שלם.',
+ 'ip' => 'שדה :attribute חייב להיות כתובת IP תקנית.',
+ 'ipv4' => 'The :attribute must be a valid IPv4 address.',
+ 'ipv6' => 'The :attribute must be a valid IPv6 address.',
+ 'json' => 'The :attribute must be a valid JSON string.',
+ 'lt' => [
+ 'numeric' => 'The :attribute must be less than :value.',
+ 'file' => 'The :attribute must be less than :value kilobytes.',
+ 'string' => 'The :attribute must be less than :value characters.',
+ 'array' => 'The :attribute must have less than :value items.',
+ ],
+ 'lte' => [
+ 'numeric' => 'The :attribute must be less than or equal :value.',
+ 'file' => 'The :attribute must be less than or equal :value kilobytes.',
+ 'string' => 'The :attribute must be less than or equal :value characters.',
+ 'array' => 'The :attribute must not have more than :value items.',
+ ],
+ 'max' => [
+ 'numeric' => 'שדה :attribute אינו יכול להיות גדול מ-:max.',
+ 'file' => 'שדה :attribute לא יכול להיות גדול מ-:max קילובייטים.',
+ 'string' => 'שדה :attribute לא יכול להיות גדול מ-:max characters.',
+ 'array' => 'שדה :attribute לא יכול להכיל יותר מ-:max פריטים.',
+ ],
+ 'mimes' => 'שדה :attribute צריך להיות קובץ מסוג: :values.',
+ 'min' => [
+ 'numeric' => 'שדה :attribute חייב להיות לפחות :min.',
+ 'file' => 'שדה :attribute חייב להיות לפחות :min קילובייטים.',
+ 'string' => 'שדה :attribute חייב להיות לפחות :min תווים.',
+ 'array' => 'שדה :attribute חייב להיות לפחות :min פריטים.',
+ ],
+ 'no_double_extension' => 'השדה :attribute חייב להיות בעל סיומת קובץ אחת בלבד.',
+ 'not_in' => 'בחירת ה-:attribute אינה תקפה.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'שדה :attribute חייב להיות מספר.',
+ 'regex' => 'שדה :attribute בעל פורמט שאינו תקין.',
+ 'required' => 'שדה :attribute הוא חובה.',
+ 'required_if' => 'שדה :attribute נחוץ כאשר :other הוא :value.',
+ 'required_with' => 'שדה :attribute נחוץ כאשר :values נמצא.',
+ 'required_with_all' => 'שדה :attribute נחוץ כאשר :values נמצא.',
+ 'required_without' => 'שדה :attribute נחוץ כאשר :values לא בנמצא.',
+ 'required_without_all' => 'שדה :attribute נחוץ כאשר אף אחד מ-:values נמצאים.',
+ 'same' => 'שדה :attribute ו-:other חייבים להיות זהים.',
+ 'size' => [
+ 'numeric' => 'שדה :attribute חייב להיות :size.',
+ 'file' => 'שדה :attribute חייב להיות :size קילובייטים.',
+ 'string' => 'שדה :attribute חייב להיות :size תווים.',
+ 'array' => 'שדה :attribute חייב להכיל :size פריטים.',
+ ],
+ 'string' => 'שדה :attribute חייב להיות מחרוזת.',
+ 'timezone' => 'שדה :attribute חייב להיות איזור תקני.',
+ 'unique' => 'שדה :attribute כבר תפוס.',
+ 'url' => 'שדה :attribute בעל פורמט שאינו תקין.',
+ 'uploaded' => 'שדה :attribute ארעה שגיאה בעת ההעלאה.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'נדרש אימות סיסמא',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
'reset_password' => 'Jelszó visszaállítása',
'reset_password_send_instructions' => 'Meg kell adni az email címet amire egy jelszó visszaállító hivatkozás lesz elküldve.',
'reset_password_send_button' => 'Visszaállító hivatkozás elküldése',
- 'reset_password_sent_success' => 'Jelszó visszaállító hivatkozás elküldve :email címre.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'A jelszó sikeresen visszaállítva.',
'email_reset_subject' => ':appName jelszó visszaállítása',
'email_reset_text' => 'Ezt az emailt azért küldtük mert egy jelszó visszaállításra vonatkozó kérést kaptunk ebből a fiókból.',
'profile_menu' => 'Profil menü',
'view_profile' => 'Profil megtekintése',
'edit_profile' => 'Profil szerkesztése',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Információ',
// Error pages
'404_page_not_found' => 'Oldal nem található',
'sorry_page_not_found' => 'Sajnáljuk, a keresett oldal nem található.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => 'Vissza a kezdőlapra',
'error_occurred' => 'Hiba örtént',
'app_down' => ':appName jelenleg nem üzemel',
'api_user_no_api_permission' => 'A használt API vezérjel tulajdonosának nincs jogosultsága API hívások végrehajtásához',
'api_user_token_expired' => 'A használt hitelesítési vezérjel lejárt',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Hiba történt egy teszt email küldésekor:',
+
];
'password' => 'A jelszónak legalább hat karakterből kell állnia és egyeznie kell a megerősítéssel.',
'user' => "Nem található felhasználó ezzel az e-mail címmel.",
- 'token' => 'Ez a jelszó visszaállító vezérjel érvénytelen.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'E-mailben elküldtük a jelszó visszaállító hivatkozást!',
'reset' => 'A jelszó visszaállítva!',
'reg_enable_toggle' => 'Regisztráció engedélyezése',
'reg_enable_desc' => 'Ha a regisztráció engedélyezett, akkor a felhasználó képes lesz bejelentkezni mint az alkalmazás egy felhasználója. Regisztráció után egy egyszerű, alapértelmezés szerinti felhasználói szerepkör lesz hozzárendelve.',
'reg_default_role' => 'Regisztráció utáni alapértelmezett felhasználói szerepkör',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_external_warning' => 'A fenti beállítási lehetőség nincs használatban, ha külső LDAP vagy SAML hitelesítés aktív. A nem létező tagok felhasználói fiókjai automatikusan létrejönnek ha a használatban lévő külső rendszeren sikeres a hitelesítés.',
'reg_email_confirmation' => 'Email megerősítés',
'reg_email_confirmation_toggle' => 'Email megerősítés szükséges',
'reg_confirm_email_desc' => 'Ha a tartomány korlátozás be van állítva, akkor email megerősítés szükséges és ez a beállítás figyelmen kívül lesz hagyva.',
'users_send_invite_text' => 'Lehetséges egy meghívó emailt küldeni ennek a felhasználónak ami lehetővé teszi, hogy beállíthassa a saját jelszavát. Máskülönben a jelszót az erre jogosult felhasználónak kell beállítania.',
'users_send_invite_option' => 'Felhasználó meghívó levél küldése',
'users_external_auth_id' => 'Külső hitelesítés azonosítója',
- 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
+ 'users_external_auth_id_desc' => 'Ez az azonosító lesz használva a felhasználó ellenőrzéséhez mikor a külső hitelesítő rendszerrel kommunikál.',
'users_password_warning' => 'A lenti mezőket csak a jelszó módosításához kell kitölteni.',
'users_system_public' => 'Ez a felhasználó bármelyik, a példányt megtekintő felhasználót képviseli. Nem lehet vele bejelentkezni de automatikusan hozzá lesz rendelve.',
'users_delete' => 'Felhasználó törlése',
'user_api_token' => 'API vezérjel',
'user_api_token_id' => 'Vezérjel azonosító',
'user_api_token_id_desc' => 'Ez egy nem szerkeszthető, a rendszer által létrehozott azonosító ehhez a vezérjelhez amire API kérésekben lehet szükség.',
- 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret' => 'Vezérjel titkos kódja',
'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
'user_api_token_created' => 'Vezérjel létrehozva :timeAgo',
'user_api_token_updated' => 'Vezérjel frissítve :timeAgo',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'reset_password' => 'Reimposta Password',
'reset_password_send_instructions' => 'Inserisci il tuo indirizzo sotto e ti verrà inviata una mail contenente un link per resettare la tua password.',
'reset_password_send_button' => 'Invia Link Reset',
- 'reset_password_sent_success' => 'Un link di reset è stato mandato a :email.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'La tua password è stata resettata correttamente.',
'email_reset_subject' => 'Reimposta la password di :appName',
'email_reset_text' => 'Stai ricevendo questa mail perché abbiamo ricevuto una richiesta di reset della password per il tuo account.',
'profile_menu' => 'Menu del profilo',
'view_profile' => 'Visualizza Profilo',
'edit_profile' => 'Modifica Profilo',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Info',
'email_already_confirmed' => 'La mail è già stata confermata, esegui il login.',
'email_confirmation_invalid' => 'Questo token di conferma non è valido o già stato utilizzato, registrati nuovamente.',
'email_confirmation_expired' => 'Il token di conferma è scaduto, è stata inviata una nuova mail di conferma.',
- 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'email_confirmation_awaiting' => 'L\'indirizzo email per l\'account in uso deve essere confermato',
'ldap_fail_anonymous' => 'Accesso LDAP fallito usando bind anonimo',
'ldap_fail_authed' => 'Accesso LDAP fallito usando il dn e la password inseriti',
'ldap_extension_not_installed' => 'L\'estensione PHP LDAP non è installata',
// Error pages
'404_page_not_found' => 'Pagina Non Trovata',
'sorry_page_not_found' => 'La pagina che stavi cercando non è stata trovata.',
+ 'sorry_page_not_found_permission_warning' => 'Se pensi che questa pagina possa esistere, potresti non avere i permessi per visualizzarla.',
'return_home' => 'Ritorna alla home',
'error_occurred' => 'C\'è Stato un errore',
'app_down' => ':appName è offline',
// API errors
'api_no_authorization_found' => 'No authorization token found on the request',
- 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_bad_authorization_format' => 'Un token di autorizzazione è stato trovato nella richiesta, ma il formato sembra non corretto',
'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
- 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_no_api_permission' => 'Il proprietario del token API utilizzato non ha il permesso di effettuare chiamate API',
'api_user_token_expired' => 'The authorization token used has expired',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => 'La password deve avere almeno sei caratteri e corrispondere alla conferma.',
'user' => "Non possiamo trovare un utente per quella mail.",
- 'token' => 'Questo token per reimpostare la password non è valido.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'Ti abbiamo inviato via mail il link per reimpostare la password!',
'reset' => 'La tua password è stata resettata!',
// API Tokens
'user_api_token_create' => 'Create API Token',
- 'user_api_token_name' => 'Name',
+ 'user_api_token_name' => 'Nome',
'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
- 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry' => 'Data di scadenza',
'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
'user_api_token_create_success' => 'API token successfully created',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
- 'da' => 'Dansk',
+ 'cs' => 'Česky',
+ 'da' => 'Danese',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Sloveno',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'reset_password' => 'パスワードリセット',
'reset_password_send_instructions' => '以下にEメールアドレスを入力すると、パスワードリセットリンクが記載されたメールが送信されます。',
'reset_password_send_button' => 'リセットリンクを送信',
- 'reset_password_sent_success' => ':emailへリセットリンクを送信しました。',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'パスワードがリセットされました。',
'email_reset_subject' => ':appNameのパスワードをリセット',
'email_reset_text' => 'このメールは、パスワードリセットがリクエストされたため送信されています。',
'profile_menu' => 'Profile Menu',
'view_profile' => 'プロフィール表示',
'edit_profile' => 'プロフィール編集',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Info',
'image_image_name' => '画像名',
'image_delete_used' => 'この画像は以下のページで利用されています。',
'image_delete_confirm' => '削除してもよろしければ、再度ボタンを押して下さい。',
- 'image_select_image' => '選択',
+ 'image_select_image' => '画像を選択',
'image_dropzone' => '画像をドロップするか、クリックしてアップロード',
'images_deleted' => '画像を削除しました',
'image_preview' => '画像プレビュー',
'image_upload_success' => '画像がアップロードされました',
'image_update_success' => '画像が更新されました',
'image_delete_success' => '画像が削除されました',
- 'image_upload_remove' => 'Remove',
+ 'image_upload_remove' => '削除',
// Code Editor
- 'code_editor' => 'ã\83\97ã\83ã\82°ã\83©ã\83 ã\83\96ã\83ã\83\83ã\82¯ç·¨é\9b\86',
+ 'code_editor' => 'ã\82³ã\83¼ã\83\89ã\82\92ç·¨é\9b\86ã\81\99ã\82\8b',
'code_language' => 'プログラミング言語の選択',
'code_content' => 'プログラム内容',
'code_save' => 'プログラムを保存',
'ldap_fail_authed' => '識別名, パスワードを用いたLDAPアクセスに失敗しました',
'ldap_extension_not_installed' => 'LDAP PHP extensionがインストールされていません',
'ldap_cannot_connect' => 'LDAPサーバに接続できませんでした',
- 'saml_already_logged_in' => 'Already logged in',
+ 'saml_already_logged_in' => '既にログインしています',
'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled',
'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
// System
- 'path_not_writable' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\83\91ã\82¹ :filePath ã\81¸ã\82¢ã\83\83ã\83\97ã\83ã\83¼ã\83\89ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\82µã\83¼ã\83\90ä¸\8aã\81§ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\82\92許å\8f¯してください。',
+ 'path_not_writable' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\83\91ã\82¹ :filePath ã\81¸ã\82¢ã\83\83ã\83\97ã\83ã\83¼ã\83\89ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\82µã\83¼ã\83\90ä¸\8aã\81§ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81\8c許å\8f¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81\8b確èª\8dしてください。',
'cannot_get_image_from_url' => ':url から画像を取得できませんでした。',
'cannot_create_thumbs' => 'このサーバはサムネイルを作成できません。GD PHP extensionがインストールされていることを確認してください。',
'server_upload_limit' => 'このサイズの画像をアップロードすることは許可されていません。ファイルサイズを小さくし、再試行してください。',
// Attachments
'attachment_page_mismatch' => '添付を更新するページが一致しません',
- 'attachment_not_found' => 'Attachment not found',
+ 'attachment_not_found' => '添付ファイルが見つかりません。',
// Pages
'page_draft_autosave_fail' => '下書きの保存に失敗しました。インターネットへ接続してください。',
// Comments
'comment_list' => 'An error occurred while fetching the comments.',
- 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'cannot_add_comment_to_draft' => '下書きにコメントは追加できません。',
'comment_add' => 'An error occurred while adding / updating the comment.',
'comment_delete' => 'An error occurred while deleting the comment.',
'empty_comment' => 'Cannot add an empty comment.',
// Error pages
'404_page_not_found' => 'ページが見つかりません',
'sorry_page_not_found' => 'ページを見つけることができませんでした。',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => 'ホームに戻る',
'error_occurred' => 'エラーが発生しました',
'app_down' => ':appNameは現在停止しています',
'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
- 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_user_token_expired' => '認証トークンが期限切れです。',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
];
'password' => 'パスワードは6文字以上である必要があります。',
'user' => "このEメールアドレスに一致するユーザが見つかりませんでした。",
- 'token' => 'このパスワードリセットトークンは無効です。',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'パスワードリセットリンクを送信しました。',
'reset' => 'パスワードはリセットされました。',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'reset_password' => '비밀번호 바꾸기',
'reset_password_send_instructions' => '메일 주소를 입력하세요. 이 주소로 해당 과정을 위한 링크를 보낼 것입니다.',
'reset_password_send_button' => '메일 보내기',
- 'reset_password_sent_success' => ':email로 메일을 보냈습니다.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => '비밀번호를 바꿨습니다.',
'email_reset_subject' => ':appName 비밀번호 바꾸기',
'email_reset_text' => '비밀번호를 바꿉니다.',
'profile_menu' => '프로필',
'view_profile' => '프로필 보기',
'edit_profile' => '프로필 바꾸기',
+ 'dark_mode' => '다크 모드',
+ 'light_mode' => '라이트 모드',
// Layout tabs
'tab_info' => '정보',
// Error pages
'404_page_not_found' => '404 Not Found',
'sorry_page_not_found' => '문서를 못 찾았습니다.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => '처음으로 돌아가기',
'error_occurred' => '문제가 생겼습니다.',
'app_down' => ':appName에 문제가 있는 것 같습니다',
'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
'api_user_token_expired' => 'The authorization token used has expired',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => '여덟 글자를 넘어야 합니다.',
'user' => "메일 주소를 가진 사용자가 없습니다.",
- 'token' => '이 링크는 더 이상 유효하지 않습니다.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => '메일을 보냈습니다.',
'reset' => '비밀번호를 바꿨습니다.',
'role_manage_entity_permissions' => '문서별 권한 관리',
'role_manage_own_entity_permissions' => '직접 만든 문서별 권한 관리',
'role_manage_page_templates' => '템플릿 관리',
- 'role_access_api' => 'Access system API',
+ 'role_access_api' => '시스템 접근 API',
'role_manage_settings' => '사이트 설정 관리',
'role_asset' => '권한 항목',
'role_asset_desc' => '책자, 챕터, 문서별 권한은 이 설정에 우선합니다.',
'users_social_disconnect' => '계정 연결 끊기',
'users_social_connected' => ':socialAccount(와)과 연결했습니다.',
'users_social_disconnected' => ':socialAccount(와)과의 연결을 끊었습니다.',
- 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens' => 'API 토큰',
'users_api_tokens_none' => 'No API tokens have been created for this user',
- 'users_api_tokens_create' => 'Create Token',
- 'users_api_tokens_expires' => 'Expires',
- 'users_api_tokens_docs' => 'API Documentation',
+ 'users_api_tokens_create' => '토큰 만들기',
+ 'users_api_tokens_expires' => '만료',
+ 'users_api_tokens_docs' => 'API 설명서',
// API Tokens
- 'user_api_token_create' => 'Create API Token',
- 'user_api_token_name' => 'Name',
+ 'user_api_token_create' => 'API 토큰 만들기',
+ 'user_api_token_name' => '제목',
'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
- 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry' => '만료일',
'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
'user_api_token_create_success' => 'API token successfully created',
'user_api_token_update_success' => 'API token successfully updated',
- 'user_api_token' => 'API Token',
- 'user_api_token_id' => 'Token ID',
+ 'user_api_token' => 'API 토큰',
+ 'user_api_token_id' => '토큰 ID',
'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
'user_api_token_secret' => 'Token Secret',
'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
'user_api_token_created' => 'Token Created :timeAgo',
'user_api_token_updated' => 'Token Updated :timeAgo',
- 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete' => '토큰 삭제',
'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
'user_api_token_delete_success' => 'API token successfully deleted',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'reset_password' => 'Wachtwoord Herstellen',
'reset_password_send_instructions' => 'Geef je e-mail en we sturen je een link om je wachtwoord te herstellen',
'reset_password_send_button' => 'Link Sturen',
- 'reset_password_sent_success' => 'Een link om je wachtwoord te herstellen is verstuurd naar :email.',
+ 'reset_password_sent' => 'Een link om het wachtwoord te resetten zal verstuurd worden naar :email als dat e-mailadres in het systeem gevonden is.',
'reset_password_success' => 'Je wachtwoord is succesvol hersteld.',
'email_reset_subject' => 'Herstel je wachtwoord van :appName',
'email_reset_text' => 'Je ontvangt deze e-mail zodat je je wachtwoord kunt herstellen.',
'delete' => 'Verwijder',
'search' => 'Zoek',
'search_clear' => 'Zoekopdracht wissen',
- 'reset' => 'Reset',
+ 'reset' => 'Resetten',
'remove' => 'Verwijderen',
'add' => 'Toevoegen',
'fullscreen' => 'Volledig scherm',
'profile_menu' => 'Profiel menu',
'view_profile' => 'Profiel Weergeven',
'edit_profile' => 'Profiel Bewerken',
+ 'dark_mode' => 'Donkere Modus',
+ 'light_mode' => 'Lichte Modus',
// Layout tabs
'tab_info' => 'Info',
'recently_updated_pages' => 'Recent Bijgewerkte Pagina\'s',
'recently_created_chapters' => 'Recent Aangemaakte Hoofdstukken',
'recently_created_books' => 'Recent Aangemaakte Boeken',
- 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_created_shelves' => 'Recent Aangemaakte Boekenplanken',
'recently_update' => 'Recent Bijgewerkt',
'recently_viewed' => 'Recent Bekeken',
'recent_activity' => 'Recente Activiteit',
// Error pages
'404_page_not_found' => 'Pagina Niet Gevonden',
'sorry_page_not_found' => 'Sorry, de pagina die je zocht is niet beschikbaar.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => 'Terug naar home',
'error_occurred' => 'Er Ging Iets Fout',
'app_down' => ':appName is nu niet beschikbaar',
'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
'api_user_token_expired' => 'The authorization token used has expired',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => 'Wachtwoorden moeten overeenkomen en minimaal zes tekens lang zijn.',
'user' => "We kunnen niemand vinden met dat e-mailadres.",
- 'token' => 'De token om het wachtwoord te herstellen is ongeldig.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'We hebben je een link gestuurd om je wachtwoord te herstellen!',
'reset' => 'Je wachtwoord is hersteld!',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'reset_password' => 'Resetowanie hasła',
'reset_password_send_instructions' => 'Wprowadź adres e-mail powiązany z Twoim kontem, by otrzymać link do resetowania hasła.',
'reset_password_send_button' => 'Wyślij link do resetowania hasła',
- 'reset_password_sent_success' => 'Wysłano link do resetowania hasła na adres :email.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'Hasło zostało zresetowane pomyślnie.',
'email_reset_subject' => 'Resetowanie hasła do :appName',
'email_reset_text' => 'Otrzymujesz tę wiadomość ponieważ ktoś zażądał zresetowania hasła do Twojego konta.',
'profile_menu' => 'Menu profilu',
'view_profile' => 'Zobacz profil',
'edit_profile' => 'Edytuj profil',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Informacje',
// Error pages
'404_page_not_found' => 'Strona nie została znaleziona',
'sorry_page_not_found' => 'Przepraszamy, ale strona której szukasz nie została znaleziona.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => 'Powrót do strony głównej',
'error_occurred' => 'Wystąpił błąd',
'app_down' => ':appName jest aktualnie wyłączona',
'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
'api_user_token_expired' => 'The authorization token used has expired',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => 'Hasło musi zawierać co najmniej 6 znaków i być zgodne z powtórzeniem.',
'user' => "Nie znaleziono użytkownika o takim adresie e-mail.",
- 'token' => 'Ten token resetowania hasła jest nieprawidłowy.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'Wysłaliśmy Ci link do resetowania hasła!',
'reset' => 'Twoje hasło zostało zresetowane!',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
--- /dev/null
+<?php
+/**
+ * Activity text strings.
+ * Is used for all the text within activity logs & notifications.
+ */
+return [
+
+ // Pages
+ 'page_create' => 'created page',
+ 'page_create_notification' => 'Page Successfully Created',
+ 'page_update' => 'updated page',
+ 'page_update_notification' => 'Page Successfully Updated',
+ 'page_delete' => 'deleted page',
+ 'page_delete_notification' => 'Page Successfully Deleted',
+ 'page_restore' => 'restored page',
+ 'page_restore_notification' => 'Page Successfully Restored',
+ 'page_move' => 'moved page',
+
+ // Chapters
+ 'chapter_create' => 'created chapter',
+ 'chapter_create_notification' => 'Chapter Successfully Created',
+ 'chapter_update' => 'updated chapter',
+ 'chapter_update_notification' => 'Chapter Successfully Updated',
+ 'chapter_delete' => 'deleted chapter',
+ 'chapter_delete_notification' => 'Chapter Successfully Deleted',
+ 'chapter_move' => 'moved chapter',
+
+ // Books
+ 'book_create' => 'created book',
+ 'book_create_notification' => 'Book Successfully Created',
+ 'book_update' => 'updated book',
+ 'book_update_notification' => 'Book Successfully Updated',
+ 'book_delete' => 'deleted book',
+ 'book_delete_notification' => 'Book Successfully Deleted',
+ 'book_sort' => 'sorted book',
+ 'book_sort_notification' => 'Book Successfully Re-sorted',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created Bookshelf',
+ 'bookshelf_create_notification' => 'Bookshelf Successfully Created',
+ 'bookshelf_update' => 'updated bookshelf',
+ 'bookshelf_update_notification' => 'Bookshelf Successfully Updated',
+ 'bookshelf_delete' => 'deleted bookshelf',
+ 'bookshelf_delete_notification' => 'Bookshelf Successfully Deleted',
+
+ // Other
+ 'commented_on' => 'commented on',
+];
--- /dev/null
+<?php
+/**
+ * Authentication Language Lines
+ * The following language lines are used during authentication for various
+ * messages that we need to display to the user.
+ */
+return [
+
+ 'failed' => 'These credentials do not match our records.',
+ 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+
+ // Login & Register
+ 'sign_up' => 'Sign up',
+ 'log_in' => 'Log in',
+ 'log_in_with' => 'Login with :socialDriver',
+ 'sign_up_with' => 'Sign up with :socialDriver',
+ 'logout' => 'Logout',
+
+ 'name' => 'Name',
+ 'username' => 'Username',
+ 'email' => 'Email',
+ 'password' => 'Password',
+ 'password_confirm' => 'Confirm Password',
+ 'password_hint' => 'Must be over 7 characters',
+ 'forgot_password' => 'Forgot Password?',
+ 'remember_me' => 'Remember Me',
+ 'ldap_email_hint' => 'Please enter an email to use for this account.',
+ 'create_account' => 'Create Account',
+ 'already_have_account' => 'Already have an account?',
+ 'dont_have_account' => 'Don\'t have an account?',
+ 'social_login' => 'Social Login',
+ 'social_registration' => 'Social Registration',
+ 'social_registration_text' => 'Register and sign in using another service.',
+
+ 'register_thanks' => 'Thanks for registering!',
+ 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.',
+ 'registrations_disabled' => 'Registrations are currently disabled',
+ 'registration_email_domain_invalid' => 'That email domain does not have access to this application',
+ 'register_success' => 'Thanks for signing up! You are now registered and signed in.',
+
+
+ // Password Reset
+ 'reset_password' => 'Reset Password',
+ 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
+ 'reset_password_send_button' => 'Send Reset Link',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Your password has been successfully reset.',
+ 'email_reset_subject' => 'Reset your :appName password',
+ 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
+ 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.',
+
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirm your email on :appName',
+ 'email_confirm_greeting' => 'Thanks for joining :appName!',
+ 'email_confirm_text' => 'Please confirm your email address by clicking the button below:',
+ 'email_confirm_action' => 'Confirm Email',
+ 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.',
+ 'email_confirm_success' => 'Your email has been confirmed!',
+ 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.',
+
+ 'email_not_confirmed' => 'Email Address Not Confirmed',
+ 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
+ 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
+ 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
+ 'email_not_confirmed_resend_button' => 'Resend Confirmation Email',
+
+ // User Invite
+ 'user_invite_email_subject' => 'You have been invited to join :appName!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Set Account Password',
+ 'user_invite_page_welcome' => 'Welcome to :appName!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Confirm Password',
+ 'user_invite_success' => 'Password set, you now have access to :appName!'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Common elements found throughout many areas of BookStack.
+ */
+return [
+
+ // Buttons
+ 'cancel' => 'Cancel',
+ 'confirm' => 'Confirm',
+ 'back' => 'Back',
+ 'save' => 'Save',
+ 'continue' => 'Continue',
+ 'select' => 'Select',
+ 'toggle_all' => 'Toggle All',
+ 'more' => 'More',
+
+ // Form Labels
+ 'name' => 'Name',
+ 'description' => 'Description',
+ 'role' => 'Role',
+ 'cover_image' => 'Cover image',
+ 'cover_image_description' => 'This image should be approx 440x250px.',
+
+ // Actions
+ 'actions' => 'Actions',
+ 'view' => 'View',
+ 'view_all' => 'View All',
+ 'create' => 'Create',
+ 'update' => 'Update',
+ 'edit' => 'Edit',
+ 'sort' => 'Sort',
+ 'move' => 'Move',
+ 'copy' => 'Copy',
+ 'reply' => 'Reply',
+ 'delete' => 'Delete',
+ 'search' => 'Search',
+ 'search_clear' => 'Clear Search',
+ 'reset' => 'Reset',
+ 'remove' => 'Remove',
+ 'add' => 'Add',
+ 'fullscreen' => 'Fullscreen',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'Name',
+ 'sort_created_at' => 'Created Date',
+ 'sort_updated_at' => 'Updated Date',
+
+ // Misc
+ 'deleted_user' => 'Deleted User',
+ 'no_activity' => 'No activity to show',
+ 'no_items' => 'No items available',
+ 'back_to_top' => 'Back to top',
+ 'toggle_details' => 'Toggle Details',
+ 'toggle_thumbnails' => 'Toggle Thumbnails',
+ 'details' => 'Details',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'List View',
+ 'default' => 'Default',
+ 'breadcrumb' => 'Breadcrumb',
+
+ // Header
+ 'profile_menu' => 'Profile Menu',
+ 'view_profile' => 'View Profile',
+ 'edit_profile' => 'Edit Profile',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_content' => 'Content',
+
+ // Email Content
+ 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
+ 'email_rights' => 'All rights reserved',
+];
--- /dev/null
+<?php
+/**
+ * Text used in custom JavaScript driven components.
+ */
+return [
+
+ // Image Manager
+ 'image_select' => 'Image Select',
+ 'image_all' => 'All',
+ 'image_all_title' => 'View all images',
+ 'image_book_title' => 'View images uploaded to this book',
+ 'image_page_title' => 'View images uploaded to this page',
+ 'image_search_hint' => 'Search by image name',
+ 'image_uploaded' => 'Uploaded :uploadedDate',
+ 'image_load_more' => 'Load More',
+ 'image_image_name' => 'Image Name',
+ 'image_delete_used' => 'This image is used in the pages below.',
+ 'image_delete_confirm' => 'Click delete again to confirm you want to delete this image.',
+ 'image_select_image' => 'Select Image',
+ 'image_dropzone' => 'Drop images or click here to upload',
+ 'images_deleted' => 'Images Deleted',
+ 'image_preview' => 'Image Preview',
+ 'image_upload_success' => 'Image uploaded successfully',
+ 'image_update_success' => 'Image details successfully updated',
+ 'image_delete_success' => 'Image successfully deleted',
+ 'image_upload_remove' => 'Remove',
+
+ // Code Editor
+ 'code_editor' => 'Edit Code',
+ 'code_language' => 'Code Language',
+ 'code_content' => 'Code Content',
+ 'code_save' => 'Save Code',
+];
--- /dev/null
+<?php
+/**
+ * Text used for 'Entities' (Document Structure Elements) such as
+ * Books, Shelves, Chapters & Pages
+ */
+return [
+
+ // Shared
+ 'recently_created' => 'Recently Created',
+ 'recently_created_pages' => 'Recently Created Pages',
+ 'recently_updated_pages' => 'Recently Updated Pages',
+ 'recently_created_chapters' => 'Recently Created Chapters',
+ 'recently_created_books' => 'Recently Created Books',
+ 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_update' => 'Recently Updated',
+ 'recently_viewed' => 'Recently Viewed',
+ 'recent_activity' => 'Recent Activity',
+ 'create_now' => 'Create one now',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Created :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Updated :timeLength',
+ 'meta_updated_name' => 'Updated :timeLength by :user',
+ 'entity_select' => 'Entity Select',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'My Recent Drafts',
+ 'my_recently_viewed' => 'My Recently Viewed',
+ 'no_pages_viewed' => 'You have not viewed any pages',
+ 'no_pages_recently_created' => 'No pages have been recently created',
+ 'no_pages_recently_updated' => 'No pages have been recently updated',
+ 'export' => 'Export',
+ 'export_html' => 'Contained Web File',
+ 'export_pdf' => 'PDF File',
+ 'export_text' => 'Plain Text File',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissions',
+ 'permissions_intro' => 'Once enabled, These permissions will take priority over any set role permissions.',
+ 'permissions_enable' => 'Enable Custom Permissions',
+ 'permissions_save' => 'Save Permissions',
+
+ // Search
+ 'search_results' => 'Search Results',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Clear Search',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_filters' => 'Search Filters',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Shelves',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_long' => 'Bookshelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books here to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Bookshelf :name',
+ 'shelves_edit' => 'Edit Bookshelf',
+ 'shelves_delete' => 'Delete Bookshelf',
+ 'shelves_delete_named' => 'Delete Bookshelf :name',
+ 'shelves_delete_explain' => "This will delete the bookshelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this bookshelf?',
+ 'shelves_permissions' => 'Bookshelf Permissions',
+ 'shelves_permissions_updated' => 'Bookshelf Permissions Updated',
+ 'shelves_permissions_active' => 'Bookshelf Permissions Active',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this bookshelf to all books contained within. Before activating, ensure any changes to the permissions of this bookshelf have been saved.',
+ 'shelves_copy_permission_success' => 'Bookshelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages will be removed and added directly to the parent book.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapter_move_success' => 'Chapter moved to :bookName',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_move_success' => 'Page moved to ":parentName"',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Edit Content',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded, The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ 'tags_explain' => "Add some tags to better categorise your content. \n You can assign a value to a tag for more in-depth organisation.",
+ 'tags_add' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_items' => 'Attached Items',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete_confirm' => 'Click delete again to confirm you want to delete this attachment.',
+ 'attachments_dropzone' => 'Drop files or click here to attach a file',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_count' => '{0} No Comments|{1} 1 Comment|[2,*] :count Comments',
+ 'comment_save' => 'Save Comment',
+ 'comment_saving' => 'Saving comment...',
+ 'comment_deleting' => 'Deleting comment...',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_delete_success' => 'Revision deleted',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Text shown in error messaging.
+ */
+return [
+
+ // Permissions
+ 'permission' => 'You do not have permission to access the requested page.',
+ 'permissionJson' => 'You do not have permission to perform the requested action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'file_upload_timeout' => 'The file upload has timed out.',
+
+ // Attachments
+ 'attachment_page_mismatch' => 'Page mismatch during attachment update',
+ 'attachment_not_found' => 'Attachment not found',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Bookshelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ 'return_home' => 'Return to home',
+ 'error_occurred' => 'An Error Occurred',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+];
--- /dev/null
+<?php
+/**
+ * Pagination Language Lines
+ * The following language lines are used by the paginator library to build
+ * the simple pagination links.
+ */
+return [
+
+ 'previous' => '« Previous',
+ 'next' => 'Next »',
+
+];
--- /dev/null
+<?php
+/**
+ * Password Reminder Language Lines
+ * The following language lines are the default lines which match reasons
+ * that are given by the password broker for a password update attempt has failed.
+ */
+return [
+
+ 'password' => 'Passwords must be at least eight characters and match the confirmation.',
+ 'user' => "We can't find a user with that e-mail address.",
+ 'token' => 'The password reset token is invalid for this email address.',
+ 'sent' => 'We have e-mailed your password reset link!',
+ 'reset' => 'Your password has been reset!',
+
+];
--- /dev/null
+<?php
+/**
+ * Settings text strings
+ * Contains all text strings used in the general settings sections of BookStack
+ * including users and roles.
+ */
+return [
+
+ // Common Messages
+ 'settings' => 'Settings',
+ 'settings_save' => 'Save Settings',
+ 'settings_save_success' => 'Settings saved',
+
+ // App Settings
+ 'app_customization' => 'Customization',
+ 'app_features_security' => 'Features & Security',
+ 'app_name' => 'Application Name',
+ 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
+ 'app_name_header' => 'Show name in header',
+ 'app_public_access' => 'Public Access',
+ 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
+ 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_toggle' => 'Allow public access',
+ 'app_public_viewing' => 'Allow public viewing?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_editor' => 'Page Editor',
+ 'app_editor_desc' => 'Select which editor will be used by all users to edit pages.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the <head> section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Application Logo',
+ 'app_logo_desc' => 'This image should be 43px in height. <br>Large images will be scaled down.',
+ 'app_primary_color' => 'Application Primary Color',
+ 'app_primary_color_desc' => 'Sets the primary color for the application including the banner, buttons, and links.',
+ 'app_homepage' => 'Application Homepage',
+ 'app_homepage_desc' => 'Select a view to show on the homepage instead of the default view. Page permissions are ignored for selected pages.',
+ 'app_homepage_select' => 'Select a page',
+ 'app_disable_comments' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. <br> Existing comments are not shown.',
+
+ // Color settings
+ 'content_colors' => 'Content Colors',
+ 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. <br> Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ 'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.",
+ 'maint_image_cleanup_ignore_revisions' => 'Ignore images in revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ 'maint_image_cleanup_nothing_found' => 'No unused images found, Nothing deleted!',
+ 'maint_send_test_email' => 'Send a Test Email',
+ 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.',
+ 'maint_send_test_email_run' => 'Send test email',
+ 'maint_send_test_email_success' => 'Email sent to :address',
+ 'maint_send_test_email_mail_subject' => 'Test Email',
+ 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!',
+ 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'role_create' => 'Create New Role',
+ 'role_create_success' => 'Role successfully created',
+ 'role_delete' => 'Delete Role',
+ 'role_delete_confirm' => 'This will delete the role with the name \':roleName\'.',
+ 'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.',
+ 'role_delete_no_migration' => "Don't migrate users",
+ 'role_delete_sure' => 'Are you sure you want to delete this role?',
+ 'role_delete_success' => 'Role successfully deleted',
+ 'role_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_asset' => 'Asset Permissions',
+ 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_update_success' => 'Role successfully updated',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_details' => 'User Details',
+ 'users_details_desc' => 'Set a display name and an email address for this user. The email address will be used for logging into the application.',
+ 'users_details_desc_no_email' => 'Set a display name for this user so others can recognise them.',
+ 'users_role' => 'User Roles',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 6 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
+ 'users_password_warning' => 'Only fill the below if you would like to change your password.',
+ 'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.',
+ 'users_delete' => 'Delete User',
+ 'users_delete_named' => 'Delete user :userName',
+ 'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.',
+ 'users_delete_confirm' => 'Are you sure you want to delete this user?',
+ 'users_delete_success' => 'Users successfully removed',
+ 'users_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_edit_success' => 'User successfully updated',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token_create_success' => 'API token successfully created',
+ 'user_api_token_update_success' => 'API token successfully updated',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token Created :timeAgo',
+ 'user_api_token_updated' => 'Token Updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+ 'user_api_token_delete_success' => 'API token successfully deleted',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'English',
+ 'ar' => 'العربية',
+ 'cs' => 'Česky',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ]
+ //!////////////////////////////////
+];
--- /dev/null
+<?php
+/**
+ * Validation Lines
+ * The following language lines contain the default error messages used by
+ * the validator class. Some of these rules have multiple versions such
+ * as the size rules. Feel free to tweak each of these messages here.
+ */
+return [
+
+ // Standard laravel validation lines
+ 'accepted' => '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, dashes and underscores.',
+ '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.',
+ 'ends_with' => 'The :attribute must end with one of the following: :values',
+ 'filled' => 'The :attribute field is required.',
+ 'gt' => [
+ 'numeric' => 'The :attribute must be greater than :value.',
+ 'file' => 'The :attribute must be greater than :value kilobytes.',
+ 'string' => 'The :attribute must be greater than :value characters.',
+ 'array' => 'The :attribute must have more than :value items.',
+ ],
+ 'gte' => [
+ 'numeric' => 'The :attribute must be greater than or equal :value.',
+ 'file' => 'The :attribute must be greater than or equal :value kilobytes.',
+ 'string' => 'The :attribute must be greater than or equal :value characters.',
+ 'array' => 'The :attribute must have :value items or more.',
+ ],
+ 'exists' => 'The selected :attribute is invalid.',
+ 'image' => 'The :attribute must be an image.',
+ 'image_extension' => 'The :attribute must have a valid & supported image extension.',
+ 'in' => 'The selected :attribute is invalid.',
+ 'integer' => 'The :attribute must be an integer.',
+ 'ip' => 'The :attribute must be a valid IP address.',
+ 'ipv4' => 'The :attribute must be a valid IPv4 address.',
+ 'ipv6' => 'The :attribute must be a valid IPv6 address.',
+ 'json' => 'The :attribute must be a valid JSON string.',
+ 'lt' => [
+ 'numeric' => 'The :attribute must be less than :value.',
+ 'file' => 'The :attribute must be less than :value kilobytes.',
+ 'string' => 'The :attribute must be less than :value characters.',
+ 'array' => 'The :attribute must have less than :value items.',
+ ],
+ 'lte' => [
+ 'numeric' => 'The :attribute must be less than or equal :value.',
+ 'file' => 'The :attribute must be less than or equal :value kilobytes.',
+ 'string' => 'The :attribute must be less than or equal :value characters.',
+ 'array' => 'The :attribute must not have more than :value items.',
+ ],
+ '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.',
+ ],
+ 'no_double_extension' => 'The :attribute must only have a single file extension.',
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ '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.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
'reset_password' => 'Redefinir Senha',
'reset_password_send_instructions' => 'Insira seu e-mail abaixo e uma mensagem com o link de redefinição de senha lhe será enviada.',
'reset_password_send_button' => 'Enviar o Link de Redefinição',
- 'reset_password_sent_success' => 'Um link de redefinição de senha foi enviado para :email.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'Sua senha foi redefinida com sucesso.',
'email_reset_subject' => 'Redefina a senha de :appName',
'email_reset_text' => 'Você recebeu esse e-mail pois recebemos uma solicitação de redefinição de senha para a sua conta.',
'profile_menu' => 'Menu de Perfil',
'view_profile' => 'Visualizar Perfil',
'edit_profile' => 'Editar Perfil',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Informações',
// Error pages
'404_page_not_found' => 'Página Não Encontrada',
'sorry_page_not_found' => 'Desculpe, a página que você está procurando não pôde ser encontrada.',
+ 'sorry_page_not_found_permission_warning' => 'Se você esperava que esta página existisse, talvez você não tenha permissão para visualizá-la.',
'return_home' => 'Retornar à página inicial',
'error_occurred' => 'Ocorreu um Erro',
'app_down' => ':appName está fora do ar no momento',
'api_user_no_api_permission' => 'O proprietário do token de API utilizado não tem permissão para fazer requisições de API',
'api_user_token_expired' => 'O token de autenticação expirou',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Erro encontrado ao enviar um e-mail de teste:',
+
];
'password' => 'Senhas devem ter ao menos oito caracteres e ser iguais à confirmação.',
'user' => "Não pudemos encontrar um usuário com o e-mail fornecido.",
- 'token' => 'O token de redefinição de senha é inválido.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'Enviamos o link de redefinição de senha para o seu e-mail!',
'reset' => 'Sua senha foi redefinida com sucesso!',
'reg_enable_toggle' => 'Habilitar cadastro',
'reg_enable_desc' => 'Quando o cadastro é habilitado, visitantes poderão cadastrar-se como usuários do aplicativo. Realizado o cadastro, recebem um único cargo padrão.',
'reg_default_role' => 'Cargo padrão para usuários após o cadastro',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_external_warning' => 'A opção acima é ignorada enquanto a autenticação externa LDAP ou SAML estiver ativa. Contas de usuários para membros não existentes serão criadas automaticamente se a autenticação pelo sistema externo em uso for bem sucedida.',
'reg_email_confirmation' => 'Confirmação de E-mail',
'reg_email_confirmation_toggle' => 'Requerer confirmação de e-mail',
'reg_confirm_email_desc' => 'Em caso da restrição de domínios estar em uso, a confirmação de e-mail será requerida e essa opção será ignorada.',
'users_send_invite_text' => 'Você pode escolher enviar a este usuário um convite por e-mail que o possibilitará definir sua própria senha, ou defina você uma senha.',
'users_send_invite_option' => 'Enviar convite por e-mail',
'users_external_auth_id' => 'ID de Autenticação Externa',
- 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
+ 'users_external_auth_id_desc' => 'Este ID é usado para relacionar o usuário quando comunicando com algum sistema de autenticação externo.',
'users_password_warning' => 'Apenas preencha os dados abaixo caso queira modificar a sua senha.',
'users_system_public' => 'Esse usuário representa quaisquer convidados que visitam o aplicativo. Ele não pode ser usado para login mas é automaticamente atribuído.',
'users_delete' => 'Excluir Usuário',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
// Chapters
'chapter_create' => 'создал главу',
- 'chapter_create_notification' => 'глава успешно создана',
+ 'chapter_create_notification' => 'Ð\93лава успешно создана',
'chapter_update' => 'обновил главу',
'chapter_update_notification' => 'Глава успешно обновлена',
'chapter_delete' => 'удалил главу',
'book_sort_notification' => 'Книга успешно отсортирована',
// Bookshelves
- 'bookshelf_create' => 'Ñ\81оздал книжнÑ\83Ñ\8e полкÑ\83',
- 'bookshelf_create_notification' => 'Ð\9aнижнаÑ\8f полка успешно создана',
- 'bookshelf_update' => 'обновил книжнÑ\83Ñ\8e полкÑ\83',
- 'bookshelf_update_notification' => 'Ð\9aнижнаÑ\8f полка успешно обновлена',
- 'bookshelf_delete' => 'Ñ\83далил книжнÑ\83Ñ\8e полкÑ\83',
- 'bookshelf_delete_notification' => 'Ð\9aнижнаÑ\8f полка успешно удалена',
+ 'bookshelf_create' => 'создал полку',
+ 'bookshelf_create_notification' => 'Ð\9fолка успешно создана',
+ 'bookshelf_update' => 'обновил полку',
+ 'bookshelf_update_notification' => 'Ð\9fолка успешно обновлена',
+ 'bookshelf_delete' => 'удалил полку',
+ 'bookshelf_delete_notification' => 'Ð\9fолка успешно удалена',
// Other
'commented_on' => 'прокомментировал',
return [
'failed' => 'Учетная запись не найдена.',
- 'throttle' => 'СлиÑ\88ком много попÑ\8bÑ\82ок вÑ\85ода. Ð\9fожалÑ\83йÑ\81Ñ\82а, попÑ\80обÑ\83йÑ\82е позже через :seconds секунд.',
+ 'throttle' => 'СлиÑ\88ком много попÑ\8bÑ\82ок вÑ\85ода. Ð\9fожалÑ\83йÑ\81Ñ\82а, повÑ\82оÑ\80иÑ\82е попÑ\8bÑ\82кÑ\83 через :seconds секунд.',
// Login & Register
'sign_up' => 'Регистрация',
'email' => 'Адрес электронной почты',
'password' => 'Пароль',
'password_confirm' => 'Подтверждение пароля',
- 'password_hint' => 'Ð\94олжен бÑ\8bÑ\82Ñ\8c болÑ\8cÑ\88е 7 символов',
+ 'password_hint' => 'Ð\9cинимÑ\83м 8 символов',
'forgot_password' => 'Забыли пароль?',
'remember_me' => 'Запомнить меня',
'ldap_email_hint' => 'Введите адрес электронной почты для этой учетной записи.',
// Password Reset
'reset_password' => 'Сброс пароля',
- 'reset_password_send_instructions' => 'Введите свой email ниже, и вам будет отправлено письмо со ссылкой для сброса пароля.',
- 'reset_password_send_button' => 'Ð\9eÑ\82пÑ\80авиÑ\82Ñ\8c Ñ\81Ñ\81Ñ\8bлкÑ\83 длÑ\8f Ñ\81бÑ\80оÑ\81а',
- 'reset_password_sent_success' => 'Ссылка для сброса была отправлена на :email.',
+ 'reset_password_send_instructions' => 'Введите свой адрес электронной почты ниже, и вам будет отправлено письмо со ссылкой для сброса пароля.',
+ 'reset_password_send_button' => 'СбÑ\80оÑ\81иÑ\82Ñ\8c паÑ\80олÑ\8c',
+ 'reset_password_sent' => 'Ссылка для сброса пароля будет выслана на :email, если этот адрес находится в системе.',
'reset_password_success' => 'Ваш пароль был успешно сброшен.',
- 'email_reset_subject' => 'Сбросить ваш :appName пароль',
+ 'email_reset_subject' => 'Сброс пароля от :appName',
'email_reset_text' => 'Вы получили это письмо, потому что запросили сброс пароля для вашей учетной записи.',
'email_reset_not_requested' => 'Если вы не запрашивали сброса пароля, то никаких дополнительных действий не требуется.',
'email_not_confirmed' => 'Адрес электронной почты не подтвержден',
'email_not_confirmed_text' => 'Ваш email адрес все еще не подтвержден.',
'email_not_confirmed_click_link' => 'Пожалуйста, нажмите на ссылку в письме, которое было отправлено при регистрации.',
- 'email_not_confirmed_resend' => 'Ð\95Ñ\81ли вÑ\8b не можеÑ\82е найÑ\82и Ñ\8dлекÑ\82Ñ\80онное пиÑ\81Ñ\8cмо, вÑ\8b можеÑ\82е Ñ\81нова оÑ\82пÑ\80авиÑ\82Ñ\8c пиÑ\81Ñ\8cмо с подтверждением по форме ниже.',
+ 'email_not_confirmed_resend' => 'Ð\95Ñ\81ли вÑ\8b не можеÑ\82е найÑ\82и Ñ\8dлекÑ\82Ñ\80онное пиÑ\81Ñ\8cмо, вÑ\8b можеÑ\82е Ñ\81нова оÑ\82пÑ\80авиÑ\82Ñ\8c его с подтверждением по форме ниже.',
'email_not_confirmed_resend_button' => 'Переотправить письмо с подтверждением',
// User Invite
'user_invite_email_subject' => 'Вас приглашают присоединиться к :appName!',
'user_invite_email_greeting' => 'Для вас создан аккаунт в :appName.',
'user_invite_email_text' => 'Нажмите кнопку ниже, чтобы задать пароль и получить доступ:',
- 'user_invite_email_action' => 'УÑ\81Ñ\82ановиÑ\82Ñ\8c паÑ\80олÑ\8c аккаÑ\83нÑ\82Ñ\83.',
+ 'user_invite_email_action' => 'УÑ\81Ñ\82ановиÑ\82Ñ\8c паÑ\80олÑ\8c длÑ\8f аккаÑ\83нÑ\82а',
'user_invite_page_welcome' => 'Добро пожаловать в :appName!',
'user_invite_page_text' => 'Завершите настройку аккаунта, установите пароль для дальнейшего входа в :appName.',
'user_invite_page_confirm_button' => 'Подтвердите пароль',
'reset' => 'Сбросить',
'remove' => 'Удалить',
'add' => 'Добавить',
- 'fullscreen' => 'Fullscreen',
+ 'fullscreen' => 'На весь экран',
// Sort Options
'sort_options' => 'Параметры сортировки',
- 'sort_direction_toggle' => 'Переключить направления сортировки',
+ 'sort_direction_toggle' => 'Переключить направление сортировки',
'sort_ascending' => 'По возрастанию',
'sort_descending' => 'По убыванию',
'sort_name' => 'По имени',
// Header
'profile_menu' => 'Меню профиля',
- 'view_profile' => 'Просмотреть профиль',
+ 'view_profile' => 'Посмотреть профиль',
'edit_profile' => 'Редактировать профиль',
+ 'dark_mode' => 'Темный режим',
+ 'light_mode' => 'Светлый режим',
// Layout tabs
'tab_info' => 'Информация',
'tab_content' => 'Содержание',
// Email Content
- 'email_action_help' => 'Ð\95Ñ\81ли Ñ\83 ваÑ\81 возникли пÑ\80облемÑ\8b Ñ\81 нажаÑ\82ием кнопки \':actionText\', Ñ\82о Ñ\81копиÑ\80Ñ\83йÑ\82е и вÑ\81Ñ\82авÑ\8cÑ\82е Ñ\83казаннÑ\8bй URL-адÑ\80еÑ\81 в Ñ\81вой веб-бÑ\80аÑ\83зеÑ\80:',
+ 'email_action_help' => 'Если у вас возникли проблемы с нажатием кнопки \':actionText\', то скопируйте и вставьте указанный URL-адрес в свой браузер:',
'email_rights' => 'Все права защищены',
];
// Image Manager
'image_select' => 'Выбрать изображение',
'image_all' => 'Все',
- 'image_all_title' => 'Простмотр всех изображений',
+ 'image_all_title' => 'Просмотр всех изображений',
'image_book_title' => 'Просмотр всех изображений, загруженных в эту книгу',
'image_page_title' => 'Просмотр всех изображений, загруженных на эту страницу',
- 'image_search_hint' => 'Ð\9fоиÑ\81к по имени изображения',
- 'image_uploaded' => 'Ð\97агÑ\80Ñ\83женно :uploadedDate',
+ 'image_search_hint' => 'Ð\9fоиÑ\81к по названиÑ\8e изображения',
+ 'image_uploaded' => 'Загружено :uploadedDate',
'image_load_more' => 'Загрузить еще',
- 'image_image_name' => 'Ð\98мÑ\8f изображения',
+ 'image_image_name' => 'Ð\9dазвание изображения',
'image_delete_used' => 'Это изображение используется на странице ниже.',
'image_delete_confirm' => 'Нажмите \'Удалить\' еще раз для подтверждения удаления.',
'image_select_image' => 'Выбрать изображение',
'image_dropzone' => 'Перетащите изображение или кликните для загрузки',
'images_deleted' => 'Изображения удалены',
- 'image_preview' => 'Предосмотр изображения',
- 'image_upload_success' => 'Изображение загружено успешно',
+ 'image_preview' => 'Ð\9fÑ\80едпÑ\80оÑ\81моÑ\82Ñ\80 изобÑ\80ажениÑ\8f',
+ 'image_upload_success' => 'Изображение успешно загружено',
'image_update_success' => 'Детали изображения успешно обновлены',
'image_delete_success' => 'Изображение успешно удалено',
'image_upload_remove' => 'Удалить изображение',
'recently_viewed' => 'Недавно просмотренные',
'recent_activity' => 'Недавние действия',
'create_now' => 'Создать сейчас',
- 'revisions' => 'Версия',
+ 'revisions' => 'Версии',
'meta_revision' => 'Версия #:revisionCount',
'meta_created' => 'Создано :timeLength',
'meta_created_name' => ':user создал :timeLength',
// Permissions and restrictions
'permissions' => 'Разрешения',
- 'permissions_intro' => 'После включения эти разрешения будут иметь приоритет над любыми установленными полномочиями.',
+ 'permissions_intro' => 'После включения опции эти разрешения будут иметь приоритет над любыми установленными разрешениями роли.',
'permissions_enable' => 'Включение пользовательских разрешений',
'permissions_save' => 'Сохранить разрешения',
// Search
'search_results' => 'Результаты поиска',
- 'search_total_results_found' => ':count результатов найдено|:count всего результатов найдено',
+ 'search_total_results_found' => 'Найден :count результат|Найдено :count результата|Найдено :count результатов',
'search_clear' => 'Очистить поиск',
- 'search_no_pages' => 'Нет страниц, соответствующих этому поиску.',
+ 'search_no_pages' => 'Нет страниц, соответствующих этому поиску',
'search_for_term' => 'Искать :term',
'search_more' => 'Еще результаты',
'search_filters' => 'Фильтры поиска',
// Shelves
'shelf' => 'Полка',
'shelves' => 'Полки',
- 'x_shelves' => ':count полок|:count полок',
+ 'x_shelves' => ':count полка|:count полки|:count полок',
'shelves_long' => 'Книжные полки',
'shelves_empty' => 'Полки не созданы',
'shelves_create' => 'Создать новую полку',
'shelves_save' => 'Сохранить полку',
'shelves_books' => 'Книги из этой полки',
'shelves_add_books' => 'Добавить книгу в эту полку',
- 'shelves_drag_books' => 'Перетащите книгу сюда, чтобы добавить на эту полку',
+ 'shelves_drag_books' => 'Перетащите книги сюда, чтобы добавить их на эту полку',
'shelves_empty_contents' => 'На этой полке нет книг',
'shelves_edit_and_assign' => 'Изменить полку для привязки книг',
'shelves_edit_named' => 'Редактировать полку :name',
'shelves_delete_confirmation' => 'Вы уверены, что хотите удалить эту полку?',
'shelves_permissions' => 'Доступы к книжной полке',
'shelves_permissions_updated' => 'Доступы к книжной полке обновлены',
- 'shelves_permissions_active' => 'Ð\94оÑ\81Ñ\82Ñ\83пÑ\8b к книжной полке акÑ\82ивнÑ\8b',
+ 'shelves_permissions_active' => 'Ð\94ейÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ие Ñ\80азÑ\80еÑ\88ениÑ\8f книжной полки',
'shelves_copy_permissions_to_books' => 'Наследовать доступы книгам',
'shelves_copy_permissions' => 'Копировать доступы',
'shelves_copy_permissions_explain' => 'Это применит текущие настройки доступов этой книжной полки ко всем книгам, содержащимся внутри. Перед активацией убедитесь, что все изменения в доступах этой книжной полки сохранены.',
- 'shelves_copy_permission_success' => 'Доступы книжной полки скопированы для :count books',
+ 'shelves_copy_permission_success' => 'Доступы книжной полки скопированы для :count книг',
// Books
'book' => 'Книга',
'books' => 'Книги',
- 'x_books' => ':count книга|:count книг',
+ 'x_books' => ':count книга|:count книги|:count книг',
'books_empty' => 'Нет созданных книг',
'books_popular' => 'Популярные книги',
'books_recent' => 'Недавние книги',
'books_delete_confirmation' => 'Вы действительно хотите удалить эту книгу?',
'books_edit' => 'Редактировать книгу',
'books_edit_named' => 'Редактировать книгу :bookName',
- 'books_form_book_name' => 'Ð\98мÑ\8f книги',
+ 'books_form_book_name' => 'Ð\9dазвание книги',
'books_save' => 'Сохранить книгу',
'books_permissions' => 'Разрешения на книгу',
'books_permissions_updated' => 'Разрешения на книгу обновлены',
'books_empty_create_page' => 'Создать новую страницу',
'books_empty_sort_current_book' => 'Сортировка текущей книги',
'books_empty_add_chapter' => 'Добавить главу',
- 'books_permissions_active' => 'дейÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ие Ñ\80азÑ\80еÑ\88ениÑ\8f на книгÑ\83',
+ 'books_permissions_active' => 'Ð\94ейÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ие Ñ\80азÑ\80еÑ\88ениÑ\8f книги',
'books_search_this' => 'Поиск в этой книге',
'books_navigation' => 'Навигация по книге',
'books_sort' => 'Сортировка содержимого книги',
'books_sort_named' => 'Сортировка книги :bookName',
- 'books_sort_name' => 'СоÑ\80Ñ\82иÑ\80оваÑ\82Ñ\8c по имени',
- 'books_sort_created' => 'СоÑ\80Ñ\82иÑ\80оваÑ\82Ñ\8c по дате создания',
- 'books_sort_updated' => 'СоÑ\80Ñ\82иÑ\80оваÑ\82Ñ\8c по дате обновления',
- 'books_sort_chapters_first' => 'СнаÑ\87ала главÑ\8b',
- 'books_sort_chapters_last' => 'Ð\93лавÑ\8b поÑ\81ледние',
+ 'books_sort_name' => 'Ð\9fо имени',
+ 'books_sort_created' => 'Ð\9fо дате создания',
+ 'books_sort_updated' => 'Ð\9fо дате обновления',
+ 'books_sort_chapters_first' => 'Ð\93лавÑ\8b в наÑ\87але',
+ 'books_sort_chapters_last' => 'Ð\93лавÑ\8b в конÑ\86е',
'books_sort_show_other' => 'Показать другие книги',
'books_sort_save' => 'Сохранить новый порядок',
// Chapters
'chapter' => 'Глава',
'chapters' => 'Главы',
- 'x_chapters' => ':count глава|:count главы',
+ 'x_chapters' => ':count глава|:count главы|:count глав',
'chapters_popular' => 'Популярные главы',
'chapters_new' => 'Новая глава',
'chapters_create' => 'Создать новую главу',
'chapters_delete_explain' => 'Это удалит главу с именем \':chapterName\'. Все страницы главы будут удалены и перемещены напрямую в книгу.',
'chapters_delete_confirm' => 'Вы действительно хотите удалить эту главу?',
'chapters_edit' => 'Редактировать главу',
- 'chapters_edit_named' => 'редактировать главу :chapterName',
+ 'chapters_edit_named' => 'Редактировать главу :chapterName',
'chapters_save' => 'Сохранить главу',
'chapters_move' => 'Переместить главу',
'chapters_move_named' => 'Переместить главу :chapterName',
// Pages
'page' => 'Страница',
'pages' => 'Страницы',
- 'x_pages' => ':count страница|:count страниц',
+ 'x_pages' => ':count страница|:count страницы|:count страниц',
'pages_popular' => 'Популярные страницы',
'pages_new' => 'Новая страница',
'pages_attachments' => 'Вложения',
'pages_navigation' => 'Навигация на странице',
- 'pages_delete' => 'УдалиÑ\82Ñ\8c Ñ\83Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83',
+ 'pages_delete' => 'Удалить страницу',
'pages_delete_named' => 'Удалить страницу :pageName',
'pages_delete_draft_named' => 'Удалить черновик :pageName',
'pages_delete_draft' => 'Удалить черновик',
'pages_editing_page' => 'Редактирование страницы',
'pages_edit_draft_save_at' => 'Черновик сохранён в ',
'pages_edit_delete_draft' => 'Удалить черновик',
- 'pages_edit_discard_draft' => 'отменить черновик',
+ 'pages_edit_discard_draft' => 'Ð\9eтменить черновик',
'pages_edit_set_changelog' => 'Задать список изменений',
- 'pages_edit_enter_changelog_desc' => 'Ð\92ведиÑ\82е кÑ\80аÑ\82кое опиÑ\81ание изменений, коÑ\82оÑ\80Ñ\8bе вÑ\8b Ñ\81делали',
+ 'pages_edit_enter_changelog_desc' => 'Ð\92ведиÑ\82е кÑ\80аÑ\82кое опиÑ\81ание внеÑ\81еннÑ\8bÑ\85 изменений',
'pages_edit_enter_changelog' => 'Введите список изменений',
'pages_save' => 'Сохранить страницу',
'pages_title' => 'Заголовок страницы',
- 'pages_name' => 'Ð\98мÑ\8f страницы',
+ 'pages_name' => 'Ð\9dазвание страницы',
'pages_md_editor' => 'Редактор',
'pages_md_preview' => 'Просмотр',
'pages_md_insert_image' => 'Вставить изображение',
'pages_permissions' => 'Разрешения страницы',
'pages_permissions_success' => 'Pазрешения страницы обновлены',
'pages_revision' => 'Версия',
- 'pages_revisions' => 'Версия страницы',
+ 'pages_revisions' => 'Версии страницы',
'pages_revisions_named' => 'Версии страницы для :pageName',
'pages_revision_named' => 'Версия страницы для :pageName',
'pages_revisions_created_by' => 'Создана',
'pages_revisions_date' => 'Дата версии',
'pages_revisions_number' => '#',
- 'pages_revisions_numbered' => 'Ревизия #:id',
- 'pages_revisions_numbered_changes' => 'РевизиÑ\8f #:id изменениÑ\8f',
+ 'pages_revisions_numbered' => 'Ð\92еÑ\80Ñ\81ия #:id',
+ 'pages_revisions_numbered_changes' => 'Ð\98зменениÑ\8f в веÑ\80Ñ\81ии #:id',
'pages_revisions_changelog' => 'Список изменений',
'pages_revisions_changes' => 'Изменения',
'pages_revisions_current' => 'Текущая версия',
'pages_permissions_active' => 'Действующие разрешения на страницу',
'pages_initial_revision' => 'Первоначальное издание',
'pages_initial_name' => 'Новая страница',
- 'pages_editing_draft_notification' => 'Вы в настоящее время редактируете черновик, который был сохранен :timeDiff.',
- 'pages_draft_edited_notification' => 'Эта страница была обновлена до этого момента. Рекомендуется отменить этот черновик',
+ 'pages_editing_draft_notification' => 'В настоящее время вы редактируете черновик, который был сохранён :timeDiff.',
+ 'pages_draft_edited_notification' => 'Эта страница была обновлена до этого момента. Рекомендуется отменить этот черновик.',
'pages_draft_edit_active' => [
'start_a' => ':count пользователей начали редактирование этой страницы',
'start_b' => ':userName начал редактирование этой страницы',
'tag_value' => 'Значение тега (опционально)',
'tags_explain' => "Добавьте теги, чтобы лучше классифицировать ваш контент. \\n Вы можете присвоить значение тегу для более глубокой организации.",
'tags_add' => 'Добавить тег',
- 'tags_remove' => 'Удалить этот тэг',
- 'attachments' => 'Вложение',
+ 'tags_remove' => 'Удалить этот тег',
+ 'attachments' => 'Вложения',
'attachments_explain' => 'Загрузите несколько файлов или добавьте ссылку для отображения на своей странице. Они видны на боковой панели страницы.',
'attachments_explain_instant_save' => 'Изменения здесь сохраняются мгновенно.',
'attachments_items' => 'Прикрепленные элементы',
'attachments_delete_confirm' => 'Нажмите \'Удалить\' еще раз, чтобы подтвердить удаление этого файла.',
'attachments_dropzone' => 'Перетащите файл сюда или нажмите здесь, чтобы загрузить файл',
'attachments_no_files' => 'Файлы не загружены',
- 'attachments_explain_link' => 'Вы можете присоединить ссылку, если вы предпочитаете не загружать файл. Это может быть ссылка на другую страницу или ссылку на файл в облаке',
- 'attachments_link_name' => 'Ð\98мÑ\8f ссылки',
+ 'attachments_explain_link' => 'Вы можете присоединить ссылку, если вы предпочитаете не загружать файл. Это может быть ссылка на другую страницу или ссылка на файл в облаке.',
+ 'attachments_link_name' => 'Ð\9dазвание ссылки',
'attachment_link' => 'Ссылка на вложение',
'attachments_link_url' => 'Ссылка на файл',
'attachments_link_url_hint' => 'URL-адрес сайта или файла',
'attach' => 'Прикрепить',
'attachments_edit_file' => 'Редактировать файл',
- 'attachments_edit_file_name' => 'Ð\98мÑ\8f файла',
- 'attachments_edit_drop_upload' => 'перетащите файлы или нажмите здесь, чтобы загрузить и перезаписать',
- 'attachments_order_updated' => 'Прикрепленный файл обновлен',
- 'attachments_updated_success' => 'Детали файла обновлены',
- 'attachments_deleted' => 'Ð\9fÑ\80иложение удалено',
+ 'attachments_edit_file_name' => 'Ð\9dазвание файла',
+ 'attachments_edit_drop_upload' => 'Ð\9fеретащите файлы или нажмите здесь, чтобы загрузить и перезаписать',
+ 'attachments_order_updated' => 'Порядок вложений обновлен',
+ 'attachments_updated_success' => 'Детали вложения обновлены',
+ 'attachments_deleted' => 'Ð\92ложение удалено',
'attachments_file_uploaded' => 'Файл успешно загружен',
'attachments_file_updated' => 'Файл успешно обновлен',
'attachments_link_attached' => 'Ссылка успешно присоединена к странице',
'templates' => 'Шаблоны',
- 'templates_set_as_template' => 'СÑ\82Ñ\80аниÑ\86а Ñ\8dÑ\82о Ñ\88аблон',
+ 'templates_set_as_template' => 'СÑ\82Ñ\80аниÑ\86а Ñ\8fвлÑ\8fеÑ\82Ñ\81Ñ\8f Ñ\88аблоном',
'templates_explain_set_as_template' => 'Вы можете назначить эту страницу в качестве шаблона, её содержимое будет использоваться при создании других страниц. Пользователи смогут использовать этот шаблон в случае, если имеют разрешения на просмотр этой страницы.',
'templates_replace_content' => 'Заменить содержимое страницы',
'templates_append_content' => 'Добавить к содержанию страницы',
'templates_prepend_content' => 'Добавить в начало содержимого страницы',
// Profile View
- 'profile_user_for_x' => 'пользователь уже :time',
+ 'profile_user_for_x' => 'Ð\9fользователь уже :time',
'profile_created_content' => 'Созданный контент',
- 'profile_not_created_pages' => ':userName не Ñ\81оздавал Ñ\81Ñ\82Ñ\80аниÑ\86',
- 'profile_not_created_chapters' => ':userName не Ñ\81оздавал глав',
- 'profile_not_created_books' => ':userName не Ñ\81оздавал ни одной книги',
+ 'profile_not_created_pages' => ':userName не Ñ\81оздал ни одной Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b',
+ 'profile_not_created_chapters' => ':userName не Ñ\81оздал ни одной главÑ\8b',
+ 'profile_not_created_books' => ':userName не создал ни одной книги',
'profile_not_created_shelves' => ':userName не создал ни одной полки',
// Comments
'comment_placeholder' => 'Оставить комментарий здесь',
'comment_count' => '{0} Нет комментариев|{1} 1 комментарий|[2,*] :count комментария',
'comment_save' => 'Сохранить комментарий',
- 'comment_saving' => 'СоÑ\85Ñ\80аниение комменÑ\82аÑ\80иÑ\8f...',
+ 'comment_saving' => 'Сохранение комментария...',
'comment_deleting' => 'Удаление комментария...',
'comment_new' => 'Новый комментарий',
'comment_created' => 'прокомментировал :createDiff',
'comment_in_reply_to' => 'В ответ на :commentId',
// Revision
- 'revision_delete_confirm' => 'Удалить эту ревизию?',
- 'revision_restore_confirm' => 'Восстановить эту ревизию? Текущее содержимое будет заменено.',
- 'revision_delete_success' => 'Ревизия удалена',
+ 'revision_delete_confirm' => 'Удалить эту версию?',
+ 'revision_restore_confirm' => 'Вы уверены, что хотите восстановить эту версию? Текущее содержимое страницы будет заменено.',
+ 'revision_delete_success' => 'Ð\92еÑ\80Ñ\81ия удалена',
'revision_cannot_delete_latest' => 'Нельзя удалить последнюю версию.'
];
\ No newline at end of file
'permissionJson' => 'У вас нет разрешения для запрашиваемого действия.',
// Auth
- 'error_user_exists_different_creds' => 'Пользователь с электронной почтой: :email уже существует, но с другими учетными данными.',
- 'email_already_confirmed' => 'ÐлекÑ\82Ñ\80оннаÑ\8f поÑ\87Ñ\82а Ñ\83же подÑ\82веÑ\80ждена, попробуйте войти в систему.',
+ 'error_user_exists_different_creds' => 'Пользователь с электронной почтой :email уже существует, но с другими учетными данными.',
+ 'email_already_confirmed' => 'Ð\90дÑ\80еÑ\81 Ñ\8dлекÑ\82Ñ\80онной поÑ\87Ñ\82Ñ\8b Ñ\83же бÑ\8bл подÑ\82веÑ\80жден, попробуйте войти в систему.',
'email_confirmation_invalid' => 'Этот токен подтверждения недействителен или уже используется. Повторите попытку регистрации.',
'email_confirmation_expired' => 'Истек срок действия токена. Отправлено новое письмо с подтверждением.',
- 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'email_confirmation_awaiting' => 'Для используемой учетной записи необходимо подтвердить адрес электронной почты',
'ldap_fail_anonymous' => 'Недопустимый доступ LDAP с использованием анонимной привязки',
'ldap_fail_authed' => 'Не удалось получить доступ к LDAP, используя данные dn & password',
- 'ldap_extension_not_installed' => 'LDAP расширения для PHP не установлено',
- 'ldap_cannot_connect' => 'Не удается подключиться к серверу ldap, не удалось выполнить начальное соединение',
- 'saml_already_logged_in' => 'Already logged in',
- 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled',
- 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
- 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
- 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'ldap_extension_not_installed' => 'LDAP расширение для PHP не установлено',
+ 'ldap_cannot_connect' => 'Не удается подключиться к серверу LDAP, не удалось выполнить начальное соединение',
+ 'saml_already_logged_in' => 'Уже вошли в систему',
+ 'saml_user_not_registered' => 'Пользователь :name не зарегистрирован. Автоматическая регистрация отключена',
+ 'saml_no_email_address' => 'Не удалось найти email для этого пользователя в данных, предоставленных внешней системой аутентификации',
+ 'saml_invalid_response_id' => 'Запрос от внешней системы аутентификации не распознается процессом, запущенным этим приложением. Переход назад после входа в систему может вызвать эту проблему.',
+ 'saml_fail_authed' => 'Вход с помощью :system не удался, система не предоставила успешную авторизацию',
'social_no_action_defined' => 'Действие не определено',
'social_login_bad_response' => "При попытке входа с :socialAccount произошла ошибка: \\n:error",
- 'social_account_in_use' => 'ÐÑ\82оÑ\82 :socialAccount аккаÑ\83нÑ\82 Ñ\83же иÑ\81опльзуется, попробуйте войти с параметрами :socialAccount.',
+ 'social_account_in_use' => 'ÐÑ\82оÑ\82 :socialAccount аккаÑ\83нÑ\82 Ñ\83же иÑ\81пользуется, попробуйте войти с параметрами :socialAccount.',
'social_account_email_in_use' => 'Электронный ящик :email уже используется. Если у вас уже есть учетная запись, вы можете подключить свою учетную запись :socialAccount из настроек своего профиля.',
'social_account_existing' => 'Этот :socialAccount уже привязан к вашему профилю.',
'social_account_already_used_existing' => 'Этот :socialAccount уже используется другим пользователем.',
'invite_token_expired' => 'Срок действия приглашения истек. Вместо этого вы можете попытаться сбросить пароль своей учетной записи.',
// System
- 'path_not_writable' => 'Невозможно загрузить файл по пути :filePath . Убедитесь что сервер доступен для записи.',
+ 'path_not_writable' => 'Невозможно загрузить файл по пути :filePath. Убедитесь что сервер доступен для записи.',
'cannot_get_image_from_url' => 'Не удается получить изображение из :url',
'cannot_create_thumbs' => 'Сервер не может создавать эскизы. Убедитесь, что у вас установлено расширение GD PHP.',
- 'server_upload_limit' => 'Сервер не разрешает загрузку такого размера. Попробуйте уменьшить размер файла.',
+ 'server_upload_limit' => 'СеÑ\80веÑ\80 не Ñ\80азÑ\80еÑ\88аеÑ\82 загÑ\80Ñ\83зкÑ\83 Ñ\84айлов Ñ\82акого Ñ\80азмеÑ\80а. Ð\9fопÑ\80обÑ\83йÑ\82е Ñ\83менÑ\8cÑ\88иÑ\82Ñ\8c Ñ\80азмеÑ\80 Ñ\84айла.',
'uploaded' => 'Сервер не позволяет загружать файлы такого размера. Пожалуйста, попробуйте файл меньше.',
- 'image_upload_error' => 'Произошла ошибка при загрузке изображения.',
+ 'image_upload_error' => 'Произошла ошибка при загрузке изображения',
'image_upload_type_error' => 'Неправильный тип загружаемого изображения',
- 'file_upload_timeout' => 'Ð\92Ñ\8bгÑ\80Ñ\83зка Ñ\84айла законÑ\87илаÑ\81Ñ\8c.',
+ 'file_upload_timeout' => 'Ð\92Ñ\80емÑ\8f загÑ\80Ñ\83зки Ñ\84айла иÑ\81Ñ\82екло.',
// Attachments
'attachment_page_mismatch' => 'Несоответствие страницы во время обновления вложения',
// Pages
'page_draft_autosave_fail' => 'Не удалось сохранить черновик. Перед сохранением этой страницы убедитесь, что у вас есть подключение к Интернету.',
- 'page_custom_home_deletion' => 'Ð\9dелÑ\8cзÑ\8f Ñ\83далиÑ\82Ñ\8c Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ñ\83Ñ\81Ñ\82ановленнÑ\83Ñ\8e вмеÑ\81Ñ\82о главной Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b',
+ 'page_custom_home_deletion' => 'Ð\9dевозможно Ñ\83далиÑ\82Ñ\8c Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, пока она Ñ\83Ñ\81Ñ\82ановлена как домаÑ\88нÑ\8fÑ\8f Ñ\81Ñ\82Ñ\80аниÑ\86а',
// Entities
'entity_not_found' => 'Объект не найден',
'chapter_not_found' => 'Глава не найдена',
'selected_book_not_found' => 'Выбранная книга не найдена',
'selected_book_chapter_not_found' => 'Выбранная книга или глава не найдена',
- 'guests_cannot_save_drafts' => 'Гости не могут сохранить черновики',
+ 'guests_cannot_save_drafts' => 'Гости не могут сохранять черновики',
// Users
'users_cannot_delete_only_admin' => 'Вы не можете удалить единственного администратора',
'users_cannot_delete_guest' => 'Вы не можете удалить гостевого пользователя',
// Roles
- 'role_cannot_be_edited' => 'Ð\9dевозможно оÑ\82Ñ\80едакÑ\82иÑ\80оваÑ\82Ñ\8c даннÑ\83Ñ\8e Ñ\80олÑ\8c',
+ 'role_cannot_be_edited' => 'ÐÑ\82а Ñ\80олÑ\8c не можеÑ\82 бÑ\8bÑ\82Ñ\8c изменена',
'role_system_cannot_be_deleted' => 'Эта роль является системной и не может быть удалена',
- 'role_registration_default_cannot_delete' => 'Эта роль не может быть удалена, так как она устанолена в качестве роли по умолчанию',
+ 'role_registration_default_cannot_delete' => 'ÐÑ\82а Ñ\80олÑ\8c не можеÑ\82 бÑ\8bÑ\82Ñ\8c Ñ\83далена, Ñ\82ак как она Ñ\83Ñ\81Ñ\82ановлена в каÑ\87еÑ\81Ñ\82ве Ñ\80оли по Ñ\83молÑ\87аниÑ\8e',
'role_cannot_remove_only_admin' => 'Этот пользователь единственный с правами администратора. Назначьте роль администратора другому пользователю, прежде чем удалить этого.',
// Comments
- 'comment_list' => 'Ð\9fÑ\80и полÑ\83Ñ\87ении комменÑ\82аÑ\80иев пÑ\80оизоÑ\88ла оÑ\88ибка.',
+ 'comment_list' => 'Ð\9fÑ\80оизоÑ\88ла оÑ\88ибка пÑ\80и полÑ\83Ñ\87ении комменÑ\82аÑ\80иев.',
'cannot_add_comment_to_draft' => 'Вы не можете добавлять комментарии к черновику.',
- 'comment_add' => 'Ð\9fÑ\80и добавлении / обновлении комменÑ\82аÑ\80иÑ\8f пÑ\80оизоÑ\88ла оÑ\88ибка.',
- 'comment_delete' => 'Ð\9fÑ\80и Ñ\83далении комменÑ\82аÑ\80иÑ\8f пÑ\80оизоÑ\88ла оÑ\88ибка.',
+ 'comment_add' => 'Ð\9fÑ\80оизоÑ\88ла оÑ\88ибка пÑ\80и добавлении / обновлении комменÑ\82аÑ\80иÑ\8f.',
+ 'comment_delete' => 'Ð\9fÑ\80оизоÑ\88ла оÑ\88ибка пÑ\80и Ñ\83далении комменÑ\82аÑ\80иÑ\8f.',
'empty_comment' => 'Нельзя добавить пустой комментарий.',
// Error pages
'404_page_not_found' => 'Страница не найдена',
'sorry_page_not_found' => 'Извините, страница, которую вы искали, не найдена.',
+ 'sorry_page_not_found_permission_warning' => 'Если вы ожидали что страница существует, возможно у вас нет прав для её просмотра.',
'return_home' => 'вернуться на главную страницу',
'error_occurred' => 'Произошла ошибка',
- 'app_down' => ':appName в данный момент не достпуно',
+ 'app_down' => ':appName в данный момент не доступно',
'back_soon' => 'Скоро восстановится.',
// API errors
- 'api_no_authorization_found' => 'No authorization token found on the request',
- 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
- 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
- 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
- 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
- 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_no_authorization_found' => 'Отсутствует токен авторизации в запросе',
+ 'api_bad_authorization_format' => 'Токен авторизации найден, но формат запроса неверен',
+ 'api_user_token_not_found' => 'Отсутствует соответствующий API токен для предоставленного токена авторизации',
+ 'api_incorrect_token_secret' => 'Секрет, предоставленный для данного использованного API токена неверен',
+ 'api_user_no_api_permission' => 'Владелец используемого API токена не имеет прав на выполнение вызовов API',
+ 'api_user_token_expired' => 'Срок действия используемого токена авторизации истек',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Ошибка при отправке тестового письма:',
];
*/
return [
- 'password' => 'Пароль должен содержать не менее шести символов и совпадать с подтверждением.',
- 'user' => "Пользователя с таким адресом не существует.",
- 'token' => 'Токен сброса пароля недействителен.',
+ 'password' => 'Пароль должен содержать не менее восьми символов и совпадать с подтверждением.',
+ 'user' => "Пользователя с данным адресом электронной почты не существует.",
+ 'token' => 'Токен сброса пароля недействителен для этого адреса электронной почты.',
'sent' => 'Ссылка для сброса пароля отправлена на вашу почту!',
'reset' => 'Ваш пароль был сброшен!',
// App Settings
'app_customization' => 'Настройки',
- 'app_features_security' => 'Функционал & Безопасность',
- 'app_name' => 'Ð\98мÑ\8f приложения',
- 'app_name_desc' => 'Ð\98мÑ\8f оÑ\82обÑ\80ажаеÑ\82Ñ\81Ñ\8f в заголовке email отправленных системой.',
- 'app_name_header' => 'Ð\9eÑ\82обÑ\80ажаÑ\82Ñ\8c имÑ\8f приложения в заголовке',
+ 'app_features_security' => 'Функционал и безопасность',
+ 'app_name' => 'Ð\9dазвание приложения',
+ 'app_name_desc' => 'Ð\9dазвание оÑ\82обÑ\80ажаеÑ\82Ñ\81Ñ\8f в заголовкаÑ\85 и Ñ\81ообÑ\89ениÑ\8fÑ\85 Ñ\8dлекÑ\82Ñ\80онной поÑ\87Ñ\82Ñ\8b отправленных системой.',
+ 'app_name_header' => 'Ð\9eÑ\82обÑ\80ажаÑ\82Ñ\8c название приложения в заголовке',
'app_public_access' => 'Публичный доступ',
'app_public_access_desc' => 'Включение этой опции позволит неавторизованным посетителям получить доступ к содержимому вашего BookStack.',
'app_public_access_desc_guest' => 'Публичный доступ контролируется через настройки пользователя "Guest"',
'app_public_access_toggle' => 'Разрешить публичный доступ',
'app_public_viewing' => 'Разрешить публичный просмотр?',
- 'app_secure_images' => 'Загрузка изображений с высоким уровнем безопасности.',
+ 'app_secure_images' => 'Загрузка изображений с высоким уровнем безопасности',
'app_secure_images_toggle' => 'Включить загрузку изображений с высоким уровнем безопасности',
'app_secure_images_desc' => 'Для высокой производительности все изображения являются общедоступными. Этот параметр добавляет случайную строку перед URL изображения. Убедитесь, что индексация каталогов отключена, для предотвращения легкого доступа.',
- 'app_editor' => 'Редактор страницы',
+ 'app_editor' => 'Редактор страниц',
'app_editor_desc' => 'Выберите, какой редактор будет использоваться всеми пользователями для редактирования страниц.',
'app_custom_html' => 'Пользовательский контент заголовка HTML',
'app_custom_html_desc' => 'Любой контент, добавленный здесь, будет вставлен в нижнюю часть раздела <head> каждой страницы. Это удобно для переопределения стилей или добавления кода аналитики.',
'app_custom_html_disabled_notice' => 'Пользовательский контент заголовка HTML отключен на этой странице, чтобы гарантировать отмену любых критических изменений',
- 'app_logo' => 'Лого приложения',
+ 'app_logo' => 'Логотип приложения',
'app_logo_desc' => 'Это изображение должно быть 43px в высоту. <br>Большое изображение будет уменьшено.',
'app_primary_color' => 'Основной цвет приложения',
'app_primary_color_desc' => 'Значение должно быть указано в hex-формате. <br>Оставьте пустым чтобы использовать цвет по умолчанию.',
'app_homepage' => 'Стартовая страница приложения',
'app_homepage_desc' => 'Выберите страницу, которая будет отображаться на главной странице вместо стандартной. Права на страницы игнорируются для выбранных страниц.',
'app_homepage_select' => 'Выберите страницу',
- 'app_disable_comments' => 'Ð\9eÑ\82клÑ\8eÑ\87ение комменÑ\82ов',
+ 'app_disable_comments' => 'Ð\9eÑ\82клÑ\8eÑ\87ение комменÑ\82аÑ\80иев',
'app_disable_comments_toggle' => 'Отключить комментарии',
- 'app_disable_comments_desc' => 'Ð\9eÑ\82клÑ\8eÑ\87ение комменÑ\82ов на вÑ\81еÑ\85 Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\85. СÑ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ие комменÑ\82аÑ\80ии оÑ\82обÑ\80ажаÑ\82Ñ\8cÑ\81Ñ\8f не бÑ\83дÑ\83Ñ\82.',
+ 'app_disable_comments_desc' => 'Ð\9eÑ\82клÑ\8eÑ\87ение комменÑ\82аÑ\80иев на вÑ\81еÑ\85 Ñ\81Ñ\82Ñ\80аниÑ\86аÑ\85. СÑ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ие комменÑ\82аÑ\80ии бÑ\83дÑ\83Ñ\82 Ñ\81кÑ\80Ñ\8bÑ\82Ñ\8b.',
// Color settings
- 'content_colors' => 'Content Colors',
- 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
- 'bookshelf_color' => 'Shelf Color',
- 'book_color' => 'Book Color',
- 'chapter_color' => 'Chapter Color',
- 'page_color' => 'Page Color',
- 'page_draft_color' => 'Page Draft Color',
+ 'content_colors' => 'Цвета элементов иерархии',
+ 'content_colors_desc' => 'Задает цвета для всех элементов организационной иерархии страницы. Для удобства чтения рекомендуется выбирать цвета, яркость которых близка к цветам по умолчанию.',
+ 'bookshelf_color' => 'Цвет полки',
+ 'book_color' => 'Цвет книги',
+ 'chapter_color' => 'Цвет главы',
+ 'page_color' => 'Цвет страницы',
+ 'page_draft_color' => 'Цвет черновика страницы',
// Registration Settings
'reg_settings' => 'Настройки регистрации',
'reg_enable' => 'Разрешить регистрацию',
'reg_enable_toggle' => 'Разрешить регистрацию',
- 'reg_enable_desc' => 'Если регистрация разрешена, пользователь сможет зарегистрироваться в системе самостоятельно. При регистрации назначается роль пользователя по умолчанию',
+ 'reg_enable_desc' => 'Если регистрация разрешена, пользователь сможет зарегистрироваться в системе самостоятельно. При регистрации назначается роль пользователя по умолчанию.',
'reg_default_role' => 'Роль пользователя по умолчанию после регистрации',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_external_warning' => 'Вышеуказанный параметр игнорируется, пока активна внешняя аутентификация LDAP или SAML. Учетные записи для несуществующих пользователей будут создаваться автоматически при условии успешной аутентификации на внешнем сервере.',
'reg_email_confirmation' => 'Подтверждение электронной почты',
'reg_email_confirmation_toggle' => 'Требовать подтверждение по электронной почте',
'reg_confirm_email_desc' => 'При использовании ограничения по домену - подтверждение обязательно, этот пункт игнорируется.',
'reg_confirm_restrict_domain' => 'Ограничить регистрацию по домену',
- 'reg_confirm_restrict_domain_desc' => 'Введите список доменов почты через запятую, для которых разрешена регистрация. Пользователям будет отправлено письмо для подтверждения адреса перед входом в приложение. <br> Обратите внимание, что пользователи смогут изменять свой адрес после регистрации.',
+ 'reg_confirm_restrict_domain_desc' => 'Введите список доменов почты через запятую, для которых разрешена регистрация. Пользователям будет отправлено письмо для подтверждения адреса перед входом в приложение. <br> Обратите внимание, что пользователи смогут изменить свой адрес после регистрации.',
'reg_confirm_restrict_domain_placeholder' => 'Без ограничений',
// Maintenance settings
'roles' => 'Роли',
'role_user_roles' => 'Роли пользователя',
'role_create' => 'Добавить роль',
- 'role_create_success' => 'Роль упешно добавлена',
+ 'role_create_success' => 'Роль успешно добавлена',
'role_delete' => 'Удалить роль',
'role_delete_confirm' => 'Это удалит роль с именем \':roleName\'.',
- 'role_delete_users_assigned' => 'Эта роль назначена :userCount пользователям. Если вы хотите перенести их из этой роли, выберите новую роль ниже.',
- 'role_delete_no_migration' => "Ð\9dе мигÑ\80иÑ\80овать пользователей",
+ 'role_delete_users_assigned' => 'Эта роль назначена :userCount пользователям. Если вы хотите перенести их, выберите новую роль ниже.',
+ 'role_delete_no_migration' => "Ð\9dе пеÑ\80еноÑ\81ить пользователей",
'role_delete_sure' => 'Вы уверены что хотите удалить данную роль?',
'role_delete_success' => 'Роль успешно удалена',
'role_edit' => 'Редактировать роль',
'role_details' => 'Детали роли',
- 'role_name' => 'Ð\98мÑ\8f роли',
+ 'role_name' => 'Ð\9dазвание роли',
'role_desc' => 'Краткое описание роли',
'role_external_auth_id' => 'Внешние ID авторизации',
'role_system' => 'Системные разрешения',
'role_manage_users' => 'Управление пользователями',
'role_manage_roles' => 'Управление ролями и правами на роли',
'role_manage_entity_permissions' => 'Управление правами на все книги, главы и страницы',
- 'role_manage_own_entity_permissions' => 'Управление разрешениями для собственных книг, разделов и страниц',
+ 'role_manage_own_entity_permissions' => 'Управление разрешениями для собственных книг, глав и страниц',
'role_manage_page_templates' => 'Управление шаблонами страниц',
- 'role_access_api' => 'Access system API',
+ 'role_access_api' => 'Доступ к системному API',
'role_manage_settings' => 'Управление настройками приложения',
- 'role_asset' => 'РазÑ\80еÑ\88ение длÑ\8f акÑ\82иваÑ\86ии',
+ 'role_asset' => 'Ð\9fÑ\80ава доÑ\81Ñ\82Ñ\83па к маÑ\82еÑ\80иалам',
'role_asset_desc' => 'Эти разрешения контролируют доступ по умолчанию к параметрам внутри системы. Разрешения на книги, главы и страницы перезапишут эти разрешения.',
'role_asset_admins' => 'Администраторы автоматически получают доступ ко всему контенту, но эти опции могут отображать или скрывать параметры пользовательского интерфейса.',
'role_all' => 'Все',
'users_search' => 'Поиск пользователей',
'users_details' => 'Данные пользователя',
'users_details_desc' => 'Укажите имя и адрес электронной почты для этого пользователя. Адрес электронной почты будет использоваться для входа в приложение.',
- 'users_details_desc_no_email' => 'Задайте имя для этого пользователя, чтобы другие могли его узнать',
+ 'users_details_desc_no_email' => 'Задайте имя для этого пользователя, чтобы другие могли его узнать.',
'users_role' => 'Роли пользователя',
'users_role_desc' => 'Назначьте роли пользователю. Если назначено несколько ролей, разрешения будут суммироваться и пользователь получит все права назначенных ролей.',
'users_password' => 'Пароль пользователя',
- 'users_password_desc' => 'УÑ\81Ñ\82ановиÑ\82е паÑ\80олÑ\8c длÑ\8f вÑ\85ода в пÑ\80иложение. Ð\94олжно быть не менее 6 символов.',
- 'users_send_invite_text' => 'Вы можете отправить этому пользователю email с приглашением, которое позволит ему установить пароль самостоятельно или задайте пароль сами.',
+ 'users_password_desc' => 'УÑ\81Ñ\82ановиÑ\82е паÑ\80олÑ\8c длÑ\8f вÑ\85ода в пÑ\80иложение. Ð\94лина паÑ\80олÑ\8f должна быть не менее 6 символов.',
+ 'users_send_invite_text' => 'Вы можете отправить этому пользователю письмо с приглашением, которое позволит ему установить пароль самостоятельно или задайте пароль сами.',
'users_send_invite_option' => 'Отправить пользователю письмо с приглашением',
'users_external_auth_id' => 'Внешний ID аутентификации',
- 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
- 'users_password_warning' => 'Ð\97аполниÑ\82е ниже Ñ\82олÑ\8cко еÑ\81ли вÑ\8b Ñ\85оÑ\82иÑ\82е Ñ\81мениÑ\82Ñ\8c Ñ\81вой пароль.',
+ 'users_external_auth_id_desc' => 'Этот ID используется для связи с вашей внешней системой аутентификации.',
+ 'users_password_warning' => 'Ð\97аполниÑ\82е полÑ\8f ниже Ñ\82олÑ\8cко еÑ\81ли вÑ\8b Ñ\85оÑ\82иÑ\82е измениÑ\82Ñ\8c пароль.',
'users_system_public' => 'Этот пользователь представляет любых гостевых пользователей, которые посещают ваше приложение. Он не может использоваться для входа в систему и назначается автоматически.',
'users_delete' => 'Удалить пользователя',
'users_delete_named' => 'Удалить пользователя :userName',
'users_avatar_desc' => 'Выберите изображение. Изображение должно быть квадратным, размером около 256px.',
'users_preferred_language' => 'Предпочитаемый язык',
'users_preferred_language_desc' => 'Этот параметр изменит язык интерфейса приложения. Это не влияет на созданный пользователем контент.',
- 'users_social_accounts' => 'Аккаунты Соцсетей',
- 'users_social_accounts_info' => 'Здесь вы можете подключить другие учетные записи для более быстрого и легкого входа в систему. Отключение учетной записи здесь не возможно. Отмените доступ к настройкам вашего профиля в подключенном аккаунте соцсети.',
+ 'users_social_accounts' => 'Аккаунты социальных сетей',
+ 'users_social_accounts_info' => 'Здесь вы можете подключить другие учетные записи для более быстрого и легкого входа в систему. Отключение учетной записи здесь не возможно. Отмените доступ к настройкам вашего профиля в подключенном социальном аккаунте.',
'users_social_connect' => 'Подключить аккаунт',
'users_social_disconnect' => 'Отключить аккаунт',
- 'users_social_connected' => ':socialAccount аккаунт упешно подключен к вашему профилю.',
+ 'users_social_connected' => ':socialAccount аккаунт успешно подключен к вашему профилю.',
'users_social_disconnected' => ':socialAccount аккаунт успешно отключен от вашего профиля.',
- 'users_api_tokens' => 'API Tokens',
- 'users_api_tokens_none' => 'No API tokens have been created for this user',
- 'users_api_tokens_create' => 'Create Token',
- 'users_api_tokens_expires' => 'Expires',
- 'users_api_tokens_docs' => 'API Documentation',
+ 'users_api_tokens' => 'API токены',
+ 'users_api_tokens_none' => 'Для этого пользователя не создано API токенов',
+ 'users_api_tokens_create' => 'Создать токен',
+ 'users_api_tokens_expires' => 'Истекает',
+ 'users_api_tokens_docs' => 'Документация',
// API Tokens
- 'user_api_token_create' => 'Create API Token',
- 'user_api_token_name' => 'Name',
- 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
- 'user_api_token_expiry' => 'Expiry Date',
- 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
- 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
- 'user_api_token_create_success' => 'API token successfully created',
- 'user_api_token_update_success' => 'API token successfully updated',
- 'user_api_token' => 'API Token',
- 'user_api_token_id' => 'Token ID',
- 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
- 'user_api_token_secret' => 'Token Secret',
- 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
- 'user_api_token_created' => 'Token Created :timeAgo',
- 'user_api_token_updated' => 'Token Updated :timeAgo',
- 'user_api_token_delete' => 'Delete Token',
- 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
- 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
- 'user_api_token_delete_success' => 'API token successfully deleted',
+ 'user_api_token_create' => 'Создать токен',
+ 'user_api_token_name' => 'Имя',
+ 'user_api_token_name_desc' => 'Присвойте вашему токену читаемое имя, в качестве напоминания о его назначении в будущем.',
+ 'user_api_token_expiry' => 'Истекает',
+ 'user_api_token_expiry_desc' => 'Установите дату истечения срока действия этого токена. После этой даты запросы, сделанные с использованием этого токена, больше не будут работать. Если оставить это поле пустым, срок действия истечет через 100 лет.',
+ 'user_api_token_create_secret_message' => 'Сразу после создания этого токена будут сгенерированы и отображены идентификатор токена и секретный ключ. Секретный ключ будет показан только один раз, поэтому перед продолжением обязательно скопируйте значение в безопасное и надежное место.',
+ 'user_api_token_create_success' => 'API токен успешно создан',
+ 'user_api_token_update_success' => 'API токен успешно обновлен',
+ 'user_api_token' => 'API токен',
+ 'user_api_token_id' => 'Идентификатор токена',
+ 'user_api_token_id_desc' => 'Это нередактируемый системный идентификатор для этого токена, который необходимо указывать в запросах API.',
+ 'user_api_token_secret' => 'Секретный ключ',
+ 'user_api_token_secret_desc' => 'Это сгенерированный системой секретный ключ для этого токена, который необходимо будет указывать в запросах API. Он будет показан только один раз, поэтому скопируйте это значение в безопасное и надежное место.',
+ 'user_api_token_created' => 'Токен создан :timeAgo',
+ 'user_api_token_updated' => 'Токен обновлён :timeAgo',
+ 'user_api_token_delete' => 'Удалить токен',
+ 'user_api_token_delete_warning' => 'Это полностью удалит API токен с именем \':tokenName\' из системы.',
+ 'user_api_token_delete_confirm' => 'Вы уверены, что хотите удалить этот API токен?',
+ 'user_api_token_delete_success' => 'API токен успешно удален',
//! If editing translations files directly please ignore this in all
//! languages apart from en. Content will be auto-copied from en.
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'between' => [
'numeric' => ':attribute должен быть между :min и :max.',
'file' => ':attribute должен быть между :min и :max килобайт.',
- 'string' => 'длина :attribute должена бÑ\8bÑ\82Ñ\8c междÑ\83 :min и :max Ñ\81имволами.',
- 'array' => ':attribute должен содержать не менее :min и не более:max элементов.',
+ 'string' => 'длина :attribute должна быть между :min и :max символами.',
+ 'array' => ':attribute должен содержать не менее :min и не более :max элементов.',
],
'boolean' => ':attribute поле может быть только true или false.',
'confirmed' => ':attribute подтверждение не совпадает.',
'digits' => ':attribute должен состоять из :digits цифр.',
'digits_between' => ':attribute должен иметь от :min до :max цифр.',
'email' => ':attribute должен быть корректным email адресом.',
- 'ends_with' => 'The :attribute must end with one of the following: :values',
+ 'ends_with' => ':attribute должен заканчиваться одним из следующих: :values',
'filled' => ':attribute поле необходимо.',
'gt' => [
- 'numeric' => 'The :attribute must be greater than :value.',
- 'file' => 'The :attribute must be greater than :value kilobytes.',
- 'string' => 'The :attribute must be greater than :value characters.',
- 'array' => 'The :attribute must have more than :value items.',
+ 'numeric' => 'Значение :attribute должно быть больше чем :value.',
+ 'file' => 'Значение :attribute должно быть больше :value килобайт.',
+ 'string' => 'Значение :attribute должно быть больше :value символов.',
+ 'array' => 'Значение :attribute должно содержать больше :value элементов.',
],
'gte' => [
- 'numeric' => 'The :attribute must be greater than or equal :value.',
- 'file' => 'The :attribute must be greater than or equal :value kilobytes.',
- 'string' => 'The :attribute must be greater than or equal :value characters.',
- 'array' => 'The :attribute must have :value items or more.',
+ 'numeric' => 'Значение :attribute должно быть больше или равно :value.',
+ 'file' => 'Значение :attribute должно быть больше или равно :value килобайт.',
+ 'string' => 'Значение :attribute должно быть больше или равно :value символам.',
+ 'array' => ':attribute должен иметь :value элементов или больше.',
],
'exists' => 'выделенный :attribute некорректен.',
'image' => ':attribute должен быть изображением.',
'in' => 'выделенный :attribute некорректен.',
'integer' => ':attribute должно быть целое число.',
'ip' => ':attribute должен быть корректным IP адресом.',
- 'ipv4' => 'The :attribute must be a valid IPv4 address.',
- 'ipv6' => 'The :attribute must be a valid IPv6 address.',
- 'json' => 'The :attribute must be a valid JSON string.',
+ 'ipv4' => ':attribute должен быть корректным IPv4-адресом.',
+ 'ipv6' => ':attribute должен быть корректным IPv6-адресом.',
+ 'json' => ':attribute должен быть допустимой строкой JSON.',
'lt' => [
- 'numeric' => 'The :attribute must be less than :value.',
- 'file' => 'The :attribute must be less than :value kilobytes.',
- 'string' => 'The :attribute must be less than :value characters.',
- 'array' => 'The :attribute must have less than :value items.',
+ 'numeric' => 'Значение :attribute должно быть меньше, чем :value.',
+ 'file' => 'Значение :attribute должно быть меньше :value килобайт.',
+ 'string' => 'Значение :attribute должно быть меньше :value символов.',
+ 'array' => 'Значение :attribute должно быть меньше :value элементов.',
],
'lte' => [
- 'numeric' => 'The :attribute must be less than or equal :value.',
- 'file' => 'The :attribute must be less than or equal :value kilobytes.',
- 'string' => 'The :attribute must be less than or equal :value characters.',
- 'array' => 'The :attribute must not have more than :value items.',
+ 'numeric' => 'Значение :attribute должно быть меньше или равно :value.',
+ 'file' => 'Значение :attribute должно быть меньше или равно :value килобайт.',
+ 'string' => 'Значение :attribute должно быть меньше или равно :value символам.',
+ 'array' => 'Поле :attribute не должно содержать больше :value элементов.',
],
'max' => [
'numeric' => ':attribute не может быть больше чем :max.',
],
'mimes' => ':attribute должен быть файлом с типом: :values.',
'min' => [
- 'numeric' => ':attribute должен быть хотя бы :min.',
+ 'numeric' => 'Поле :attribute должно быть не менее :min.',
'file' => ':attribute должен быть минимум :min килобайт.',
'string' => ':attribute должен быть минимум :min символов.',
'array' => ':attribute должен содержать хотя бы :min элементов.',
],
'no_double_extension' => ':attribute должен иметь только одно расширение файла.',
'not_in' => 'Выбранный :attribute некорректен.',
- 'not_regex' => 'The :attribute format is invalid.',
+ 'not_regex' => 'Формат :attribute некорректен.',
'numeric' => ':attribute должен быть числом.',
- 'regex' => ':attribute неправильный формат.',
+ 'regex' => 'Формат :attribute некорректен.',
'required' => ':attribute обязательное поле.',
'required_if' => ':attribute обязательное поле когда :other со значением :value.',
'required_with' => ':attribute обязательное поле когда :values установлено.',
'string' => ':attribute должен быть строкой.',
'timezone' => ':attribute должен быть корректным часовым поясом.',
'unique' => ':attribute уже есть.',
- 'url' => ':attribute имеет неправильный формат.',
+ 'url' => 'Формат :attribute некорректен.',
'uploaded' => 'Не удалось загрузить файл. Сервер не может принимать файлы такого размера.',
// Custom validation lines
'reset_password' => 'Reset hesla',
'reset_password_send_instructions' => 'Zadajte svoj email nižšie a bude Vám odoslaný email s odkazom pre reset hesla.',
'reset_password_send_button' => 'Poslať odkaz na reset hesla',
- 'reset_password_sent_success' => 'Odkaz na reset hesla bol poslaný na :email.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'Vaše heslo bolo úspešne resetované.',
'email_reset_subject' => 'Reset Vášho :appName hesla',
'email_reset_text' => 'Tento email Ste dostali pretože sme dostali požiadavku na reset hesla pre Váš účet.',
'profile_menu' => 'Profile Menu',
'view_profile' => 'Zobraziť profil',
'edit_profile' => 'Upraviť profil',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Info',
// Error pages
'404_page_not_found' => 'Stránka nenájdená',
'sorry_page_not_found' => 'Prepáčte, stránka ktorú hľadáte nebola nájdená.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => 'Vrátiť sa domov',
'error_occurred' => 'Nastala chyba',
'app_down' => ':appName je momentálne nedostupná',
'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
'api_user_token_expired' => 'The authorization token used has expired',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => 'Heslo musí obsahovať aspoň šesť znakov a musí byť rovnaké ako potvrdzujúce.',
'user' => "Nenašli sme používateľa s takou emailovou adresou.",
- 'token' => 'Tento token pre reset hesla je neplatný.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'Poslali sme Vám email s odkazom na reset hesla!',
'reset' => 'Vaše heslo bolo resetované!',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
--- /dev/null
+<?php
+/**
+ * Activity text strings.
+ * Is used for all the text within activity logs & notifications.
+ */
+return [
+
+ // Pages
+ 'page_create' => 'ustvarjena stran',
+ 'page_create_notification' => 'Zapis uspešno ustvarjen',
+ 'page_update' => 'nadgrajena stran',
+ 'page_update_notification' => 'Uspešno posodobljeno',
+ 'page_delete' => 'izbrisana stran',
+ 'page_delete_notification' => 'Uspešno izbrisano',
+ 'page_restore' => 'obnovljena stran',
+ 'page_restore_notification' => 'Uspešna obnovitev',
+ 'page_move' => 'premaknjena stran',
+
+ // Chapters
+ 'chapter_create' => 'ustvarjeno poglavje',
+ 'chapter_create_notification' => 'Zapis uspešno ustvarjen',
+ 'chapter_update' => 'nadgradi poglavje',
+ 'chapter_update_notification' => 'Uspešno posodobljeno',
+ 'chapter_delete' => 'izbrisano poglavje',
+ 'chapter_delete_notification' => 'Uspešno izbrisano',
+ 'chapter_move' => 'premaknjeno poglavje',
+
+ // Books
+ 'book_create' => 'knjiga ustvarjena',
+ 'book_create_notification' => 'Knjiga Uspešno Usvarjena',
+ 'book_update' => 'knjiga posodobljena',
+ 'book_update_notification' => 'Uspešno posodobljeno',
+ 'book_delete' => 'izbrisana knjiga',
+ 'book_delete_notification' => 'Uspešno izbrisano',
+ 'book_sort' => 'razvrščena knjiga',
+ 'book_sort_notification' => 'Knjiga Uspešno Razvrščena',
+
+ // Bookshelves
+ 'bookshelf_create' => 'knjižna polica izdelana',
+ 'bookshelf_create_notification' => 'Knjižna Polica Izdelana',
+ 'bookshelf_update' => 'knjižna polica posodobljena',
+ 'bookshelf_update_notification' => 'Knjižna Polica Uspešno Posodobljena',
+ 'bookshelf_delete' => 'knjižna polica izbrisana',
+ 'bookshelf_delete_notification' => 'Knjižna Polica Uspešno Izbrisana',
+
+ // Other
+ 'commented_on' => 'komentar na',
+];
--- /dev/null
+<?php
+/**
+ * Authentication Language Lines
+ * The following language lines are used during authentication for various
+ * messages that we need to display to the user.
+ */
+return [
+
+ 'failed' => 'Poverilnice se ne ujemajo s podatki v naši bazi.',
+ 'throttle' => 'Prekoračili ste število možnih prijav. Poskusite znova čez :seconds sekund.',
+
+ // Login & Register
+ 'sign_up' => 'Registracija',
+ 'log_in' => 'Prijavi se',
+ 'log_in_with' => 'Prijavi se z :socialDriver',
+ 'sign_up_with' => 'Registriraj se z :socialDriver',
+ 'logout' => 'Odjavi se',
+
+ 'name' => 'Ime',
+ 'username' => 'Uporabniško ime',
+ 'email' => 'E-pošta',
+ 'password' => 'Geslo',
+ 'password_confirm' => 'Potrdi geslo',
+ 'password_hint' => 'Mora vebovati vsaj 8 znakov',
+ 'forgot_password' => 'Pozabljeno geslo?',
+ 'remember_me' => 'Zapomni si me',
+ 'ldap_email_hint' => 'Prosimo vpišite e-poštni naslov za ta račun.',
+ 'create_account' => 'Ustvari račun',
+ 'already_have_account' => 'Že imate račun?',
+ 'dont_have_account' => 'Nimate računa?',
+ 'social_login' => 'Prijava z računi družbenih omrežij',
+ 'social_registration' => 'Registracija z družbenim omrežjem',
+ 'social_registration_text' => 'Registrirajte in prijavite se za uporabo drugih možnosti.',
+
+ 'register_thanks' => 'Hvala za registracijo!',
+ 'register_confirm' => 'Prosimo preverite vaš e-poštni predal in kliknite na potrditveni gumb za dostop :appName.',
+ 'registrations_disabled' => 'Registracija trenutno ni mogoča',
+ 'registration_email_domain_invalid' => 'Ta e-poštna domena nima dostopa do te aplikacije',
+ 'register_success' => 'Hvala za registracijo! Sedaj ste registrirani in prijavljeni.',
+
+
+ // Password Reset
+ 'reset_password' => 'Ponastavi geslo',
+ 'reset_password_send_instructions' => 'Spodaj vpišite vaš e-poštni naslov in prejeli boste e-pošto s povezavo za ponastavitev gesla.',
+ 'reset_password_send_button' => 'Pošlji povezavo za ponastavitev',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Vaše geslo je bilo uspešno spremenjeno.',
+ 'email_reset_subject' => 'Ponastavi svoje :appName geslo',
+ 'email_reset_text' => 'To e-poštno sporočilo ste prejeli, ker smo prejeli zahtevo za ponastavitev gesla za vaš račun.',
+ 'email_reset_not_requested' => 'Če niste zahtevali ponastavitve gesla, vam ni potrebno ničesar storiti.',
+
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Potrdi svojo e-pošto za :appName',
+ 'email_confirm_greeting' => 'Hvala ker ste se pridružili :appName!',
+ 'email_confirm_text' => 'Potrdite svoj e-naslov s klikom spodnjega gumba:',
+ 'email_confirm_action' => 'Potrdi e-pošto',
+ 'email_confirm_send_error' => 'E-poštna potrditev je zahtevana ampak sistem ni mogel poslati e-pošte. Kontaktirajte administratorja, da zagotovite, da je e-pošta pravilno nastavljena.',
+ 'email_confirm_success' => 'Vaš e-naslov je bil potrjen!',
+ 'email_confirm_resent' => 'Poslali smo vam potrditveno sporočilo. Prosimo preverite svojo elektronsko pošto.',
+
+ 'email_not_confirmed' => 'Elektronski naslov ni potrjen',
+ 'email_not_confirmed_text' => 'Vaš e-naslov še ni bil potrjen.',
+ 'email_not_confirmed_click_link' => 'Prosimo kliknite na link v e-poštnem sporočilu, ki ste ga prejeli kmalu po registraciji.',
+ 'email_not_confirmed_resend' => 'Če ne najdete e-pošte jo lahko ponovno pošljete s potrditvijo obrazca.',
+ 'email_not_confirmed_resend_button' => 'Ponovno pošlji potrditveno e-pošto',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Povabljen si bil da se pridružiš :appName!',
+ 'user_invite_email_greeting' => 'Račun je bil ustvarjen zate na :appName.',
+ 'user_invite_email_text' => 'Klikni na spodnji gumb, da si nastaviš geslo in dobiš dostop:',
+ 'user_invite_email_action' => 'Nastavi geslo za račun',
+ 'user_invite_page_welcome' => 'Dobrodošli na :appName!',
+ 'user_invite_page_text' => 'Za zaključiti in pridobiti dostop si morate nastaviti geslo, ki bo uporabljeno za prijavo v :appName.',
+ 'user_invite_page_confirm_button' => 'Potrdi geslo',
+ 'user_invite_success' => 'Geslo nastavljeno, sedaj imaš dostop do :appName!'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Common elements found throughout many areas of BookStack.
+ */
+return [
+
+ // Buttons
+ 'cancel' => 'Prekliči',
+ 'confirm' => 'Potrdi',
+ 'back' => 'Nazaj',
+ 'save' => 'Shrani',
+ 'continue' => 'Naprej',
+ 'select' => 'Izberi',
+ 'toggle_all' => 'Vklopi vse',
+ 'more' => 'Več',
+
+ // Form Labels
+ 'name' => 'Ime',
+ 'description' => 'Opis',
+ 'role' => 'Vloga',
+ 'cover_image' => 'Naslovna slika',
+ 'cover_image_description' => 'Slika naj bo okoli 440x250px velika.',
+
+ // Actions
+ 'actions' => 'Dejanja',
+ 'view' => 'Pogled',
+ 'view_all' => 'Prikaži vse',
+ 'create' => 'Ustvari',
+ 'update' => 'Posodobi',
+ 'edit' => 'Uredi',
+ 'sort' => 'Razvrsti',
+ 'move' => 'Premakni',
+ 'copy' => 'Kopiraj',
+ 'reply' => 'Odgovori',
+ 'delete' => 'Izbriši',
+ 'search' => 'Išči',
+ 'search_clear' => 'Počisti iskanje',
+ 'reset' => 'Ponastavi',
+ 'remove' => 'Remove',
+ 'add' => 'Dodaj',
+ 'fullscreen' => 'Celozaslonski način',
+
+ // Sort Options
+ 'sort_options' => 'Možnosti razvrščanja',
+ 'sort_direction_toggle' => 'Preklopi smer razvrščanja',
+ 'sort_ascending' => 'Razvrsti naraščajoče',
+ 'sort_descending' => 'Razvrsti padajoče',
+ 'sort_name' => 'Ime',
+ 'sort_created_at' => 'Datum nastanka',
+ 'sort_updated_at' => 'Datum posodobitve',
+
+ // Misc
+ 'deleted_user' => 'Izbrisan uporabnik',
+ 'no_activity' => 'Ni aktivnosti za prikaz',
+ 'no_items' => 'Ni na voljo nobenih elementov',
+ 'back_to_top' => 'Nazaj na vrh',
+ 'toggle_details' => 'Preklopi podrobnosti',
+ 'toggle_thumbnails' => 'Preklopi sličice',
+ 'details' => 'Podrobnosti',
+ 'grid_view' => 'Mrežni pogled',
+ 'list_view' => 'Seznam',
+ 'default' => 'Privzeto',
+ 'breadcrumb' => 'Pot',
+
+ // Header
+ 'profile_menu' => 'Meni profila',
+ 'view_profile' => 'Ogled profila',
+ 'edit_profile' => 'Uredi profil',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+
+ // Layout tabs
+ 'tab_info' => 'Informacije',
+ 'tab_content' => 'Vsebina',
+
+ // Email Content
+ 'email_action_help' => 'Če imate težave s klikom na ":actionText" gumb, kopirajte im prilepite spodnjo povezavo v vaš brskalnik:',
+ 'email_rights' => 'Vse pravice pridržane',
+];
--- /dev/null
+<?php
+/**
+ * Text used in custom JavaScript driven components.
+ */
+return [
+
+ // Image Manager
+ 'image_select' => 'Izberi slike',
+ 'image_all' => 'Vse',
+ 'image_all_title' => 'Prikaži vse slike',
+ 'image_book_title' => 'Preglej slike naložene v to knjigo',
+ 'image_page_title' => 'Preglej slike naložene na to stran',
+ 'image_search_hint' => 'Iskanje po nazivu slike',
+ 'image_uploaded' => 'Naloženo :uploadedDate',
+ 'image_load_more' => 'Naloži več',
+ 'image_image_name' => 'Ime slike',
+ 'image_delete_used' => 'Ta slika je uporabljena na spodnjih straneh.',
+ 'image_delete_confirm' => 'Ponovno kliknite izbriši, da potrdite izbris te slike.',
+ 'image_select_image' => 'Izberite sliko',
+ 'image_dropzone' => 'Povlecite slike ali kliknite tukaj za nalaganje',
+ 'images_deleted' => 'Slike so bile izbrisane',
+ 'image_preview' => 'Predogled slike',
+ 'image_upload_success' => 'Slika uspešno naložena',
+ 'image_update_success' => 'Podatki slike uspešno posodobljeni',
+ 'image_delete_success' => 'Uspešno izbrisano',
+ 'image_upload_remove' => 'Odstrani',
+
+ // Code Editor
+ 'code_editor' => 'Uredi kodo',
+ 'code_language' => 'Koda jezika',
+ 'code_content' => 'Koda vsebine',
+ 'code_save' => 'Shrani kodo',
+];
--- /dev/null
+<?php
+/**
+ * Text used for 'Entities' (Document Structure Elements) such as
+ * Books, Shelves, Chapters & Pages
+ */
+return [
+
+ // Shared
+ 'recently_created' => 'Nazadnje objavljeno',
+ 'recently_created_pages' => 'Nazadnje objavljene strani',
+ 'recently_updated_pages' => 'Nedavno posodobljene strani',
+ 'recently_created_chapters' => 'Nazadnje objavljena poglavja',
+ 'recently_created_books' => 'Nazadnje objavljene knjige',
+ 'recently_created_shelves' => 'Nazadnje objavljene police',
+ 'recently_update' => 'Nedavno posodobljeno',
+ 'recently_viewed' => 'Nedavno prikazano',
+ 'recent_activity' => 'Nedavna dejavnost',
+ 'create_now' => 'Ustvarite eno sedaj',
+ 'revisions' => 'Revizije',
+ 'meta_revision' => 'Revizije #:revisionCount',
+ 'meta_created' => 'Ustvarjeno :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Posodobljeno :timeLength',
+ 'meta_updated_name' => 'Posodobljeno :timeLength by :user',
+ 'entity_select' => 'Izbira entitete',
+ 'images' => 'Slike',
+ 'my_recent_drafts' => 'Moji nedavni osnutki',
+ 'my_recently_viewed' => 'Nedavno prikazano',
+ 'no_pages_viewed' => 'Niste si ogledali še nobene strani',
+ 'no_pages_recently_created' => 'Nedavno ni bila ustvarjena nobena stran',
+ 'no_pages_recently_updated' => 'Nedavno ni bila posodobljena nobena stran',
+ 'export' => 'Izvozi',
+ 'export_html' => 'Vsebuje spletno datoteko',
+ 'export_pdf' => 'Datoteka PDF',
+ 'export_text' => 'Navadna besedilna datoteka',
+
+ // Permissions and restrictions
+ 'permissions' => 'Dovoljenja',
+ 'permissions_intro' => 'Ko so enkrat omogočena, bodo ta dovoljenja imela prednost pred dovoljenji za določanje vlog.',
+ 'permissions_enable' => 'Omogoči dovoljenja po meri',
+ 'permissions_save' => 'Shrani dovoljenja',
+
+ // Search
+ 'search_results' => 'Rezultati iskanja',
+ 'search_total_results_found' => ':count najdenih rezultatov|:count skupaj najdenih rezultatov',
+ 'search_clear' => 'Počisti iskanje',
+ 'search_no_pages' => 'Nobena stran se ne ujema z vašim iskanjem',
+ 'search_for_term' => 'Išči :term',
+ 'search_more' => 'Prikaži več rezultatov',
+ 'search_filters' => 'Iskalni filtri',
+ 'search_content_type' => 'Vrsta vsebine',
+ 'search_exact_matches' => 'Natančno ujemanje',
+ 'search_tags' => 'Iskanje oznak',
+ 'search_options' => 'Možnosti',
+ 'search_viewed_by_me' => 'Ogledano',
+ 'search_not_viewed_by_me' => 'Neogledano',
+ 'search_permissions_set' => 'Nastavljena dovoljenja',
+ 'search_created_by_me' => 'Ustvaril sem jaz',
+ 'search_updated_by_me' => 'Posodobil sem jaz',
+ 'search_date_options' => 'Možnosti datuma',
+ 'search_updated_before' => 'Posodobljeno pred',
+ 'search_updated_after' => 'Posodobljeno po',
+ 'search_created_before' => 'Ustvarjeno pred',
+ 'search_created_after' => 'Ustvarjeno po',
+ 'search_set_date' => 'Nastavi datum',
+ 'search_update' => 'Posodobi iskanje',
+
+ // Shelves
+ 'shelf' => 'Polica',
+ 'shelves' => 'Police',
+ 'x_shelves' => ':count Polica|:count Police',
+ 'shelves_long' => 'Knjižne police',
+ 'shelves_empty' => 'Ustvarjena ni bila nobena polica',
+ 'shelves_create' => 'Izdelaj novo polico',
+ 'shelves_popular' => 'Priljubljene police',
+ 'shelves_new' => 'Nove police',
+ 'shelves_new_action' => 'Nova polica',
+ 'shelves_popular_empty' => 'Najbolj priljubljene police se bodo pojavile tukaj.',
+ 'shelves_new_empty' => 'Zadnje ustvarjene police se bodo pojavile tukaj.',
+ 'shelves_save' => 'Shrani polico',
+ 'shelves_books' => 'Knjige na tej polici',
+ 'shelves_add_books' => 'Dodaj knjige na to polico',
+ 'shelves_drag_books' => 'Povleci knjige sem za jih dodati na to polico',
+ 'shelves_empty_contents' => 'Ta polica nima dodeljenih knjig',
+ 'shelves_edit_and_assign' => 'Uredi polico za dodajanje knjig',
+ 'shelves_edit_named' => 'Uredi knjižno polico :name',
+ 'shelves_edit' => 'Uredi knjižno polico',
+ 'shelves_delete' => 'Izbriši knjižno polico',
+ 'shelves_delete_named' => 'Izbriši knjižno polico :name',
+ 'shelves_delete_explain' => "To bo izbrisalo knjižno polico z imenom ':name'. Vsebovane knjige ne bodo izbrisane.",
+ 'shelves_delete_confirmation' => 'Ali ste prepričani, da želite izbrisati ta knjižno polico?',
+ 'shelves_permissions' => 'Dovoljenja knjižnih polic',
+ 'shelves_permissions_updated' => 'Posodobljena dovoljenja knjižnih polic',
+ 'shelves_permissions_active' => 'Aktivna dovoljenja knjižnih polic',
+ 'shelves_copy_permissions_to_books' => 'Kopiraj dovoljenja na knjige',
+ 'shelves_copy_permissions' => 'Kopiraj dovoljenja',
+ 'shelves_copy_permissions_explain' => 'To bo uporabilo trenutne nastavitve dovoljenj te knjižne police za vse knjige, ki jih vsebuje. Pred aktiviranjem zagotovite, da so shranjene vse spremembe dovoljenj te knjižne police.',
+ 'shelves_copy_permission_success' => 'Dovoljenja knjižne police kopirana na :count knjig',
+
+ // Books
+ 'book' => 'Knjiga',
+ 'books' => 'Knjige',
+ 'x_books' => ':count Knjiga|:count Knjig',
+ 'books_empty' => 'Ustvarjena ni bila nobena knjiga',
+ 'books_popular' => 'Priljubjene knjige',
+ 'books_recent' => 'Zadnje knjige',
+ 'books_new' => 'Nove knjige',
+ 'books_new_action' => 'Nova knjiga',
+ 'books_popular_empty' => 'Najbolj priljubljene knjige se bodo pojavile tukaj.',
+ 'books_new_empty' => 'Zadnje ustvarjene knjige se bodo pojavile tukaj.',
+ 'books_create' => 'Izdelaj novo knjigo',
+ 'books_delete' => 'Izbriši knjigo',
+ 'books_delete_named' => 'Izbriši knjigo :bookName',
+ 'books_delete_explain' => 'To bo izbrisalo knjigo z imenom \':bookName\'. Vse strani in poglavja bodo odstranjena.',
+ 'books_delete_confirmation' => 'Ali ste prepričani, da želite izbrisati to knjigo?',
+ 'books_edit' => 'Uredi knjigo',
+ 'books_edit_named' => 'Uredi knjigo :bookName',
+ 'books_form_book_name' => 'Ime knjige',
+ 'books_save' => 'Shrani knjigo',
+ 'books_permissions' => 'Dovoljenja knjige',
+ 'books_permissions_updated' => 'Posodobljena dovoljenja knjige',
+ 'books_empty_contents' => 'Nobena stran ali poglavje ni bilo ustvarjeno za to knjigo.',
+ 'books_empty_create_page' => 'Ustvari novo stran',
+ 'books_empty_sort_current_book' => 'Razvrsti trenutno knjigo',
+ 'books_empty_add_chapter' => 'Dodaj poglavje',
+ 'books_permissions_active' => 'Aktivna dovoljenja knjige',
+ 'books_search_this' => 'Išči to knjigo',
+ 'books_navigation' => 'Navigacija knjige',
+ 'books_sort' => 'Razvrsti vsebine knjige',
+ 'books_sort_named' => 'Razvrsti knjigo :bookName',
+ 'books_sort_name' => 'Razvrsti po imenu',
+ 'books_sort_created' => 'Razvrsti po datumu nastanka',
+ 'books_sort_updated' => 'Razvrsti po datumu posodobitve',
+ 'books_sort_chapters_first' => 'Najprej poglavja',
+ 'books_sort_chapters_last' => 'Nazadnje poglavja',
+ 'books_sort_show_other' => 'Prikaži druge knjige',
+ 'books_sort_save' => 'Shrani novo naročilo',
+
+ // Chapters
+ 'chapter' => 'Poglavje',
+ 'chapters' => 'Poglavja',
+ 'x_chapters' => ':count Poglavje|:count Poglavja',
+ 'chapters_popular' => 'Priljubljena poglavja',
+ 'chapters_new' => 'Novo poglavje',
+ 'chapters_create' => 'Ustvari novo poglavje',
+ 'chapters_delete' => 'Izbriši poglavje',
+ 'chapters_delete_named' => 'Izbriši poglavje :chapterName',
+ 'chapters_delete_explain' => 'To bo izbrisalo poglavje z \':chapterName\'. Vse strani bodo odstranjene in dodane neposredno v matično knjigo.',
+ 'chapters_delete_confirm' => 'Si prepričan, da želiš izbrisati to poglavje?',
+ 'chapters_edit' => 'Uredi poglavje',
+ 'chapters_edit_named' => 'Uredi poglavje :chapterName',
+ 'chapters_save' => 'Shrani poglavje',
+ 'chapters_move' => 'Premakni poglavje',
+ 'chapters_move_named' => 'Premakni poglavje :chapterName',
+ 'chapter_move_success' => 'Poglavje premaknjeno v :bookName',
+ 'chapters_permissions' => 'Dovoljenja poglavij',
+ 'chapters_empty' => 'V tem poglavju trenutno ni strani.',
+ 'chapters_permissions_active' => 'Aktivna dovoljenja poglavij',
+ 'chapters_permissions_success' => 'Posodobljena dovoljenja poglavij',
+ 'chapters_search_this' => 'Išči v tem poglavju',
+
+ // Pages
+ 'page' => 'Stran',
+ 'pages' => 'Strani',
+ 'x_pages' => ':count Stran|:count Strani',
+ 'pages_popular' => 'Priljubjene strani',
+ 'pages_new' => 'Nova stran',
+ 'pages_attachments' => 'Priloge',
+ 'pages_navigation' => 'Navigacija po strani',
+ 'pages_delete' => 'Izbriši stran',
+ 'pages_delete_named' => 'Izbriši stran :pageName',
+ 'pages_delete_draft_named' => 'Izbriši osnutek strani :pageName',
+ 'pages_delete_draft' => 'Izbriši osnutek strani',
+ 'pages_delete_success' => 'Stran izbirsana',
+ 'pages_delete_draft_success' => 'Osnutek strani izbrisan',
+ 'pages_delete_confirm' => 'Ste prepričani, da želite izbrisati to stran?',
+ 'pages_delete_draft_confirm' => 'Ali ste prepričani, da želite izbrisati ta osnutek?',
+ 'pages_editing_named' => 'Urejanje strani :pageName',
+ 'pages_edit_draft_options' => 'Možnosti osnutka',
+ 'pages_edit_save_draft' => 'Shrani osnutek',
+ 'pages_edit_draft' => 'Uredi osnutek strani',
+ 'pages_editing_draft' => 'Urejanje osnutka',
+ 'pages_editing_page' => 'Urejanje strani',
+ 'pages_edit_draft_save_at' => 'Osnutek shranjen ob ',
+ 'pages_edit_delete_draft' => 'Izbriši osnutek',
+ 'pages_edit_discard_draft' => 'Zavrzi osnutek',
+ 'pages_edit_set_changelog' => 'Nastavi zgodovino sprememb',
+ 'pages_edit_enter_changelog_desc' => 'Vnesite kratek opis sprememb, ki ste jih naredili',
+ 'pages_edit_enter_changelog' => 'Vnesite zgodovino sprememb',
+ 'pages_save' => 'Shrani stran',
+ 'pages_title' => 'Naslov strani',
+ 'pages_name' => 'Ime strani',
+ 'pages_md_editor' => 'Urejevalnik',
+ 'pages_md_preview' => 'Predogled',
+ 'pages_md_insert_image' => 'Vstavi sliko',
+ 'pages_md_insert_link' => 'Vnesi povezavo entitete',
+ 'pages_md_insert_drawing' => 'Vstavi risbo',
+ 'pages_not_in_chapter' => 'Stran ni v poglavju',
+ 'pages_move' => 'Premakni stran',
+ 'pages_move_success' => 'Stran premaknjena v ":parentName"',
+ 'pages_copy' => 'Kopiraj stran',
+ 'pages_copy_desination' => 'Destinacija kopije',
+ 'pages_copy_success' => 'Stran uspešno kopirana',
+ 'pages_permissions' => 'Dovoljenja strani',
+ 'pages_permissions_success' => 'Posodobljena dovoljenja strani',
+ 'pages_revision' => 'Revizija',
+ 'pages_revisions' => 'Pregled strani',
+ 'pages_revisions_named' => 'Pregledi strani za :pageName',
+ 'pages_revision_named' => 'Pregled strani za :pageName',
+ 'pages_revisions_created_by' => 'Ustvaril',
+ 'pages_revisions_date' => 'Datum revizije',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_numbered' => 'Revizija #:id',
+ 'pages_revisions_numbered_changes' => 'Revizija #:id Changes',
+ 'pages_revisions_changelog' => 'Dnevnik sprememb',
+ 'pages_revisions_changes' => 'Spremembe',
+ 'pages_revisions_current' => 'Trenutna različica',
+ 'pages_revisions_preview' => 'Predogled',
+ 'pages_revisions_restore' => 'Obnovi',
+ 'pages_revisions_none' => 'Ta stran nima revizije',
+ 'pages_copy_link' => 'Kopiraj povezavo',
+ 'pages_edit_content_link' => 'Uredi vsebino',
+ 'pages_permissions_active' => 'Aktivna dovoljenja strani',
+ 'pages_initial_revision' => 'Prvotno objavljeno',
+ 'pages_initial_name' => 'Nova stran',
+ 'pages_editing_draft_notification' => 'Trenutno urejate osnutek ku je bil nazadnje shranjen :timeDiff.',
+ 'pages_draft_edited_notification' => 'Ta stran je od takrat posodobljena. Priporočamo, da zavržete ta osnutek.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count uporabnikov je začelo urejati to stran',
+ 'start_b' => ':userName je začel urejati to stran',
+ 'time_a' => 'od kar je bila stran nazandnje posodobljena',
+ 'time_b' => 'v zadnjih :minCount minutah',
+ 'message' => ':start :time. Pazite, da ne boste prepisali posodobitev drug drugega!',
+ ],
+ 'pages_draft_discarded' => 'Osnutek zavržen, urejevalnik je bil posodobljen s trenutno vsebino strani',
+ 'pages_specific' => 'Določena stran',
+ 'pages_is_template' => 'Predloga strani',
+
+ // Editor Sidebar
+ 'page_tags' => 'Oznake strani',
+ 'chapter_tags' => 'Oznake poglavja',
+ 'book_tags' => 'Oznake knjige',
+ 'shelf_tags' => 'Oznake police',
+ 'tag' => 'Oznaka',
+ 'tags' => 'Oznake',
+ 'tag_name' => 'Ime oznake',
+ 'tag_value' => 'Vrednost oznake (opcijsko)',
+ 'tags_explain' => "Dodajte nekaj oznak za boljšo kategorizacijo vaše vsebine.\nDodelite lahko vrednost oznake za boljšo poglobljeno organizacijo.",
+ 'tags_add' => 'Dodaj drugo oznako',
+ 'tags_remove' => 'Odstrani to oznako',
+ 'attachments' => 'Priloge',
+ 'attachments_explain' => 'Naložite nekaj datotek ali pripnite nekaj povezav, da bo prikazano na vaši strani. Te so vidne v stranski vrstici strani.',
+ 'attachments_explain_instant_save' => 'Spremembe tukaj so takoj shranjene.',
+ 'attachments_items' => 'Priloženi element',
+ 'attachments_upload' => 'Naloži datoteko',
+ 'attachments_link' => 'Pripni povezavo',
+ 'attachments_set_link' => 'Nastavi povezavo',
+ 'attachments_delete_confirm' => 'Ponovno kliknite izbriši, da potrdite izbris te priloge.',
+ 'attachments_dropzone' => 'Spustite datoteke ali kliknite tukaj, če želite priložiti datoteko',
+ 'attachments_no_files' => 'Nobena datoteka ni bila naložena',
+ 'attachments_explain_link' => 'Lahko pripnete povezavo, če ne želite naložiti datoteke. Lahko je povezava na drugo stran ali povezava do dateteke v oblaku.',
+ 'attachments_link_name' => 'Ime povezave',
+ 'attachment_link' => 'Povezava priponke',
+ 'attachments_link_url' => 'Povezava do datoteke',
+ 'attachments_link_url_hint' => 'Url mesta ali datoteke',
+ 'attach' => 'Pripni',
+ 'attachments_edit_file' => 'Uredi datoteko',
+ 'attachments_edit_file_name' => 'Ime datoteke',
+ 'attachments_edit_drop_upload' => 'Spustite datoteke ali kliknite tukaj, če želite naložiti in prepisati',
+ 'attachments_order_updated' => 'Priloga posodobljena',
+ 'attachments_updated_success' => 'Podrobnosti priloge posodobljene',
+ 'attachments_deleted' => 'Priloga izbirsana',
+ 'attachments_file_uploaded' => 'Datoteka uspešno naložena',
+ 'attachments_file_updated' => 'Datoteka uspešno posodobljena',
+ 'attachments_link_attached' => 'Povezava uspešno dodana na stran',
+ 'templates' => 'Predloge',
+ 'templates_set_as_template' => 'Stran je predloga',
+ 'templates_explain_set_as_template' => 'To stran lahko nastavite kot predlogo tako bo njena vsebina uporabljena pri izdelavi drugih strani. Ostali uporabniki bodo lahko uporabljali to predlogo, če imajo dovoljenja za to stran.',
+ 'templates_replace_content' => 'Zamenjaj vsebino strani',
+ 'templates_append_content' => 'Dodajte vsebini strani',
+ 'templates_prepend_content' => 'Dodaj k vsebini strani',
+
+ // Profile View
+ 'profile_user_for_x' => 'Uporabnik že :time',
+ 'profile_created_content' => 'Ustvarjena vsebina',
+ 'profile_not_created_pages' => ':userName ni izdelal nobene strani',
+ 'profile_not_created_chapters' => ':userName ni izdelal nobenega poglavja',
+ 'profile_not_created_books' => ':userName ni izdelal nobene knjige',
+ 'profile_not_created_shelves' => ':userName ni izdelal nobene knjižne police',
+
+ // Comments
+ 'comment' => 'Komentar',
+ 'comments' => 'Komentarji',
+ 'comment_add' => 'Dodaj komentar',
+ 'comment_placeholder' => 'Dodaj komentar',
+ 'comment_count' => '{0} Ni komentarjev|{1} 1 Komentar|[2,*] :count Komentarji',
+ 'comment_save' => 'Shrani komentar',
+ 'comment_saving' => 'Shranjujem komentar...',
+ 'comment_deleting' => 'Brišem komentar...',
+ 'comment_new' => 'Nov kometar',
+ 'comment_created' => 'komentirano :createDiff',
+ 'comment_updated' => 'Posodobljeno :updateDiff od :username',
+ 'comment_deleted_success' => 'Komentar je izbrisan',
+ 'comment_created_success' => 'Komentar dodan',
+ 'comment_updated_success' => 'Komentar posodobljen',
+ 'comment_delete_confirm' => 'Ste prepričani, da želite izbrisati ta komentar?',
+ 'comment_in_reply_to' => 'Odgovor na :commentId',
+
+ // Revision
+ 'revision_delete_confirm' => 'Ali ste prepričani, da želite izbrisati to revizijo?',
+ 'revision_restore_confirm' => 'Ali ste prepričani da želite obnoviti to revizijo? Vsebina trenutne strani bo zamenjana.',
+ 'revision_delete_success' => 'Revizija izbrisana',
+ 'revision_cannot_delete_latest' => 'Ne morem izbrisati zadnje revizije.'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Text shown in error messaging.
+ */
+return [
+
+ // Permissions
+ 'permission' => 'Nimate pravic za dostop do želene strani.',
+ 'permissionJson' => 'Nimate dovoljenja za izvedbo zahtevanega dejanja.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Uporabnik z e-pošto :email že obstaja, vendar z drugačnimi poverilnicami.',
+ 'email_already_confirmed' => 'E-naslov je že bil potrjen, poskusite se prijaviti.',
+ 'email_confirmation_invalid' => 'Ta potrditveni žeton ni veljaven ali je že bil uporabljen. Poizkusite znova.',
+ 'email_confirmation_expired' => 'Potrditveni žeton je pretečen. Nova potrditvena e-pošta je bila poslana.',
+ 'email_confirmation_awaiting' => 'Potrebno je potrditi e-naslov',
+ 'ldap_fail_anonymous' => 'Dostop do LDAP ni uspel z anonimno povezavo',
+ 'ldap_fail_authed' => 'Neuspešen LDAP dostop z danimi podrobnostimi dn & gesla',
+ 'ldap_extension_not_installed' => 'PHP razširitev za LDAP ni nameščen',
+ 'ldap_cannot_connect' => 'Ne morem se povezati na LDAP strežnik, neuspešna začetna povezava',
+ 'saml_already_logged_in' => 'Že prijavljen',
+ 'saml_user_not_registered' => 'Uporabniško ime :name ni registrirano in avtomatska registracija je onemogočena',
+ 'saml_no_email_address' => 'Nisem našel e-naslova za tega uporabnika v podatkih iz zunanjega sistema za preverjanje pristnosti',
+ 'saml_invalid_response_id' => 'Zahteva iz zunanjega sistema za preverjanje pristnosti ni prepoznana s strani procesa zagnanega s strani te aplikacije. Pomik nazaj po prijavi je lahko povzročil te težave.',
+ 'saml_fail_authed' => 'Prijava z uporabo :system ni uspela, sistem ni zagotovil uspešne avtorizacije',
+ 'social_no_action_defined' => 'Akcija ni določena',
+ 'social_login_bad_response' => "Napaka pri :socialAccount prijavi:\n:error",
+ 'social_account_in_use' => 'Ta :socialAccount je že v uporabi. Poskusite se prijaviti z :socialAccount možnostjo.',
+ 'social_account_email_in_use' => 'Ta e-naslov :email je že v uporabi. Če že imate račun lahko povežete vaš :socialAccount v vaših nastavitvah profila.',
+ 'social_account_existing' => 'Ta :socialAccount je že dodan vašemu profilu.',
+ 'social_account_already_used_existing' => 'Ta :socialAccount je v uporabi s strani drugega uporabnika.',
+ 'social_account_not_used' => 'Ta :socialAccount ni povezan z nobenim uporabnikom. Prosimo povežite ga v vaših nastavitvah profila. ',
+ 'social_account_register_instructions' => 'Če še nimate računa, se lahko registrirate z uporabo :socialAccount.',
+ 'social_driver_not_found' => 'Socialni vtičnik ni najden',
+ 'social_driver_not_configured' => 'Vaše nastavitve :socialAccount niso pravilo nastavljene.',
+ 'invite_token_expired' => 'Ta link je pretečen. Namesto tega lahko ponastavite vaše geslo računa.',
+
+ // System
+ 'path_not_writable' => 'Poti :filePath ni bilo mogoče naložiti. Prepričajte se da je zapisljiva na strežnik.',
+ 'cannot_get_image_from_url' => 'Ne morem pridobiti slike z :url',
+ 'cannot_create_thumbs' => 'Strežnik ne more izdelati sličice. Prosimo preverite če imate GD PHP razširitev nameščeno.',
+ 'server_upload_limit' => 'Strežnik ne dovoli nalaganj take velikosti. Prosimo poskusite manjšo velikost datoteke.',
+ 'uploaded' => 'Strežnik ne dovoli nalaganj take velikosti. Prosimo poskusite manjšo velikost datoteke.',
+ 'image_upload_error' => 'Prišlo je do napake med nalaganjem slike',
+ 'image_upload_type_error' => 'Napačen tip (format) slike',
+ 'file_upload_timeout' => 'Čas nalaganjanja datoteke je potekel.',
+
+ // Attachments
+ 'attachment_page_mismatch' => 'Neskladje strani med posodobitvijo priloge',
+ 'attachment_not_found' => 'Priloga ni najdena',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Osnutka ni bilo mogoče shraniti. Pred shranjevanjem te strani se prepričajte, da imate internetno povezavo',
+ 'page_custom_home_deletion' => 'Ne morem izbrisati strani dokler je nastavljena kot domača stran',
+
+ // Entities
+ 'entity_not_found' => 'Entiteta ni najdena',
+ 'bookshelf_not_found' => 'Knjižna polica ni najdena',
+ 'book_not_found' => 'Knjiga ni najdena',
+ 'page_not_found' => 'Stran ni najdena',
+ 'chapter_not_found' => 'Poglavje ni najdeno',
+ 'selected_book_not_found' => 'Izbrana knjiga ni najdena',
+ 'selected_book_chapter_not_found' => 'Izbrana knjiga ali poglavje ni najdeno',
+ 'guests_cannot_save_drafts' => 'Gosti ne morejo shranjevati osnutkov',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Ne morete odstraniti edinega administratorja',
+ 'users_cannot_delete_guest' => 'Ne morete odstraniti uporabnika gost',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Te vloge mi možno urejati',
+ 'role_system_cannot_be_deleted' => 'Ta vloga je sistemska in je ni možno brisati',
+ 'role_registration_default_cannot_delete' => 'Te vloge ni možno brisati dokler je nastavljena kot privzeta',
+ 'role_cannot_remove_only_admin' => 'Ta uporabnik je edini administrator. Dodelite vlogo administratorja drugemu uporabniku preden ga poskusite brisati.',
+
+ // Comments
+ 'comment_list' => 'Napaka se je pojavila pri pridobivanju komentarjev.',
+ 'cannot_add_comment_to_draft' => 'Ni mogoče dodajanje komentarjev v osnutek.',
+ 'comment_add' => 'Napaka se je pojavila pri dodajanju / posodobitev komentarjev.',
+ 'comment_delete' => 'Napaka se je pojavila pri brisanju komentarja.',
+ 'empty_comment' => 'Praznega komentarja ne morete objaviti.',
+
+ // Error pages
+ '404_page_not_found' => 'Strani ni mogoče najti',
+ 'sorry_page_not_found' => 'Oprostite, strani ki jo iščete ni mogoče najti.',
+ 'sorry_page_not_found_permission_warning' => 'Če pričakujete, da ta stran obstaja, mogoče nimate pravic, da jo vidite.',
+ 'return_home' => 'Vrni se domov',
+ 'error_occurred' => 'Prišlo je do napake',
+ 'app_down' => ':appName trenutno ni dosegljiva',
+ 'back_soon' => 'Kmalu bo ponovno dosegljiva.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Avtorizacija ni bila najdena',
+ 'api_bad_authorization_format' => 'Avtorizacija je bila najdena, vendar je v napačni obliki',
+ 'api_user_token_not_found' => 'Za dano avtorizacijo ni bil najden noben ustrezen API',
+ 'api_incorrect_token_secret' => 'Skrivnost, ki je bila dana za uporabljeni žeton API, je napačna',
+ 'api_user_no_api_permission' => 'Lastnik API nima pravic za klicanje API',
+ 'api_user_token_expired' => 'Avtorizacijski žeton je pretečen',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Napaka se je pojavila pri pošiljanju testne e-pošte:',
+
+];
--- /dev/null
+<?php
+/**
+ * Pagination Language Lines
+ * The following language lines are used by the paginator library to build
+ * the simple pagination links.
+ */
+return [
+
+ 'previous' => '« Prejšnje',
+ 'next' => 'Naslednje »',
+
+];
--- /dev/null
+<?php
+/**
+ * Password Reminder Language Lines
+ * The following language lines are the default lines which match reasons
+ * that are given by the password broker for a password update attempt has failed.
+ */
+return [
+
+ 'password' => 'Gesla morajo biti najmanj osem znakov in se morajo ujemati s potrditvijo.',
+ 'user' => "Ne moremo najti uporabnika s tem e-poštnim naslovom.",
+ 'token' => 'The password reset token is invalid for this email address.',
+ 'sent' => 'Poslali smo vam povezavo za ponastavitev gesla!',
+ 'reset' => 'Vaše geslo je bilo ponastavljeno!',
+
+];
--- /dev/null
+<?php
+/**
+ * Settings text strings
+ * Contains all text strings used in the general settings sections of BookStack
+ * including users and roles.
+ */
+return [
+
+ // Common Messages
+ 'settings' => 'Nastavitve',
+ 'settings_save' => 'Shrani nastavitve',
+ 'settings_save_success' => 'Nastavitve, shranjene',
+
+ // App Settings
+ 'app_customization' => 'Prilagajanje',
+ 'app_features_security' => 'Lastnosti & Varnost',
+ 'app_name' => 'Ime aplikacije',
+ 'app_name_desc' => 'To ime je prikazano v glavi in vsaki sistemski e-pošti.',
+ 'app_name_header' => 'Prikaži ime v glavi',
+ 'app_public_access' => 'Javni dostop',
+ 'app_public_access_desc' => 'Če omogočite to možnost, bo obiskovalcem, ki niso prijavljeni, omogočen dostop do vsebine v BookStack.',
+ 'app_public_access_desc_guest' => 'Dostop za javne obiskovalce je mogoče nadzorovati prek uporabnika "Gost".',
+ 'app_public_access_toggle' => 'Dovoli javni dostop',
+ 'app_public_viewing' => 'Dovoli javni pregled?',
+ 'app_secure_images' => 'Nalaganje slik z večjo varnostjo',
+ 'app_secure_images_toggle' => 'Omogoči nalaganje slik z večjo varnostjo',
+ 'app_secure_images_desc' => 'Zaradi delovanja so vse slike javne. Ta možnost doda naključni, hard-to-guess niz pred Url-ji slike. Prepričajte se, da indeksi imenikov niso omogočeni, da preprečite enostaven dostop.',
+ 'app_editor' => 'Urejevalnik strani',
+ 'app_editor_desc' => 'Izberite urejevalnik, ki bodo uporabniki uporabljali za urejanje strani.',
+ 'app_custom_html' => 'Po meri HTML vsebina glave',
+ 'app_custom_html_desc' => 'Katerakoli vsebina dodana tukaj, bo vstavljena na dno <head> dela vsake strani. To je uporabno za uporabo prevladujočih slogov ali dodajanje analitike.',
+ 'app_custom_html_disabled_notice' => 'Po meri narejena HTML glava vsebine je onemogočena na tej strani z nastavitvami, da se zagotovi, da bodo morebitne zrušitve lahko povrnjene.',
+ 'app_logo' => 'Logotip aplikacije',
+ 'app_logo_desc' => 'Ta slika bi morala biti 43px visoka. <br>Velike slike bodo pomanjšane.',
+ 'app_primary_color' => 'Osnovna barva aplikacije',
+ 'app_primary_color_desc' => 'Nastavi osnovno barvo za aplikacijo vključno s pasico, gumbi in povezavami.',
+ 'app_homepage' => 'Domača stran aplikacije',
+ 'app_homepage_desc' => 'Izberi pogled, da se pokaže na domači strani, namesto osnovnega pogleda. Dovoljenja strani so prezrta za izbrane strani.',
+ 'app_homepage_select' => 'Izberi stran',
+ 'app_disable_comments' => 'Onemogoči komentarje',
+ 'app_disable_comments_toggle' => 'Onemogoči komentarje',
+ 'app_disable_comments_desc' => 'Onemogoči komentarje na vseh straneh v aplikaciji. <br> Obstoječi komentarji se ne prikazujejo.',
+
+ // Color settings
+ 'content_colors' => 'Barve vsebine',
+ 'content_colors_desc' => 'Nastavi barve za vse elemente v hierarhiji. Izbor barv s podobno barvno svetlostjo je priporočljivo za osnovne barve za branje.',
+ 'bookshelf_color' => 'Barva police',
+ 'book_color' => 'knjiga barv',
+ 'chapter_color' => 'barvno poglavje',
+ 'page_color' => 'Stran barv',
+ 'page_draft_color' => 'stran osnutka barv',
+
+ // Registration Settings
+ 'reg_settings' => 'registracija',
+ 'reg_enable' => 'onemogočena registracija',
+ 'reg_enable_toggle' => 'omogočena registracija',
+ 'reg_enable_desc' => 'Ko je registracija omogočena, se bo uporabnik lahko prijavil sam kot uporabnik aplikacije. Po registraciji je uporabniku dodeljena ena prevzeta vloga.',
+ 'reg_default_role' => 'prevzeta uporabniška vloga po registraciji',
+ 'reg_enable_external_warning' => 'Ta možnosti je ignorirana ko zunanja LDAP ali SAML avtentikacija je akitivna. Uporabniški računi za ne obstoječe uporabnike bodo avtomatsko izdelani, če avtentikacija zunanjih uporabljenih sistemov je uspešna.',
+ 'reg_email_confirmation' => 'potrditev e-pošte',
+ 'reg_email_confirmation_toggle' => 'potrebna potrditev e-pošte',
+ 'reg_confirm_email_desc' => 'Če uporabite omejitev domene, bo potrebna potrditev e-pošte in ta možnost bo prezrta.',
+ 'reg_confirm_restrict_domain' => 'omejitev domene',
+ 'reg_confirm_restrict_domain_desc' => 'Vnesite seznam domen, ločenih z vejico, na katere želite omejiti registracijo. Uporabnik bo prejel e-pošto za potrditev naslova, preden bo omogočena interakcija z aplikacijo. <br> Upoštevajte, da uporabnik po uspešni registrciji lahko spremeni svoj e-poštni naslov.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Brez omejitev',
+
+ // Maintenance settings
+ 'maint' => 'Vzdrževanje',
+ 'maint_image_cleanup' => 'odstrani /počisti slike',
+ 'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.",
+ 'maint_image_cleanup_ignore_revisions' => 'Ignore images in revisions',
+ 'maint_image_cleanup_run' => 'zaženite čiščenje',
+ 'maint_image_cleanup_warning' => ':zaznano je bilo število neuporabljenih slik. Ali si prepričan, da želiš odstraniti izbrane slike?',
+ 'maint_image_cleanup_success' => ':najdeno in izbrisano je bilo število neuporabljenih slik!',
+ 'maint_image_cleanup_nothing_found' => 'Najdenih ni bilo nobenih neuporabljenih slik!',
+ 'maint_send_test_email' => 'Pošlji testno e-pismo',
+ 'maint_send_test_email_desc' => 'To pošlje testno e-pošto na vaš e-poštni naslov, naveden v vašem profilu.',
+ 'maint_send_test_email_run' => 'Pošlji preizkusno sporočilo',
+ 'maint_send_test_email_success' => 'e-pošta poslana na :naslov',
+ 'maint_send_test_email_mail_subject' => 'Preizkusno sporočilo',
+ 'maint_send_test_email_mail_greeting' => 'Zdi se, da dostava e-pošte deluje!',
+ 'maint_send_test_email_mail_text' => 'Čestitke! Če ste prejeli e.poštno obvestilo so bile vaše e-poštne nastavitve pravilno konfigurirane.',
+
+ // Role Settings
+ 'roles' => 'Vloge',
+ 'role_user_roles' => 'Pravilo uporabnika',
+ 'role_create' => 'Izdelaj novo polico',
+ 'role_create_success' => 'Zapis uspešno ustvarjen',
+ 'role_delete' => 'Brisanje vloge',
+ 'role_delete_confirm' => 'Izbrisana bo vloga z imenom \':vlogaImena\'.',
+ 'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.',
+ 'role_delete_no_migration' => "Uporabniki niso prenosljivi",
+ 'role_delete_sure' => 'Ali ste prepričani, da želite izbrisati to element?',
+ 'role_delete_success' => 'Uspešno izbrisano',
+ 'role_edit' => 'Uredi zapis',
+ 'role_details' => 'Podrobnosti zapisa',
+ 'role_name' => 'Ime zapisa',
+ 'role_desc' => 'Kratki opis ',
+ 'role_external_auth_id' => 'Zunanje dokazilo ID',
+ 'role_system' => 'Sistemska dovoljenja',
+ 'role_manage_users' => 'Upravljanje uporabnikov',
+ 'role_manage_roles' => 'Vloga upravljanja & vloga dovoljenj',
+ 'role_manage_entity_permissions' => 'Upravljanje vseh knjig, poglavij & dovoljenj',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Nastavitve za upravljanje',
+ 'role_asset' => 'Sistemska dovoljenja',
+ 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_all' => 'Vse',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => '
+46/5000
+Nadzira ga sredstvo, v katerega so naloženi',
+ 'role_save' => 'Shrani vlogo',
+ 'role_update_success' => 'Vloga uspešno posodobljena',
+ 'role_users' => 'Uporabniki v tej vlogi',
+ 'role_users_none' => '
+V tej vlogi trenutno ni dodeljen noben uporabnik',
+
+ // Users
+ 'users' => 'Uporabniki',
+ 'user_profile' => 'Uporabniški profil',
+ 'users_add_new' => 'Dodaj novega uporabnika',
+ 'users_search' => 'Išči uporabnike',
+ 'users_details' => 'Podatki o uporabniku',
+ 'users_details_desc' => 'Nastavite prikazno ime in e-poštni naslov za tega uporabnika. E-poštni naslov bo uporabljen za prijavo v aplikacijo.',
+ 'users_details_desc_no_email' => ' Nastavite prikazno ime za tega uporabnika, da ga bodo drugi lahko prepoznali.',
+ 'users_role' => 'Vloge uporabnika',
+ 'users_role_desc' => 'Izberi katere vloge bodo dodeljene uporabniku. Če je uporabniku dodeljenih več vlog, se dovoljenja združijo in prejmenjo vse sposobnosti dodeljenih vlog.',
+ 'users_password' => 'Uporabniško geslo',
+ 'users_password_desc' => 'Nastavite geslo, ki se uporablja za prijavo v aplikacijo. Dolg mora biti vsaj 6 znakov.',
+ 'users_send_invite_text' => 'Uporabniku lahko pošljete e-poštno sporočilo s povabilom, ki mu omogoča, da nastavi svoje geslo, ali ga nastavite kar sami.',
+ 'users_send_invite_option' => 'Pošlji uporabniku e-povabilo',
+ 'users_external_auth_id' => 'Zunanje dokazilo ID',
+ 'users_external_auth_id_desc' => 'To je ID, s katerim se ta uporabnik ujema pri komunikaciji z vašim zunanjim sistemom za preverjanje pristnosti.',
+ 'users_password_warning' => 'Spodaj izpolni le, če želiš spremeniti geslo.',
+ 'users_system_public' => 'Ta uporabnik predstavlja vse gostujoče uporabnike, ki obiščejo vaš primer. Za prijavo je ni mogoče uporabiti, ampak je dodeljena samodejno.',
+ 'users_delete' => 'Brisanje uporabnika',
+ 'users_delete_named' => 'Brisanje uporabnika :userName',
+ 'users_delete_warning' => 'Iz sistema se bo popolnoma izbrisal uporabnik z imenom \':userName\'',
+ 'users_delete_confirm' => 'Ste prepričani, da želite izbrisati izbranega uporabnika?',
+ 'users_delete_success' => 'Uporabniki uspešno odstranjeni.',
+ 'users_edit' => 'Uredi uporabnika',
+ 'users_edit_profile' => 'Uredi profil',
+ 'users_edit_success' => 'Uporabnik uspešno posodobljen',
+ 'users_avatar' => 'uporabnikov avatar',
+ 'users_avatar_desc' => 'Izberi sliko, ki predstavlja uporabnika. Velikost mora biti približno 256px.',
+ 'users_preferred_language' => 'Izbrani jezik',
+ 'users_preferred_language_desc' => 'Ta možnost bo spremenila jezik, ki se uporablja za uporabniški vmesnik aplikacije. To ne bo vplivalo na nobeno vsebino, ki jo ustvari uporabnik.',
+ 'users_social_accounts' => 'Družbene ikone / računi',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Povežite račun',
+ 'users_social_disconnect' => 'Odklop računa',
+ 'users_social_connected' => ':socialAccount račun je bil uspešno dodan na vašem profilu',
+ 'users_social_disconnected' => ':socialAccount račun je bil uspešno odstranjen iz vašega profila',
+ 'users_api_tokens' => 'API žeton',
+ 'users_api_tokens_none' => 'Nič API žetonov ni bilo ustvarjenih za uporabnika',
+ 'users_api_tokens_create' => 'Ustvari žeton',
+ 'users_api_tokens_expires' => 'Poteče',
+ 'users_api_tokens_docs' => 'API dokumentacija',
+
+ // API Tokens
+ 'user_api_token_create' => 'Ustvari žeton',
+ 'user_api_token_name' => 'Ime',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Datum poteka',
+ 'user_api_token_expiry_desc' => 'Določi datum izteka uporabnosti žetona. Po tem datumu, zahteve poslane s tem žetonom, ne bodo več delovale.
+Če pustite to polje prazno, bo iztek uporabnosti 100.let .',
+ 'user_api_token_create_secret_message' => 'Takoj po ustvarjanju tega žetona se ustvari in prikaže "Token ID" "in" Token Secret ". Skrivnost bo prikazana samo enkrat, zato se pred nadaljevanjem prepričajte o varnosti kopirnega mesta.',
+ 'user_api_token_create_success' => 'API žeton uspešno ustvarjen',
+ 'user_api_token_update_success' => 'API žeton uspešno posodobljen',
+ 'user_api_token' => 'API žeton',
+ 'user_api_token_id' => 'Žeton ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Skrivnost žetona',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Žeton ustvarjen :timeAgo',
+ 'user_api_token_updated' => 'Žeton posodobljen :timeAgo',
+ 'user_api_token_delete' => 'Briši žeton',
+ 'user_api_token_delete_warning' => 'Iz sistema se bo popolnoma izbrisal API žeton z imenom \':tokenName\' ',
+ 'user_api_token_delete_confirm' => 'Ali ste prepričani, da želite izbrisati ta API žeton?',
+ 'user_api_token_delete_success' => 'API žeton uspešno izbrisan',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'English',
+ 'ar' => 'العربية',
+ 'cs' => 'Česky',
+ 'da' => 'danščina',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ]
+ //!////////////////////////////////
+];
--- /dev/null
+<?php
+/**
+ * Validation Lines
+ * The following language lines contain the default error messages used by
+ * the validator class. Some of these rules have multiple versions such
+ * as the size rules. Feel free to tweak each of these messages here.
+ */
+return [
+
+ // Standard laravel validation lines
+ 'accepted' => ':attribute mora biti potrjen.',
+ 'active_url' => ':attribute ni veljaven URL.',
+ 'after' => ':attribute mora biti datum po :date.',
+ 'alpha' => ':attribute lahko vsebuje samo črke.',
+ 'alpha_dash' => ':attribute lahko vsebuje samo ?rke, ?tevilke in ?rtice.',
+ 'alpha_num' => ':attribute lahko vsebuje samo črke in številke.',
+ 'array' => ':attribute mora biti niz.',
+ 'before' => ':attribute mora biti datum pred :date.',
+ 'between' => [
+ 'numeric' => ':attribute mora biti med :min in :max.',
+ 'file' => ':attribute mora biti med :min in :max kilobajti.',
+ 'string' => ':attribute mora biti med :min in :max znaki.',
+ 'array' => ':attribute mora imeti med :min in :max elementov.',
+ ],
+ 'boolean' => ':attribute polje mora biti pravilno ali napačno.',
+ 'confirmed' => ':attribute potrditev se ne ujema.',
+ 'date' => ':attribute ni veljaven datum.',
+ 'date_format' => ':attribute se ne ujema z obliko :format.',
+ 'different' => ':attribute in :other morata biti različna.',
+ 'digits' => 'Atribut mora biti: števnik.',
+ 'digits_between' => ':attribute mora biti med :min in :max števkami.',
+ 'email' => ':attribute mora biti veljaven e-naslov.',
+ 'ends_with' => 'The :attribute se mora končati z eno od določenih: :vrednost/values',
+ 'filled' => 'Polje ne sme biti prazno.',
+ 'gt' => [
+ 'numeric' => ':attribute mora biti večji kot :vrednost.',
+ 'file' => ':attribute mora biti večji kot :vrednost kilobytes',
+ 'string' => ':attribute mora biti večji kot :vrednost znakov',
+ 'array' => ':attribute mora biti večji kot :vrednost znakov',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute mora biti večji kot ali enak :vrednost.',
+ 'file' => ':attribute mora biti večji kot ali enak :vrednost kilobytes',
+ 'string' => ':attribute mora biti večji kot ali enak :vrednost znakov',
+ 'array' => ':attribute mora imeti :vrednost znakov ali več',
+ ],
+ 'exists' => 'Izbrani atribut je neveljaven.',
+ 'image' => ':attribute mora biti slika.',
+ 'image_extension' => ':attribute mora imeti veljavno & podprto slikovno pripono',
+ 'in' => 'izbran :attribute je neveljaven.',
+ 'integer' => ':attribute mora biti celo število.',
+ 'ip' => ':attribute mora biti veljaven IP naslov.',
+ 'ipv4' => ':attribute mora biti veljaven IPv4 naslov.',
+ 'ipv6' => ':attribute mora biti veljaven IPv6 naslov.',
+ 'json' => ':attribute mora biti veljavna JSON povezava.',
+ 'lt' => [
+ 'numeric' => ':attribute mora biti manj kot :vrednost.',
+ 'file' => ':attribute mora biti manj kot :vrednost kilobytes',
+ 'string' => ':attribute mora biti manj kot :vrednost znakov',
+ 'array' => ':attribute mora imeti manj kot :vrednost znakov',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute mora biti manj kot ali enak :vrednost.',
+ 'file' => ':attribute mora biti manj kot ali enak :vrednost kilobytes',
+ 'string' => ':attribute mora biti manj kot ali enak :vrednost znakov',
+ 'array' => ':attribute ne sme imeti več kot :vrednost elementov',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute ne sme biti večja od :max.',
+ 'file' => ':attribute ne sme biti večja od :max kilobytes.',
+ 'string' => 'Atribut naj ne bo večji od: max znakov.',
+ 'array' => ':attribute ne sme imeti več kot :max elementov.',
+ ],
+ 'mimes' => 'Atribut mora biti datoteka vrste:: vrednost.',
+ 'min' => [
+ 'numeric' => ':attribute mora biti najmanj :min.',
+ 'file' => ':attribute mora biti najmanj :min KB.',
+ 'string' => ':attribute mora biti najmanj :min znakov.',
+ 'array' => ':attribute mora imeti vsaj :min elementov.',
+ ],
+ 'no_double_extension' => ':attribute mora imeti samo eno razširitveno datoteko',
+ 'not_in' => 'Izbrani atribut je neveljaven.',
+ 'not_regex' => ':attribute oblika ni veljavna.',
+ 'numeric' => 'Atribut mora biti število.',
+ 'regex' => ':attribute oblika ni veljavna.',
+ 'required' => 'Polje :attribute je obvezno.',
+ 'required_if' => 'Polje atributa je obvezno, če: drugo je: vrednost.',
+ 'required_with' => 'Polje atributa je obvezno, ko: so prisotne vrednosti.',
+ 'required_with_all' => 'Polje atributa je obvezno, ko: so prisotne vrednosti.',
+ 'required_without' => 'Polje atributa je obvezno, če: vrednosti niso prisotne.',
+ 'required_without_all' => 'Polje atributa je obvezno, če nobena od: vrednosti ni prisotna.',
+ 'same' => 'Atribut in: drugi se morajo ujemati.',
+ 'size' => [
+ 'numeric' => ':attribute mora biti :velikost.',
+ 'file' => ':attribute mora biti :velikost KB.',
+ 'string' => 'Atribut mora biti: velikost znakov.',
+ 'array' => ':attribute mora vsebovati :velikost elementov.',
+ ],
+ 'string' => ':attribute mora biti niz.',
+ 'timezone' => ':attribute mora biti veljavna cona.',
+ 'unique' => ':attribute je že zaseden.',
+ 'url' => ':attribute oblika ni veljavna.',
+ 'uploaded' => 'Datoteke ni bilo mogoče naložiti. Strežnik morda ne sprejema datotek te velikosti.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Potrditev gesla',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
'reset_password' => 'Återställ lösenord',
'reset_password_send_instructions' => 'Ange din e-postadress nedan så skickar vi ett mail med en länk för att återställa ditt lösenord.',
'reset_password_send_button' => 'Skicka återställningslänk',
- 'reset_password_sent_success' => 'En länk för att återställa lösenordet har skickats till :email.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'Ditt lösenord har återställts.',
'email_reset_subject' => 'Återställ ditt lösenord till :appName',
'email_reset_text' => 'Du får detta mail eftersom vi fått en begäran om att återställa lösenordet till ditt konto.',
'email_not_confirmed_resend_button' => 'Skicka bekräftelse på nytt',
// User Invite
- 'user_invite_email_subject' => 'You have been invited to join :appName!',
- 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
- 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
- 'user_invite_email_action' => 'Set Account Password',
- 'user_invite_page_welcome' => 'Welcome to :appName!',
- 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
- 'user_invite_page_confirm_button' => 'Confirm Password',
- 'user_invite_success' => 'Password set, you now have access to :appName!'
+ 'user_invite_email_subject' => 'Du har blivit inbjuden att gå med i :appName!',
+ 'user_invite_email_greeting' => 'Ett konto har skapats för dig i :appName.',
+ 'user_invite_email_text' => 'Klicka på knappen nedan för att ange ett lösenord och få tillgång:',
+ 'user_invite_email_action' => 'Ange kontolösenord',
+ 'user_invite_page_welcome' => 'Välkommen till :appName!',
+ 'user_invite_page_text' => 'För att slutföra ditt konto och få åtkomst måste du ange ett lösenord som kommer att användas för att logga in på :appName vid framtida besök.',
+ 'user_invite_page_confirm_button' => 'Bekräfta lösenord',
+ 'user_invite_success' => 'Lösenord satt, du har nu tillgång till :appName!'
];
\ No newline at end of file
'reset' => 'Återställ',
'remove' => 'Radera',
'add' => 'Lägg till',
- 'fullscreen' => 'Fullscreen',
+ 'fullscreen' => 'Helskärm',
// Sort Options
- 'sort_options' => 'Sort Options',
- 'sort_direction_toggle' => 'Sort Direction Toggle',
- 'sort_ascending' => 'Sort Ascending',
- 'sort_descending' => 'Sort Descending',
+ 'sort_options' => 'Sorteringsalternativ',
+ 'sort_direction_toggle' => 'Växla sorteringsriktning',
+ 'sort_ascending' => 'Sortera stigande',
+ 'sort_descending' => 'Sortera fallande',
'sort_name' => 'Namn',
'sort_created_at' => 'Skapad',
'sort_updated_at' => 'Uppdaterad',
'grid_view' => 'Rutnätsvy',
'list_view' => 'Listvy',
'default' => 'Förvald',
- 'breadcrumb' => 'Breadcrumb',
+ 'breadcrumb' => 'Brödsmula',
// Header
- 'profile_menu' => 'Profile Menu',
+ 'profile_menu' => 'Profilmeny',
'view_profile' => 'Visa profil',
'edit_profile' => 'Redigera profil',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Information',
'recent_activity' => 'Aktivitet',
'create_now' => 'Skapa en nu',
'revisions' => 'Revisioner',
- 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_revision' => 'Revisions #:revisionCount',
'meta_created' => 'Skapad :timeLength',
'meta_created_name' => 'Skapad :timeLength av :user',
'meta_updated' => 'Uppdaterad :timeLength',
'meta_updated_name' => 'Uppdaterad :timeLength av :user',
- 'entity_select' => 'Entity Select',
+ 'entity_select' => 'Välj enhet',
'images' => 'Bilder',
'my_recent_drafts' => 'Mina nyaste utkast',
'my_recently_viewed' => 'Mina senast visade sidor',
'pages_delete_confirm' => 'Är du säker på att du vill ta bort den här sidan?',
'pages_delete_draft_confirm' => 'Är du säker på att du vill ta bort det här utkastet?',
'pages_editing_named' => 'Redigerar sida :pageName',
- 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_draft_options' => 'Inställningar för utkast',
'pages_edit_save_draft' => 'Spara utkast',
'pages_edit_draft' => 'Redigera utkast',
'pages_editing_draft' => 'Redigerar utkast',
'pages_copy_success' => 'Sidan har kopierats',
'pages_permissions' => 'Rättigheter för sida',
'pages_permissions_success' => 'Rättigheterna för sidan har uppdaterats',
- 'pages_revision' => 'Revision',
+ 'pages_revision' => 'Revidering',
'pages_revisions' => 'Sidrevisioner',
'pages_revisions_named' => 'Sidrevisioner för :pageName',
'pages_revision_named' => 'Sidrevision för :pageName',
'pages_revisions_created_by' => 'Skapad av',
'pages_revisions_date' => 'Revisionsdatum',
'pages_revisions_number' => '#',
- 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered' => 'Revisions #:id',
'pages_revisions_numbered_changes' => 'Revision #:id ändringar',
'pages_revisions_changelog' => 'Ändringslogg',
'pages_revisions_changes' => 'Ändringar',
],
'pages_draft_discarded' => 'Utkastet har tagits bort. Redigeringsverktyget har uppdaterats med aktuellt innehåll.',
'pages_specific' => 'Specifik sida',
- 'pages_is_template' => 'Page Template',
+ 'pages_is_template' => 'Sidmall',
// Editor Sidebar
'page_tags' => 'Sidtaggar',
'shelf_tags' => 'Hylltaggar',
'tag' => 'Tagg',
'tags' => 'Taggar',
- 'tag_name' => 'Tag Name',
+ 'tag_name' => 'Etikettnamn',
'tag_value' => 'Taggvärde (Frivilligt)',
'tags_explain' => "Lägg till taggar för att kategorisera ditt innehåll bättre. \n Du kan tilldela ett värde till en tagg för ännu bättre organisering.",
'tags_add' => 'Lägg till ännu en tagg',
- 'tags_remove' => 'Remove this tag',
+ 'tags_remove' => 'Ta bort denna etikett',
'attachments' => 'Bilagor',
'attachments_explain' => 'Ladda upp filer eller bifoga länkar till ditt innehåll. Dessa visas i sidokolumnen.',
'attachments_explain_instant_save' => 'Ändringar här sparas omgående.',
'attachments_file_uploaded' => 'Filen har laddats upp',
'attachments_file_updated' => 'Filen har uppdaterats',
'attachments_link_attached' => 'Länken har bifogats till sidan',
- 'templates' => 'Templates',
- 'templates_set_as_template' => 'Page is a template',
- 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
- 'templates_replace_content' => 'Replace page content',
- 'templates_append_content' => 'Append to page content',
- 'templates_prepend_content' => 'Prepend to page content',
+ 'templates' => 'Mallar',
+ 'templates_set_as_template' => 'Sidan är en mall',
+ 'templates_explain_set_as_template' => 'Du kan använda denna sida som en mall så att dess innehåll kan användas när du skapar andra sidor. Andra användare kommer att kunna använda denna mall om de har visningsrättigheter för den här sidan.',
+ 'templates_replace_content' => 'Ersätt sidinnehåll',
+ 'templates_append_content' => 'Lägg till till sidans innehåll',
+ 'templates_prepend_content' => 'Lägg till före sidans innehåll',
// Profile View
'profile_user_for_x' => 'Användare i :time',
'email_already_confirmed' => 'E-posten har redan bekräftats, prova att logga in.',
'email_confirmation_invalid' => 'Denna bekräftelsekod är inte giltig eller har redan använts. Vänligen prova att registera dig på nytt',
'email_confirmation_expired' => 'Denna bekräftelsekod har gått ut. Vi har skickat dig en ny.',
- 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'email_confirmation_awaiting' => 'E-postadressen för det konto som används måste bekräftas',
'ldap_fail_anonymous' => 'LDAP-inloggning misslyckades med anonym bindning',
'ldap_fail_authed' => 'LDAP-inloggning misslyckades med angivna dn- och lösenordsuppgifter',
'ldap_extension_not_installed' => 'LDAP PHP-tillägg inte installerat',
'ldap_cannot_connect' => 'Kan inte ansluta till ldap-servern. Anslutningen misslyckades',
- 'saml_already_logged_in' => 'Already logged in',
- 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled',
- 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
- 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
- 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'saml_already_logged_in' => 'Redan inloggad',
+ 'saml_user_not_registered' => 'Användarnamnet är inte registrerat och automatisk registrering är inaktiverad',
+ 'saml_no_email_address' => 'Kunde inte hitta en e-postadress för den här användaren i data som tillhandahålls av det externa autentiseringssystemet',
+ 'saml_invalid_response_id' => 'En begäran från det externa autentiseringssystemet känns inte igen av en process som startats av denna applikation. Att navigera bakåt efter en inloggning kan orsaka detta problem.',
+ 'saml_fail_authed' => 'Inloggning med :system misslyckades, systemet godkände inte auktoriseringen',
'social_no_action_defined' => 'Ingen åtgärd definierad',
'social_login_bad_response' => "Ett fel inträffade vid inloggning genom :socialAccount: \n:error",
'social_account_in_use' => 'Detta konto från :socialAccount används redan. Testa att logga in med :socialAccount istället.',
'social_account_register_instructions' => 'Om du inte har något konto ännu kan du registerar dig genom att välja :socialAccount.',
'social_driver_not_found' => 'Drivrutinen för den här tjänsten hittades inte',
'social_driver_not_configured' => 'Dina inställningar för :socialAccount är inte korrekta.',
- 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'invite_token_expired' => 'Denna inbjudningslänk har löpt ut. Du kan istället försöka återställa ditt kontos lösenord.',
// System
'path_not_writable' => 'Kunde inte ladda upp till sökvägen :filePath. Kontrollera att webbservern har skrivåtkomst.',
// Error pages
'404_page_not_found' => 'Sidan hittades inte',
'sorry_page_not_found' => 'Tyvärr gick det inte att hitta sidan du söker.',
+ 'sorry_page_not_found_permission_warning' => 'Om du förväntade dig att denna sida skulle existera, kanske du inte har behörighet att se den.',
'return_home' => 'Återvänd till startsidan',
'error_occurred' => 'Ett fel inträffade',
'app_down' => ':appName är nere just nu',
'back_soon' => 'Vi är snart tillbaka.',
// API errors
- 'api_no_authorization_found' => 'No authorization token found on the request',
- 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
- 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
- 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
- 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
- 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_no_authorization_found' => 'Ingen auktoriseringstoken hittades på denna begäran',
+ 'api_bad_authorization_format' => 'En auktoriseringstoken hittades på denna begäran men formatet verkade felaktigt',
+ 'api_user_token_not_found' => 'Ingen matchande API-token hittades för den angivna auktoriseringstoken',
+ 'api_incorrect_token_secret' => 'Hemligheten för den angivna API-token är felaktig',
+ 'api_user_no_api_permission' => 'Ägaren av den använda API-token har inte behörighet att göra API-anrop',
+ 'api_user_token_expired' => 'Den använda auktoriseringstoken har löpt ut',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Ett fel uppstod när ett test mail skulle skickas:',
];
'password' => 'Lösenord måste vara minst sex tecken långa och anges likadant två gånger.',
'user' => "Det finns ingen användare med den e-postadressen.",
- 'token' => 'Återställningskoden är ogiltig.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'Vi har mailat dig en länk för att återställa ditt lösenord!',
'reset' => 'Ditt lösenord har blivit återställt!',
'app_editor_desc' => 'Välj vilket redigeringsverktyg som ska användas av alla användare för att redigera sidor.',
'app_custom_html' => 'Egen HTML i <head>',
'app_custom_html_desc' => 'Eventuellt innehåll i det här fältet placeras längst ner i <head>-sektionen på varje sida. Detta är användbart för att skriva över stilmaller eller lägga in spårningskoder.',
- 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_custom_html_disabled_notice' => 'Anpassat innehåll i HTML-huvud är inaktiverat på denna inställningssida för att säkerställa att eventuella ändringar som påverkar funktionaliteten kan återställas.',
'app_logo' => 'Applikationslogotyp',
'app_logo_desc' => 'Bilden bör vara minst 43px hög. <br>Större bilder skalas ner.',
'app_primary_color' => 'Primärfärg',
'app_disable_comments_desc' => 'Inaktivera kommentarer på alla sidor i applikationen. Befintliga kommentarer visas inte.',
// Color settings
- 'content_colors' => 'Content Colors',
- 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
- 'bookshelf_color' => 'Shelf Color',
- 'book_color' => 'Book Color',
- 'chapter_color' => 'Chapter Color',
- 'page_color' => 'Page Color',
- 'page_draft_color' => 'Page Draft Color',
+ 'content_colors' => 'Innehållsfärger',
+ 'content_colors_desc' => 'Ställer in färger för alla element i sidornas hierarki. Att välja färger med samma ljusstyrka som standardfärgerna rekommenderas för läsbarhet.',
+ 'bookshelf_color' => 'Hyllfärg',
+ 'book_color' => 'Bokens färg',
+ 'chapter_color' => 'Kapitels färg',
+ 'page_color' => 'Sidfärg',
+ 'page_draft_color' => 'Färg på sidutkast',
// Registration Settings
'reg_settings' => 'Registreringsinställningar',
'reg_enable_toggle' => 'Tillåt registrering',
'reg_enable_desc' => 'När registrering tillåts kan användaren logga in som en användare. Vid registreringen ges de en förvald användarroll.',
'reg_default_role' => 'Standardroll efter registrering',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_enable_external_warning' => 'Alternativet ovan ignoreras medan extern LDAP eller SAML-autentisering är aktiv. Användarkonton för icke-existerande medlemmar kommer att skapas automatiskt om autentisering mot det externa system som används lyckas.',
'reg_email_confirmation' => 'E-postbekräftelse',
'reg_email_confirmation_toggle' => 'Kräv e-postbekräftelse',
'reg_confirm_email_desc' => 'Om registrering begränas till vissa domäner kommer e-postbekräftelse alltid att krävas och den här inställningen kommer att ignoreras.',
'maint_image_cleanup_warning' => 'Hittade :count bilder som potentiellt inte används. Vill du verkligen ta bort dessa bilder?',
'maint_image_cleanup_success' => 'Hittade och raderade :count bilder som potentiellt inte används!',
'maint_image_cleanup_nothing_found' => 'Hittade inga oanvända bilder, så inget har raderats!',
- 'maint_send_test_email' => 'Send a Test Email',
- 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.',
- 'maint_send_test_email_run' => 'Send test email',
- 'maint_send_test_email_success' => 'Email sent to :address',
- 'maint_send_test_email_mail_subject' => 'Test Email',
- 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!',
- 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.',
+ 'maint_send_test_email' => 'Skicka ett testmail',
+ 'maint_send_test_email_desc' => 'Detta skickar ett testmeddelande till den e-postadress som anges i din profil.',
+ 'maint_send_test_email_run' => 'Skicka testmail',
+ 'maint_send_test_email_success' => 'E-post skickat till :address',
+ 'maint_send_test_email_mail_subject' => 'Testmejl',
+ 'maint_send_test_email_mail_greeting' => 'E-postleverans verkar fungera!',
+ 'maint_send_test_email_mail_text' => 'Grattis! Eftersom du fick detta e-postmeddelande verkar dina e-postinställningar vara korrekt konfigurerade.',
// Role Settings
'roles' => 'Roller',
'role_manage_roles' => 'Hantera roller & rättigheter',
'role_manage_entity_permissions' => 'Hantera rättigheter för alla böcker, kapitel och sidor',
'role_manage_own_entity_permissions' => 'Hantera rättigheter för egna böcker, kapitel och sidor',
- 'role_manage_page_templates' => 'Manage page templates',
- 'role_access_api' => 'Access system API',
+ 'role_manage_page_templates' => 'Hantera mallar',
+ 'role_access_api' => 'Åtkomst till systemets API',
'role_manage_settings' => 'Hantera appinställningar',
'role_asset' => 'Tillgång till innehåll',
'role_asset_desc' => 'Det här är standardinställningarna för allt innehåll i systemet. Eventuella anpassade rättigheter på böcker, kapitel och sidor skriver över dessa inställningar.',
'users_role_desc' => 'Välj vilka roller den här användaren ska tilldelas. Om en användare har tilldelats flera roller kommer behörigheterna från dessa roller att staplas och de kommer att få alla rättigheter i de tilldelade rollerna.',
'users_password' => 'Användarlösenord',
'users_password_desc' => 'Ange ett lösenord som ska användas för att logga in på sidan. Lösenordet måste vara minst 5 tecken långt.',
- 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
- 'users_send_invite_option' => 'Send user invite email',
+ 'users_send_invite_text' => 'Du kan välja att skicka denna användare ett e-postmeddelande som tillåter dem att ställa in sitt eget lösenord, eller så kan du ställa in deras lösenord själv.',
+ 'users_send_invite_option' => 'Skicka e-post med inbjudan',
'users_external_auth_id' => 'Externt ID för autentisering',
- 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
+ 'users_external_auth_id_desc' => 'Detta är det ID som används för att matcha denna användare när du kommunicerar med ditt externa autentiseringssystem.',
'users_password_warning' => 'Fyll i nedanstående fält endast om du vill byta lösenord:',
'users_system_public' => 'Den här användaren representerar eventuella gäster som använder systemet. Den kan inte användas för att logga in utan tilldeles automatiskt.',
'users_delete' => 'Ta bort användare',
'users_social_disconnect' => 'Koppla från konto',
'users_social_connected' => ':socialAccount har kopplats till ditt konto.',
'users_social_disconnected' => ':socialAccount har kopplats bort från ditt konto.',
- 'users_api_tokens' => 'API Tokens',
- 'users_api_tokens_none' => 'No API tokens have been created for this user',
- 'users_api_tokens_create' => 'Create Token',
- 'users_api_tokens_expires' => 'Expires',
- 'users_api_tokens_docs' => 'API Documentation',
+ 'users_api_tokens' => 'API-nyckel',
+ 'users_api_tokens_none' => 'Inga API-tokens har skapats för den här användaren',
+ 'users_api_tokens_create' => 'Skapa token',
+ 'users_api_tokens_expires' => 'Förfaller',
+ 'users_api_tokens_docs' => 'API-dokumentation',
// API Tokens
- 'user_api_token_create' => 'Create API Token',
- 'user_api_token_name' => 'Name',
- 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
- 'user_api_token_expiry' => 'Expiry Date',
- 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
- 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
- 'user_api_token_create_success' => 'API token successfully created',
- 'user_api_token_update_success' => 'API token successfully updated',
- 'user_api_token' => 'API Token',
+ 'user_api_token_create' => 'Skapa API-nyckel',
+ 'user_api_token_name' => 'Namn',
+ 'user_api_token_name_desc' => 'Ge din token ett läsbart namn som en framtida påminnelse om dess avsedda syfte.',
+ 'user_api_token_expiry' => 'Förfallodatum',
+ 'user_api_token_expiry_desc' => 'Ange ett datum då denna token går ut. Efter detta datum kommer förfrågningar som görs med denna token inte längre att fungera. Lämnar du detta fält tomt kommer utgångsdatum att sättas 100 år in i framtiden.',
+ 'user_api_token_create_secret_message' => 'Omedelbart efter att du skapat denna token kommer ett "Token ID" & "Token Secret" att genereras och visas. Token Secret kommer bara att visas en enda gång så se till att kopiera värdet till en säker plats innan du fortsätter.',
+ 'user_api_token_create_success' => 'API-token har skapats',
+ 'user_api_token_update_success' => 'API-token har uppdaterats',
+ 'user_api_token' => 'API-nyckel',
'user_api_token_id' => 'Token ID',
- 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_id_desc' => 'Detta är en icke-redigerbar systemgenererad identifierare för denna token som måste tillhandahållas i API-förfrågningar.',
'user_api_token_secret' => 'Token Secret',
- 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
- 'user_api_token_created' => 'Token Created :timeAgo',
- 'user_api_token_updated' => 'Token Updated :timeAgo',
- 'user_api_token_delete' => 'Delete Token',
- 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
- 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
- 'user_api_token_delete_success' => 'API token successfully deleted',
+ 'user_api_token_secret_desc' => 'Detta är en systemgenererad hemlighet för denna token som måste tillhandahållas i API-förfrågningar. Denna kommer bara att visas en gång så kopiera detta värde till en säker plats.',
+ 'user_api_token_created' => 'Token skapad :timeAgo',
+ 'user_api_token_updated' => 'Token Uppdaterad :timeAgo',
+ 'user_api_token_delete' => 'Ta bort token',
+ 'user_api_token_delete_warning' => 'Detta kommer att helt ta bort denna API-token med namnet \':tokenName\' från systemet.',
+ 'user_api_token_delete_confirm' => 'Är du säker på att du vill ta bort denna API-token?',
+ 'user_api_token_delete_success' => 'API-token har tagits bort',
//! If editing translations files directly please ignore this in all
//! languages apart from en. Content will be auto-copied from en.
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
- 'da' => 'Dansk',
+ 'cs' => 'Česky',
+ 'da' => 'Danska',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenska',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'digits' => ':attribute måste vara :digits siffror.',
'digits_between' => ':attribute måste vara mellan :min och :max siffror.',
'email' => ':attribute måste vara en giltig e-postadress.',
- 'ends_with' => 'The :attribute must end with one of the following: :values',
+ 'ends_with' => ':attribute måste sluta med något av följande: :values',
'filled' => ':attribute är obligatoriskt.',
'gt' => [
- 'numeric' => 'The :attribute must be greater than :value.',
- 'file' => 'The :attribute must be greater than :value kilobytes.',
- 'string' => 'The :attribute must be greater than :value characters.',
- 'array' => 'The :attribute must have more than :value items.',
+ 'numeric' => ':attribute måste vara större än :value.',
+ 'file' => ':attribute måste vara större än :value kilobytes.',
+ 'string' => ':attribute måste vara större än :value tecken.',
+ 'array' => ':attribute måste ha mer än :value objekt.',
],
'gte' => [
- 'numeric' => 'The :attribute must be greater than or equal :value.',
- 'file' => 'The :attribute must be greater than or equal :value kilobytes.',
- 'string' => 'The :attribute must be greater than or equal :value characters.',
- 'array' => 'The :attribute must have :value items or more.',
+ 'numeric' => ':attribute måste vara större än eller likamed :value.',
+ 'file' => ':attribute måste vara större än eller lika med :value kilobytes.',
+ 'string' => ':attribute måste vara större än eller lika med :value tecken.',
+ 'array' => ':attribute måste ha :value objekt eller mer.',
],
'exists' => 'Valt värde för :attribute är ogiltigt.',
'image' => ':attribute måste vara en bild.',
'in' => 'Vald :attribute är ogiltigt.',
'integer' => ':attribute måste vara en integer.',
'ip' => ':attribute måste vara en giltig IP-adress.',
- 'ipv4' => 'The :attribute must be a valid IPv4 address.',
- 'ipv6' => 'The :attribute must be a valid IPv6 address.',
- 'json' => 'The :attribute must be a valid JSON string.',
+ 'ipv4' => ':attribute måste vara en giltig IPv4-adress.',
+ 'ipv6' => ':attribute måste vara en giltig IPv6-adress.',
+ 'json' => ':attribute måste vara en giltig JSON-sträng.',
'lt' => [
- 'numeric' => 'The :attribute must be less than :value.',
- 'file' => 'The :attribute must be less than :value kilobytes.',
- 'string' => 'The :attribute must be less than :value characters.',
- 'array' => 'The :attribute must have less than :value items.',
+ 'numeric' => ':attribute måste vara mindre än :value.',
+ 'file' => ':attribute måste vara mindre än :value kilobytes.',
+ 'string' => ':attribute måste vara mindre än :value tecken.',
+ 'array' => ':attribute måste ha mindre än :value objekt.',
],
'lte' => [
- 'numeric' => 'The :attribute must be less than or equal :value.',
- 'file' => 'The :attribute must be less than or equal :value kilobytes.',
- 'string' => 'The :attribute must be less than or equal :value characters.',
- 'array' => 'The :attribute must not have more than :value items.',
+ 'numeric' => ':attribute måste vara mindre än eller lika :value.',
+ 'file' => ':attribute måste vara mindre än eller lika med :value kilobytes.',
+ 'string' => ':attribute måste vara mindre än eller lika med :value tecken.',
+ 'array' => ':attribute får inte innehålla mer än :max objekt.',
],
'max' => [
'numeric' => ':attribute får inte vara större än :max.',
],
'no_double_extension' => ':attribute får bara ha ett filtillägg.',
'not_in' => 'Vald :attribute är inte giltig',
- 'not_regex' => 'The :attribute format is invalid.',
+ 'not_regex' => 'Formatet på :attribute är ogiltigt.',
'numeric' => ':attribute måste vara ett nummer.',
'regex' => ':attribute har ett ogiltigt format.',
'required' => ':attribute är obligatoriskt.',
--- /dev/null
+<?php
+/**
+ * Activity text strings.
+ * Is used for all the text within activity logs & notifications.
+ */
+return [
+
+ // Pages
+ 'page_create' => 'created page',
+ 'page_create_notification' => 'Page Successfully Created',
+ 'page_update' => 'updated page',
+ 'page_update_notification' => 'Page Successfully Updated',
+ 'page_delete' => 'deleted page',
+ 'page_delete_notification' => 'Page Successfully Deleted',
+ 'page_restore' => 'restored page',
+ 'page_restore_notification' => 'Page Successfully Restored',
+ 'page_move' => 'moved page',
+
+ // Chapters
+ 'chapter_create' => 'created chapter',
+ 'chapter_create_notification' => 'Chapter Successfully Created',
+ 'chapter_update' => 'updated chapter',
+ 'chapter_update_notification' => 'Chapter Successfully Updated',
+ 'chapter_delete' => 'deleted chapter',
+ 'chapter_delete_notification' => 'Chapter Successfully Deleted',
+ 'chapter_move' => 'moved chapter',
+
+ // Books
+ 'book_create' => 'created book',
+ 'book_create_notification' => 'Book Successfully Created',
+ 'book_update' => 'updated book',
+ 'book_update_notification' => 'Book Successfully Updated',
+ 'book_delete' => 'deleted book',
+ 'book_delete_notification' => 'Book Successfully Deleted',
+ 'book_sort' => 'sorted book',
+ 'book_sort_notification' => 'Book Successfully Re-sorted',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created Bookshelf',
+ 'bookshelf_create_notification' => 'Bookshelf Successfully Created',
+ 'bookshelf_update' => 'updated bookshelf',
+ 'bookshelf_update_notification' => 'Bookshelf Successfully Updated',
+ 'bookshelf_delete' => 'deleted bookshelf',
+ 'bookshelf_delete_notification' => 'Bookshelf Successfully Deleted',
+
+ // Other
+ 'commented_on' => 'commented on',
+];
--- /dev/null
+<?php
+/**
+ * Authentication Language Lines
+ * The following language lines are used during authentication for various
+ * messages that we need to display to the user.
+ */
+return [
+
+ 'failed' => 'These credentials do not match our records.',
+ 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+
+ // Login & Register
+ 'sign_up' => 'Sign up',
+ 'log_in' => 'Log in',
+ 'log_in_with' => 'Login with :socialDriver',
+ 'sign_up_with' => 'Sign up with :socialDriver',
+ 'logout' => 'Logout',
+
+ 'name' => 'Name',
+ 'username' => 'Username',
+ 'email' => 'Email',
+ 'password' => 'Password',
+ 'password_confirm' => 'Confirm Password',
+ 'password_hint' => 'Must be over 7 characters',
+ 'forgot_password' => 'Forgot Password?',
+ 'remember_me' => 'Remember Me',
+ 'ldap_email_hint' => 'Please enter an email to use for this account.',
+ 'create_account' => 'Create Account',
+ 'already_have_account' => 'Already have an account?',
+ 'dont_have_account' => 'Don\'t have an account?',
+ 'social_login' => 'Social Login',
+ 'social_registration' => 'Social Registration',
+ 'social_registration_text' => 'Register and sign in using another service.',
+
+ 'register_thanks' => 'Thanks for registering!',
+ 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.',
+ 'registrations_disabled' => 'Registrations are currently disabled',
+ 'registration_email_domain_invalid' => 'That email domain does not have access to this application',
+ 'register_success' => 'Thanks for signing up! You are now registered and signed in.',
+
+
+ // Password Reset
+ 'reset_password' => 'Reset Password',
+ 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
+ 'reset_password_send_button' => 'Send Reset Link',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Your password has been successfully reset.',
+ 'email_reset_subject' => 'Reset your :appName password',
+ 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
+ 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.',
+
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirm your email on :appName',
+ 'email_confirm_greeting' => 'Thanks for joining :appName!',
+ 'email_confirm_text' => 'Please confirm your email address by clicking the button below:',
+ 'email_confirm_action' => 'Confirm Email',
+ 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.',
+ 'email_confirm_success' => 'Your email has been confirmed!',
+ 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.',
+
+ 'email_not_confirmed' => 'Email Address Not Confirmed',
+ 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
+ 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
+ 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
+ 'email_not_confirmed_resend_button' => 'Resend Confirmation Email',
+
+ // User Invite
+ 'user_invite_email_subject' => 'You have been invited to join :appName!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Set Account Password',
+ 'user_invite_page_welcome' => 'Welcome to :appName!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Confirm Password',
+ 'user_invite_success' => 'Password set, you now have access to :appName!'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Common elements found throughout many areas of BookStack.
+ */
+return [
+
+ // Buttons
+ 'cancel' => 'Cancel',
+ 'confirm' => 'Confirm',
+ 'back' => 'Back',
+ 'save' => 'Save',
+ 'continue' => 'Continue',
+ 'select' => 'Select',
+ 'toggle_all' => 'Toggle All',
+ 'more' => 'More',
+
+ // Form Labels
+ 'name' => 'Name',
+ 'description' => 'Description',
+ 'role' => 'Role',
+ 'cover_image' => 'Cover image',
+ 'cover_image_description' => 'This image should be approx 440x250px.',
+
+ // Actions
+ 'actions' => 'Actions',
+ 'view' => 'View',
+ 'view_all' => 'View All',
+ 'create' => 'Create',
+ 'update' => 'Update',
+ 'edit' => 'Edit',
+ 'sort' => 'Sort',
+ 'move' => 'Move',
+ 'copy' => 'Copy',
+ 'reply' => 'Reply',
+ 'delete' => 'Delete',
+ 'search' => 'Search',
+ 'search_clear' => 'Clear Search',
+ 'reset' => 'Reset',
+ 'remove' => 'Remove',
+ 'add' => 'Add',
+ 'fullscreen' => 'Fullscreen',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'Name',
+ 'sort_created_at' => 'Created Date',
+ 'sort_updated_at' => 'Updated Date',
+
+ // Misc
+ 'deleted_user' => 'Deleted User',
+ 'no_activity' => 'No activity to show',
+ 'no_items' => 'No items available',
+ 'back_to_top' => 'Back to top',
+ 'toggle_details' => 'Toggle Details',
+ 'toggle_thumbnails' => 'Toggle Thumbnails',
+ 'details' => 'Details',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'List View',
+ 'default' => 'Default',
+ 'breadcrumb' => 'Breadcrumb',
+
+ // Header
+ 'profile_menu' => 'Profile Menu',
+ 'view_profile' => 'View Profile',
+ 'edit_profile' => 'Edit Profile',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_content' => 'Content',
+
+ // Email Content
+ 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
+ 'email_rights' => 'All rights reserved',
+];
--- /dev/null
+<?php
+/**
+ * Text used in custom JavaScript driven components.
+ */
+return [
+
+ // Image Manager
+ 'image_select' => 'Image Select',
+ 'image_all' => 'All',
+ 'image_all_title' => 'View all images',
+ 'image_book_title' => 'View images uploaded to this book',
+ 'image_page_title' => 'View images uploaded to this page',
+ 'image_search_hint' => 'Search by image name',
+ 'image_uploaded' => 'Uploaded :uploadedDate',
+ 'image_load_more' => 'Load More',
+ 'image_image_name' => 'Image Name',
+ 'image_delete_used' => 'This image is used in the pages below.',
+ 'image_delete_confirm' => 'Click delete again to confirm you want to delete this image.',
+ 'image_select_image' => 'Select Image',
+ 'image_dropzone' => 'Drop images or click here to upload',
+ 'images_deleted' => 'Images Deleted',
+ 'image_preview' => 'Image Preview',
+ 'image_upload_success' => 'Image uploaded successfully',
+ 'image_update_success' => 'Image details successfully updated',
+ 'image_delete_success' => 'Image successfully deleted',
+ 'image_upload_remove' => 'Remove',
+
+ // Code Editor
+ 'code_editor' => 'Edit Code',
+ 'code_language' => 'Code Language',
+ 'code_content' => 'Code Content',
+ 'code_save' => 'Save Code',
+];
--- /dev/null
+<?php
+/**
+ * Text used for 'Entities' (Document Structure Elements) such as
+ * Books, Shelves, Chapters & Pages
+ */
+return [
+
+ // Shared
+ 'recently_created' => 'Recently Created',
+ 'recently_created_pages' => 'Recently Created Pages',
+ 'recently_updated_pages' => 'Recently Updated Pages',
+ 'recently_created_chapters' => 'Recently Created Chapters',
+ 'recently_created_books' => 'Recently Created Books',
+ 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_update' => 'Recently Updated',
+ 'recently_viewed' => 'Recently Viewed',
+ 'recent_activity' => 'Recent Activity',
+ 'create_now' => 'Create one now',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Created :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Updated :timeLength',
+ 'meta_updated_name' => 'Updated :timeLength by :user',
+ 'entity_select' => 'Entity Select',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'My Recent Drafts',
+ 'my_recently_viewed' => 'My Recently Viewed',
+ 'no_pages_viewed' => 'You have not viewed any pages',
+ 'no_pages_recently_created' => 'No pages have been recently created',
+ 'no_pages_recently_updated' => 'No pages have been recently updated',
+ 'export' => 'Export',
+ 'export_html' => 'Contained Web File',
+ 'export_pdf' => 'PDF File',
+ 'export_text' => 'Plain Text File',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissions',
+ 'permissions_intro' => 'Once enabled, These permissions will take priority over any set role permissions.',
+ 'permissions_enable' => 'Enable Custom Permissions',
+ 'permissions_save' => 'Save Permissions',
+
+ // Search
+ 'search_results' => 'Search Results',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Clear Search',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_filters' => 'Search Filters',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Shelves',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_long' => 'Bookshelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books here to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Bookshelf :name',
+ 'shelves_edit' => 'Edit Bookshelf',
+ 'shelves_delete' => 'Delete Bookshelf',
+ 'shelves_delete_named' => 'Delete Bookshelf :name',
+ 'shelves_delete_explain' => "This will delete the bookshelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this bookshelf?',
+ 'shelves_permissions' => 'Bookshelf Permissions',
+ 'shelves_permissions_updated' => 'Bookshelf Permissions Updated',
+ 'shelves_permissions_active' => 'Bookshelf Permissions Active',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this bookshelf to all books contained within. Before activating, ensure any changes to the permissions of this bookshelf have been saved.',
+ 'shelves_copy_permission_success' => 'Bookshelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages will be removed and added directly to the parent book.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapter_move_success' => 'Chapter moved to :bookName',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_move_success' => 'Page moved to ":parentName"',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Edit Content',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded, The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ 'tags_explain' => "Add some tags to better categorise your content. \n You can assign a value to a tag for more in-depth organisation.",
+ 'tags_add' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_items' => 'Attached Items',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete_confirm' => 'Click delete again to confirm you want to delete this attachment.',
+ 'attachments_dropzone' => 'Drop files or click here to attach a file',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_count' => '{0} No Comments|{1} 1 Comment|[2,*] :count Comments',
+ 'comment_save' => 'Save Comment',
+ 'comment_saving' => 'Saving comment...',
+ 'comment_deleting' => 'Deleting comment...',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_delete_success' => 'Revision deleted',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Text shown in error messaging.
+ */
+return [
+
+ // Permissions
+ 'permission' => 'You do not have permission to access the requested page.',
+ 'permissionJson' => 'You do not have permission to perform the requested action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'file_upload_timeout' => 'The file upload has timed out.',
+
+ // Attachments
+ 'attachment_page_mismatch' => 'Page mismatch during attachment update',
+ 'attachment_not_found' => 'Attachment not found',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Bookshelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ 'return_home' => 'Return to home',
+ 'error_occurred' => 'An Error Occurred',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+];
--- /dev/null
+<?php
+/**
+ * Pagination Language Lines
+ * The following language lines are used by the paginator library to build
+ * the simple pagination links.
+ */
+return [
+
+ 'previous' => '« Previous',
+ 'next' => 'Next »',
+
+];
--- /dev/null
+<?php
+/**
+ * Password Reminder Language Lines
+ * The following language lines are the default lines which match reasons
+ * that are given by the password broker for a password update attempt has failed.
+ */
+return [
+
+ 'password' => 'Passwords must be at least eight characters and match the confirmation.',
+ 'user' => "We can't find a user with that e-mail address.",
+ 'token' => 'The password reset token is invalid for this email address.',
+ 'sent' => 'We have e-mailed your password reset link!',
+ 'reset' => 'Your password has been reset!',
+
+];
--- /dev/null
+<?php
+/**
+ * Settings text strings
+ * Contains all text strings used in the general settings sections of BookStack
+ * including users and roles.
+ */
+return [
+
+ // Common Messages
+ 'settings' => 'Settings',
+ 'settings_save' => 'Save Settings',
+ 'settings_save_success' => 'Settings saved',
+
+ // App Settings
+ 'app_customization' => 'Customization',
+ 'app_features_security' => 'Features & Security',
+ 'app_name' => 'Application Name',
+ 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
+ 'app_name_header' => 'Show name in header',
+ 'app_public_access' => 'Public Access',
+ 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
+ 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_toggle' => 'Allow public access',
+ 'app_public_viewing' => 'Allow public viewing?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_editor' => 'Page Editor',
+ 'app_editor_desc' => 'Select which editor will be used by all users to edit pages.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the <head> section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Application Logo',
+ 'app_logo_desc' => 'This image should be 43px in height. <br>Large images will be scaled down.',
+ 'app_primary_color' => 'Application Primary Color',
+ 'app_primary_color_desc' => 'Sets the primary color for the application including the banner, buttons, and links.',
+ 'app_homepage' => 'Application Homepage',
+ 'app_homepage_desc' => 'Select a view to show on the homepage instead of the default view. Page permissions are ignored for selected pages.',
+ 'app_homepage_select' => 'Select a page',
+ 'app_disable_comments' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. <br> Existing comments are not shown.',
+
+ // Color settings
+ 'content_colors' => 'Content Colors',
+ 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. <br> Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ 'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.",
+ 'maint_image_cleanup_ignore_revisions' => 'Ignore images in revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ 'maint_image_cleanup_nothing_found' => 'No unused images found, Nothing deleted!',
+ 'maint_send_test_email' => 'Send a Test Email',
+ 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.',
+ 'maint_send_test_email_run' => 'Send test email',
+ 'maint_send_test_email_success' => 'Email sent to :address',
+ 'maint_send_test_email_mail_subject' => 'Test Email',
+ 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!',
+ 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'role_create' => 'Create New Role',
+ 'role_create_success' => 'Role successfully created',
+ 'role_delete' => 'Delete Role',
+ 'role_delete_confirm' => 'This will delete the role with the name \':roleName\'.',
+ 'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.',
+ 'role_delete_no_migration' => "Don't migrate users",
+ 'role_delete_sure' => 'Are you sure you want to delete this role?',
+ 'role_delete_success' => 'Role successfully deleted',
+ 'role_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_asset' => 'Asset Permissions',
+ 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_update_success' => 'Role successfully updated',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_details' => 'User Details',
+ 'users_details_desc' => 'Set a display name and an email address for this user. The email address will be used for logging into the application.',
+ 'users_details_desc_no_email' => 'Set a display name for this user so others can recognise them.',
+ 'users_role' => 'User Roles',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 6 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
+ 'users_password_warning' => 'Only fill the below if you would like to change your password.',
+ 'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.',
+ 'users_delete' => 'Delete User',
+ 'users_delete_named' => 'Delete user :userName',
+ 'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.',
+ 'users_delete_confirm' => 'Are you sure you want to delete this user?',
+ 'users_delete_success' => 'Users successfully removed',
+ 'users_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_edit_success' => 'User successfully updated',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token_create_success' => 'API token successfully created',
+ 'user_api_token_update_success' => 'API token successfully updated',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token Created :timeAgo',
+ 'user_api_token_updated' => 'Token Updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+ 'user_api_token_delete_success' => 'API token successfully deleted',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'English',
+ 'ar' => 'العربية',
+ 'cs' => 'Česky',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ]
+ //!////////////////////////////////
+];
--- /dev/null
+<?php
+/**
+ * Validation Lines
+ * The following language lines contain the default error messages used by
+ * the validator class. Some of these rules have multiple versions such
+ * as the size rules. Feel free to tweak each of these messages here.
+ */
+return [
+
+ // Standard laravel validation lines
+ 'accepted' => '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, dashes and underscores.',
+ '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.',
+ 'ends_with' => 'The :attribute must end with one of the following: :values',
+ 'filled' => 'The :attribute field is required.',
+ 'gt' => [
+ 'numeric' => 'The :attribute must be greater than :value.',
+ 'file' => 'The :attribute must be greater than :value kilobytes.',
+ 'string' => 'The :attribute must be greater than :value characters.',
+ 'array' => 'The :attribute must have more than :value items.',
+ ],
+ 'gte' => [
+ 'numeric' => 'The :attribute must be greater than or equal :value.',
+ 'file' => 'The :attribute must be greater than or equal :value kilobytes.',
+ 'string' => 'The :attribute must be greater than or equal :value characters.',
+ 'array' => 'The :attribute must have :value items or more.',
+ ],
+ 'exists' => 'The selected :attribute is invalid.',
+ 'image' => 'The :attribute must be an image.',
+ 'image_extension' => 'The :attribute must have a valid & supported image extension.',
+ 'in' => 'The selected :attribute is invalid.',
+ 'integer' => 'The :attribute must be an integer.',
+ 'ip' => 'The :attribute must be a valid IP address.',
+ 'ipv4' => 'The :attribute must be a valid IPv4 address.',
+ 'ipv6' => 'The :attribute must be a valid IPv6 address.',
+ 'json' => 'The :attribute must be a valid JSON string.',
+ 'lt' => [
+ 'numeric' => 'The :attribute must be less than :value.',
+ 'file' => 'The :attribute must be less than :value kilobytes.',
+ 'string' => 'The :attribute must be less than :value characters.',
+ 'array' => 'The :attribute must have less than :value items.',
+ ],
+ 'lte' => [
+ 'numeric' => 'The :attribute must be less than or equal :value.',
+ 'file' => 'The :attribute must be less than or equal :value kilobytes.',
+ 'string' => 'The :attribute must be less than or equal :value characters.',
+ 'array' => 'The :attribute must not have more than :value items.',
+ ],
+ '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.',
+ ],
+ 'no_double_extension' => 'The :attribute must only have a single file extension.',
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ '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.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
return [
// Pages
- 'page_create' => 'saya oluşturuldu',
+ 'page_create' => 'sayfa oluşturdu',
'page_create_notification' => 'Sayfa Başarıyla Oluşturuldu',
- 'page_update' => 'sayfa güncellendi',
+ 'page_update' => 'sayfayı güncelledi',
'page_update_notification' => 'Sayfa Başarıyla Güncellendi',
- 'page_delete' => 'sayfa silindi',
+ 'page_delete' => 'sayfayı sildi',
'page_delete_notification' => 'Sayfa Başarıyla Silindi',
- 'page_restore' => 'sayfa kurtarıldı',
- 'page_restore_notification' => 'Sayfa Başarıyla Kurtarıldı',
- 'page_move' => 'sayfa taşındı',
+ 'page_restore' => 'sayfayı eski haline getirdi',
+ 'page_restore_notification' => 'Sayfa Başarıyla Eski Haline Getirildi',
+ 'page_move' => 'sayfayı taşıdı',
// Chapters
- 'chapter_create' => 'bölüm oluşturuldu',
+ 'chapter_create' => 'bölüm oluşturdu',
'chapter_create_notification' => 'Bölüm Başarıyla Oluşturuldu',
- 'chapter_update' => 'bölüm güncellendi',
+ 'chapter_update' => 'bölümü güncelledi',
'chapter_update_notification' => 'Bölüm Başarıyla Güncellendi',
- 'chapter_delete' => 'bölüm silindi',
+ 'chapter_delete' => 'bölümü sildi',
'chapter_delete_notification' => 'Bölüm Başarıyla Silindi',
- 'chapter_move' => 'bölüm taşındı',
+ 'chapter_move' => 'bölümü taşıdı',
// Books
- 'book_create' => 'kitap oluşturuldu',
+ 'book_create' => 'kitap oluşturdu',
'book_create_notification' => 'Kitap Başarıyla Oluşturuldu',
- 'book_update' => 'kitap güncellendi',
+ 'book_update' => 'kitabı güncelledi',
'book_update_notification' => 'Kitap Başarıyla Güncellendi',
- 'book_delete' => 'kitap silindi',
+ 'book_delete' => 'kitabı sildi',
'book_delete_notification' => 'Kitap Başarıyla Silindi',
- 'book_sort' => 'kitap düzenlendi',
+ 'book_sort' => 'kitabı sıraladı',
'book_sort_notification' => 'Kitap Başarıyla Yeniden Sıralandı',
// Bookshelves
- 'bookshelf_create' => 'kitaplık oluşturuldu',
+ 'bookshelf_create' => 'kitaplık oluşturdu',
'bookshelf_create_notification' => 'Kitaplık Başarıyla Oluşturuldu',
- 'bookshelf_update' => 'kitaplık güncellendi',
+ 'bookshelf_update' => 'kitaplığı güncelledi',
'bookshelf_update_notification' => 'Kitaplık Başarıyla Güncellendi',
- 'bookshelf_delete' => 'kitaplık silindi',
+ 'bookshelf_delete' => 'kitaplığı sildi',
'bookshelf_delete_notification' => 'Kitaplık Başarıyla Silindi',
// Other
*/
return [
- 'failed' => 'Girilen bilgiler bizdeki kayıtlarla uyuşmuyor.',
+ 'failed' => 'Girdiğiniz bilgiler kayıtlarımızla uyuşmuyor.',
'throttle' => 'Çok fazla giriş yapmaya çalıştınız. Lütfen :seconds saniye içinde tekrar deneyin.',
// Login & Register
- 'sign_up' => 'Kayıt Ol',
+ 'sign_up' => 'Kaydol',
'log_in' => 'Giriş Yap',
'log_in_with' => ':socialDriver ile giriş yap',
- 'sign_up_with' => ':socialDriver ile kayıt ol',
+ 'sign_up_with' => ':socialDriver ile kaydol',
'logout' => 'Çıkış Yap',
'name' => 'İsim',
'username' => 'Kullanıcı Adı',
- 'email' => 'E-Posta',
+ 'email' => 'E-posta',
'password' => 'Şifre',
- 'password_confirm' => 'Şifreyi onayla',
- 'password_hint' => 'En az 5 karakter olmalı',
+ 'password_confirm' => 'Şifreyi Onaylayın',
+ 'password_hint' => 'En az 8 karakter olmalı',
'forgot_password' => 'Şifrenizi mi unuttunuz?',
'remember_me' => 'Beni Hatırla',
- 'ldap_email_hint' => 'Hesabı kullanmak istediğiniz e-mail adresinizi giriniz.',
+ 'ldap_email_hint' => 'Bu hesap için kullanmak istediğiniz e-posta adresini giriniz.',
'create_account' => 'Hesap Oluştur',
'already_have_account' => 'Zaten bir hesabınız var mı?',
'dont_have_account' => 'Hesabınız yok mu?',
- 'social_login' => 'Diğer Servisler ile Giriş Yap',
- 'social_registration' => 'Diğer Servisler ile Kayıt Ol',
- 'social_registration_text' => 'Diğer servisler ile kayıt ol ve giriş yap.',
+ 'social_login' => 'Diğer Servisler ile Giriş Yapın',
+ 'social_registration' => 'Diğer Servisler ile Kaydolun',
+ 'social_registration_text' => 'Başka bir servis aracılığıyla kaydolun ve giriş yapın.',
- 'register_thanks' => 'Kayıt olduğunuz için teşekkürler!',
- 'register_confirm' => 'Lütfen e-posta adresinizi kontrol edin ve gelen doğrulama bağlantısına tıklayınız. :appName.',
- 'registrations_disabled' => 'Kayıt olma özelliği geçici olarak kısıtlanmıştır',
- 'registration_email_domain_invalid' => 'Bu e-mail sağlayıcısının bu uygulamaya erişim izni yoktur.',
- 'register_success' => 'Artık kayıtlı bir kullanıcı olarak giriş yaptınız.',
+ 'register_thanks' => 'Kaydolduğunuz için teşekkürler!',
+ 'register_confirm' => ':appName erişimi için lütfen e-posta adresinizi kontrol edin ve size gönderilen doğrulama bağlantısına tıklayın.',
+ 'registrations_disabled' => 'Kayıtlar devre dışı bırakılmıştır',
+ 'registration_email_domain_invalid' => 'Bu e-posta sağlayıcısının uygulamaya erişim izni bulunmuyor',
+ 'register_success' => 'Kaydolduğunuz için teşekkürler! Artık kayıtlı bir kullanıcı olarak giriş yaptınız.',
// Password Reset
- 'reset_password' => 'Parolayı Sıfırla',
- 'reset_password_send_instructions' => 'Aşağıya e-mail adresinizi girdiğinizde parola yenileme bağlantısı mail adresinize gönderilecektir.',
- 'reset_password_send_button' => '>Sıfırlama Bağlantısını Gönder',
- 'reset_password_sent_success' => 'Sıfırlama bağlantısı :email adresinize gönderildi.',
- 'reset_password_success' => 'Parolanız başarıyla sıfırlandı.',
- 'email_reset_subject' => ':appName şifrenizi sıfırlayın.',
- 'email_reset_text' => ' Parola sıfırlama isteğinde bulunduğunuz için bu maili görüntülüyorsunuz.',
- 'email_reset_not_requested' => 'Eğer bu parola sıfırlama isteğinde bulunmadıysanız herhangi bir işlem yapmanıza gerek yoktur.',
+ 'reset_password' => 'Şifreyi Sıfırla',
+ 'reset_password_send_instructions' => 'Aşağıya gireceğiniz e-posta adresine şifre sıfırlama bağlantısı gönderilecektir.',
+ 'reset_password_send_button' => 'Sıfırlama Bağlantısını Gönder',
+ 'reset_password_sent' => 'Şifre sıfırlama bağlantısı, :email adresinin sistemde bulunması durumunda e-posta olarak gönderilecektir.',
+ 'reset_password_success' => 'Şifreniz başarıyla sıfırlandı.',
+ 'email_reset_subject' => ':appName şifrenizi sıfırlayın',
+ 'email_reset_text' => 'Hesap şifrenizi sıfırlama isteğinde bulunduğunuz için bu e-postayı aldınız.',
+ 'email_reset_not_requested' => 'Şifre sıfırlama isteğinde bulunmadıysanız herhangi bir işlem yapmanıza gerek yoktur.',
// Email Confirmation
- 'email_confirm_subject' => ':appName için girdiğiniz mail adresiniz onaylayınız',
- 'email_confirm_greeting' => ':appName\'e katıldığınız için teşekkürler!',
- 'email_confirm_text' => 'Lütfen e-mail adresinizi aşağıda bulunan butona tıklayarak onaylayınız:',
- 'email_confirm_action' => 'E-Maili Onayla',
- 'email_confirm_send_error' => 'e-mail onayı gerekli fakat sistem mail göndermeyi başaramadı. Yöneticiniz ile görüşüp kurulumlarda bir sorun olmadığını doğrulayın.',
- 'email_confirm_success' => 'e-mail adresiniz onaylandı!',
- 'email_confirm_resent' => 'Doğrulama maili gönderildi, lütfen gelen kutunuzu kontrol ediniz...',
+ 'email_confirm_subject' => ':appName için girdiğiniz e-posta adresini doğrulayın',
+ 'email_confirm_greeting' => ':appName uygulamasına katıldığınız için teşekkürler!',
+ 'email_confirm_text' => 'Lütfen aşağıdaki butona tıklayarak e-posta adresinizi doğrulayın:',
+ 'email_confirm_action' => 'E-posta Adresini Doğrula',
+ 'email_confirm_send_error' => 'E-posta adresinin doğrulanması gerekiyor fakat sistem, doğrulama bağlantısını göndermeyi başaramadı. E-posta adresinin doğru bir şekilde ayarlığından emin olmak için yöneticiyle iletişime geçin.',
+ 'email_confirm_success' => 'E-posta adresiniz doğrulandı!',
+ 'email_confirm_resent' => 'Doğrulama e-postası tekrar gönderildi, lütfen gelen kutunuzu kontrol ediniz.',
- 'email_not_confirmed' => 'E-mail Adresi Doğrulanmadı',
- 'email_not_confirmed_text' => 'Sağlamış olduğunuz e-mail adresi henüz doğrulanmadı.',
- 'email_not_confirmed_click_link' => 'Lütfen kayıt olduktan kısa süre sonra size gönderilen maildeki bağlantıya tıklayın ve mail adresinizi onaylayın.',
- 'email_not_confirmed_resend' => 'Eğer gelen maili bulamadıysanız aşağıdaki formu tekrar doldurarak onay mailini kendinize tekrar gönderebilirsiniz.',
- 'email_not_confirmed_resend_button' => 'Doğrulama Mailini Yeniden Yolla',
+ 'email_not_confirmed' => 'E-posta Adresi Doğrulanmadı',
+ 'email_not_confirmed_text' => 'E-posta adresiniz henüz doğrulanmadı.',
+ 'email_not_confirmed_click_link' => 'Lütfen kaydolduktan hemen sonra size gönderilen e-postadaki bağlantıya tıklayın.',
+ 'email_not_confirmed_resend' => 'Eğer e-postayı bulamıyorsanız, aşağıdaki formu doldurarak doğrulama e-postasının tekrar gönderilmesini sağlayabilirsiniz.',
+ 'email_not_confirmed_resend_button' => 'Doğrulama E-postasını Tekrar Gönder',
// User Invite
- 'user_invite_email_subject' => ':appName\'e katılma daveti aldınız!',
- 'user_invite_email_greeting' => 'Sizin için :appName üzerinde bir hesap oluşturuldu.',
- 'user_invite_email_text' => 'Parola belirlemek ve erişebilmek için aşağıdaki butona tıklayın:',
+ 'user_invite_email_subject' => ':appName uygulamasına davet edildiniz!',
+ 'user_invite_email_greeting' => ':appName üzerinde sizin için bir hesap oluşturuldu.',
+ 'user_invite_email_text' => 'Hesap şifrenizi belirlemek ve hesabınıza erişim sağlayabilmek için aşağıdaki butona tıklayın:',
'user_invite_email_action' => 'Hesap Şifresini Belirleyin',
- 'user_invite_page_welcome' => ':appName\'e hoş geldiniz!',
- 'user_invite_page_text' => 'Hesap açılışını tamamlamak ve erişim izni alabilmek için daha sonraki girişlerinizde kullanabilmek üzere bir şifre belirlemeniz gerekiyor.',
- 'user_invite_page_confirm_button' => 'Parolayı Onayla',
- 'user_invite_success' => 'Parolanız belirlendi, artık :appName\'e erişebilirsiniz!'
+ 'user_invite_page_welcome' => ':appName uygulamasına hoş geldiniz!',
+ 'user_invite_page_text' => 'Hesap kurulumunuzu tamamlamak ve gelecekteki :appName ziyaretlerinizde hesabınıza erişim sağlayabilmeniz için bir şifre belirlemeniz gerekiyor.',
+ 'user_invite_page_confirm_button' => 'Şifreyi Onayla',
+ 'user_invite_success' => 'Şifreniz ayarlandı, artık :appName uygulamasına giriş yapabilirsiniz!'
];
\ No newline at end of file
'save' => 'Kaydet',
'continue' => 'Devam',
'select' => 'Seç',
- 'toggle_all' => 'Hepsini Değiştir',
+ 'toggle_all' => 'Hepsini Aç/Kapat',
'more' => 'Daha Fazla',
// Form Labels
'description' => 'Açıklama',
'role' => 'Rol',
'cover_image' => 'Kapak resmi',
- 'cover_image_description' => 'Bu resim yaklaşık 440x250px boyutlarında olmalıdır.',
+ 'cover_image_description' => 'Bu görsel yaklaşık 440x250px boyutlarında olmalıdır.',
// Actions
- 'actions' => 'Aksiyonlar',
+ 'actions' => 'İşlemler',
'view' => 'Görüntüle',
- 'view_all' => 'Hepsini Görüntüle',
+ 'view_all' => 'Hepsini Göster',
'create' => 'Oluştur',
'update' => 'Güncelle',
'edit' => 'Düzenle',
'sort_descending' => 'Azalan Sıralama',
'sort_name' => 'İsim',
'sort_created_at' => 'Oluşturulma Tarihi',
- 'sort_updated_at' => 'Güncellenme Tarihi',
+ 'sort_updated_at' => 'Güncelleme Tarihi',
// Misc
'deleted_user' => 'Silinmiş Kullanıcı',
- 'no_activity' => 'Gösterilecek aktivite yok',
- 'no_items' => 'Kullanılabilir öge yok',
+ 'no_activity' => 'Gösterilecek eylem bulunamadı',
+ 'no_items' => 'Herhangi bir öge bulunamadı',
'back_to_top' => 'Başa dön',
- 'toggle_details' => 'Detayları değiştir',
- 'toggle_thumbnails' => 'Küçük resimleri değiştir',
+ 'toggle_details' => 'Detayları Göster/Gizle',
+ 'toggle_thumbnails' => 'Ön İzleme Görsellerini Göster/Gizle',
'details' => 'Detaylar',
- 'grid_view' => 'Grid görünümü',
- 'list_view' => 'Liste görünümü',
+ 'grid_view' => 'Izgara Görünümü',
+ 'list_view' => 'Liste Görünümü',
'default' => 'Varsayılan',
- 'breadcrumb' => 'Sayfa İşaretleri Yolu',
+ 'breadcrumb' => 'Gezinti Menüsü',
// Header
- 'profile_menu' => 'Tercih menüsü',
+ 'profile_menu' => 'Profil Menüsü',
'view_profile' => 'Profili Görüntüle',
'edit_profile' => 'Profili Düzenle',
+ 'dark_mode' => 'Gece Modu',
+ 'light_mode' => 'Aydınlık Modu',
// Layout tabs
'tab_info' => 'Bilgi',
'tab_content' => 'İçerik',
// Email Content
- 'email_action_help' => 'Eğer ":actionText" butonuna tıklamakta zorluk çekiyorsanız, aşağıda bulunan linki kopyalayıp tarayıcınıza yapıştırabilirsiniz.',
- 'email_rights' => 'Bütün hakları saklıdır',
+ 'email_action_help' => '":actionText" butonuna tıklamada sorun yaşıyorsanız, aşağıda bulunan bağlantıyı kopyalayıp tarayıcınıza yapıştırın:',
+ 'email_rights' => 'Tüm hakları saklıdır',
];
// Image Manager
'image_select' => 'Görsel Seç',
- 'image_all' => 'Tümü',
- 'image_all_title' => 'Tüm görselleri temizle',
+ 'image_all' => 'Hepsi',
+ 'image_all_title' => 'Bütün görselleri görüntüle',
'image_book_title' => 'Bu kitaba ait görselleri görüntüle',
'image_page_title' => 'Bu sayfaya ait görselleri görüntüle',
- 'image_search_hint' => 'Görsel adı ile ara',
+ 'image_search_hint' => 'Görsel adıyla ara',
'image_uploaded' => ':uploadedDate tarihinde yüklendi',
- 'image_load_more' => 'Daha Fazla ',
+ 'image_load_more' => 'Devamını Göster',
'image_image_name' => 'Görsel Adı',
- 'image_delete_used' => 'Bu görsel aşağıda bulunan görsellerde kullanılmış.',
- 'image_delete_confirm' => 'Gerçekten bu görseli silmek istiyorsanız sil tuşuna basınız.',
+ 'image_delete_used' => 'Bu görsel aşağıda bulunan sayfalarda kullanılmış.',
+ 'image_delete_confirm' => 'Bu görseli silmek istediğinize emin misiniz?',
'image_select_image' => 'Görsel Seç',
- 'image_dropzone' => 'Görselleri buraya sürükle veya seçmek için buraya tıkla',
+ 'image_dropzone' => 'Görselleri sürükleyin ya da seçin',
'images_deleted' => 'Görseller Silindi',
- 'image_preview' => 'Görsel Önizleme',
+ 'image_preview' => 'Görsel Ön İzlemesi',
'image_upload_success' => 'Görsel başarıyla yüklendi',
- 'image_update_success' => 'Görsel başarıyla güncellendi',
+ 'image_update_success' => 'Görsel detayları başarıyla güncellendi',
'image_delete_success' => 'Görsel başarıyla silindi',
'image_upload_remove' => 'Kaldır',
// Code Editor
- 'code_editor' => 'Kodu Güncelle',
- 'code_language' => 'Kod Dil',
+ 'code_editor' => 'Kodu Düzenle',
+ 'code_language' => 'Kod Dili',
'code_content' => 'Kod İçeriği',
'code_save' => 'Kodu Kaydet',
];
// Shared
'recently_created' => 'Yakın Zamanda Oluşturuldu',
- 'recently_created_pages' => 'Yakın Zamanda Oluşturulmuş Sayfalar',
- 'recently_updated_pages' => 'Yakın Zamanda Güncellenmiş Sayfalar',
- 'recently_created_chapters' => 'Yakın Zamanda Oluşturulmuş Bölümler',
- 'recently_created_books' => 'Yakın Zamanda Olşturulmuş Kitaplar',
- 'recently_created_shelves' => 'Yakın Zamanda Oluşturulmuş Kitaplıklar',
+ 'recently_created_pages' => 'Yakın Zamanda Oluşturulan Sayfalar',
+ 'recently_updated_pages' => 'Yakın Zamanda Güncellenen Sayfalar',
+ 'recently_created_chapters' => 'Yakın Zamanda Oluşturulan Bölümler',
+ 'recently_created_books' => 'Yakın Zamanda Oluşturulan Kitaplar',
+ 'recently_created_shelves' => 'Yakın Zamanda Oluşturulan Kitaplıklar',
'recently_update' => 'Yakın Zamanda Güncellenmiş',
'recently_viewed' => 'Yakın Zamanda Görüntülenmiş',
'recent_activity' => 'Son Hareketler',
'create_now' => 'Hemen bir tane oluştur',
'revisions' => 'Revizyonlar',
'meta_revision' => 'Revizyon #:revisionCount',
- 'meta_created' => 'Oluşturuldu :timeLength',
- 'meta_created_name' => ':user tarafından :timeLength tarihinde oluşturuldu',
- 'meta_updated' => 'Güncellendi :timeLength',
- 'meta_updated_name' => ':user tarafından :timeLength tarihinde güncellendi',
- 'entity_select' => 'Öğe Seçme',
+ 'meta_created' => ':timeLength Oluşturuldu',
+ 'meta_created_name' => ':user tarafından :timeLength oluşturuldu',
+ 'meta_updated' => ':timeLength güncellendi',
+ 'meta_updated_name' => ':user tarafından :timeLength güncellendi',
+ 'entity_select' => 'Öge Seçimi',
'images' => 'Görseller',
'my_recent_drafts' => 'Son Taslaklarım',
- 'my_recently_viewed' => 'Son Görüntülemelerim',
+ 'my_recently_viewed' => 'Son Görüntülediklerim',
'no_pages_viewed' => 'Herhangi bir sayfa görüntülemediniz',
'no_pages_recently_created' => 'Yakın zamanda bir sayfa oluşturulmadı',
'no_pages_recently_updated' => 'Yakın zamanda bir sayfa güncellenmedi',
'export' => 'Dışa Aktar',
- 'export_html' => 'Contained Web Dosyası',
+ 'export_html' => 'Web Dosyası',
'export_pdf' => 'PDF Dosyası',
'export_text' => 'Düz Metin Dosyası',
// Permissions and restrictions
'permissions' => 'İzinler',
- 'permissions_intro' => 'Etkinleştirildikten sonra bu izinler diğer diğer bütün izinlerden öncelikli olacaktır.',
+ 'permissions_intro' => 'Etkinleştirildikten sonra bu izinler, diğer bütün izinlerden öncelikli olacaktır.',
'permissions_enable' => 'Özelleştirilmiş Yetkileri Etkinleştir',
'permissions_save' => 'İzinleri Kaydet',
// Search
'search_results' => 'Arama Sonuçları',
'search_total_results_found' => ':count sonuç bulundu |:count toplam sonuç bulundu',
- 'search_clear' => 'Aramaları Temizle',
- 'search_no_pages' => 'Bu aramayla herhangi bir sonuç eşleşmedi',
- 'search_for_term' => ':term için ara',
+ 'search_clear' => 'Aramayı Temizle',
+ 'search_no_pages' => 'Bu aramayla ilgili herhangi bir sayfa bulunamadı',
+ 'search_for_term' => ':term için Ara',
'search_more' => 'Daha Fazla Sonuç',
'search_filters' => 'Arama Filtreleri',
'search_content_type' => 'İçerik Türü',
'search_exact_matches' => 'Tam Eşleşmeler',
'search_tags' => 'Etiket Aramaları',
'search_options' => 'Ayarlar',
- 'search_viewed_by_me' => 'Benim tarafımdan görüntülendi',
- 'search_not_viewed_by_me' => 'Benim tarafımdan görüntülenmedi',
- 'search_permissions_set' => 'İzinler ayarlandı',
- 'search_created_by_me' => 'Benim tarafımdan oluşturuldu',
- 'search_updated_by_me' => 'Benim tarafımdan güncellendi',
+ 'search_viewed_by_me' => 'Görüntülediklerim',
+ 'search_not_viewed_by_me' => 'Görüntülemediklerim',
+ 'search_permissions_set' => 'İzinler ayarlanmış',
+ 'search_created_by_me' => 'Oluşturduklarım',
+ 'search_updated_by_me' => 'Güncellediklerim',
'search_date_options' => 'Tarih Seçenekleri',
'search_updated_before' => 'Önce güncellendi',
'search_updated_after' => 'Sonra güncellendi',
'search_created_before' => 'Önce oluşturuldu',
'search_created_after' => 'Sonra oluşturuldu',
- 'search_set_date' => 'Tarih Ayarla',
+ 'search_set_date' => 'Tarihi Ayarla',
'search_update' => 'Aramayı Güncelle',
// Shelves
'shelf' => 'Kitaplık',
'shelves' => 'Kitaplıklar',
- 'x_shelves' => ':count Kitaplık|:count Kitaplıklar',
+ 'x_shelves' => ':count Kitaplık|:count Kitaplık',
'shelves_long' => 'Kitaplıklar',
- 'shelves_empty' => 'Hiç kitaplık oluşturulmadı',
+ 'shelves_empty' => 'Hiç kitaplık oluşturulmamış',
'shelves_create' => 'Yeni Kitaplık Oluştur',
'shelves_popular' => 'Popüler Kitaplıklar',
'shelves_new' => 'Yeni Kitaplıklar',
'shelves_save' => 'Kitaplığı Kaydet',
'shelves_books' => 'Bu kitaplıktaki kitaplar',
'shelves_add_books' => 'Bu kitaplığa kitap ekle',
- 'shelves_drag_books' => 'Bu kitaplığa kitap eklemek için kitapları buraya sürükle',
- 'shelves_empty_contents' => 'Bu kitaplığa henüz hiç bir kitap atanmamış',
- 'shelves_edit_and_assign' => 'Kitaplığa kitap eklemek için güncelle',
- 'shelves_edit_named' => ':name Kitaplığını Güncelle',
- 'shelves_edit' => 'Kitaplığı Güncelle',
+ 'shelves_drag_books' => 'Bu kitaplığa eklemek istediğin kitapları buraya sürükle',
+ 'shelves_empty_contents' => 'Bu kitaplıkta hiç kitap bulunamadı',
+ 'shelves_edit_and_assign' => 'Kitap eklemek için kitaplığı düzenleyin',
+ 'shelves_edit_named' => ':name Kitaplığını Düzenle',
+ 'shelves_edit' => 'Kitaplığı Düzenle',
'shelves_delete' => 'Kitaplığı Sil',
'shelves_delete_named' => ':name Kitaplığını Sil',
- 'shelves_delete_explain' => "Bu işlem :name kitaplığını silecektir. İçerdiği kitaplar silinmeyecektir.",
- 'shelves_delete_confirmation' => 'Bu kitaplığı silmek istediğinizden emin misiniz?',
+ 'shelves_delete_explain' => "Bu işlem ':name' kitaplığını silecektir ancak içerdiği kitaplara dokunulmayacaktır.",
+ 'shelves_delete_confirmation' => 'Bu kitaplığı silmek istediğinize emin misiniz?',
'shelves_permissions' => 'Kitaplık İzinleri',
'shelves_permissions_updated' => 'Kitaplık İzinleri Güncellendi',
'shelves_permissions_active' => 'Kitaplık İzinleri Aktif',
'shelves_copy_permissions_to_books' => 'İzinleri Kitaplara Kopyala',
'shelves_copy_permissions' => 'İzinleri Kopyala',
- 'shelves_copy_permissions_explain' => 'Bu işlem sonucunda kitaplığınızın izinleri içerdiği kitaplara da aynen uygulanır. Aktifleştirmeden bu kitaplığa ait izinleri kaydettiğinizden emin olun.',
+ 'shelves_copy_permissions_explain' => 'Bu işlem sonucunda kitaplığınızın izinleri, içerdiği kitaplara da aynen uygulanır. Aktifleştirmeden önce bu kitaplığa ait izinleri kaydettiğinizden emin olun.',
'shelves_copy_permission_success' => 'Kitaplık izinleri :count adet kitaba kopyalandı',
// Books
'book' => 'Kitap',
'books' => 'Kitaplar',
- 'x_books' => ':count Kitap|:count Kitaplar',
- 'books_empty' => 'Hiç kitap oluşturulmadı',
+ 'x_books' => ':count Kitap|:count Kitap',
+ 'books_empty' => 'Hiç kitap oluşturulmamış',
'books_popular' => 'Popüler Kitaplar',
'books_recent' => 'En Son Kitaplar',
'books_new' => 'Yeni Kitaplar',
'books_new_empty' => 'En yeni kitaplar burada görüntülenecek.',
'books_create' => 'Yeni Kitap Oluştur',
'books_delete' => 'Kitabı Sil',
- 'books_delete_named' => ':bookName kitabını sil',
- 'books_delete_explain' => 'Bu işlem \':bookName\' kitabını silecek. Bütün sayfa ve bölümler silinecektir.',
- 'books_delete_confirmation' => 'Bu kitabı silmek istediğinizden emin misiniz?',
- 'books_edit' => 'Kitabı Güncelle',
- 'books_edit_named' => ':bookName Kitabını Güncelle',
+ 'books_delete_named' => ':bookName Kitabını Sil',
+ 'books_delete_explain' => 'Bu işlem \':bookName\' kitabını silecektir. Ayrıca kitaba ait bütün sayfalar ve bölümler de silinecektir.',
+ 'books_delete_confirmation' => 'Bu kitabı silmek istediğinize emin misiniz?',
+ 'books_edit' => 'Kitabı Düzenle',
+ 'books_edit_named' => ':bookName Kitabını Düzenle',
'books_form_book_name' => 'Kitap Adı',
'books_save' => 'Kitabı Kaydet',
'books_permissions' => 'Kitap İzinleri',
'books_permissions_updated' => 'Kitap İzinleri Güncellendi',
- 'books_empty_contents' => 'Bu kitaba ait sayfa veya bölüm oluşturulmadı.',
- 'books_empty_create_page' => 'Yeni sayfa oluştur',
+ 'books_empty_contents' => 'Bu kitaba ait sayfa veya bölüm oluşturulmamış.',
+ 'books_empty_create_page' => 'Yeni bir sayfa oluştur',
'books_empty_sort_current_book' => 'Mevcut kitabı sırala',
- 'books_empty_add_chapter' => 'Yeni bölüm ekle',
+ 'books_empty_add_chapter' => 'Yeni bir bölüm ekle',
'books_permissions_active' => 'Kitap İzinleri Aktif',
'books_search_this' => 'Bu kitapta ara',
'books_navigation' => 'Kitap Navigasyonu',
'books_sort_named' => ':bookName Kitabını Sırala',
'books_sort_name' => 'İsme Göre Sırala',
'books_sort_created' => 'Oluşturulma Tarihine Göre Sırala',
- 'books_sort_updated' => 'Güncellenme Tarihine Göre Sırala',
+ 'books_sort_updated' => 'Güncelleme Tarihine Göre Sırala',
'books_sort_chapters_first' => 'Önce Bölümler',
'books_sort_chapters_last' => 'En Son Bölümler',
'books_sort_show_other' => 'Diğer Kitapları Göster',
// Chapters
'chapter' => 'Bölüm',
'chapters' => 'Bölümler',
- 'x_chapters' => ':count Bölüm|:count Bölümler',
+ 'x_chapters' => ':count Bölüm|:count Bölüm',
'chapters_popular' => 'Popüler Bölümler',
'chapters_new' => 'Yeni Bölüm',
'chapters_create' => 'Yeni Bölüm Oluştur',
'chapters_delete' => 'Bölümü Sil',
'chapters_delete_named' => ':chapterName Bölümünü Sil',
- 'chapters_delete_explain' => 'Bu işlem \':chapterName\' kitabını silecek. Bütün sayfalar silinecek ve direkt olarak ana kitab eklenecektir.',
- 'chapters_delete_confirm' => 'Bölümü silmek istediğinizden emin misiniz?',
- 'chapters_edit' => 'Bölümü Güncelle',
- 'chapters_edit_named' => ':chapterName Bölümünü Güncelle',
+ 'chapters_delete_explain' => 'Bu işlem sonunda \':chapterName\' bölümü silinecek ve bu bölüme ait bütün sayfalar direkt olarak ana kitaba aktarılacaktır.',
+ 'chapters_delete_confirm' => 'Bölümü silmek istediğinize emin misiniz?',
+ 'chapters_edit' => 'Bölümü Düzenle',
+ 'chapters_edit_named' => ':chapterName Bölümünü Düzenle',
'chapters_save' => 'Bölümü Kaydet',
'chapters_move' => 'Bölümü Taşı',
'chapters_move_named' => ':chapterName Bölümünü Taşı',
- 'chapter_move_success' => 'Bölüm :bookName Kitabına Taşındı',
+ 'chapter_move_success' => 'Bölüm, :bookName kitabına taşındı',
'chapters_permissions' => 'Bölüm İzinleri',
- 'chapters_empty' => 'Bu bölümde henüz bir sayfa yok.',
+ 'chapters_empty' => 'Bu bölümde henüz bir sayfa bulunmuyor.',
'chapters_permissions_active' => 'Bölüm İzinleri Aktif',
'chapters_permissions_success' => 'Bölüm İzinleri Güncellendi',
- 'chapters_search_this' => 'Bu bölümü ara',
+ 'chapters_search_this' => 'Bu bölümde ara',
// Pages
'page' => 'Sayfa',
'pages' => 'Sayfalar',
- 'x_pages' => ':count Sayfa|:count Sayfalar',
+ 'x_pages' => ':count Sayfa|:count Sayfa',
'pages_popular' => 'Popüler Sayfalar',
'pages_new' => 'Yeni Sayfa',
'pages_attachments' => 'Ekler',
'pages_navigation' => 'Sayfa Navigasyonu',
'pages_delete' => 'Sayfayı Sil',
'pages_delete_named' => ':pageName Sayfasını Sil',
- 'pages_delete_draft_named' => ':pageName Taslak Sayfasını Sil',
- 'pages_delete_draft' => 'Taslak Sayfayı Sil',
+ 'pages_delete_draft_named' => ':pageName Sayfa Taslağını Sil',
+ 'pages_delete_draft' => 'Sayfa Taslağını Sil',
'pages_delete_success' => 'Sayfa silindi',
- 'pages_delete_draft_success' => 'Taslak sayfa silindi',
- 'pages_delete_confirm' => 'Bu sayfayı silmek istediğinizden emin misiniz?',
- 'pages_delete_draft_confirm' => 'Bu taslak sayfayı silmek istediğinizden emin misiniz?',
+ 'pages_delete_draft_success' => 'Sayfa taslağı silindi',
+ 'pages_delete_confirm' => 'Bu sayfayı silmek istediğinize emin misiniz?',
+ 'pages_delete_draft_confirm' => 'Bu sayfa taslağını silmek istediğinize emin misiniz?',
'pages_editing_named' => ':pageName Sayfası Düzenleniyor',
'pages_edit_draft_options' => 'Taslak Seçenekleri',
'pages_edit_save_draft' => 'Taslağı Kaydet',
- 'pages_edit_draft' => 'Taslak Sayfasını Düzenle',
+ 'pages_edit_draft' => 'Sayfa Taslağını Düzenle',
'pages_editing_draft' => 'Taslak Düzenleniyor',
'pages_editing_page' => 'Sayfa Düzenleniyor',
'pages_edit_draft_save_at' => 'Taslak kaydedildi ',
- 'pages_edit_delete_draft' => 'Taslağı Sl',
+ 'pages_edit_delete_draft' => 'Taslağı Sil',
'pages_edit_discard_draft' => 'Taslağı Yoksay',
- 'pages_edit_set_changelog' => 'Değişiklik Logunu Kaydet',
- 'pages_edit_enter_changelog_desc' => 'Yaptığınız değişiklikler hakkında kısa bir bilgilendirme ekleyin',
- 'pages_edit_enter_changelog' => 'Değişim Günlüğü Ekleyin',
+ 'pages_edit_set_changelog' => 'Değişim Günlüğünü Ayarla',
+ 'pages_edit_enter_changelog_desc' => 'Yaptığınız değişiklikler hakkında kısa bir açıklama girin',
+ 'pages_edit_enter_changelog' => 'Değişim Günlüğünü Yazın',
'pages_save' => 'Sayfayı Kaydet',
'pages_title' => 'Sayfa Başlığı',
'pages_name' => 'Sayfa İsmi',
- 'pages_md_editor' => 'Editör',
- 'pages_md_preview' => 'Önizleme',
+ 'pages_md_editor' => 'Düzenleyici',
+ 'pages_md_preview' => 'Ön İzleme',
'pages_md_insert_image' => 'Görsel Ekle',
- 'pages_md_insert_link' => 'Öge Linki Ekle',
+ 'pages_md_insert_link' => 'Öge Bağlantısı Ekle',
'pages_md_insert_drawing' => 'Çizim Ekle',
- 'pages_not_in_chapter' => 'Sayfa Bu Bölümde Değil',
+ 'pages_not_in_chapter' => 'Bu sayfa, bir bölüme ait değil',
'pages_move' => 'Sayfayı Taşı',
- 'pages_move_success' => 'Sayfa ":parentName"\'a taşındı',
+ 'pages_move_success' => 'Sayfa şuraya taşındı: :parentName',
'pages_copy' => 'Sayfayı Kopyala',
- 'pages_copy_desination' => 'Kopyalanacak Hedef',
+ 'pages_copy_desination' => 'Kopyalama Hedefi',
'pages_copy_success' => 'Sayfa başarıyla kopyalandı',
'pages_permissions' => 'Sayfa İzinleri',
'pages_permissions_success' => 'Sayfa izinleri güncellendi',
'pages_revisions' => 'Sayfa Revizyonları',
'pages_revisions_named' => ':pageName için Sayfa Revizyonları',
'pages_revision_named' => ':pageName için Sayfa Revizyonu',
- 'pages_revisions_created_by' => 'Oluşturan',
+ 'pages_revisions_created_by' => 'Revize Eden',
'pages_revisions_date' => 'Revizyon Tarihi',
'pages_revisions_number' => '#',
'pages_revisions_numbered' => 'Revizyon #:id',
'pages_revisions_numbered_changes' => 'Revizyon #:id Değişiklikleri',
'pages_revisions_changelog' => 'Değişim Günlüğü',
'pages_revisions_changes' => 'Değişiklikler',
- 'pages_revisions_current' => 'Mevcut Versiyon',
- 'pages_revisions_preview' => 'Önizleme',
- 'pages_revisions_restore' => 'Kurtar',
- 'pages_revisions_none' => 'Bu sayfaya ait revizyon yok',
- 'pages_copy_link' => 'Linki kopyala',
+ 'pages_revisions_current' => 'Şimdiki Sürüm',
+ 'pages_revisions_preview' => 'Ön İzleme',
+ 'pages_revisions_restore' => 'Geri Dön',
+ 'pages_revisions_none' => 'Bu sayfaya ait herhangi bir revizyon bulunamadı',
+ 'pages_copy_link' => 'Bağlantıyı kopyala',
'pages_edit_content_link' => 'İçeriği Düzenle',
'pages_permissions_active' => 'Sayfa İzinleri Aktif',
- 'pages_initial_revision' => 'İlk Yayın',
+ 'pages_initial_revision' => 'İlk yayın',
'pages_initial_name' => 'Yeni Sayfa',
- 'pages_editing_draft_notification' => 'Şu anda :timeDiff tarhinde kaydedilmiş olan taslağı düzenlemektesiniz.',
- 'pages_draft_edited_notification' => 'Bu sayfa son girişinizden bu yana güncellendi. Değişiklikleri yoksayıp, kaydetmeden çıkmanız önerilir.',
+ 'pages_editing_draft_notification' => 'Şu anda en son :timeDiff tarihinde kaydedilmiş olan taslağı düzenliyorsunuz.',
+ 'pages_draft_edited_notification' => 'Bu sayfa o zamandan bu zamana güncellenmiş, bu nedenle bu taslağı yok saymanız önerilir.',
'pages_draft_edit_active' => [
- 'start_a' => ':count kullanıcı bu sayfayı düzenlemeye başladı',
- 'start_b' => ':userName kullanıcısı bu sayfayı düzenlemeye başladı',
+ 'start_a' => ':count kullanıcı, bu sayfayı düzenlemeye başladı',
+ 'start_b' => ':userName, bu sayfayı düzenlemeye başladı',
'time_a' => 'sayfa son güncellendiğinden beri',
'time_b' => 'son :minCount dakikada',
- 'message' => ':start :time. Birbirinizin düzenlemelerinin çakışmamasına dikkat edin!',
+ 'message' => ':start :time. Düzenlemelerinizin çakışmamasına dikkat edin!',
],
- 'pages_draft_discarded' => 'Taslak yok sayıldı, editör mevcut sayfa içeriği ile güncellendi',
- 'pages_specific' => 'Özel Sayfa',
+ 'pages_draft_discarded' => 'Taslak yok sayıldı. Düzenleyici, mevcut sayfa içeriği kullanılarak güncellendi',
+ 'pages_specific' => 'Spesifik Sayfa',
'pages_is_template' => 'Sayfa Şablonu',
// Editor Sidebar
'tag' => 'Etiket',
'tags' => 'Etiketler',
'tag_name' => 'Etiket İsmi',
- 'tag_value' => 'Etiket İçeriği (Opsiyonel)',
- 'tags_explain' => "İçeriğini daha iyi kategorize etmek için bazı etiketler ekle. Etiketlere değer atayarak daha derin bir organizasyon yapısına sahip olabilirsin.",
+ 'tag_value' => 'Etiket Değeri (Opsiyonel)',
+ 'tags_explain' => "İçeriğinizi daha iyi kategorize etmek için etiket ekleyin. Etiketlere değer atayarak daha derinlemesine bir düzen elde edebilirsiniz.",
'tags_add' => 'Başka etiket ekle',
- 'tags_remove' => 'Bu Etiketi Sil',
+ 'tags_remove' => 'Bu etiketi sil',
'attachments' => 'Ekler',
- 'attachments_explain' => 'Sayfanızda göstermek için bazı dosyalar yükleyin veya bazı bağlantılar ekleyin. Bunlar sayfanın sidebarında görülebilir.',
+ 'attachments_explain' => 'Sayfanızda göstermek için dosyalar yükleyin veya bağlantılar ekleyin. Bunlar, sayfaya ait yan menüde gösterilecektir.',
'attachments_explain_instant_save' => 'Burada yapılan değişiklikler anında kaydedilir.',
'attachments_items' => 'Eklenmiş Ögeler',
'attachments_upload' => 'Dosya Yükle',
'attachments_link' => 'Link Ekle',
- 'attachments_set_link' => 'Link Düzenle',
- 'attachments_delete_confirm' => 'Eki gerçekten silmek istiyor musunuz?',
- 'attachments_dropzone' => 'Dosyaları buraya sürükle veya eklemek için buraya tıkla',
- 'attachments_no_files' => 'Hiç bir dosya yüklenmedi',
- 'attachments_explain_link' => 'Eğer dosya yüklememeyi tercih ederseniz link ekleyebilirsiniz. Bu başka bir sayfaya veya buluttaki bir dosyanın linki olabilir.',
+ 'attachments_set_link' => 'Bağlantıyı Ata',
+ 'attachments_delete_confirm' => 'Eki silmek istediğinize emin misiniz?',
+ 'attachments_dropzone' => 'Dosyaları sürükleyin veya seçin',
+ 'attachments_no_files' => 'Hiçbir dosya yüklenmedi',
+ 'attachments_explain_link' => 'Eğer dosya yüklememeyi tercih ederseniz bağlantı ekleyebilirsiniz. Bu bağlantı başka bir sayfanın veya bulut depolamadaki bir dosyanın bağlantısı olabilir.',
'attachments_link_name' => 'Bağlantı Adı',
- 'attachment_link' => 'Ek linki',
- 'attachments_link_url' => 'Dosya linki',
- 'attachments_link_url_hint' => 'Dosyanın veya sitenin url adres',
+ 'attachment_link' => 'Ek bağlantısı',
+ 'attachments_link_url' => 'Dosya bağlantısı',
+ 'attachments_link_url_hint' => 'Dosyanın veya sitenin url adresi',
'attach' => 'Ekle',
'attachments_edit_file' => 'Dosyayı Düzenle',
'attachments_edit_file_name' => 'Dosya Adı',
- 'attachments_edit_drop_upload' => 'Dosyaları sürükle veya yüklemek için buraya tıkla',
- 'attachments_order_updated' => 'Ek sırası güncellendi',
+ 'attachments_edit_drop_upload' => 'Üzerine yazılacak dosyaları sürükleyin veya seçin',
+ 'attachments_order_updated' => 'Ek sıralaması güncellendi',
'attachments_updated_success' => 'Ek detayları güncellendi',
'attachments_deleted' => 'Ek silindi',
'attachments_file_uploaded' => 'Dosya başarıyla yüklendi',
'attachments_file_updated' => 'Dosya başarıyla güncellendi',
- 'attachments_link_attached' => 'Link sayfaya başarıyla eklendi',
+ 'attachments_link_attached' => 'Bağlantı, sayfaya başarıyla eklendi',
'templates' => 'Şablonlar',
- 'templates_set_as_template' => 'Sayfa bir şablondur',
- 'templates_explain_set_as_template' => 'Bu sayfayı şablon olarak seçebilirsiniz. Böylece taslağın içeriği diğer sayfaları oluştururken düzenlenebilir. Eğer yetkileri varsa diğer kullanıcılar da bu sayfayı görüntülerken bu şablonu kullanabilirler.',
+ 'templates_set_as_template' => 'Bu sayfa, bir şablondur',
+ 'templates_explain_set_as_template' => 'Başka sayfalar oluştururken bu sayfanın içeriğini kullanabilmek için bu sayfayı bir şablon olarak ayarlayabilirsiniz. Bu sayfayı görüntüleme yetkisi olan kullanıcılar da bu şablonu kullanabileceklerdir.',
'templates_replace_content' => 'Sayfa içeriğini değiştir',
'templates_append_content' => 'Sayfa içeriğine ekle',
'templates_prepend_content' => 'Sayfa içeriğinin başına ekle',
// Profile View
- 'profile_user_for_x' => 'Kullanıcı :time',
+ 'profile_user_for_x' => 'Üyelik süresi: :time',
'profile_created_content' => 'Oluşturulan İçerik',
- 'profile_not_created_pages' => ':userName herhangi bir sayfa oluşturmadı',
- 'profile_not_created_chapters' => ':userName herhangi bir bölüm oluşturmadı',
- 'profile_not_created_books' => ':userName herhangi bir kitap oluşturmadı',
- 'profile_not_created_shelves' => ':userName herhangi bir kitaplık oluşturmadı',
+ 'profile_not_created_pages' => ':userName herhangi bir sayfa oluşturmamış',
+ 'profile_not_created_chapters' => ':userName herhangi bir bölüm oluşturmamış',
+ 'profile_not_created_books' => ':userName herhangi bir kitap oluşturmamış',
+ 'profile_not_created_shelves' => ':userName herhangi bir kitaplık oluşturmamış',
// Comments
'comment' => 'Yorum',
'comments' => 'Yorumlar',
'comment_add' => 'Yorum Ekle',
- 'comment_placeholder' => 'Buraya yorum ekle',
- 'comment_count' => '{0} Yorum Yok|{1} 1 Yorum|[2,*] :count Yorun',
- 'comment_save' => 'Yorum Kaydet',
- 'comment_saving' => 'Yorum kaydediliyor...',
+ 'comment_placeholder' => 'Buraya bir yorum yazın',
+ 'comment_count' => '{0} Yorum Yapılmamış|{1} 1 Yorum|[2,*] :count Yorum',
+ 'comment_save' => 'Yorumu Gönder',
+ 'comment_saving' => 'Yorum gönderiliyor...',
'comment_deleting' => 'Yorum siliniyor...',
'comment_new' => 'Yeni Yorum',
- 'comment_created' => 'yorum yaptı :createDiff',
- 'comment_updated' => ':username tarafından :updateDiff önce güncellendi',
+ 'comment_created' => ':createDiff yorum yaptı',
+ 'comment_updated' => ':username tarafından :updateDiff güncellendi',
'comment_deleted_success' => 'Yorum silindi',
- 'comment_created_success' => 'Yorum eklendi',
+ 'comment_created_success' => 'Yorum gönderildi',
'comment_updated_success' => 'Yorum güncellendi',
- 'comment_delete_confirm' => 'Bu yorumu silmek istediğinizden emin misiniz?',
+ 'comment_delete_confirm' => 'Bu yorumu silmek istediğinize emin misiniz?',
'comment_in_reply_to' => ':commentId yorumuna yanıt olarak',
// Revision
- 'revision_delete_confirm' => 'Bu revizyonu silmek istediğinizden emin misiniz?',
- 'revision_restore_confirm' => 'Bu revizyonu yeniden yüklemek istediğinizden emin misiniz? Mevcut sayfa içeriği değiştirilecektir.',
+ 'revision_delete_confirm' => 'Bu revizyonu silmek istediğinize emin misiniz?',
+ 'revision_restore_confirm' => 'Bu revizyonu yeniden yüklemek istediğinize emin misiniz? Sayfanın şu anki içeriği değiştirilecektir.',
'revision_delete_success' => 'Revizyon silindi',
- 'revision_cannot_delete_latest' => 'Son revizyon silinemez.'
+ 'revision_cannot_delete_latest' => 'Son revizyonu silemezsiniz.'
];
\ No newline at end of file
return [
// Permissions
- 'permission' => 'Bu sayfaya erişme yetkiniz yok.',
- 'permissionJson' => 'Bu işlemi yapmak için yetkiniz yo.',
+ 'permission' => 'Bu sayfaya erişim izniniz bulunmuyor.',
+ 'permissionJson' => 'Bu işlemi yapmaya yetkiniz bulunmuyor.',
// Auth
- 'error_user_exists_different_creds' => ':email adresi farklı kullanıcı bilgileri ile zaten kullanımda.',
- 'email_already_confirmed' => 'E-mail halihazırda onaylanmış, giriş yapmayı dene.',
- 'email_confirmation_invalid' => 'Bu doğrulama tokenı daha önce kullanılmış veya geçerli değil, lütfen tekrar kayıt olmayı deneyin.',
- 'email_confirmation_expired' => 'Doğrulama token\'ının süresi geçmiş, yeni bir mail gönderildi.',
- 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
- 'ldap_fail_anonymous' => 'Anonim LDAP girişi başarısız oldu',
- 'ldap_fail_authed' => 'Verdiğiniz bilgiler ile LDAP girişi başarısız oldu.',
- 'ldap_extension_not_installed' => 'LDAP PHP eklentisi yüklenmedi',
+ 'error_user_exists_different_creds' => ':email e-posta adresine sahip bir kullanıcı zaten var.',
+ 'email_already_confirmed' => 'E-posta adresi zaten doğrulanmış, giriş yapmayı deneyin.',
+ 'email_confirmation_invalid' => 'Bu doğrulama kodu ya geçersiz ya da daha önce kullanılmış, lütfen tekrar kaydolmayı deneyin.',
+ 'email_confirmation_expired' => 'Doğrulama kodunun süresi doldu, yeni bir doğrulama kodu e-posta adresine gönderildi.',
+ 'email_confirmation_awaiting' => 'Bu hesaba ait e-posta adresinin doğrulanması gerekiyor',
+ 'ldap_fail_anonymous' => 'Anonim olarak gerçekleştirilmeye çalışılan LDAP erişimi başarısız oldu',
+ 'ldap_fail_authed' => 'Verilen bilgiler kullanılarak gerçekleştirilmeye çalışılan LDAP erişimi başarısız oldu',
+ 'ldap_extension_not_installed' => 'LDAP PHP eklentisi kurulu değil',
'ldap_cannot_connect' => 'LDAP sunucusuna bağlanılamadı, ilk bağlantı başarısız oldu',
- 'saml_already_logged_in' => 'Zaten giriş yapıldı',
- 'saml_user_not_registered' => ':name adlı kullanıcı kayıtlı değil ve otomatik kaydolma devre dışı',
- 'saml_no_email_address' => 'Bu kullanıcı için, harici bir doğrulama siteminden elde edilen verilerde, bir e-posta adresi bulunamadı',
- 'saml_invalid_response_id' => 'Harici doğrulama sistemi tarafından sağlanan bir veri talebi, bu uygulama tarafından başlatılan bir işlem tarafından tanınamadı. Giriş yaptıktan sonra geri dönmek bu soruna yol açabilir.',
- 'saml_fail_authed' => ':system kullanarak giriş yapma başarısız, sistem başarılı bir doğrulama sağlamadı',
- 'social_no_action_defined' => 'Bir aksiyon tanımlanmadı',
- 'social_login_bad_response' => ":socialAccount girişi sırasında hata oluştu: \n:error",
+ 'saml_already_logged_in' => 'Zaten giriş yapılmış',
+ 'saml_user_not_registered' => ':name adlı kullanıcı kayıtlı değil ve otomatik kaydolma devre dışı bırakılmış',
+ 'saml_no_email_address' => 'Harici kimlik doğrulama sisteminden gelen veriler, bu kullanıcının e-posta adresini içermiyor',
+ 'saml_invalid_response_id' => 'Harici doğrulama sistemi tarafından sağlanan bir veri talebi, bu uygulama tarafından başlatılan bir işlem tarafından tanınamadı. Giriş yaptıktan sonra geri dönmek bu soruna yol açmış olabilir.',
+ 'saml_fail_authed' => ':system kullanarak giriş yapma başarısız oldu; sistem, başarılı bir kimlik doğrulama sağlayamadı',
+ 'social_no_action_defined' => 'Herhangi bir eylem tanımlanmamış',
+ 'social_login_bad_response' => ":socialAccount girişi sırasında bir hata meydana geldi: \n:error",
'social_account_in_use' => 'Bu :socialAccount zaten kullanımda, :socialAccount hesabıyla giriş yapmayı deneyin.',
- 'social_account_email_in_use' => ':email adresi zaten kullanımda. Eğer zaten bir hesabınız varsa :socialAccount hesabınızı profil ayarları kısmından bağlayabilirsiniz.',
- 'social_account_existing' => 'Bu :socialAccount zaten profilinize eklenmiş.',
- 'social_account_already_used_existing' => 'Bu :socialAccount başka bir kullanıcı tarafından kullanılıyor.',
- 'social_account_not_used' => 'Bu :socialAccount hesabı hiç bir kullanıcıya bağlı değil. Lütfen profil ayarlarına gidiniz ve bağlayınız. ',
- 'social_account_register_instructions' => 'Hala bir hesabınız yoksa :socialAccount ile kayıt olabilirsiniz.',
+ 'social_account_email_in_use' => ':email e-posta adresi zaten kullanılıyor. Zaten bir hesabınız varsa, :socialAccount hesabınızı profil ayarlarınızdan mevcut hesabınıza bağlayabilirsiniz.',
+ 'social_account_existing' => 'Bu :socialAccount zaten hesabınıza bağlanmış.',
+ 'social_account_already_used_existing' => 'Bu :socialAccount, başka bir kullanıcı tarafından kullanılıyor.',
+ 'social_account_not_used' => 'Bu :socialAccount hesabı hiç bir kullanıcıya bağlanmamış. Lütfen profil ayarlarınızdan mevcut hesabınıza bağlayınız. ',
+ 'social_account_register_instructions' => 'Hâlâ bir hesabınız yoksa, :socialAccount aracılığıyla kaydolabilirsiniz.',
'social_driver_not_found' => 'Social driver bulunamadı',
'social_driver_not_configured' => ':socialAccount ayarlarınız doğru bir şekilde ayarlanmadı.',
- 'invite_token_expired' => 'Davetiye linkinin süresi doldu. Bunun yerine parolanızı sıfırlamayı deneyebilirsiniz.',
+ 'invite_token_expired' => 'Davetiye bağlantısının süresi doldu. Bunun yerine parolanızı sıfırlamayı deneyebilirsiniz.',
// System
'path_not_writable' => ':filePath dosya yolu yüklenemedi. Sunucuya yazılabilir olduğundan emin olun.',
- 'cannot_get_image_from_url' => ':url\'den görsel alınamadı',
- 'cannot_create_thumbs' => 'Sunucu küçük resimleri oluşturamadı. Lütfen GD PHP eklentisinin yüklü olduğundan emin olun.',
- 'server_upload_limit' => 'Sunucu bu boyutta dosya yüklemenize izin vermiyor. Lütfen daha küçük boyutta dosya yüklemeyi deneyiniz.',
- 'uploaded' => 'Sunucu bu boyutta dosya yüklemenize izin vermiyor. Lütfen daha küçük boyutta dosya yüklemeyi deneyiniz.',
- 'image_upload_error' => 'Görsel yüklenirken bir hata oluştu',
- 'image_upload_type_error' => 'Yüklemeye çalıştığınız dosya türü geçerli değildir',
+ 'cannot_get_image_from_url' => ':url adresindeki görsel alınamadı',
+ 'cannot_create_thumbs' => 'Sunucu, görsel ön izlemelerini oluşturamadı. Lütfen GD PHP eklentisinin kurulu olduğundan emin olun.',
+ 'server_upload_limit' => 'Sunucu bu boyutta dosya yüklemenize izin vermiyor. Lütfen daha küçük bir dosya deneyin.',
+ 'uploaded' => 'Sunucu bu boyutta dosya yüklemenize izin vermiyor. Lütfen daha küçük bir dosya deneyin.',
+ 'image_upload_error' => 'Görsel yüklenirken bir hata meydana geldi',
+ 'image_upload_type_error' => 'Yüklemeye çalıştığınız dosya türü geçersizdir',
'file_upload_timeout' => 'Dosya yüklemesi zaman aşımına uğradı',
// Attachments
'attachment_not_found' => 'Ek bulunamadı',
// Pages
- 'page_draft_autosave_fail' => 'Taslak kaydetme başarısız. Sayfanızı kaydetmeden önce internet bağlantınız olduğundan emin olun',
- 'page_custom_home_deletion' => 'Bu sayfa anasayfa olarak ayarlandığı için silinemez',
+ 'page_draft_autosave_fail' => 'Taslak kaydetme başarısız oldu. Bu sayfayı kaydetmeden önce internet bağlantınız olduğundan emin olun',
+ 'page_custom_home_deletion' => 'Bu sayfa, "Ana Sayfa" olarak ayarlandığı için silinemez',
// Entities
- 'entity_not_found' => 'Eleman bulunamadı',
+ 'entity_not_found' => 'Öge bulunamadı',
'bookshelf_not_found' => 'Kitaplık bulunamadı',
'book_not_found' => 'Kitap bulunamadı',
'page_not_found' => 'Sayfa bulunamadı',
// Roles
'role_cannot_be_edited' => 'Bu rol düzenlenemez',
- 'role_system_cannot_be_deleted' => 'Bu bir yönetici rolüdür ve silinemez',
- 'role_registration_default_cannot_delete' => 'Bu rol varsayılan yönetici rolü olarak atandığı için silinemez ',
- 'role_cannot_remove_only_admin' => 'Bu kullanıcı yönetici rolü olan tek kullanıcı olduğu için silinemez. Bu kullanıcıyı silmek için önce başka bir kullanıcıya yönetici rolü atayın.',
+ 'role_system_cannot_be_deleted' => 'Bu rol, bir sistem rolüdür ve silinemez',
+ 'role_registration_default_cannot_delete' => 'Bu rol, kaydolan üyelere varsayılan olarak atandığı için silinemez',
+ 'role_cannot_remove_only_admin' => 'Bu kullanıcı, yönetici rolü olan tek kullanıcı olduğu için silinemez. Bu kullanıcıyı silmek için önce başka bir kullanıcıya yönetici rolü atayın.',
// Comments
'comment_list' => 'Yorumlar yüklenirken bir hata oluştu.',
'cannot_add_comment_to_draft' => 'Taslaklara yorum ekleyemezsiniz.',
'comment_add' => 'Yorum eklerken/güncellerken bir hata olıuştu.',
'comment_delete' => 'Yorum silinirken bir hata oluştu.',
- 'empty_comment' => 'Boş bir yorum eklenemez.',
+ 'empty_comment' => 'Boş bir yorum ekleyemezsiniz.',
// Error pages
'404_page_not_found' => 'Sayfa Bulunamadı',
'sorry_page_not_found' => 'Üzgünüz, aradığınız sayfa bulunamıyor.',
- 'return_home' => 'Anasayfaya dön',
+ 'sorry_page_not_found_permission_warning' => 'Bu sayfanın var olduğunu düşünüyorsanız, görüntüleme iznine sahip olmayabilirsiniz.',
+ 'return_home' => 'Ana sayfaya dön',
'error_occurred' => 'Bir Hata Oluştu',
- 'app_down' => ':appName şu anda inaktif',
- 'back_soon' => 'En kısa zamanda aktif hale gelecek.',
+ 'app_down' => ':appName şu anda erişilemez durumda',
+ 'back_soon' => 'En kısa sürede tekrar erişilebilir duruma gelecektir.',
// API errors
- 'api_no_authorization_found' => 'No authorization token found on the request',
- 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
- 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
- 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
- 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
- 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_no_authorization_found' => 'Yapılan istekte, yetkilendirme anahtarı bulunamadı',
+ 'api_bad_authorization_format' => 'Yapılan istekte bir yetkilendirme anahtarı bulundu fakat doğru görünmüyor',
+ 'api_user_token_not_found' => 'Sağlanan yetkilendirme anahtarı ile eşleşen bir API anahtarı bulunamadı',
+ 'api_incorrect_token_secret' => 'Kullanılan API için sağlanan gizli anahtar doğru değil',
+ 'api_user_no_api_permission' => 'Kullanılan API anahtarının sahibi API çağrısı yapmak için izne sahip değil',
+ 'api_user_token_expired' => 'Kullanılan yetkilendirme anahtarının süresi doldu',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Test e-postası gönderilirken bir hata meydana geldi:',
];
*/
return [
- 'password' => 'Parolanız en az 6 karakterden oluşmalı ve doğrulama parolası ile eşleşmelidir. ',
- 'user' => "Bu e-mail adresi ile ilişkilendirilmiş bir kullanıcı bulamadık.",
- 'token' => 'Parola yenileme tokeni geçerli değil.',
- 'sent' => 'Parola sıfırlanma bağlantısını e-mail adresinize gönderdik!',
- 'reset' => 'Parolanız sıfırlandı!',
+ 'password' => 'Şifreniz en az 6 karakterden oluşmalı ve her iki şifre de birbiri ile eşleşmelidir.',
+ 'user' => "Bu e-posta adresine sahip bir kullanıcı bulamadık.",
+ 'token' => 'Şifre sıfırlama anahtarı, bu e-posta adresi için geçersizdir.',
+ 'sent' => 'Şifre sıfırlama bağlantısını e-posta adresinize gönderdik!',
+ 'reset' => 'Şifreniz sıfırlandı!',
];
// Common Messages
'settings' => 'Ayarlar',
'settings_save' => 'Ayarları Kaydet',
- 'settings_save_success' => 'Ayarlar Kaydedildi',
+ 'settings_save_success' => 'Ayarlar kaydedildi',
// App Settings
'app_customization' => 'Özelleştirme',
'app_features_security' => 'Özellikler & Güvenlik',
'app_name' => 'Uygulama Adı',
- 'app_name_desc' => 'Bu isim başlıkta ve sistem tarafında gönderilen tüm mesajlarda gösterilecektir.',
+ 'app_name_desc' => 'Bu isim, başlıkta ve sistem tarafından gönderilen bütün e-postalarda gösterilecektir.',
'app_name_header' => 'İsmi başlıkta göster',
'app_public_access' => 'Açık Erişim',
- 'app_public_access_desc' => 'Bu özelliği aktif etmek giriş yapmamış misafir kullanıcıların sizin BookStack uygulamanıza erişmesini sağlar',
- 'app_public_access_desc_guest' => 'Kayıtlı olmayan kullanıcılar için erişim yetkisi "Guest" kullanıcısı üzerinden düzenlenebilir.',
+ 'app_public_access_desc' => 'Bu özelliği aktifleştirmek, giriş yapmamış misafir kullanıcıların BookStack uygulamanıza erişimini sağlar.',
+ 'app_public_access_desc_guest' => 'Kayıtlı olmayan kullanıcılar için erişim yetkileri, "Guest" kullanıcısı üzerinden kontrol edilebilir.',
'app_public_access_toggle' => 'Açık erişime izin ver',
- 'app_public_viewing' => 'Herkese açık görüntülenmeye izin verilsin mi?',
- 'app_secure_images' => 'Daha Yüksek Güvenlikli Görsel Yüklemeleri',
- 'app_secure_images_toggle' => 'Daha yüksek güveblikli görsel yüklemelerine izin ver',
- 'app_secure_images_desc' => 'Performans sebepleri nedeniyle bütün görseller halka açık. Bu opsiyon rastgele ve tahmin edilmesi zor dizileri görsel linklerinin önüne ekler. Dizin indexlerinin kapalı olduğundan emin olun.',
- 'app_editor' => 'Sayfa Editörü',
- 'app_editor_desc' => 'Sayfa düzenlemesi yapılırken hangi editörün kullanılacağını seçin.',
- 'app_custom_html' => 'Özel HTML Head İçeriği',
- 'app_custom_html_desc' => 'Buraya eklenecek olan içerik <head> taginin en sonuna eklenecektir. Bu stilleri override ederken veya analytics eklerken faydalı bir kullanım şeklidir.',
- 'app_custom_html_disabled_notice' => 'Yapılan hatalı değişikliklerin geriye alınabilmesi için bu sayfada özel HTML head içeriği kapalı.',
+ 'app_public_viewing' => 'Herkese açık görüntülemeye izin verilsin mi?',
+ 'app_secure_images' => 'Daha Güvenli Görsel Yüklemeleri',
+ 'app_secure_images_toggle' => 'Daha güvenli görsel yüklemelerini aktifleştir',
+ 'app_secure_images_desc' => 'Bütün görseller, performans sebepleri nedeniyle herkes tarafından görüntülenebilir durumdadır. Bu seçeneği aktif ederseniz; görsel bağlantılarının önüne rastgele, tahmini zor karakterler eklenmesini sağlarsınız. Kolay erişimin önlenmesi için dizin indekslerinin kapalı olduğundan emin olun.',
+ 'app_editor' => 'Sayfa Düzenleyicisi',
+ 'app_editor_desc' => 'Sayfa düzenlemesi yapılırken, bütün kullanıcılar tarafından hangi düzenleyicinin kullanılacağını seçin.',
+ 'app_custom_html' => 'Özel HTML "Head" İçeriği',
+ 'app_custom_html_desc' => 'Buraya yazacağınız içerik, <head> etiketinin içine ve en sonuna eklenecektir. Bu işlem, stil değişikliklerinin uygulanmasında ya da analytics kodlarının eklenmesinde yararlı olmaktadır.',
+ 'app_custom_html_disabled_notice' => 'Olası hatalı değişikliklerin geriye alınabilmesi için bu sayfanın özelleştirilmiş HTML "head" içeriği devre dışı bırakıldı.',
'app_logo' => 'Uygulama Logosu',
- 'app_logo_desc' => 'Bu görsel 43px yüksekliğinde olmalı. <br>Büyük görseller ölçeklenecektir.',
+ 'app_logo_desc' => 'Bu görsel 43px yüksekliğinde olmalıdır. <br>Daha büyük görseller otomatik olarak küçültülecektir.',
'app_primary_color' => 'Uygulamanın Birincil Rengi',
- 'app_primary_color_desc' => 'Bu bir hex değeri olmalıdır. <br>Varsayılan rengi seçmek için boş bırakın.',
- 'app_homepage' => 'Uygulama Anasayfası',
- 'app_homepage_desc' => 'Anasayfada görünmesi için bir view seçin. Sayfa izinleri seçili sayfalar için yok sayılacaktır.',
- 'app_homepage_select' => 'Sayfa seçiniz',
- 'app_disable_comments' => 'Yorumları Engelle',
- 'app_disable_comments_toggle' => 'Yorumları engelle',
- 'app_disable_comments_desc' => 'Yorumları uygulamadaki bütün sayfalar için engelle. <br> Mevcut yorumlar gösterilmeyecektir.',
+ 'app_primary_color_desc' => 'Başlık, butonlar ve bağlantılar da dahil olmak üzere uygulama için ana rengi ayarlar.',
+ 'app_homepage' => 'Ana Sayfa',
+ 'app_homepage_desc' => 'Varsayılan görünüm yerine ana sayfada görünmesi için bir görünüm seçin. Sayfa izinleri, burada seçeceğiniz sayfalar için yok sayılacaktır.',
+ 'app_homepage_select' => 'Bir sayfa seçin',
+ 'app_disable_comments' => 'Yorumları Devre Dışı Bırak',
+ 'app_disable_comments_toggle' => 'Yorumları devre dışı bırak',
+ 'app_disable_comments_desc' => 'Bütün sayfalar için yorumları devre dışı bırakır. <br> Mevcut yorumlar gösterilmeyecektir.',
// Color settings
'content_colors' => 'İçerik Renkleri',
- 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'content_colors_desc' => 'Sayfa hiyerarşisinde bulunan bütün elemanlar için renkleri ayarlar. Bu renkleri varsayılan renklerin parlaklığına yakın bir parlaklıkta seçmeniz, okunurluğun iyileştirilmesi açısından önerilir.',
'bookshelf_color' => 'Raf Rengi',
'book_color' => 'Kitap Rengi',
- 'chapter_color' => 'Kısım Rengi',
+ 'chapter_color' => 'Bölüm Rengi',
'page_color' => 'Sayfa Rengi',
'page_draft_color' => 'Sayfa Taslağı Rengi',
// Registration Settings
- 'reg_settings' => 'Kayıt',
- 'reg_enable' => 'Kaydolmaya İzin Ver',
- 'reg_enable_toggle' => 'Kaydolmaya izin ver',
- 'reg_enable_desc' => 'Kayıt olmaya izin verdiğinizde kullanıcılar kendilerini uygulamaya kaydedebilecekler. Kayıt olduktan sonra kendilerine varsayılan kullanıcı rolü atanacaktır.',
- 'reg_default_role' => 'Kayıt olduktan sonra varsayılan kullanıcı rolü',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
- 'reg_email_confirmation' => 'Email Doğrulama',
- 'reg_email_confirmation_toggle' => 'E-mail onayı gerektir',
- 'reg_confirm_email_desc' => 'Eğer domain kısıtlaması kullanılıyorsa o zaman email doğrulaması gereklidir ve bu seçenek yok sayılacaktır.',
- 'reg_confirm_restrict_domain' => 'Domain Kısıtlaması',
- 'reg_confirm_restrict_domain_desc' => 'Kısıtlamak istediğiniz email domainlerini vigül ile ayırarak yazınız. Kullanıcılara uygulamaya erişmeden önce adreslerini doğrulamak için bir mail gönderilecektir. <br> Kullanıcılar başarıyla kaydolduktan sonra email adreslerini değiştiremeyeceklerdir.',
+ 'reg_settings' => 'Kayıt İşlemleri',
+ 'reg_enable' => 'Kayıtları Aktifleştir',
+ 'reg_enable_toggle' => 'Kayıtları aktifleştir',
+ 'reg_enable_desc' => 'Kullanıcılar kaydolduktan sonra sizin belirleyeceğiniz bir role otomatik olarak atanabilirler.',
+ 'reg_default_role' => 'Kayıttan sonraki varsayılan kullanıcı rolü',
+ 'reg_enable_external_warning' => 'Harici LDAP veya SAML kimlik doğrulaması etkinken yukarıdaki seçenek yok sayılır. Mevcut harici üyelere yönelik kimlik doğrulama başarılı olursa, mevcut olmayan üyelerin kullanıcı hesapları otomatik olarak oluşturulur.',
+ 'reg_email_confirmation' => 'E-posta Doğrulaması',
+ 'reg_email_confirmation_toggle' => 'E-posta doğrulamasını zorunlu kıl',
+ 'reg_confirm_email_desc' => 'Eğer alan adı kısıtlaması kullanılıyorsa, bu seçenek yok sayılarak e-posta doğrulaması zorunlu kılınacaktır.',
+ 'reg_confirm_restrict_domain' => 'Alan Adı Kısıtlaması',
+ 'reg_confirm_restrict_domain_desc' => 'Kısıtlamak istediğiniz e-posta alan adlarını vigül ile ayırarak yazınız. Kullanıcılara, uygulamaya erişmeden önce adreslerini doğrulamaları için bir e-posta gönderilecektir. <br> Başarılı bir kayıt işleminden sonra kullanıcıların e-posta adreslerini değiştirebileceklerini unutmayın.',
'reg_confirm_restrict_domain_placeholder' => 'Hiçbir kısıtlama tanımlanmamış',
// Maintenance settings
'maint' => 'Bakım',
- 'maint_image_cleanup' => 'Görsel Temizliği',
- 'maint_image_cleanup_desc' => "Sayfaları ve revizyon içeriklerini tarayarak hangi gösel ve çizimlerin kullanımda olduğunu ve hangilerinin gereksiz olduğunu tespit eder. Bunu başlatmadan veritabanı ve görsellerin tam bir yedeğinin alındığından emin olun.",
+ 'maint_image_cleanup' => 'Görselleri Temizle',
+ 'maint_image_cleanup_desc' => "Sayfaları ve revizyon içeriklerini tarayarak hangi görsellerin ve çizimlerin kullanımda olduğunu ve hangilerinin gereksiz olduğunu tespit eder. Bunu başlatmadan önce veritabanının ve görsellerin tam bir yedeğinin alındığından emin olun.",
'maint_image_cleanup_ignore_revisions' => 'Revizyonlardaki görselleri yoksay',
'maint_image_cleanup_run' => 'Temizliği Başlat',
- 'maint_image_cleanup_warning' => ':count potansiyel kullanılmayan görsel bulundu. Bu görselleri silmek istediğinizden emin misiniz?',
- 'maint_image_cleanup_success' => ':count potanisyel kullanılmayan görsel bulundu ve silindi!',
- 'maint_image_cleanup_nothing_found' => 'Kullanılmayan görsel bulunamadı ve birşey silinmedi!',
- 'maint_send_test_email' => 'Test E-Postası Gönder',
- 'maint_send_test_email_desc' => 'Bu profilinizde girdiğiniz e-posta adresine bir test e-postası gönderir.',
- 'maint_send_test_email_run' => 'Test E-Postasını gönder',
- 'maint_send_test_email_success' => 'E-Posta :address adresine gönderildi',
- 'maint_send_test_email_mail_subject' => 'Test e-postası',
- 'maint_send_test_email_mail_greeting' => 'E-Posta gönderimi başarılı!',
+ 'maint_image_cleanup_warning' => 'Muhtemelen kullanılmayan :count adet görsel bulundu. Bu görselleri silmek istediğinize emin misiniz?',
+ 'maint_image_cleanup_success' => 'Muhtemelen kullanılmayan :count adet görsel bulundu ve silindi!',
+ 'maint_image_cleanup_nothing_found' => 'Kullanılmayan görsel bulunamadığından hiçbir şey silinmedi!',
+ 'maint_send_test_email' => 'Deneme E-postası Gönder',
+ 'maint_send_test_email_desc' => 'Bu işlem, profilinize tanımladığınız e-posta adresine bir deneme e-postası gönderir.',
+ 'maint_send_test_email_run' => 'Deneme e-postasını gönder',
+ 'maint_send_test_email_success' => 'E-posta, :address adresine gönderildi',
+ 'maint_send_test_email_mail_subject' => 'Deneme E-postası',
+ 'maint_send_test_email_mail_greeting' => 'E-posta iletimi çalışıyor gibi görünüyor!',
'maint_send_test_email_mail_text' => 'Tebrikler! Eğer bu e-posta bildirimini alıyorsanız, e-posta ayarlarınız doğru bir şekilde ayarlanmış demektir.',
// Role Settings
'roles' => 'Roller',
'role_user_roles' => 'Kullanıcı Rolleri',
'role_create' => 'Yeni Rol Oluştur',
- 'role_create_success' => 'Rol Başarıyla Oluşturuldu',
+ 'role_create_success' => 'Rol, başarıyla oluşturuldu',
'role_delete' => 'Rolü Sil',
- 'role_delete_confirm' => 'Bu işlem \':roleName\' rolünü silecektir.',
- 'role_delete_users_assigned' => 'Bu role atanmış :userCount adet kullanıcı var. Eğer bu kullanıcıların rollerini değiştirmek istiyorsanız aşağıdan yeni bir rol seçin.',
+ 'role_delete_confirm' => 'Bu işlem, \':roleName\' adlı rolü silecektir.',
+ 'role_delete_users_assigned' => 'Bu role atanmış :userCount adet kullanıcı var. Eğer bu kullanıcıların rollerini değiştirmek istiyorsanız, aşağıdan yeni bir rol seçin.',
'role_delete_no_migration' => "Kullanıcıları taşıma",
- 'role_delete_sure' => 'Bu rolü silmek istediğinizden emin misiniz?',
+ 'role_delete_sure' => 'Bu rolü silmek istediğinize emin misiniz?',
'role_delete_success' => 'Rol başarıyla silindi',
'role_edit' => 'Rolü Düzenle',
'role_details' => 'Rol Detayları',
'role_name' => 'Rol Adı',
'role_desc' => 'Rolün Kısa Tanımı',
- 'role_external_auth_id' => 'Harici Authentication ID\'leri',
+ 'role_external_auth_id' => 'Harici Doğrulama Kimlikleri',
'role_system' => 'Sistem Yetkileri',
'role_manage_users' => 'Kullanıcıları yönet',
'role_manage_roles' => 'Rolleri ve rol izinlerini yönet',
'role_manage_entity_permissions' => 'Bütün kitap, bölüm ve sayfa izinlerini yönet',
- 'role_manage_own_entity_permissions' => 'Sahip olunan kitap, bölüm ve sayfaların izinlerini yönet',
+ 'role_manage_own_entity_permissions' => 'Kendine ait kitabın, bölümün ve sayfaların izinlerini yönet',
'role_manage_page_templates' => 'Sayfa şablonlarını yönet',
- 'role_access_api' => 'Access system API',
+ 'role_access_api' => 'Sistem programlama arayüzüne (API) eriş',
'role_manage_settings' => 'Uygulama ayarlarını yönet',
- 'role_asset' => 'Asset Yetkileri',
- 'role_asset_desc' => 'Bu izinleri assetlere sistem içinden varsayılan erişimi kontrol eder. Kitaplar, bölümler ve sayfaların izinleri bu izinleri override eder.',
- 'role_asset_admins' => 'Yöneticilere otomatik olarak bütün içeriğe erişim yetkisi verilir fakat bu opsiyonlar UI özelliklerini gösterir veya gizler.',
+ 'role_asset' => 'Varlık Yetkileri',
+ 'role_asset_desc' => 'Bu izinler, sistem içindeki varlıklara varsayılan erişim izinlerini ayarlar. Kitaplar, bölümler ve sayfalar üzerindeki izinler, buradaki izinleri geçersiz kılar.',
+ 'role_asset_admins' => 'Yöneticilere otomatik olarak bütün içeriğe erişim yetkisi verilir ancak bu seçenekler, kullanıcı arayüzündeki bazı seçeneklerin gösterilmesine veya gizlenmesine neden olabilir.',
'role_all' => 'Hepsi',
- 'role_own' => 'Sahip Olunan',
- 'role_controlled_by_asset' => 'Yükledikleri asset tarafından kontrol ediliyor',
+ 'role_own' => 'Kendine Ait',
+ 'role_controlled_by_asset' => 'Yüklendikleri varlık tarafından kontrol ediliyor',
'role_save' => 'Rolü Kaydet',
'role_update_success' => 'Rol başarıyla güncellendi',
'role_users' => 'Bu roldeki kullanıcılar',
'users' => 'Kullanıcılar',
'user_profile' => 'Kullanıcı Profili',
'users_add_new' => 'Yeni Kullanıcı Ekle',
- 'users_search' => 'Kullanıcıları Ara',
+ 'users_search' => 'Kullanıcı Ara',
'users_details' => 'Kullanıcı Detayları',
- 'users_details_desc' => 'Bu kullanıcı için gösterilecek bir isim ve mail adresi belirleyin. Bu e-mail adresi kullanıcı tarafından giriş yaparken kullanılacak.',
+ 'users_details_desc' => 'Bu kullanıcı için gösterilecek bir isim ve e-posta adresi belirleyin. Buraya yazacağınız e-posta adresi, uygulamaya giriş yaparken kullanılacaktır.',
'users_details_desc_no_email' => 'Diğer kullanıcılar tarafından tanınabilmesi için bir isim belirleyin.',
'users_role' => 'Kullanıcı Rolleri',
- 'users_role_desc' => 'Bu kullanıcının hangi rollere atanabileceğini belirleyin. Eğer bir kullanıcıya birden fazla rol atanırsa, kullanıcı bütün rollerin özelliklerini kullanabilir.',
- 'users_password' => 'Kullanıcı Parolası',
- 'users_password_desc' => 'Kullanıcının giriş yaparken kullanacağı bir parola belirleyin. Parola en az 5 karakter olmalıdır.',
- 'users_send_invite_text' => 'Bu kullanıcıya parolasını sıfırlayabilmesi için bir e-posta gönder veya şifresini sen belirle.',
- 'users_send_invite_option' => 'Kullanıcıya davet e-postası gönder',
- 'users_external_auth_id' => 'Harici Authentication ID\'si',
- 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
- 'users_password_warning' => 'Sadece parolanızı değiştirmek istiyorsanız aşağıyı doldurunuz.',
- 'users_system_public' => 'Bu kullanıcı sizin uygulamanızı ziyaret eden bütün misafir kullanıcıları temsil eder. Giriş yapmak için kullanılamaz, otomatik olarak atanır.',
- 'users_delete' => 'Kullanıcı Sil',
+ 'users_role_desc' => 'Bu kullanıcının hangi rollere atanacağını belirleyin. Birden fazla role sahip kullanıcılar, atandığı bütün rollerin yetkilerine sahip olurlar.',
+ 'users_password' => 'Kullanıcı Şifresi',
+ 'users_password_desc' => 'Kullanıcının giriş yaparken kullanacağı bir şifre belirleyin. Şifre en az 6 karakterden oluşmalıdır.',
+ 'users_send_invite_text' => 'Bu kullanıcıya kendi şifresini belirleyebilmesi için bir davetiye e-postası gönderebilir ya da kullanıcının şifresini kendiniz belirleyebilirsiniz.',
+ 'users_send_invite_option' => 'Kullanıcıya davetiye e-postası gönder',
+ 'users_external_auth_id' => 'Harici Doğrulama Kimliği',
+ 'users_external_auth_id_desc' => 'Bu kimlik numarası (ID), harici kimlik doğrulama sisteminizle iletişim kurarken bu kullanıcıyla eşleştirmek için kullanılır.',
+ 'users_password_warning' => 'Şifrenizi değiştirmek istiyorsanız, aşağıdaki formu doldurunuz.',
+ 'users_system_public' => 'Bu kullanıcı, uygulamanızı ziyaret eden bütün misafir kullanıcıları temsil eder. Giriş yapmak için kullanılamaz ancak otomatik olarak atanır.',
+ 'users_delete' => 'Kullanıcıyı Sil',
'users_delete_named' => ':userName kullanıcısını sil ',
'users_delete_warning' => 'Bu işlem \':userName\' kullanıcısını sistemden tamamen silecektir.',
'users_delete_confirm' => 'Bu kullanıcıyı tamamen silmek istediğinize emin misiniz?',
'users_delete_success' => 'Kullanıcılar başarıyla silindi.',
- 'users_edit' => 'Kullanıcıyı Güncelle',
+ 'users_edit' => 'Kullanıcıyı Düzenle',
'users_edit_profile' => 'Profili Düzenle',
'users_edit_success' => 'Kullanıcı başarıyla güncellendi',
- 'users_avatar' => 'Kullanıcı Avatarı',
- 'users_avatar_desc' => 'Bu kullanıcıyı temsil eden bir görsel seçin. Yaklaşık 256px kare olmalıdır.',
+ 'users_avatar' => 'Avatar',
+ 'users_avatar_desc' => 'Bu kullanıcıyı temsil eden bir görsel seçin. Bu görsel yaklaşık 256px boyutunda bir kare olmalıdır.',
'users_preferred_language' => 'Tercih Edilen Dil',
- 'users_preferred_language_desc' => 'Bu seçenek kullanıcı arayüzünün dilini değiştirecektir. Herhangi bir kullanıcı içeriğini etkilemeyecektir.',
+ 'users_preferred_language_desc' => 'Bu seçenek, kullanıcı arayüzünün dilini değiştirmek için kullanılır. Burada yapılan değişiklik herhangi bir kullanıcı tarafından oluşturulmuş içeriği etkilemeyecektir.',
'users_social_accounts' => 'Sosyal Hesaplar',
- 'users_social_accounts_info' => 'Burada diğer hesaplarınızı ekleyerek daha hızlı ve kolay giriş sağlayabilirsiniz. Bir hesabın bağlantısını kesmek daha önce edilnilen erişiminizi kaldırmaz. Profil ayarlarınızdan bağlı sosyal hesabınızın erişimini kaldırınız.',
- 'users_social_connect' => 'Hesap Bağla',
+ 'users_social_accounts_info' => 'Buraya diğer hesaplarınızı ekleyerek, uygulamaya daha hızlı ve kolay bir giriş sağlayabilirsiniz. Bir hesabın bağlantısını kesmek daha önce sahip olduğunuz erişimi kaldırmaz. Bağlı sosyal hesabınızın erişimini, profil ayarlarınızdan kaldırabilirsiniz.',
+ 'users_social_connect' => 'Hesabı Bağla',
'users_social_disconnect' => 'Hesabın Bağlantısını Kes',
- 'users_social_connected' => ':socialAccount hesabı profilinize başarıyla bağlandı.',
+ 'users_social_connected' => ':socialAccount hesabı, profilinize başarıyla bağlandı.',
'users_social_disconnected' => ':socialAccount hesabınızın profilinizle ilişiği başarıyla kesildi.',
- 'users_api_tokens' => 'API Tokens',
- 'users_api_tokens_none' => 'No API tokens have been created for this user',
- 'users_api_tokens_create' => 'Create Token',
- 'users_api_tokens_expires' => 'Expires',
- 'users_api_tokens_docs' => 'API Documentation',
+ 'users_api_tokens' => 'API Anahtarları',
+ 'users_api_tokens_none' => 'Bu kullanıcı için oluşturulmuş herhangi bir API anahtarı bulunamadı',
+ 'users_api_tokens_create' => 'Anahtar Oluştur',
+ 'users_api_tokens_expires' => 'Bitiş süresi',
+ 'users_api_tokens_docs' => 'API Dokümantasyonu',
// API Tokens
- 'user_api_token_create' => 'Create API Token',
- 'user_api_token_name' => 'Name',
- 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
- 'user_api_token_expiry' => 'Expiry Date',
- 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
- 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
- 'user_api_token_create_success' => 'API token successfully created',
- 'user_api_token_update_success' => 'API token successfully updated',
- 'user_api_token' => 'API Token',
- 'user_api_token_id' => 'Token ID',
- 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
- 'user_api_token_secret' => 'Token Secret',
- 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
- 'user_api_token_created' => 'Token Created :timeAgo',
- 'user_api_token_updated' => 'Token Updated :timeAgo',
- 'user_api_token_delete' => 'Delete Token',
- 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
- 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
- 'user_api_token_delete_success' => 'API token successfully deleted',
+ 'user_api_token_create' => 'API Anahtarı Oluştur',
+ 'user_api_token_name' => 'İsim',
+ 'user_api_token_name_desc' => 'Anahtarınıza gelecekte ne amaçla kullanıldığını hatırlatması açısından anlamlı bir isim veriniz.',
+ 'user_api_token_expiry' => 'Bitiş Tarihi',
+ 'user_api_token_expiry_desc' => 'Bu anahtarın süresinin dolduğu bir tarih belirleyin. Bu tarihten sonra, bu anahtar kullanılarak yapılan istekler artık çalışmaz. Bu alanı boş bırakmak, bitiş tarihini 100 yıl sonrası yapar.',
+ 'user_api_token_create_secret_message' => 'Bu anahtar oluşturulduktan hemen sonra bir "ID Anahtarı" ve "Gizli Anahtar" üretilip görüntülenecektir. Gizli anahtar sadece bir defa gösterilecektir, bu yüzden devam etmeden önce bu değeri güvenli bir yere kopyaladığınızdan emin olun.',
+ 'user_api_token_create_success' => 'API anahtarı başarıyla oluşturuldu',
+ 'user_api_token_update_success' => 'API anahtarı başarıyla güncellendi',
+ 'user_api_token' => 'API Erişim Anahtarı',
+ 'user_api_token_id' => 'Anahtar ID',
+ 'user_api_token_id_desc' => 'Bu, API isteklerini karşılamak için sistem tarafından oluşturulmuş ve sonradan düzenlenemeyen bir tanımlayıcıdır.',
+ 'user_api_token_secret' => 'Gizli Anahtar',
+ 'user_api_token_secret_desc' => 'Bu, API isteklerinde sağlanması gereken anahtar için sistem tarafından oluşturulan bir gizli anahtardır. Bu anahtar sadece bir defa görüntülenecektir, bu nedenle bu değeri güvenli bir yere kopyalayın.',
+ 'user_api_token_created' => 'Anahtar :timeAgo Oluşturuldu',
+ 'user_api_token_updated' => 'Anahtar :timeAgo Güncellendi',
+ 'user_api_token_delete' => 'Anahtarı Sil',
+ 'user_api_token_delete_warning' => 'Bu işlem \':tokenName\' adındaki API anahtarını sistemden tamamen silecektir.',
+ 'user_api_token_delete_confirm' => 'Bu API anahtarını silmek istediğinize emin misiniz?',
+ 'user_api_token_delete_success' => 'API anahtarı başarıyla silindi',
//! If editing translations files directly please ignore this in all
//! languages apart from en. Content will be auto-copied from en.
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
- 'da' => 'Dansk',
+ 'cs' => 'Česky',
+ 'da' => 'Danca',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'İbranice',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovence',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
// Standard laravel validation lines
'accepted' => ':attribute kabul edilmelidir.',
- 'active_url' => ':attribute geçerli bir URL adresi değildir.',
- 'after' => ':attribute :date tarihinden sonra bir tarih olmalıdır.',
+ 'active_url' => ':attribute, geçerli bir URL adresi değildir.',
+ 'after' => ':attribute tarihi, :date tarihinden sonraki bir tarih olmalıdır.',
'alpha' => ':attribute sadece harflerden oluşabilir.',
'alpha_dash' => ':attribute sadece harf, rakam ve tirelerden oluşabilir.',
- 'alpha_num' => ':attribute sadece harf ve rakam oluşabilir.',
- 'array' => ':attribute array olmalıdır..',
- 'before' => ':attribute :date tarihinden önce bir tarih olmalıdır.',
+ 'alpha_num' => ':attribute sadece harflerden ve rakamlardan oluşabilir.',
+ 'array' => ':attribute bir dizi olmalıdır.',
+ 'before' => ':attribute tarihi, :date tarihinden önceki bir tarih olmalıdır.',
'between' => [
- 'numeric' => ':attribute, :min ve :max değerleri arasında olmalıdır.',
+ 'numeric' => ':attribute değeri, :min ve :max değerleri arasında olmalıdır.',
'file' => ':attribute, :min ve :max kilobyte boyutları arasında olmalıdır.',
'string' => ':attribute, :min ve :max karakter arasında olmalıdır.',
- 'array' => ':attribute :min ve :max öge arasında olmalıdır.',
+ 'array' => ':attribute, :min ve :max öge arasında olmalıdır.',
],
- 'boolean' => ':attribute true veya false olmalıdır.',
+ 'boolean' => ':attribute değeri true veya false olmalıdır.',
'confirmed' => ':attribute doğrulaması eşleşmiyor.',
'date' => ':attribute geçerli bir tarih değil.',
- 'date_format' => ':attribute formatı :format\'ına uymuyor.',
- 'different' => ':attribute be :other birbirinden farklı olmalıdır.',
- 'digits' => ':attribute :digits basamaklı olmalıdır.',
- 'digits_between' => ':attribute :min ve :max basamaklı olmalıdır.',
- 'email' => ':attribute geçerli bir e-mail adresi olmalıdır.',
- 'ends_with' => ':attribute şunlardan biriyle bitmelidir: :values',
- 'filled' => ':attribute gerekli bir alandır.',
+ 'date_format' => ':attribute formatı, :format formatına uymuyor.',
+ 'different' => ':attribute ve :other birbirinden farklı olmalıdır.',
+ 'digits' => ':attribute, :digits basamaklı olmalıdır.',
+ 'digits_between' => ':attribute, en az :min ve en fazla :max basamaklı olmalıdır.',
+ 'email' => ':attribute, geçerli bir e-posta adresi olmalıdır.',
+ 'ends_with' => ':attribute, şunlardan birisiyle bitmelidir: :values',
+ 'filled' => ':attribute alanı zorunludur.',
'gt' => [
- 'numeric' => ':attribute :max değerinden büyük olmalı.',
- 'file' => ':attribute değeri :value kilobayt değerinden büyük olmalıdır.',
- 'string' => ':attribute değeri :value karakter değerinden büyük olmalıdır.',
- 'array' => ':attribute, :value öğeden daha fazlasına sahip olamaz.',
+ 'numeric' => ':attribute, :max değerinden büyük olmalıdır.',
+ 'file' => ':attribute, :value kilobayttan büyük olmalıdır.',
+ 'string' => ':attribute, :value karakterden fazla olmalıdır.',
+ 'array' => ':attribute, :value ögeden daha fazla öge içermelidir.',
],
'gte' => [
- 'numeric' => ':attribute, :value değerinden büyük veya eşit olmalı.',
- 'file' => ':attribute, :value kilobayttan eşit ya da büyük olmalı.',
- 'string' => ':attribute, :value kilobayttan eşit ya da büyük olmalı.',
- 'array' => ':attribute, :value veya daha fazla maddeye sahip olmalıdır.',
+ 'numeric' => ':attribute, :value değerinden büyük veya bu değere eşit olmalıdır.',
+ 'file' => ':attribute, en az :value kilobayt olmalıdır.',
+ 'string' => ':attribute, en az :value karakter içermelidir.',
+ 'array' => ':attribute, en az :value öge içermelidir.',
],
- 'exists' => 'Seçilen :attribute geçerli bir alan değildir.',
- 'image' => ':attribute bir görsel olmalıdır.',
- 'image_extension' => ':attribute geçerli ve desteklenen bir görsel uzantısı değildir.',
- 'in' => 'Seçilen :attribute geçerli değildir.',
- 'integer' => ':attribute bir integer değeri olmalıdır.',
- 'ip' => ':attribute geçerli bir IP adresi olmalıdır.',
- 'ipv4' => ': Özniteliği geçerli bir IPv4 adresi olmalıdır.',
- 'ipv6' => ':attribute geçerli bir IPv6 adresi olmalıdır.',
- 'json' => ':attribute geçerli bir JSON dizini olmalı.',
+ 'exists' => 'Seçilen :attribute geçersiz.',
+ 'image' => ':attribute, bir görsel olmalıdır.',
+ 'image_extension' => ':attribute, geçerli ve desteklenen bir görsel uzantısına sahip olmalıdır.',
+ 'in' => 'Seçilen :attribute geçersizdir.',
+ 'integer' => ':attribute, bir tam sayı olmalıdır.',
+ 'ip' => ':attribute, geçerli bir IP adresi olmalıdır.',
+ 'ipv4' => ':attribute, geçerli bir IPv4 adresi olmalıdır.',
+ 'ipv6' => ':attribute, geçerli bir IPv6 adresi olmalıdır.',
+ 'json' => ':attribute, geçerli bir JSON dizimi olmalıdır.',
'lt' => [
'numeric' => ':attribute, :value değerinden küçük olmalıdır.',
- 'file' => ':attribute, :value kilobayt boyutundan küçük olmalıdır.',
+ 'file' => ':attribute, :value kilobayttan küçük olmalıdır.',
'string' => ':attribute, :value karakterden küçük olmalıdır.',
- 'array' => ':attribute, :value öğeden az olmalıdır.',
+ 'array' => ':attribute, :value ögeden az olmalıdır.',
],
'lte' => [
- 'numeric' => ':attribute, :value değerinden küçük veya eşit olmalıdır.',
- 'file' => ':attribute, :value kilobayttan küçük ya da eşit olmalıdır.',
- 'string' => ':attribute, :value kilobayttan küçük ya da eşit olmalıdır.',
- 'array' => ':attribute, :value öğeden daha fazlasına sahip olamaz.',
+ 'numeric' => ':attribute, en fazla :value değerine eşit olmalıdır.',
+ 'file' => ':attribute, en fazla :value kilobayt olmalıdır.',
+ 'string' => ':attribute, en fazla :value karakter içermelidir.',
+ 'array' => ':attribute, en fazla :value öge içermelidir.',
],
'max' => [
- 'numeric' => ':attribute, :max değerinden büyük olmamalıdır.',
- 'file' => ':attribute, :max kilobyte boyutundan büyük olmamalıdır.',
- 'string' => ':attribute, :max karakter boyutundan büyük olmamalıdır.',
- 'array' => ':attribute, en fazla :max öge içermelidir.',
+ 'numeric' => ':attribute, :max değerinden büyük olmayabilir.',
+ 'file' => ':attribute, :max kilobayttan büyük olmayabilir.',
+ 'string' => ':attribute, :max karakterden daha fazla karakter içermiyor olabilir.',
+ 'array' => ':attribute, :max ögeden daha fazla öge içermiyor olabilir.',
],
- 'mimes' => ':attribute :values dosya tipinde olmalıdır.',
+ 'mimes' => ':attribute, şu dosya tiplerinde olmalıdır: :values.',
'min' => [
'numeric' => ':attribute, :min değerinden az olmamalıdır.',
- 'file' => ':attribute, :min kilobyte boyutundan küçük olmamalıdır.',
- 'string' => ':attribute, :min karakter boyutundan küçük olmamalıdır.',
+ 'file' => ':attribute, :min kilobayttan küçük olmamalıdır.',
+ 'string' => ':attribute, en az :min karakter içermelidir.',
'array' => ':attribute, en az :min öge içermelidir.',
],
- 'no_double_extension' => ':attribute sadece tek bir dosya tipinde olmalıdır.',
- 'not_in' => 'Seçili :attribute geçerli değildir.',
- 'not_regex' => ':attribute formatı geçerli değildir.',
- 'numeric' => ':attribute rakam olmalıdır.',
- 'regex' => ':attribute formatı geçerli değildir.',
- 'required' => 'The :attribute field is required. :attribute alanı gereklidir.',
- 'required_if' => ':other alanı :value değerinde ise :attribute alanı gereklidir.',
- 'required_with' => 'Eğer :values değeri geçerli ise :attribute alanı gereklidir.',
- 'required_with_all' => 'Eğer :values değeri geçerli ise :attribute alanı gereklidir. ',
- 'required_without' => 'Eğer :values değeri geçerli değil ise :attribute alanı gereklidir.',
- 'required_without_all' => 'Eğer :values değerlerinden hiçbiri geçerli değil ise :attribute alanı gereklidir.',
+ 'no_double_extension' => ':attribute, sadece tek bir dosya tipinde olmalıdır.',
+ 'not_in' => 'Seçili :attribute geçersiz.',
+ 'not_regex' => ':attribute formatı geçersiz.',
+ 'numeric' => ':attribute, bir sayı olmalıdır.',
+ 'regex' => ':attribute formatı geçersiz.',
+ 'required' => ':attribute alanı zorunludur.',
+ 'required_if' => ':other alanının :value olması, :attribute alanını zorunlu kılar.',
+ 'required_with' => ':values değerinin mevcudiyeti, :attribute alanını zorunlu kılar.',
+ 'required_with_all' => ':values değerlerinin mevcudiyeti, :attribute alanını zorunlu kılar.',
+ 'required_without' => ':values değerinin bulunmuyor olması, :attribute alanını zorunlu kılar.',
+ 'required_without_all' => ':values değerlerinden hiçbirinin bulunmuyor olması, :attribute alanını zorunlu kılar.',
'same' => ':attribute ve :other eşleşmelidir.',
'size' => [
'numeric' => ':attribute, :size boyutunda olmalıdır.',
- 'file' => ':attribute, :size kilobyte boyutunda olmalıdır.',
+ 'file' => ':attribute, :size kilobayt olmalıdır.',
'string' => ':attribute, :size karakter uzunluğunda olmalıdır.',
'array' => ':attribute, :size sayıda öge içermelidir.',
],
- 'string' => ':attribute string olmalıdır.',
- 'timezone' => ':attribute geçerli bir alan olmalıdır.',
- 'unique' => ':attribute daha önce alınmış.',
- 'url' => ':attribute formatı geçerli değil.',
- 'uploaded' => 'Dosya yüklemesi başarısız oldu. Server bu boyutta dosyaları kabul etmiyor olabilir.',
+ 'string' => ':attribute, string olmalıdır.',
+ 'timezone' => ':attribute, geçerli bir bölge olmalıdır.',
+ 'unique' => ':attribute zaten alınmış.',
+ 'url' => ':attribute formatı geçersiz.',
+ 'uploaded' => 'Dosya yüklemesi başarısız oldu. Sunucu, bu boyuttaki dosyaları kabul etmiyor olabilir.',
// Custom validation lines
'custom' => [
'password-confirm' => [
- 'required_with' => 'Parola onayı gereklidir.',
+ 'required_with' => 'Şifre onayı zorunludur',
],
],
'reset_password' => 'Скинути пароль',
'reset_password_send_instructions' => 'Введіть адресу електронної пошти нижче, і вам буде надіслано електронне повідомлення з посиланням на зміну пароля.',
'reset_password_send_button' => 'Надіслати посилання для скидання пароля',
- 'reset_password_sent_success' => 'Посилання для скидання пароля було надіслано на :email.',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => 'Ваш пароль успішно скинуто.',
'email_reset_subject' => 'Скинути ваш пароль :appName',
'email_reset_text' => 'Ви отримали цей електронний лист, оскільки до нас надійшов запит на скидання пароля для вашого облікового запису.',
'profile_menu' => 'Меню профілю',
'view_profile' => 'Переглянути профіль',
'edit_profile' => 'Редагувати профіль',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => 'Інфо',
// Error pages
'404_page_not_found' => 'Сторінку не знайдено',
'sorry_page_not_found' => 'Вибачте, сторінку, яку ви шукали, не знайдено.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => 'Повернутися на головну',
'error_occurred' => 'Виникла помилка',
'app_down' => ':appName зараз недоступний',
'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
'api_user_token_expired' => 'The authorization token used has expired',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => 'Пароль повинен містити не менше восьми символів і збігатись з підтвердженням.',
'user' => "Ми не можемо знайти користувача з цією адресою електронної пошти.",
- 'token' => 'Цей токен для скидання пароля недійсний.',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => 'Ми надіслали Вам електронний лист із посиланням для скидання пароля!',
'reset' => 'Ваш пароль скинуто!',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
--- /dev/null
+<?php
+/**
+ * Activity text strings.
+ * Is used for all the text within activity logs & notifications.
+ */
+return [
+
+ // Pages
+ 'page_create' => 'đã tạo trang',
+ 'page_create_notification' => 'Trang đã được tạo thành công',
+ 'page_update' => 'đã cập nhật trang',
+ 'page_update_notification' => 'Trang đã được cập nhật thành công',
+ 'page_delete' => 'đã xóa trang',
+ 'page_delete_notification' => 'Trang đã được xóa thành công',
+ 'page_restore' => 'đã khôi phục trang',
+ 'page_restore_notification' => 'Trang đã được khôi phục thành công',
+ 'page_move' => 'đã di chuyển trang',
+
+ // Chapters
+ 'chapter_create' => 'đã tạo chương',
+ 'chapter_create_notification' => 'Chương đã được tạo thành công',
+ 'chapter_update' => 'đã cập nhật chương',
+ 'chapter_update_notification' => 'Chương đã được cập nhật thành công',
+ 'chapter_delete' => 'đã xóa chương',
+ 'chapter_delete_notification' => 'Chương đã được xóa thành công',
+ 'chapter_move' => 'đã di chuyển chương',
+
+ // Books
+ 'book_create' => 'đã tạo sách',
+ 'book_create_notification' => 'Sách đã được tạo thành công',
+ 'book_update' => 'đã cập nhật sách',
+ 'book_update_notification' => 'Sách đã được cập nhật thành công',
+ 'book_delete' => 'đã xóa sách',
+ 'book_delete_notification' => 'Sách đã được xóa thành công',
+ 'book_sort' => 'đã sắp xếp sách',
+ 'book_sort_notification' => 'Sách đã được sắp xếp lại thành công',
+
+ // Bookshelves
+ 'bookshelf_create' => 'đã tạo giá sách',
+ 'bookshelf_create_notification' => 'Giá sách đã được tạo thành công',
+ 'bookshelf_update' => 'cập nhật giá sách',
+ 'bookshelf_update_notification' => 'Giá sách đã tạo thành công',
+ 'bookshelf_delete' => 'đã xóa giá sách',
+ 'bookshelf_delete_notification' => 'Giá sách đã được xóa thành công',
+
+ // Other
+ 'commented_on' => 'đã bình luận về',
+];
--- /dev/null
+<?php
+/**
+ * Authentication Language Lines
+ * The following language lines are used during authentication for various
+ * messages that we need to display to the user.
+ */
+return [
+
+ 'failed' => 'Thông tin đăng nhập này không khớp với dữ liệu của chúng tôi.',
+ 'throttle' => 'Quá nhiều lần đăng nhập sai. Vui lòng thử lại sau :seconds giây.',
+
+ // Login & Register
+ 'sign_up' => 'Đăng ký',
+ 'log_in' => 'Đăng nhập',
+ 'log_in_with' => 'Đăng nhập với :socialDriver',
+ 'sign_up_with' => 'Đăng kí với :socialDriver',
+ 'logout' => 'Đăng xuất',
+
+ 'name' => 'Tên',
+ 'username' => 'Tên đăng nhập',
+ 'email' => 'Email',
+ 'password' => 'Mật khẩu',
+ 'password_confirm' => 'Xác nhận mật khẩu',
+ 'password_hint' => 'Cần tối thiểu 7 kí tự',
+ 'forgot_password' => 'Quên Mật khẩu?',
+ 'remember_me' => 'Ghi nhớ đăng nhập',
+ 'ldap_email_hint' => 'Vui lòng điền một địa chỉ email để sử dụng tài khoản này.',
+ 'create_account' => 'Tạo Tài khoản',
+ 'already_have_account' => 'Bạn đã có tài khoản?',
+ 'dont_have_account' => 'Bạn không có tài khoản?',
+ 'social_login' => 'Đăng nhập bằng MXH',
+ 'social_registration' => 'Đăng kí bằng MXH',
+ 'social_registration_text' => 'Đăng kí và đăng nhập bằng dịch vụ khác.',
+
+ 'register_thanks' => 'Cảm ơn bạn đã đăng ký!',
+ 'register_confirm' => 'Vui lòng kiểm tra email và bấm vào nút xác nhận để truy cập :appName.',
+ 'registrations_disabled' => 'Việc đăng kí đang bị tắt',
+ 'registration_email_domain_invalid' => 'Tên miền của email không có quyền truy cập tới ứng dụng này',
+ 'register_success' => 'Cảm ơn bạn đã đăng kí! Bạn đã được xác nhận và đăng nhập.',
+
+
+ // Password Reset
+ 'reset_password' => 'Đặt lại mật khẩu',
+ 'reset_password_send_instructions' => 'Nhập email vào ô dưới đây và bạn sẽ nhận được một email với liên kết để đặt lại mật khẩu.',
+ 'reset_password_send_button' => 'Gửi liên kết đặt lại mật khẩu',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Mật khẩu đã được đặt lại thành công.',
+ 'email_reset_subject' => 'Đặt lại mật khẩu của :appName',
+ 'email_reset_text' => 'Bạn nhận được email này bởi vì chúng tôi nhận được một yêu cầu đặt lại mật khẩu cho tài khoản của bạn.',
+ 'email_reset_not_requested' => 'Nếu bạn không yêu cầu đặt lại mật khẩu, không cần có bất cứ hành động nào khác.',
+
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Xác nhận email trên :appName',
+ 'email_confirm_greeting' => 'Cảm ơn bạn đã tham gia :appName!',
+ 'email_confirm_text' => 'Xin hãy xác nhận địa chỉa email bằng cách bấm vào nút dưới đây:',
+ 'email_confirm_action' => 'Xác nhận Email',
+ 'email_confirm_send_error' => 'Email xác nhận cần gửi nhưng hệ thống đã không thể gửi được email. Liên hệ với quản trị viên để chắc chắn email được thiết lập đúng.',
+ 'email_confirm_success' => 'Email của bạn đã được xác nhận!',
+ 'email_confirm_resent' => 'Email xác nhận đã được gửi lại, Vui lòng kiểm tra hộp thư.',
+
+ 'email_not_confirmed' => 'Địa chỉ email chưa được xác nhận',
+ 'email_not_confirmed_text' => 'Địa chỉ email của bạn hiện vẫn chưa được xác nhận.',
+ 'email_not_confirmed_click_link' => 'Vui lòng bấm vào liên kết trong mail được gửi trong thời gian ngắn ngay sau khi bạn đăng kí.',
+ 'email_not_confirmed_resend' => 'Nếu bạn không tìm thấy email bạn có thể yêu cầu gửi lại email xác nhận bằng cách gửi mẫu dưới đây.',
+ 'email_not_confirmed_resend_button' => 'Gửi lại email xác nhận',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Bạn được mời tham gia :appName!',
+ 'user_invite_email_greeting' => 'Một tài khoản đã được tạo dành cho bạn trên :appName.',
+ 'user_invite_email_text' => 'Bấm vào nút dưới đây để đặt lại mật khẩu tài khoản và lấy quyền truy cập:',
+ 'user_invite_email_action' => 'Đặt mật khẩu tài khoản',
+ 'user_invite_page_welcome' => 'Chào mừng đến với :appName!',
+ 'user_invite_page_text' => 'Để hoàn tất tài khoản và lấy quyền truy cập bạn cần đặt mật khẩu để sử dụng cho các lần đăng nhập sắp tới tại :appName.',
+ 'user_invite_page_confirm_button' => 'Xác nhận Mật khẩu',
+ 'user_invite_success' => 'Mật khẩu đã được thiết lập, bạn có quyền truy cập đến :appName!'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Common elements found throughout many areas of BookStack.
+ */
+return [
+
+ // Buttons
+ 'cancel' => 'Huỷ',
+ 'confirm' => 'Xác nhận',
+ 'back' => 'Quay lại',
+ 'save' => 'Lưu',
+ 'continue' => 'Tiếp tục',
+ 'select' => 'Chọn',
+ 'toggle_all' => 'Bật/tắt tất cả',
+ 'more' => 'Thêm',
+
+ // Form Labels
+ 'name' => 'Tên',
+ 'description' => 'Mô tả',
+ 'role' => 'Quyền',
+ 'cover_image' => 'Ảnh bìa',
+ 'cover_image_description' => 'Ảnh nên có kích thước 440x250px.',
+
+ // Actions
+ 'actions' => 'Hành động',
+ 'view' => 'Xem',
+ 'view_all' => 'Xem tất cả',
+ 'create' => 'Tạo',
+ 'update' => 'Cập nhật',
+ 'edit' => 'Sửa',
+ 'sort' => 'Sắp xếp',
+ 'move' => 'Di chuyển',
+ 'copy' => 'Sao chép',
+ 'reply' => 'Trả lời',
+ 'delete' => 'Xóa',
+ 'search' => 'Tìm kiếm',
+ 'search_clear' => 'Xoá tìm kiếm',
+ 'reset' => 'Thiết lập lại',
+ 'remove' => 'Xóa bỏ',
+ 'add' => 'Thêm',
+ 'fullscreen' => 'Toàn màn hình',
+
+ // Sort Options
+ 'sort_options' => 'Tùy Chọn Sắp Xếp',
+ 'sort_direction_toggle' => 'Đảo chiều sắp xếp',
+ 'sort_ascending' => 'Sắp xếp tăng dần',
+ 'sort_descending' => 'Sắp xếp giảm dần',
+ 'sort_name' => 'Tên',
+ 'sort_created_at' => 'Ngày Tạo',
+ 'sort_updated_at' => 'Ngày cập nhật',
+
+ // Misc
+ 'deleted_user' => 'Người dùng bị xóa',
+ 'no_activity' => 'Không có hoạt động nào',
+ 'no_items' => 'Không có mục nào khả dụng',
+ 'back_to_top' => 'Lên đầu trang',
+ 'toggle_details' => 'Bật/tắt chi tiết',
+ 'toggle_thumbnails' => 'Bật/tắt ảnh ảnh nhỏ',
+ 'details' => 'Chi tiết',
+ 'grid_view' => 'Hiển thị dạng lưới',
+ 'list_view' => 'Hiển thị dạng danh sách',
+ 'default' => 'Mặc định',
+ 'breadcrumb' => 'Đường dẫn liên kết',
+
+ // Header
+ 'profile_menu' => 'Menu Hồ sơ',
+ 'view_profile' => 'Xem Hồ sơ',
+ 'edit_profile' => 'Sửa Hồ sơ',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+
+ // Layout tabs
+ 'tab_info' => 'Thông tin',
+ 'tab_content' => 'Nội dung',
+
+ // Email Content
+ 'email_action_help' => 'Nếu bạn đang có vấn đề trong việc bấm nút ":actionText", sao chép và dán địa chỉ URL dưới đây vào trình duyệt web:',
+ 'email_rights' => 'Bản quyền đã được bảo hộ',
+];
--- /dev/null
+<?php
+/**
+ * Text used in custom JavaScript driven components.
+ */
+return [
+
+ // Image Manager
+ 'image_select' => 'Chọn Ảnh',
+ 'image_all' => 'Tất cả',
+ 'image_all_title' => 'Xem tất cả các ảnh',
+ 'image_book_title' => 'Xem các ảnh đã được tải lên sách này',
+ 'image_page_title' => 'Xem các ảnh đã được tải lên trang này',
+ 'image_search_hint' => 'Tìm kiếm ảnh bằng tên',
+ 'image_uploaded' => 'Đã tải lên :uploadedDate',
+ 'image_load_more' => 'Hiện thêm',
+ 'image_image_name' => 'Tên Ảnh',
+ 'image_delete_used' => 'Ảnh này được sử dụng trong các trang dưới đây.',
+ 'image_delete_confirm' => 'Bấm nút xóa lần nữa để xác nhận bạn muốn xóa ảnh này.',
+ 'image_select_image' => 'Chọn Ảnh',
+ 'image_dropzone' => 'Thả các ảnh hoặc bấm vào đây để tải lên',
+ 'images_deleted' => 'Các ảnh đã được xóa',
+ 'image_preview' => 'Xem trước Ảnh',
+ 'image_upload_success' => 'Ảnh đã tải lên thành công',
+ 'image_update_success' => 'Chi tiết ảnh được cập nhật thành công',
+ 'image_delete_success' => 'Ảnh đã được xóa thành công',
+ 'image_upload_remove' => 'Xóa bỏ',
+
+ // Code Editor
+ 'code_editor' => 'Sửa Mã',
+ 'code_language' => 'Ngôn ngữ Mã',
+ 'code_content' => 'Nội dung Mã',
+ 'code_save' => 'Lưu Mã',
+];
--- /dev/null
+<?php
+/**
+ * Text used for 'Entities' (Document Structure Elements) such as
+ * Books, Shelves, Chapters & Pages
+ */
+return [
+
+ // Shared
+ 'recently_created' => 'Được tạo gần đây',
+ 'recently_created_pages' => 'Trang được tạo gần đây',
+ 'recently_updated_pages' => 'Trang được cập nhật gần đây',
+ 'recently_created_chapters' => 'Chương được tạo gần đây',
+ 'recently_created_books' => 'Sách được tạo gần đây',
+ 'recently_created_shelves' => 'Giá sách được tạo gần đây',
+ 'recently_update' => 'Được cập nhật gần đây',
+ 'recently_viewed' => 'Được xem gần đây',
+ 'recent_activity' => 'Hoạt động gần đây',
+ 'create_now' => 'Tạo ngay',
+ 'revisions' => 'Phiên bản',
+ 'meta_revision' => 'Phiên bản #:revisionCount',
+ 'meta_created' => 'Được tạo :timeLength',
+ 'meta_created_name' => 'Được tạo :timeLength bởi :user',
+ 'meta_updated' => 'Được cập nhật :timeLength',
+ 'meta_updated_name' => 'Được cập nhật :timeLength bởi :user',
+ 'entity_select' => 'Chọn thực thể',
+ 'images' => 'Ảnh',
+ 'my_recent_drafts' => 'Bản nháp gần đây của tôi',
+ 'my_recently_viewed' => 'Xem gần đây',
+ 'no_pages_viewed' => 'Bạn chưa xem bất cứ trang nào',
+ 'no_pages_recently_created' => 'Không có trang nào được tạo gần đây',
+ 'no_pages_recently_updated' => 'Không có trang nào được cập nhật gần đây',
+ 'export' => 'Kết xuất',
+ 'export_html' => 'Đang chứa tệp tin Web',
+ 'export_pdf' => 'Tệp PDF',
+ 'export_text' => 'Tệp văn bản thuần túy',
+
+ // Permissions and restrictions
+ 'permissions' => 'Quyền',
+ 'permissions_intro' => 'Một khi được bật, các quyền này sẽ được ưu tiên trên hết tất cả các quyền hạn khác.',
+ 'permissions_enable' => 'Bật quyền hạn tùy chỉnh',
+ 'permissions_save' => 'Lưu quyền hạn',
+
+ // Search
+ 'search_results' => 'Kết quả Tìm kiếm',
+ 'search_total_results_found' => 'Tìm thấy :count kết quả|:count tổng kết quả',
+ 'search_clear' => 'Xoá tìm kiếm',
+ 'search_no_pages' => 'Không trang nào khớp với tìm kiếm này',
+ 'search_for_term' => 'Tìm kiếm cho :term',
+ 'search_more' => 'Thêm kết quả',
+ 'search_filters' => 'Bộ lọc Tìm kiếm',
+ 'search_content_type' => 'Kiểu Nội dung',
+ 'search_exact_matches' => 'Hoàn toàn trùng khớp',
+ 'search_tags' => 'Tìm kiếm Tag',
+ 'search_options' => 'Tuỳ chọn',
+ 'search_viewed_by_me' => 'Được xem bởi tôi',
+ 'search_not_viewed_by_me' => 'Không được xem bởi tôi',
+ 'search_permissions_set' => 'Phân quyền',
+ 'search_created_by_me' => 'Được tạo bởi tôi',
+ 'search_updated_by_me' => 'Được cập nhật bởi tôi',
+ 'search_date_options' => 'Tùy chọn ngày',
+ 'search_updated_before' => 'Đã được cập nhật trước đó',
+ 'search_updated_after' => 'Đã được cập nhật sau',
+ 'search_created_before' => 'Đã được tạo trước',
+ 'search_created_after' => 'Đã được tạo sau',
+ 'search_set_date' => 'Đặt ngày',
+ 'search_update' => 'Cập nhật tìm kiếm',
+
+ // Shelves
+ 'shelf' => 'Giá',
+ 'shelves' => 'Giá',
+ 'x_shelves' => ':count Giá |:count Giá',
+ 'shelves_long' => 'Giá sách',
+ 'shelves_empty' => 'Không có giá nào được tạo',
+ 'shelves_create' => 'Tạo Giá mới',
+ 'shelves_popular' => 'Các Giá phổ biến',
+ 'shelves_new' => 'Các Giá mới',
+ 'shelves_new_action' => 'Giá mới',
+ 'shelves_popular_empty' => 'Các giá phổ biến sẽ xuất hiện ở đây.',
+ 'shelves_new_empty' => 'Các Giá được tạo gần đây sẽ xuất hiện ở đây.',
+ 'shelves_save' => 'Lưu Giá',
+ 'shelves_books' => 'Sách trên Giá này',
+ 'shelves_add_books' => 'Thêm sách vào Giá này',
+ 'shelves_drag_books' => 'Kéo sách vào đây để thêm vào giá',
+ 'shelves_empty_contents' => 'Giá này không có sách nào',
+ 'shelves_edit_and_assign' => 'Chỉnh sửa kệ để gán sách',
+ 'shelves_edit_named' => 'Chỉnh sửa kệ sách :name',
+ 'shelves_edit' => 'Chỉnh sửa kệ sách',
+ 'shelves_delete' => 'Xóa kệ sách',
+ 'shelves_delete_named' => 'Xóa kệ sách :name',
+ 'shelves_delete_explain' => "Chức năng này sẽ xóa kệ sách với tên ':name'. Các sách chứa trong nó sẽ không bị xóa.",
+ 'shelves_delete_confirmation' => 'Bạn có chắc chắn muốn xóa kệ sách này?',
+ 'shelves_permissions' => 'Các quyền đối với kệ sách',
+ 'shelves_permissions_updated' => 'Các quyền với kệ sách đã được cập nhật',
+ 'shelves_permissions_active' => 'Đang bật các quyền hạn từ Kệ sách',
+ 'shelves_copy_permissions_to_books' => 'Sao chép các quyền cho sách',
+ 'shelves_copy_permissions' => 'Sao chép các quyền',
+ 'shelves_copy_permissions_explain' => 'Điều này sẽ áp dụng các cài đặt quyền của giá sách hiện tại với tất cả các cuốn sách bên trong. Trước khi kích hoạt, đảm bảo bất cứ thay đổi liên quan đến quyền của giá sách này đã được lưu.',
+ 'shelves_copy_permission_success' => 'Các quyền của giá sách đã được sao chép tới :count quyển sách',
+
+ // Books
+ 'book' => 'Sách',
+ 'books' => 'Tất cả sách',
+ 'x_books' => ':count Sách|:count Tất cả sách',
+ 'books_empty' => 'Không có cuốn sách nào được tạo',
+ 'books_popular' => 'Những cuốn sách phổ biến',
+ 'books_recent' => 'Những cuốn sách gần đây',
+ 'books_new' => 'Những cuốn sách mới',
+ 'books_new_action' => 'Sách mới',
+ 'books_popular_empty' => 'Những cuốn sách phổ biến nhất sẽ xuất hiện ở đây.',
+ 'books_new_empty' => 'Những cuốn sách tạo gần đây sẽ được xuất hiện ở đây.',
+ 'books_create' => 'Tạo cuốn sách mới',
+ 'books_delete' => 'Xóa sách',
+ 'books_delete_named' => 'Xóa sách :bookName',
+ 'books_delete_explain' => 'Điều này sẽ xóa cuốn sách với tên \':bookName\'. Tất cả các trang và các chương sẽ bị xóa.',
+ 'books_delete_confirmation' => 'Bạn có chắc chắn muốn xóa cuốn sách này?',
+ 'books_edit' => 'Sửa sách',
+ 'books_edit_named' => 'Sửa sách :bookName',
+ 'books_form_book_name' => 'Tên sách',
+ 'books_save' => 'Lưu sách',
+ 'books_permissions' => 'Các quyền của cuốn sách',
+ 'books_permissions_updated' => 'Các quyền của cuốn sách đã được cập nhật',
+ 'books_empty_contents' => 'Không có trang hay chương nào được tạo cho cuốn sách này.',
+ 'books_empty_create_page' => 'Tao một trang mới',
+ 'books_empty_sort_current_book' => 'Sắp xếp cuốn sách này',
+ 'books_empty_add_chapter' => 'Thêm một chương mới',
+ 'books_permissions_active' => 'Đang bật các quyền hạn từ Sách',
+ 'books_search_this' => 'Tìm cuốn sách này',
+ 'books_navigation' => 'Điều hướng cuốn sách',
+ 'books_sort' => 'Sắp xếp nội dung cuốn sách',
+ 'books_sort_named' => 'Sắp xếp sách :bookName',
+ 'books_sort_name' => 'Sắp xếp theo tên',
+ 'books_sort_created' => 'Sắp xếp theo ngày tạo',
+ 'books_sort_updated' => 'Sắp xếp theo ngày cập nhật',
+ 'books_sort_chapters_first' => 'Các Chương đầu',
+ 'books_sort_chapters_last' => 'Các Chương cuối',
+ 'books_sort_show_other' => 'Hiển thị các Sách khác',
+ 'books_sort_save' => 'Lưu thứ tự mới',
+
+ // Chapters
+ 'chapter' => 'Chương',
+ 'chapters' => 'Các chương',
+ 'x_chapters' => ':count Chương|:count Chương',
+ 'chapters_popular' => 'Các Chương phổ biến',
+ 'chapters_new' => 'Chương mới',
+ 'chapters_create' => 'Tạo Chương mới',
+ 'chapters_delete' => 'Xóa Chương',
+ 'chapters_delete_named' => 'Xóa Chương :chapterName',
+ 'chapters_delete_explain' => 'Chức năng này sẽ xóa chương với tên \':chapterName\'. Tất cả các trang sẽ bị loại bỏ và thêm trực tiếp vào sách chứa nó.',
+ 'chapters_delete_confirm' => 'Bạn có chắc chắn muốn xóa chương này?',
+ 'chapters_edit' => 'Sửa Chương',
+ 'chapters_edit_named' => 'Sửa chương :chapterName',
+ 'chapters_save' => 'Lưu Chương',
+ 'chapters_move' => 'Di chuyển Chương',
+ 'chapters_move_named' => 'Di chuyển Chương :chapterName',
+ 'chapter_move_success' => 'Chương được di chuyển đến :bookName',
+ 'chapters_permissions' => 'Quyền hạn Chương',
+ 'chapters_empty' => 'Không có trang nào hiện có trong chương này.',
+ 'chapters_permissions_active' => 'Đang bật các quyền hạn từ Chương',
+ 'chapters_permissions_success' => 'Quyền hạn Chương được cập nhật',
+ 'chapters_search_this' => 'Tìm kiếm trong Chương này',
+
+ // Pages
+ 'page' => 'Trang',
+ 'pages' => 'Các trang',
+ 'x_pages' => ':count Trang|:count Trang',
+ 'pages_popular' => 'Các Trang phổ biến',
+ 'pages_new' => 'Trang Mới',
+ 'pages_attachments' => 'Các đính kèm',
+ 'pages_navigation' => 'Điều hướng Trang',
+ 'pages_delete' => 'Xóa Trang',
+ 'pages_delete_named' => 'Xóa Trang :pageName',
+ 'pages_delete_draft_named' => 'Xóa Trang Nháp :pageName',
+ 'pages_delete_draft' => 'Xóa Trang Nháp',
+ 'pages_delete_success' => 'Đã xóa Trang',
+ 'pages_delete_draft_success' => 'Đã xóa trang Nháp',
+ 'pages_delete_confirm' => 'Bạn có chắc chắn muốn xóa trang này?',
+ 'pages_delete_draft_confirm' => 'Bạn có chắc chắn muốn xóa trang nháp này?',
+ 'pages_editing_named' => 'Đang chỉnh sửa Trang :pageName',
+ 'pages_edit_draft_options' => 'Tùy chọn bản nháp',
+ 'pages_edit_save_draft' => 'Lưu Nháp',
+ 'pages_edit_draft' => 'Sửa trang nháp',
+ 'pages_editing_draft' => 'Đang chỉnh sửa Nháp',
+ 'pages_editing_page' => 'Đang chỉnh sửa Trang',
+ 'pages_edit_draft_save_at' => 'Bản nháp đã lưu lúc ',
+ 'pages_edit_delete_draft' => 'Xóa Bản nháp',
+ 'pages_edit_discard_draft' => 'Hủy bỏ Bản nháp',
+ 'pages_edit_set_changelog' => 'Đặt Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Viết mô tả ngắn gọn cho các thay đổi mà bạn tạo',
+ 'pages_edit_enter_changelog' => 'Viết Changelog',
+ 'pages_save' => 'Lưu Trang',
+ 'pages_title' => 'Tiêu đề Trang',
+ 'pages_name' => 'Tên Trang',
+ 'pages_md_editor' => 'Trình chỉnh sửa',
+ 'pages_md_preview' => 'Xem trước',
+ 'pages_md_insert_image' => 'Chèn hình ảnh',
+ 'pages_md_insert_link' => 'Chèn liên kết thực thể',
+ 'pages_md_insert_drawing' => 'Chèn bản vẽ',
+ 'pages_not_in_chapter' => 'Trang không nằm trong một chương',
+ 'pages_move' => 'Di chuyển Trang',
+ 'pages_move_success' => 'Trang đã chuyển tới ":parentName"',
+ 'pages_copy' => 'Sao chép Trang',
+ 'pages_copy_desination' => 'Sao lưu đến',
+ 'pages_copy_success' => 'Trang được sao chép thành công',
+ 'pages_permissions' => 'Quyền hạn Trang',
+ 'pages_permissions_success' => 'Quyền hạn Trang được cập nhật',
+ 'pages_revision' => 'Phiên bản',
+ 'pages_revisions' => 'Phiên bản Trang',
+ 'pages_revisions_named' => 'Phiên bản Trang cho :pageName',
+ 'pages_revision_named' => 'Phiên bản Trang cho :pageName',
+ 'pages_revisions_created_by' => 'Tạo bởi',
+ 'pages_revisions_date' => 'Ngày của Phiên bản',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_numbered' => 'Phiên bản #:id',
+ 'pages_revisions_numbered_changes' => 'Các thay đổi của phiên bản #:id',
+ 'pages_revisions_changelog' => 'Nhật ký thay đổi',
+ 'pages_revisions_changes' => 'Các thay đổi',
+ 'pages_revisions_current' => 'Phiên bản hiện tại',
+ 'pages_revisions_preview' => 'Xem trước',
+ 'pages_revisions_restore' => 'Khôi phục',
+ 'pages_revisions_none' => 'Trang này không có phiên bản nào',
+ 'pages_copy_link' => 'Sao chép Liên kết',
+ 'pages_edit_content_link' => 'Soạn thảo Nội dung',
+ 'pages_permissions_active' => 'Đang bật các quyền hạn từ Trang',
+ 'pages_initial_revision' => 'Đăng bài mở đầu',
+ 'pages_initial_name' => 'Trang mới',
+ 'pages_editing_draft_notification' => 'Bạn hiện đang chỉnh sửa một bản nháp được lưu cách đây :timeDiff.',
+ 'pages_draft_edited_notification' => 'Trang này đã được cập nhật từ lúc đó. Bạn nên loại bỏ bản nháp này.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count người dùng đang bắt đầu chỉnh sửa trang này',
+ 'start_b' => ':userName đang bắt đầu chỉnh sửa trang này',
+ 'time_a' => 'kể từ khi thang được cập nhật lần cuối',
+ 'time_b' => 'trong :minCount phút cuối',
+ 'message' => ':start :time. Hãy cẩn thận đừng ghi đè vào các bản cập nhật của nhau!',
+ ],
+ 'pages_draft_discarded' => 'Bản nháp đã được loại bỏ, Người sửa đã cập nhật trang với nội dung hiện tại',
+ 'pages_specific' => 'Trang cụ thể',
+ 'pages_is_template' => 'Biểu mẫu trang',
+
+ // Editor Sidebar
+ 'page_tags' => 'Các Thẻ Trang',
+ 'chapter_tags' => 'Các Thẻ Chương',
+ 'book_tags' => 'Các Thẻ Sách',
+ 'shelf_tags' => 'Các Thẻ Kệ',
+ 'tag' => 'Nhãn',
+ 'tags' => 'Các Thẻ',
+ 'tag_name' => 'Tên Nhãn',
+ 'tag_value' => 'Giá trị Thẻ (Tùy chọn)',
+ 'tags_explain' => "Thêm vài thẻ để phân loại nội dung của bạn tốt hơn. \n Bạn có thể đặt giá trị cho thẻ để quản lí kĩ càng hơn.",
+ 'tags_add' => 'Thêm thẻ khác',
+ 'tags_remove' => 'Xóa thẻ này',
+ 'attachments' => 'Các Đính kèm',
+ 'attachments_explain' => 'Cập nhật một số tập tin và đính một số liên kết để hiển thị trên trang của bạn. Chúng được hiện trong sidebar của trang.',
+ 'attachments_explain_instant_save' => 'Các thay đổi ở đây sẽ được lưu ngay lập tức.',
+ 'attachments_items' => 'Đính kèm các Mục',
+ 'attachments_upload' => 'Tải lên Tập tin',
+ 'attachments_link' => 'Đính kèm Liên kết',
+ 'attachments_set_link' => 'Đặt Liên kết',
+ 'attachments_delete_confirm' => 'Bấm xóa lần nữa để xác nhận bạn muốn xóa đính kèm này.',
+ 'attachments_dropzone' => 'Thả các tập tin hoặc bấm vào đây để đính kèm một tập tin',
+ 'attachments_no_files' => 'Không có tập tin nào được tải lên',
+ 'attachments_explain_link' => 'Bạn có thể đính kèm một liên kết nếu bạn lựa chọn không tải lên tập tin. Liên kết này có thể trỏ đến một trang khác hoặc một tập tin ở trên mạng (đám mây).',
+ 'attachments_link_name' => 'Tên Liên kết',
+ 'attachment_link' => 'Liên kết đính kèm',
+ 'attachments_link_url' => 'Liên kết đến tập tin',
+ 'attachments_link_url_hint' => 'URL của trang hoặc tập tin',
+ 'attach' => 'Đính kèm',
+ 'attachments_edit_file' => 'Sửa tập tin',
+ 'attachments_edit_file_name' => 'Tên tệp tin',
+ 'attachments_edit_drop_upload' => 'Thả tập tin hoặc bấm vào đây để tải lên và ghi đè',
+ 'attachments_order_updated' => 'Đã cập nhật thứ tự đính kèm',
+ 'attachments_updated_success' => 'Đã cập nhật chi tiết đính kèm',
+ 'attachments_deleted' => 'Đính kèm đã được xóa',
+ 'attachments_file_uploaded' => 'Tập tin tải lên thành công',
+ 'attachments_file_updated' => 'Tập tin cập nhật thành công',
+ 'attachments_link_attached' => 'Liên kết được đính kèm đến trang thành công',
+ 'templates' => 'Các Mẫu',
+ 'templates_set_as_template' => 'Trang là một mẫu',
+ 'templates_explain_set_as_template' => 'Bạn có thể đặt trang này làm mẫu, nội dung của nó sẽ được sử dụng lại khi tạo các trang mới. Người dùng khác có thể sử dụng mẫu này nếu học có quyền hạn xem trang này.',
+ 'templates_replace_content' => 'Thay thế nội dung trang',
+ 'templates_append_content' => 'Viết vào nội dung trang',
+ 'templates_prepend_content' => 'Thêm vào đầu nội dung trang',
+
+ // Profile View
+ 'profile_user_for_x' => 'Đã là người dùng trong :time',
+ 'profile_created_content' => 'Đã tạo nội dung',
+ 'profile_not_created_pages' => ':userName chưa tạo bất kỳ trang nào',
+ 'profile_not_created_chapters' => ':userName chưa tạo bất kì chương nào',
+ 'profile_not_created_books' => ':userName chưa tạo bất cứ sách nào',
+ 'profile_not_created_shelves' => ':userName chưa tạo bất kỳ giá sách nào',
+
+ // Comments
+ 'comment' => 'Bình luận',
+ 'comments' => 'Các bình luận',
+ 'comment_add' => 'Thêm bình luận',
+ 'comment_placeholder' => 'Đăng bình luận tại đây',
+ 'comment_count' => '{0} Không có bình luận|{1} 1 Bình luận|[2,*] :count Bình luận',
+ 'comment_save' => 'Lưu bình luận',
+ 'comment_saving' => 'Đang lưu bình luận...',
+ 'comment_deleting' => 'Đang xóa bình luận...',
+ 'comment_new' => 'Bình luận mới',
+ 'comment_created' => 'đã bình luận :createDiff',
+ 'comment_updated' => 'Đã cập nhật :updateDiff bởi :username',
+ 'comment_deleted_success' => 'Bình luận đã bị xóa',
+ 'comment_created_success' => 'Đã thêm bình luận',
+ 'comment_updated_success' => 'Bình luận đã được cập nhật',
+ 'comment_delete_confirm' => 'Bạn có chắc bạn muốn xóa bình luận này?',
+ 'comment_in_reply_to' => 'Trả lời cho :commentId',
+
+ // Revision
+ 'revision_delete_confirm' => 'Bạn có chắc bạn muốn xóa phiên bản này?',
+ 'revision_restore_confirm' => 'Bạn có chắc bạn muốn khôi phục phiên bản này? Nội dung trang hiện tại sẽ được thay thế.',
+ 'revision_delete_success' => 'Phiên bản đã được xóa',
+ 'revision_cannot_delete_latest' => 'Không thể xóa phiên bản mới nhất.'
+];
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Text shown in error messaging.
+ */
+return [
+
+ // Permissions
+ 'permission' => 'Bạn không có quyền truy cập đến trang này.',
+ 'permissionJson' => 'Bạn không có quyền để thực hiện hành động này.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Đã có người sử dụng email :email nhưng với thông tin định danh khác.',
+ 'email_already_confirmed' => 'Email đã được xác nhận trước đó, Đang đăng nhập.',
+ 'email_confirmation_invalid' => 'Token xác nhận này không hợp lệ hoặc đã được sử dụng trước đó, Xin hãy thử đăng ký lại.',
+ 'email_confirmation_expired' => 'Token xác nhận đã hết hạn, Một email xác nhận mới đã được gửi.',
+ 'email_confirmation_awaiting' => 'Địa chỉ email của tài khoản bạn đang sử dụng cần phải được xác nhận',
+ 'ldap_fail_anonymous' => 'Truy cập đến LDAP sử dụng gán ẩn danh thất bại',
+ 'ldap_fail_authed' => 'Truy cập đến LDAP sử dụng dn và mật khẩu thất bại',
+ 'ldap_extension_not_installed' => 'Tiện ích mở rộng LDAP PHP chưa được cài đặt',
+ 'ldap_cannot_connect' => 'Không thể kết nối đến máy chủ LDAP, mở đầu kết nối thất bại',
+ 'saml_already_logged_in' => 'Đã đăng nhập',
+ 'saml_user_not_registered' => 'Người dùng :name chưa được đăng ký và tự động đăng ký đang bị tắt',
+ 'saml_no_email_address' => 'Không tìm thấy địa chỉ email cho người dùng này trong dữ liệu được cung cấp bới hệ thống xác thực ngoài',
+ 'saml_invalid_response_id' => 'Yêu cầu từ hệ thống xác thực bên ngoài không được nhận diện bởi quy trình chạy cho ứng dụng này. Điều hướng trở lại sau khi đăng nhập có thể đã gây ra vấn đề này.',
+ 'saml_fail_authed' => 'Đăng nhập sử dụng :system thất bại, hệ thống không cung cấp được sự xác thực thành công',
+ 'social_no_action_defined' => 'Không có hành động được xác định',
+ 'social_login_bad_response' => "Xảy ra lỗi trong lúc đăng nhập :socialAccount: \n:error",
+ 'social_account_in_use' => 'Tài khoản :socialAccount này đang được sử dụng, Vui lòng thử đăng nhập bằng tùy chọn :socialAccount.',
+ 'social_account_email_in_use' => 'Địa chỉ email :email đã được sử dụng. Nếu bạn đã có tài khoản bạn có thể kết nối đến tài khoản :socialAccount của mình từ cài đặt cá nhân của bạn.',
+ 'social_account_existing' => ':socialAccount đã được gắn với hồ sơ của bạn từ trước.',
+ 'social_account_already_used_existing' => 'Tài khoản :socialAccount đã được sử dụng bởi một người dùng khác.',
+ 'social_account_not_used' => 'Tài khoản :socialAccount này chưa được liên kết bởi bất cứ người dùng nào. Vui lòng liên kết nó tại cài đặt cá nhân của bạn. ',
+ 'social_account_register_instructions' => 'Nếu bạn chưa có tài khoản, Bạn có thể đăng ký một tài khoản bằng tùy chọn :socialAccount.',
+ 'social_driver_not_found' => 'Không tìm thấy driver cho MXH',
+ 'social_driver_not_configured' => 'Cài đặt MXH :socialAccount của bạn đang không được cấu hình hợp lệ.',
+ 'invite_token_expired' => 'Liên kết mời này đã hết hạn. Bạn có thể thử đặt lại mật khẩu của tài khoản.',
+
+ // System
+ 'path_not_writable' => 'Đường dẫn tệp tin :filePath không thể tải đến được. Đảm bảo rằng đường dẫn này có thể ghi được ở trên máy chủ.',
+ 'cannot_get_image_from_url' => 'Không thể lấy ảnh từ :url',
+ 'cannot_create_thumbs' => 'Máy chủ không thể tạo ảnh nhỏ. Vui lòng kiểm tra bạn đã cài đặt tiện ích mở rộng GD PHP.',
+ 'server_upload_limit' => 'Máy chủ không cho phép tải lên kích thước này. Vui lòng thử lại với tệp tin nhỏ hơn.',
+ 'uploaded' => 'Máy chủ không cho phép tải lên kích thước này. Vui lòng thử lại với tệp tin nhỏ hơn.',
+ 'image_upload_error' => 'Đã xảy ra lỗi khi đang tải lên ảnh',
+ 'image_upload_type_error' => 'Ảnh đang được tải lên không hợp lệ',
+ 'file_upload_timeout' => 'Đã quá thời gian tải lên tệp tin.',
+
+ // Attachments
+ 'attachment_page_mismatch' => 'Trang không trùng khớp khi cập nhật đính kèm',
+ 'attachment_not_found' => 'Không tìm thấy đính kèm',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Lưu bản nháp thất bại. Đảm bảo rằng bạn có kết nối đến internet trước khi lưu trang này',
+ 'page_custom_home_deletion' => 'Không thể xóa trang khi nó đang được đặt là trang chủ',
+
+ // Entities
+ 'entity_not_found' => 'Không tìm thấy thực thể',
+ 'bookshelf_not_found' => 'Không tìm thấy giá sách',
+ 'book_not_found' => 'Không tìm thấy sách',
+ 'page_not_found' => 'Không tìm thấy trang',
+ 'chapter_not_found' => 'Không tìm thấy chương',
+ 'selected_book_not_found' => 'Không tìm thấy sách được chọn',
+ 'selected_book_chapter_not_found' => 'Không tìm thấy Sách hoặc Chương được chọn',
+ 'guests_cannot_save_drafts' => 'Khách không thể lưu bản nháp',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Bạn không thể xóa quản trị viên duy nhất',
+ 'users_cannot_delete_guest' => 'Bạn không thể xóa người dùng khách',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Không thể chỉnh sửa quyền này',
+ 'role_system_cannot_be_deleted' => 'Quyền này là quyền hệ thống và không thể bị xóa',
+ 'role_registration_default_cannot_delete' => 'Quyền này không thể bị xóa trong khi đang đặt là quyền mặc định khi đăng ký',
+ 'role_cannot_remove_only_admin' => 'Người dùng này là người dùng duy nhất được chỉ định quyền quản trị viên. Gán quyền quản trị viên cho người dùng khác trước khi thử xóa người dùng này.',
+
+ // Comments
+ 'comment_list' => 'Đã có lỗi xảy ra khi tải bình luận.',
+ 'cannot_add_comment_to_draft' => 'Bạn không thể thêm bình luận vào bản nháp.',
+ 'comment_add' => 'Đã xảy ra lỗi khi thêm / sửa bình luận.',
+ 'comment_delete' => 'Đã xảy ra lỗi khi xóa bình luận.',
+ 'empty_comment' => 'Không thể thêm bình luận bị bỏ trống.',
+
+ // Error pages
+ '404_page_not_found' => 'Không Tìm Thấy Trang',
+ 'sorry_page_not_found' => 'Xin lỗi, Không tìm thấy trang bạn đang tìm kiếm.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ 'return_home' => 'Quay lại trang chủ',
+ 'error_occurred' => 'Đã xảy ra lỗi',
+ 'app_down' => ':appName hiện đang ngoại tuyến',
+ 'back_soon' => 'Nó sẽ sớm hoạt động trở lại.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Không tìm thấy token ủy quyền trong yêu cầu',
+ 'api_bad_authorization_format' => 'Đã tìm thấy một token ủy quyền trong yêu cầu nhưng định dạng hiển thị không hợp lệ',
+ 'api_user_token_not_found' => 'Không tìm thấy token API nào khớp với token ủy quyền được cung cấp',
+ 'api_incorrect_token_secret' => 'Mã bí mật được cung cấp cho token API đang được sử dụng không hợp lệ',
+ 'api_user_no_api_permission' => 'Chủ của token API đang sử dụng không có quyền gọi API',
+ 'api_user_token_expired' => 'Token sử dụng cho việc ủy quyền đã hết hạn',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Lỗi khi gửi email thử:',
+
+];
--- /dev/null
+<?php
+/**
+ * Pagination Language Lines
+ * The following language lines are used by the paginator library to build
+ * the simple pagination links.
+ */
+return [
+
+ 'previous' => '« Trước',
+ 'next' => 'Tiếp »',
+
+];
--- /dev/null
+<?php
+/**
+ * Password Reminder Language Lines
+ * The following language lines are the default lines which match reasons
+ * that are given by the password broker for a password update attempt has failed.
+ */
+return [
+
+ 'password' => 'Mật khẩu phải có tối thiểu 8 ký tự và và phải trùng với mật khẩu xác nhận.',
+ 'user' => "Chúng tôi không tìm thấy người dùng với địa chỉ email đó.",
+ 'token' => 'The password reset token is invalid for this email address.',
+ 'sent' => 'Chúng tôi đã gửi email chứa liên kết đặt lại mật khẩu cho bạn!',
+ 'reset' => 'Mật khẩu của bạn đã được đặt lại!',
+
+];
--- /dev/null
+<?php
+/**
+ * Settings text strings
+ * Contains all text strings used in the general settings sections of BookStack
+ * including users and roles.
+ */
+return [
+
+ // Common Messages
+ 'settings' => 'Cài đặt',
+ 'settings_save' => 'Lưu Cài đặt',
+ 'settings_save_success' => 'Đã lưu cài đặt',
+
+ // App Settings
+ 'app_customization' => 'Tuỳ biến',
+ 'app_features_security' => 'Chức năng & Bảo mật',
+ 'app_name' => 'Tên Ứng dụng',
+ 'app_name_desc' => 'Tên này được hiển thị trong header và trong bất kì email hệ thống được gửi.',
+ 'app_name_header' => 'Hiển thị tên trong header',
+ 'app_public_access' => 'Quyền truy cập công khai',
+ 'app_public_access_desc' => 'Bật tùy chọn này sẽ cho phép khách, người không cần đăng nhập, truy cập đến nội dung bản BookStack của bạn.',
+ 'app_public_access_desc_guest' => 'Quyền truy cập của khách có thể được điều khiển thông qua người dùng "Guest".',
+ 'app_public_access_toggle' => 'Cho phép truy cập công khai',
+ 'app_public_viewing' => 'Cho phép xem công khai?',
+ 'app_secure_images' => 'Bảo mật tốt hơn cho việc tải lên ảnh',
+ 'app_secure_images_toggle' => 'Bật bảo mật tốt hơn cho các ảnh được tải lên',
+ 'app_secure_images_desc' => 'Vì lí do hiệu năng, tất cả các ảnh đều được truy cập công khai. Tùy chọn này thêm một chuỗi ngẫu nhiên, khó đoán vào phần liên kết đến ảnh. Đảm bảo rằng tránh việc index thư mục để ngăn chặn việc truy cập đến ảnh một cách dễ dàng.',
+ 'app_editor' => 'Soạn thảo Trang',
+ 'app_editor_desc' => 'Chọn trình soạn thảo nào sẽ được sử dụng bởi tất cả người dùng để chỉnh sửa trang.',
+ 'app_custom_html' => 'Tùy chọn nội dung Head HTML',
+ 'app_custom_html_desc' => 'Bất cứ nội dung nào được thêm vào đây sẽ được đưa vào phần cuối của khu vực <head> của mỗi trang. Tiện cho việc ghi đè style hoặc thêm mã phân tích dữ liệu.',
+ 'app_custom_html_disabled_notice' => 'Nội dung tùy biến HTML head bị tắt tại trang cài đặt này để đảm bảo mọi thay đổi làm hỏng hệ thống có để được khôi phục.',
+ 'app_logo' => 'Logo Ứng dụng',
+ 'app_logo_desc' => 'Ảnh này nên có kích thước chiều cao là 43px. <br>Ảnh lớn sẽ được điều chỉnh tỷ lệ xuống.',
+ 'app_primary_color' => 'Màu chủ đạo của Ứng dụng',
+ 'app_primary_color_desc' => 'Đặt màu chủ đạo của ứng dụng kể cả banner, các nút và các đường dẫn liên kết.',
+ 'app_homepage' => 'Trang chủ Ứng dụng',
+ 'app_homepage_desc' => 'Chọn hiển thị để hiện tại trang chủ thay cho hiển thị mặc định. Quyền cho trang được bỏ qua cho các trang được chọn.',
+ 'app_homepage_select' => 'Chọn một trang',
+ 'app_disable_comments' => 'Tắt bình luận',
+ 'app_disable_comments_toggle' => 'Tắt bình luận',
+ 'app_disable_comments_desc' => 'Tắt các bình luận trên tất cả các trang của ứng dụng. <br> Các bình luận đã tồn tại sẽ không được hiển thị.',
+
+ // Color settings
+ 'content_colors' => 'Màu của phần Nội dung',
+ 'content_colors_desc' => 'Đặt màu cho tất cả các thành phần trong trang theo sự tổ chức kế thừa. Việc chọn màu sắc với cùng độ sáng với màu mặc định là được khuyến nghị giúp cho việc đọc thuận lợi.',
+ 'bookshelf_color' => 'Màu Giá sách',
+ 'book_color' => 'Màu Sách',
+ 'chapter_color' => 'Màu Chương',
+ 'page_color' => 'Màu Trang',
+ 'page_draft_color' => 'Màu Trang Nháp',
+
+ // Registration Settings
+ 'reg_settings' => 'Đăng ký',
+ 'reg_enable' => 'Bật Đăng ký',
+ 'reg_enable_toggle' => 'Bật đăng ký',
+ 'reg_enable_desc' => 'Khi đăng ký được bật người dùng sẽ có thể tự đăng ký để trở thành người dùng của ứng dụng. Khi đăng kí người dùng sẽ được cấp một quyền sử dụng mặc định.',
+ 'reg_default_role' => 'Quyền người dùng sử dụng mặc định sau khi đăng kí',
+ 'reg_enable_external_warning' => 'Tùy chọn trên bị bỏ qua khi xác thực từ bên ngoài LDAP hoặc SAML được bật. Tài khoản người dùng chưa phải là thành viên sẽ được tự động tạo nếu xác thực với hệ thống bên ngoài thành công.',
+ 'reg_email_confirmation' => 'Xác nhận Email',
+ 'reg_email_confirmation_toggle' => 'Yêu cầu xác nhận email',
+ 'reg_confirm_email_desc' => 'Nếu giới hạn tên miền được sử dụng, xác nhận email là bắt buộc và tùy chọn này sẽ bị bỏ qua.',
+ 'reg_confirm_restrict_domain' => 'Giới hạn tên miền',
+ 'reg_confirm_restrict_domain_desc' => 'Điền dấu phẩy ngăn cách danh sách các tên miền email dành cho việc bạn muốn giới hạn đăng nhập. Người dùng sẽ nhận được email xác nhận địa chỉ của họ trước khi được phép tương tác với ứng dụng. <br> Lưu ý rằng người dùng có thể thay đổi địa chỉ email của họ sau khi đăng ký thành công.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Không có giới hạn nào được thiết lập',
+
+ // Maintenance settings
+ 'maint' => 'Bảo trì',
+ 'maint_image_cleanup' => 'Dọn dẹp ảnh',
+ 'maint_image_cleanup_desc' => "Quét nội dung trang và phiên bản để kiểm tra xem các ảnh và hình vẽ nào đang được sử dụng và ảnh nào dư thừa. Đảm bảo rằng bạn đã tạo bản sao lưu toàn dữ liệu và ảnh trước khi chạy chức năng này.",
+ 'maint_image_cleanup_ignore_revisions' => 'Bỏ qua ảnh trong phiên bản chỉnh sửa',
+ 'maint_image_cleanup_run' => 'Chạy Dọn dẹp',
+ 'maint_image_cleanup_warning' => 'Đã tìm thấy :count ảnh có thể không được sử dụng. Bạn muốn chắc rằng muốn xóa các ảnh này?',
+ 'maint_image_cleanup_success' => ':count ảnh có thể không được sử dụng đã được tìm thấy và xóa!',
+ 'maint_image_cleanup_nothing_found' => 'Không tìm thấy ảnh nào không được xử dụng, Không có gì để xóa!',
+ 'maint_send_test_email' => 'Gửi một email thử',
+ 'maint_send_test_email_desc' => 'Chức năng này gửi một email thử đến địa chỉ email bạn chỉ định trong hồ sơ của mình.',
+ 'maint_send_test_email_run' => 'Gửi email thử',
+ 'maint_send_test_email_success' => 'Email đã được gửi đến :address',
+ 'maint_send_test_email_mail_subject' => 'Thử Email',
+ 'maint_send_test_email_mail_greeting' => 'Chức năng gửi email có vẻ đã hoạt động!',
+ 'maint_send_test_email_mail_text' => 'Chúc mừng! Khi bạn nhận được email thông báo này, cài đặt email của bạn có vẻ đã được cấu hình đúng.',
+
+ // Role Settings
+ 'roles' => 'Quyền',
+ 'role_user_roles' => 'Quyền người dùng',
+ 'role_create' => 'Tạo quyền mới',
+ 'role_create_success' => 'Quyền mới đã được tạo thành công',
+ 'role_delete' => 'Xóa quyền',
+ 'role_delete_confirm' => 'Chức năng này sẽ xóa quyền với tên \':roleName\'.',
+ 'role_delete_users_assigned' => 'Quyền này có :userCount người dùng được gán. Nếu bạn muốn di dời các người dùng từ quyền này hãy chọn một quyền mới bên dưới.',
+ 'role_delete_no_migration' => "Không di dời các người dùng",
+ 'role_delete_sure' => 'Bạn có chắc rằng muốn xóa quyền này?',
+ 'role_delete_success' => 'Quyền đã được xóa thành công',
+ 'role_edit' => 'Sửa quyền',
+ 'role_details' => 'Thông tin chi tiết Quyền',
+ 'role_name' => 'Tên quyền',
+ 'role_desc' => 'Thông tin vắn tắt của Quyền',
+ 'role_external_auth_id' => 'Mã của xác thực ngoài',
+ 'role_system' => 'Quyền Hệ thống',
+ 'role_manage_users' => 'Quản lý người dùng',
+ 'role_manage_roles' => 'Quản lý quyền và chức năng quyền',
+ 'role_manage_entity_permissions' => 'Quản lý tất cả quyền của các sách, chương & trang',
+ 'role_manage_own_entity_permissions' => 'Quản lý quyền trên sách, chương & trang bạn tạo ra',
+ 'role_manage_page_templates' => 'Quản lý các mẫu trang',
+ 'role_access_api' => 'Truy cập đến API hệ thống',
+ 'role_manage_settings' => 'Quản lý cài đặt của ứng dụng',
+ 'role_asset' => 'Quyền tài sản (asset)',
+ 'role_asset_desc' => 'Các quyền này điều khiển truy cập mặc định tới tài sản (asset) nằm trong hệ thống. Quyền tại Sách, Chường và Trang se ghi đè các quyền này.',
+ 'role_asset_admins' => 'Quản trị viên được tự động cấp quyền truy cập đến toàn bộ nội dung, tuy nhiên các tùy chọn đó có thể hiện hoặc ẩn tùy chọn giao diện.',
+ 'role_all' => 'Tất cả',
+ 'role_own' => 'Sở hữu',
+ 'role_controlled_by_asset' => 'Kiểm soát các tài sản (asset) người dùng tải lên',
+ 'role_save' => 'Lưu Quyền',
+ 'role_update_success' => 'Quyền đã được cập nhật thành công',
+ 'role_users' => 'Người dùng được gán quyền này',
+ 'role_users_none' => 'Không có người dùng nào hiện được gán quyền này',
+
+ // Users
+ 'users' => 'Người dùng',
+ 'user_profile' => 'Hồ sơ người dùng',
+ 'users_add_new' => 'Thêm người dùng mới',
+ 'users_search' => 'Tìm kiếm người dùng',
+ 'users_details' => 'Chi tiết người dùng',
+ 'users_details_desc' => 'Hiển thị tên và địa chỉ email cho người dùng này. Địa chỉ email sẽ được sử dụng để đăng nhập vào ứng dụng.',
+ 'users_details_desc_no_email' => 'Đặt tên cho người dùng này để giúp người dùng khác nhận ra họ.',
+ 'users_role' => 'Quyền người dùng',
+ 'users_role_desc' => 'Chọn quyền mà người dùng sẽ được gán. Nếu người dùng được gán nhiều quyền, các quyền hạn sẽ ghi đè lên nhau và họ sẽ nhận được tất cả các quyền hạn từ quyền được gán.',
+ 'users_password' => 'Mật khẩu người dùng',
+ 'users_password_desc' => 'Đặt mật khẩu dùng để đăng nhập ứng dụng. Nó phải có độ dài tối thiểu 6 ký tự.',
+ 'users_send_invite_text' => 'Bạn có thể chọn để gửi cho người dùng này một email mời, giúp họ có thể tự đặt mật khẩu cho chính họ. Nếu không bạn có thể đặt mật khẩu cho họ.',
+ 'users_send_invite_option' => 'Gửi email mời người dùng',
+ 'users_external_auth_id' => 'Mã của xác thực ngoài',
+ 'users_external_auth_id_desc' => 'Đây là mã được sử dụng để xác thực với người dùng này khi giao tiếp với hệ thống xác thực bên ngoài.',
+ 'users_password_warning' => 'Chỉ điền ô bên dưới nếu bạn muốn thay đổi mật khẩu.',
+ 'users_system_public' => 'Người dùng này đại diện cho bất kỳ khách nào thăm trang của bạn. Nó được tự động gán và không thể dùng để đăng nhập.',
+ 'users_delete' => 'Xóa Người dùng',
+ 'users_delete_named' => 'Xóa người dùng :userName',
+ 'users_delete_warning' => 'Chức năng này sẽ hoàn toàn xóa người dùng với tên \':userName\' từ hệ thống.',
+ 'users_delete_confirm' => 'Bạn có chắc muốn xóa người dùng này không?',
+ 'users_delete_success' => 'Người dùng đã được xóa thành công',
+ 'users_edit' => 'Sửa người dùng',
+ 'users_edit_profile' => 'Sửa Hồ sơ',
+ 'users_edit_success' => 'Người dùng được cập nhật thành công',
+ 'users_avatar' => 'Ảnh đại diện',
+ 'users_avatar_desc' => 'Chọn ảnh đê đại hiện cho người dùng này. Ảnh nên có kích cỡ hình vuông 256px.',
+ 'users_preferred_language' => 'Ngôn ngữ ưu tiên',
+ 'users_preferred_language_desc' => 'Tùy chọn này sẽ thay đổi ngôn ngư sử dụng cho giao diện người dùng của ứng dụng. Nó sẽ không ảnh hưởng đến bất cứ nội dung nào người dùng tạo ra.',
+ 'users_social_accounts' => 'Tài khoản MXH',
+ 'users_social_accounts_info' => 'Bạn có thể kết nối đến các tài khoản khác để đăng nhập nhanh chóng và dễ dàng. Ngắt kết nối đến một tài khoản ở đây không thu hồi việc ủy quyền truy cập trước đó. Thu hồi truy cập của các tài khoản kết nối MXH từ trang cài đặt hồ sở của bạn.',
+ 'users_social_connect' => 'Kết nối tài khoản',
+ 'users_social_disconnect' => 'Ngắt kết nối tài khoản',
+ 'users_social_connected' => 'Tài khoản :socialAccount đã được liên kết với hồ sơ của bạn thành công.',
+ 'users_social_disconnected' => 'Tài khoản :socialAccount đã được ngắt kết nối khỏi hồ sơ của bạn thành công.',
+ 'users_api_tokens' => 'Các Token API',
+ 'users_api_tokens_none' => 'Khong có Token API nào được tạo cho người dùng này',
+ 'users_api_tokens_create' => 'Tạo Token',
+ 'users_api_tokens_expires' => 'Hết hạn',
+ 'users_api_tokens_docs' => 'Tài liệu API',
+
+ // API Tokens
+ 'user_api_token_create' => 'Tạo Token API',
+ 'user_api_token_name' => 'Tên',
+ 'user_api_token_name_desc' => 'Đặt cho token của bạn một tên dễ đọc để nhắc nhở mục đích sử dụng của nó trong tương lai.',
+ 'user_api_token_expiry' => 'Ngày hết hạn',
+ 'user_api_token_expiry_desc' => 'Đặt một ngày hết hạn cho token này. Sau ngày này, các yêu cầu được tạo khi sử dụng token này sẽ không còn hoạt động. Để trống trường này sẽ đặt ngày hết hạn sau 100 năm tới.',
+ 'user_api_token_create_secret_message' => 'Ngay sau khi tạo token này một "Mã Token" & "Mật khẩu Token" sẽ được tạo và hiển thị. Mật khẩu sẽ chỉ được hiện một lần duy nhất nên hãy chắc rằng bạn sao lưu giá trị của nó ở nơi an toàn và bảo mật trước khi tiếp tục.',
+ 'user_api_token_create_success' => 'Token API đã được tạo thành công',
+ 'user_api_token_update_success' => 'Token API đã được cập nhật thành công',
+ 'user_api_token' => 'Token API',
+ 'user_api_token_id' => 'Mã Token',
+ 'user_api_token_id_desc' => 'Đây là hệ thống sinh ra định danh không thể chỉnh sửa cho token này, thứ mà sẽ cần phải cung cấp khi yêu cầu API.',
+ 'user_api_token_secret' => 'Mật khẩu Token',
+ 'user_api_token_secret_desc' => 'Đây là mật khẩu được hệ thống tạo ra cho token để phục vụ cho các yêu cầu API này. Nó sẽ chỉ được hiển thị một lần duy nhất nên hãy sao lưu nó vào nơi nào đó an toàn và bảo mật.',
+ 'user_api_token_created' => 'Token được tạo :timeAgo',
+ 'user_api_token_updated' => 'Token được cập nhật :timeAgo',
+ 'user_api_token_delete' => 'Xóa Token',
+ 'user_api_token_delete_warning' => 'Chức năng này sẽ hoàn toàn xóa token API với tên \':tokenName\' từ hệ thống.',
+ 'user_api_token_delete_confirm' => 'Bạn có chắc rằng muốn xóa token API này?',
+ 'user_api_token_delete_success' => 'Token API đã được xóa thành công',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'English',
+ 'ar' => 'العربية',
+ 'cs' => 'Česky',
+ 'da' => 'Đan Mạch',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ]
+ //!////////////////////////////////
+];
--- /dev/null
+<?php
+/**
+ * Validation Lines
+ * The following language lines contain the default error messages used by
+ * the validator class. Some of these rules have multiple versions such
+ * as the size rules. Feel free to tweak each of these messages here.
+ */
+return [
+
+ // Standard laravel validation lines
+ 'accepted' => ':attribute phải được chấp nhận.',
+ 'active_url' => ':attribute không phải là một đường dẫn hợp lệ.',
+ 'after' => ':attribute phải là một ngày sau :date.',
+ 'alpha' => ':attribute chỉ được chứa chữ cái.',
+ 'alpha_dash' => ':attribute chỉ được chứa chữ cái, chữ số, gạch nối và gạch dưới.',
+ 'alpha_num' => ':attribute chỉ được chứa chữ cái hoặc chữ 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 nằm trong khoảng :min đến :max.',
+ 'file' => ':attribute phải nằm trong khoảng :min đến :max KB.',
+ 'string' => ':attribute phải trong khoảng :min đến :max ký tự.',
+ 'array' => ':attribute phải nằm trong khoảng :min đến :max mục.',
+ ],
+ 'boolean' => 'Trường :attribute phải có giá trị đúng hoặc sai.',
+ 'confirmed' => 'Xác nhận :attribute không khớp.',
+ 'date' => ':attribute không phải là ngày hợp lệ.',
+ 'date_format' => ':attribute không khớp với định dạng :format.',
+ 'different' => ':attribute và :other phải khác nhau.',
+ 'digits' => ':attribute phải có :digits chữ số.',
+ 'digits_between' => ':attribute phải có từ :min đến :max chữ số.',
+ 'email' => ':attribute phải là địa chỉ email hợp lệ.',
+ 'ends_with' => ':attribute phải kết thúc bằng một trong các ký tự: :values',
+ 'filled' => 'Trường :attribute là bắt buộc.',
+ 'gt' => [
+ 'numeric' => ':attribute phải lớn hơn :value.',
+ 'file' => ':attribute phải lớn hơn :value KB.',
+ 'string' => ':attribute phải có nhiều hơn :value ký tự.',
+ 'array' => ':attribute phải có nhiều hơn :value mục.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute phải lớn hơn hoặc bằng :value.',
+ 'file' => ':attribute phải lớn hơn hoặc bằng :value KB.',
+ 'string' => ':attribute phải có nhiều hơn hoặc bằng :value ký tự.',
+ 'array' => ':attribute phải có :value mục trở lên.',
+ ],
+ 'exists' => ':attribute đã chọn không hợp lệ.',
+ 'image' => ':attribute phải là ảnh.',
+ 'image_extension' => ':attribute phải có định dạng ảnh hợp lệ và được hỗ trợ.',
+ 'in' => ':attribute đã chọn không hợp lệ.',
+ 'integer' => ':attribute phải là một số nguyên.',
+ 'ip' => ':attribute phải là một địa chỉ IP hợp lệ.',
+ 'ipv4' => ':attribute phải là địa chỉ IPv4 hợp lệ.',
+ 'ipv6' => ':attribute phải là địa chỉ IPv6 hợp lệ.',
+ 'json' => ':attribute phải là một chuỗi JSON hợp lệ.',
+ 'lt' => [
+ 'numeric' => ':attribute phải nhỏ hơn :value.',
+ 'file' => ':attribute phải nhỏ hơn :value KB.',
+ 'string' => ':attribute phải có it hơn :value ký tự.',
+ 'array' => ':attribute phải có ít hơn :value mục.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute phải nhỏ hơn hoặc bằng :value.',
+ 'file' => ':attribute phải nhỏ hơn hoặc bằng :value KB.',
+ 'string' => ':attribute phải có ít hơn hoặc bằng :value ký tự.',
+ 'array' => ':attribute không được có nhiều hơn :value mục.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute không được lớn hơn :max.',
+ 'file' => ':attribute không được lớn hơn :max KB.',
+ 'string' => ':attribute không được nhiều hơn :max ký tự.',
+ 'array' => ':attribute không thể có nhiều hơn :max mục.',
+ ],
+ 'mimes' => ':attribute phải là tệp tin có kiểu: :values.',
+ 'min' => [
+ 'numeric' => ':attribute phải tối thiểu là :min.',
+ 'file' => ':attribute phải tối thiểu là :min KB.',
+ 'string' => ':attribute phải có tối thiểu :min ký tự.',
+ 'array' => ':attribute phải có tối thiểu :min mục.',
+ ],
+ 'no_double_extension' => ':attribute chỉ được có một định dạng mở rộng duy nhất.',
+ 'not_in' => ':attribute đã chọn không hợp lệ.',
+ 'not_regex' => 'Định dạng của :attribute không hợp lệ.',
+ 'numeric' => ':attribute phải là một số.',
+ 'regex' => 'Định dạng của :attribute không hợp lệ.',
+ 'required' => 'Trường :attribute là bắt buộc.',
+ 'required_if' => 'Trường :attribute là bắt buộc khi :other là :value.',
+ 'required_with' => 'Trường :attribute là bắt buộc khi :values tồn tại.',
+ 'required_with_all' => 'Trường :attribute là bắt buộc khi :values tồn tại.',
+ 'required_without' => 'Trường :attribute là bắt buộc khi :values không tồn tại.',
+ 'required_without_all' => 'Trường :attribute là bắt buộc khi không có bất cứ :values nào tồn tại.',
+ 'same' => ':attribute và :other phải trùng khớp với nhau.',
+ 'size' => [
+ 'numeric' => ':attribute phải có cỡ :size.',
+ 'file' => ':attribute phải có cỡ :size KB.',
+ 'string' => ':attribute phải có :size ký tự.',
+ 'array' => ':attribute phải chứa :size mục.',
+ ],
+ 'string' => ':attribute phải là một chuỗi.',
+ 'timezone' => ':attribute phải là một khu vực hợp lệ.',
+ 'unique' => ':attribute đã có người sử dụng.',
+ 'url' => 'Định dạng của :attribute không hợp lệ.',
+ 'uploaded' => 'Tệp tin đã không được tải lên. Máy chủ không chấp nhận các tệp tin với dung lượng lớn như tệp tin trên.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Bắt buộc xác nhận mật khẩu',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
'reset_password' => '重置密码',
'reset_password_send_instructions' => '在下面输入您的Email地址,您将收到一封带有密码重置链接的邮件。',
'reset_password_send_button' => '发送重置链接',
- 'reset_password_sent_success' => '密码重置链接已发送到:email。',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => '您的密码已成功重置。',
'email_reset_subject' => '重置您的:appName密码',
'email_reset_text' => '您收到此电子邮件是因为我们收到了您的帐户的密码重置请求。',
'profile_menu' => '个人资料',
'view_profile' => '查看资料',
'edit_profile' => '编辑资料',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => '信息',
// Error pages
'404_page_not_found' => '无法找到页面',
'sorry_page_not_found' => '对不起,无法找到您想访问的页面。',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => '返回主页',
'error_occurred' => '出现错误',
'app_down' => ':appName现在正在关闭',
'api_user_no_api_permission' => '使用过的 API 令牌的所有者没有进行API 调用的权限',
'api_user_token_expired' => '所使用的身份令牌已过期',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => '发送测试电子邮件时出现错误:',
+
];
'password' => '密码必须至少包含六个字符并与确认相符。',
'user' => "使用该Email地址的用户不存在。",
- 'token' => '此密码重置令牌无效。',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => '我们已经通过Email发送您的密码重置链接!',
'reset' => '您的密码已被重置!',
'reg_enable_toggle' => '启用注册',
'reg_enable_desc' => '启用注册后,用户将可以自己注册为站点用户。 注册后,他们将获得一个默认的单一用户角色。',
'reg_default_role' => '注册后的默认用户角色',
- 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
- 'reg_email_confirmation' => '邮箱确认n',
+ 'reg_enable_external_warning' => '当启用外部LDAP或者SAML认证时,上面的选项会被忽略。当使用外部系统认证认证成功时,将自动创建非现有会员的用户账户。',
+ 'reg_email_confirmation' => '邮箱确认',
'reg_email_confirmation_toggle' => '需要电子邮件确认',
'reg_confirm_email_desc' => '如果使用域名限制,则需要Email验证,并且该值将被忽略。',
'reg_confirm_restrict_domain' => '域名限制',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => '丹麦',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
'reset_password' => '重置密碼',
'reset_password_send_instructions' => '在下方輸入您的Email位址,您將收到一封帶有密碼重置連結的郵件。',
'reset_password_send_button' => '發送重置連結',
- 'reset_password_sent_success' => '密碼重置連結已發送到:email。',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
'reset_password_success' => '您的密碼已成功重置。',
'email_reset_subject' => '重置您的:appName密碼',
'email_reset_text' => '您收到此電子郵件是因為我們收到了您的帳號的密碼重置請求。',
'profile_menu' => '個人資料菜單',
'view_profile' => '檢視資料',
'edit_profile' => '編輯資料',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
// Layout tabs
'tab_info' => '訊息',
// Error pages
'404_page_not_found' => '無法找到頁面',
'sorry_page_not_found' => '對不起,無法找到您想進入的頁面。',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
'return_home' => '返回首頁',
'error_occurred' => '發生錯誤',
'app_down' => ':appName現在正在關閉',
'api_user_no_api_permission' => '使用的API令牌的擁有者者無權進行API調用',
'api_user_token_expired' => '授權令牌已過期',
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
];
'password' => '密碼必須至少包含六個字元並與確認相符。',
'user' => "使用該Email位址的使用者不存在。",
- 'token' => '此密碼重置 Session 無效。',
+ 'token' => 'The password reset token is invalid for this email address.',
'sent' => '我們已經透過Email發送您的密碼重置連結。',
'reset' => '您的密碼已被重置。',
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
+ 'cs' => 'Česky',
'da' => '丹麥',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hu' => 'Magyar',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
'nl' => 'Nederlands',
+ 'pl' => 'Polski',
'pt_BR' => 'Português do Brasil',
+ 'ru' => 'Русский',
'sk' => 'Slovensky',
- 'cs' => 'Česky',
+ 'sl' => 'Slovenščina',
'sv' => 'Svenska',
- 'ko' => '한국어',
- 'ja' => '日本語',
- 'pl' => 'Polski',
- 'it' => 'Italian',
- 'ru' => 'Русский',
+ 'tr' => 'Türkçe',
'uk' => 'Українська',
+ 'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
- 'hu' => 'Magyar',
- 'tr' => 'Türkçe',
]
//!////////////////////////////////
];
* Callouts
*/
.callout {
- border-left: 3px solid #BBB;
+ border-inline-start: 3px solid #BBB;
background-color: #EEE;
padding: $-s $-s $-s $-xl;
display: block;
position: relative;
+ overflow: auto;
&:before {
background-image: url('data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiMwMTUzODAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4gICAgPHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6Ii8+PC9zdmc+');
background-repeat: no-repeat;
}
&.success {
border-left-color: $positive;
- background-color: lighten($positive, 68%);
- color: darken($positive, 16%);
+ @include lightDark(background-color, lighten($positive, 68%), darken($positive, 22%));
+ @include lightDark(color, darken($positive, 16%), lighten($positive, 5%));
}
&.success:before {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiMzNzZjMzkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4gICAgPHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6Ii8+PC9zdmc+");
}
&.danger {
border-left-color: $negative;
- background-color: lighten($negative, 56%);
- color: darken($negative, 20%);
+ @include lightDark(background-color, lighten($negative, 56%), darken($negative, 30%));
+ @include lightDark(color, darken($negative, 20%), lighten($negative, 5%));
}
&.danger:before {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiNiOTE4MTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICAgIDxwYXRoIGQ9Ik0xNS43MyAzSDguMjdMMyA4LjI3djcuNDZMOC4yNyAyMWg3LjQ2TDIxIDE1LjczVjguMjdMMTUuNzMgM3pNMTIgMTcuM2MtLjcyIDAtMS4zLS41OC0xLjMtMS4zIDAtLjcyLjU4LTEuMyAxLjMtMS4zLjcyIDAgMS4zLjU4IDEuMyAxLjMgMCAuNzItLjU4IDEuMy0xLjMgMS4zem0xLTQuM2gtMlY3aDJ2NnoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==");
}
&.info {
border-left-color: $info;
- background-color: lighten($info, 50%);
- color: darken($info, 20%);
+ @include lightDark(color, darken($info, 20%), lighten($info, 10%));
+ @include lightDark(background-color, lighten($info, 50%), darken($info, 35%));
}
&.warning {
border-left-color: $warning;
- background-color: lighten($warning, 50%);
- color: darken($warning, 20%);
+ @include lightDark(background-color, lighten($warning, 50%), darken($warning, 36%));
+ @include lightDark(color, darken($warning, 20%), $warning);
}
&.warning:before {
background-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiNiNjUzMWMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+ICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4gICAgPHBhdGggZD0iTTEgMjFoMjJMMTIgMiAxIDIxem0xMi0zaC0ydi0yaDJ2MnptMC00aC0ydi00aDJ2NHoiLz48L3N2Zz4=");
*/
.card {
- background-color: #FFF;
+ @include lightDark(background-color, #FFF, #222);
box-shadow: $bs-card;
border-radius: 3px;
border: 1px solid transparent;
.card.drag-card {
border: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #000);
+ @include lightDark(background-color, #fff, #333);
border-radius: 4px;
display: flex;
padding: 0 0 0 ($-s + 28px);
background-color: #EEE;
}
.svg-icon {
- margin-right: 0px;
+ margin-inline-end: 0px;
}
}
- > div .outline input {
+ .outline input {
margin: $-s 0;
width: 100%;
}
+ .outline {
+ position: relative;
+ }
.handle {
- background-color: #EEE;
+ @include lightDark(background-color, #eee, #2d2d2d);
left: 0;
position: absolute;
top: 0;
display: flex;
flex-direction: column;
border: 1px solid #ddd;
+ @include lightDark(border-color, #ddd, #000);
margin-bottom: $-l;
border-radius: 4px;
overflow: hidden;
&:hover {
color: $text-dark;
text-decoration: none;
- box-shadow: $bs-card;
+ @include lightDark(box-shadow, $bs-card, $bs-card-dark);
}
h2 {
width: 100%;
.content-wrap.card {
padding: $-m $-xxl;
- margin-left: auto;
- margin-right: auto;
+ margin-inline-start: auto;
+ margin-inline-end: auto;
margin-bottom: $-xl;
overflow: initial;
min-height: 60vh;
.tag-item {
display: inline-flex;
margin-bottom: $-xs;
- margin-right: $-xs;
+ margin-inline-end: $-xs;
border-radius: 4px;
border: 1px solid #CCC;
overflow: hidden;
font-size: 0.85em;
a, a:hover, a:active {
padding: 4px 8px;
- color: #777;
+ @include lightDark(color, #777, #999);
transition: background-color ease-in-out 80ms;
text-decoration: none;
}
a:hover {
- background-color: rgba(255, 255, 255, 0.7);
+ @include lightDark(background-color, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.3));
}
svg {
fill: #888;
}
.tag-value {
- border-left: 1px solid #DDD;
- background-color: rgba(255, 255, 255, 0.5);
+ border-inline-start: 1px solid #DDD;
+ @include lightDark(background-color, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.2))
}
}
box-shadow: none;
background-color: var(--color-primary);
color: #FFF;
- fill: #FFF;
text-transform: uppercase;
border: 1px solid var(--color-primary);
vertical-align: top;
+ @include lightDark(filter, none, saturate(0.8) brightness(0.8));
&:hover, &:focus, &:active {
background-color: var(--color-primary);
text-decoration: none;
color: #FFFFFF;
}
&:hover {
- box-shadow: $bs-light;
+ @include lightDark(box-shadow, $bs-light, $bs-dark);
filter: brightness(110%);
}
&:focus {
.button.outline {
background-color: transparent;
- color: #666;
+ @include lightDark(color, #666, #aaa);
fill: currentColor;
border: 1px solid #CCC;
&:hover, &:focus, &:active {
border: 1px solid #CCC;
box-shadow: none;
background-color: #F2F2F2;
+ @include lightDark(background-color, #f2f2f2, #555);
filter: none;
}
&:active {
}
.button + .button {
- margin-left: $-s;
+ margin-inline-start: $-s;
}
.button.small {
font-size: 0.75rem;
line-height: 1.4em;
color: var(--color-primary);
- fill: var(--color-primary);
+ @include whenDark {
+ color: #AAA;
+ }
&:active {
outline: 0;
}
.button.block {
width: 100%;
- text-align: left;
+ text-align: start;
display: block;
}
.button.icon {
.svg-icon {
- margin-right: 0;
+ margin-inline-end: 0;
}
}
.button.svg {
+ display: flex;
+ align-items: center;
+ padding: $-s $-m;
+ padding-bottom: ($-s - 2px);
svg {
display: inline-block;
- position: absolute;
- left: $-m;
- top: $-s - 2px;
width: 24px;
height: 24px;
+ bottom: auto;
+ margin-inline-end: $-m;
}
- padding: $-s $-m ($-s - 2px) ($-m*2 + 24px);
}
.button[disabled] {
/* STOP */
+/**
+ * Codemirror Darcula theme
+ */
+
+/**
+ Name: IntelliJ IDEA darcula theme
+ From IntelliJ IDEA by JetBrains
+ */
+
+.cm-s-darcula { font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;}
+.cm-s-darcula.CodeMirror { background: #2B2B2B; color: #A9B7C6; }
+
+.cm-s-darcula span.cm-meta { color: #BBB529; }
+.cm-s-darcula span.cm-number { color: #6897BB; }
+.cm-s-darcula span.cm-keyword { color: #CC7832; line-height: 1em; font-weight: bold; }
+.cm-s-darcula span.cm-def { color: #A9B7C6; font-style: italic; }
+.cm-s-darcula span.cm-variable { color: #A9B7C6; }
+.cm-s-darcula span.cm-variable-2 { color: #A9B7C6; }
+.cm-s-darcula span.cm-variable-3 { color: #9876AA; }
+.cm-s-darcula span.cm-type { color: #AABBCC; font-weight: bold; }
+.cm-s-darcula span.cm-property { color: #FFC66D; }
+.cm-s-darcula span.cm-operator { color: #A9B7C6; }
+.cm-s-darcula span.cm-string { color: #6A8759; }
+.cm-s-darcula span.cm-string-2 { color: #6A8759; }
+.cm-s-darcula span.cm-comment { color: #61A151; font-style: italic; }
+.cm-s-darcula span.cm-link { color: #CC7832; }
+.cm-s-darcula span.cm-atom { color: #CC7832; }
+.cm-s-darcula span.cm-error { color: #BC3F3C; }
+.cm-s-darcula span.cm-tag { color: #629755; font-weight: bold; font-style: italic; text-decoration: underline; }
+.cm-s-darcula span.cm-attribute { color: #6897bb; }
+.cm-s-darcula span.cm-qualifier { color: #6A8759; }
+.cm-s-darcula span.cm-bracket { color: #A9B7C6; }
+.cm-s-darcula span.cm-builtin { color: #FF9E59; }
+.cm-s-darcula span.cm-special { color: #FF9E59; }
+.cm-s-darcula span.cm-matchhighlight { color: #FFFFFF; background-color: rgba(50, 89, 48, .7); font-weight: normal;}
+.cm-s-darcula span.cm-searching { color: #FFFFFF; background-color: rgba(61, 115, 59, .7); font-weight: normal;}
+
+.cm-s-darcula .CodeMirror-cursor { border-left: 1px solid #A9B7C6; }
+.cm-s-darcula .CodeMirror-activeline-background { background: #323232; }
+.cm-s-darcula .CodeMirror-gutters { background: #313335; border-right: 1px solid #313335; }
+.cm-s-darcula .CodeMirror-guttermarker { color: #FFEE80; }
+.cm-s-darcula .CodeMirror-guttermarker-subtle { color: #D0D0D0; }
+.cm-s-darcula .CodeMirrir-linenumber { color: #606366; }
+.cm-s-darcula .CodeMirror-matchingbracket { background-color: #3B514D; color: #FFEF28 !important; font-weight: bold; }
+
+.cm-s-darcula div.CodeMirror-selected { background: #214283; }
+
+.CodeMirror-hints.darcula {
+ font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
+ color: #9C9E9E;
+ background-color: #3B3E3F !important;
+}
+
+.CodeMirror-hints.darcula .CodeMirror-hint-active {
+ background-color: #494D4E !important;
+ color: #9C9E9E !important;
+}
/**
* Custom BookStack overrides
font-size: 12px;
height: auto;
margin-bottom: $-l;
- border: 1px solid #DDD;;
+ border: 1px solid;
+ @include lightDark(border-color, #DDD, #111);
+}
+html.dark-mode .CodeMirror pre {
+ background-color: transparent;
}
.cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 0; color: #333; }
top: -1px;
right: -1px;
background-color: #EEE;
+ border: 1px solid #DDD;
+ @include lightDark(background-color, #eee, #333);
+ @include lightDark(border-color, #ddd, #444);
+ @include lightDark(fill, #444, #888);
padding: $-xs;
line-height: 0;
- border: 1px solid #DDD;
cursor: pointer;
- fill: #444;
z-index: 5;
- transition: all ease-in 240ms;
user-select: none;
opacity: 0;
pointer-events: none;
svg {
- transition: transform ease-in 240ms;
+ transition: all ease-in 240ms;
transform: translateY(0);
}
&.success {
background-color: lighten($positive, 10%);
- fill: #FFF;
svg {
+ fill: #FFF;
transform: translateY(-3px);
}
}
}
.primary-background-light {
background-color: var(--color-primary-light);
+ @include whenDark {
+ background: #000;
+ .text-primary {
+ color: #AAA !important;
+ }
+ }
}
/*
}
.text-muted {
- color: #575757 !important;
- fill: #575757 !important;
+ @include lightDark(color, #575757, #888888, true);
+ fill: currentColor !important;
}
.text-dark {
- color: #222 !important;
- fill: #222 !important;
+ @include lightDark(color, #222, #ccc, true);
+ fill: currentColor !important;
+}
+
+.text-white {
+ color: #fff;
+ fill: currentColor !important;
}
/*
}
.bg-shelf {
background-color: var(--color-bookshelf);
-}
\ No newline at end of file
+}
margin: $-xl;
padding: $-m $-l;
background-color: #FFF;
+ @include lightDark(background-color, #fff, #444);
border-radius: 4px;
- border-left: 6px solid currentColor;
+ border-inline-start: 6px solid currentColor;
box-shadow: $bs-large;
z-index: 999999;
cursor: pointer;
svg {
width: 2.8rem;
height: 2.8rem;
- padding-right: $-s;
+ padding-inline-end: $-s;
fill: currentColor;
}
.dismiss {
margin-top: -8px;
svg {
height: 1.0rem;
- color: #444;
+ @include lightDark(color, #444, #888);
}
}
span {
vertical-align: middle;
line-height: 1.3;
+ @include whenDark {
+ color: #BBB;
+ }
}
&.pos {
color: $positive;
transition: all ease-in-out 180ms;
user-select: none;
svg[data-icon="caret-right"] {
- margin-right: 0;
+ margin-inline-end: 0;
font-size: 1rem;
transition: all ease-in-out 180ms;
transform: rotate(0deg);
transform: rotate(90deg);
}
svg[data-icon="caret-right"] + * {
- margin-left: $-xs;
+ margin-inline-start: $-xs;
}
}
-[overlay] {
- background-color: rgba(0, 0, 0, 0.333);
+[overlay], .popup-background {
+ @include lightDark(background-color, rgba(0, 0, 0, 0.333), rgba(0, 0, 0, 0.6));
position: fixed;
z-index: 95536;
width: 100%;
}
.popup-body {
- background-color: #FFF;
+ @include lightDark(background-color, #fff, #333);
max-height: 90%;
max-width: 1200px;
width: 90%;
.dropzone-container {
position: relative;
- background-color: #EEE;
+ @include lightDark(background-color, #eee, #222);
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3E%3Cpath fill='%23a9a9a9' fill-opacity='0.52' d='M1 3h1v1H1V3zm2-2h1v1H3V1z'%3E%3C/path%3E%3C/svg%3E");
}
cursor: pointer;
width: (100%/6);
height: auto;
- border: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #000);
box-shadow: 0 0 0 0 rgba(0, 0, 0, 0);
transition: all cubic-bezier(.4, 0, 1, 1) 160ms;
overflow: hidden;
&.selected {
- //transform: scale3d(0.92, 0.92, 0.92);
- border: 4px solid #FFF;
- overflow: hidden;
- border-radius: 8px;
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2);
+ transform: scale3d(0.92, 0.92, 0.92);
+ outline: currentColor 2px solid;
}
img {
width: 100%;
}
}
-#image-manager .load-more {
+.image-manager .load-more {
display: block;
text-align: center;
- background-color: #EEE;
+ @include lightDark(background-color, #EEE, #444);
padding: $-s $-m;
color: #AAA;
clear: both;
font-style: italic;
}
+.image-manager .loading-container {
+ text-align: center;
+}
+
.image-manager-sidebar {
width: 300px;
overflow-y: auto;
overflow-x: hidden;
- border-left: 1px solid #DDD;
+ border-inline-start: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #000);
.inner {
+ min-height: auto;
padding: $-m;
}
img {
}
.dropzone-container {
border-bottom: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #000);
}
}
}
}
+.image-manager .corner-button {
+ margin: 0;
+ border-radius: 0;
+ padding: $-m;
+}
+
// Dropzone
/*
* The MIT License
*/
.dz-message {
font-size: 1em;
- line-height: 2.35;
+ line-height: 2.85;
font-style: italic;
color: #888;
text-align: center;
display: block;
top: 50%;
left: 50%;
- margin-left: -27px;
+ margin-inline-start: -27px;
margin-top: -35px;
}
top: 50%;
margin-top: -8px;
width: 80px;
- margin-left: -40px;
+ margin-inline-start: -40px;
background: rgba(255, 255, 255, 0.9);
transform: scale(1);
border-radius: 8px;
left: 44px;
width: 0;
height: 0;
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
+ border-inline-start: 6px solid transparent;
+ border-inline-end: 6px solid transparent;
border-bottom: 6px solid $negative;
}
.tab-container .nav-tabs {
- text-align: left;
+ text-align: start;
border-bottom: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #444);
margin-bottom: $-m;
.tab-item {
padding: $-s;
- color: #666;
+ @include lightDark(color, #666, #999);
&.selected {
border-bottom-width: 3px;
}
a, .tab-item {
padding: $-m;
display: inline-block;
- color: #666;
- fill: #666;
+ @include lightDark(color, #666, #999);
cursor: pointer;
+ border-right: 1px solid rgba(0, 0, 0, 0.1);
+ border-bottom: 2px solid transparent;
&.selected {
border-bottom: 2px solid var(--color-primary);
}
+ &:last-child {
+ border-right: 0;
+ }
}
}
display: none;
}
-#code-editor .CodeMirror {
+.code-editor .CodeMirror {
height: 400px;
}
-#code-editor .lang-options {
+.code-editor .lang-options {
max-width: 480px;
margin-bottom: $-s;
a {
- margin-right: $-xs;
+ margin-inline-end: $-xs;
text-decoration: underline;
}
}
@include smaller-than($m) {
- #code-editor .lang-options {
+ .code-editor .lang-options {
max-width: 100%;
}
- #code-editor .CodeMirror {
+ .code-editor .CodeMirror {
height: 200px;
}
}
.comment-box {
- border: 1px solid #DDD;
border-radius: 4px;
- background-color: #FFF;
+ border: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #000);
+ @include lightDark(background-color, #FFF, #222);
.content {
font-size: 0.666em;
p, ul, ol {
}
a { color: #666; }
span {
- padding-left: $-xxs;
+ padding-inline-start: $-xxs;
}
}
.text-muted {
height: 100%;
display: flex;
flex-direction: column;
- border-left: 1px solid #DDD;
+ border-inline-start: 1px solid #DDD;
}
.template-item-actions button {
cursor: pointer;
.input-base {
- background-color: #FFF;
border-radius: 3px;
border: 1px solid #D4D4D4;
+ @include lightDark(background-color, #fff, #333);
+ @include lightDark(border-color, #d4d4d4, #111);
+ @include lightDark(color, #666, #AAA);
display: inline-block;
- font-size: $fs-s;
+ font-size: $fs-m;
padding: $-xs*1.5;
- color: #666;
width: 250px;
max-width: 100%;
display: flex;
flex-direction: column;
border: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #000);
width: 50%;
max-width: 50%;
}
}
.markdown-display {
- margin-left: -1px;
+ margin-inline-start: -1px;
}
.markdown-editor-display {
- background-color: #FFFFFF;
+ background-color: #fff;
body {
- background-color: #FFFFFF;
- padding-left: 16px;
- padding-right: 16px;
+ background-color: #fff;
+ padding-inline-start: 16px;
+ margin-inline-end: 16px;
}
[drawio-diagram]:hover {
outline: 2px solid var(--color-primary);
}
}
+html.markdown-editor-display.dark-mode {
+ background-color: #222;
+ body {
+ background-color: #222;
+ }
+}
+
.editor-toolbar {
width: 100%;
padding: $-xs $-m;
line-height: 1.6;
border-bottom: 1px solid #DDD;
background-color: #EEE;
+ @include lightDark(background-color, #eee, #111);
+ @include lightDark(border-color, #ddd, #000);
flex: none;
&:after {
content: '';
display: block;
clear: both;
}
+ @include whenDark {
+ button {
+ color: #AAA;
+ }
+ }
}
label {
+ @include lightDark(color, #666, #ddd);
display: block;
line-height: 1.4em;
font-size: 0.94em;
font-weight: 400;
- color: #666;
padding-bottom: 2px;
margin-bottom: 0.2em;
&.inline {
font-weight: 400;
user-select: none;
input[type="radio"], input[type="checkbox"] {
- margin-right: $-xs;
+ margin-inline-end: $-xs;
}
}
label.inline.checkbox {
- margin-right: $-m;
+ margin-inline-end: $-m;
}
label + p.small {
border: 1px solid #DDD;
border-radius: 4px;
.collapse-title {
- margin-left: -$-m;
- margin-right: -$-m;
+ margin-inline-start: -$-m;
+ margin-inline-end: -$-m;
padding: $-s $-m;
display: block;
width: calc(100% + 32px);
- text-align: left;
+ text-align: start;
}
.collapse-title, .collapse-title label {
cursor: pointer;
.collapse-title label:before {
display: inline-block;
content: '▸';
- margin-right: $-m;
+ margin-inline-end: $-m;
transition: all ease-in-out 400ms;
transform: rotate(0);
}
.title-input.page-title {
font-size: 0.8em;
+ @include lightDark(background-color, #fff, #333);
.input {
border: 0;
margin-bottom: -1px;
div[editor-type="markdown"] .title-input.page-title input[type="text"] {
max-width: 100%;
+ border-radius: 0;
}
.search-box {
button {
background-color: transparent;
border: none;
- fill: #666;
+ @include lightDark(color, #666, #AAA);
padding: 0;
cursor: pointer;
position: absolute;
left: 8px;
top: 9px;
+ @include rtl {
+ right: 8px;
+ left: auto;
+ }
}
input {
display: block;
- padding-left: $-l + 4px;
+ padding-inline-start: $-l + 4px;
width: 300px;
max-width: 100%;
}
display: block;
z-index: 11;
top: 0;
- color: #fff;
- fill: #fff;
+ color: rgb(250, 250, 250);
border-bottom: 1px solid #DDD;
box-shadow: $bs-card;
padding: $-xxs 0;
+ @include lightDark(border-bottom-color, #DDD, #000);
+ @include whenDark {
+ filter: saturate(0.8) brightness(0.8);
+ }
.links {
display: inline-block;
vertical-align: top;
display: inline-block;
padding: $-m;
color: #FFF;
- fill: #FFF;
}
.dropdown-container {
- padding-left: $-m;
- padding-right: 0;
+ padding-inline-start: $-m;
+ padding-inline-end: 0;
}
.avatar, .user-name {
display: inline-block;
vertical-align: top;
}
> span {
- padding-left: $-xs;
+ padding-inline-start: $-xs;
display: inline-block;
padding-top: $-xxs;
}
font-size: 18px;
}
@include between($l, $xl) {
- padding-left: $-xs;
+ padding-inline-start: $-xs;
.name {
display: none;
}
border-radius: 40px;
color: #EEE;
z-index: 2;
- padding-left: 40px;
+ padding-inline-start: 40px;
&:focus {
outline: none;
border: 1px solid rgba(255, 255, 255, 0.6);
}
}
button {
- fill: #EEE;
z-index: 1;
left: 16px;
+ @include lightDark(color, rgba(255, 255, 255, 0.8), #AAA);
+ @include rtl {
+ left: auto;
+ right: 16px;
+ }
svg {
- margin-right: 0;
+ margin-block-end: 0;
}
}
::-webkit-input-placeholder { /* Chrome/Opera/Safari */
font-size: 1.8em;
color: #fff;
font-weight: 400;
- padding: 14px $-l 14px 0;
+ @include padding(14px, $-l, 14px, 0);
vertical-align: top;
line-height: 1;
}
.logo-image {
- margin: $-xs $-s $-xs 0;
+ @include margin($-xs, $-s, $-xs, 0);
vertical-align: top;
height: 43px;
}
margin: 0;
bottom: -2px;
}
+ @include rtl() {
+ left: $-m;
+ right: auto;
+ }
}
+
+
@include smaller-than($l) {
header .header-links {
+ @include lightDark(background-color, #fff, #333);
display: none;
- background-color: #FFF;
z-index: 10;
right: $-m;
border-radius: 4px;
display: block;
}
}
- header .links a, header .dropdown-container ul li a {
- text-align: left;
+ header .links a, header .dropdown-container ul li a, header .dropdown-container ul li button {
+ text-align: start;
display: block;
padding: $-s $-m;
color: $text-dark;
- fill: $text-dark;
+ @include lightDark(color, $text-dark, #eee);
svg {
- margin-right: $-s;
+ margin-inline-end: $-s;
}
&:hover {
- background-color: #EEE;
- color: #444;
- fill: #444;
+ @include lightDark(background-color, #eee, #333);
+ @include lightDark(color, #000, #fff);
text-decoration: none;
}
}
header .dropdown-container {
display: block;
- padding-left: 0;
+ padding-inline-start: 0;
}
header .links {
display: block;
border-bottom: 3px solid #BBB;
cursor: pointer;
&:first-child {
- border-right: 1px solid #DDD;
+ border-inline-end: 1px solid #DDD;
}
&.active {
border-bottom-color: currentColor;
display: none;
}
> span:first-child {
- margin-right: 0;
+ margin-inline-end: 0;
}
}
}
}
}
.svg-icon {
- margin-right: 0;
+ margin-inline-end: 0;
}
}
position: absolute;
z-index: 80;
right: -$-m;
+ @include rtl {
+ right: auto;
+ left: -$-m;
+ }
.breadcrumb-listing-search .svg-icon {
position: absolute;
left: $-s;
+ @include rtl {
+ right: $-s;
+ left: auto;
+ }
top: 11px;
fill: #888;
pointer-events: none;
.breadcrumb-listing-entity-list {
max-height: 400px;
overflow-y: scroll;
- text-align: left;
+ text-align: start;
}
input {
- padding-left: $-xl;
+ padding-inline-start: $-xl;
border-radius: 0;
border: 0;
border-bottom: 1px solid #DDD;
display: inline-block;
padding: $-xs $-s;
&:last-child {
- padding-right: 0;
+ padding-inline-end: 0;
}
&:first-child {
- padding-left: 0;
+ padding-inline-start: 0;
}
}
.action-buttons .dropdown-container:last-child a {
- padding-right: 0;
- padding-left: $-s;
+ padding-inline-end: 0;
+ padding-inline-start: $-s;
}
.action-buttons {
- text-align: right;
+ text-align: end;
&.text-left {
- text-align: left;
+ text-align: start;
.text-button {
- padding-right: $-m;
- padding-left: 0;
+ padding-inline-end: $-m;
+ padding-inline-start: 0;
}
}
&.text-center {
padding: $-xs $-xs;
}
.action-buttons .dropdown-container:last-child a {
- padding-left: $-xs;
+ padding-inline-start: $-xs;
}
}
\ No newline at end of file
&.flexbox {
overflow-y: hidden;
}
+ &.dark-mode {
+ background-color: #111;
+ }
}
body {
font-size: $fs-m;
line-height: 1.6;
- color: #444;
+ @include lightDark(color, #444, #AAA);
-webkit-font-smoothing: antialiased;
- background-color: #F2F2F2;
}
\ No newline at end of file
*/
.container {
max-width: $xxl;
- margin-left: auto;
- margin-right: auto;
- padding-left: $-m;
- padding-right: $-m;
+ margin-inline-start: auto;
+ margin-inline-end: auto;
+ padding-inline-start: $-m;
+ padding-inline-end: $-m;
&.small {
max-width: 840px;
}
&.v-center {
align-items: center;
}
+ &.v-end {
+ align-items: end;
+ }
&.no-gap {
grid-row-gap: 0;
grid-column-gap: 0;
position: relative;
}
+.flex-container-column {
+ display: flex;
+ flex-direction: column;
+}
+
.flex {
min-height: 0;
flex: 1;
}
+.justify-flex-end {
+ justify-content: flex-end;
+}
+
/**
* Display and float utilities
}
.hidden {
- display: none;
+ display: none !important;
}
.float {
/**
* Fixes
*/
-.clearfix:before,
-.clearfix:after {
+.clearfix::before,
+.clearfix::after {
content: " ";
display: table;
}
-.clearfix:after {
+.clearfix::after {
clear: both;
}
*/
.tri-layout-container {
display: grid;
- margin-left: $-xl;
- margin-right: $-xl;
+ margin-inline-start: $-xl;
+ margin-inline-end: $-xl;
grid-template-columns: 1fr 4fr 1fr;
grid-template-areas: "a b c";
grid-column-gap: $-xxl;
". b b";
grid-template-columns: 1fr 3fr;
grid-template-rows: min-content min-content 1fr;
- padding-right: $-l;
+ padding-inline-end: $-l;
}
}
@include between($l, $xxl) {
grid-template-areas: none;
grid-template-columns: 1fr;
grid-column-gap: 0;
- padding-right: $-xs;
- padding-left: $-xs;
+ padding-inline-end: $-xs;
+ padding-inline-start: $-xs;
.tri-layout-left-contents, .tri-layout-right-contents {
- padding-left: $-m;
- padding-right: $-m;
+ padding-inline-start: $-m;
+ padding-inline-end: $-m;
}
.tri-layout-left > *, .tri-layout-right > * {
display: none;
@include smaller-than($m) {
.tri-layout-container {
- margin-left: 0;
- margin-right: 0;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
}
}
\ No newline at end of file
justify-self: stretch;
align-self: stretch;
height: auto;
- margin-right: $-l;
+ margin-inline-end: $-l;
}
.icon:after {
opacity: 0.5;
border-radius: 0 4px 4px 0;
padding: $-xs $-m;
width: 100%;
- text-align: left;
+ text-align: start;
}
.chapter-expansion-toggle:hover {
background-color: rgba(0, 0, 0, 0.06);
.sidebar-page-nav {
$nav-indent: $-m;
list-style: none;
- margin: $-s 0 $-m $-xs;
+ @include margin($-s, 0, $-m, $-xs);
position: relative;
&:after {
content: '';
display: block;
position: absolute;
left: 0;
- background-color: rgba(0, 0, 0, 0.2);
+ @include rtl {
+ left: auto;
+ right: 0;
+ }
+ @include lightDark(background-color, rgba(0, 0, 0, 0.2), rgba(255, 255, 255, 0.2));
width: 2px;
top: 5px;
bottom: 5px;
position: relative;
}
.h1 {
- padding-left: $nav-indent;
+ padding-inline-start: $nav-indent;
}
.h2 {
- padding-left: $nav-indent * 1.5;
+ padding-inline-start: $nav-indent * 1.5;
}
.h3 {
- padding-left: $nav-indent * 2;
+ padding-inline-start: $nav-indent * 2;
}
.h4 {
- padding-left: $nav-indent * 2.5;
+ padding-inline-start: $nav-indent * 2.5;
}
.h5 {
- padding-left: $nav-indent*3;
+ padding-inline-start: $nav-indent*3;
}
.h6 {
- padding-left: $nav-indent*3.5;
+ padding-inline-start: $nav-indent*3.5;
}
.current-heading {
font-weight: bold;
}
li:not(.current-heading) .sidebar-page-nav-bullet {
- background-color: #BBB !important;
+ @include lightDark(background-color, #BBB, #666, true);
}
.sidebar-page-nav-bullet {
width: 6px;
top: 30%;
border-radius: 50%;
box-shadow: 0 0 0 6px #F2F2F2;
+ @include lightDark(box-shadow, 0 0 0 6px #F2F2F2, 0 0 0 6px #111);
z-index: 1;
+ @include rtl {
+ left: auto;
+ right: -2px;
+ }
}
}
// Sidebar list
.book-tree .sidebar-page-list {
list-style: none;
- margin: $-xs -$-s 0 -$-s;
- padding-left: 0;
- padding-right: 0;
+ @include margin($-xs, -$-s, 0, -$-s);
+ padding-inline-start: 0;
+ padding-inline-end: 0;
position: relative;
&:after, .sub-menu:after {
left: $-m;
top: 1rem;
bottom: 1rem;
- border-left: 4px solid rgba(0, 0, 0, 0.1);
+ border-inline-start: 4px solid rgba(0, 0, 0, 0.1);
z-index: 0;
+ @include rtl {
+ left: auto;
+ right: $-m;
+ }
}
ul {
list-style: none;
- padding-left: 1rem;
- padding-right: 0;
+ padding-inline-start: 1rem;
+ padding-inline-end: 0;
}
.entity-list-item {
}
.entity-list-item.no-hover {
margin-top: -$-xs;
- padding-right: 0;
+ padding-inline-end: 0;
}
.entity-list-item-name {
font-size: 1em;
.chapter-child-menu {
font-size: .8rem;
margin-top: -.2rem;
- margin-left: -1rem;
+ margin-inline-start: -1rem;
}
[chapter-toggle] {
- padding-left: .7rem;
+ padding-inline-start: .7rem;
padding-bottom: .2rem;
}
.entity-list-item .icon {
.chapter-child-menu {
ul.sub-menu {
display: none;
- padding-left: 0;
+ padding-inline-start: 0;
position: relative;
}
[chapter-toggle].open + .sub-menu {
justify-content: space-between;
}
.sort-box-options .button {
- margin-left: 0;
+ margin-inline-start: 0;
}
.sortable-page-list {
- margin-left: 0;
+ margin-inline-start: 0;
padding: 0;
.entity-list-item > span:first-child {
align-self: flex-start;
}
+ .sortable-selected .entity-list-item, .sortable-selected .entity-list-item:hover {
+ outline: 1px dotted var(--color-primary);
+ background-color: var(--color-primary-light) !important;
+ }
.entity-list-item > div {
display: block;
flex: 1;
}
> ul {
- margin-left: 0;
+ margin-inline-start: 0;
}
ul {
margin-bottom: $-m;
margin-top: 0;
- padding-left: $-m;
+ padding-inline-start: $-m;
}
li {
border: 1px solid #DDD;
min-height: 38px;
}
li.text-page, li.text-chapter {
- border-left: 2px solid currentColor;
+ border-inline-start: 2px solid currentColor;
}
li:first-child {
margin-top: $-xs;
display: inline-block;
list-style: none;
margin: $-m 0;
- padding-left: 1px;
+ padding-inline-start: 1px;
li {
float: left;
}
display: block;
padding: $-xxs $-s;
border: 1px solid #CCC;
- margin-left: -1px;
+ margin-inline-start: -1px;
user-select: none;
- &.disabled {
- cursor: not-allowed;
- }
+ @include lightDark(color, #555, #eee);
+ @include lightDark(border-color, #ccc, #666);
+ }
+ li.disabled {
+ cursor: not-allowed;
}
li.active span {
- color: #FFF;
+ @include lightDark(color, #111, #eee);
+ @include lightDark(background-color, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.5));
}
}
color: #666;
}
> span:first-child {
- margin-right: $-m;
+ margin-inline-end: $-m;
flex-basis: 1.88em;
flex: none;
}
> span:last-child {
flex: 1;
- text-align: left;
+ text-align: start;
}
&:not(.no-hover) {
cursor: pointer;
border-color: rgba(0, 0, 0, 0.1);
}
&:focus {
- background-color: #eee;
+ @include lightDark(background-color, #eee, #222);
outline: 1px dotted #666;
outline-offset: -2px;
}
position: relative;
top: 1px;
svg {
- margin-right: 0;
+ margin-inline-end: 0;
}
}
.card .entity-list-item:not(.no-hover):hover {
- background-color: #F2F2F2;
+ @include lightDark(background-color, #F2F2F2, #2d2d2d)
}
.card .entity-list-item .entity-list-item:hover {
background-color: #EEEEEE;
text-overflow: ellipsis;
height: 2.5em;
overflow: hidden;
- text-align: left;
+ text-align: start;
display: block;
white-space: nowrap;
}
background-position: 50% 50%;
border-radius: 3px;
position: relative;
- margin-right: $-l;
+ margin-inline-end: $-l;
&.entity-list-item-image-wide {
width: 220px;
}
.svg-icon {
- color: #FFF;
- fill: #FFF;
+ @include lightDark(color, #fff, rgba(255, 255, 255, 0.6));
font-size: 1.66rem;
- margin-right: 0;
+ margin-inline-end: 0;
position: absolute;
bottom: $-xs;
left: $-xs;
list-style: none;
right: 0;
margin: $-m 0;
- background-color: #FFFFFF;
- box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.1);
+ @include lightDark(background-color, #fff, #333);
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.18);
border-radius: 1px;
- border: 1px solid #EEE;
min-width: 180px;
padding: $-xs 0;
- color: #555;
- fill: #555;
- text-align: left !important;
+ @include lightDark(color, #555, #eee);
+ fill: currentColor;
+ text-align: start !important;
+ max-height: 500px;
+ overflow-y: auto;
&.wide {
min-width: 220px;
}
a, button {
display: block;
padding: $-xs $-m;
- color: #555;
+ @include lightDark(color, #555, #eee);
fill: currentColor;
white-space: nowrap;
+ line-height: 1.6;
+ cursor: pointer;
&:hover, &:focus {
text-decoration: none;
background-color: var(--color-primary-light);
outline-offset: -2px;
}
svg {
- margin-right: $-s;
+ margin-inline-end: $-s;
display: inline-block;
width: 16px;
}
}
button {
width: 100%;
- text-align: left;
+ text-align: start;
}
li.border-bottom {
border-bottom: 1px solid #DDD;
}
+ li hr {
+ margin: $-xs 0;
+ }
}
// Books grid view
.featured-image-container-wrap {
position: relative;
.svg-icon {
- color: #FFF;
- fill: #FFF;
+ @include lightDark(color, #fff, rgba(255, 255, 255, 0.6));
font-size: 2rem;
- margin-right: 0;
+ margin-inline-end: 0;
position: absolute;
bottom: 10px;
left: 6px;
padding: $-s;
}
a:not(.active) {
- color: #444;
- fill: #444;
+ @include lightDark(color, #444, #666);
}
a:hover {
- background-color: rgba(0, 0, 0, 0.05);
+ @include lightDark(background-color, rgba(0, 0, 0, 0.05), rgba(255, 255, 255, 0.05));
border-radius: 3px;
text-decoration: none;
}
@mixin between($min, $max) {
@media screen and (min-width: $min) and (max-width: $max) { @content; }
}
+
+// Padding shorthand using logical operators to better support RTL.
+@mixin padding($t, $r, $b, $l) {
+ padding-block-start: $t;
+ padding-block-end: $b;
+ padding-inline-start: $l;
+ padding-inline-end: $r;
+}
+
+// Margin shorthand using logical operators to better support RTL.
+@mixin margin($t, $r, $b, $l) {
+ margin-block-start: $t;
+ margin-block-end: $b;
+ margin-inline-start: $l;
+ margin-inline-end: $r;
+}
+
+// Create a RTL specific style block.
+// Mostly used as a patch until browser support improves for logical properties.
+@mixin rtl() {
+ html[dir=rtl] & {
+ @content;
+ }
+}
+
+// Define a property for both light and dark mode
+@mixin lightDark($prop, $light, $dark, $important: false) {
+ #{$prop}: if($important, $light !important, $light);
+ html.dark-mode & {
+ #{$prop}: if($important, $dark !important, $dark);
+ }
+}
+
+@mixin whenDark {
+ html.dark-mode & {
+ @content;
+ }
+}
\ No newline at end of file
flex-direction: column;
align-items: stretch;
overflow: hidden;
- background-color: #FFF;
.edit-area {
flex: 1;
text-align: center;
svg {
fill: #FFF;
- margin-right: 0;
+ margin-inline-end: 0;
}
}
}
.pointer {
border: 1px solid #CCC;
+ @include lightDark(border-color, #ccc, #000);
display: flex;
align-items: center;
justify-items: center;
padding: $-s $-s;
border-radius: 4px;
- box-shadow: 0 0 12px 1px rgba(212, 209, 209, 0.3);
+ box-shadow: 0 0 12px 1px rgba(0, 0, 0, 0.1);
position: absolute;
top: -60px;
- background-color:#FFF;
+ @include lightDark(background-color, #fff, #333);
width: 275px;
z-index: 55;
bottom: -9px;
width: 16px;
height: 16px;
- margin-left: -8px;
+ margin-inline-start: -8px;
content: '';
display: block;
- background-color:#FFF;
transform: rotate(45deg);
transform-origin: 50% 50%;
- border-bottom: 1px solid #CCC;
- border-right: 1px solid #CCC;
+ border-block-end: 1px solid #CCC;
+ border-inline-end: 1px solid #CCC;
z-index: 56;
+ @include lightDark(background-color, #fff, #333);
+ @include lightDark(border-color, #ccc, #000);
}
input, button, a {
position: relative;
input {
background-color: #FFF;
border: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #000);
color: #666;
width: 172px;
z-index: 40;
width: 1.2em;
height: 1.2em;
}
+ .button {
+ @include lightDark(border-color, #ddd, #000);
+ }
}
// Attribute form
.floating-toolbox {
- background-color: #FFF;
border: 1px solid #DDD;
+ @include lightDark(background-color, #fff, #222);
+ @include lightDark(border-color, #DDD, #000);
right: $-xl*2;
width: 48px;
overflow: hidden;
}
.tabs {
display: block;
- border-right: 1px solid #DDD;
+ border-inline-end: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #000);
width: 48px;
flex: 0 1 auto;
}
.tabs svg {
- fill: rgba(0, 0, 0, 0.5);
padding: 0;
margin: 0;
}
.tabs > button {
+ @include lightDark(color, rgba(0, 0, 0, 0.5), rgba(255, 255, 255, 0.5));
display: block;
cursor: pointer;
padding: $-s $-m;
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
}
&.open .tabs > button.active {
- fill: #444;
+ @include lightDark(color, #444, #EEE);
background-color: rgba(0, 0, 0, 0.1);
}
div[toolbox-tab-content] {
display: flex;
flex: 1;
flex-direction: column;
- min-height: 0px;
+ min-height: 0;
overflow-y: scroll;
}
h4 {
width: 100%;
min-width: 50px;
}
- .tags td, .tag-table > div > div > div {
- padding-right: $-s;
+ .tags td, .inline-start-table > div > div > div {
+ padding-inline-end: $-s;
padding-top: $-s;
position: relative;
}
display: none;
}
-.tag-display {
- position: relative;
- table {
- width: 100%;
- margin: 0;
- padding: 0;
- }
- tr:first-child td {
- padding-top: 0;
- }
- .heading th {
- padding: $-xs $-s;
- color: rgba(100, 100, 100, 0.7);
- border: 0;
- font-weight: 400;
- }
- td {
- border: 0;
- border-bottom: 1px solid #EEE;
- padding: $-xs $-s;
- color: #444;
- }
- tr td:first-child {
- padding-left:0;
- }
- .tag-value {
- color: #888;
- }
- tr:last-child td {
- border-bottom: none;
- }
- .tag {
- padding: $-s;
- }
-}
-
.suggestion-box {
- position: absolute;
- background-color: #FFF;
- border: 1px solid #BBB;
- box-shadow: $bs-light;
- list-style: none;
- z-index: 100;
+ top: auto;
+ margin: -4px 0 0;
+ right: auto;
+ left: 0;
padding: 0;
- margin: 0;
- border-radius: 3px;
li {
display: block;
- padding: $-xs $-s;
border-bottom: 1px solid #DDD;
&:last-child {
border-bottom: 0;
}
- &.active {
- background-color: #EEE;
- }
}
}
#{$prop}: $size !important;
}
.#{$propLetter}x-#{$sizeLetter} {
- #{$prop}-left: $size !important;
- #{$prop}-right: $size !important;
+ #{$prop}-inline-start: $size !important;
+ #{$prop}-inline-end: $size !important;
}
.#{$propLetter}y-#{$sizeLetter} {
#{$prop}-top: $size !important;
#{$prop}-top: $size !important;
}
.#{$propLetter}r-#{$sizeLetter} {
- #{$prop}-right: $size !important;
+ #{$prop}-inline-end: $size !important;
}
.#{$propLetter}b-#{$sizeLetter} {
#{$prop}-bottom: $size !important;
}
.#{$propLetter}l-#{$sizeLetter} {
- #{$prop}-left: $size !important;
+ #{$prop}-inline-start: $size !important;
}
}
}
-@include spacing('margin', 'm')
-@include spacing('padding', 'p')
\ No newline at end of file
+@include spacing('margin', 'm');
+@include spacing('padding', 'p');
\ No newline at end of file
min-width: 100px;
max-width: 100%;
thead {
- background-color: #F8F8F8;
+ @include lightDark(background-color, #f8f8f8, #333);
font-weight: 500;
}
td, th {
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}
th, td {
- text-align: left;
+ text-align: start;
border: none;
padding: $-s $-s;
vertical-align: middle;
font-weight: bold;
}
tr:hover {
- background-color: #EEE;
+ @include lightDark(background-color, #eee, #333);
}
.text-right {
- text-align: right;
+ text-align: end;
}
.text-center {
text-align: center;
font-weight: 400;
position: relative;
display: block;
- color: #222;
+ @include lightDark(color, #222, #BBB);
.subheader {
font-size: 0.5em;
line-height: 1em;
*/
a {
color: var(--color-primary);
- fill: var(--color-primary);
+ fill: currentColor;
cursor: pointer;
text-decoration: none;
transition: filter ease-in-out 80ms;
hr {
border: 0;
height: 1px;
- background: #EAEAEA;
+ @include lightDark(background, #eaeaea, #222);
margin-bottom: $-l;
&.faded {
background-image: linear-gradient(to right, #FFF, #e3e0e0 20%, #e3e0e0 80%, #FFF);
small, p.small, span.small, .text-small {
font-size: 0.75rem;
- color: lighten($text-dark, 10%);
+ @include lightDark(color, #5e5e5e, #999);
}
sup, .superscript {
pre {
font-size: 12px;
- background-color: #f5f5f5;
border: 1px solid #DDD;
+ @include lightDark(background-color, #f5f5f5, #2B2B2B);
+ @include lightDark(border-color, #DDD, #111);
padding-left: 31px;
position: relative;
padding-top: 3px;
top: 0;
width: 29px;
left: 0;
- background-color: #f5f5f5;
height: 100%;
- border-right: 1px solid #DDD;
+ @include lightDark(background-color, #f5f5f5, #313335);
+ @include lightDark(border-right, 1px solid #DDD, none);
}
}
display: block;
position: relative;
border-left: 4px solid var(--color-primary);
- background-color: #F8F8F8;
+ @include lightDark(background-color, #f8f8f8, #333);
padding: $-s $-m $-s $-xl;
+ overflow: auto;
&:before {
content: "\201C";
font-size: 2em;
}
.code-base {
- background-color: #F8F8F8;
- font-size: 0.80em;
- border: 1px solid #DDD;
- border-radius: 3px;
+ font-size: 0.84em;
+ border: 1px solid #DDD;
+ border-radius: 3px;
+ @include lightDark(background-color, #f8f8f8, #2b2b2b);
+ @include lightDark(border-color, #DDD, #444);
}
code {
padding: 1px 3px;
white-space:pre-wrap;
line-height: 1.2em;
- margin-bottom: 1.2em;
}
span.code {
* Lists
*/
ul, ol {
- overflow: hidden;
p {
margin: 0;
}
}
}
+li > ol, li > ul {
+ margin-block-end: 0px;
+ margin-block-start: 0px;
+ padding-block-end: 0px;
+ padding-block-start: 0px;
+}
+
/*
* Generic text styling classes
*/
text-align: center;
}
.text-left {
- text-align: left;
+ text-align: start;
}
.text-right {
- text-align: right;
+ text-align: end;
}
@each $sizeLetter, $size in $screen-sizes {
text-align: center;
}
.text-#{$sizeLetter}-left {
- text-align: left;
+ text-align: start;
}
.text-#{$sizeLetter}-right {
- text-align: right;
+ text-align: end;
}
}
}
display: inline-block;
position: relative;
bottom: -0.105em;
- margin-right: $-xs;
+ margin-inline-end: $-xs;
pointer-events: none;
+ fill: currentColor;
}
.mce-tinymce {
.mce-panel {
- background-color: #FFF;
+ @include lightDark(background-color, #fff, #333);
}
.mce-btn {
- background-color: #FFF;
+ @include lightDark(background-color, #fff, #333);
}
}
overflow:auto;
iframe {
flex: 1;
+ // Force TinyMCE iframe to render on its own layer
+ // for much greater performance in Safari
+ will-change: transform;
}
}
}
// Shadows
$bs-light: 0 0 4px 1px #CCC;
+$bs-dark: 0 0 4px 1px rgba(0, 0, 0, 0.5);
$bs-med: 0 1px 3px 1px rgba(76, 76, 76, 0.26);
$bs-large: 0 1px 6px 1px rgba(22, 22, 22, 0.2);
$bs-card: 0 1px 6px -1px rgba(0, 0, 0, 0.1);
+$bs-card-dark: 0 1px 6px -1px rgba(0, 0, 0, 0.5);
$bs-hover: 0 2px 2px 1px rgba(0,0,0,.13);
\ No newline at end of file
@import "text";
@import "layout";
@import "blocks";
-@import "forms";
@import "tables";
@import "header";
@import "lists";
.tri-layout-container {
grid-template-columns: 1fr;
grid-template-areas: "b";
- margin-left: 0;
- margin-right: 0;
+ margin-inline-start: 0;
+ margin-inline-end: 0;
display: block;
}
}
.content-wrap.card {
- padding-left: 0;
- padding-right: 0;
+ padding-inline-start: 0;
+ padding-inline-end: 0;
}
\ No newline at end of file
@import "lists";
@import "pages";
-[v-cloak] {
- display: none; opacity: 0;
- animation-name: none !important;
-}
-
// Jquery Sortable Styles
.dragged {
position: absolute;
// User Avatar Images
.avatar {
border-radius: 100%;
- background-color: #EEE;
+ @include lightDark(background-color, #eee, #000);
width: 30px;
height: 30px;
&.med {
&.square {
border-radius: 3px;
}
+ &[src$="user_avatar.png"] {
+ @include whenDark {
+ filter: invert(1);
+ }
+ }
}
// Loading icon
animation-duration: 1.4s;
animation-iteration-count: infinite;
animation-timing-function: cubic-bezier(.62, .28, .23, .99);
- margin-right: 4px;
+ margin-inline-end: 4px;
background-color: var(--color-page);
animation-delay: 0.3s;
}
animation-delay: 0.6s;
}
> span {
- margin-left: $-s;
+ margin-inline-start: $-s;
font-style: italic;
color: #888;
vertical-align: top;
svg {
width: $btt-size / 1.5;
height: $btt-size / 1.5;
- margin-right: 4px;
+ margin-inline-end: 4px;
}
width: $btt-size;
height: $btt-size;
.contained-search-box {
display: flex;
+ height: 38px;
input, button {
border-radius: 0;
- border: 1px solid #DDD;
- margin-left: -1px;
+ border: 1px solid #ddd;
+ @include lightDark(border-color, #ddd, #000);
+ margin-inline-start: -1px;
}
input {
flex: 5;
background-color: $negative;
color: #EEE;
}
+ svg {
+ margin: 0;
+ }
}
.entity-selector {
border: 1px solid #DDD;
+ @include lightDark(border-color, #ddd, #111);
border-radius: 3px;
overflow: hidden;
font-size: 0.8em;
.entity-list {
overflow-y: scroll;
height: 400px;
- background-color: #EEEEEE;
- margin-right: 0;
- margin-left: 0;
+ @include lightDark(background-color, #eee, #222);
+ margin-inline-end: 0;
+ margin-inline-start: 0;
}
.entity-list-item {
- background-color: #FFF;
+ @include lightDark(background-color, #fff, #222);
}
.entity-list-item p {
margin-bottom: 0;
}
.list-sort {
display: inline-grid;
- margin-left: $-s;
+ margin-inline-start: $-s;
grid-template-columns: minmax(120px, max-content) 40px;
font-size: 0.9rem;
border: 2px solid #DDD;
+ @include lightDark(border-color, #ddd, #444);
border-radius: 4px;
}
.list-sort-label {
font-weight: bold;
display: inline-block;
- color: #555;
+ @include lightDark(color, #555, #888);
}
.list-sort-type {
- text-align: left;
+ text-align: start;
}
.list-sort-type, .list-sort-dir {
padding: $-xs $-s;
cursor: pointer;
}
.list-sort-dir {
- border-left: 2px solid #DDD;
- fill: #888;
+ border-inline-start: 2px solid #DDD;
+ color: #888;
+ @include lightDark(border-color, #ddd, #444);
.svg-icon {
transition: transform ease-in-out 120ms;
}
<span class="api-method" data-method="{{ $endpoint['method'] }}">{{ $endpoint['method'] }}</span>
</a>
<a href="#{{ $endpoint['name'] }}" class="text-mono">
- {{ $endpoint['controller_method'] }}
+ {{ $endpoint['controller_method_kebab'] }}
</a>
</div>
@endforeach
<h1 class="list-heading text-capitals">{{ $model }}</h1>
@foreach($endpoints as $endpoint)
- <h6 class="text-uppercase text-muted float right">{{ $endpoint['controller_method'] }}</h6>
+ <h6 class="text-uppercase text-muted float right">{{ $endpoint['controller_method_kebab'] }}</h6>
<h5 id="{{ $endpoint['name'] }}" class="text-mono mb-m">
<span class="api-method" data-method="{{ $endpoint['method'] }}">{{ $endpoint['method'] }}</span>
- {{ url($endpoint['uri']) }}
+ @if($endpoint['controller_method_kebab'] === 'list')
+ <a style="color: inherit;" target="_blank" href="{{ url($endpoint['uri']) }}">{{ url($endpoint['uri']) }}</a>
+ @else
+ {{ url($endpoint['uri']) }}
+ @endif
</h5>
<p class="mb-m">{{ $endpoint['description'] ?? '' }}</p>
@if($endpoint['body_params'] ?? false)
--- /dev/null
+@foreach($attachments as $attachment)
+ <div class="attachment icon-list">
+ <a class="icon-list-item py-xs" href="{{ $attachment->getUrl() }}" @if($attachment->external) target="_blank" @endif>
+ <span class="icon">@icon($attachment->external ? 'export' : 'file')</span>
+ <span>{{ $attachment->name }}</span>
+ </a>
+ </div>
+@endforeach
\ No newline at end of file
--- /dev/null
+<div component="ajax-form"
+ option:ajax-form:url="/attachments/{{ $attachment->id }}"
+ option:ajax-form:method="put"
+ option:ajax-form:success-message="{{ trans('entities.attachments_updated_success') }}">
+ <h5>{{ trans('entities.attachments_edit_file') }}</h5>
+
+ <div class="form-group">
+ <label for="attachment_edit_name">{{ trans('entities.attachments_edit_file_name') }}</label>
+ <input type="text" id="attachment_edit_name"
+ name="attachment_edit_name"
+ value="{{ $attachment_edit_name ?? $attachment->name ?? '' }}"
+ placeholder="{{ trans('entities.attachments_edit_file_name') }}">
+ @if($errors->has('attachment_edit_name'))
+ <div class="text-neg text-small">{{ $errors->first('attachment_edit_name') }}</div>
+ @endif
+ </div>
+
+ <div component="tabs" class="tab-container">
+ <div class="nav-tabs">
+ <button refs="tabs@toggleFile" type="button" class="tab-item {{ $attachment->external ? '' : 'selected' }}">{{ trans('entities.attachments_upload') }}</button>
+ <button refs="tabs@toggleLink" type="button" class="tab-item {{ $attachment->external ? 'selected' : '' }}">{{ trans('entities.attachments_set_link') }}</button>
+ </div>
+ <div refs="tabs@contentFile" class="mb-m {{ $attachment->external ? 'hidden' : '' }}">
+ @include('components.dropzone', [
+ 'placeholder' => trans('entities.attachments_edit_drop_upload'),
+ 'url' => url('/attachments/upload/' . $attachment->id),
+ 'successMessage' => trans('entities.attachments_file_updated'),
+ ])
+ </div>
+ <div refs="tabs@contentLink" class="{{ $attachment->external ? '' : 'hidden' }}">
+ <div class="form-group">
+ <label for="attachment_edit_url">{{ trans('entities.attachments_link_url') }}</label>
+ <input type="text" id="attachment_edit_url"
+ name="attachment_edit_url"
+ value="{{ $attachment_edit_url ?? ($attachment->external ? $attachment->path : '') }}"
+ placeholder="{{ trans('entities.attachment_link') }}">
+ @if($errors->has('attachment_edit_url'))
+ <div class="text-neg text-small">{{ $errors->first('attachment_edit_url') }}</div>
+ @endif
+ </div>
+ </div>
+ </div>
+
+ <button component="event-emit-select"
+ option:event-emit-select:name="edit-back" type="button" class="button outline">{{ trans('common.back') }}</button>
+ <button refs="ajax-form@submit" type="button" class="button">{{ trans('common.save') }}</button>
+</div>
\ No newline at end of file
--- /dev/null
+{{--
+@pageId
+--}}
+<div component="ajax-form"
+ option:ajax-form:url="/attachments/link"
+ option:ajax-form:method="post"
+ option:ajax-form:success-message="{{ trans('entities.attachments_link_attached') }}">
+ <input type="hidden" name="attachment_link_uploaded_to" value="{{ $pageId }}">
+ <p class="text-muted small">{{ trans('entities.attachments_explain_link') }}</p>
+ <div class="form-group">
+ <label for="attachment_link_name">{{ trans('entities.attachments_link_name') }}</label>
+ <input name="attachment_link_name" id="attachment_link_name" type="text" placeholder="{{ trans('entities.attachments_link_name') }}" value="{{ $attachment_link_name ?? '' }}">
+ @if($errors->has('attachment_link_name'))
+ <div class="text-neg text-small">{{ $errors->first('attachment_link_name') }}</div>
+ @endif
+ </div>
+ <div class="form-group">
+ <label for="attachment_link_url">{{ trans('entities.attachments_link_url') }}</label>
+ <input name="attachment_link_url" id="attachment_link_url" type="text" placeholder="{{ trans('entities.attachments_link_url_hint') }}" value="{{ $attachment_link_url ?? '' }}">
+ @if($errors->has('attachment_link_url'))
+ <div class="text-neg text-small">{{ $errors->first('attachment_link_url') }}</div>
+ @endif
+ </div>
+ <button refs="ajax-form@submit"
+ type="button"
+ class="button">{{ trans('entities.attach') }}</button>
+</div>
\ No newline at end of file
--- /dev/null
+<div component="sortable-list" option:sortable-list:handle-selector=".handle">
+ @foreach($attachments as $attachment)
+ <div component="ajax-delete-row"
+ option:ajax-delete-row:url="{{ url('/attachments/' . $attachment->id) }}"
+ data-id="{{ $attachment->id }}"
+ class="card drag-card">
+ <div class="handle">@icon('grip')</div>
+ <div class="py-s">
+ <a href="{{ $attachment->getUrl() }}" target="_blank">{{ $attachment->name }}</a>
+ </div>
+ <div class="flex-fill justify-flex-end">
+ <button component="event-emit-select"
+ option:event-emit-select:name="edit"
+ option:event-emit-select:id="{{ $attachment->id }}"
+ type="button"
+ class="drag-card-action text-center text-primary">@icon('edit')</button>
+ <div component="dropdown" class="flex-fill relative">
+ <button refs="dropdown@toggle" type="button" class="drag-card-action text-center text-neg">@icon('close')</button>
+ <div refs="dropdown@menu" class="dropdown-menu">
+ <p class="text-neg small px-m mb-xs">{{ trans('entities.attachments_delete') }}</p>
+ <button refs="ajax-delete-row@delete" type="button" class="text-primary small delete">{{ trans('common.confirm') }}</button>
+ </div>
+ </div>
+ </div>
+ </div>
+ @endforeach
+ @if (count($attachments) === 0)
+ <p class="small text-muted">
+ {{ trans('entities.attachments_no_files') }}
+ </p>
+ @endif
+</div>
\ No newline at end of file
--- /dev/null
+<div style="display: block;" toolbox-tab-content="files"
+ component="attachments"
+ option:attachments:page-id="{{ $page->id ?? 0 }}">
+
+ <h4>{{ trans('entities.attachments') }}</h4>
+ <div class="px-l files">
+
+ <div refs="attachments@listContainer">
+ <p class="text-muted small">{{ trans('entities.attachments_explain') }} <span class="text-warn">{{ trans('entities.attachments_explain_instant_save') }}</span></p>
+
+ <div component="tabs" refs="attachments@mainTabs" class="tab-container">
+ <div class="nav-tabs">
+ <button refs="tabs@toggleItems" type="button" class="selected tab-item">{{ trans('entities.attachments_items') }}</button>
+ <button refs="tabs@toggleUpload" type="button" class="tab-item">{{ trans('entities.attachments_upload') }}</button>
+ <button refs="tabs@toggleLinks" type="button" class="tab-item">{{ trans('entities.attachments_link') }}</button>
+ </div>
+ <div refs="tabs@contentItems attachments@list">
+ @include('attachments.manager-list', ['attachments' => $page->attachments->all()])
+ </div>
+ <div refs="tabs@contentUpload" class="hidden">
+ @include('components.dropzone', [
+ 'placeholder' => trans('entities.attachments_dropzone'),
+ 'url' => url('/attachments/upload?uploaded_to=' . $page->id),
+ 'successMessage' => trans('entities.attachments_file_uploaded'),
+ ])
+ </div>
+ <div refs="tabs@contentLinks" class="hidden">
+ @include('attachments.manager-link-form', ['pageId' => $page->id])
+ </div>
+ </div>
+
+ </div>
+
+ <div refs="attachments@editContainer" class="hidden">
+
+ </div>
+
+ </div>
+</div>
\ No newline at end of file
<div>
<button id="saml-login" class="button outline block svg">
@icon('saml2')
- {{ trans('auth.log_in_with', ['socialDriver' => config('saml2.name')]) }}
+ <span>{{ trans('auth.log_in_with', ['socialDriver' => config('saml2.name')]) }}</span>
</button>
</div>
<div>
<a id="social-login-{{$driver}}" class="button outline block svg" href="{{ url("/login/service/" . $driver) }}">
@icon('auth/' . $driver)
- {{ trans('auth.log_in_with', ['socialDriver' => $name]) }}
+ <span>{{ trans('auth.log_in_with', ['socialDriver' => $name]) }}</span>
</a>
</div>
@endforeach
<div>
<a id="social-register-{{$driver}}" class="button block outline svg" href="{{ url("/register/service/" . $driver) }}">
@icon('auth/' . $driver)
- {{ trans('auth.sign_up_with', ['socialDriver' => $name]) }}
+ <span>{{ trans('auth.sign_up_with', ['socialDriver' => $name]) }}</span>
</a>
</div>
@endforeach
<!DOCTYPE html>
-<html lang="{{ config('app.lang') }}" class="@yield('body-class')">
+<html lang="{{ config('app.lang') }}"
+ dir="{{ config('app.rtl') ? 'rtl' : 'ltr' }}"
+ class="{{ setting()->getForCurrentUser('dark-mode-enabled') ? 'dark-mode ' : '' }}@yield('body-class')">
<head>
<title>{{ isset($pageTitle) ? $pageTitle . ' | ' : '' }}{{ setting('app-name') }}</title>
<!-- Translations for JS -->
@stack('translations')
-
</head>
<body class="@yield('body-class')">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>{{ $book->name }}</title>
+ @include('partials.export-styles', ['format' => $format])
+
<style>
- @if (!app()->environment('testing'))
- {!! file_get_contents(public_path('/dist/export-styles.css')) !!}
- @endif
.page-break {
page-break-after: always;
}
<label for="tag-manager">{{ trans('entities.book_tags') }}</label>
</button>
<div class="collapse-content" collapsible-content>
- @include('components.tag-manager', ['entity' => $book ?? null, 'entityType' => 'chapter'])
+ @include('components.tag-manager', ['entity' => $book ?? null])
</div>
</div>
</a>
@endif
- @include('partials.view-toggle', ['view' => $view, 'type' => 'book'])
+ @include('partials.view-toggle', ['view' => $view, 'type' => 'books'])
</div>
</div>
@extends('tri-layout')
@section('container-attrs')
- id="entity-dashboard"
- entity-id="{{ $book->id }}"
- entity-type="book"
+ component="entity-search"
+ option:entity-search:entity-id="{{ $book->id }}"
+ option:entity-search:entity-type="book"
@stop
@section('body')
</div>
<main class="content-wrap card">
- <h1 class="break-text" v-pre>{{$book->name}}</h1>
- <div class="book-content" v-show="!searching">
- <p class="text-muted" v-pre>{!! nl2br(e($book->description)) !!}</p>
+ <h1 class="break-text">{{$book->name}}</h1>
+ <div refs="entity-search@contentView" class="book-content">
+ <p class="text-muted">{!! nl2br(e($book->description)) !!}</p>
@if(count($bookChildren) > 0)
- <div class="entity-list book-contents" v-pre>
+ <div class="entity-list book-contents">
@foreach($bookChildren as $childElement)
@if($childElement->isA('chapter'))
@include('chapters.list-item', ['chapter' => $childElement])
@endforeach
</div>
@else
- <div class="mt-xl" v-pre>
+ <div class="mt-xl">
<hr>
<p class="text-muted italic mb-m mt-xl">{{ trans('entities.books_empty_contents') }}</p>
@endif
</div>
- @include('partials.entity-dashboard-search-results')
+ @include('partials.entity-search-results')
</main>
@stop
-
@section('right')
-
<div class="mb-xl">
<h5>{{ trans('common.details') }}</h5>
<div class="text-small text-muted blended-links">
</div>
</div>
-
<div class="actions mb-xl">
<h5>{{ trans('common.actions') }}</h5>
<div class="icon-list text-primary">
@section('left')
- @include('partials.entity-dashboard-search-box')
+ @include('partials.entity-search-form', ['label' => trans('entities.books_search_this')])
@if($book->tags->count() > 0)
<div class="mb-xl">
</div>
@endif
+ @if(count($bookParentShelves) > 0)
+ <div class="actions mb-xl">
+ <h5>{{ trans('entities.shelves_long') }}</h5>
+ @include('partials.entity-list', ['entities' => $bookParentShelves, 'style' => 'compact'])
+ </div>
+ @endif
+
@if(count($activity) > 0)
<div class="mb-xl">
<h5>{{ trans('entities.recent_activity') }}</h5>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>{{ $chapter->name }}</title>
+ @include('partials.export-styles', ['format' => $format])
+
<style>
- @if (!app()->environment('testing'))
- {!! file_get_contents(public_path('/dist/export-styles.css')) !!}
- @endif
.page-break {
page-break-after: always;
}
}
}
</style>
- @yield('head')
@include('partials.custom-head')
</head>
<body>
<label for="tags">{{ trans('entities.chapter_tags') }}</label>
</button>
<div class="collapse-content" collapsible-content>
- @include('components.tag-manager', ['entity' => isset($chapter)?$chapter:null, 'entityType' => 'chapter'])
+ @include('components.tag-manager', ['entity' => $chapter ?? null])
</div>
</div>
@extends('tri-layout')
@section('container-attrs')
- id="entity-dashboard"
- entity-id="{{ $chapter->id }}"
- entity-type="chapter"
+ component="entity-search"
+ option:entity-search:entity-id="{{ $chapter->id }}"
+ option:entity-search:entity-type="chapter"
@stop
@section('body')
</div>
<main class="content-wrap card">
- <h1 class="break-text" v-pre>{{ $chapter->name }}</h1>
- <div class="chapter-content" v-show="!searching">
- <p v-pre class="text-muted break-text">{!! nl2br(e($chapter->description)) !!}</p>
+ <h1 class="break-text">{{ $chapter->name }}</h1>
+ <div refs="entity-search@contentView" class="chapter-content">
+ <p class="text-muted break-text">{!! nl2br(e($chapter->description)) !!}</p>
@if(count($pages) > 0)
- <div v-pre class="entity-list book-contents">
+ <div class="entity-list book-contents">
@foreach($pages as $page)
@include('pages.list-item', ['page' => $page])
@endforeach
</div>
@else
- <div class="mt-xl" v-pre>
+ <div class="mt-xl">
<hr>
<p class="text-muted italic mb-m mt-xl">{{ trans('entities.chapters_empty') }}</p>
@endif
</div>
- @include('partials.entity-dashboard-search-results')
+ @include('partials.entity-search-results')
</main>
@stop
@section('left')
- @include('partials.entity-dashboard-search-box')
+ @include('partials.entity-search-form', ['label' => trans('entities.chapters_search_this')])
@if($chapter->tags->count() > 0)
<div class="mb-xl">
<button type="button" class="text-button" action="reply" aria-label="{{ trans('common.reply') }}" title="{{ trans('common.reply') }}">@icon('reply')</button>
@endif
@if(userCan('comment-delete', $comment))
- <div dropdown class="dropdown-container">
- <button type="button" dropdown-toggle aria-haspopup="true" aria-expanded="false" class="text-button" title="{{ trans('common.delete') }}">@icon('delete')</button>
- <ul class="dropdown-menu" role="menu">
+ <div component="dropdown" class="dropdown-container">
+ <button type="button" refs="dropdown@toggle" aria-haspopup="true" aria-expanded="false" class="text-button" title="{{ trans('common.delete') }}">@icon('delete')</button>
+ <ul refs="dropdown@menu" class="dropdown-menu" role="menu">
<li class="px-m text-small text-muted pb-s">{{trans('entities.comment_delete_confirm')}}</li>
<li><button action="delete" type="button" class="text-button text-neg" >@icon('delete'){{ trans('common.delete') }}</button></li>
</ul>
</div>
<div class="text-right">
- <nav class="header-links" >
+ <nav class="header-links">
<div class="links text-center">
@if (hasAppAccess())
<a class="hide-over-l" href="{{ url('/search') }}">@icon('search'){{ trans('common.search') }}</a>
@if(!signedInUser())
@if(setting('registration-enabled') && config('auth.method') === 'standard')
- <a href="{{ url('/register') }}">@icon('new-user') {{ trans('auth.sign_up') }}</a>
+ <a href="{{ url('/register') }}">@icon('new-user'){{ trans('auth.sign_up') }}</a>
@endif
- <a href="{{ url('/login') }}">@icon('login') {{ trans('auth.log_in') }}</a>
+ <a href="{{ url('/login') }}">@icon('login'){{ trans('auth.log_in') }}</a>
@endif
</div>
@if(signedInUser())
<?php $currentUser = user(); ?>
- <div class="dropdown-container" dropdown>
- <span class="user-name py-s hide-under-l" dropdown-toggle
+ <div class="dropdown-container" component="dropdown">
+ <span class="user-name py-s hide-under-l" refs="dropdown@toggle"
aria-haspopup="true" aria-expanded="false" aria-label="{{ trans('common.profile_menu') }}" tabindex="0">
<img class="avatar" src="{{$currentUser->getAvatar(30)}}" alt="{{ $currentUser->name }}">
<span class="name">{{ $currentUser->getShortName(9) }}</span> @icon('caret-down')
</span>
- <ul class="dropdown-menu" role="menu">
+ <ul refs="dropdown@menu" class="dropdown-menu" role="menu">
<li>
<a href="{{ url("/user/{$currentUser->id}") }}">@icon('user'){{ trans('common.view_profile') }}</a>
</li>
<a href="{{ url('/logout') }}">@icon('logout'){{ trans('auth.logout') }}</a>
@endif
</li>
+ <li><hr></li>
+ <li>
+ @include('partials.dark-mode-toggle')
+ </li>
</ul>
</div>
@endif
</div>
</div>
-</header>
\ No newline at end of file
+</header>
<div class="actions mb-xl">
<h5>{{ trans('common.actions') }}</h5>
<div class="icon-list text-primary">
- @include('partials.view-toggle', ['view' => $view, 'type' => 'book'])
+ @include('partials.view-toggle', ['view' => $view, 'type' => 'books'])
@include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
+ @include('partials.dark-mode-toggle', ['classes' => 'text-muted icon-list-item text-primary'])
</div>
</div>
@stop
\ No newline at end of file
<h5>{{ trans('common.actions') }}</h5>
<div class="icon-list text-primary">
@include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
+ @include('partials.dark-mode-toggle', ['classes' => 'text-muted icon-list-item text-primary'])
</div>
</div>
@stop
\ No newline at end of file
<div class="actions mb-xl">
<h5>{{ trans('common.actions') }}</h5>
<div class="icon-list text-primary">
- @include('partials.view-toggle', ['view' => $view, 'type' => 'shelf'])
+ @include('partials.view-toggle', ['view' => $view, 'type' => 'shelves'])
@include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
+ @include('partials.dark-mode-toggle', ['classes' => 'text-muted icon-list-item text-primary'])
</div>
</div>
@stop
\ No newline at end of file
@section('body')
<div class="container px-xl py-s">
- <div class="icon-list inline block">
- @include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
+ <div class="grid half">
+ <div>
+ <div class="icon-list inline block">
+ @include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
+ </div>
+ </div>
+ <div class="text-m-right">
+ <div class="icon-list inline block">
+ @include('partials.dark-mode-toggle', ['classes' => 'text-muted icon-list-item text-primary'])
+ </div>
+ </div>
</div>
</div>
</div>
</div>
-
-
@stop
-<div id="code-editor">
- <div overlay ref="overlay" v-cloak @click="hide()">
- <div class="popup-body" tabindex="-1" @click.stop>
+<div>
+ <div components="popup code-editor" class="popup-background code-editor">
+ <div refs="code-editor@container" class="popup-body" tabindex="-1">
<div class="popup-header primary-background">
<div class="popup-title">{{ trans('components.code_editor') }}</div>
- <button class="popup-header-close" @click="hide()">x</button>
+ <button class="popup-header-close" refs="popup@hide">x</button>
</div>
<div class="p-l popup-content">
<label for="code-editor-language">{{ trans('components.code_language') }}</label>
<div class="lang-options">
<small>
- <a @click="updateLanguage('CSS')">CSS</a>
- <a @click="updateLanguage('C')">C</a>
- <a @click="updateLanguage('C++')">C++</a>
- <a @click="updateLanguage('C#')">C#</a>
- <a @click="updateLanguage('Go')">Go</a>
- <a @click="updateLanguage('HTML')">HTML</a>
- <a @click="updateLanguage('INI')">INI</a>
- <a @click="updateLanguage('Java')">Java</a>
- <a @click="updateLanguage('JavaScript')">JavaScript</a>
- <a @click="updateLanguage('JSON')">JSON</a>
- <a @click="updateLanguage('Lua')">Lua</a>
- <a @click="updateLanguage('MarkDown')">MarkDown</a>
- <a @click="updateLanguage('Nginx')">Nginx</a>
- <a @click="updateLanguage('PASCAL')">Pascal</a>
- <a @click="updateLanguage('PHP')">PHP</a>
- <a @click="updateLanguage('Powershell')">Powershell</a>
- <a @click="updateLanguage('Python')">Python</a>
- <a @click="updateLanguage('Ruby')">Ruby</a>
- <a @click="updateLanguage('shell')">Shell/Bash</a>
- <a @click="updateLanguage('SQL')">SQL</a>
- <a @click="updateLanguage('XML')">XML</a>
- <a @click="updateLanguage('YAML')">YAML</a>
+ <a refs="code-editor@languageLink" data-lang="CSS">CSS</a>
+ <a refs="code-editor@languageLink" data-lang="C">C</a>
+ <a refs="code-editor@languageLink" data-lang="C++">C++</a>
+ <a refs="code-editor@languageLink" data-lang="C#">C#</a>
+ <a refs="code-editor@languageLink" data-lang="Fortran">Fortran</a>
+ <a refs="code-editor@languageLink" data-lang="Go">Go</a>
+ <a refs="code-editor@languageLink" data-lang="HTML">HTML</a>
+ <a refs="code-editor@languageLink" data-lang="INI">INI</a>
+ <a refs="code-editor@languageLink" data-lang="Java">Java</a>
+ <a refs="code-editor@languageLink" data-lang="JavaScript">JavaScript</a>
+ <a refs="code-editor@languageLink" data-lang="JSON">JSON</a>
+ <a refs="code-editor@languageLink" data-lang="Lua">Lua</a>
+ <a refs="code-editor@languageLink" data-lang="MarkDown">MarkDown</a>
+ <a refs="code-editor@languageLink" data-lang="Nginx">Nginx</a>
+ <a refs="code-editor@languageLink" data-lang="PASCAL">Pascal</a>
+ <a refs="code-editor@languageLink" data-lang="Perl">Perl</a>
+ <a refs="code-editor@languageLink" data-lang="PHP">PHP</a>
+ <a refs="code-editor@languageLink" data-lang="Powershell">Powershell</a>
+ <a refs="code-editor@languageLink" data-lang="Python">Python</a>
+ <a refs="code-editor@languageLink" data-lang="Ruby">Ruby</a>
+ <a refs="code-editor@languageLink" data-lang="shell">Shell/Bash</a>
+ <a refs="code-editor@languageLink" data-lang="SQL">SQL</a>
+ <a refs="code-editor@languageLink" data-lang="XML">XML</a>
+ <a refs="code-editor@languageLink" data-lang="YAML">YAML</a>
</small>
</div>
- <input @keypress.enter="save()" id="code-editor-language" type="text" @input="updateEditorMode(language)" v-model="language">
+ <input refs="code-editor@languageInput" id="code-editor-language" type="text">
</div>
<div class="form-group">
- <label for="code-editor-content">{{ trans('components.code_content') }}</label>
- <textarea ref="editor" v-model="code"></textarea>
+ <div class="grid half no-break v-end mb-xs">
+ <div>
+ <label for="code-editor-content">{{ trans('components.code_content') }}</label>
+ </div>
+ <div class="text-right">
+ <div component="dropdown" refs="code-editor@historyDropDown" class="inline block">
+ <button refs="dropdown@toggle" class="text-button text-small">@icon('history') {{ trans('components.code_session_history') }}</button>
+ <ul refs="dropdown@menu code-editor@historyList" class="dropdown-menu"></ul>
+ </div>
+ </div>
+ </div>
+
+ <div class="clearfix"></div>
+ <textarea refs="code-editor@editor"></textarea>
</div>
<div class="form-group">
- <button type="button" class="button" @click="save()">{{ trans('components.code_save') }}</button>
+ <button refs="code-editor@saveButton" type="button" class="button">{{ trans('components.code_save') }}</button>
</div>
</div>
</div>
</div>
-</div>
+</div>
\ No newline at end of file
--- /dev/null
+{{--
+@url - URL to upload to.
+@placeholder - Placeholder text
+@successMessage
+--}}
+<div component="dropzone"
+ option:dropzone:url="{{ $url }}"
+ option:dropzone:success-message="{{ $successMessage ?? '' }}"
+ option:dropzone:remove-message="{{ trans('components.image_upload_remove') }}"
+ option:dropzone:upload-limit-message="{{ trans('errors.server_upload_limit') }}"
+ option:dropzone:timeout-message="{{ trans('errors.file_upload_timeout') }}"
+
+ class="dropzone-container text-center">
+ <button type="button" class="dz-message">{{ $placeholder }}</button>
+</div>
\ No newline at end of file
<div id="entity-selector-wrap">
- <div overlay entity-selector-popup>
+ <div components="popup entity-selector-popup" class="popup-background">
<div class="popup-body small" tabindex="-1">
<div class="popup-header primary-background">
<div class="popup-title">{{ trans('entities.entity_select') }}</div>
- <button type="button" class="popup-header-close">x</button>
+ <button refs="popup@hide" type="button" class="popup-header-close">x</button>
</div>
@include('components.entity-selector', ['name' => 'entity-selector'])
<div class="popup-footer">
- <button type="button" disabled="true" class="button entity-link-selector-confirm corner-button">{{ trans('common.select') }}</button>
+ <button refs="entity-selector-popup@select" type="button" disabled="true" class="button corner-button">{{ trans('common.select') }}</button>
</div>
</div>
</div>
--- /dev/null
+<div class="image-manager-details">
+
+ <form component="ajax-form"
+ option:ajax-form:success-message="{{ trans('components.image_update_success') }}"
+ option:ajax-form:method="put"
+ option:ajax-form:response-container=".image-manager-details"
+ option:ajax-form:url="{{ url('images/' . $image->id) }}">
+
+ <div class="image-manager-viewer">
+ <a href="{{ $image->url }}" target="_blank" class="block">
+ <img src="{{ $image->thumbs['display'] }}"
+ alt="{{ $image->name }}"
+ class="anim fadeIn"
+ title="{{ $image->name }}">
+ </a>
+ </div>
+ <div class="form-group stretch-inputs">
+ <label for="name">{{ trans('components.image_image_name') }}</label>
+ <input id="name" class="input-base" type="text" name="name" value="{{ $image->name }}">
+ </div>
+ <div class="grid half">
+ <div>
+ <button type="button"
+ id="image-manager-delete"
+ title="{{ trans('common.delete') }}"
+ class="button icon outline">@icon('delete')</button>
+ </div>
+ <div class="text-right">
+ <button type="submit"
+ class="button icon outline">{{ trans('common.save') }}</button>
+ </div>
+ </div>
+ </form>
+
+ @if(!is_null($dependantPages))
+ @if(count($dependantPages) > 0)
+ <p class="text-neg mb-xs mt-m">{{ trans('components.image_delete_used') }}</p>
+ <ul class="text-neg">
+ @foreach($dependantPages as $page)
+ <li>
+ <a href="{{ $page->url }}"
+ target="_blank"
+ class="text-neg">{{ $page->name }}</a>
+ </li>
+ @endforeach
+ </ul>
+ @endif
+ <p class="text-neg mb-xs">{{ trans('components.image_delete_confirm_text') }}</p>
+ <form component="ajax-form"
+ option:ajax-form:success-message="{{ trans('components.image_delete_success') }}"
+ option:ajax-form:method="delete"
+ option:ajax-form:response-container=".image-manager-details"
+ option:ajax-form:url="{{ url('images/' . $image->id) }}">
+ <button type="submit" class="button neg">
+ {{ trans('common.delete_confirm') }}
+ </button>
+ </form>
+ @endif
+
+</div>
\ No newline at end of file
--- /dev/null
+@foreach($images as $index => $image)
+<div>
+ <div component="event-emit-select"
+ option:event-emit-select:name="image"
+ option:event-emit-select:data="{{ json_encode($image) }}"
+ class="image anim fadeIn text-primary"
+ style="animation-delay: {{ $index > 26 ? '160ms' : ($index * 25) . 'ms' }};">
+ <img src="{{ $image->thumbs['gallery'] }}"
+ alt="{{ $image->name }}"
+ width="150"
+ height="150"
+ loading="lazy"
+ title="{{ $image->name }}">
+ <div class="image-meta">
+ <span class="name">{{ $image->name }}</span>
+ <span class="date">{{ trans('components.image_uploaded', ['uploadedDate' => $image->created_at->format('Y-m-d H:i:s')]) }}</span>
+ </div>
+ </div>
+</div>
+@endforeach
+@if($hasMore)
+ <div class="load-more">{{ trans('components.image_load_more') }}</div>
+@endif
\ No newline at end of file
-<div id="image-manager" image-type="{{ $imageType }}" uploaded-to="{{ $uploaded_to ?? 0 }}">
+<div component="image-manager"
+ option:image-manager:uploaded-to="{{ $uploaded_to ?? 0 }}"
+ class="image-manager">
- @exposeTranslations([
- 'components.image_delete_success',
- 'components.image_upload_success',
- 'errors.server_upload_limit',
- 'components.image_upload_remove',
- 'components.file_upload_timeout',
- ])
-
- <div overlay v-cloak @click="hide">
- <div class="popup-body" tabindex="-1" @click.stop>
+ <div component="popup"
+ refs="image-manager@popup"
+ class="popup-background">
+ <div class="popup-body" tabindex="-1">
<div class="popup-header primary-background">
<div class="popup-title">{{ trans('components.image_select') }}</div>
- <button class="popup-header-close" @click="hide()">x</button>
+ <button refs="popup@hide" type="button" class="popup-header-close">x</button>
</div>
<div class="flex-fill image-manager-body">
<div class="image-manager-content">
- <div v-if="imageType === 'gallery' || imageType === 'drawio'" class="image-manager-header primary-background-light nav-tabs grid third">
- <div class="tab-item" title="{{ trans('components.image_all_title') }}" :class="{selected: !filter}" @click="setFilterType(null)">@icon('images') {{ trans('components.image_all') }}</div>
- <div class="tab-item" title="{{ trans('components.image_book_title') }}" :class="{selected: (filter=='book')}" @click="setFilterType('book')">@icon('book', ['class' => 'text-book svg-icon']) {{ trans('entities.book') }}</div>
- <div class="tab-item" title="{{ trans('components.image_page_title') }}" :class="{selected: (filter=='page')}" @click="setFilterType('page')">@icon('page', ['class' => 'text-page svg-icon']) {{ trans('entities.page') }}</div>
+ <div class="image-manager-header primary-background-light nav-tabs grid third no-gap">
+ <button refs="image-manager@filterTabs"
+ data-filter="all"
+ type="button" class="tab-item selected" title="{{ trans('components.image_all_title') }}">@icon('images') {{ trans('components.image_all') }}</button>
+ <button refs="image-manager@filterTabs"
+ data-filter="book"
+ type="button" class="tab-item" title="{{ trans('components.image_book_title') }}">@icon('book', ['class' => 'text-book svg-icon']) {{ trans('entities.book') }}</button>
+ <button refs="image-manager@filterTabs"
+ data-filter="page"
+ type="button" class="tab-item" title="{{ trans('components.image_page_title') }}">@icon('page', ['class' => 'text-page svg-icon']) {{ trans('entities.page') }}</button>
</div>
<div>
- <form @submit.prevent="searchImages" class="contained-search-box">
- <input placeholder="{{ trans('components.image_search_hint') }}" v-model="searchTerm">
- <button :class="{active: searching}" title="{{ trans('common.search_clear') }}" type="button" @click="cancelSearch()" class="text-button cancel">@icon('close')</button>
- <button title="{{ trans('common.search') }}" class="text-button">@icon('search')</button>
+ <form refs="image-manager@searchForm" class="contained-search-box">
+ <input refs="image-manager@searchInput"
+ placeholder="{{ trans('components.image_search_hint') }}"
+ type="text">
+ <button refs="image-manager@cancelSearch"
+ title="{{ trans('common.search_clear') }}"
+ type="button"
+ class="cancel">@icon('close')</button>
+ <button type="submit" class="primary-background text-white"
+ title="{{ trans('common.search') }}">@icon('search')</button>
</form>
</div>
- <div class="image-manager-list">
- <div v-if="images.length > 0" v-for="(image, idx) in images">
- <div class="image anim fadeIn" :style="{animationDelay: (idx > 26) ? '160ms' : ((idx * 25) + 'ms')}"
- :class="{selected: (image==selectedImage)}" @click="imageSelect(image)">
- <img :src="image.thumbs.gallery" :alt="image.title" :title="image.name">
- <div class="image-meta">
- <span class="name" v-text="image.name"></span>
- <span class="date">{{ trans('components.image_uploaded', ['uploadedDate' => "{{ getDate(image.created_at) }" . "}"]) }}</span>
- </div>
- </div>
- </div>
- <div class="load-more" v-show="hasMore" @click="fetchData">{{ trans('components.image_load_more') }}</div>
- </div>
+ <div refs="image-manager@listContainer" class="image-manager-list"></div>
</div>
- <div class="image-manager-sidebar">
-
- <dropzone v-if="imageType !== 'drawio'" ref="dropzone" placeholder="{{ trans('components.image_dropzone') }}" :upload-url="uploadUrl" :uploaded-to="uploadedTo" @success="uploadSuccess"></dropzone>
-
- <div class="inner">
-
- <div class="image-manager-details anim fadeIn" v-if="selectedImage">
-
- <form @submit.prevent="saveImageDetails">
- <div class="image-manager-viewer">
- <a :href="selectedImage.url" target="_blank" style="display: block;">
- <img :src="selectedImage.thumbs.display" :alt="selectedImage.name"
- :title="selectedImage.name">
- </a>
- </div>
- <div class="form-group">
- <label for="name">{{ trans('components.image_image_name') }}</label>
- <input id="name" class="input-base" name="name" v-model="selectedImage.name">
- </div>
- </form>
-
- <div class="clearfix">
- <div class="float left">
- <button type="button" class="button icon outline" @click="deleteImage">@icon('delete')</button>
-
- </div>
- <button class="button anim fadeIn float right" v-show="selectedImage" @click="callbackAndHide(selectedImage)">
- {{ trans('components.image_select_image') }}
- </button>
- <div class="clearfix"></div>
- <div v-show="dependantPages">
- <p class="text-neg text-small">
- {{ trans('components.image_delete_used') }}
- </p>
- <ul class="text-neg">
- <li v-for="page in dependantPages">
- <a :href="page.url" target="_blank" class="text-neg" v-text="page.name"></a>
- </li>
- </ul>
- </div>
- <div v-show="deleteConfirm" class="text-neg text-small">
- {{ trans('components.image_delete_confirm') }}
- </div>
- </div>
-
- </div>
+ <div class="image-manager-sidebar flex-container-column">
+ <div refs="image-manager@dropzoneContainer">
+ @include('components.dropzone', [
+ 'placeholder' => trans('components.image_dropzone'),
+ 'successMessage' => trans('components.image_upload_success'),
+ 'url' => url('/images/gallery?' . http_build_query(['uploaded_to' => $uploaded_to ?? 0]))
+ ])
+ </div>
+ <div refs="image-manager@formContainer" class="inner flex"></div>
- </div>
+ <button refs="image-manager@selectButton" type="button" class="hidden button corner-button">
+ {{ trans('components.image_select_image') }}
+ </button>
</div>
</div>
<div>
<label for="setting-{{ $type }}-color" class="text-dark">{{ trans('settings.'. str_replace('-', '_', $type) .'_color') }}</label>
<button type="button" class="text-button text-muted" setting-color-picker-default>{{ trans('common.default') }}</button>
- <span class="sep mx-xs">|</span>
+ <span class="sep">|</span>
<button type="button" class="text-button text-muted" setting-color-picker-reset>{{ trans('common.reset') }}</button>
</div>
<div>
placeholder="{{ config('setting-defaults.'. $type .'-color') }}"
class="small">
</div>
-</div>
\ No newline at end of file
+</div>
--- /dev/null
+@foreach(array_merge($tags, [null, null]) as $index => $tag)
+ <div class="card drag-card {{ $loop->last ? 'hidden' : '' }}" @if($loop->last) refs="add-remove-rows@model" @endif>
+ <div class="handle">@icon('grip')</div>
+ @foreach(['name', 'value'] as $type)
+ <div component="auto-suggest"
+ option:auto-suggest:url="{{ url('/ajax/tags/suggest/' . $type . 's') }}"
+ option:auto-suggest:type="{{ $type }}"
+ class="outline">
+ <input value="{{ $tag->$type ?? '' }}"
+ placeholder="{{ trans('entities.tag_' . $type) }}"
+ aria-label="{{ trans('entities.tag_' . $type) }}"
+ name="tags[{{ $loop->parent->last ? 'randrowid' : $index }}][{{ $type }}]"
+ type="text"
+ refs="auto-suggest@input"
+ autocomplete="off"/>
+ <ul refs="auto-suggest@list" class="suggestion-box dropdown-menu"></ul>
+ </div>
+ @endforeach
+ <button type="button"
+ aria-label="{{ trans('entities.tags_remove') }}"
+ class="text-center drag-card-action text-neg">
+ @icon('close')
+ </button>
+ </div>
+@endforeach
\ No newline at end of file
-<div id="tag-manager" entity-id="{{ isset($entity) ? $entity->id : 0 }}" entity-type="{{ $entity ? $entity->getType() : $entityType }}">
- <div class="tags">
+<div components="tag-manager add-remove-rows"
+ option:add-remove-rows:row-selector=".card"
+ option:add-remove-rows:remove-selector="button.text-neg"
+ option:tag-manager:row-selector=".card:not(.hidden)"
+ refs="tag-manager@add-remove"
+ class="tags">
+
<p class="text-muted small">{!! nl2br(e(trans('entities.tags_explain'))) !!}</p>
- <draggable :options="{handle: '.handle'}" :list="tags" element="div">
- <div v-for="(tag, i) in tags" :key="tag.key" class="card drag-card">
- <div class="handle" >@icon('grip')</div>
- <div>
- <autosuggest url="{{ url('/ajax/tags/suggest/names') }}" type="name" class="outline" :name="getTagFieldName(i, 'name')"
- v-model="tag.name" @input="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag_name') }}"/>
- </div>
- <div>
- <autosuggest url="{{ url('/ajax/tags/suggest/values') }}" type="value" class="outline" :name="getTagFieldName(i, 'value')"
- v-model="tag.value" @change="tagChange(tag)" @blur="tagBlur(tag)" placeholder="{{ trans('entities.tag_value') }}"/>
- </div>
- <button type="button" aria-label="{{ trans('entities.tags_remove') }}" v-show="tags.length !== 1" class="text-center drag-card-action text-neg" @click="removeTag(tag)">@icon('close')</button>
- </div>
- </draggable>
+ <div component="sortable-list"
+ option:sortable-list:handle-selector=".handle">
+ @include('components.tag-manager-list', ['tags' => $entity ? $entity->tags->all() : []])
+ </div>
- <button @click="addEmptyTag" type="button" class="text-button">{{ trans('entities.tags_add') }}</button>
- </div>
+ <button refs="add-remove-rows@add" type="button" class="text-button">{{ trans('entities.tags_add') }}</button>
</div>
\ No newline at end of file
@section('content')
<div class="container mt-l">
- <div class="card mb-xl px-l pb-xl pt-l">
+ <div class="card mb-xl px-l pb-l pt-l">
<div class="grid half v-center">
<div>
<h1 class="list-heading">{{ $message ?? trans('errors.404_page_not_found') }}</h1>
<h5>{{ trans('errors.sorry_page_not_found') }}</h5>
+ <p>{{ trans('errors.sorry_page_not_found_permission_warning') }}</p>
</div>
<div class="text-right">
+ @if(!signedInUser())
+ <a href="{{ url('/login') }}" class="button outline">{{ trans('auth.log_in') }}</a>
+ @endif
<a href="{{ url('/') }}" class="button outline">{{ trans('errors.return_home') }}</a>
</div>
</div>
+++ /dev/null
-<div toolbox-tab-content="files" id="attachment-manager" page-id="{{ $page->id ?? 0 }}">
-
- @exposeTranslations([
- 'entities.attachments_file_uploaded',
- 'entities.attachments_file_updated',
- 'entities.attachments_link_attached',
- 'entities.attachments_updated_success',
- 'errors.server_upload_limit',
- 'components.image_upload_remove',
- 'components.file_upload_timeout',
- ])
-
- <h4>{{ trans('entities.attachments') }}</h4>
- <div class="px-l files">
-
- <div id="file-list" v-show="!fileToEdit">
- <p class="text-muted small">{{ trans('entities.attachments_explain') }} <span class="text-warn">{{ trans('entities.attachments_explain_instant_save') }}</span></p>
-
- <div class="tab-container">
- <div class="nav-tabs">
- <button type="button" @click="tab = 'list'" :class="{selected: tab === 'list'}"
- class="tab-item">{{ trans('entities.attachments_items') }}</button>
- <button type="button" @click="tab = 'file'" :class="{selected: tab === 'file'}"
- class="tab-item">{{ trans('entities.attachments_upload') }}</button>
- <button type="button" @click="tab = 'link'" :class="{selected: tab === 'link'}"
- class="tab-item">{{ trans('entities.attachments_link') }}</button>
- </div>
- <div v-show="tab === 'list'">
- <draggable style="width: 100%;" :options="{handle: '.handle'}" @change="fileSortUpdate" :list="files" element="div">
- <div v-for="(file, index) in files" :key="file.id" class="card drag-card">
- <div class="handle">@icon('grip')</div>
- <div class="py-s">
- <a :href="getFileUrl(file)" target="_blank" v-text="file.name"></a>
- <div v-if="file.deleting">
- <span class="text-neg small">{{ trans('entities.attachments_delete_confirm') }}</span>
- <br>
- <button type="button" class="text-primary small" @click="file.deleting = false;">{{ trans('common.cancel') }}</button>
- </div>
- </div>
- <button type="button" @click="startEdit(file)" class="drag-card-action text-center text-primary">@icon('edit')</button>
- <button type="button" @click="deleteFile(file)" class="drag-card-action text-center text-neg">@icon('close')</button>
- </div>
- </draggable>
- <p class="small text-muted" v-if="files.length === 0">
- {{ trans('entities.attachments_no_files') }}
- </p>
- </div>
- <div v-show="tab === 'file'">
- <dropzone placeholder="{{ trans('entities.attachments_dropzone') }}" :upload-url="getUploadUrl()" :uploaded-to="pageId" @success="uploadSuccess"></dropzone>
- </div>
- <div v-show="tab === 'link'" @keypress.enter.prevent="attachNewLink(file)">
- <p class="text-muted small">{{ trans('entities.attachments_explain_link') }}</p>
- <div class="form-group">
- <label for="attachment-via-link">{{ trans('entities.attachments_link_name') }}</label>
- <input type="text" placeholder="{{ trans('entities.attachments_link_name') }}" v-model="file.name">
- <p class="small text-neg" v-for="error in errors.link.name" v-text="error"></p>
- </div>
- <div class="form-group">
- <label for="attachment-via-link">{{ trans('entities.attachments_link_url') }}</label>
- <input type="text" placeholder="{{ trans('entities.attachments_link_url_hint') }}" v-model="file.link">
- <p class="small text-neg" v-for="error in errors.link.link" v-text="error"></p>
- </div>
- <button @click.prevent="attachNewLink(file)" class="button">{{ trans('entities.attach') }}</button>
-
- </div>
- </div>
-
- </div>
-
- <div id="file-edit" v-if="fileToEdit" @keypress.enter.prevent="updateFile(fileToEdit)">
- <h5>{{ trans('entities.attachments_edit_file') }}</h5>
-
- <div class="form-group">
- <label for="attachment-name-edit">{{ trans('entities.attachments_edit_file_name') }}</label>
- <input type="text" id="attachment-name-edit" placeholder="{{ trans('entities.attachments_edit_file_name') }}" v-model="fileToEdit.name">
- <p class="small text-neg" v-for="error in errors.edit.name" v-text="error"></p>
- </div>
-
- <div class="tab-container">
- <div class="nav-tabs">
- <button type="button" @click="editTab = 'file'" :class="{selected: editTab === 'file'}" class="tab-item">{{ trans('entities.attachments_upload') }}</button>
- <button type="button" @click="editTab = 'link'" :class="{selected: editTab === 'link'}" class="tab-item">{{ trans('entities.attachments_set_link') }}</button>
- </div>
- <div v-if="editTab === 'file'">
- <dropzone :upload-url="getUploadUrl(fileToEdit)" :uploaded-to="pageId" placeholder="{{ trans('entities.attachments_edit_drop_upload') }}" @success="uploadSuccessUpdate"></dropzone>
- <br>
- </div>
- <div v-if="editTab === 'link'">
- <div class="form-group">
- <label for="attachment-link-edit">{{ trans('entities.attachments_link_url') }}</label>
- <input type="text" id="attachment-link-edit" placeholder="{{ trans('entities.attachment_link') }}" v-model="fileToEdit.link">
- <p class="small text-neg" v-for="error in errors.edit.link" v-text="error"></p>
- </div>
- </div>
- </div>
-
- <button type="button" class="button outline" @click="cancelEdit">{{ trans('common.back') }}</button>
- <button @click.enter.prevent="updateFile(fileToEdit)" class="button">{{ trans('common.save') }}</button>
- </div>
-
- </div>
-</div>
\ No newline at end of file
</form>
</div>
- @include('components.image-manager', ['imageType' => 'gallery', 'uploaded_to' => $page->id])
+ @include('components.image-manager', ['uploaded_to' => $page->id])
@include('components.code-editor')
@include('components.entity-selector-popup')
-
@stop
\ No newline at end of file
<div toolbox-tab-content="tags">
<h4>{{ trans('entities.page_tags') }}</h4>
<div class="px-l">
- @include('components.tag-manager', ['entity' => $page, 'entityType' => 'page'])
+ @include('components.tag-manager', ['entity' => $page])
</div>
</div>
@if(userCan('attachment-create-all'))
- @include('pages.attachment-manager', ['page' => $page])
+ @include('attachments.manager', ['page' => $page])
@endif
<div toolbox-tab-content="templates">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>{{ $page->name }}</title>
- <style>
- @if (!app()->environment('testing'))
- {!! file_get_contents(public_path('/dist/export-styles.css')) !!}
- @endif
- </style>
- @yield('head')
+ @include('partials.export-styles', ['format' => $format])
+
+ @if($format === 'pdf')
+ <style>
+ body {
+ font-size: 14px;
+ line-height: 1.2;
+ }
+
+ h1, h2, h3, h4, h5, h6 {
+ line-height: 1.2;
+ }
+
+ table {
+ max-width: 800px !important;
+ font-size: 0.8em;
+ width: 100% !important;
+ }
+
+ table td {
+ width: auto !important;
+ }
+ </style>
+ @endif
+
@include('partials.custom-head')
</head>
<body>
-<div class="page-editor flex-fill flex" id="page-editor"
- drafts-enabled="{{ $draftsEnabled ? 'true' : 'false' }}"
- drawio-enabled="{{ config('services.drawio') ? 'true' : 'false' }}"
- editor-type="{{ setting('app-editor') }}"
- page-id="{{ $model->id ?? 0 }}"
- text-direction="{{ config('app.rtl') ? 'rtl' : 'ltr' }}"
- page-new-draft="{{ $model->draft ?? 0 }}"
- page-update-draft="{{ $model->isDraft ?? 0 }}">
-
- @exposeTranslations([
- 'entities.pages_editing_draft',
- 'entities.pages_editing_page',
- 'errors.page_draft_autosave_fail',
- 'entities.pages_editing_page',
- 'entities.pages_draft_discarded',
- 'entities.pages_edit_set_changelog',
- ])
+<div component="page-editor" class="page-editor flex-fill flex"
+ option:page-editor:drafts-enabled="{{ $draftsEnabled ? 'true' : 'false' }}"
+ @if(config('services.drawio'))
+ drawio-url="{{ is_string(config('services.drawio')) ? config('services.drawio') : 'https://www.draw.io/?embed=1&proto=json&spin=1' }}"
+ @endif
+ @if($model->name === trans('entities.pages_initial_name'))
+ option:page-editor:has-default-title="true"
+ @endif
+ option:page-editor:editor-type="{{ setting('app-editor') }}"
+ option:page-editor:page-id="{{ $model->id ?? '0' }}"
+ option:page-editor:page-new-draft="{{ ($model->draft ?? false) ? 'true' : 'false' }}"
+ option:page-editor:draft-text="{{ ($model->draft || $model->isDraft) ? trans('entities.pages_editing_draft') : trans('entities.pages_editing_page') }}"
+ option:page-editor:autosave-fail-text="{{ trans('errors.page_draft_autosave_fail') }}"
+ option:page-editor:editing-page-text="{{ trans('entities.pages_editing_page') }}"
+ option:page-editor:draft-discarded-text="{{ trans('entities.pages_draft_discarded') }}"
+ option:page-editor:set-changelog-text="{{ trans('entities.pages_edit_set_changelog') }}">
{{--Header Bar--}}
<div class="primary-background-light toolbar page-edit-toolbar">
</div>
<div class="text-center px-m py-xs">
- <div v-show="draftsEnabled" dropdown dropdown-move-menu class="dropdown-container draft-display text">
- <button type="button" dropdown-toggle aria-haspopup="true" aria-expanded="false" title="{{ trans('entities.pages_edit_draft_options') }}" class="text-primary text-button"><span class="faded-text" v-text="draftText"></span> @icon('more')</button>
- @icon('check-circle', ['class' => 'text-pos draft-notification svg-icon', ':class' => '{visible: draftUpdated}'])
- <ul class="dropdown-menu" role="menu">
+ <div component="dropdown"
+ option:dropdown:move-menu="true"
+ class="dropdown-container draft-display text {{ $draftsEnabled ? '' : 'hidden' }}">
+ <button type="button" refs="dropdown@toggle" aria-haspopup="true" aria-expanded="false" title="{{ trans('entities.pages_edit_draft_options') }}" class="text-primary text-button"><span refs="page-editor@draftDisplay" class="faded-text"></span> @icon('more')</button>
+ @icon('check-circle', ['class' => 'text-pos draft-notification svg-icon', 'refs' => 'page-editor@draftDisplayIcon'])
+ <ul refs="dropdown@menu" class="dropdown-menu" role="menu">
<li>
- <button type="button" @click="saveDraft()" class="text-pos">@icon('save'){{ trans('entities.pages_edit_save_draft') }}</button>
+ <button refs="page-editor@saveDraft" type="button" class="text-pos">@icon('save'){{ trans('entities.pages_edit_save_draft') }}</button>
</li>
- <li v-if="isNewDraft">
+ @if ($model->draft)
+ <li>
<a href="{{ $model->getUrl('/delete') }}" class="text-neg">@icon('delete'){{ trans('entities.pages_edit_delete_draft') }}</a>
</li>
- <li v-if="isUpdateDraft">
- <button type="button" @click="discardDraft" class="text-neg">@icon('cancel'){{ trans('entities.pages_edit_discard_draft') }}</button>
+ @endif
+ <li refs="page-editor@discardDraftWrap" class="{{ ($model->isDraft ?? false) ? '' : 'hidden' }}">
+ <button refs="page-editor@discardDraft" type="button" class="text-neg">@icon('cancel'){{ trans('entities.pages_edit_discard_draft') }}</button>
</li>
</ul>
</div>
</div>
- <div class="action-buttons px-m py-xs" v-cloak>
- <div dropdown dropdown-move-menu class="dropdown-container">
- <button type="button" dropdown-toggle aria-haspopup="true" aria-expanded="false" class="text-primary text-button">@icon('edit') <span v-text="changeSummaryShort"></span></button>
- <ul class="wide dropdown-menu">
+ <div class="action-buttons px-m py-xs">
+ <div component="dropdown" dropdown-move-menu class="dropdown-container">
+ <button refs="dropdown@toggle" type="button" aria-haspopup="true" aria-expanded="false" class="text-primary text-button">@icon('edit') <span refs="page-editor@changelogDisplay">{{ trans('entities.pages_edit_set_changelog') }}</span></button>
+ <ul refs="dropdown@menu" class="wide dropdown-menu">
<li class="px-l py-m">
<p class="text-muted pb-s">{{ trans('entities.pages_edit_enter_changelog_desc') }}</p>
- <input name="summary" id="summary-input" type="text" placeholder="{{ trans('entities.pages_edit_enter_changelog') }}" v-model="changeSummary" />
+ <input refs="page-editor@changelogInput"
+ name="summary"
+ id="summary-input"
+ type="text"
+ placeholder="{{ trans('entities.pages_edit_enter_changelog') }}" />
</li>
</ul>
<span>{{-- Prevents button jumping on menu show --}}</span>
</div>
{{--Title input--}}
- <div class="title-input page-title clearfix" v-pre>
- <div class="input">
- @include('form.text', ['name' => 'name', 'placeholder' => trans('entities.pages_title')])
+ <div class="title-input page-title clearfix">
+ <div refs="page-editor@titleContainer" class="input">
+ @include('form.text', ['name' => 'name', 'model' => $model, 'placeholder' => trans('entities.pages_title')])
</div>
</div>
</div>
- <button type="submit" id="save-button-mobile" title="{{ trans('entities.pages_save') }}" class="text-primary text-button hide-over-m page-save-mobile-button">@icon('save')</button>
+ <button type="submit"
+ id="save-button-mobile"
+ title="{{ trans('entities.pages_save') }}"
+ class="text-primary text-button hide-over-m page-save-mobile-button">@icon('save')</button>
</div>
\ No newline at end of file
-<div v-pre id="markdown-editor" markdown-editor class="flex-fill flex code-fill">
+<div id="markdown-editor" component="markdown-editor"
+ option:markdown-editor:page-id="{{ $model->id ?? 0 }}"
+ option:markdown-editor:text-direction="{{ config('app.rtl') ? 'rtl' : 'ltr' }}"
+ class="flex-fill flex code-fill">
@exposeTranslations([
'errors.image_upload_error',
])
<div dir="auto">
- <h1 class="break-text" v-pre id="bkmrk-page-title">{{$page->name}}</h1>
+ <h1 class="break-text" id="bkmrk-page-title">{{$page->name}}</h1>
<div style="clear:left;"></div>
+++ /dev/null
-@extends('pages/export')
-
-@section('head')
- <style>
- body {
- font-size: 14px;
- line-height: 1.2;
- }
-
- h1, h2, h3, h4, h5, h6 {
- line-height: 1.2;
- }
-
- table {
- max-width: 800px !important;
- font-size: 0.8em;
- width: 100% !important;
- }
-
- table td {
- width: auto !important;
- }
-
- .page-content .float {
- float: none !important;
- }
-
- .page-content img.align-left, .page-content img.align-right {
- float: none !important;
- clear: both;
- display: block;
- }
- </style>
-@stop
\ No newline at end of file
@else
<a href="{{ $revision->getUrl() }}" target="_blank">{{ trans('entities.pages_revisions_preview') }}</a>
<span class="text-muted"> | </span>
- <div dropdown class="dropdown-container">
- <a dropdown-toggle href="#" aria-haspopup="true" aria-expanded="false">{{ trans('entities.pages_revisions_restore') }}</a>
- <ul class="dropdown-menu" role="menu">
+ <div component="dropdown" class="dropdown-container">
+ <a refs="dropdown@toggle" href="#" aria-haspopup="true" aria-expanded="false">{{ trans('entities.pages_revisions_restore') }}</a>
+ <ul refs="dropdown@menu" class="dropdown-menu" role="menu">
<li class="px-m py-s"><small class="text-muted">{{trans('entities.revision_restore_confirm')}}</small></li>
<li>
<form action="{{ $revision->getUrl('/restore') }}" method="POST">
</ul>
</div>
<span class="text-muted"> | </span>
- <div dropdown class="dropdown-container">
- <a dropdown-toggle href="#" aria-haspopup="true" aria-expanded="false">{{ trans('common.delete') }}</a>
- <ul class="dropdown-menu" role="menu">
+ <div component="dropdown" class="dropdown-container">
+ <a refs="dropdown@toggle" href="#" aria-haspopup="true" aria-expanded="false">{{ trans('common.delete') }}</a>
+ <ul refs="dropdown@menu" role="menu">
<li class="px-m py-s"><small class="text-muted">{{trans('entities.revision_delete_confirm')}}</small></li>
<li>
<form action="{{ $revision->getUrl('/delete/') }}" method="POST">
</div>
<main class="content-wrap card">
- <div class="page-content" page-display="{{ $page->id }}">
+ <div class="page-content clearfix" page-display="{{ $page->id }}">
@include('pages.pointer', ['page' => $page])
@include('pages.page-display')
</div>
<div id="page-attachments" class="mb-l">
<h5>{{ trans('entities.pages_attachments') }}</h5>
<div class="body">
- @foreach($page->attachments as $attachment)
- <div class="attachment icon-list">
- <a class="icon-list-item py-xs" href="{{ $attachment->getUrl() }}" @if($attachment->external) target="_blank" @endif>
- <span class="icon">@icon($attachment->external ? 'export' : 'file')</span>
- <span>{{ $attachment->name }}</span>
- </a>
- </div>
- @endforeach
+ @include('attachments.list', ['attachments' => $page->attachments])
</div>
</div>
@endif
-<div wysiwyg-editor class="flex-fill flex">
+<div component="wysiwyg-editor"
+ option:wysiwyg-editor:page-id="{{ $model->id ?? 0 }}"
+ option:wysiwyg-editor:text-direction="{{ config('app.rtl') ? 'rtl' : 'ltr' }}"
+ class="flex-fill flex">
@exposeTranslations([
'errors.image_upload_error',
])
- <textarea id="html-editor" name="html" rows="5" v-pre
+ <textarea id="html-editor" name="html" rows="5"
@if($errors->has('html')) class="text-neg" @endif>@if(isset($model) || old('html')){{ old('html') ? old('html') : $model->html }}@endif</textarea>
</div>
@endif
</div>
-<div v-pre>
+<div>
@if($activity->user)
<a href="{{ $activity->user->getProfileUrl() }}">{{ $activity->user->name }}</a>
@else
-<nav id="book-tree" class="book-tree mb-xl" v-pre aria-label="{{ trans('entities.books_navigation') }}">
+<nav id="book-tree"
+ class="book-tree mb-xl"
+ aria-label="{{ trans('entities.books_navigation') }}">
+
<h5>{{ trans('entities.books_navigation') }}</h5>
<ul class="sidebar-page-list mt-xs menu entity-list">
-<div class="breadcrumb-listing" dropdown breadcrumb-listing="{{ $entity->getType() }}:{{ $entity->id }}">
- <div class="breadcrumb-listing-toggle" dropdown-toggle
+<div class="breadcrumb-listing" component="dropdown" breadcrumb-listing="{{ $entity->getType() }}:{{ $entity->id }}">
+ <div class="breadcrumb-listing-toggle" refs="dropdown@toggle"
aria-haspopup="true" aria-expanded="false" tabindex="0">
<div class="separator">@icon('chevron-right')</div>
</div>
- <div dropdown-menu class="breadcrumb-listing-dropdown card" role="menu">
+ <div refs="dropdown@menu" class="breadcrumb-listing-dropdown card" role="menu">
<div class="breadcrumb-listing-search">
@icon('search')
<input autocomplete="off" type="text" name="entity-search" placeholder="{{ trans('common.search') }}" aria-label="{{ trans('common.search') }}">
--- /dev/null
+<form action="{{ url('/settings/users/toggle-dark-mode') }}" method="post">
+ {{ csrf_field() }}
+ {{ method_field('patch') }}
+ @if(setting()->getForCurrentUser('dark-mode-enabled'))
+ <button class="{{ $classes ?? '' }}"><span>@icon('light-mode')</span><span>{{ trans('common.light_mode') }}</span></button>
+ @else
+ <button class="{{ $classes ?? '' }}"><span>@icon('dark-mode')</span><span>{{ trans('common.dark_mode') }}</span></button>
+ @endif
+</form>
\ No newline at end of file
+++ /dev/null
-<div class="mb-xl">
- <form v-on:submit.prevent="searchBook" class="search-box flexible" role="search">
- <input v-model="searchTerm" v-on:change="checkSearchForm" type="text" aria-label="{{ trans('entities.books_search_this') }}" name="term" placeholder="{{ trans('entities.books_search_this') }}">
- <button type="submit" aria-label="{{ trans('common.search') }}">@icon('search')</button>
- <button v-if="searching" v-cloak class="search-box-cancel text-neg" v-on:click="clearSearch"
- type="button" aria-label="{{ trans('common.search_clear') }}">@icon('close')</button>
- </form>
-</div>
\ No newline at end of file
+++ /dev/null
-<div class="search-results" v-cloak v-show="searching">
- <div class="grid half v-center">
- <h3 class="text-muted px-none">
- {{ trans('entities.search_results') }}
- </h3>
- <div class="text-right">
- <a v-if="searching" v-on:click="clearSearch" class="button outline">{{ trans('entities.search_clear') }}</a>
- </div>
- </div>
-
- <div v-if="!searchResults">
- @include('partials.loading-icon')
- </div>
- <div class="book-contents" v-html="searchResults"></div>
-</div>
\ No newline at end of file
-<div dropdown class="dropdown-container" id="export-menu">
- <div dropdown-toggle class="icon-list-item"
+<div component="dropdown" class="dropdown-container" id="export-menu">
+ <div refs="dropdown@toggle" class="icon-list-item"
aria-haspopup="true" aria-expanded="false" aria-label="{{ trans('entities.export') }}" tabindex="0">
<span>@icon('export')</span>
<span>{{ trans('entities.export') }}</span>
</div>
- <ul class="wide dropdown-menu" role="menu">
+ <ul refs="dropdown@menu" class="wide dropdown-menu" role="menu">
<li><a href="{{ $entity->getUrl('/export/html') }}" target="_blank">{{ trans('entities.export_html') }} <span class="text-muted float right">.html</span></a></li>
<li><a href="{{ $entity->getUrl('/export/pdf') }}" target="_blank">{{ trans('entities.export_pdf') }} <span class="text-muted float right">.pdf</span></a></li>
<li><a href="{{ $entity->getUrl('/export/plaintext') }}" target="_blank">{{ trans('entities.export_text') }} <span class="text-muted float right">.txt</span></a></li>
--- /dev/null
+{{--
+@label - Placeholder/aria-label text
+--}}
+<div class="mb-xl">
+ <form refs="entity-search@searchForm" class="search-box flexible" role="search">
+ <input refs="entity-search@searchInput" type="text"
+ aria-label="{{ $label }}" name="term" placeholder="{{ $label }}">
+ <button type="submit" aria-label="{{ trans('common.search') }}">@icon('search')</button>
+ </form>
+</div>
\ No newline at end of file
--- /dev/null
+<div refs="entity-search@searchView" class="search-results hidden">
+ <div class="grid half v-center">
+ <h3 class="text-muted px-none">
+ {{ trans('entities.search_results') }}
+ </h3>
+ <div class="text-right">
+ <a refs="entity-search@clearButton" class="button outline">{{ trans('entities.search_clear') }}</a>
+ </div>
+ </div>
+
+ <div refs="entity-search@loadingBlock">
+ @include('partials.loading-icon')
+ </div>
+ <div class="book-contents" refs="entity-search@searchResults"></div>
+</div>
\ No newline at end of file
--- /dev/null
+<style>
+ @if (!app()->environment('testing'))
+ {!! file_get_contents(public_path('/dist/export-styles.css')) !!}
+ @endif
+</style>
+
+@if ($format === 'pdf')
+ <style>
+ /* Patches for CSS variable colors */
+ a {
+ color: {{ setting('app-color') }};
+ }
+
+ blockquote {
+ border-left-color: {{ setting('app-color') }};
+ }
+
+ /* Patches for content layout */
+ .page-content .float {
+ float: none !important;
+ }
+
+ .page-content img.align-left, .page-content img.align-right {
+ float: none !important;
+ clear: both;
+ display: block;
+ }
+ </style>
+@endif
\ No newline at end of file
<input type="hidden" value="{{ $order }}" name="order">
<div class="list-sort">
- <div class="list-sort-type dropdown-container" dropdown>
- <div dropdown-toggle aria-haspopup="true" aria-expanded="false" aria-label="{{ trans('common.sort_options') }}" tabindex="0">{{ $options[$selectedSort] }}</div>
- <ul class="dropdown-menu">
+ <div component="dropdown" class="list-sort-type dropdown-container">
+ <div refs="dropdown@toggle" aria-haspopup="true" aria-expanded="false" aria-label="{{ trans('common.sort_options') }}" tabindex="0">{{ $options[$selectedSort] }}</div>
+ <ul refs="dropdown@menu" class="dropdown-menu">
@foreach($options as $key => $label)
<li @if($key === $selectedSort) class="active" @endif><a href="#" data-sort-value="{{$key}}">{{ $label }}</a></li>
@endforeach
@extends('simple-layout')
@section('body')
- <input type="hidden" name="searchTerm" value="{{$searchTerm}}">
-
- <div class="container" id="search-system">
-
- <div class="my-s">
-
- </div>
+ <div class="container mt-xl" id="search-system">
<div class="grid right-focus reverse-collapse gap-xl">
<div>
<div>
- <h5>{{ trans('entities.search_filters') }}</h5>
+ <h5>{{ trans('entities.search_advanced') }}</h5>
- <form v-on:submit="updateSearch" v-cloak class="v-cloak anim fadeIn">
- <h6 class="text-muted">{{ trans('entities.search_content_type') }}</h6>
+ <form method="get" action="{{ url('/search') }}">
+ <h6>{{ trans('entities.search_terms') }}</h6>
+ <input type="text" name="search" value="{{ implode(' ', $options->searches) }}">
+
+ <h6>{{ trans('entities.search_content_type') }}</h6>
<div class="form-group">
- <label class="inline checkbox text-page"><input type="checkbox" v-on:change="typeChange" v-model="search.type.page" value="page">{{ trans('entities.page') }}</label>
- <label class="inline checkbox text-chapter"><input type="checkbox" v-on:change="typeChange" v-model="search.type.chapter" value="chapter">{{ trans('entities.chapter') }}</label>
+
+ <?php
+ $types = explode('|', $options->filters['type'] ?? '');
+ $hasTypes = $types[0] !== '';
+ ?>
+ @include('search.form.type-filter', ['checked' => !$hasTypes || in_array('page', $types), 'entity' => 'page', 'transKey' => 'page'])
+ @include('search.form.type-filter', ['checked' => !$hasTypes || in_array('chapter', $types), 'entity' => 'chapter', 'transKey' => 'chapter'])
<br>
- <label class="inline checkbox text-book"><input type="checkbox" v-on:change="typeChange" v-model="search.type.book" value="book">{{ trans('entities.book') }}</label>
- <label class="inline checkbox text-bookshelf"><input type="checkbox" v-on:change="typeChange" v-model="search.type.bookshelf" value="bookshelf">{{ trans('entities.shelf') }}</label>
+ @include('search.form.type-filter', ['checked' => !$hasTypes || in_array('book', $types), 'entity' => 'book', 'transKey' => 'book'])
+ @include('search.form.type-filter', ['checked' => !$hasTypes || in_array('bookshelf', $types), 'entity' => 'bookshelf', 'transKey' => 'shelf'])
</div>
- <h6 class="text-muted">{{ trans('entities.search_exact_matches') }}</h6>
- <table cellpadding="0" cellspacing="0" border="0" class="no-style">
- <tr v-for="(term, i) in search.exactTerms">
- <td style="padding: 0 12px 6px 0;">
- <input class="exact-input outline" v-on:input="exactChange" type="text" v-model="search.exactTerms[i]"></td>
- <td>
- <button type="button" class="text-neg text-button" v-on:click="removeExact(i)">
- @icon('close')
- </button>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <button type="button" class="text-button" v-on:click="addExact">
- @icon('add-circle'){{ trans('common.add') }}
- </button>
- </td>
- </tr>
- </table>
-
- <h6 class="text-muted">{{ trans('entities.search_tags') }}</h6>
- <table cellpadding="0" cellspacing="0" border="0" class="no-style">
- <tr v-for="(term, i) in search.tagTerms">
- <td style="padding: 0 12px 6px 0;">
- <input class="tag-input outline" v-on:input="tagChange" type="text" v-model="search.tagTerms[i]"></td>
- <td>
- <button type="button" class="text-neg text-button" v-on:click="removeTag(i)">
- @icon('close')
- </button>
- </td>
- </tr>
- <tr>
- <td colspan="2">
- <button type="button" class="text-button" v-on:click="addTag">
- @icon('add-circle'){{ trans('common.add') }}
- </button>
- </td>
- </tr>
- </table>
+ <h6>{{ trans('entities.search_exact_matches') }}</h6>
+ @include('search.form.term-list', ['type' => 'exact', 'currentList' => $options->exacts])
+
+ <h6>{{ trans('entities.search_tags') }}</h6>
+ @include('search.form.term-list', ['type' => 'tags', 'currentList' => $options->tags])
@if(signedInUser())
- <h6 class="text-muted">{{ trans('entities.search_options') }}</h6>
- <label class="checkbox">
- <input type="checkbox" v-on:change="optionChange('viewed_by_me')"
- v-model="search.option.viewed_by_me" value="page">
+ <h6>{{ trans('entities.search_options') }}</h6>
+
+ @component('search.form.boolean-filter', ['filters' => $options->filters, 'name' => 'viewed_by_me', 'value' => null])
{{ trans('entities.search_viewed_by_me') }}
- </label>
- <label class="checkbox">
- <input type="checkbox" v-on:change="optionChange('not_viewed_by_me')"
- v-model="search.option.not_viewed_by_me" value="page">
+ @endcomponent
+ @component('search.form.boolean-filter', ['filters' => $options->filters, 'name' => 'not_viewed_by_me', 'value' => null])
{{ trans('entities.search_not_viewed_by_me') }}
- </label>
- <label class="checkbox">
- <input type="checkbox" v-on:change="optionChange('is_restricted')"
- v-model="search.option.is_restricted" value="page">
+ @endcomponent
+ @component('search.form.boolean-filter', ['filters' => $options->filters, 'name' => 'is_restricted', 'value' => null])
{{ trans('entities.search_permissions_set') }}
- </label>
- <label class="checkbox">
- <input type="checkbox" v-on:change="optionChange('created_by:me')"
- v-model="search.option['created_by:me']" value="page">
+ @endcomponent
+ @component('search.form.boolean-filter', ['filters' => $options->filters, 'name' => 'created_by', 'value' => 'me'])
{{ trans('entities.search_created_by_me') }}
- </label>
- <label class="checkbox">
- <input type="checkbox" v-on:change="optionChange('updated_by:me')"
- v-model="search.option['updated_by:me']" value="page">
+ @endcomponent
+ @component('search.form.boolean-filter', ['filters' => $options->filters, 'name' => 'updated_by', 'value' => 'me'])
{{ trans('entities.search_updated_by_me') }}
- </label>
+ @endcomponent
@endif
- <h6 class="text-muted">{{ trans('entities.search_date_options') }}</h6>
- <table cellpadding="0" cellspacing="0" border="0" class="no-style form-table">
- <tr>
- <td width="200">{{ trans('entities.search_updated_after') }}</td>
- <td width="80">
- <button type="button" class="text-button" v-if="!search.dates.updated_after"
- v-on:click="enableDate('updated_after')">{{ trans('entities.search_set_date') }}</button>
-
- </td>
- </tr>
- <tr v-if="search.dates.updated_after">
- <td>
- <input v-if="search.dates.updated_after" class="tag-input"
- v-on:input="dateChange('updated_after')" type="date" v-model="search.dates.updated_after"
- pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}">
- </td>
- <td>
- <button v-if="search.dates.updated_after" type="button" class="text-neg text-button"
- v-on:click="dateRemove('updated_after')">
- @icon('close')
- </button>
- </td>
- </tr>
- <tr>
- <td>{{ trans('entities.search_updated_before') }}</td>
- <td>
- <button type="button" class="text-button" v-if="!search.dates.updated_before"
- v-on:click="enableDate('updated_before')">{{ trans('entities.search_set_date') }}</button>
-
- </td>
- </tr>
- <tr v-if="search.dates.updated_before">
- <td>
- <input v-if="search.dates.updated_before" class="tag-input"
- v-on:input="dateChange('updated_before')" type="date" v-model="search.dates.updated_before"
- pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}">
- </td>
- <td>
- <button v-if="search.dates.updated_before" type="button" class="text-neg text-button"
- v-on:click="dateRemove('updated_before')">
- @icon('close')
- </button>
- </td>
- </tr>
- <tr>
- <td>{{ trans('entities.search_created_after') }}</td>
- <td>
- <button type="button" class="text-button" v-if="!search.dates.created_after"
- v-on:click="enableDate('created_after')">{{ trans('entities.search_set_date') }}</button>
-
- </td>
- </tr>
- <tr v-if="search.dates.created_after">
- <td>
- <input v-if="search.dates.created_after" class="tag-input"
- v-on:input="dateChange('created_after')" type="date" v-model="search.dates.created_after"
- pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}">
- </td>
- <td>
- <button v-if="search.dates.created_after" type="button" class="text-neg text-button"
- v-on:click="dateRemove('created_after')">
- @icon('close')
- </button>
- </td>
- </tr>
- <tr>
- <td>{{ trans('entities.search_created_before') }}</td>
- <td>
- <button type="button" class="text-button" v-if="!search.dates.created_before"
- v-on:click="enableDate('created_before')">{{ trans('entities.search_set_date') }}</button>
-
- </td>
- </tr>
- <tr v-if="search.dates.created_before">
- <td>
- <input v-if="search.dates.created_before" class="tag-input"
- v-on:input="dateChange('created_before')" type="date" v-model="search.dates.created_before"
- pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}">
- </td>
- <td>
- <button v-if="search.dates.created_before" type="button" class="text-neg text-button"
- v-on:click="dateRemove('created_before')">
- @icon('close')
- </button>
- </td>
- </tr>
- </table>
-
+ <h6>{{ trans('entities.search_date_options') }}</h6>
+ @include('search.form.date-filter', ['name' => 'updated_after', 'filters' => $options->filters])
+ @include('search.form.date-filter', ['name' => 'updated_before', 'filters' => $options->filters])
+ @include('search.form.date-filter', ['name' => 'created_after', 'filters' => $options->filters])
+ @include('search.form.date-filter', ['name' => 'created_before', 'filters' => $options->filters])
<button type="submit" class="button">{{ trans('entities.search_update') }}</button>
</form>
</div>
</div>
<div>
- <div v-pre class="card content-wrap">
+ <div class="card content-wrap">
<h1 class="list-heading">{{ trans('entities.search_results') }}</h1>
+
<form action="{{ url('/search') }}" method="GET" class="search-box flexible hide-over-l">
<input value="{{$searchTerm}}" type="text" name="term" placeholder="{{ trans('common.search') }}">
<button type="submit">@icon('search')</button>
- <button v-if="searching" v-cloak class="search-box-cancel text-neg" v-on:click="clearSearch" type="button">@icon('close')</button>
</form>
+
<h6 class="text-muted">{{ trans_choice('entities.search_total_results_found', $totalResults, ['count' => $totalResults]) }}</h6>
<div class="book-contents">
@include('partials.entity-list', ['entities' => $entities, 'showPath' => true])
</div>
+
@if($hasNextPage)
<div class="text-right mt-m">
<a href="{{ $nextPageLink }}" class="button outline">{{ trans('entities.search_more') }}</a>
--- /dev/null
+{{--
+$filters - Array of search filter values
+$name - Name of filter to limit use.
+$value - Value of filter to use
+--}}
+<label class="checkbox">
+ <input type="checkbox"
+ name="filters[{{ $name }}]"
+ @if (isset($filters[$name]) && (!$value || ($value && $value === $filters[$name]))) checked="checked" @endif
+ value="{{ $value ?: 'true' }}">
+ {{ $slot }}
+</label>
\ No newline at end of file
--- /dev/null
+{{--
+@filters - Active search filters
+@name - Name of filter
+--}}
+<table class="no-style form-table mb-xs">
+ <tr>
+ <td width="200">{{ trans('entities.search_' . $name) }}</td>
+ <td width="80"></td>
+ </tr>
+ <tr component="optional-input">
+ <td>
+ <button type="button" refs="optional-input@show"
+ class="text-button {{ ($filters[$name] ?? false) ? 'hidden' : '' }}">{{ trans('entities.search_set_date') }}</button>
+ <input class="tag-input {{ ($filters[$name] ?? false) ? '' : 'hidden' }}"
+ refs="optional-input@input"
+ value="{{ $filters[$name] ?? '' }}"
+ type="date"
+ name="filters[{{ $name }}]"
+ pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}">
+ </td>
+ <td>
+ <button type="button"
+ refs="optional-input@remove"
+ class="text-neg text-button {{ ($filters[$name] ?? false) ? '' : 'hidden' }}">
+ @icon('close')
+ </button>
+ </td>
+ </tr>
+</table>
\ No newline at end of file
--- /dev/null
+{{--
+@type - Type of term (exact, tag)
+@currentList
+--}}
+<table component="add-remove-rows"
+ option:add-remove-rows:remove-selector="button.text-neg"
+ option:add-remove-rows:row-selector="tr"
+ class="no-style">
+ @foreach(array_merge($currentList, ['']) as $term)
+ <tr @if(empty($term)) class="hidden" refs="add-remove-rows@model" @endif>
+ <td class="pb-s pr-m">
+ <input class="exact-input outline" type="text" name="{{$type}}[]" value="{{ $term }}">
+ </td>
+ <td>
+ <button type="button" class="text-neg text-button">@icon('close')</button>
+ </td>
+ </tr>
+ @endforeach
+ <tr>
+ <td colspan="2">
+ <button refs="add-remove-rows@add" type="button" class="text-button">
+ @icon('add-circle'){{ trans('common.add') }}
+ </button>
+ </td>
+ </tr>
+</table>
\ No newline at end of file
--- /dev/null
+{{--
+@checked - If the option should be pre-checked
+@entity - Entity Name
+@transKey - Translation Key
+--}}
+<label class="inline checkbox text-{{$entity}}">
+ <input type="checkbox" name="types[]"
+ @if($checked) checked @endif
+ value="{{$entity}}">{{ trans('entities.' . $transKey) }}
+</label>
\ No newline at end of file
<label for="setting-app-name" class="setting-list-label">{{ trans('settings.app_name') }}</label>
<p class="small">{{ trans('settings.app_name_desc') }}</p>
</div>
- <div>
+ <div class="pt-xs">
<input type="text" value="{{ setting('app-name', 'BookStack') }}" name="setting-app-name" id="setting-app-name">
@include('components.toggle-switch', [
'name' => 'setting-app-name-header',
<label class="setting-list-label">{{ trans('settings.app_editor') }}</label>
<p class="small">{{ trans('settings.app_editor_desc') }}</p>
</div>
- <div>
+ <div class="pt-xs">
<select name="setting-app-editor" id="setting-app-editor">
<option @if(setting('app-editor') === 'wysiwyg') selected @endif value="wysiwyg">WYSIWYG</option>
<option @if(setting('app-editor') === 'markdown') selected @endif value="markdown">Markdown</option>
<label class="setting-list-label">{{ trans('settings.app_logo') }}</label>
<p class="small">{!! trans('settings.app_logo_desc') !!}</p>
</div>
- <div>
+ <div class="pt-xs">
@include('components.image-picker', [
'removeName' => 'setting-app-logo',
'removeValue' => 'none',
<label class="setting-list-label">{{ trans('settings.app_primary_color') }}</label>
<p class="small">{!! trans('settings.app_primary_color_desc') !!}</p>
</div>
- <div setting-app-color-picker class="text-m-right">
+ <div setting-app-color-picker class="text-m-right pt-xs">
<input type="color" data-default="#206ea7" data-current="{{ setting('app-color') }}" value="{{ setting('app-color') }}" name="setting-app-color" id="setting-app-color" placeholder="#206ea7">
<input type="hidden" value="{{ setting('app-color-light') }}" name="setting-app-color-light" id="setting-app-color-light">
- <br>
- <button type="button" class="text-button text-muted mt-s mx-s" setting-app-color-picker-default>{{ trans('common.default') }}</button>
- <span class="sep">|</span>
- <button type="button" class="text-button text-muted mt-s mx-s" setting-app-color-picker-reset>{{ trans('common.reset') }}</button>
+ <div class="pr-s">
+ <button type="button" class="text-button text-muted mt-s" setting-app-color-picker-default>{{ trans('common.default') }}</button>
+ <span class="sep">|</span>
+ <button type="button" class="text-button text-muted mt-s" setting-app-color-picker-reset>{{ trans('common.reset') }}</button>
+ </div>
+
</div>
</div>
<label for="setting-app-homepage" class="setting-list-label">{{ trans('settings.app_homepage') }}</label>
<p class="small">{{ trans('settings.app_homepage_desc') }}</p>
</div>
- <div>
+ <div class="pt-xs">
<select name="setting-app-homepage-type" id="setting-app-homepage-type">
<option @if(setting('app-homepage-type') === 'default') selected @endif value="default">{{ trans('common.default') }}</option>
<option @if(setting('app-homepage-type') === 'books') selected @endif value="books">{{ trans('entities.books') }}</option>
<label for="setting-registration-restrict" class="setting-list-label">{{ trans('settings.reg_confirm_restrict_domain') }}</label>
<p class="small">{!! trans('settings.reg_confirm_restrict_domain_desc') !!}</p>
</div>
- <div>
+ <div class="pt-xs">
<input type="text" id="setting-registration-restrict" name="setting-registration-restrict" placeholder="{{ trans('settings.reg_confirm_restrict_domain_placeholder') }}" value="{{ setting('registration-restrict', '') }}">
</div>
</div>
</div>
- @include('components.image-manager', ['imageType' => 'system'])
@include('components.entity-selector-popup', ['entityTypes' => 'page'])
@stop
<label for="tag-manager">{{ trans('entities.shelf_tags') }}</label>
</button>
<div class="collapse-content" collapsible-content>
- @include('components.tag-manager', ['entity' => $shelf ?? null, 'entityType' => 'bookshelf'])
+ @include('components.tag-manager', ['entity' => $shelf ?? null])
</div>
</div>
<span>{{ trans('entities.shelves_new_action') }}</span>
</a>
@endif
- @include('partials.view-toggle', ['view' => $view, 'type' => 'shelf'])
+ @include('partials.view-toggle', ['view' => $view, 'type' => 'shelves'])
</div>
</div>
</div>
</a>
<div class="entity-shelf-books grid third gap-y-xs entity-list-item-children">
- @foreach($shelf->books as $book)
+ @foreach($shelf->visibleBooks as $book)
<div>
<a href="{{ $book->getUrl('?shelf=' . $shelf->id) }}" class="entity-chip text-book">
@icon('book')
<div class="book-content">
<p class="text-muted">{!! nl2br(e($shelf->description)) !!}</p>
@if(count($shelf->visibleBooks) > 0)
- <div class="entity-list">
- @foreach($shelf->visibleBooks as $book)
- @include('books.list-item', ['book' => $book])
- @endforeach
- </div>
+ @if($view === 'list')
+ <div class="entity-list">
+ @foreach($shelf->visibleBooks as $book)
+ @include('books.list-item', ['book' => $book])
+ @endforeach
+ </div>
+ @else
+ <div class="grid third">
+ @foreach($shelf->visibleBooks as $key => $book)
+ @include('books.grid-item', ['book' => $book])
+ @endforeach
+ </div>
+ @endif
@else
<div class="mt-xl">
<hr>
</a>
@endif
+ @include('partials.view-toggle', ['view' => $view, 'type' => 'shelf'])
+
<hr class="primary-background">
@if(userCan('bookshelf-update', $shelf))
Route::get('docs', 'ApiDocsController@display');
Route::get('docs.json', 'ApiDocsController@json');
-Route::get('books', 'BooksApiController@list');
-Route::post('books', 'BooksApiController@create');
-Route::get('books/{id}', 'BooksApiController@read');
-Route::put('books/{id}', 'BooksApiController@update');
-Route::delete('books/{id}', 'BooksApiController@delete');
+Route::get('books', 'BookApiController@list');
+Route::post('books', 'BookApiController@create');
+Route::get('books/{id}', 'BookApiController@read');
+Route::put('books/{id}', 'BookApiController@update');
+Route::delete('books/{id}', 'BookApiController@delete');
+
+Route::get('books/{id}/export/html', 'BookExportApiController@exportHtml');
+Route::get('books/{id}/export/pdf', 'BookExportApiController@exportPdf');
+Route::get('books/{id}/export/plaintext', 'BookExportApiController@exportPlainText');
+
+Route::get('chapters', 'ChapterApiController@list');
+Route::post('chapters', 'ChapterApiController@create');
+Route::get('chapters/{id}', 'ChapterApiController@read');
+Route::put('chapters/{id}', 'ChapterApiController@update');
+Route::delete('chapters/{id}', 'ChapterApiController@delete');
+
+Route::get('chapters/{id}/export/html', 'ChapterExportApiController@exportHtml');
+Route::get('chapters/{id}/export/pdf', 'ChapterExportApiController@exportPdf');
+Route::get('chapters/{id}/export/plaintext', 'ChapterExportApiController@exportPlainText');
+
+Route::get('shelves', 'BookshelfApiController@list');
+Route::post('shelves', 'BookshelfApiController@create');
+Route::get('shelves/{id}', 'BookshelfApiController@read');
+Route::put('shelves/{id}', 'BookshelfApiController@update');
+Route::delete('shelves/{id}', 'BookshelfApiController@delete');
Route::get('/user/{userId}', 'UserController@showProfilePage');
// Image routes
- Route::group(['prefix' => 'images'], function () {
-
- // Gallery
- Route::get('/gallery', 'Images\GalleryImageController@list');
- Route::post('/gallery', 'Images\GalleryImageController@create');
-
- // Drawio
- Route::get('/drawio', 'Images\DrawioImageController@list');
- Route::get('/drawio/base64/{id}', 'Images\DrawioImageController@getAsBase64');
- Route::post('/drawio', 'Images\DrawioImageController@create');
-
- // Shared gallery & draw.io endpoint
- Route::get('/usage/{id}', 'Images\ImageController@usage');
- Route::put('/{id}', 'Images\ImageController@update');
- Route::delete('/{id}', 'Images\ImageController@destroy');
- });
+ Route::get('/images/gallery', 'Images\GalleryImageController@list');
+ Route::post('/images/gallery', 'Images\GalleryImageController@create');
+ Route::get('/images/drawio', 'Images\DrawioImageController@list');
+ Route::get('/images/drawio/base64/{id}', 'Images\DrawioImageController@getAsBase64');
+ Route::post('/images/drawio', 'Images\DrawioImageController@create');
+ Route::get('/images/edit/{id}', 'Images\ImageController@edit');
+ Route::put('/images/{id}', 'Images\ImageController@update');
+ Route::delete('/images/{id}', 'Images\ImageController@destroy');
// Attachments routes
Route::get('/attachments/{id}', 'AttachmentController@get');
Route::post('/attachments/upload/{id}', 'AttachmentController@uploadUpdate');
Route::post('/attachments/link', 'AttachmentController@attachLink');
Route::put('/attachments/{id}', 'AttachmentController@update');
+ Route::get('/attachments/edit/{id}', 'AttachmentController@getUpdateForm');
Route::get('/attachments/get/page/{pageId}', 'AttachmentController@listForPage');
Route::put('/attachments/sort/page/{pageId}', 'AttachmentController@sortForPage');
Route::delete('/attachments/{id}', 'AttachmentController@delete');
Route::delete('/ajax/page/{id}', 'PageController@ajaxDestroy');
// Tag routes (AJAX)
- Route::group(['prefix' => 'ajax/tags'], function() {
- Route::get('/get/{entityType}/{entityId}', 'TagController@getForEntity');
+ Route::group(['prefix' => 'ajax/tags'], function () {
Route::get('/suggest/names', 'TagController@getNameSuggestions');
Route::get('/suggest/values', 'TagController@getValueSuggestions');
});
Route::get('/users', 'UserController@index');
Route::get('/users/create', 'UserController@create');
Route::get('/users/{id}/delete', 'UserController@delete');
- Route::patch('/users/{id}/switch-book-view', 'UserController@switchBookView');
+ Route::patch('/users/{id}/switch-books-view', 'UserController@switchBooksView');
+ Route::patch('/users/{id}/switch-shelves-view', 'UserController@switchShelvesView');
Route::patch('/users/{id}/switch-shelf-view', 'UserController@switchShelfView');
Route::patch('/users/{id}/change-sort/{type}', 'UserController@changeSort');
Route::patch('/users/{id}/update-expansion-preference/{key}', 'UserController@updateExpansionPreference');
+ Route::patch('/users/toggle-dark-mode', 'UserController@toggleDarkMode');
Route::post('/users/create', 'UserController@store');
Route::get('/users/{id}', 'UserController@edit');
Route::put('/users/{id}', 'UserController@update');
-<?php
-
-namespace Tests;
+<?php namespace Tests\Api;
use BookStack\Auth\Permissions\RolePermission;
use BookStack\Auth\User;
use Carbon\Carbon;
+use Tests\TestCase;
class ApiAuthTest extends TestCase
{
-<?php
+<?php namespace Tests\Api;
-namespace Tests;
-
-use BookStack\Auth\Permissions\RolePermission;
-use Carbon\Carbon;
+use Tests\TestCase;
class ApiConfigTest extends TestCase
{
-<?php
+<?php namespace Tests\Api;
-namespace Tests;
+use BookStack\Auth\User;
+use Tests\TestCase;
class ApiDocsTest extends TestCase
{
] ]
]);
}
+
+ public function test_docs_page_visible_by_public_user_if_given_permission()
+ {
+ $this->setSettings(['app-public' => true]);
+ $guest = User::getDefault();
+
+ $this->startSession();
+ $resp = $this->get('/api/docs');
+ $resp->assertStatus(403);
+
+ $this->giveUserPermissions($guest, ['access-api']);
+
+ $resp = $this->get('/api/docs');
+ $resp->assertStatus(200);
+ }
}
\ No newline at end of file
-<?php
-
-namespace Tests;
+<?php namespace Tests\Api;
use BookStack\Entities\Book;
+use Tests\TestCase;
class ApiListingTest extends TestCase
{
}
}
+ public function test_total_on_results_shows_correctly()
+ {
+ $this->actingAsApiEditor();
+ $bookCount = Book::query()->count();
+ $resp = $this->get($this->endpoint . '?count=1');
+ $resp->assertJson(['total' => $bookCount ]);
+ }
+
+ public function test_total_on_results_shows_correctly_when_offset_provided()
+ {
+ $this->actingAsApiEditor();
+ $bookCount = Book::query()->count();
+ $resp = $this->get($this->endpoint . '?count=1&offset=1');
+ $resp->assertJson(['total' => $bookCount ]);
+ }
+
}
\ No newline at end of file
-<?php namespace Tests;
+<?php namespace Tests\Api;
use BookStack\Entities\Book;
+use Tests\TestCase;
class BooksApiTest extends TestCase
{
$resp->assertStatus(204);
$this->assertActivityExists('book_delete');
}
+
+ public function test_export_html_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $book = Book::visible()->first();
+
+ $resp = $this->get($this->baseEndpoint . "/{$book->id}/export/html");
+ $resp->assertStatus(200);
+ $resp->assertSee($book->name);
+ $resp->assertHeader('Content-Disposition', 'attachment; filename="' . $book->slug . '.html"');
+ }
+
+ public function test_export_plain_text_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $book = Book::visible()->first();
+
+ $resp = $this->get($this->baseEndpoint . "/{$book->id}/export/plaintext");
+ $resp->assertStatus(200);
+ $resp->assertSee($book->name);
+ $resp->assertHeader('Content-Disposition', 'attachment; filename="' . $book->slug . '.txt"');
+ }
+
+ public function test_export_pdf_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $book = Book::visible()->first();
+
+ $resp = $this->get($this->baseEndpoint . "/{$book->id}/export/pdf");
+ $resp->assertStatus(200);
+ $resp->assertHeader('Content-Disposition', 'attachment; filename="' . $book->slug . '.pdf"');
+ }
}
\ No newline at end of file
--- /dev/null
+<?php namespace Tests\Api;
+
+use BookStack\Entities\Book;
+use BookStack\Entities\Chapter;
+use Tests\TestCase;
+
+class ChaptersApiTest extends TestCase
+{
+ use TestsApi;
+
+ protected $baseEndpoint = '/api/chapters';
+
+ public function test_index_endpoint_returns_expected_chapter()
+ {
+ $this->actingAsApiEditor();
+ $firstChapter = Chapter::query()->orderBy('id', 'asc')->first();
+
+ $resp = $this->getJson($this->baseEndpoint . '?count=1&sort=+id');
+ $resp->assertJson(['data' => [
+ [
+ 'id' => $firstChapter->id,
+ 'name' => $firstChapter->name,
+ 'slug' => $firstChapter->slug,
+ 'book_id' => $firstChapter->book->id,
+ 'priority' => $firstChapter->priority,
+ ]
+ ]]);
+ }
+
+ public function test_create_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $book = Book::query()->first();
+ $details = [
+ 'name' => 'My API chapter',
+ 'description' => 'A chapter created via the API',
+ 'book_id' => $book->id,
+ 'tags' => [
+ [
+ 'name' => 'tagname',
+ 'value' => 'tagvalue',
+ ]
+ ]
+ ];
+
+ $resp = $this->postJson($this->baseEndpoint, $details);
+ $resp->assertStatus(200);
+ $newItem = Chapter::query()->orderByDesc('id')->where('name', '=', $details['name'])->first();
+ $resp->assertJson(array_merge($details, ['id' => $newItem->id, 'slug' => $newItem->slug]));
+ $this->assertDatabaseHas('tags', [
+ 'entity_id' => $newItem->id,
+ 'entity_type' => $newItem->getMorphClass(),
+ 'name' => 'tagname',
+ 'value' => 'tagvalue',
+ ]);
+ $resp->assertJsonMissing(['pages' => []]);
+ $this->assertActivityExists('chapter_create', $newItem);
+ }
+
+ public function test_chapter_name_needed_to_create()
+ {
+ $this->actingAsApiEditor();
+ $book = Book::query()->first();
+ $details = [
+ 'book_id' => $book->id,
+ 'description' => 'A chapter created via the API',
+ ];
+
+ $resp = $this->postJson($this->baseEndpoint, $details);
+ $resp->assertStatus(422);
+ $resp->assertJson($this->validationResponse([
+ "name" => ["The name field is required."]
+ ]));
+ }
+
+ public function test_chapter_book_id_needed_to_create()
+ {
+ $this->actingAsApiEditor();
+ $details = [
+ 'name' => 'My api chapter',
+ 'description' => 'A chapter created via the API',
+ ];
+
+ $resp = $this->postJson($this->baseEndpoint, $details);
+ $resp->assertStatus(422);
+ $resp->assertJson($this->validationResponse([
+ "book_id" => ["The book id field is required."]
+ ]));
+ }
+
+ public function test_read_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $chapter = Chapter::visible()->first();
+ $page = $chapter->pages()->first();
+
+ $resp = $this->getJson($this->baseEndpoint . "/{$chapter->id}");
+ $resp->assertStatus(200);
+ $resp->assertJson([
+ 'id' => $chapter->id,
+ 'slug' => $chapter->slug,
+ 'created_by' => [
+ 'name' => $chapter->createdBy->name,
+ ],
+ 'book_id' => $chapter->book_id,
+ 'updated_by' => [
+ 'name' => $chapter->createdBy->name,
+ ],
+ 'pages' => [
+ [
+ 'id' => $page->id,
+ 'slug' => $page->slug,
+ 'name' => $page->name,
+ ]
+ ],
+ ]);
+ $resp->assertJsonCount($chapter->pages()->count(), 'pages');
+ }
+
+ public function test_update_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $chapter = Chapter::visible()->first();
+ $details = [
+ 'name' => 'My updated API chapter',
+ 'description' => 'A chapter created via the API',
+ 'tags' => [
+ [
+ 'name' => 'freshtag',
+ 'value' => 'freshtagval',
+ ]
+ ],
+ ];
+
+ $resp = $this->putJson($this->baseEndpoint . "/{$chapter->id}", $details);
+ $chapter->refresh();
+
+ $resp->assertStatus(200);
+ $resp->assertJson(array_merge($details, [
+ 'id' => $chapter->id, 'slug' => $chapter->slug, 'book_id' => $chapter->book_id
+ ]));
+ $this->assertActivityExists('chapter_update', $chapter);
+ }
+
+ public function test_delete_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $chapter = Chapter::visible()->first();
+ $resp = $this->deleteJson($this->baseEndpoint . "/{$chapter->id}");
+
+ $resp->assertStatus(204);
+ $this->assertActivityExists('chapter_delete');
+ }
+
+ public function test_export_html_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $chapter = Chapter::visible()->first();
+
+ $resp = $this->get($this->baseEndpoint . "/{$chapter->id}/export/html");
+ $resp->assertStatus(200);
+ $resp->assertSee($chapter->name);
+ $resp->assertHeader('Content-Disposition', 'attachment; filename="' . $chapter->slug . '.html"');
+ }
+
+ public function test_export_plain_text_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $chapter = Chapter::visible()->first();
+
+ $resp = $this->get($this->baseEndpoint . "/{$chapter->id}/export/plaintext");
+ $resp->assertStatus(200);
+ $resp->assertSee($chapter->name);
+ $resp->assertHeader('Content-Disposition', 'attachment; filename="' . $chapter->slug . '.txt"');
+ }
+
+ public function test_export_pdf_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $chapter = Chapter::visible()->first();
+
+ $resp = $this->get($this->baseEndpoint . "/{$chapter->id}/export/pdf");
+ $resp->assertStatus(200);
+ $resp->assertHeader('Content-Disposition', 'attachment; filename="' . $chapter->slug . '.pdf"');
+ }
+}
\ No newline at end of file
--- /dev/null
+<?php namespace Tests\Api;
+
+use BookStack\Entities\Book;
+use BookStack\Entities\Bookshelf;
+use Tests\TestCase;
+
+class ShelvesApiTest extends TestCase
+{
+ use TestsApi;
+
+ protected $baseEndpoint = '/api/shelves';
+
+ public function test_index_endpoint_returns_expected_shelf()
+ {
+ $this->actingAsApiEditor();
+ $firstBookshelf = Bookshelf::query()->orderBy('id', 'asc')->first();
+
+ $resp = $this->getJson($this->baseEndpoint . '?count=1&sort=+id');
+ $resp->assertJson(['data' => [
+ [
+ 'id' => $firstBookshelf->id,
+ 'name' => $firstBookshelf->name,
+ 'slug' => $firstBookshelf->slug,
+ ]
+ ]]);
+ }
+
+ public function test_create_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $books = Book::query()->take(2)->get();
+
+ $details = [
+ 'name' => 'My API shelf',
+ 'description' => 'A shelf created via the API',
+ ];
+
+ $resp = $this->postJson($this->baseEndpoint, array_merge($details, ['books' => [$books[0]->id, $books[1]->id]]));
+ $resp->assertStatus(200);
+ $newItem = Bookshelf::query()->orderByDesc('id')->where('name', '=', $details['name'])->first();
+ $resp->assertJson(array_merge($details, ['id' => $newItem->id, 'slug' => $newItem->slug]));
+ $this->assertActivityExists('bookshelf_create', $newItem);
+ foreach ($books as $index => $book) {
+ $this->assertDatabaseHas('bookshelves_books', [
+ 'bookshelf_id' => $newItem->id,
+ 'book_id' => $book->id,
+ 'order' => $index,
+ ]);
+ }
+ }
+
+ public function test_shelf_name_needed_to_create()
+ {
+ $this->actingAsApiEditor();
+ $details = [
+ 'description' => 'A shelf created via the API',
+ ];
+
+ $resp = $this->postJson($this->baseEndpoint, $details);
+ $resp->assertStatus(422);
+ $resp->assertJson([
+ "error" => [
+ "message" => "The given data was invalid.",
+ "validation" => [
+ "name" => ["The name field is required."]
+ ],
+ "code" => 422,
+ ],
+ ]);
+ }
+
+ public function test_read_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $shelf = Bookshelf::visible()->first();
+
+ $resp = $this->getJson($this->baseEndpoint . "/{$shelf->id}");
+
+ $resp->assertStatus(200);
+ $resp->assertJson([
+ 'id' => $shelf->id,
+ 'slug' => $shelf->slug,
+ 'created_by' => [
+ 'name' => $shelf->createdBy->name,
+ ],
+ 'updated_by' => [
+ 'name' => $shelf->createdBy->name,
+ ]
+ ]);
+ }
+
+ public function test_update_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $shelf = Bookshelf::visible()->first();
+ $details = [
+ 'name' => 'My updated API shelf',
+ 'description' => 'A shelf created via the API',
+ ];
+
+ $resp = $this->putJson($this->baseEndpoint . "/{$shelf->id}", $details);
+ $shelf->refresh();
+
+ $resp->assertStatus(200);
+ $resp->assertJson(array_merge($details, ['id' => $shelf->id, 'slug' => $shelf->slug]));
+ $this->assertActivityExists('bookshelf_update', $shelf);
+ }
+
+ public function test_update_only_assigns_books_if_param_provided()
+ {
+ $this->actingAsApiEditor();
+ $shelf = Bookshelf::visible()->first();
+ $this->assertTrue($shelf->books()->count() > 0);
+ $details = [
+ 'name' => 'My updated API shelf',
+ ];
+
+ $resp = $this->putJson($this->baseEndpoint . "/{$shelf->id}", $details);
+ $resp->assertStatus(200);
+ $this->assertTrue($shelf->books()->count() > 0);
+
+ $resp = $this->putJson($this->baseEndpoint . "/{$shelf->id}", ['books' => []]);
+ $resp->assertStatus(200);
+ $this->assertTrue($shelf->books()->count() === 0);
+ }
+
+ public function test_delete_endpoint()
+ {
+ $this->actingAsApiEditor();
+ $shelf = Bookshelf::visible()->first();
+ $resp = $this->deleteJson($this->baseEndpoint . "/{$shelf->id}");
+
+ $resp->assertStatus(204);
+ $this->assertActivityExists('bookshelf_delete');
+ }
+}
\ No newline at end of file
-<?php
-
-namespace Tests;
+<?php namespace Tests\Api;
trait TestsApi
{
return ["error" => ["code" => $code, "message" => $message]];
}
+ /**
+ * Format the given (field_name => ["messages"]) array
+ * into a standard validation response format.
+ */
+ protected function validationResponse(array $messages): array
+ {
+ $err = $this->errorResponse("The given data was invalid.", 422);
+ $err['error']['validation'] = $messages;
+ return $err;
+ }
/**
* Get an approved API auth header.
*/
-<?php namespace Tests;
+<?php namespace Tests\Auth;
+use BookStack\Auth\Role;
use BookStack\Auth\User;
use BookStack\Entities\Page;
use BookStack\Notifications\ConfirmEmail;
+use BookStack\Notifications\ResetPassword;
use BookStack\Settings\SettingService;
+use DB;
+use Hash;
use Illuminate\Support\Facades\Notification;
+use Tests\BrowserKitTest;
class AuthTest extends BrowserKitTest
{
->press('Resend Confirmation Email');
// Get confirmation and confirm notification matches
- $emailConfirmation = \DB::table('email_confirmations')->where('user_id', '=', $dbUser->id)->first();
+ $emailConfirmation = DB::table('email_confirmations')->where('user_id', '=', $dbUser->id)->first();
Notification::assertSentTo($dbUser, ConfirmEmail::class, function($notification, $channels) use ($emailConfirmation) {
return $notification->token === $emailConfirmation->token;
});
->seePageIs('/settings/users');
$userPassword = User::find($user->id)->password;
- $this->assertTrue(\Hash::check('newpassword', $userPassword));
+ $this->assertTrue(Hash::check('newpassword', $userPassword));
}
public function test_user_deletion()
public function test_user_cannot_be_deleted_if_last_admin()
{
- $adminRole = \BookStack\Auth\Role::getRole('admin');
+ $adminRole = Role::getRole('admin');
// Delete all but one admin user if there are more than one
$adminUsers = $adminRole->users;
public function test_reset_password_flow()
{
-
Notification::fake();
$this->visit('/login')->click('Forgot Password?')
->seePageIs('/password/email')
->press('Send Reset Link')
+ ->see('A password reset link
will be sent to [email protected] if that email address is found in the system.');
$this->seeInDatabase('password_resets', [
- Notification::assertSentTo($user, \BookStack\Notifications\ResetPassword::class);
- $n = Notification::sent($user, \BookStack\Notifications\ResetPassword::class);
+ Notification::assertSentTo($user, ResetPassword::class);
+ $n = Notification::sent($user, ResetPassword::class);
$this->visit('/password/reset/' . $n->first()->token)
->see('Reset Password')
->see('Your password has been successfully reset');
}
+ public function test_reset_password_flow_shows_success_message_even_if_wrong_password_to_prevent_user_discovery()
+ {
+ $this->visit('/login')->click('Forgot Password?')
+ ->seePageIs('/password/email')
+ ->press('Send Reset Link')
+ ->see('A password reset link will be sent to
[email protected] if that email address is found in the system.')
+ ->dontSee('We can\'t find a user');
+
+
+ $this->visit('/password/reset/arandometokenvalue')
+ ->see('Reset Password')
+ ->submitForm('Reset Password', [
+ 'password' => 'randompass',
+ 'password_confirmation' => 'randompass'
+ ])->followRedirects()
+ ->seePageIs('/password/reset/arandometokenvalue')
+ ->dontSee('We can\'t find a user')
+ ->see('The password reset token is invalid for this email address.');
+ }
+
public function test_reset_password_page_shows_sign_links()
{
$this->setSettings(['registration-enabled' => 'true']);
->seePageUrlIs($page->getUrl());
}
+ public function test_login_authenticates_admins_on_all_guards()
+ {
+ $this->assertTrue(auth()->check());
+ $this->assertTrue(auth('ldap')->check());
+ $this->assertTrue(auth('saml2')->check());
+ }
+
+ public function test_login_authenticates_nonadmins_on_default_guard_only()
+ {
+ $editor = $this->getEditor();
+ $editor->password = bcrypt('password');
+ $editor->save();
+
+ $this->post('/login', ['email' => $editor->email, 'password' => 'password']);
+ $this->assertTrue(auth()->check());
+ $this->assertFalse(auth('ldap')->check());
+ $this->assertFalse(auth('saml2')->check());
+ }
+
/**
* Perform a login
- * @param string $email
- * @param string $password
- * @return $this
*/
- protected function login($email, $password)
+ protected function login(string $email, string $password): AuthTest
{
return $this->visit('/login')
->type($email, '#email')
-<?php namespace Tests;
+<?php namespace Tests\Auth;
+use BookStack\Auth\Access\LdapService;
use BookStack\Auth\Role;
use BookStack\Auth\Access\Ldap;
use BookStack\Auth\User;
use Mockery\MockInterface;
+use Tests\BrowserKitTest;
class LdapTest extends BrowserKitTest
{
{
parent::setUp();
if (!defined('LDAP_OPT_REFERRALS')) define('LDAP_OPT_REFERRALS', 1);
- app('config')->set([
+ config()->set([
'auth.method' => 'ldap',
'auth.defaults.guard' => 'ldap',
'services.ldap.base_dn' => 'dc=ldap,dc=local',
->press('Log In');
}
+ /**
+ * Set LDAP method mocks for things we commonly call without altering.
+ */
+ protected function commonLdapMocks(int $connects = 1, int $versions = 1, int $options = 2, int $binds = 4, int $escapes = 2, int $explodes = 0)
+ {
+ $this->mockLdap->shouldReceive('connect')->times($connects)->andReturn($this->resourceId);
+ $this->mockLdap->shouldReceive('setVersion')->times($versions);
+ $this->mockLdap->shouldReceive('setOption')->times($options);
+ $this->mockLdap->shouldReceive('bind')->times($binds)->andReturn(true);
+ $this->mockEscapes($escapes);
+ $this->mockExplodes($explodes);
+ }
+
public function test_login()
{
- $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->once();
- $this->mockLdap->shouldReceive('setOption')->times(2);
+ $this->commonLdapMocks(1, 1, 2, 4, 2);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(2)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
'cn' => [$this->mockUser->name],
'dn' => ['dc=test' . config('services.ldap.base_dn')]
]]);
- $this->mockLdap->shouldReceive('bind')->times(4)->andReturn(true);
- $this->mockEscapes(2);
$this->mockUserLogin()
->seePageIs('/login')->see('Please enter an email to use for this account.');
'registration-restrict' => 'testing.com'
]);
- $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->once();
- $this->mockLdap->shouldReceive('setOption')->times(2);
+ $this->commonLdapMocks(1, 1, 2, 4, 2);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(2)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
'cn' => [$this->mockUser->name],
'dn' => ['dc=test' . config('services.ldap.base_dn')]
]]);
- $this->mockLdap->shouldReceive('bind')->times(4)->andReturn(true);
- $this->mockEscapes(2);
$this->mockUserLogin()
->seePageIs('/login')
public function test_login_works_when_no_uid_provided_by_ldap_server()
{
- $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->once();
$ldapDn = 'cn=test-user,dc=test' . config('services.ldap.base_dn');
- $this->mockLdap->shouldReceive('setOption')->times(1);
+
+ $this->commonLdapMocks(1, 1, 1, 2, 1);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(1)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
'dn' => $ldapDn,
'mail' => [$this->mockUser->email]
]]);
- $this->mockLdap->shouldReceive('bind')->times(2)->andReturn(true);
- $this->mockEscapes(1);
$this->mockUserLogin()
->seePageIs('/')
public function test_a_custom_uid_attribute_can_be_specified_and_is_used_properly()
{
config()->set(['services.ldap.id_attribute' => 'my_custom_id']);
- $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->once();
+
+ $this->commonLdapMocks(1, 1, 1, 2, 1);
$ldapDn = 'cn=test-user,dc=test' . config('services.ldap.base_dn');
- $this->mockLdap->shouldReceive('setOption')->times(1);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(1)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
]]);
- $this->mockLdap->shouldReceive('bind')->times(2)->andReturn(true);
- $this->mockEscapes(1);
-
$this->mockUserLogin()
->seePageIs('/')
->see($this->mockUser->name)
->seeInDatabase('users', ['email' => $this->mockUser->email, 'email_confirmed' => false, 'external_auth_id' => 'cooluser456']);
}
- public function test_initial_incorrect_details()
+ public function test_initial_incorrect_credentials()
{
- $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->once();
- $this->mockLdap->shouldReceive('setOption')->times(1);
+ $this->commonLdapMocks(1, 1, 1, 0, 1);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(1)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
'dn' => ['dc=test' . config('services.ldap.base_dn')]
]]);
$this->mockLdap->shouldReceive('bind')->times(2)->andReturn(true, false);
- $this->mockEscapes(1);
$this->mockUserLogin()
->seePageIs('/login')->see('These credentials do not match our records.')
->dontSeeInDatabase('users', ['external_auth_id' => $this->mockUser->name]);
}
+ public function test_login_not_found_username()
+ {
+ $this->commonLdapMocks(1, 1, 1, 1, 1);
+ $this->mockLdap->shouldReceive('searchAndGetEntries')->times(1)
+ ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
+ ->andReturn(['count' => 0]);
+
+ $this->mockUserLogin()
+ ->seePageIs('/login')->see('These credentials do not match our records.')
+ ->dontSeeInDatabase('users', ['external_auth_id' => $this->mockUser->name]);
+ }
+
+
public function test_create_user_form()
{
$this->asAdmin()->visit('/settings/users/create')
'services.ldap.group_attribute' => 'memberOf',
'services.ldap.remove_from_groups' => false,
]);
- $this->mockLdap->shouldReceive('connect')->times(1)->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->times(1);
- $this->mockLdap->shouldReceive('setOption')->times(4);
+
+ $this->commonLdapMocks(1, 1, 4, 5, 4, 6);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(4)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
1 => "cn=ldaptester-second,ou=groups,dc=example,dc=com",
]
]]);
- $this->mockLdap->shouldReceive('bind')->times(5)->andReturn(true);
- $this->mockEscapes(4);
- $this->mockExplodes(6);
$this->mockUserLogin()->seePageIs('/');
'services.ldap.group_attribute' => 'memberOf',
'services.ldap.remove_from_groups' => true,
]);
- $this->mockLdap->shouldReceive('connect')->times(1)->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->times(1);
- $this->mockLdap->shouldReceive('setOption')->times(3);
+
+ $this->commonLdapMocks(1, 1, 3, 4, 3, 2);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(3)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
0 => "cn=ldaptester,ou=groups,dc=example,dc=com",
]
]]);
- $this->mockLdap->shouldReceive('bind')->times(4)->andReturn(true);
- $this->mockEscapes(3);
- $this->mockExplodes(2);
$this->mockUserLogin()->seePageIs('/');
'services.ldap.group_attribute' => 'memberOf',
'services.ldap.remove_from_groups' => true,
]);
- $this->mockLdap->shouldReceive('connect')->times(1)->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->times(1);
- $this->mockLdap->shouldReceive('setOption')->times(3);
+
+ $this->commonLdapMocks(1, 1, 3, 4, 3, 2);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(3)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
0 => "cn=ex-auth-a,ou=groups,dc=example,dc=com",
]
]]);
- $this->mockLdap->shouldReceive('bind')->times(4)->andReturn(true);
- $this->mockEscapes(3);
- $this->mockExplodes(2);
$this->mockUserLogin()->seePageIs('/');
'services.ldap.group_attribute' => 'memberOf',
'services.ldap.remove_from_groups' => true,
]);
- $this->mockLdap->shouldReceive('connect')->times(1)->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->times(1);
- $this->mockLdap->shouldReceive('setOption')->times(4);
+
+ $this->commonLdapMocks(1, 1, 4, 5, 4, 6);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(4)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
1 => "cn=ldaptester-second,ou=groups,dc=example,dc=com",
]
]]);
- $this->mockLdap->shouldReceive('bind')->times(5)->andReturn(true);
- $this->mockEscapes(4);
- $this->mockExplodes(6);
$this->mockUserLogin()->seePageIs('/');
'services.ldap.display_name_attribute' => 'displayName'
]);
- $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->once();
- $this->mockLdap->shouldReceive('setOption')->times(2);
+ $this->commonLdapMocks(1, 1, 2, 4, 2);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(2)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
'dn' => ['dc=test' . config('services.ldap.base_dn')],
'displayname' => 'displayNameAttribute'
]]);
- $this->mockLdap->shouldReceive('bind')->times(4)->andReturn(true);
- $this->mockEscapes(2);
$this->mockUserLogin()
->seePageIs('/login')->see('Please enter an email to use for this account.');
'services.ldap.display_name_attribute' => 'displayName'
]);
- $this->mockLdap->shouldReceive('connect')->once()->andReturn($this->resourceId);
- $this->mockLdap->shouldReceive('setVersion')->once();
- $this->mockLdap->shouldReceive('setOption')->times(2);
+ $this->commonLdapMocks(1, 1, 2, 4, 2);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(2)
->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
->andReturn(['count' => 1, 0 => [
'cn' => [$this->mockUser->name],
'dn' => ['dc=test' . config('services.ldap.base_dn')]
]]);
- $this->mockLdap->shouldReceive('bind')->times(4)->andReturn(true);
- $this->mockEscapes(2);
$this->mockUserLogin()
->seePageIs('/login')->see('Please enter an email to use for this account.');
]);
// Standard mocks
- $this->mockLdap->shouldReceive('setVersion')->once();
- $this->mockLdap->shouldReceive('setOption')->times(1);
+ $this->commonLdapMocks(0, 1, 1, 2, 1);
$this->mockLdap->shouldReceive('searchAndGetEntries')->times(1)->andReturn(['count' => 1, 0 => [
'uid' => [$this->mockUser->name],
'cn' => [$this->mockUser->name],
'dn' => ['dc=test' . config('services.ldap.base_dn')]
]]);
- $this->mockLdap->shouldReceive('bind')->times(2)->andReturn(true);
- $this->mockEscapes(1);
$this->mockLdap->shouldReceive('connect')->once()
->with($expectedHost, $expectedPort)->andReturn($this->resourceId);
$resp = $this->post('/register');
$this->assertPermissionError($resp);
}
+
+ public function test_dump_user_details_option_works()
+ {
+ config()->set(['services.ldap.dump_user_details' => true]);
+
+ $this->commonLdapMocks(1, 1, 1, 1, 1);
+ $this->mockLdap->shouldReceive('searchAndGetEntries')->times(1)
+ ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
+ ->andReturn(['count' => 1, 0 => [
+ 'uid' => [$this->mockUser->name],
+ 'cn' => [$this->mockUser->name],
+ 'dn' => ['dc=test' . config('services.ldap.base_dn')]
+ ]]);
+
+ $this->post('/login', [
+ 'username' => $this->mockUser->name,
+ 'password' => $this->mockUser->password,
+ ]);
+ $this->seeJsonStructure([
+ 'details_from_ldap' => [],
+ 'details_bookstack_parsed' => [],
+ ]);
+ }
+
+ public function test_ldap_attributes_can_be_binary_decoded_if_marked()
+ {
+ config()->set(['services.ldap.id_attribute' => 'BIN;uid']);
+ $ldapService = app()->make(LdapService::class);
+ $this->commonLdapMocks(1, 1, 1, 1, 1);
+ $this->mockLdap->shouldReceive('searchAndGetEntries')->times(1)
+ ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), ['cn', 'dn', 'uid', 'mail', 'cn'])
+ ->andReturn(['count' => 1, 0 => [
+ 'uid' => [hex2bin('FFF8F7')],
+ 'cn' => [$this->mockUser->name],
+ 'dn' => ['dc=test' . config('services.ldap.base_dn')]
+ ]]);
+
+ $details = $ldapService->getUserDetails('test');
+ $this->assertEquals('fff8f7', $details['uid']);
+ }
+
+ public function test_new_ldap_user_login_with_already_used_email_address_shows_error_message_to_user()
+ {
+ $this->commonLdapMocks(1, 1, 2, 4, 2);
+ $this->mockLdap->shouldReceive('searchAndGetEntries')->times(2)
+ ->with($this->resourceId, config('services.ldap.base_dn'), \Mockery::type('string'), \Mockery::type('array'))
+ ->andReturn(['count' => 1, 0 => [
+ 'uid' => [$this->mockUser->name],
+ 'cn' => [$this->mockUser->name],
+ 'dn' => ['dc=test' . config('services.ldap.base_dn')],
+ ]], ['count' => 1, 0 => [
+ 'uid' => ['Barry'],
+ 'cn' => ['Scott'],
+ 'dn' => ['dc=bscott' . config('services.ldap.base_dn')],
+ ]]);
+
+ // First user login
+ $this->mockUserLogin()->seePageIs('/');
+
+ // Second user login
+ auth()->logout();
+ $this->post('/login', ['username' => 'bscott', 'password' => 'pass'])->followRedirects();
+
+ $this->see('A user with the email
[email protected] already exists but with different credentials');
+ }
}
-<?php namespace Tests;
+<?php namespace Tests\Auth;
use BookStack\Auth\Role;
use BookStack\Auth\User;
+use Tests\TestCase;
class Saml2Test extends TestCase
{
-<?php namespace Tests;
+<?php namespace Tests\Auth;
+
+use BookStack\Auth\User;
+use DB;
+use Laravel\Socialite\Contracts\Factory;
+use Laravel\Socialite\Contracts\Provider;
+use Mockery;
+use Tests\TestCase;
class SocialAuthTest extends TestCase
{
public function test_social_registration()
{
- // http://docs.mockery.io/en/latest/reference/startup_methods.html
- $user = factory(\BookStack\Auth\User::class)->make();
+ $user = factory(User::class)->make();
$this->setSettings(['registration-enabled' => 'true']);
config(['GOOGLE_APP_ID' => 'abc123', 'GOOGLE_APP_SECRET' => '123abc', 'APP_URL' => 'http://localhost']);
- $mockSocialite = \Mockery::mock('Laravel\Socialite\Contracts\Factory');
- $this->app['Laravel\Socialite\Contracts\Factory'] = $mockSocialite;
- $mockSocialDriver = \Mockery::mock('Laravel\Socialite\Contracts\Provider');
- $mockSocialUser = \Mockery::mock('\Laravel\Socialite\Contracts\User');
+ $mockSocialite = Mockery::mock(Factory::class);
+ $this->app[Factory::class] = $mockSocialite;
+ $mockSocialDriver = Mockery::mock(Provider::class);
+ $mockSocialUser = Mockery::mock(\Laravel\Socialite\Contracts\User::class);
$mockSocialite->shouldReceive('driver')->twice()->with('google')->andReturn($mockSocialDriver);
$mockSocialDriver->shouldReceive('redirect')->once()->andReturn(redirect('/'));
'APP_URL' => 'http://localhost'
]);
- $mockSocialite = \Mockery::mock('Laravel\Socialite\Contracts\Factory');
- $this->app['Laravel\Socialite\Contracts\Factory'] = $mockSocialite;
- $mockSocialDriver = \Mockery::mock('Laravel\Socialite\Contracts\Provider');
- $mockSocialUser = \Mockery::mock('\Laravel\Socialite\Contracts\User');
+ $mockSocialite = Mockery::mock(Factory::class);
+ $this->app[Factory::class] = $mockSocialite;
+ $mockSocialDriver = Mockery::mock(Provider::class);
+ $mockSocialUser = Mockery::mock(\Laravel\Socialite\Contracts\User::class);
$mockSocialUser->shouldReceive('getId')->twice()->andReturn('logintest123');
// Test social callback with matching social account
- \DB::table('social_accounts')->insert([
+ DB::table('social_accounts')->insert([
'user_id' => $this->getAdmin()->id,
'driver' => 'github',
'driver_id' => 'logintest123'
'APP_URL' => 'http://localhost'
]);
- $user = factory(\BookStack\Auth\User::class)->make();
- $mockSocialite = \Mockery::mock('Laravel\Socialite\Contracts\Factory');
- $this->app['Laravel\Socialite\Contracts\Factory'] = $mockSocialite;
- $mockSocialDriver = \Mockery::mock('Laravel\Socialite\Contracts\Provider');
- $mockSocialUser = \Mockery::mock('\Laravel\Socialite\Contracts\User');
+ $user = factory(User::class)->make();
+ $mockSocialite = Mockery::mock(Factory::class);
+ $this->app[Factory::class] = $mockSocialite;
+ $mockSocialDriver = Mockery::mock(Provider::class);
+ $mockSocialUser = Mockery::mock(\Laravel\Socialite\Contracts\User::class);
$mockSocialUser->shouldReceive('getId')->times(4)->andReturn(1);
$mockSocialUser->shouldReceive('getEmail')->times(2)->andReturn($user->email);
'APP_URL' => 'http://localhost', 'services.google.auto_register' => true, 'services.google.auto_confirm' => true
]);
- $user = factory(\BookStack\Auth\User::class)->make();
- $mockSocialite = \Mockery::mock('Laravel\Socialite\Contracts\Factory');
- $this->app['Laravel\Socialite\Contracts\Factory'] = $mockSocialite;
- $mockSocialDriver = \Mockery::mock('Laravel\Socialite\Contracts\Provider');
- $mockSocialUser = \Mockery::mock('\Laravel\Socialite\Contracts\User');
+ $user = factory(User::class)->make();
+ $mockSocialite = Mockery::mock(Factory::class);
+ $this->app[Factory::class] = $mockSocialite;
+ $mockSocialDriver = Mockery::mock(Provider::class);
+ $mockSocialUser = Mockery::mock(\Laravel\Socialite\Contracts\User::class);
$mockSocialUser->shouldReceive('getId')->times(3)->andReturn(1);
$mockSocialUser->shouldReceive('getEmail')->times(2)->andReturn($user->email);
$this->assertStringContainsString('prompt=select_account', $resp->headers->get('Location'));
}
+ public function test_social_registration_with_no_name_uses_email_as_name()
+ {
+
+ $this->setSettings(['registration-enabled' => 'true']);
+ config(['GITHUB_APP_ID' => 'abc123', 'GITHUB_APP_SECRET' => '123abc', 'APP_URL' => 'http://localhost']);
+
+ $mockSocialite = Mockery::mock(Factory::class);
+ $this->app[Factory::class] = $mockSocialite;
+ $mockSocialDriver = Mockery::mock(Provider::class);
+ $mockSocialUser = Mockery::mock(\Laravel\Socialite\Contracts\User::class);
+
+ $mockSocialite->shouldReceive('driver')->twice()->with('github')->andReturn($mockSocialDriver);
+ $mockSocialDriver->shouldReceive('redirect')->once()->andReturn(redirect('/'));
+ $mockSocialDriver->shouldReceive('user')->once()->andReturn($mockSocialUser);
+
+ $mockSocialUser->shouldReceive('getId')->twice()->andReturn(1);
+ $mockSocialUser->shouldReceive('getEmail')->twice()->andReturn($user->email);
+ $mockSocialUser->shouldReceive('getName')->once()->andReturn('');
+ $mockSocialUser->shouldReceive('getAvatar')->once()->andReturn('avatar_placeholder');
+
+ $this->get('/register/service/github');
+ $this->get('/login/service/github/callback');
+ $this->assertDatabaseHas('users', ['name' => 'nonameuser', 'email' => $user->email]);
+ $user = $user->whereEmail($user->email)->first();
+ $this->assertDatabaseHas('social_accounts', ['user_id' => $user->id]);
+ }
+
}
-<?php namespace Tests;
+<?php namespace Tests\Auth;
use BookStack\Auth\Access\UserInviteService;
use DB;
use Illuminate\Support\Str;
use Notification;
+use Tests\TestCase;
class UserInviteTest extends TestCase
{
<?php namespace Tests;
+use BookStack\Actions\Comment;
+use BookStack\Actions\CommentRepo;
use BookStack\Auth\Permissions\JointPermission;
use BookStack\Entities\Bookshelf;
use BookStack\Entities\Page;
use BookStack\Auth\User;
use BookStack\Entities\Repos\PageRepo;
+use Symfony\Component\Console\Exception\RuntimeException;
class CommandsTest extends TestCase
{
$this->assertDatabaseHas('entity_permissions', ['restrictable_id' => $child->id, 'action' => 'view', 'role_id' => $editorRole->id]);
$this->assertDatabaseHas('entity_permissions', ['restrictable_id' => $child->id, 'action' => 'update', 'role_id' => $editorRole->id]);
}
+
+ public function test_update_url_command_updates_page_content()
+ {
+ $page = Page::query()->first();
+ $page->html = '<a href="https://example.com/donkeys"></a>';
+ $page->save();
+
+ $this->artisan('bookstack:update-url https://example.com https://cats.example.com')
+ ->expectsQuestion("This will search for \"https://example.com\" in your database and replace it with \"https://cats.example.com\".\nAre you sure you want to proceed?", 'y')
+ ->expectsQuestion("This operation could cause issues if used incorrectly. Have you made a backup of your existing database?", 'y');
+
+ $this->assertDatabaseHas('pages', [
+ 'id' => $page->id,
+ 'html' => '<a href="https://cats.example.com/donkeys"></a>'
+ ]);
+ }
+
+ public function test_update_url_command_requires_valid_url()
+ {
+ $badUrlMessage = "The given urls are expected to be full urls starting with http:// or https://";
+ $this->artisan('bookstack:update-url //example.com https://cats.example.com')->expectsOutput($badUrlMessage);
+ $this->artisan('bookstack:update-url https://example.com htts://cats.example.com')->expectsOutput($badUrlMessage);
+ $this->artisan('bookstack:update-url example.com https://cats.example.com')->expectsOutput($badUrlMessage);
+
+ $this->expectException(RuntimeException::class);
+ $this->artisan('bookstack:update-url https://cats.example.com');
+ }
+
+ public function test_regenerate_comment_content_command()
+ {
+ Comment::query()->forceCreate([
+ 'html' => 'some_old_content',
+ 'text' => 'some_fresh_content',
+ ]);
+
+ $this->assertDatabaseHas('comments', [
+ 'html' => 'some_old_content',
+ ]);
+
+ $exitCode = \Artisan::call('bookstack:regenerate-comment-content');
+ $this->assertTrue($exitCode === 0, 'Command executed successfully');
+
+ $this->assertDatabaseMissing('comments', [
+ 'html' => 'some_old_content',
+ ]);
+ $this->assertDatabaseHas('comments', [
+ 'html' => "<p>some_fresh_content</p>\n",
+ ]);
+ }
}
-<?php namespace Tests;
+<?php namespace Tests\Entity;
-use BookStack\Auth\Role;
use BookStack\Auth\User;
use BookStack\Entities\Book;
use BookStack\Entities\Bookshelf;
+use BookStack\Uploads\Image;
use Illuminate\Support\Str;
+use Tests\TestCase;
+use Tests\Uploads\UsesImages;
class BookShelfTest extends TestCase
{
+ use UsesImages;
+
public function test_shelves_shows_in_header_if_have_view_permissions()
{
$viewer = $this->getViewer();
$resp->assertElementContains('a', 'New Shelf');
}
+ public function test_book_not_visible_in_shelf_list_view_if_user_cant_view_shelf()
+ {
+ config()->set([
+ 'app.views.bookshelves' => 'list',
+ ]);
+ $shelf = Bookshelf::query()->first();
+ $book = $shelf->books()->first();
+
+ $resp = $this->asEditor()->get('/shelves');
+ $resp->assertSee($book->name);
+ $resp->assertSee($book->getUrl());
+
+ $this->setEntityRestrictions($book, []);
+
+ $resp = $this->asEditor()->get('/shelves');
+ $resp->assertDontSee($book->name);
+ $resp->assertDontSee($book->getUrl());
+ }
+
public function test_shelves_create()
{
$booksToInclude = Book::take(2)->get();
$this->assertDatabaseHas('bookshelves_books', ['bookshelf_id' => $shelf->id, 'book_id' => $booksToInclude[1]->id]);
}
+ public function test_shelves_create_sets_cover_image()
+ {
+ $shelfInfo = [
+ 'name' => 'My test book' . Str::random(4),
+ 'description' => 'Test book description ' . Str::random(10)
+ ];
+
+ $imageFile = $this->getTestImage('shelf-test.png');
+ $resp = $this->asEditor()->call('POST', '/shelves', $shelfInfo, [], ['image' => $imageFile]);
+ $resp->assertRedirect();
+
+ $lastImage = Image::query()->orderByDesc('id')->firstOrFail();
+ $shelf = Bookshelf::query()->where('name', '=', $shelfInfo['name'])->first();
+ $this->assertDatabaseHas('bookshelves', [
+ 'id' => $shelf->id,
+ 'image_id' => $lastImage->id,
+ ]);
+ $this->assertEquals($lastImage->id, $shelf->cover->id);
+ }
+
public function test_shelf_view()
{
$shelf = Bookshelf::first();
$pageVisit->assertElementNotContains('.breadcrumbs', $shelf->getShortName());
}
+ public function test_bookshelves_show_on_book()
+ {
+ // Create shelf
+ $shelfInfo = [
+ 'name' => 'My test shelf' . Str::random(4),
+ 'description' => 'Test shelf description ' . Str::random(10)
+ ];
+
+ $this->asEditor()->post('/shelves', $shelfInfo);
+ $shelf = Bookshelf::where('name', '=', $shelfInfo['name'])->first();
+
+ // Create book and add to shelf
+ $this->asEditor()->post($shelf->getUrl('/create-book'), [
+ 'name' => 'Test book name',
+ 'description' => 'Book in shelf description'
+ ]);
+
+ $newBook = Book::query()->orderBy('id', 'desc')->first();
+
+ $resp = $this->asEditor()->get($newBook->getUrl());
+ $resp->assertElementContains('.tri-layout-left-contents', $shelfInfo['name']);
+
+ // Remove shelf
+ $this->delete($shelf->getUrl());
+
+ $resp = $this->asEditor()->get($newBook->getUrl());
+ $resp->assertDontSee($shelfInfo['name']);
+ }
}
-<?php namespace Tests;
+<?php namespace Tests\Entity;
-class CommentSettingTest extends BrowserKitTest {
- protected $page;
+use BookStack\Entities\Page;
+use Tests\BrowserKitTest;
- public function setUp(): void {
- parent::setUp();
- $this->page = \BookStack\Entities\Page::first();
- }
+class CommentSettingTest extends BrowserKitTest
+{
+ protected $page;
- public function test_comment_disable () {
- $this->asAdmin();
+ public function setUp(): void
+ {
+ parent::setUp();
+ $this->page = Page::first();
+ }
- $this->setSettings(['app-disable-comments' => 'true']);
+ public function test_comment_disable()
+ {
+ $this->asAdmin();
- $this->asAdmin()->visit($this->page->getUrl())
- ->pageNotHasElement('.comments-list');
- }
+ $this->setSettings(['app-disable-comments' => 'true']);
- public function test_comment_enable () {
- $this->asAdmin();
+ $this->asAdmin()->visit($this->page->getUrl())
+ ->pageNotHasElement('.comments-list');
+ }
- $this->setSettings(['app-disable-comments' => 'false']);
+ public function test_comment_enable()
+ {
+ $this->asAdmin();
- $this->asAdmin()->visit($this->page->getUrl())
- ->pageHasElement('.comments-list');
- }
+ $this->setSettings(['app-disable-comments' => 'false']);
+
+ $this->asAdmin()->visit($this->page->getUrl())
+ ->pageHasElement('.comments-list');
+ }
}
\ No newline at end of file
-<?php namespace Tests;
+<?php namespace Tests\Entity;
use BookStack\Entities\Page;
use BookStack\Actions\Comment;
+use Tests\TestCase;
class CommentTest extends TestCase
{
$newText = 'updated text content';
$resp = $this->putJson("/ajax/comment/$comment->id", [
'text' => $newText,
- 'html' => '<p>'.$newText.'</p>',
]);
$resp->assertStatus(200);
'id' => $comment->id
]);
}
+
+ public function test_comments_converts_markdown_input_to_html()
+ {
+ $page = Page::first();
+ $this->asAdmin()->postJson("/ajax/page/$page->id/comment", [
+ 'text' => '# My Title',
+ ]);
+
+ $this->assertDatabaseHas('comments', [
+ 'entity_id' => $page->id,
+ 'entity_type' => $page->getMorphClass(),
+ 'text' => '# My Title',
+ 'html' => "<h1>My Title</h1>\n",
+ ]);
+
+ $pageView = $this->get($page->getUrl());
+ $pageView->assertSee('<h1>My Title</h1>');
+ }
+
+ public function test_html_cannot_be_injected_via_comment_content()
+ {
+ $this->asAdmin();
+ $page = Page::first();
+
+ $script = '<script>const a = "script";</script>\n\n# sometextinthecomment';
+ $this->postJson("/ajax/page/$page->id/comment", [
+ 'text' => $script,
+ ]);
+
+ $pageView = $this->get($page->getUrl());
+ $pageView->assertDontSee($script);
+ $pageView->assertSee('sometextinthecomment');
+
+ $comment = $page->comments()->first();
+ $this->putJson("/ajax/comment/$comment->id", [
+ 'text' => $script . 'updated',
+ ]);
+
+ $pageView = $this->get($page->getUrl());
+ $pageView->assertDontSee($script);
+ $pageView->assertSee('sometextinthecommentupdated');
+ }
}
-<?php namespace Tests;
-
+<?php namespace Tests\Entity;
+use BookStack\Actions\Tag;
+use BookStack\Entities\Book;
use BookStack\Entities\Bookshelf;
use BookStack\Entities\Chapter;
use BookStack\Entities\Page;
+use Tests\TestCase;
class EntitySearchTest extends TestCase
{
public function test_page_search()
{
- $book = \BookStack\Entities\Book::all()->first();
+ $book = Book::all()->first();
$page = $book->pages->first();
$search = $this->asEditor()->get('/search?term=' . urlencode($page->name));
public function test_book_search()
{
- $book = \BookStack\Entities\Book::first();
+ $book = Book::first();
$page = $book->pages->last();
$chapter = $book->chapters->last();
public function test_chapter_search()
{
- $chapter = \BookStack\Entities\Chapter::has('pages')->first();
+ $chapter = Chapter::has('pages')->first();
$page = $chapter->pages[0];
$pageTestResp = $this->asEditor()->get('/search/chapter/' . $chapter->id . '?term=' . urlencode($page->name));
public function test_tag_search()
{
$newTags = [
- new \BookStack\Actions\Tag([
+ new Tag([
'name' => 'animal',
'value' => 'cat'
]),
- new \BookStack\Actions\Tag([
+ new Tag([
'name' => 'color',
'value' => 'red'
])
$chapterSearch->assertSee($chapter->name);
$chapterSearch->assertSee($chapter->book->getShortName(42));
}
+
+ public function test_sibling_search_for_pages()
+ {
+ $chapter = Chapter::query()->with('pages')->first();
+ $this->assertGreaterThan(2, count($chapter->pages), 'Ensure we\'re testing with at least 1 sibling');
+ $page = $chapter->pages->first();
+
+ $search = $this->actingAs($this->getViewer())->get("/search/entity/siblings?entity_id={$page->id}&entity_type=page");
+ $search->assertSuccessful();
+ foreach ($chapter->pages as $page) {
+ $search->assertSee($page->name);
+ }
+
+ $search->assertDontSee($chapter->name);
+ }
+
+ public function test_sibling_search_for_pages_without_chapter()
+ {
+ $page = Page::query()->where('chapter_id', '=', 0)->firstOrFail();
+ $bookChildren = $page->book->getDirectChildren();
+ $this->assertGreaterThan(2, count($bookChildren), 'Ensure we\'re testing with at least 1 sibling');
+
+ $search = $this->actingAs($this->getViewer())->get("/search/entity/siblings?entity_id={$page->id}&entity_type=page");
+ $search->assertSuccessful();
+ foreach ($bookChildren as $child) {
+ $search->assertSee($child->name);
+ }
+
+ $search->assertDontSee($page->book->name);
+ }
+
+ public function test_sibling_search_for_chapters()
+ {
+ $chapter = Chapter::query()->firstOrFail();
+ $bookChildren = $chapter->book->getDirectChildren();
+ $this->assertGreaterThan(2, count($bookChildren), 'Ensure we\'re testing with at least 1 sibling');
+
+ $search = $this->actingAs($this->getViewer())->get("/search/entity/siblings?entity_id={$chapter->id}&entity_type=chapter");
+ $search->assertSuccessful();
+ foreach ($bookChildren as $child) {
+ $search->assertSee($child->name);
+ }
+
+ $search->assertDontSee($chapter->book->name);
+ }
+
+ public function test_sibling_search_for_books()
+ {
+ $books = Book::query()->take(10)->get();
+ $book = $books->first();
+ $this->assertGreaterThan(2, count($books), 'Ensure we\'re testing with at least 1 sibling');
+
+ $search = $this->actingAs($this->getViewer())->get("/search/entity/siblings?entity_id={$book->id}&entity_type=book");
+ $search->assertSuccessful();
+ foreach ($books as $expectedBook) {
+ $search->assertSee($expectedBook->name);
+ }
+ }
+
+ public function test_sibling_search_for_shelves()
+ {
+ $shelves = Bookshelf::query()->take(10)->get();
+ $shelf = $shelves->first();
+ $this->assertGreaterThan(2, count($shelves), 'Ensure we\'re testing with at least 1 sibling');
+
+ $search = $this->actingAs($this->getViewer())->get("/search/entity/siblings?entity_id={$shelf->id}&entity_type=bookshelf");
+ $search->assertSuccessful();
+ foreach ($shelves as $expectedShelf) {
+ $search->assertSee($expectedShelf->name);
+ }
+ }
+
+ public function test_search_works_on_updated_page_content()
+ {
+ $page = Page::query()->first();
+ $this->asEditor();
+
+ $update = $this->put($page->getUrl(), [
+ 'name' => $page->name,
+ 'html' => '<p>dog pandabearmonster spaghetti</p>',
+ ]);
+
+ $search = $this->asEditor()->get('/search?term=pandabearmonster');
+ $search->assertStatus(200);
+ $search->assertSeeText($page->name);
+ $search->assertSee($page->getUrl());
+ }
}
-<?php namespace Tests;
+<?php namespace Tests\Entity;
use BookStack\Entities\Bookshelf;
use BookStack\Entities\Book;
use BookStack\Auth\UserRepo;
use BookStack\Entities\Repos\PageRepo;
use Carbon\Carbon;
+use Illuminate\Support\Facades\DB;
+use Tests\BrowserKitTest;
class EntityTest extends BrowserKitTest
{
->seeInElement('#recently-updated-pages', $page->name);
}
- public function test_slug_multi_byte_lower_casing()
+ public function test_slug_multi_byte_url_safe()
{
$book = $this->newBook([
- 'name' => 'Ð\9aÐ\9dÐ\98Ð\93Ð\90'
+ 'name' => 'инÑ\84оÑ\80маÑ\86иÑ\8f'
]);
- $this->assertEquals('книга', $book->slug);
- }
+ $this->assertEquals('informatsiya', $book->slug);
+ $book = $this->newBook([
+ 'name' => '¿Qué?'
+ ]);
+
+ $this->assertEquals('que', $book->slug);
+ }
public function test_slug_format()
{
->seePageIs($chapter->getUrl());
}
+ public function test_page_delete_removes_entity_from_its_activity()
+ {
+ $page = Page::query()->first();
+
+ $this->asEditor()->put($page->getUrl(), [
+ 'name' => 'My updated page',
+ 'html' => '<p>updated content</p>',
+ ]);
+ $page->refresh();
+
+ $this->seeInDatabase('activities', [
+ 'entity_id' => $page->id,
+ 'entity_type' => $page->getMorphClass(),
+ ]);
+
+ $resp = $this->delete($page->getUrl());
+ $resp->assertResponseStatus(302);
+
+ $this->dontSeeInDatabase('activities', [
+ 'entity_id' => $page->id,
+ 'entity_type' => $page->getMorphClass(),
+ ]);
+
+ $this->seeInDatabase('activities', [
+ 'extra' => 'My updated page',
+ 'entity_id' => 0,
+ 'entity_type' => '',
+ ]);
+ }
+
}
-<?php namespace Tests;
+<?php namespace Tests\Entity;
use BookStack\Entities\Chapter;
use BookStack\Entities\Page;
use BookStack\Uploads\HttpFetcher;
use Illuminate\Support\Str;
+use Tests\TestCase;
class ExportTest extends TestCase
{
-<?php namespace Tests;
+<?php namespace Tests\Entity;
+
+use Tests\BrowserKitTest;
class MarkdownTest extends BrowserKitTest
{
-<?php namespace Tests;
+<?php namespace Tests\Entity;
use BookStack\Entities\Managers\PageContent;
use BookStack\Entities\Page;
+use Tests\TestCase;
class PageContentTest extends TestCase
{
-<?php namespace Tests;
+<?php namespace Tests\Entity;
+use BookStack\Entities\Page;
use BookStack\Entities\Repos\PageRepo;
+use Tests\BrowserKitTest;
class PageDraftTest extends BrowserKitTest
{
->dontSeeInElement('.book-contents', 'New Page');
}
+ public function test_page_html_in_ajax_fetch_response()
+ {
+ $this->asAdmin();
+ $page = Page::query()->first();
+
+ $this->getJson('/ajax/page/' . $page->id);
+ $this->seeJson([
+ 'html' => $page->html,
+ ]);
+ }
+
}
-<?php namespace Entity;
+<?php namespace Tests\Entity;
use BookStack\Entities\Page;
use BookStack\Entities\Repos\PageRepo;
$revisionView->assertSee('new content');
}
+ public function test_page_revision_preview_shows_content_of_revision()
+ {
+ $this->asEditor();
+
+ $pageRepo = app(PageRepo::class);
+ $page = Page::first();
+ $pageRepo->update($page, ['name' => 'updated page', 'html' => '<p>new revision content</p>', 'summary' => 'page revision testing']);
+ $pageRevision = $page->revisions->last();
+ $pageRepo->update($page, ['name' => 'updated page', 'html' => '<p>Updated content</p>', 'summary' => 'page revision testing 2']);
+
+ $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id);
+ $revisionView->assertStatus(200);
+ $revisionView->assertSee('new revision content');
+ }
+
public function test_page_revision_restore_updates_content()
{
$this->asEditor();
-<?php namespace Entity;
+<?php namespace Tests\Entity;
use BookStack\Entities\Page;
use Tests\TestCase;
--- /dev/null
+<?php namespace Tests\Entity;
+
+use BookStack\Entities\SearchOptions;
+use Tests\TestCase;
+
+class SearchOptionsTest extends TestCase
+{
+ public function test_from_string_parses_a_search_string_properly()
+ {
+ $options = SearchOptions::fromString('cat "dog" [tag=good] {is_tree}');
+
+ $this->assertEquals(['cat'], $options->searches);
+ $this->assertEquals(['dog'], $options->exacts);
+ $this->assertEquals(['tag=good'], $options->tags);
+ $this->assertEquals(['is_tree' => ''], $options->filters);
+ }
+
+ public function test_to_string_includes_all_items_in_the_correct_format()
+ {
+ $expected = 'cat "dog" [tag=good] {is_tree}';
+ $options = new SearchOptions;
+ $options->searches = ['cat'];
+ $options->exacts = ['dog'];
+ $options->tags = ['tag=good'];
+ $options->filters = ['is_tree' => ''];
+
+ $output = $options->toString();
+ foreach (explode(' ', $expected) as $term) {
+ $this->assertStringContainsString($term, $output);
+ }
+ }
+
+ public function test_correct_filter_values_are_set_from_string()
+ {
+ $opts = SearchOptions::fromString('{is_tree} {name:dan} {cat:happy}');
+
+ $this->assertEquals([
+ 'is_tree' => '',
+ 'name' => 'dan',
+ 'cat' => 'happy',
+ ], $opts->filters);
+ }
+}
-<?php namespace Tests;
+<?php namespace Tests\Entity;
use BookStack\Entities\Book;
use BookStack\Entities\Chapter;
use BookStack\Entities\Page;
use BookStack\Entities\Repos\PageRepo;
+use Tests\TestCase;
class SortTest extends TestCase
{
-<?php namespace Tests;
+<?php namespace Tests\Entity;
use BookStack\Entities\Book;
use BookStack\Entities\Chapter;
use BookStack\Entities\Entity;
use BookStack\Entities\Page;
use BookStack\Auth\Permissions\PermissionService;
+use Tests\BrowserKitTest;
class TagTest extends BrowserKitTest
{
return $entity;
}
- public function test_get_page_tags()
- {
- $page = $this->getEntityWithTags(Page::class);
-
- // Add some other tags to check they don't interfere
- factory(Tag::class, $this->defaultTagCount)->create();
-
- $this->asAdmin()->get("/ajax/tags/get/page/" . $page->id)
- ->shouldReturnJson();
-
- $json = json_decode($this->response->getContent());
- $this->assertTrue(count($json) === $this->defaultTagCount, "Returned JSON item count is not as expected");
- }
-
- public function test_get_chapter_tags()
- {
- $chapter = $this->getEntityWithTags(Chapter::class);
-
- // Add some other tags to check they don't interfere
- factory(Tag::class, $this->defaultTagCount)->create();
-
- $this->asAdmin()->get("/ajax/tags/get/chapter/" . $chapter->id)
- ->shouldReturnJson();
-
- $json = json_decode($this->response->getContent());
- $this->assertTrue(count($json) === $this->defaultTagCount, "Returned JSON item count is not as expected");
- }
-
- public function test_get_book_tags()
- {
- $book = $this->getEntityWithTags(Book::class);
-
- // Add some other tags to check they don't interfere
- factory(Tag::class, $this->defaultTagCount)->create();
-
- $this->asAdmin()->get("/ajax/tags/get/book/" . $book->id)
- ->shouldReturnJson();
-
- $json = json_decode($this->response->getContent());
- $this->assertTrue(count($json) === $this->defaultTagCount, "Returned JSON item count is not as expected");
- }
-
public function test_tag_name_suggestions()
{
// Create some tags with similar names to test with
<?php namespace Tests;
+use BookStack\Entities\Book;
+use Illuminate\Support\Facades\Log;
+
class ErrorTest extends TestCase
{
$notFound->assertDontSeeText('Log in');
$notFound->assertSeeText('tester');
}
+
+ public function test_item_not_found_does_not_get_logged_to_file()
+ {
+ $this->actingAs($this->getViewer());
+ $handler = $this->withTestLogger();
+ $book = Book::query()->first();
+
+ // Ensure we're seeing errors
+ Log::error('cat');
+ $this->assertTrue($handler->hasErrorThatContains('cat'));
+
+ $this->get('/books/arandomnotfouindbook');
+ $this->get($book->getUrl('/chapter/arandomnotfouindchapter'));
+ $this->get($book->getUrl('/chapter/arandomnotfouindpages'));
+
+ $this->assertCount(1, $handler->getRecords());
+ }
}
\ No newline at end of file
public function setUp(): void
{
parent::setUp();
- $this->langs = array_diff(scandir(resource_path('lang')), ['..', '.', 'check.php', 'format.php']);
+ $this->langs = array_diff(scandir(resource_path('lang')), ['..', '.']);
}
public function test_locales_config_key_set_properly()
$configLocales = config('app.locales');
sort($configLocales);
sort($this->langs);
- $this->assertTrue(implode(':', $this->langs) === implode(':', $configLocales), 'app.locales configuration variable matches found lang files');
+ $this->assertEquals(implode(':', $configLocales), implode(':', $this->langs), 'app.locales configuration variable does not match those found in lang files');
+ }
+
+ // Not part of standard phpunit test runs since we sometimes expect non-added langs.
+ public function do_test_locales_all_have_language_dropdown_entry()
+ {
+ $dropdownLocales = array_keys(trans('settings.language_select', [], 'en'));
+ sort($dropdownLocales);
+ sort($this->langs);
+ $diffs = array_diff($this->langs, $dropdownLocales);
+ if (count($diffs) > 0) {
+ $diffText = implode(',', $diffs);
+ $this->addWarning("Languages: {$diffText} found in files but not in language select dropdown.");
+ }
+ $this->assertTrue(true);
}
public function test_correct_language_if_not_logged_in()
-<?php namespace Tests;
+<?php namespace Tests\Permissions;
use BookStack\Entities\Book;
use BookStack\Entities\Bookshelf;
use BookStack\Entities\Entity;
use BookStack\Auth\User;
use BookStack\Entities\Page;
+use Tests\BrowserKitTest;
class RestrictionsTest extends BrowserKitTest
{
-<?php namespace Tests;
+<?php namespace Tests\Permissions;
use BookStack\Entities\Bookshelf;
use BookStack\Entities\Page;
use BookStack\Auth\Role;
use Laravel\BrowserKitTesting\HttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+use Tests\BrowserKitTest;
class RolesTest extends BrowserKitTest
{
<?php namespace Tests;
+use Auth;
+use BookStack\Auth\Permissions\PermissionService;
+use BookStack\Auth\Permissions\RolePermission;
+use BookStack\Auth\Role;
+use BookStack\Auth\User;
+use BookStack\Entities\Book;
+use BookStack\Entities\Chapter;
+use BookStack\Entities\Page;
+
class PublicActionTest extends BrowserKitTest
{
public function test_app_not_public()
{
$this->setSettings(['app-public' => 'false']);
- $book = \BookStack\Entities\Book::orderBy('name', 'asc')->first();
+ $book = Book::orderBy('name', 'asc')->first();
$this->visit('/books')->seePageIs('/login');
$this->visit($book->getUrl())->seePageIs('/login');
- $page = \BookStack\Entities\Page::first();
+ $page = Page::first();
$this->visit($page->getUrl())->seePageIs('/login');
}
public function test_books_viewable()
{
$this->setSettings(['app-public' => 'true']);
- $books = \BookStack\Entities\Book::orderBy('name', 'asc')->take(10)->get();
+ $books = Book::orderBy('name', 'asc')->take(10)->get();
$bookToVisit = $books[1];
// Check books index page is showing
public function test_chapters_viewable()
{
$this->setSettings(['app-public' => 'true']);
- $chapterToVisit = \BookStack\Entities\Chapter::first();
+ $chapterToVisit = Chapter::first();
$pageToVisit = $chapterToVisit->pages()->first();
// Check chapters index page is showing
public function test_public_page_creation()
{
$this->setSettings(['app-public' => 'true']);
- $publicRole = \BookStack\Auth\Role::getSystemRole('public');
+ $publicRole = Role::getSystemRole('public');
// Grant all permissions to public
$publicRole->permissions()->detach();
- foreach (\BookStack\Auth\Permissions\RolePermission::all() as $perm) {
+ foreach (RolePermission::all() as $perm) {
$publicRole->attachPermission($perm);
}
- $this->app[\BookStack\Auth\Permissions\PermissionService::class]->buildJointPermissionForRole($publicRole);
+ $this->app[PermissionService::class]->buildJointPermissionForRole($publicRole);
- $chapter = \BookStack\Entities\Chapter::first();
+ $chapter = Chapter::first();
$this->visit($chapter->book->getUrl());
$this->visit($chapter->getUrl())
->click('New Page')
'name' => 'My guest page'
])->seePageIs($chapter->book->getUrl('/page/my-guest-page/edit'));
- $user = \BookStack\Auth\User::getDefault();
+ $user = User::getDefault();
$this->seeInDatabase('pages', [
'name' => 'My guest page',
'chapter_id' => $chapter->id,
public function test_content_not_listed_on_404_for_public_users()
{
- $page = \BookStack\Entities\Page::first();
+ $page = Page::first();
$this->asAdmin()->visit($page->getUrl());
- \Auth::logout();
+ Auth::logout();
view()->share('pageTitle', '');
$this->forceVisit('/cats/dogs/hippos');
$this->dontSee($page->name);
$this->seeText("User-agent: *\nDisallow: /");
}
+ public function test_public_view_then_login_redirects_to_previous_content()
+ {
+ $this->setSettings(['app-public' => 'true']);
+ $book = Book::query()->first();
+ $this->visit($book->getUrl())
+ ->see($book->name)
+ ->visit('/login')
+ ->type('password', '#password')
+ ->press('Log In')
+ ->seePageUrlIs($book->getUrl());
+ }
+
+ public function test_access_hidden_content_then_login_redirects_to_intended_content()
+ {
+ $this->setSettings(['app-public' => 'true']);
+ $book = Book::query()->first();
+ $this->setEntityRestrictions($book);
+
+ try {
+ $this->visit($book->getUrl());
+ } catch (\Exception $exception) {}
+
+ $this->see('Book not found')
+ ->dontSee($book->name)
+ ->visit('/login')
+ ->type('password', '#password')
+ ->press('Log In')
+ ->seePageUrlIs($book->getUrl())
+ ->see($book->name);
+ }
}
\ No newline at end of file
use BookStack\Settings\SettingService;
use BookStack\Uploads\HttpFetcher;
use Illuminate\Support\Env;
+use Illuminate\Support\Facades\Log;
use Mockery;
+use Monolog\Handler\TestHandler;
+use Monolog\Logger;
use Throwable;
trait SharedTestHelpers
}
/**
- * Get an instance of a user with 'viewer' permissions
- * @param $attributes
- * @return mixed
+ * Get an instance of a user with 'viewer' permissions.
*/
- protected function getViewer($attributes = [])
+ protected function getViewer(array $attributes = []): User
{
$user = Role::getRole('viewer')->users()->first();
- if (!empty($attributes)) $user->forceFill($attributes)->save();
+ if (!empty($attributes)) {
+ $user->forceFill($attributes)->save();
+ }
return $user;
}
$this->assertStringStartsWith('You do not have permission to access', $error);
}
+ /**
+ * Set a test handler as the logging interface for the application.
+ * Allows capture of logs for checking against during tests.
+ */
+ protected function withTestLogger(): TestHandler
+ {
+ $monolog = new Logger('testing');
+ $testHandler = new TestHandler();
+ $monolog->pushHandler($testHandler);
+
+ Log::extend('testing', function() use ($monolog) {
+ return $monolog;
+ });
+ Log::setDefaultDriver('testing');
+
+ return $testHandler;
+ }
+
}
\ No newline at end of file
<?php namespace Tests;
use BookStack\Notifications\TestEmail;
+use Illuminate\Contracts\Notifications\Dispatcher;
use Illuminate\Support\Facades\Notification;
class TestEmailTest extends TestCase
Notification::assertSentTo($admin, TestEmail::class);
}
+ public function test_send_test_email_failure_displays_error_notification()
+ {
+ $mockDispatcher = $this->mock(Dispatcher::class);
+ $this->app[Dispatcher::class] = $mockDispatcher;
+
+ $exception = new \Exception('A random error occurred when testing an email');
+ $mockDispatcher->shouldReceive('send')->andThrow($exception);
+
+ $admin = $this->getAdmin();
+ $sendReq = $this->actingAs($admin)->post('/settings/maintenance/send-test-email');
+ $sendReq->assertRedirect('/settings/maintenance#image-cleanup');
+ $this->assertSessionHas('error');
+
+ $message = session()->get('error');
+ $this->assertStringContainsString('Error thrown when sending a test email:', $message);
+ $this->assertStringContainsString('A random error occurred when testing an email', $message);
+ }
+
public function test_send_test_email_requires_settings_manage_permission()
{
Notification::fake();
-<?php namespace Tests;
+<?php namespace Tests\Unit;
+
+use Tests\TestCase;
/**
* Class ConfigTest
-<?php namespace Tests;
+<?php namespace Tests\Unit;
+
+use Tests\TestCase;
class UrlTest extends TestCase
{
- public function test_request_url_takes_custom_url_into_account()
- {
- config()->set('app.url', 'http://example.com/bookstack');
- $this->get('/');
- $this->assertEquals('http://example.com/bookstack', request()->getUri());
-
- config()->set('app.url', 'http://example.com/docs/content');
- $this->get('/');
- $this->assertEquals('http://example.com/docs/content', request()->getUri());
- }
-
public function test_url_helper_takes_custom_url_into_account()
{
$this->runWithEnv('APP_URL', 'http://example.com/bookstack', function() {
-<?php namespace Tests;
+<?php namespace Tests\Uploads;
use BookStack\Uploads\Attachment;
use BookStack\Entities\Page;
use BookStack\Auth\Permissions\PermissionService;
+use Tests\TestCase;
class AttachmentTest extends TestCase
{
protected function deleteUploads()
{
$fileService = $this->app->make(\BookStack\Uploads\AttachmentService::class);
- foreach (\BookStack\Uploads\Attachment::all() as $file) {
+ foreach (Attachment::all() as $file) {
$fileService->deleteFile($file);
}
}
$this->asAdmin();
$linkReq = $this->call('POST', 'attachments/link', [
- 'link' => 'https://example.com',
- 'name' => 'Example Attachment Link',
- 'uploaded_to' => $page->id,
+ 'attachment_link_url' => 'https://example.com',
+ 'attachment_link_name' => 'Example Attachment Link',
+ 'attachment_link_uploaded_to' => $page->id,
]);
- $expectedResp = [
+ $expectedData = [
'path' => 'https://example.com',
'name' => 'Example Attachment Link',
'uploaded_to' => $page->id,
];
$linkReq->assertStatus(200);
- $linkReq->assertJson($expectedResp);
- $this->assertDatabaseHas('attachments', $expectedResp);
+ $this->assertDatabaseHas('attachments', $expectedData);
$attachment = Attachment::orderBy('id', 'desc')->take(1)->first();
$pageGet = $this->get($page->getUrl());
$this->asAdmin();
$this->call('POST', 'attachments/link', [
- 'link' => 'https://example.com',
- 'name' => 'Example Attachment Link',
- 'uploaded_to' => $page->id,
+ 'attachment_link_url' => 'https://example.com',
+ 'attachment_link_name' => 'Example Attachment Link',
+ 'attachment_link_uploaded_to' => $page->id,
]);
- $attachmentId = \BookStack\Uploads\Attachment::first()->id;
+ $attachmentId = Attachment::first()->id;
$update = $this->call('PUT', 'attachments/' . $attachmentId, [
- 'uploaded_to' => $page->id,
- 'name' => 'My new attachment name',
- 'link' => 'https://test.example.com'
+ 'attachment_edit_name' => 'My new attachment name',
+ 'attachment_edit_url' => 'https://test.example.com'
]);
- $expectedResp = [
+ $expectedData = [
+ 'id' => $attachmentId,
'path' => 'https://test.example.com',
'name' => 'My new attachment name',
'uploaded_to' => $page->id
];
$update->assertStatus(200);
- $update->assertJson($expectedResp);
- $this->assertDatabaseHas('attachments', $expectedResp);
+ $this->assertDatabaseHas('attachments', $expectedData);
$this->deleteUploads();
}
$filePath = storage_path($attachment->path);
$this->assertTrue(file_exists($filePath), 'File at path ' . $filePath . ' does not exist');
- $attachment = \BookStack\Uploads\Attachment::first();
+ $attachment = Attachment::first();
$this->delete($attachment->getUrl());
$this->assertDatabaseMissing('attachments', [
--- /dev/null
+<?php namespace Tests\Uploads;
+
+use BookStack\Entities\Page;
+use BookStack\Uploads\Image;
+use Tests\TestCase;
+
+class DrawioTest extends TestCase
+{
+ use UsesImages;
+
+ public function test_get_image_as_base64()
+ {
+ $page = Page::first();
+ $this->asAdmin();
+ $imageName = 'first-image.png';
+
+ $this->uploadImage($imageName, $page->id);
+ $image = Image::first();
+ $image->type = 'drawio';
+ $image->save();
+
+ $imageGet = $this->getJson("/images/drawio/base64/{$image->id}");
+ $imageGet->assertJson([
+ 'content' => 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEcDCo5iYNs+gAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAFElEQVQI12O0jN/KgASYGFABqXwAZtoBV6Sl3hIAAAAASUVORK5CYII='
+ ]);
+ }
+
+ public function test_drawing_base64_upload()
+ {
+ $page = Page::first();
+ $editor = $this->getEditor();
+ $this->actingAs($editor);
+
+ $upload = $this->postJson('images/drawio', [
+ 'uploaded_to' => $page->id,
+ 'image' => 'image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEcDCo5iYNs+gAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAFElEQVQI12O0jN/KgASYGFABqXwAZtoBV6Sl3hIAAAAASUVORK5CYII='
+ ]);
+
+ $upload->assertStatus(200);
+ $upload->assertJson([
+ 'type' => 'drawio',
+ 'uploaded_to' => $page->id,
+ 'created_by' => $editor->id,
+ 'updated_by' => $editor->id,
+ ]);
+
+ $image = Image::where('type', '=', 'drawio')->first();
+ $this->assertTrue(file_exists(public_path($image->path)), 'Uploaded image not found at path: '. public_path($image->path));
+
+ $testImageData = file_get_contents($this->getTestImageFilePath());
+ $uploadedImageData = file_get_contents(public_path($image->path));
+ $this->assertTrue($testImageData === $uploadedImageData, "Uploaded image file data does not match our test image as expected");
+ }
+
+ public function test_drawio_url_can_be_configured()
+ {
+ config()->set('services.drawio', 'http://cats.com?dog=tree');
+ $page = Page::first();
+ $editor = $this->getEditor();
+
+ $resp = $this->actingAs($editor)->get($page->getUrl('/edit'));
+ $resp->assertSee('drawio-url="http://cats.com?dog=tree"');
+ }
+
+ public function test_drawio_url_can_be_disabled()
+ {
+ config()->set('services.drawio', true);
+ $page = Page::first();
+ $editor = $this->getEditor();
+
+ $resp = $this->actingAs($editor)->get($page->getUrl('/edit'));
+ $resp->assertSee('drawio-url="https://www.draw.io/?embed=1&proto=json&spin=1"');
+
+ config()->set('services.drawio', false);
+ $resp = $this->actingAs($editor)->get($page->getUrl('/edit'));
+ $resp->assertDontSee('drawio-url');
+ }
+
+}
\ No newline at end of file
$newName = Str::random();
$update = $this->put('/images/' . $image->id, ['name' => $newName]);
$update->assertSuccessful();
- $update->assertJson([
- 'id' => $image->id,
- 'name' => $newName,
- 'type' => 'gallery',
- ]);
+ $update->assertSee($newName);
$this->deleteImage($imgDetails['path']);
$imgDetails = $this->uploadGalleryImage();
$image = Image::query()->first();
- $emptyJson = ['images' => [], 'has_more' => false];
- $resultJson = [
- 'images' => [
- [
- 'id' => $image->id,
- 'name' => $imgDetails['name'],
- ]
- ],
- 'has_more' => false,
- ];
-
$pageId = $imgDetails['page']->id;
$firstPageRequest = $this->get("/images/gallery?page=1&uploaded_to={$pageId}");
- $firstPageRequest->assertSuccessful()->assertJson($resultJson);
+ $firstPageRequest->assertSuccessful()->assertElementExists('div');
+ $firstPageRequest->assertSuccessful()->assertSeeText($image->name);
$secondPageRequest = $this->get("/images/gallery?page=2&uploaded_to={$pageId}");
- $secondPageRequest->assertSuccessful()->assertExactJson($emptyJson);
+ $secondPageRequest->assertSuccessful()->assertElementNotExists('div');
$namePartial = substr($imgDetails['name'], 0, 3);
$searchHitRequest = $this->get("/images/gallery?page=1&uploaded_to={$pageId}&search={$namePartial}");
- $searchHitRequest->assertSuccessful()->assertJson($resultJson);
+ $searchHitRequest->assertSuccessful()->assertSee($imgDetails['name']);
$namePartial = Str::random(16);
- $searchHitRequest = $this->get("/images/gallery?page=1&uploaded_to={$pageId}&search={$namePartial}");
- $searchHitRequest->assertSuccessful()->assertExactJson($emptyJson);
+ $searchFailRequest = $this->get("/images/gallery?page=1&uploaded_to={$pageId}&search={$namePartial}");
+ $searchFailRequest->assertSuccessful()->assertDontSee($imgDetails['name']);
+ $searchFailRequest->assertSuccessful()->assertElementNotExists('div');
}
public function test_image_usage()
$page->html = '<img src="'.$image->url.'">';
$page->save();
- $usage = $this->get('/images/usage/' . $image->id);
+ $usage = $this->get('/images/edit/' . $image->id . '?delete=true');
$usage->assertSuccessful();
- $usage->assertJson([
- [
- 'id' => $page->id,
- 'name' => $page->name
- ]
- ]);
+ $usage->assertSeeText($page->name);
+ $usage->assertSee($page->getUrl());
$this->deleteImage($imgDetails['path']);
}
$this->assertFalse(file_exists(public_path($relPath)), 'Uploaded double extension file was uploaded but should have been stopped');
}
+ public function test_url_entities_removed_from_filenames()
+ {
+ $this->asEditor();
+ $badNames = [
+ "bad-char-#-image.png",
+ "bad-char-?-image.png",
+ "?#.png",
+ "?.png",
+ "#.png",
+ ];
+ foreach ($badNames as $name) {
+ $galleryFile = $this->getTestImage($name);
+ $page = Page::first();
+ $badPath = $this->getTestImagePath('gallery', $name);
+ $this->deleteImage($badPath);
+
+ $upload = $this->call('POST', '/images/gallery', ['uploaded_to' => $page->id], [], ['file' => $galleryFile], []);
+ $upload->assertStatus(200);
+
+ $lastImage = Image::query()->latest('id')->first();
+ $newFileName = explode('.', basename($lastImage->path))[0];
+
+ $this->assertEquals($lastImage->name, $name);
+ $this->assertFalse(strpos($lastImage->path, $name), 'Path contains original image name');
+ $this->assertFalse(file_exists(public_path($badPath)), 'Uploaded image file name was not stripped of url entities');
+
+ $this->assertTrue(strlen($newFileName) > 0, 'File name was reduced to nothing');
+
+ $this->deleteImage($lastImage->path);
+ }
+ }
+
public function test_secure_images_uploads_to_correct_place()
{
config()->set('filesystems.images', 'local_secure');
$page = Page::first();
$this->asAdmin();
$imageName = 'first-image.png';
+ $relPath = $this->getTestImagePath('gallery', $imageName);
+ $this->deleteImage($relPath);
$this->uploadImage($imageName, $page->id);
$image = Image::first();
- $relPath = $this->getTestImagePath('gallery', $imageName);
$delete = $this->delete( '/images/' . $image->id);
$delete->assertStatus(200);
$this->assertFalse(file_exists(public_path($relPath)), 'Uploaded image has not been deleted as expected');
}
- public function testBase64Get()
+ public function test_image_delete_does_not_delete_similar_images()
{
$page = Page::first();
$this->asAdmin();
$imageName = 'first-image.png';
- $this->uploadImage($imageName, $page->id);
- $image = Image::first();
- $image->type = 'drawio';
- $image->save();
-
- $imageGet = $this->getJson("/images/drawio/base64/{$image->id}");
- $imageGet->assertJson([
- 'content' => 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEcDCo5iYNs+gAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAFElEQVQI12O0jN/KgASYGFABqXwAZtoBV6Sl3hIAAAAASUVORK5CYII='
- ]);
- }
-
- public function test_drawing_base64_upload()
- {
- $page = Page::first();
- $editor = $this->getEditor();
- $this->actingAs($editor);
+ $relPath = $this->getTestImagePath('gallery', $imageName);
+ $this->deleteImage($relPath);
- $upload = $this->postJson('images/drawio', [
- 'uploaded_to' => $page->id,
- 'image' => 'image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4gEcDCo5iYNs+gAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAFElEQVQI12O0jN/KgASYGFABqXwAZtoBV6Sl3hIAAAAASUVORK5CYII='
- ]);
+ $this->uploadImage($imageName, $page->id);
+ $this->uploadImage($imageName, $page->id);
+ $this->uploadImage($imageName, $page->id);
- $upload->assertStatus(200);
- $upload->assertJson([
- 'type' => 'drawio',
- 'uploaded_to' => $page->id,
- 'created_by' => $editor->id,
- 'updated_by' => $editor->id,
- ]);
+ $image = Image::first();
+ $folder = public_path(dirname($relPath));
+ $imageCount = count(glob($folder . '/*'));
- $image = Image::where('type', '=', 'drawio')->first();
- $this->assertTrue(file_exists(public_path($image->path)), 'Uploaded image not found at path: '. public_path($image->path));
+ $delete = $this->delete( '/images/' . $image->id);
+ $delete->assertStatus(200);
- $testImageData = file_get_contents($this->getTestImageFilePath());
- $uploadedImageData = file_get_contents(public_path($image->path));
- $this->assertTrue($testImageData === $uploadedImageData, "Uploaded image file data does not match our test image as expected");
+ $newCount = count(glob($folder . '/*'));
+ $this->assertEquals($imageCount - 1, $newCount, 'More files than expected have been deleted');
+ $this->assertFalse(file_exists(public_path($relPath)), 'Uploaded image has not been deleted as expected');
}
protected function getTestProfileImage()
<?php namespace Tests\Uploads;
-
use BookStack\Entities\Page;
use Illuminate\Http\UploadedFile;
/**
* Get the path for a test image.
- * @param $type
- * @param $fileName
- * @return string
*/
- protected function getTestImagePath($type, $fileName)
+ protected function getTestImagePath(string $type, string $fileName): string
{
return '/uploads/images/' . $type . '/' . Date('Y-m') . '/' . $fileName;
}
-<?php namespace Test;
+<?php namespace Test\User;
use BookStack\Api\ApiToken;
use Carbon\Carbon;
-<?php namespace Tests;
+<?php namespace Test\User;
+
+use Tests\TestCase;
class UserPreferencesTest extends TestCase
{
$invalidKeyRequest = $this->patch('/settings/users/' . $editor->id.'/update-expansion-preference/my-home-details', ['expand' => 'true']);
$invalidKeyRequest->assertStatus(500);
}
+
+ public function test_toggle_dark_mode()
+ {
+ $home = $this->actingAs($this->getEditor())->get('/');
+ $home->assertElementNotExists('.dark-mode');
+ $home->assertSee('Dark Mode');
+
+ $this->assertEquals(false, setting()->getForCurrentUser('dark-mode-enabled', false));
+ $prefChange = $this->patch('/settings/users/toggle-dark-mode');
+ $prefChange->assertRedirect();
+ $this->assertEquals(true, setting()->getForCurrentUser('dark-mode-enabled'));
+
+ $home = $this->actingAs($this->getEditor())->get('/');
+ $home->assertElementExists('.dark-mode');
+ $home->assertDontSee('Dark Mode');
+ $home->assertSee('Light Mode');
+ }
}
\ No newline at end of file
-<?php namespace Tests;
+<?php namespace Test\User;
+
+use Activity;
+use BookStack\Auth\User;
+use BookStack\Entities\Bookshelf;
+use Tests\BrowserKitTest;
class UserProfileTest extends BrowserKitTest
{
public function setUp(): void
{
parent::setUp();
- $this->user = \BookStack\Auth\User::all()->last();
+ $this->user = User::all()->last();
}
public function test_profile_page_shows_name()
$newUser = $this->getNewBlankUser();
$this->actingAs($newUser);
$entities = $this->createEntityChainBelongingToUser($newUser, $newUser);
- \Activity::add($entities['book'], 'book_update', $entities['book']->id);
- \Activity::add($entities['page'], 'page_create', $entities['book']->id);
+ Activity::add($entities['book'], 'book_update', $entities['book']->id);
+ Activity::add($entities['page'], 'page_create', $entities['book']->id);
$this->asAdmin()->visit('/user/' . $newUser->id)
->seeInElement('#recent-user-activity', 'updated book')
$newUser = $this->getNewBlankUser();
$this->actingAs($newUser);
$entities = $this->createEntityChainBelongingToUser($newUser, $newUser);
- \Activity::add($entities['book'], 'book_update', $entities['book']->id);
- \Activity::add($entities['page'], 'page_create', $entities['book']->id);
+ Activity::add($entities['book'], 'book_update', $entities['book']->id);
+ Activity::add($entities['page'], 'page_create', $entities['book']->id);
$this->asAdmin()->visit('/')->clickInElement('#recent-activity', $newUser->name)
->seePageIs('/user/' . $newUser->id)
public function test_guest_profile_cannot_be_deleted()
{
- $guestUser = \BookStack\Auth\User::getDefault();
+ $guestUser = User::getDefault();
$this->asAdmin()->visit('/settings/users/' . $guestUser->id . '/delete')
->see('Delete User')->see('Guest')
->press('Confirm')
->pageHasElement('.featured-image-container');
}
+ public function test_shelf_view_type_change()
+ {
+ $editor = $this->getEditor();
+ $shelf = Bookshelf::query()->first();
+ setting()->putUser($editor, 'bookshelf_view_type', 'list');
+
+ $this->actingAs($editor)->visit($shelf->getUrl())
+ ->pageNotHasElement('.featured-image-container')
+ ->pageHasElement('.content-wrap .entity-list-item')
+ ->see('Grid View');
+
+ $req = $this->patch("/settings/users/{$editor->id}/switch-shelf-view", ['view_type' => 'grid']);
+ $req->assertRedirectedTo($shelf->getUrl());
+
+ $this->actingAs($editor)->visit($shelf->getUrl())
+ ->pageHasElement('.featured-image-container')
+ ->pageNotHasElement('.content-wrap .entity-list-item')
+ ->see('List View');
+ }
+
}
const path = require('path');
const dev = process.env.NODE_ENV !== 'production';
-const MiniCssExtractPlugin = require("mini-css-extract-plugin");
-
const config = {
target: 'web',
mode: dev? 'development' : 'production',
entry: {
app: './resources/js/index.js',
- styles: './resources/sass/styles.scss',
- "export-styles": './resources/sass/export-styles.scss',
- "print-styles": './resources/sass/print-styles.scss',
},
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'public/dist')
},
- module: {
- rules: [
- {
- test: /\.scss$/,
- use: [
- {
- loader: MiniCssExtractPlugin.loader,
- options: {}
- },
- {
- loader: "css-loader", options: {
- sourceMap: dev
- }
- }, {
- loader: "sass-loader", options: {
- sourceMap: dev
- }
- }
- ]
- }
- ]
- },
- plugins: [
- new MiniCssExtractPlugin({
- filename: "[name].css",
- }),
- ]
};
if (dev) {