Projects
Kolab:Winterfell
roundcubemail
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 191
View file
roundcubemail.spec
Changed
@@ -48,15 +48,15 @@ %global logdir /var/log/roundcubemail %global tmpdir /var/lib/roundcubemail -%global rc_version 1.4 -%global rc_rel_suffix rc2.12 +%global rc_version 1.4.1.27 +#%%global rc_rel_suffix rc2.12 %global dot_rel_suffix %{?rc_rel_suffix:.%{rc_rel_suffix}} %global dash_rel_suffix %{?rc_rel_suffix:-%{rc_rel_suffix}} Name: roundcubemail -Version: 1.4 +Version: 1.4.1.27 -Release: 312%{?dot_rel_suffix}%{?dist} +Release: 1%{?dot_rel_suffix}%{?dist} Summary: Round Cube Webmail is a browser-based multilingual IMAP client @@ -76,8 +76,6 @@ Source200: 2017111400.sql -Patch0001: 0001-fix-sieve-fatal-error.patch - Patch201: default-configuration.patch Patch202: roundcubemail-1.4-beta86-plugin-enigma-homedir.patch @@ -125,14 +123,14 @@ %endif %if "%{_arch}" != "ppc64" && "%{_arch}" != "ppc64le" && 0%{?suse_version} < 1 -BuildRequires: python-cssmin +BuildRequires: python%{?python3_pkgversion}-cssmin %endif # This can, regrettably, not be BuildRequires'ed, since the OSC # command-line so epicly fails at downloading as large a chunk of data. #BuildRequires: firefox -BuildRequires: python -BuildRequires: python-nose +BuildRequires: python%{?python3_pkgversion} +BuildRequires: python%{?python3_pkgversion}-nose #BuildRequires: python-selenium Requires: %{name}(core) = %{?epoch:%{epoch}:}%{version}-%{release} @@ -1518,8 +1516,6 @@ cp -vf %{SOURCE102} plugins/password/config.inc.php.dist %endif -%patch0001 -p1 - %patch201 -p1 %if 0%{?plesk} < 1 %patch202 -p1 @@ -3438,6 +3434,9 @@ %defattr(-,root,root,-) %changelog +* Wed Dec 4 2019 Jeroen van Meeuwen <vanmeeuwen@kolabsys.com> - 1.4.1.27-1 +- Check in 27 revisions ahead of upstream 1.4.1 release + * Mon Oct 7 2019 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 1.4-312.rc2.12 - Check in 12 revisions ahead of upstream 1.4-rc2 release
View file
0001-fix-sieve-fatal-error.patch
Deleted
@@ -1,81 +0,0 @@ -commit 1d9ddf9d336f7b903fd2748350d07c1366b92f41 -Author: Aleksander Machniak <alec@alec.pl> -Date: Tue Oct 8 21:25:30 2019 +0200 - - Fix PHP Fatal error: Uncaught Error: Using $this when not in object (#6959) - -diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php -index da39cebd1..7c74d6988 100644 ---- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php -+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php -@@ -2237,7 +2237,7 @@ class rcube_sieve_engine - 'type' => 'text', - 'name' => '_action_interval[' . $id . ']', - 'id' => 'action_interval' . $id, -- 'value' => rcube_sieve_vacation::vacation_interval($action), -+ 'value' => rcube_sieve_vacation::vacation_interval($action, $this->exts), - 'size' => 2, - 'class' => $this->error_class($id, 'action', 'interval', 'action_interval'), - )); -diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php -index 931750110..bcb62735d 100644 ---- a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php -+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php -@@ -125,7 +125,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine - return $this->sieve->error(); - } - -- private function vacation_rule() -+ protected function vacation_rule() - { - if ($this->script_name === false || $this->script_name === null || !$this->sieve->load($this->script_name)) { - return; -@@ -164,7 +164,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine - $this->vacation['list'] = $list; - } - -- private function vacation_post() -+ protected function vacation_post() - { - if (empty($_POST)) { - return; -@@ -388,7 +388,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine - } - } - -- $interval_txt = $interval->show(self::vacation_interval($this->vacation)); -+ $interval_txt = $interval->show(self::vacation_interval($this->vacation, $this->exts)); - if ($seconds_extension) { - $interval_select = new html_select(array('name' => 'vacation_interval_type')); - $interval_select->add($this->plugin->gettext('days'), 'days'); -@@ -521,7 +521,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine - return $out; - } - -- public static function build_regexp_tests($date_from, $date_to, &$error) -+ protected static function build_regexp_tests($date_from, $date_to, &$error) - { - $tests = array(); - $dt_from = rcube_utils::anytodatetime($date_from); -@@ -562,7 +562,7 @@ class rcube_sieve_vacation extends rcube_sieve_engine - return $tests; - } - -- public static function parse_regexp_tests($tests) -+ protected static function parse_regexp_tests($tests) - { - $rx_from = '/^\(([0-9]{2}).*\)\s([A-Za-z]+)\s([0-9]{4})/'; - $rx_to = '/^\(.*([0-9]{2})\)\s([A-Za-z]+)\s([0-9]{4})/'; -@@ -588,10 +588,10 @@ class rcube_sieve_vacation extends rcube_sieve_engine - /** - * Get current vacation interval - */ -- public static function vacation_interval(&$vacation) -+ public static function vacation_interval(&$vacation, $extensions = array()) - { - $rcube = rcube::get_instance(); -- $seconds_extension = in_array('vacation-seconds', $this->exts); -+ $seconds_extension = in_array('vacation-seconds', $extensions); - - if (isset($vacation['seconds'])) { - $interval = $vacation['seconds'];
View file
debian.changelog
Changed
@@ -1,3 +1,9 @@ +roundcubemail (1.4.1.27-0~kolab1) unstable; urgency=low + + * Check in 27 revisions ahead of upstream 1.4.1 release + + -- Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> Wed, 4 Dec 2019 11:11:11 +0200 + roundcubemail (1.4-0~kolab316) unstable; urgency=low * change ownershow of /var/lib/roundcubemail to www-data group instead of adm
View file
debian.series
Changed
@@ -1,3 +1,2 @@ default-configuration.patch -p1 roundcubemail-1.4-beta86-plugin-enigma-homedir.patch -p1 -0001-fix-sieve-fatal-error.patch -p1
View file
roundcubemail-1.4-rc2.12.tar.gz/autogen.sh
Deleted
@@ -1,15 +0,0 @@ -#!/bin/bash - -git clean -d -f -x - -bin/install-jsdeps.sh -bin/install-jsdeps.sh - -pushd .. - -rm -rf roundcubemail-$1/ -cp -a roundcubemail.git roundcubemail-$1/ -rm -rf roundcubemail-$1/.git/ - -tar czvf roundcubemail-$1.tar.gz roundcubemail-$1 -
View file
roundcubemail-1.4-rc2.12.tar.gz/CHANGELOG -> roundcubemail-1.4.1.27.tar.gz/CHANGELOG
Changed
@@ -1,11 +1,59 @@ CHANGELOG Roundcube Webmail =========================== +- Managesieve: Replace "Filter disabled" with "Filter enabled" (#7028) +- Managesieve: Fix so modifier type select wasn't hidden after hiding modifier select on header change +- Managesieve: Fix filter selection after removing a first filter (#7079) +- Password: Fix kpasswd and smb drivers' double-escaping bug (#7092) +- Enigma: Add script to import keys from filesystem to the db storage (for multihost) +- Installer: Fix DB Write test on SQLite database ("database is locked" error) (#7064) +- Installer: Fix so SQLite DSN with a relative path to the database file works in Installer +- Elastic: Fix contrast of warning toasts (#7058) +- Fix so type attribute on script tags is not used on HTML5 pages (#6975) +- Fix unread count after purge on a folder that is not currently selected (#7051) +- Fix bug where Enter key didn't work on messages list in "List" layout (#7052) +- Fix bug where deleting a saved search in addressbook caused display issue on sources/groups list (#7061) +- Fix bug where a new saved search added after removing all searches wasn't added to the list (#7061) +- Fix bug where a new contact group added after removing all groups from addressbook wasn't added to the list +- Fix bug where Ctype extension wasn't required in Installer and INSTALL file (#7049) +- Fix so install-jsdeps.sh removes Bootstrap's sourceMappingURL (#7035) +- Fix so use of Ctrl+A does not scroll the list (#7020) +- Fix/remove useless keyup event handler on username input in logon form (#6970) +- Fix bug where cancelling switching from HTML to plain text didn't set the flag properly (#7077) +- Fix bug where HTML reply could add an empty line with extra indentation above the original message (#7088) + +RELEASE 1.4.1 +------------- +- Elastic: Change HTML editor widget to improve form flow (#6992) +- Elastic: Fix position of mobile floating action button (#7038) +- Managesieve: Fix locked UI after opening filter frame (#7007) +- Fix PHP warning: "array_merge(): Expected parameter 2 to be an array, null given in sendmail.inc (#7003) +- Fix bug where cache keys could exceed length limit specified in db schema (#7004) +- Fix invalid Signature button state after escaping Mailvelope mode (#7015) +- Fix so 401 error is returned only on failed logon requests (#7010) +- Fix db_prefix handling in queries with `TRUNCATE TABLE <name>` and `UNIQUE <name>` (#7013) +- Fix so update.sh script warns about changed defaults (#7011) +- Fix tables listing routine when DSN contained a database with unsupported suffix (#7034) +- Fix so Elastic is also a default in jqueryui plugin (#7039) +- Fix bug where the Installer would not warn about required schema upgrade (#7042) + +RELEASE 1.4.0 +------------- - Elastic: Resizeable columns (#6929) - Elastic: Fix position and style of auto-complete dropdown on small screens (#6951) +- Elastic: Fix initial focus on recipients input in mail compose screen +- Elastic: Fix inserting responses at cursor position (#6971) +- Elastic: Fix unread filter icon and search state on folder change (#6978) +- Elastic: Fix regression where Encrypt button wasn't displayed in mail compose toolbar (#6982) +- Elastic: Fix regression where recipient input didn't update internal input state (#6988) +- Enigma: Fix bug where signing option was set to disabled after saving a draft in Elastic skin (#6515) - Redis: Improve error handling and phpredis 5.X support (#6888) +- Archive: Fix bug where next email was not displayed after Archive button use (#6965) +- Archive: Fix missing Archive icon in folder selector popup in Elastic - Fix bug where cache keys were not case-sensitive on MySQL/MSSQL (#6942) -- Fix so an error is loogged when encryption fails (#6948) +- Fix so an error is logged when encryption fails (#6948) +- Fix bug where inline images could have been ignored if Content-Id header contained redundant spaces (#6980) +- Fix and document skin_logo setup (#6981) RELEASE 1.4-rc2 ---------------
View file
roundcubemail-1.4-rc2.12.tar.gz/INSTALL -> roundcubemail-1.4.1.27.tar.gz/INSTALL
Changed
@@ -12,7 +12,7 @@ * An IMAP, HTTP and SMTP server * .htaccess support allowing overrides for DirectoryIndex * PHP Version 5.4 or greater including: - - PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring (required) + - PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring, Ctype (required) - PHP PDO with driver for either MySQL, PostgreSQL, SQL Server, Oracle or SQLite (required) - Iconv, Zip, Fileinfo, Intl, Exif (recommended) - LDAP for LDAP addressbook support (optional) @@ -44,7 +44,9 @@ INSTALLATION ============ -1. Decompress and put this folder somewhere inside your document root +1. Decompress and put this folder somewhere inside your document root. + Note: Make sure files have proper owner/group for your setup. If you use + tar command `--no-same-owner` option might be helpful. 2. In case you don't use the so-called "complete" release package, you have to install PHP and javascript dependencies. 2.1. Install PHP dependencies using composer: @@ -63,7 +65,8 @@ 5. Point your browser to http://url-to-roundcube/installer/ 6. Follow the instructions of the install script (or see MANUAL CONFIGURATION) 7. After creating and testing the configuration, remove the installer directory -8. If you use git sources compile css files for the Elastic skin: +8. If you use git sources compile css files for the Elastic skin (required + lessc >= 1.5.0): $ cd skins/elastic $ lessc -x styles/styles.less > styles/styles.css $ lessc -x styles/print.less > styles/print.css @@ -77,7 +80,7 @@ IMPORTANT! Read all comments in defaults.inc.php, understand them and configure your installation to be not surprised by default behaviour. -Roundcube writes internal errors to the 'errors' log file located in the logs +Roundcube writes internal errors to the 'errors.log' log file located in the logs directory which can be configured in config/config.inc.php. If you want ordinary PHP errors to be logged there as well, set error_log in php.ini or .htaccess file.
View file
roundcubemail-1.4-rc2.12.tar.gz/README.md -> roundcubemail-1.4.1.27.tar.gz/README.md
Changed
@@ -4,13 +4,6 @@ [![Build Status](https://api.travis-ci.org/roundcube/roundcubemail.svg?branch=master)](https://travis-ci.org/roundcube/roundcubemail) -ATTENTION ---------- -This is just a snapshot from the GIT repository and is **NOT A STABLE -version of Roundcube**. It's not recommended to replace an existing installation -of Roundcube with this version. Also using a separate database for this -installation is highly recommended. - INTRODUCTION ------------ @@ -25,9 +18,6 @@ It includes a custom framework with an IMAP library derived from [IlohaMail][iloha] and requires a set of external libraries (see composer.json and jsdeps.json files). -The current default skin 'Larry' was kindly created by FLINT / Büro für -Gestaltung, Berne, Switzerland. - INSTALLATION ------------
View file
roundcubemail-1.4-rc2.12.tar.gz/UPGRADING -> roundcubemail-1.4.1.27.tar.gz/UPGRADING
Changed
@@ -14,18 +14,20 @@ ./bin/installto.sh <TARGET-FOLDER> -For <TARGET-FOLDER> you specify the path to the Roundcube installation -which should be updated. The update script will then copy all new files to the +For <TARGET-FOLDER> you specify the path to the Roundcube installation +which should be updated. The update script will then copy all new files to the target location and check and update the configuration and database schema. -After all is done, the temporary folder with the new Roundcube files can be +After all is done, the temporary folder with the new Roundcube files can be removed again. +WARNING: Make sure files have proper owner/group for your setup. If you use + tar to extract the package, `--no-same-owner` option might be helpful. WARNING: See Post-Upgrade Activities section below. Updating manually ----------------- -If you don't have shell access to the Roundcube installation or if not running +If you don't have shell access to the Roundcube installation or if not running it on a unix system, you need to do the following operations by hand: 1. Replace index.php and all files in @@ -53,7 +55,8 @@ - run `php composer.phar install --no-dev`. 4c. If you use git sources or the release package without dependencies update javascript dependencies by executing `bin/install-jsdeps.sh` script. -4d. If you use git sources compile css files for the Elastic skin: +4d. If you use git sources compile css files for the Elastic skin (required + lessc >= 1.5.0): $ cd skins/elastic $ lessc -x styles/styles.less > styles/styles.css $ lessc -x styles/print.less > styles/print.css
View file
roundcubemail-1.4-rc2.12.tar.gz/bin/install-jsdeps.sh -> roundcubemail-1.4.1.27.tar.gz/bin/install-jsdeps.sh
Changed
@@ -237,7 +237,7 @@ echo "Extracting files $pattern into $destdir\n"; exec(sprintf('%s -o %s %s -d %s', $UNZIP, escapeshellarg($srcfile), escapeshellarg($pattern), $destdir), $out, $retval); if ($retval !== 0) { - rcube::raise_error("Failed to unpack $pattern; " . join('; ' . $out)); + rcube::raise_error("Failed to unpack $pattern; " . implode('; ' . $out)); } } } @@ -258,22 +258,35 @@ foreach ($package['map'] as $src => $dest) { echo "Installing $sourcedir/$src into $destdir/$dest\n"; + $dest_file = $destdir . '/' . $dest; + $src_file = $sourcedir . '/' . $src; + // make sure the destination's parent directory exists if (strpos($dest, '/') !== false) { - $parentdir = dirname($destdir . '/' . $dest); + $parentdir = dirname($dest_file); if (!is_dir($parentdir)) { mkdir($parentdir, 0775, true); } } // avoid copying source directory as a child into destination - if (is_dir($sourcedir . '/' . $src) && is_dir($destdir . '/' . $dest)) { - exec(sprintf('rm -rf %s/%s', $destdir, $dest)); + if (is_dir($src_file) && is_dir($dest_file)) { + exec(sprintf('rm -rf %s', $dest_file)); } - exec(sprintf('mv -f %s/%s %s/%s', $sourcedir, $src, $destdir, $dest), $out, $retval); + exec(sprintf('mv -f %s %s', $src_file, $dest_file), $out, $retval); if ($retval !== 0) { - rcube::raise_error("Failed to move $src into $destdir/$dest; " . join('; ' . $out)); + rcube::raise_error("Failed to move $src into $dest_file; " . implode('; ' . $out)); + } + // Remove sourceMappingURL + else if (isset($package['sourcemap']) && $package['sourcemap'] === false) { + if ($content = file($dest_file)) { + $index = count($content); + if (preg_match('|sourceMappingURL=|', $content[$index-1])) { + array_pop($content); + file_put_contents($dest_file, implode('', $content)); + } + } } } @@ -285,7 +298,7 @@ echo "Extracting zip archive into $destdir\n"; exec(sprintf('%s -o %s -d %s', $UNZIP, escapeshellarg($srcfile), $destdir), $out, $retval); if ($retval !== 0) { - rcube::raise_error("Failed to unzip $srcfile; " . join('; ' . $out)); + rcube::raise_error("Failed to unzip $srcfile; " . implode('; ' . $out)); } }
View file
roundcubemail-1.4-rc2.12.tar.gz/bin/installto.sh -> roundcubemail-1.4.1.27.tar.gz/bin/installto.sh
Changed
@@ -34,7 +34,7 @@ // read version from iniset.php $iniset = @file_get_contents($target_dir . '/program/include/iniset.php'); -if (!preg_match('/define\(.RCMAIL_VERSION.,\s*.([0-9.]+[a-z-]*)/', $iniset, $m)) +if (!preg_match('/define\(.RCMAIL_VERSION.,\s*.([0-9.]+[a-z0-9-]*)/', $iniset, $m)) rcube::raise_error("No valid Roundcube installation found at $target_dir", false, true); $oldversion = $m[1];
View file
roundcubemail-1.4-rc2.12.tar.gz/bin/update.sh -> roundcubemail-1.4.1.27.tar.gz/bin/update.sh
Changed
@@ -29,7 +29,7 @@ if (!$opts['version']) { echo "What version are you upgrading from? Type '?' if you don't know.\n"; - if (($input = trim(fgets(STDIN))) && preg_match('/^[0-9.]+[a-z-]*$/', $input)) { + if (($input = trim(fgets(STDIN))) && preg_match('/^[0-9.]+[a-z0-9-]*$/', $input)) { $opts['version'] = $input; } else { @@ -43,7 +43,7 @@ if ($RCI->configured) { $success = true; - if (($messages = $RCI->check_config()) || $RCI->legacy_config) { + if (($messages = $RCI->check_config($opts['version'])) || $RCI->legacy_config) { $success = false; $err = 0; @@ -56,8 +56,6 @@ echo "- '" . $msg['prop'] . "' was replaced by '" . $msg['replacement'] . "'\n"; $err++; } - - echo "\n"; } // list obsolete config options (just a notice) @@ -70,8 +68,6 @@ echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n"; $err++; } - - echo "\n"; } if (!$err && $RCI->legacy_config) { @@ -137,6 +133,15 @@ } } + // list of config options with changed default (just a notice) + if (!empty($messages['defaults'])) { + echo "WARNING: Changed defaults (These config options have new default values):\n"; + + foreach ($messages['defaults'] as $opt) { + echo "- '{$opt}'\n"; + } + } + // check dependencies based on the current configuration if (is_array($messages['dependencies'])) { echo "WARNING: Dependency check failed!\n";
View file
roundcubemail-1.4-rc2.12.tar.gz/config/config.inc.php.sample -> roundcubemail-1.4.1.27.tar.gz/config/config.inc.php.sample
Changed
@@ -40,8 +40,8 @@ $config['default_host'] = 'localhost'; // SMTP server host (for sending mails). -// Enter hostname with prefix tls:// to use STARTTLS, or use -// prefix ssl:// to use the deprecated SSL over SMTP (aka SMTPS) +// Enter hostname with prefix ssl:// to use Implicit TLS, or use +// prefix tls:// to use STARTTLS. // Supported replacement variables: // %h - user's IMAP hostname // %n - hostname ($_SERVER['SERVER_NAME']) @@ -51,8 +51,7 @@ // For example %n = mail.domain.tld, %t = domain.tld $config['smtp_server'] = 'localhost'; -// SMTP port (default is 25; use 587 for STARTTLS or 465 for the -// deprecated SSL over SMTP (aka SMTPS)) +// SMTP port. Use 25 for cleartext, 465 for Implicit TLS, or 587 for STARTTLS (default) $config['smtp_port'] = 587; // SMTP username (if required) if you use %u as the username Roundcube @@ -83,4 +82,4 @@ ); // skin name: folder from skins/ -$config['skin'] = 'larry'; +$config['skin'] = 'elastic';
View file
roundcubemail-1.4-rc2.12.tar.gz/config/defaults.inc.php -> roundcubemail-1.4.1.27.tar.gz/config/defaults.inc.php
Changed
@@ -257,8 +257,8 @@ // ---------------------------------- // SMTP server host (for sending mails). -// Enter hostname with prefix tls:// to use STARTTLS, or use -// prefix ssl:// to use the deprecated SSL over SMTP (aka SMTPS) +// Enter hostname with prefix ssl:// to use Implicit TLS, or use +// prefix tls:// to use STARTTLS. // Supported replacement variables: // %h - user's IMAP hostname // %n - hostname ($_SERVER['SERVER_NAME']) @@ -268,7 +268,7 @@ // For example %n = mail.domain.tld, %t = domain.tld $config['smtp_server'] = 'localhost'; -// SMTP port (default is 587) +// SMTP port. Use 25 for cleartext, 465 for Implicit TLS, or 587 for STARTTLS (default) $config['smtp_port'] = 587; // SMTP username (if required) if you use %u as the username Roundcube @@ -390,16 +390,37 @@ // PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE! $config['support_url'] = ''; -// replace Roundcube logo with this image -// specify an URL relative to the document root of this Roundcube installation -// an array can be used to specify different logos for specific template files -// '*' for default logo -// ':favicon' for favicon -// ':print' for logo on all print templates (e.g. messageprint, contactprint) -// ':small' for small screen logo in Elastic -// different logos can be specified for different skins by prefixing the skin name to the array key -// config applied in order: <skin>:<template>, <skin>:*, <template>, * -// for example array("*" => "/images/roundcube_logo.png", "messageprint" => "/images/roundcube_logo_print.png", "elastic:*" => "/images/logo.png") +// Logo image replacement. Specifies location of the image as: +// - URL relative to the document root of this Roundcube installation +// - full URL with http:// or https:// prefix +// - URL relative to the current skin folder (when starts with a '/') +// +// An array can be used to specify different logos for specific template files +// The array key specifies the place(s) the logo should be applied to and +// is made up of (up to) 3 parts: +// - skin name prefix (always with colon, can be replaced with *) +// - template name (or * for all templates) +// - logo type - it is used for logos used on multiple templates +// the available types include '[favicon]' for favicon, '[print]' for logo on all print +// templates (e.g. messageprint, contactprint) and '[small]' for small screen logo in supported skins +// +// Example config for skin_logo +/* + array( + // show the image /images/logo_login_small.png for the Login screen in the Elastic skin on small screens + "elastic:login[small]" => "/images/logo_login_small.png", + // show the image /images/logo_login.png for the Login screen in the Elastic skin + "elastic:login" => "/images/logo_login.png", + // show the image /images/logo_small.png in the Elastic skin + "elastic:*[small]" => "/images/logo_small.png", + // show the image /images/larry.png in the Larry skin + "larry:*" => "/images/larry.png", + // show the image /images/logo_login.png on the login template in all skins + "login" => "/images/logo_login.png", + // show the image /images/logo_print.png for all print type logos in all skins + "[print]" => "/images/logo_print.png", + ); +*/ $config['skin_logo'] = null; // automatically create a new Roundcube user when log-in the first time. @@ -1059,7 +1080,7 @@ $config['default_charset'] = 'ISO-8859-1'; // skin name: folder from skins/ -$config['skin'] = 'larry'; +$config['skin'] = 'elastic'; // limit skins available/shown in the settings section $config['skins_allowed'] = array();
View file
roundcubemail-1.4-rc2.12.tar.gz/index.php -> roundcubemail-1.4.1.27.tar.gz/index.php
Changed
@@ -2,7 +2,7 @@ /** +-------------------------------------------------------------------------+ | Roundcube Webmail IMAP Client | - | Version 1.4-git | + | Version 1.4.1 | | | | Copyright (C) The Roundcube Dev Team | | | @@ -234,7 +234,8 @@ $plugin = $RCMAIL->plugins->exec_hook('unauthenticated', array( 'task' => 'login', 'error' => $session_error, - 'http_code' => !$session_error ? 401 : 200 + // Return 401 only on failed logins (#7010) + 'http_code' => empty($session_error) && !empty($error_message) ? 401 : 200 )); $RCMAIL->set_task($plugin['task']);
View file
roundcubemail-1.4-rc2.12.tar.gz/installer/check.php -> roundcubemail-1.4.1.27.tar.gz/installer/check.php
Changed
@@ -31,6 +31,7 @@ 'PDO' => 'PDO', 'Multibyte' => 'mbstring', 'OpenSSL' => 'openssl', + 'Ctype' => 'ctype', ); $optional_php_exts = array( @@ -87,6 +88,7 @@ 'GD' => 'http://www.php.net/manual/en/book.image.php', 'Imagick' => 'http://www.php.net/manual/en/book.imagick.php', 'Zip' => 'http://www.php.net/manual/en/book.zip.php', + 'Ctype' => 'http://www.php.net/manual/en/book.ctype.php', 'pdo_mysql' => 'http://www.php.net/manual/en/ref.pdo-mysql.php', 'pdo_pgsql' => 'http://www.php.net/manual/en/ref.pdo-pgsql.php', 'pdo_sqlite' => 'http://www.php.net/manual/en/ref.pdo-sqlite.php',
View file
roundcubemail-1.4-rc2.12.tar.gz/installer/index.php -> roundcubemail-1.4.1.27.tar.gz/installer/index.php
Changed
@@ -3,7 +3,7 @@ /** +-------------------------------------------------------------------------+ | Roundcube Webmail setup tool | - | Version 1.4-git | + | Version 1.4.1 | | | | Copyright (C) The Roundcube Dev Team | | |
View file
roundcubemail-1.4-rc2.12.tar.gz/installer/test.php -> roundcubemail-1.4.1.27.tar.gz/installer/test.php
Changed
@@ -152,15 +152,15 @@ // initialize db with schema found in /SQL/* if ($db_working && $_POST['initdb']) { - if (!($success = $RCI->init_db($DB))) { + if (!$RCI->init_db($DB)) { $db_working = false; echo '<p class="warning">Please try to inizialize the database manually as described in the INSTALL guide. - Make sure that the configured database extists and that the user as write privileges</p>'; + Make sure that the configured database extists and that the user as write privileges</p>'; } } else if ($db_working && $_POST['updatedb']) { - if (!($success = $RCI->update_db($_POST['version']))) { + if (!$RCI->update_db($_POST['version'])) { echo '<p class="warning">Database schema update failed.</p>'; } } @@ -189,6 +189,9 @@ // more database tests if ($db_working) { + // Using transactions to workaround SQLite bug (#7064) + $DB->startTransaction(); + // write test $insert_id = md5(uniqid()); $db_write = $DB->query("INSERT INTO " . $DB->quote_identifier($RCI->config['db_prefix'] . 'session') @@ -204,6 +207,9 @@ } echo '<br />'; + // Transaction end + $DB->rollbackTransaction(); + // check timezone settings $tz_db = 'SELECT ' . $DB->unixtimestamp($DB->now()) . ' AS tz_db'; $tz_db = $DB->query($tz_db);
View file
roundcubemail-1.4-rc2.12.tar.gz/jsdeps.json -> roundcubemail-1.4.1.27.tar.gz/jsdeps.json
Changed
@@ -94,6 +94,7 @@ "sha1": "ee9e9d6bbbb6181dc519778af2b38804a6aa62a4", "license": "MIT", "flat": true, + "sourcemap": false, "map": { "bootstrap.bundle.min.js": "bootstrap.bundle.min.js", "bootstrap.min.css": "bootstrap.min.css"
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/acl/tests/Acl.php -> roundcubemail-1.4.1.27.tar.gz/plugins/acl/tests/Acl.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new acl($rcube->api); + $plugin = new acl($rcube->plugins); $this->assertInstanceOf('acl', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/additional_message_headers/tests/AdditionalMessageHeaders.php -> roundcubemail-1.4.1.27.tar.gz/plugins/additional_message_headers/tests/AdditionalMessageHeaders.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new additional_message_headers($rcube->api); + $plugin = new additional_message_headers($rcube->plugins); $this->assertInstanceOf('additional_message_headers', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/archive/archive.js -> roundcubemail-1.4.1.27.tar.gz/plugins/archive/archive.js
Changed
@@ -26,14 +26,15 @@ if (!post_data._uid) return; - rcmail.show_contentframe(false); - // Disable message command buttons until a message is selected rcmail.enable_command(rcmail.env.message_commands, false); rcmail.enable_command('plugin.archive', false); // let the server sort the messages to the according subfolders rcmail.with_selected_messages('move', post_data, null, 'plugin.move2archive'); + + // Reset preview (must be after with_selected_messages() call) + rcmail.show_contentframe(false); } function rcmail_is_archive() @@ -65,16 +66,16 @@ else li = rcmail.get_folder_li(rcmail.env.archive_folder, '', true); - if (li) { + if (li) $(li).addClass('archive'); - // in folder selector popup - rcmail.addEventListener('menu-open', function(p) { - if (p.name == 'folder-selector') { - $('a[rel="' + $('a', li).attr('rel') + '"]', p.obj).parent().addClass('archive'); - } - }); - } + // in folder selector popup + rcmail.addEventListener('menu-open', function(p) { + if (p.name == 'folder-selector') { + var search = rcmail.env.archive_folder; + $('a', p.obj).filter(function() { return $(this).data('id') == search; }).parent().addClass('archive'); + } + }); } }); }
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/archive/composer.json -> roundcubemail-1.4.1.27.tar.gz/plugins/archive/composer.json
Changed
@@ -3,7 +3,7 @@ "type": "roundcube-plugin", "description": "This adds a button to move the selected messages to an archive folder. The folder (and the optional structure of subfolders) can be selected in the settings panel.", "license": "GPLv3+", - "version": "3.3", + "version": "3.4", "authors": [ { "name": "Thomas Bruederli",
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/archive/tests/Archive.php -> roundcubemail-1.4.1.27.tar.gz/plugins/archive/tests/Archive.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new archive($rcube->api); + $plugin = new archive($rcube->plugins); $this->assertInstanceOf('archive', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4.1.27.tar.gz/plugins/attachment_reminder/tests
Added
+(directory)
View file
roundcubemail-1.4.1.27.tar.gz/plugins/attachment_reminder/tests/AttachmentReminder.php
Added
@@ -0,0 +1,23 @@ +<?php + +class AttachmentReminder_Plugin extends PHPUnit_Framework_TestCase +{ + + function setUp() + { + include_once __DIR__ . '/../attachment_reminder.php'; + } + + /** + * Plugin object construction test + */ + function test_constructor() + { + $rcube = rcube::get_instance(); + $plugin = new attachment_reminder($rcube->plugins); + + $this->assertInstanceOf('attachment_reminder', $plugin); + $this->assertInstanceOf('rcube_plugin', $plugin); + } +} +
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/autologon/tests/Autologon.php -> roundcubemail-1.4.1.27.tar.gz/plugins/autologon/tests/Autologon.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new autologon($rcube->api); + $plugin = new autologon($rcube->plugins); $this->assertInstanceOf('autologon', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/database_attachments/tests/DatabaseAttachments.php -> roundcubemail-1.4.1.27.tar.gz/plugins/database_attachments/tests/DatabaseAttachments.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new database_attachments($rcube->api); + $plugin = new database_attachments($rcube->plugins); $this->assertInstanceOf('database_attachments', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/debug_logger/tests/DebugLogger.php -> roundcubemail-1.4.1.27.tar.gz/plugins/debug_logger/tests/DebugLogger.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new debug_logger($rcube->api); + $plugin = new debug_logger($rcube->plugins); $this->assertInstanceOf('debug_logger', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/emoticons/tests/Emoticons.php -> roundcubemail-1.4.1.27.tar.gz/plugins/emoticons/tests/Emoticons.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new emoticons($rcube->api); + $plugin = new emoticons($rcube->plugins); $this->assertInstanceOf('emoticons', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4.1.27.tar.gz/plugins/enigma/bin
Added
+(directory)
View file
roundcubemail-1.4.1.27.tar.gz/plugins/enigma/bin/import_keys.sh
Added
@@ -0,0 +1,188 @@ +#!/usr/bin/env php +<?php +/* + +-----------------------------------------------------------------------+ + | This file is part of the Roundcube Webmail client | + | | + | Copyright (C) The Roundcube Dev Team | + | Copyright (C) Kolab Systems AG | + | | + | Licensed under the GNU General Public License version 3 or | + | any later version with exceptions for skins & plugins. | + | See the README file for a full license statement. | + | | + | PURPOSE: | + | Import keys from Enigma's homedir into database for multihost | + | support. | + +-----------------------------------------------------------------------+ + | Author: Aleksander Machniak <alec@alec.pl> | + +-----------------------------------------------------------------------+ +*/ + +define('INSTALL_PATH', realpath(__DIR__ . '/../../../') . '/'); + +require INSTALL_PATH . 'program/include/clisetup.php'; + +$rcmail = rcube::get_instance(); + +// get arguments +$args = rcube_utils::get_opt(array( + 'u' => 'user', + 'h' => 'host', + 'd' => 'dir', + 'x' => 'dry-run', +)); + +if ($_SERVER['argv'][1] == 'help') { + print_usage(); + exit; +} + +if (empty($args['dir'])) { + rcube::raise_error("--dir argument is required", true); +} + +$host = get_host($args); +$dirs = array(); + +// Read the homedir and iterate over all subfolders (as users) +if (empty($args['user'])) { + if ($dh = opendir($args['dir'])) { + while (($dir = readdir($dh)) !== false) { + if ($dir != '.' && $dir != '..') { + $dirs[$args['dir'] . '/' . $dir] = $dir; + } + } + closedir($dh); + } +} +// a single user +else { + $dirs = array($args['dir'] => $args['user']); +} + +foreach ($dirs as $dir => $user) { + echo "Importing keys from $dir\n"; + + if ($user_id = get_user_id($user, $host)) { + reset_state($user_id, !empty($args['dry-run'])); + import_dir($user_id, $dir, !empty($args['dry-run'])); + } +} + + +function print_usage() +{ + print "Usage: import.sh [options]\n"; + print "Options:\n"; + print " --user=username User, if not set --dir subfolders will be iterated\n"; + print " --host=host The IMAP hostname or IP the given user is related to\n"; + print " --dir=path Location of the gpg homedir\n"; + print " --dry-run Do nothing, just list found user/files\n"; +} + +function get_host($args) +{ + global $rcmail; + + if (empty($args['host'])) { + $hosts = $rcmail->config->get('default_host', ''); + if (is_string($hosts)) { + $args['host'] = $hosts; + } + else if (is_array($hosts) && count($hosts) == 1) { + $args['host'] = reset($hosts); + } + else { + rcube::raise_error("Specify a host name", true); + } + + // host can be a URL like tls://192.168.12.44 + $host_url = parse_url($args['host']); + if ($host_url['host']) { + $args['host'] = $host_url['host']; + } + } + + return $args['host']; +} + +function get_user_id($username, $host) +{ + global $rcmail; + + $db = $rcmail->get_dbh(); + + // find user in local database + $user = rcube_user::query($username, $host); + + if (empty($user)) { + rcube::raise_error("User does not exist: $username"); + } + + return $user->ID; +} + +function reset_state($user_id, $dry_run = false) +{ + global $rcmail; + + if ($dry_run) { + return; + } + + $db = $rcmail->get_dbh(); + + $db->query("DELETE FROM " . $db->table_name('filestore', true) + . " WHERE `user_id` = ? AND `context` = ?", + $user_id, 'enigma'); +} + +function import_dir($user_id, $dir, $dry_run = false) +{ + global $rcmail; + + $db = $rcmail->get_dbh(); + $table = $db->table_name('filestore', true); + $db_files = array('pubring.gpg', 'secring.gpg', 'pubring.kbx'); + $maxsize = min($db->get_variable('max_allowed_packet', 1048500), 4*1024*1024) - 2000; + + foreach (glob("$dir/private-keys-v1.d/*.key") as $file) { + $db_files[] = substr($file, strlen($dir) + 1); + } + + foreach ($db_files as $file) { + if ($mtime = @filemtime("$dir/$file")) { + $data = file_get_contents("$dir/$file"); + $data = base64_encode($data); + $datasize = strlen($data); + + if ($datasize > $maxsize) { + rcube::raise_error(array( + 'code' => 605, 'line' => __LINE__, 'file' => __FILE__, + 'message' => "Enigma: Failed to save $file. Size exceeds max_allowed_packet." + ), true, false); + + continue; + } + + echo "* $file\n"; + + if ($dry_run) { + continue; + } + + $result = $db->query( + "INSERT INTO $table (`user_id`, `context`, `filename`, `mtime`, `data`)" + . " VALUES(?, 'enigma', ?, ?, ?)", + $user_id, $file, $mtime, $data); + + if ($db->is_error($result)) { + rcube::raise_error(array( + 'code' => 605, 'line' => __LINE__, 'file' => __FILE__, + 'message' => "Enigma: Failed to save $file into database." + ), true, false); + } + } + } +}
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/enigma/enigma.js -> roundcubemail-1.4.1.27.tar.gz/plugins/enigma/enigma.js
Changed
@@ -69,7 +69,7 @@ rcmail.addEventListener('beforesend', function(props) { rcmail.enigma_beforesend_handler(props); }) .addEventListener('beforesavedraft', function(props) { rcmail.enigma_beforesavedraft_handler(props); }); - $('input,label', $('#enigmamenu')).mouseup(function(e) { + $('#enigmamenu').find('input,label').mouseup(function(e) { // don't close the menu on mouse click inside e.stopPropagation(); }); @@ -80,7 +80,7 @@ var opt = this, input = $('#enigma' + opt + 'opt'); if (rcmail.env['enigma_force_' + opt]) { - input.prop('checked', true) + input.prop('checked', true); } // Compose status bar in Elastic @@ -503,7 +503,7 @@ { var form = this.gui_objects.messageform; - // copy inputs from enigma menu to the form + // copy inputs from enigma menu to the form (not used in Elastic) $('#enigmamenu input').each(function() { var id = this.id + '_cpy', input = $('#' + id); @@ -514,11 +514,6 @@ input.val(this.checked ? '1' : ''); }); - - // disable signing when saving drafts - if (this.env.last_action == 'savedraft') { - $('input[name="_enigma_sign"]', form).val(0); - } }; // Import attached keys/certs file
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/enigma/localization/is_IS.inc -> roundcubemail-1.4.1.27.tar.gz/plugins/enigma/localization/is_IS.inc
Changed
@@ -61,5 +61,6 @@ $labels['keygenerating'] = 'Útbý dulritunarlykla...'; $labels['encryptmsg'] = 'Dulrita þessi skilaboð'; $labels['keyimportlabel'] = 'Flytja inn úr skrá'; +$labels['managekeys'] = 'Sýsla með PGP-lykla'; $messages['signerror'] = 'Undirritun mistókst.'; ?>
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/enigma/skins/larry/templates/keys.html -> roundcubemail-1.4.1.27.tar.gz/plugins/enigma/skins/larry/templates/keys.html
Changed
@@ -82,7 +82,7 @@ <roundcube:include file="/includes/footer.html" /> -<script type="text/javascript"> +<script> new rcube_splitter({ id:'enigmakeyssplitter', p1:'#enigmakeyslist', p2:'#enigmacontent-box', orientation:'v', relative:true, start:266, min:180, size:12 }).init(); </script>
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/enigma/tests/Enigma.php -> roundcubemail-1.4.1.27.tar.gz/plugins/enigma/tests/Enigma.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new enigma($rcube->api); + $plugin = new enigma($rcube->plugins); $this->assertInstanceOf('enigma', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/example_addressbook/tests/ExampleAddressbook.php -> roundcubemail-1.4.1.27.tar.gz/plugins/example_addressbook/tests/ExampleAddressbook.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new example_addressbook($rcube->api); + $plugin = new example_addressbook($rcube->plugins); $this->assertInstanceOf('example_addressbook', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/filesystem_attachments/tests/FilesystemAttachments.php -> roundcubemail-1.4.1.27.tar.gz/plugins/filesystem_attachments/tests/FilesystemAttachments.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new filesystem_attachments($rcube->api); + $plugin = new filesystem_attachments($rcube->plugins); $this->assertInstanceOf('filesystem_attachments', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/help/tests/Help.php -> roundcubemail-1.4.1.27.tar.gz/plugins/help/tests/Help.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new help($rcube->api); + $plugin = new help($rcube->plugins); $this->assertInstanceOf('help', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/hide_blockquote/tests/HideBlockquote.php -> roundcubemail-1.4.1.27.tar.gz/plugins/hide_blockquote/tests/HideBlockquote.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new hide_blockquote($rcube->api); + $plugin = new hide_blockquote($rcube->plugins); $this->assertInstanceOf('hide_blockquote', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/http_authentication/tests/HttpAuthentication.php -> roundcubemail-1.4.1.27.tar.gz/plugins/http_authentication/tests/HttpAuthentication.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new http_authentication($rcube->api); + $plugin = new http_authentication($rcube->plugins); $this->assertInstanceOf('http_authentication', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/identicon/tests/Identicon.php -> roundcubemail-1.4.1.27.tar.gz/plugins/identicon/tests/Identicon.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new identicon($rcube->api); + $plugin = new identicon($rcube->plugins); $this->assertInstanceOf('identicon', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/identity_select/tests/IdentitySelect.php -> roundcubemail-1.4.1.27.tar.gz/plugins/identity_select/tests/IdentitySelect.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new identity_select($rcube->api); + $plugin = new identity_select($rcube->plugins); $this->assertInstanceOf('identity_select', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/jqueryui/config.inc.php.dist -> roundcubemail-1.4.1.27.tar.gz/plugins/jqueryui/config.inc.php.dist
Changed
@@ -6,7 +6,7 @@ // map Roundcube skins with jquery-ui themes here $config['jquery_ui_skin_map'] = array( 'larry' => 'larry', - 'default' => 'larry', + 'default' => 'elastic', ); ?>
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/jqueryui/jqueryui.php -> roundcubemail-1.4.1.27.tar.gz/plugins/jqueryui/jqueryui.php
Changed
@@ -18,6 +18,10 @@ private static $features = array(); private static $ui_theme; + private static $skin_map = array( + 'larry' => 'larry', + 'default' => 'elastic', + ); public function init() { @@ -35,9 +39,9 @@ // include UI stylesheet $skin = $rcmail->config->get('skin'); - $ui_map = $rcmail->config->get('jquery_ui_skin_map', array()); + $ui_map = $rcmail->config->get('jquery_ui_skin_map', self::$skin_map); $skins = array_keys($rcmail->output->skins); - $skins[] = 'larry'; + $skins[] = 'elastic'; foreach ($skins as $skin) { self::$ui_theme = $ui_theme = $ui_map[$skin] ?: $skin; @@ -111,7 +115,7 @@ $config_str = rcube_output::json_serialize($config); $rcube->output->include_css('plugins/jqueryui/' . $css); - $rcube->output->add_header(html::tag('script', array('type' => 'text/javascript', 'src' => $script))); + $rcube->output->include_script($script, 'head', false); $rcube->output->add_script('$.fn.miniColors = $.fn.minicolors; $("input.colors").minicolors(' . $config_str . ')', 'docready'); $rcube->output->set_env('minicolors_config', $config); } @@ -137,7 +141,7 @@ $rcube->output->include_css('plugins/jqueryui/' . $css); } - $rcube->output->add_header(html::tag('script', array('type' => "text/javascript", 'src' => $script))); + $rcube->output->include_script($script, 'head', false); } /**
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/jqueryui/tests/Jqueryui.php -> roundcubemail-1.4.1.27.tar.gz/plugins/jqueryui/tests/Jqueryui.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new jqueryui($rcube->api); + $plugin = new jqueryui($rcube->plugins); $this->assertInstanceOf('jqueryui', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/krb_authentication/tests/KrbAuthentication.php -> roundcubemail-1.4.1.27.tar.gz/plugins/krb_authentication/tests/KrbAuthentication.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new krb_authentication($rcube->api); + $plugin = new krb_authentication($rcube->plugins); $this->assertInstanceOf('krb_authentication', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/Changelog -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/Changelog
Changed
@@ -1,3 +1,7 @@ +- Replace "Filter disabled" with "Filter enabled" (#7028) +- Fix so modifier type select wasn't hidden after hiding modifier select on header change +- Fix filter selection after removing a first filter (#7079) + * version 9.3 [2019-04-21] ----------------------------------------------------------- - Use RFC-compliant line endings, CRLF instead of LF (#6686)
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
Changed
@@ -698,7 +698,7 @@ $delheader_op = rcube_utils::get_input_value('_action_delheader_op', rcube_utils::INPUT_POST); $delheader_comp = rcube_utils::get_input_value('_action_delheader_comp', rcube_utils::INPUT_POST); - $this->form['disabled'] = !empty($_POST['_disabled']); + $this->form['disabled'] = empty($_POST['_enabled']); $this->form['join'] = $join == 'allof'; $this->form['name'] = $name; $this->form['tests'] = array(); @@ -1508,7 +1508,7 @@ $_SESSION['managesieve-compact-form'] = $compact; // do not allow creation of new rules - if ($fid == null && in_array('new_rule', $this->disabled_actions)) { + if ($fid === null && in_array('new_rule', $this->disabled_actions)) { $this->rc->output->show_message('managesieve.disabledaction', 'error'); return; } @@ -1556,12 +1556,13 @@ $this->filtersets_list(array('id' => 'sievescriptname'), true) ); } - else if ($compact) { - $out .= sprintf("\n" . '<div class="form-group row form-check">' - . '<label for="disabled" class="col-sm-4 col-form-label">%s</label>' - . '<div class="col-sm-8 form-check"><input type="checkbox" id="disabled" name="_disabled" value="1" /></div></div>', - rcube::Q($this->plugin->gettext('filterdisabled'))); - } + + $out .= sprintf("\n" . '<div class="form-group row form-check">' + . '<label for="fenabled" class="col-sm-4 col-form-label">%s</label>' + . '<div class="col-sm-8 form-check">' + . '<input type="checkbox" id="fenabled" name="_enabled" value="1"' . (empty($scr['disabled']) ? ' checked' : '') . ' />' + . '</div></div>', + rcube::Q($this->plugin->gettext('filterenabled'))); if ($compact) { $select = new html_select(array('name' => '_join', 'id' => '_join', @@ -2237,7 +2238,7 @@ 'type' => 'text', 'name' => '_action_interval[' . $id . ']', 'id' => 'action_interval' . $id, - 'value' => rcube_sieve_vacation::vacation_interval($action), + 'value' => rcube_sieve_vacation::vacation_interval($action, $this->exts), 'size' => 2, 'class' => $this->error_class($id, 'action', 'interval', 'action_interval'), ));
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
Changed
@@ -125,7 +125,7 @@ return $this->sieve->error(); } - private function vacation_rule() + protected function vacation_rule() { if ($this->script_name === false || $this->script_name === null || !$this->sieve->load($this->script_name)) { return; @@ -164,7 +164,7 @@ $this->vacation['list'] = $list; } - private function vacation_post() + protected function vacation_post() { if (empty($_POST)) { return; @@ -388,7 +388,7 @@ } } - $interval_txt = $interval->show(self::vacation_interval($this->vacation)); + $interval_txt = $interval->show(self::vacation_interval($this->vacation, $this->exts)); if ($seconds_extension) { $interval_select = new html_select(array('name' => 'vacation_interval_type')); $interval_select->add($this->plugin->gettext('days'), 'days'); @@ -521,7 +521,7 @@ return $out; } - public static function build_regexp_tests($date_from, $date_to, &$error) + protected static function build_regexp_tests($date_from, $date_to, &$error) { $tests = array(); $dt_from = rcube_utils::anytodatetime($date_from); @@ -562,7 +562,7 @@ return $tests; } - public static function parse_regexp_tests($tests) + protected static function parse_regexp_tests($tests) { $rx_from = '/^\(([0-9]{2}).*\)\s([A-Za-z]+)\s([0-9]{4})/'; $rx_to = '/^\(.*([0-9]{2})\)\s([A-Za-z]+)\s([0-9]{4})/'; @@ -588,10 +588,10 @@ /** * Get current vacation interval */ - public static function vacation_interval(&$vacation) + public static function vacation_interval(&$vacation, $extensions = array()) { $rcube = rcube::get_instance(); - $seconds_extension = in_array('vacation-seconds', $this->exts); + $seconds_extension = in_array('vacation-seconds', $extensions); if (isset($vacation['seconds'])) { $interval = $vacation['seconds'];
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/localization/en_US.inc -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/localization/en_US.inc
Changed
@@ -91,6 +91,7 @@ $labels['fromset'] = 'from set'; $labels['fromfile'] = 'from file'; $labels['filterdisabled'] = 'Filter disabled'; +$labels['filterenabled'] = 'Filter enabled'; $labels['countisgreaterthan'] = 'count is greater than'; $labels['countisgreaterthanequal'] = 'count is greater than or equal to'; $labels['countislessthan'] = 'count is less than';
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/localization/is_IS.inc -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/localization/is_IS.inc
Changed
@@ -20,6 +20,7 @@ $labels['newfilter'] = 'Ný sía'; $labels['filteradd'] = 'Bæta við síu'; $labels['filterdel'] = 'Eyða síu'; +$labels['rules'] = 'Reglur'; $labels['actions'] = 'Aðgerðir'; $labels['scope'] = 'Umfang'; $labels['moveup'] = 'Færa upp'; @@ -31,22 +32,43 @@ $labels['filterisnot'] = 'er ekki jafnt og'; $labels['filterexists'] = 'er til'; $labels['filternotexists'] = 'er ekki til'; +$labels['filterunder'] = 'undir'; +$labels['filterover'] = 'yfir'; $labels['mime'] = 'MIME:'; $labels['mimepart'] = 'MIME part:'; $labels['mime-message'] = 'skilaboð'; +$labels['addrule'] = 'Bæta við reglu'; +$labels['delrule'] = 'Eyða reglu'; +$labels['messagemoveto'] = 'Færa skilaboð í'; +$labels['messageredirect'] = 'Endurbeina skilaboðum til'; $labels['messagecopyto'] = 'Afrita skilaboð í'; +$labels['messagesendcopy'] = 'Senda afrit af skilaboðum til'; $labels['messagedelete'] = 'Eyða skilaboðum'; $labels['add'] = 'Bæta við'; $labels['del'] = 'Eyða'; $labels['sender'] = 'Sendandi'; $labels['recipient'] = 'Viðtakandi'; $labels['vacationaddr'] = 'Tölvupóstföngin mín:'; +$labels['vacationsubject'] = 'Meginmál skilaboða:'; $labels['days'] = 'dagar'; $labels['seconds'] = 'sekúndur'; +$labels['enable'] = 'Gera virkt/óvirkt'; +$labels['active'] = 'virkt'; +$labels['none'] = 'ekkert'; $labels['flagread'] = 'Lesið'; $labels['flagdeleted'] = 'Eytt'; +$labels['flaganswered'] = 'Svarað'; $labels['flagflagged'] = 'Flaggað'; $labels['flagdraft'] = 'Drög'; +$labels['varlower'] = 'lágstafa'; +$labels['varupper'] = 'hástafa'; +$labels['varlowerfirst'] = 'fyrsti stafur lágstafur'; +$labels['varupperfirst'] = 'fyrsti stafur hástafur'; +$labels['varlength'] = 'lengd'; +$labels['notifyimportance'] = 'Mikilvægi:'; +$labels['notifyimportancelow'] = 'lítið'; +$labels['notifyimportancenormal'] = 'venjulegt'; +$labels['notifyimportancehigh'] = 'mikið'; $labels['notifymethodmailto'] = 'Tölvupóstfang'; $labels['notifymethodtel'] = 'Sími'; $labels['notifymethodsms'] = 'SMS'; @@ -78,22 +100,29 @@ $labels['user'] = 'notandi'; $labels['detail'] = 'nánar'; $labels['indexlast'] = 'afturábak'; +$labels['vacation'] = 'Ekki í vinnunni'; $labels['vacation.reply'] = 'Svarskilaboð'; $labels['vacation.advanced'] = 'Flóknari stillingar'; $labels['vacation.subject'] = 'Viðfangsefni'; $labels['vacation.body'] = 'Meginmál'; +$labels['vacation.start'] = 'Upphafstími'; +$labels['vacation.end'] = 'Lokatími'; $labels['vacation.status'] = 'Staða'; $labels['vacation.on'] = 'Kveikt'; $labels['vacation.off'] = 'Slökkt'; +$labels['vacation.addresses'] = 'Tölvupóstföngin mín'; $labels['vacation.saving'] = 'Vista gögn...'; $labels['vacation.keep'] = 'Halda'; $labels['vacation.discard'] = 'Henda'; $labels['vacation.redirect'] = 'Endurbeina til'; $labels['vacation.copy'] = 'Senda afrit á'; +$labels['forward'] = 'Áframsending'; $labels['forward.redirect'] = 'Endurbeina til'; $labels['forward.copy'] = 'Senda afrit á'; $labels['forward.on'] = 'Kveikt'; $labels['forward.off'] = 'Slökkt'; +$labels['forward.status'] = 'Staða:'; $labels['forward.saving'] = 'Vista gögn...'; $labels['message'] = 'Skilaboð'; +$messages['nametoolong'] = 'Nafn er of langt.'; $messages['namereserved'] = 'Nafn er frátekið.';
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/managesieve.js -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/managesieve.js
Changed
@@ -104,9 +104,6 @@ $('tr', rcmail.gui_objects.filtersetslist).each(function (i, e) { rcmail.managesieve_fixdragend(e); }); } } - - if (rcmail.gui_objects.sieveform && rcmail.env.rule_disabled) - $('#disabled').attr('checked', true); }); }; @@ -276,7 +273,7 @@ // update row id if (rowid > id) { - this.uid = rowid - 1; + this.uid = String(rowid - 1); $(this).attr('id', 'rcmrow' + this.uid); } }); @@ -295,7 +292,7 @@ else row.removeClass('disabled'); - $('#disabled', $('iframe').contents()).prop('checked', o.disabled); + $('#fenabled', $('iframe').contents()).prop('checked', !o.disabled); break; @@ -426,13 +423,11 @@ if (reset) this.reset_filters_list(); - if (this.env.contentframe && window.frames && window.frames[this.env.contentframe]) { - var lock = this.set_busy(true, 'loading'), - target = window.frames[this.env.contentframe]; + var target = this.get_frame_window(this.env.contentframe), + url = this.url('plugin.managesieve-action', '_framed=1' + (add_url ? ('&' + add_url) : '')); - target.location.href = this.env.comm_path - + '&_action=plugin.managesieve-action&_framed=1&_unlock=' + lock - + (add_url ? ('&' + add_url) : ''); + if (target) { + this.location_href(url, target, true); } }; @@ -684,7 +679,7 @@ rule.val('contains'); rule_op_select(op, id, h); - rule_mod_select(id, h); + rule_mod_select(id, h, !is_header); rule_mime_select(id); obj.style.width = h == '...' ? '40px' : ''; @@ -708,13 +703,16 @@ target.style.display = obj.value != 'content' ? 'none' : 'inline'; }; -function rule_mod_select(id, header) +function rule_mod_select(id, header, reset) { var obj = document.getElementById('rule_mod_op' + id), target = document.getElementById('rule_mod_type' + id), duplicate = document.getElementById('rule_duplicate_div' + id), index = document.getElementById('rule_index_div' + id); + if (reset) + obj.value = ''; + if (!header) header = document.getElementById('header' + id).value;
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/skins/classic/managesieve.css -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/skins/classic/managesieve.css
Changed
@@ -1,5 +1,4 @@ -#filtersetslistbox -{ +#filtersetslistbox { position: absolute; top: 0; bottom: 0; @@ -10,8 +9,7 @@ overflow: hidden; } -#filtersscreen -{ +#filtersscreen { position: absolute; top: 0; right: 0; @@ -19,13 +17,11 @@ left: 205px; } -#filtersscreen.nosetlist -{ +#filtersscreen.nosetlist { left: 0; } -#filterslistbox -{ +#filterslistbox { position: absolute; left: 0; top: 0; @@ -35,34 +31,29 @@ } #filterslist, -#filtersetslist -{ +#filtersetslist { width: 100%; table-layout: fixed; } #filterslist tbody td, -#filtersetslist tbody td -{ +#filtersetslist tbody td { cursor: default; text-overflow: ellipsis; -o-text-overflow: ellipsis; } #filterslist tbody tr.disabled td, -#filtersetslist tbody tr.disabled td -{ +#filtersetslist tbody tr.disabled td { color: #999999; - text-decoration: line-through; + text-decoration: line-through; } -#filtersetslist tbody td -{ +#filtersetslist tbody td { font-weight: bold; } /* -#filtersetslist tr.selected -{ +#filtersetslist tr.selected { background-color: #929292; border-bottom: 1px solid #898989; color: #FFF; @@ -70,20 +61,17 @@ } */ -#filterslist tbody tr.filtermoveup td -{ +#filterslist tbody tr.filtermoveup td { border-top: 2px dotted #555; padding-top: 0px; } -#filterslist tbody tr.filtermovedown td -{ +#filterslist tbody tr.filtermovedown td { border-bottom: 2px dotted #555; padding-bottom: 1px; } -#filter-box -{ +#filter-box { position: absolute; top: 0; right: 0; @@ -92,37 +80,39 @@ overflow: hidden; } -#filter-frame -{ +#filter-frame { border: none; } -body.iframe -{ +body.iframe { min-width: 620px; width: expression(Math.max(620, document.documentElement.clientWidth)+'px'); background-color: #F2F2F2; } -#filter-form -{ +#filter-form { min-width: 550px; width: expression(Math.max(550, document.documentElement.clientWidth)+'px'); white-space: nowrap; padding: 20px 10px 10px 10px; } -#filter-form legend, #filter-form label -{ +#filter-form legend, +#filter-form label { color: #666666; } -filter-form .col-form-label { +#filter-form .col-sm-4, +#filter-form .col-form-label { display: inline-block; - min-width: 75px; + min-width: 100px; line-height: 2.5; } +#filter-form input[type=checkbox] { + margin: 0; +} + #filter-form .col-form-label + div { display: inline; } @@ -131,48 +121,45 @@ margin: 0; } -#rules, #actions -{ +#rules, +#actions { margin-top: 5px; padding: 0; border-collapse: collapse; } -div.rulerow, div.actionrow -{ +div.rulerow, +div.actionrow { width: auto; padding: 2px; white-space: nowrap; border: 1px solid #F2F2F2; } -div.rulerow:hover, div.actionrow:hover -{ +div.rulerow:hover, +div.actionrow:hover { padding: 2px; white-space: nowrap; background: #F9F9F9; border: 1px solid silver; } -div.rulerow table, div.actionrow table -{ +div.rulerow table, +div.actionrow table { padding: 0px; min-width: 600px; width: expression(Math.max(600, document.documentElement.clientWidth)+'px'); } -td -{ +td { vertical-align: top; } -td.advbutton -{ +td.advbutton { width: 1%;
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/skins/classic/managesieve_mail.css -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/skins/classic/managesieve_mail.css
Changed
@@ -51,12 +51,10 @@ font-weight: bold; } -#managesieve-tip -{ +#managesieve-tip { z-index: 100000; } -span.sieve.error -{ +span.sieve.error { color: red; }
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/skins/classic/templates/filteredit.html -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/skins/classic/templates/filteredit.html
Changed
@@ -17,10 +17,6 @@ <div class="footerleft"> <roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" /> </div> -<div class="footerright"> -<label for="disabled"><roundcube:label name="managesieve.filterdisabled" /></label> -<input type="checkbox" id="disabled" name="_disabled" value="1" /> -</div> </div> <roundcube:endif />
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/skins/larry/managesieve.css -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/skins/larry/managesieve.css
Changed
@@ -95,8 +95,8 @@ padding: 20px 10px 10px 10px; } -#filter-form legend, #filter-form label -{ +#filter-form legend, +#filter-form label { color: #666666; vertical-align: middle; } @@ -105,12 +105,17 @@ border: none; } +#filter-form .col-sm-4, #filter-form .col-form-label { display: inline-block; - min-width: 75px; + min-width: 100px; line-height: 2.5; } +#filter-form input[type=checkbox] { + margin: 0; +} + #filter-form .col-form-label + div { display: inline; } @@ -352,6 +357,7 @@ vertical-align: middle; max-width: 280px; } + /* revert larry style button */ #filter-form input.button {
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/skins/larry/templates/filteredit.html -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/skins/larry/templates/filteredit.html
Changed
@@ -16,10 +16,6 @@ <div id="footer"> <div class="footerleft formbuttons"> <roundcube:button command="plugin.managesieve-save" type="input" class="button mainaction" label="save" /> -<label for="disabled"> -<input type="checkbox" id="disabled" name="_disabled" value="1" /> -<roundcube:label name="managesieve.filterdisabled" /> -</label> </div> </div> <roundcube:endif />
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/skins/larry/templates/managesieve.html -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/skins/larry/templates/managesieve.html
Changed
@@ -73,7 +73,7 @@ <roundcube:include file="/includes/footer.html" /> -<script type="text/javascript"> +<script> <roundcube:if condition="!env:managesieve_no_set_list" /> new rcube_splitter({ id:'managesievesplitter1', p1:'#filtersetslistbox', p2:'#filtersscreen', orientation:'v', relative:true, start:156, min:120, size:12 }).init();
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/tests/Managesieve.php -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/tests/Managesieve.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new managesieve($rcube->api); + $plugin = new managesieve($rcube->plugins); $this->assertInstanceOf('managesieve', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/managesieve/tests/Vacation.php -> roundcubemail-1.4.1.27.tar.gz/plugins/managesieve/tests/Vacation.php
Changed
@@ -10,6 +10,25 @@ } /** + * Call protected/private method of rcube_sieve_vacation object. + * + * @param string $methodName Method name to call + * @param array $parameters Array of parameters to pass into method. + * + * @return mixed Method return. + */ + public function invokePrivateMethod($methodName, array $parameters = array()) + { + $vacation = new rcube_sieve_vacation(true); + $reflection = new ReflectionClass('rcube_sieve_vacation'); + + $method = $reflection->getMethod($methodName); + $method->setAccessible(true); + + return $method->invokeArgs($vacation, $parameters); + } + + /** * Plugin object construction test */ function test_constructor() @@ -21,7 +40,7 @@ function test_build_regexp_tests() { - $tests = rcube_sieve_vacation::build_regexp_tests('2014-02-20', '2014-03-05', $error); + $tests = $this->invokePrivateMethod('build_regexp_tests', array('2014-02-20', '2014-03-05', &$error)); $this->assertCount(2, $tests); $this->assertSame('header', $tests[0]['test']); @@ -33,7 +52,7 @@ $this->assertSame('received', $tests[1]['arg1']); $this->assertSame('([ 0]1|[ 0]2|[ 0]3|[ 0]4|[ 0]5) Mar 2014', $tests[1]['arg2']); - $tests = rcube_sieve_vacation::build_regexp_tests('2014-02-20', '2014-01-05', $error); + $tests = $this->invokePrivateMethod('build_regexp_tests', array('2014-02-20', '2014-01-05', &$error)); $this->assertSame(null, $tests); $this->assertSame('managesieve.invaliddateformat', $error); @@ -56,7 +75,7 @@ ) ); - $result = rcube_sieve_vacation::parse_regexp_tests($tests); + $result = $this->invokePrivateMethod('parse_regexp_tests', array($tests)); $this->assertCount(2, $result); $this->assertSame('20 Feb 2014', $result['from']);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/markasjunk/tests/Markasjunk.php -> roundcubemail-1.4.1.27.tar.gz/plugins/markasjunk/tests/Markasjunk.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new markasjunk($rcube->api); + $plugin = new markasjunk($rcube->plugins); $this->assertInstanceOf('markasjunk', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/new_user_dialog/tests/NewUserDialog.php -> roundcubemail-1.4.1.27.tar.gz/plugins/new_user_dialog/tests/NewUserDialog.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new new_user_dialog($rcube->api); + $plugin = new new_user_dialog($rcube->plugins); $this->assertInstanceOf('new_user_dialog', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/new_user_identity/tests/NewUserIdentity.php -> roundcubemail-1.4.1.27.tar.gz/plugins/new_user_identity/tests/NewUserIdentity.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new new_user_identity($rcube->api); + $plugin = new new_user_identity($rcube->plugins); $this->assertInstanceOf('new_user_identity', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/newmail_notifier/tests/NewmailNotifier.php -> roundcubemail-1.4.1.27.tar.gz/plugins/newmail_notifier/tests/NewmailNotifier.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new newmail_notifier($rcube->api); + $plugin = new newmail_notifier($rcube->plugins); $this->assertInstanceOf('newmail_notifier', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/password/config.inc.php.dist -> roundcubemail-1.4.1.27.tar.gz/plugins/password/config.inc.php.dist
Changed
@@ -6,8 +6,7 @@ // See README file for list of supported driver names. $config['password_driver'] = 'sql'; -// A driver to use for checking password strength. Default: null. -// Set password_check_strength to true to enable +// A driver to use for checking password strength. Default: null (disabled). // See README file for list of supported driver names. $config['password_strength_driver'] = null;
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/password/drivers/kpasswd.php -> roundcubemail-1.4.1.27.tar.gz/plugins/password/drivers/kpasswd.php
Changed
@@ -19,8 +19,8 @@ { public function save($currpass, $newpass, $username) { - $bin = rcmail::get_instance()->config->get('password_kpasswd_cmd', '/usr/bin/kpasswd'); - $cmd = $bin . ' "' . escapeshellarg($username) . '" 2>&1'; + $bin = rcmail::get_instance()->config->get('password_kpasswd_cmd', '/usr/bin/kpasswd'); + $cmd = $bin . ' ' . escapeshellarg($username) . ' 2>&1'; $handle = popen($cmd, "w"); fwrite($handle, $currpass."\n");
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/password/drivers/pw_usermod.php -> roundcubemail-1.4.1.27.tar.gz/plugins/password/drivers/pw_usermod.php
Changed
@@ -32,7 +32,7 @@ { public function save($currpass, $newpass, $username) { - $cmd = rcmail::get_instance()->config->get('password_pw_usermod_cmd'); + $cmd = rcmail::get_instance()->config->get('password_pw_usermod_cmd', 'sudo /usr/sbin/pw usermod -h 0 -n'); $cmd .= ' ' . escapeshellarg($username) . ' > /dev/null'; $handle = popen($cmd, 'w');
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/password/drivers/smb.php -> roundcubemail-1.4.1.27.tar.gz/plugins/password/drivers/smb.php
Changed
@@ -41,11 +41,11 @@ public function save($currpass, $newpass, $username) { - $host = rcmail::get_instance()->config->get('password_smb_host','localhost'); - $bin = rcmail::get_instance()->config->get('password_smb_cmd','/usr/bin/smbpasswd'); + $host = rcmail::get_instance()->config->get('password_smb_host', 'localhost'); + $bin = rcmail::get_instance()->config->get('password_smb_cmd', '/usr/bin/smbpasswd'); $host = rcube_utils::parse_host($host); - $tmpfile = tempnam(sys_get_temp_dir(),'smb'); - $cmd = $bin . ' -r ' . escapeshellarg($host) . ' -s -U "' . escapeshellarg($username) . '" > ' . $tmpfile . ' 2>&1'; + $tmpfile = tempnam(sys_get_temp_dir(), 'smb'); + $cmd = $bin . ' -r ' . escapeshellarg($host) . ' -s -U ' . escapeshellarg($username) . ' > ' . $tmpfile . ' 2>&1'; $handle = @popen($cmd, 'w'); fwrite($handle, $currpass."\n");
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/password/tests/Password.php -> roundcubemail-1.4.1.27.tar.gz/plugins/password/tests/Password.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new password($rcube->api); + $plugin = new password($rcube->plugins); $this->assertInstanceOf('password', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/redundant_attachments/tests/RedundantAttachments.php -> roundcubemail-1.4.1.27.tar.gz/plugins/redundant_attachments/tests/RedundantAttachments.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new redundant_attachments($rcube->api); + $plugin = new redundant_attachments($rcube->plugins); $this->assertInstanceOf('redundant_attachments', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/show_additional_headers/tests/ShowAdditionalHeaders.php -> roundcubemail-1.4.1.27.tar.gz/plugins/show_additional_headers/tests/ShowAdditionalHeaders.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new show_additional_headers($rcube->api); + $plugin = new show_additional_headers($rcube->plugins); $this->assertInstanceOf('show_additional_headers', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/squirrelmail_usercopy/tests/SquirrelmailUsercopy.php -> roundcubemail-1.4.1.27.tar.gz/plugins/squirrelmail_usercopy/tests/SquirrelmailUsercopy.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new squirrelmail_usercopy($rcube->api); + $plugin = new squirrelmail_usercopy($rcube->plugins); $this->assertInstanceOf('squirrelmail_usercopy', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/subscriptions_option/tests/SubscriptionsOption.php -> roundcubemail-1.4.1.27.tar.gz/plugins/subscriptions_option/tests/SubscriptionsOption.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new subscriptions_option($rcube->api); + $plugin = new subscriptions_option($rcube->plugins); $this->assertInstanceOf('subscriptions_option', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/userinfo/tests/Userinfo.php -> roundcubemail-1.4.1.27.tar.gz/plugins/userinfo/tests/Userinfo.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new userinfo($rcube->api); + $plugin = new userinfo($rcube->plugins); $this->assertInstanceOf('userinfo', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/vcard_attachments/tests/VcardAttachments.php -> roundcubemail-1.4.1.27.tar.gz/plugins/vcard_attachments/tests/VcardAttachments.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new vcard_attachments($rcube->api); + $plugin = new vcard_attachments($rcube->plugins); $this->assertInstanceOf('vcard_attachments', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/virtuser_file/tests/VirtuserFile.php -> roundcubemail-1.4.1.27.tar.gz/plugins/virtuser_file/tests/VirtuserFile.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new virtuser_file($rcube->api); + $plugin = new virtuser_file($rcube->plugins); $this->assertInstanceOf('virtuser_file', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/virtuser_query/tests/VirtuserQuery.php -> roundcubemail-1.4.1.27.tar.gz/plugins/virtuser_query/tests/VirtuserQuery.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new virtuser_query($rcube->api); + $plugin = new virtuser_query($rcube->plugins); $this->assertInstanceOf('virtuser_query', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/plugins/zipdownload/tests/Zipdownload.php -> roundcubemail-1.4.1.27.tar.gz/plugins/zipdownload/tests/Zipdownload.php
Changed
@@ -14,7 +14,7 @@ function test_constructor() { $rcube = rcube::get_instance(); - $plugin = new zipdownload($rcube->api); + $plugin = new zipdownload($rcube->plugins); $this->assertInstanceOf('zipdownload', $plugin); $this->assertInstanceOf('rcube_plugin', $plugin);
View file
roundcubemail-1.4-rc2.12.tar.gz/program/include/iniset.php -> roundcubemail-1.4.1.27.tar.gz/program/include/iniset.php
Changed
@@ -20,7 +20,7 @@ */ // application constants -define('RCMAIL_VERSION', '1.4-git'); +define('RCMAIL_VERSION', '1.4.1'); define('RCMAIL_START', microtime(true)); if (!defined('INSTALL_PATH')) {
View file
roundcubemail-1.4-rc2.12.tar.gz/program/include/rcmail_install.php -> roundcubemail-1.4.1.27.tar.gz/program/include/rcmail_install.php
Changed
@@ -61,6 +61,11 @@ 'Oracle' => 'oci8', ); + /** @var array List of config options with default value change per-release */ + public $defaults_changes = array( + '1.4.0' => array('skin', 'smtp_port', 'smtp_user', 'smtp_pass'), + '1.4.1' => array('jquery_ui_skin_map'), + ); /** * Constructor @@ -298,9 +303,11 @@ * Check the current configuration for missing properties * and deprecated or obsolete settings * + * @param string $version Previous version on upgrade + * * @return array List with problems detected */ - public function check_config() + public function check_config($version = null) { $this->load_config(); @@ -379,6 +386,18 @@ } } + if ($version) { + $out['defaults'] = array(); + + foreach ($this->defaults_changes as $v => $opts) { + if (version_compare($v, $version, '>')) { + $out['defaults'] = array_merge($out['defaults'], $opts); + } + } + + $out['defaults'] = array_unique($out['defaults']); + } + return $out; } @@ -444,9 +463,23 @@ // read reference schema from mysql.initial.sql $engine = $db->db_provider; - $db_schema = $this->db_read_schema(INSTALL_PATH . "SQL/$engine.initial.sql"); + $db_schema = $this->db_read_schema(INSTALL_PATH . "SQL/$engine.initial.sql", $schema_version); $errors = array(); + // Just check the version + if ($schema_version) { + $version = rcmail_utils::db_version(); + + if (empty($version)) { + $errors[] = "Schema version not found"; + } + else if ($schema_version != $version) { + $errors[] = "Schema version: {$version} (required: {$schema_version})"; + } + + return !empty($errors) ? $errors : false; + } + // check list of tables $existing_tables = $db->list_tables(); @@ -472,7 +505,7 @@ /** * Utility function to read database schema from an .sql file */ - private function db_read_schema($schemafile) + private function db_read_schema($schemafile, &$version = null) { $lines = file($schemafile); $schema = array(); @@ -484,6 +517,9 @@ $table_name = end($table_name); $table_name = preg_replace('/[`"\[\]]/', '', $table_name); } + else if (preg_match('/insert into/i', $line) && preg_match('/\'roundcube-version\',\s*\'([0-9]+)\'/', $line, $m)) { + $version = $m[1]; + } else if ($table_name && ($line = trim($line))) { if ($line == 'GO' || $line[0] == ')' || $line[strlen($line)-1] == ';') { $table_name = null;
View file
roundcubemail-1.4-rc2.12.tar.gz/program/include/rcmail_output_html.php -> roundcubemail-1.4.1.27.tar.gz/program/include/rcmail_output_html.php
Changed
@@ -1353,7 +1353,7 @@ else if ($object == 'logo') { $attrib += array('alt' => $this->xml_command(array('', 'object', 'name="productname"'))); - if (!empty($attrib['type']) && ($template_logo = $this->get_template_logo(':' . $attrib['type'], true)) !== null) { + if (!empty($attrib['type']) && ($template_logo = $this->get_template_logo($attrib['type'])) !== null) { $attrib['src'] = $template_logo; } else if (($template_logo = $this->get_template_logo()) !== null) { @@ -1363,7 +1363,7 @@ // process alternative logos (eg for Elastic small screen) foreach ($attrib as $key => $value) { if (preg_match('/data-src-(.*)/', $key, $matches)) { - if (($template_logo = $this->get_template_logo(':' . $matches[1], true)) !== null) { + if (($template_logo = $this->get_template_logo($matches[1])) !== null) { $attrib[$key] = $template_logo; } @@ -1447,7 +1447,7 @@ // special handling for favicon if ($object == 'links' && $name == 'shortcut icon' && empty($args[$param])) { - if ($href = $this->get_template_logo(':favicon', true)) { + if ($href = $this->get_template_logo('favicon')) { $args[$param] = $href; } else if ($href = $this->config->get('favicon', '/images/favicon.ico')) { @@ -1790,7 +1790,7 @@ public function add_script($script, $position = 'head') { if (!isset($this->scripts[$position])) { - $this->scripts[$position] = "\n" . rtrim($script); + $this->scripts[$position] = rtrim($script); } else { $this->scripts[$position] .= "\n" . rtrim($script); @@ -1852,7 +1852,7 @@ // put docready commands into page footer if (!empty($this->scripts['docready'])) { - $this->add_script('$(function(){ ' . $this->scripts['docready'] . "\n});", 'foot'); + $this->add_script("\$(function() {\n" . $this->scripts['docready'] . "\n});", 'foot'); } $page_header = ''; @@ -2447,35 +2447,43 @@ /** * Get logo URL for current template based on skin_logo config option * - * @param string $name Name of the logo to check for - * default is current template - * @param boolean $strict True if logo should only be returned for specific template + * @param string $type Type of the logo to check for (e.g. 'print' or 'small') + * default is null (no special type) * * @return string image URL */ - protected function get_template_logo($name = null, $strict = false) + protected function get_template_logo($type = null) { $template_logo = null; - // Use current template if none provided - if (!$name) { - $name = $this->template_name; - } - - $template_names = array( - $this->skin_name . ':' . $name, - $this->skin_name . ':*', - $name, - '*', - ); - - // If strict matching then remove wildcard options - if ($strict) { - $template_names = preg_grep("/\*$/", $template_names, PREG_GREP_INVERT); - } - if ($logo = $this->config->get('skin_logo')) { if (is_array($logo)) { + $template_names = array( + $this->skin_name . ':' . $this->template_name . '[' . $type . ']', + $this->skin_name . ':' . $this->template_name, + $this->skin_name . ':*[' . $type . ']', + $this->skin_name . ':[' . $type . ']', + $this->skin_name . ':*', + '*:' . $this->template_name . '[' . $type . ']', + '*:' . $this->template_name, + '*:*[' . $type . ']', + '*:[' . $type . ']', + $this->template_name . '[' . $type . ']', + $this->template_name, + '*[' . $type . ']', + '[' . $type . ']', + '*', + ); + + if (!empty($type)) { + // Use strict matching, remove wild card options + $template_names = preg_grep("/\*$/", $template_names, PREG_GREP_INVERT); + } + else { + // No type set so remove those options from the list + $template_names = preg_grep("/\\[\]$/", $template_names, PREG_GREP_INVERT); + } + foreach ($template_names as $key) { if (isset($logo[$key])) { $template_logo = $logo[$key];
View file
roundcubemail-1.4-rc2.12.tar.gz/program/include/rcmail_utils.php -> roundcubemail-1.4.1.27.tar.gz/program/include/rcmail_utils.php
Changed
@@ -112,13 +112,7 @@ // Read DB schema version from database (if 'system' table exists) if (in_array($db->table_name('system'), (array)$db->list_tables())) { - $db->query("SELECT `value`" - . " FROM " . $db->table_name('system', true) - . " WHERE `name` = ?", - $package . '-version'); - - $row = $db->fetch_array(); - $version = preg_replace('/[^0-9]/', '', $row[0]); + $version = self::db_version($package); } // DB version not found, but release version is specified @@ -254,6 +248,28 @@ } /** + * Get version string for the specified package + * + * @param string $package Package name + * + * @return string Version string + */ + public static function db_version($package = 'roundcube') + { + $db = self::db(); + + $db->query("SELECT `value`" + . " FROM " . $db->table_name('system', true) + . " WHERE `name` = ?", + $package . '-version'); + + $row = $db->fetch_array(); + $version = preg_replace('/[^0-9]/', '', $row[0]); + + return $version; + } + + /** * Removes all deleted records older than X days * * @param int $days Number of days
View file
roundcubemail-1.4-rc2.12.tar.gz/program/js/app.js -> roundcubemail-1.4.1.27.tar.gz/program/js/app.js
Changed
@@ -268,7 +268,7 @@ this.message_list .addEventListener('initrow', function(o) { ref.init_message_row(o); }) .addEventListener('dblclick', function(o) { ref.msglist_dbl_click(o); }) - .addEventListener('keypress', function(o) { ref.list_keypress(o); }) + .addEventListener('keypress', function(o) { ref.msglist_keypress(o); }) .addEventListener('select', function(o) { ref.msglist_select(o); }) .addEventListener('dragstart', function(o) { ref.drag_start(o); }) .addEventListener('dragmove', function(e) { ref.drag_move(e); }) @@ -624,8 +624,6 @@ input_user = $('#rcmloginuser'), input_tz = $('#rcmlogintz'); - input_user.keyup(function(e) { return ref.login_user_keyup(e); }); - if (input_user.val() == '') input_user.focus(); else @@ -951,8 +949,9 @@ if (this.task == 'mail') { uid = this.get_single_uid(); if (uid && (!this.env.uid || uid != this.env.uid)) { - if (this.env.mailbox == this.env.drafts_mailbox) - this.open_compose_step({ _draft_uid: uid, _mbox: this.env.mailbox }); + var mbox = this.get_message_mailbox(uid); + if (mbox == this.env.drafts_mailbox) + this.open_compose_step({_draft_uid: uid, _mbox: mbox}); else this.show_message(uid); } @@ -981,7 +980,7 @@ this.load_contact(cid, 'edit'); else if (this.task == 'mail' && (uid = this.get_single_uid())) { url = { _mbox: this.get_message_mailbox(uid) }; - url[this.env.mailbox == this.env.drafts_mailbox && props != 'new' ? '_draft_uid' : '_uid'] = uid; + url[url._mbox == this.env.drafts_mailbox && props != 'new' ? '_draft_uid' : '_uid'] = uid; this.open_compose_step(url); } break; @@ -1920,17 +1919,29 @@ this.command(conf && conf.next ? conf.next : 'nextpage'); }; + // Handler for a keypress event on a messages list widget + this.msglist_keypress = function(list) + { + // On Enter open the message in list layout mode (no preview frame) + if (list.key_pressed == list.ENTER_KEY && !this.env.contentframe) + this.command('show'); + else + this.list_keypress(list); + }; + this.msglist_select = function(list) { if (this.preview_timer) clearTimeout(this.preview_timer); - var selected = list.get_single_selection(); + var selected = list.get_single_selection(), + selected_count = list.get_selection(false).length; this.enable_command(this.env.message_commands, selected != null); + if (selected) { // Hide certain command buttons when Drafts folder is selected - if (this.env.mailbox == this.env.drafts_mailbox) + if (this.get_message_mailbox(selected) == this.env.drafts_mailbox) this.enable_command('reply', 'reply-all', 'reply-list', 'forward', 'forward-attachment', 'forward-inline', false); // Disable reply-list when List-Post header is not set else { @@ -1939,19 +1950,20 @@ this.enable_command('reply-list', false); } } + // Multi-message commands - this.enable_command('delete', 'move', 'copy', 'mark', 'forward', 'forward-attachment', list.get_selection(false).length > 0); + this.enable_command('delete', 'move', 'copy', 'mark', 'forward', 'forward-attachment', selected_count > 0); // reset all-pages-selection - if (selected || (list.get_selection(false).length && list.get_selection(false).length != list.rowcount)) + if (selected || (selected_count && selected_count != list.rowcount)) this.select_all_mode = false; // start timer for message preview (wait for double click) if (selected && this.env.contentframe && !list.multi_selecting && !this.dummy_select) { // try to be responsive and try not to overload the server when user is pressing up/down key repeatedly - var now = new Date().getTime(); - var time_diff = now - (this._last_msglist_select_time || 0); - var preview_pane_delay = this.preview_delay_click; + var now = new Date().getTime(), + time_diff = now - (this._last_msglist_select_time || 0), + preview_pane_delay = this.preview_delay_click; // user is selecting messages repeatedly, wait until this ends (use larger delay) if (time_diff < this.preview_delay_select) { @@ -1977,12 +1989,18 @@ if (this.preview_timer) clearTimeout(this.preview_timer); - var uid = list.get_single_selection(); + var mbox, uid = list.get_single_selection(); + + // TODO: Here we should just use this.command('show') but we can't + // because at this point this.busy=true (set by msglist_get_preview()) - if (uid && (this.env.messages[uid].mbox || this.env.mailbox) == this.env.drafts_mailbox) - this.open_compose_step({ _draft_uid: uid, _mbox: this.env.mailbox }); - else if (uid) - this.show_message(uid, false, false); + if (uid) { + mbox = this.get_message_mailbox(uid); + if (mbox == this.env.drafts_mailbox) + this.open_compose_step({_draft_uid: uid, _mbox: mbox}); + else + this.show_message(uid); + } }; this.msglist_get_preview = function() @@ -3077,7 +3095,7 @@ css_class += ' status'; } - $(row.icon).attr('class', css_class).attr('title', label); + $(row.icon).attr({'class': css_class, title: label}); } if (row.msgicon && row.msgicon != row.icon) { @@ -3095,15 +3113,14 @@ label += this.get_label('forwarded') + ' '; } - $(row.msgicon).attr('class', css_class).attr('title', label); + $(row.msgicon).attr({'class': css_class, title: label}); } if (row.flagicon) { css_class = (row.flagged ? 'flagged' : 'unflagged'); label = this.get_label(css_class); $(row.flagicon).attr('class', css_class) - .attr('aria-label', label) - .attr('title', label); + .attr({'aria-label': label, title: label}); } }; @@ -3811,8 +3828,11 @@ $('#' + ref.env.composebody).show(); $("[name='_pgpmime']").remove(); - // disable commands that operate on the compose body - ref.enable_command('spellcheck', 'insert-sig', 'toggle-editor', 'insert-response', 'save-response', true); + // re-enable commands that operate on the compose body + ref.enable_command('toggle-editor', 'insert-response', 'save-response', true); + ref.enable_command('spellcheck', !!window.googie); + ref.enable_command('insert-sig', !!(ref.env.signatures && ref.env.identity && ref.env.signatures[ref.env.identity])); + ref.triggerEvent('compose-encrypted', { active:false }); } // embed Mailvelope editor container @@ -4075,9 +4095,7 @@ li.append($('<label>').addClass('keyid').text(ref.get_label('keyid'))); li.append($('<a>').text(keyrec.keyid.substr(-8).toUpperCase()) - .attr('href', keyrec.info) - .attr('target', '_blank') - .attr('tabindex', '-1')); + .attr({href: keyrec.info, target: '_blank', tabindex: '-1'})); li.append($('<label>').addClass('keylen').text(ref.get_label('keylength'))); li.append($('<span>').text(keyrec.keylen)); @@ -4467,26 +4485,6 @@ /*********************************************************/ - /********* login form methods *********/ - /*********************************************************/ - - // handler for keyboard events on the _user field - this.login_user_keyup = function(e) - { - var key = rcube_event.get_keycode(e), - passwd = $('#rcmloginpwd'); - - // enter - if (key == 13 && passwd.length && !passwd.val()) { - passwd.focus(); - return rcube_event.cancel(e); - } - - return true; - }; - - - /*********************************************************/ /********* message compose methods *********/ /*********************************************************/
View file
roundcubemail-1.4-rc2.12.tar.gz/program/js/editor.js -> roundcubemail-1.4.1.27.tar.gz/program/js/editor.js
Changed
@@ -48,7 +48,8 @@ toolbar_items_size: 'small', extended_valid_elements: 'font[face|size|color|style],span[id|class|align|style]', fontsize_formats: '8pt 9pt 10pt 11pt 12pt 14pt 18pt 24pt 36pt', - valid_children: '+body[style]', + // Allow style tag, have to be allowed inside body/div/blockquote (#7088) + valid_children: '+body[style],+blockquote[style],+div[style]', relative_urls: false, remove_script_host: false, convert_urls: false, // #1486944 @@ -134,7 +135,7 @@ $.extend(conf, window.rcmail_editor_settings); conf.setup = function(ed) { - ed.on('init', function(ed) { ref.init_callback(ed); }); + ed.on('init', function() { ref.init_callback(ed); }); // add handler for spellcheck button state update ed.on('SpellcheckStart SpellcheckEnd', function(args) { ref.spellcheck_active = args.type == 'spellcheckstart'; @@ -159,7 +160,7 @@ conf.setup_callback(ed); }; - rcmail.triggerEvent('editor-init', {config: conf, ref: ref}); + rcmail.triggerEvent('editor-init', {config: conf, ref: ref, id: id}); // textarea identifier this.id = id; @@ -169,11 +170,9 @@ tinymce.init(conf); // react to real individual tinyMCE editor init - this.init_callback = function(event) + this.init_callback = function(editor) { - this.editor = event.target; - - rcmail.triggerEvent('editor-load', {config: conf, ref: ref}); + this.editor = editor; if (rcmail.env.action == 'compose') { var area = $('#' + this.id), @@ -182,7 +181,7 @@ // the editor might be still not fully loaded, making the editing area // inaccessible, wait and try again (#1490310) if (height > 200 || height > area.height()) { - return setTimeout(function () { ref.init_callback(event); }, 300); + return setTimeout(function () { ref.init_callback(editor); }, 300); } var css = {}, @@ -212,6 +211,8 @@ } } + rcmail.triggerEvent('editor-load', {config: conf, ref: ref}); + // set tabIndex and set focus to element that was focused before ref.tabindex(ref.force_focus || (fe && fe.id == ref.id)); @@ -456,7 +457,7 @@ } // replace selection in compose textarea else if (ed = rcube_find_object(this.id)) { - var selection = $(ed).is(':focus') ? rcmail.get_input_selection(ed) : {start: 0, end: 0}, + var selection = rcmail.get_input_selection(ed), value = ed.value, pre = value.substring(0, selection.start), end = value.substring(selection.end, value.length); @@ -515,7 +516,7 @@ } // get selected text from compose textarea else if (ed = rcube_find_object(this.id)) { - if (args.selection && $(ed).is(':focus')) { + if (args.selection) { text = rcmail.get_input_selection(ed).text; }
View file
roundcubemail-1.4-rc2.12.tar.gz/program/js/list.js -> roundcubemail-1.4.1.27.tar.gz/program/js/list.js
Changed
@@ -1122,12 +1122,14 @@ /** * Select first row */ -select_first: function(mod_key) +select_first: function(mod_key, noscroll) { var row = this.get_first_row(); if (row) { this.select_row(row, mod_key, false); - this.scrollto(row); + + if (!noscroll) + this.scrollto(row); } }, @@ -1135,12 +1137,14 @@ /** * Select last row */ -select_last: function(mod_key) +select_last: function(mod_key, noscroll) { var row = this.get_last_row(); if (row) { this.select_row(row, mod_key, false); - this.scrollto(row); + + if (!noscroll) + this.scrollto(row); } }, @@ -1450,8 +1454,8 @@ case 65: // Ctrl + A if (mod_key == CONTROL_KEY && this.multiselect) { - this.select_first(); - this.select_last(SHIFT_KEY); + this.select_first(null, true); + this.select_last(SHIFT_KEY, true); return rcube_event.cancel(e); } break;
View file
roundcubemail-1.4-rc2.12.tar.gz/program/js/treelist.js -> roundcubemail-1.4.1.27.tar.gz/program/js/treelist.js
Changed
@@ -368,8 +368,14 @@ // insert as child of an existing node if (parent_node) { node.level = parent_node.level + 1; + if (!parent_node.children) parent_node.children = []; + else { + // Remove deleted nodes from the parent to make sure re-rendering below + // happens when adding a new child to a parent with all nodes removed + parent_node.children = parent_node.children.filter(function(node) { return !node.deleted; }); + } search_active = false; parent_node.children.push(node); @@ -519,8 +525,12 @@ // remove tree-toggle button and children list if (!parent.children().length) { - parent.parent().find('div.treetoggle').remove(); - parent.remove(); + parent.parent('li').find('div.treetoggle').remove(); + + // remove parent, but not if it's the list itself + if (parent[0] != container[0]) { + parent.remove(); + } } return true;
View file
roundcubemail-1.4-rc2.12.tar.gz/program/lib/Roundcube/README.md -> roundcubemail-1.4.1.27.tar.gz/program/lib/Roundcube/README.md
Changed
@@ -19,7 +19,7 @@ REQUIREMENTS ------------ PHP Version 5.4 or greater including: - - PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring (required) + - PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring, Ctype (required) - PHP PDO with driver for either MySQL, PostgreSQL, SQL Server, Oracle or SQLite (required) - Libiconv, Zip, Fileinfo, Intl, Exif (recommended) - LDAP for LDAP addressbook support (optional)
View file
roundcubemail-1.4-rc2.12.tar.gz/program/lib/Roundcube/bootstrap.php -> roundcubemail-1.4.1.27.tar.gz/program/lib/Roundcube/bootstrap.php
Changed
@@ -58,7 +58,7 @@ } // framework constants -define('RCUBE_VERSION', '1.4-git'); +define('RCUBE_VERSION', '1.4.1'); define('RCUBE_CHARSET', 'UTF-8'); define('RCUBE_TEMP_FILE_PREFIX', 'RCMTEMP');
View file
roundcubemail-1.4-rc2.12.tar.gz/program/lib/Roundcube/html.php -> roundcubemail-1.4.1.27.tar.gz/program/lib/Roundcube/html.php
Changed
@@ -256,15 +256,21 @@ if (is_string($attr)) { $attr = array('src' => $attr); } + if ($cont) { - if (self::$doctype == 'xhtml') - $cont = "\n/* <![CDATA[ */\n" . $cont . "\n/* ]]> */\n"; - else - $cont = "\n" . $cont . "\n"; + if (self::$doctype == 'xhtml') { + $cont = "/* <![CDATA[ */\n{$cont}\n/* ]]> */"; + } + + $cont = "\n{$cont}\n"; + } + + if (self::$doctype == 'xhtml') { + $attr += array('type' => 'text/javascript'); } - return self::tag('script', $attr + array('type' => 'text/javascript', 'nl' => true), - $cont, array_merge(self::$common_attrib, array('src','type','charset'))); + return self::tag('script', $attr + array('nl' => true), $cont, + array_merge(self::$common_attrib, array('src', 'type', 'charset'))); } /**
View file
roundcubemail-1.4-rc2.12.tar.gz/program/lib/Roundcube/rcube_cache.php -> roundcubemail-1.4.1.27.tar.gz/program/lib/Roundcube/rcube_cache.php
Changed
@@ -156,7 +156,7 @@ * @param boolean $prefix_mode Enable it to clear all keys starting * with prefix specified in $key */ - public function remove($key=null, $prefix_mode=false) + public function remove($key = null, $prefix_mode = false) { // Remove all keys if ($key === null) { @@ -233,6 +233,33 @@ } /** + * A helper to build cache key for specified parameters. + * + * @param string $prefix Key prefix (Max. length 64 characters) + * @param array $params Additional parameters + * + * @return string Key name + */ + public static function key_name($prefix, $params = array()) + { + $cache_key = $prefix; + + if (!empty($params)) { + $func = function($v) { + if (is_array($v)) { + sort($v); + } + return is_string($v) ? $v : serialize($v); + }; + + $params = array_map($func, $params); + $cache_key .= '.' . md5(implode(':', $params)); + } + + return $cache_key; + } + + /** * Reads cache entry. * * @param string $key Cache key name
View file
roundcubemail-1.4-rc2.12.tar.gz/program/lib/Roundcube/rcube_config.php -> roundcubemail-1.4.1.27.tar.gz/program/lib/Roundcube/rcube_config.php
Changed
@@ -25,7 +25,7 @@ */ class rcube_config { - const DEFAULT_SKIN = 'larry'; + const DEFAULT_SKIN = 'elastic'; private $env = ''; private $paths = array(); @@ -227,7 +227,6 @@ } } - // larry is the new default skin :-) if ($this->prop['skin'] == 'default') { $this->prop['skin'] = self::DEFAULT_SKIN; } @@ -452,7 +451,6 @@ } } - // larry is the new default skin :-) if ($prefs['skin'] == 'default') { $prefs['skin'] = self::DEFAULT_SKIN; }
View file
roundcubemail-1.4-rc2.12.tar.gz/program/lib/Roundcube/rcube_db.php -> roundcubemail-1.4.1.27.tar.gz/program/lib/Roundcube/rcube_db.php
Changed
@@ -1184,7 +1184,6 @@ } // Find protocol and hostspec - // $dsn => proto(proto_opts)/database if (preg_match('|^([^(]+)\((.*?)\)/?(.*?)$|', $dsn, $match)) { $proto = $match[1]; @@ -1200,9 +1199,9 @@ && strpos($dsn, '/', 2) !== false && $parsed['phptype'] == 'oci8' ) { - //oracle's "Easy Connect" syntax: - //"username/password@[//]host[:port][/service_name]" - //e.g. "scott/tiger@//mymachine:1521/oracle" + // Oracle's "Easy Connect" syntax: + // "username/password@[//]host[:port][/service_name]" + // e.g. "scott/tiger@//mymachine:1521/oracle" $proto_opts = $dsn; $pos = strrpos($proto_opts, '/'); $dsn = substr($proto_opts, $pos + 1); @@ -1230,17 +1229,18 @@ $parsed['socket'] = $proto_opts; } - // Get dabase if any + // Get database if any // $dsn => database if ($dsn) { // /database if (($pos = strpos($dsn, '?')) === false) { $parsed['database'] = rawurldecode($dsn); - // /database?param1=value1¶m2=value2 } else { + // /database?param1=value1¶m2=value2 $parsed['database'] = rawurldecode(substr($dsn, 0, $pos)); $dsn = substr($dsn, $pos + 1); + if (strpos($dsn, '&') !== false) { $opts = explode('&', $dsn); } @@ -1255,6 +1255,18 @@ } } } + + // remove problematic suffix (#7034) + $parsed['database'] = preg_replace('/;.*$/', '', $parsed['database']); + + // Resolve relative path to the sqlite database file + // so for example it works with Roundcube Installer + if (!empty($parsed['phptype']) && !empty($parsed['database']) + && stripos($parsed['phptype'], 'sqlite') === 0 + && $parsed['database'][0] != '/' + ) { + $parsed['database'] = INSTALL_PATH . $parsed['database']; + } } return $parsed; @@ -1369,8 +1381,8 @@ } $sql = preg_replace_callback( - '/((TABLE|TRUNCATE|(?<!ON )UPDATE|INSERT INTO|FROM' - . '| ON(?! (DELETE|UPDATE))|REFERENCES|CONSTRAINT|FOREIGN KEY|INDEX)' + '/((TABLE|TRUNCATE( TABLE)?|(?<!ON )UPDATE|INSERT INTO|FROM' + . '| ON(?! (DELETE|UPDATE))|REFERENCES|CONSTRAINT|FOREIGN KEY|INDEX|UNIQUE( INDEX)?)' . '\s+(IF (NOT )?EXISTS )?[`"]*)([^`"\( \r\n]+)/', array($this, 'fix_table_names_callback'), $sql
View file
roundcubemail-1.4-rc2.12.tar.gz/program/lib/Roundcube/rcube_imap.php -> roundcubemail-1.4.1.27.tar.gz/program/lib/Roundcube/rcube_imap.php
Changed
@@ -2180,8 +2180,7 @@ // get part ID if (!empty($part[3])) { - $struct->content_id = $part[3]; - $struct->headers['content-id'] = $part[3]; + $struct->content_id = $struct->headers['content-id'] = trim($part[3]); if (empty($struct->disposition)) { $struct->disposition = 'inline'; @@ -2860,14 +2859,9 @@ * * @return array List of folders */ - public function list_folders_subscribed($root='', $name='*', $filter=null, $rights=null, $skip_sort=false) + public function list_folders_subscribed($root = '', $name = '*', $filter = null, $rights = null, $skip_sort = false) { - $cache_key = $root.':'.$name; - if (!empty($filter)) { - $cache_key .= ':'.(is_string($filter) ? $filter : serialize($filter)); - } - $cache_key .= ':'.$rights; - $cache_key = 'mailboxes.'.md5($cache_key); + $cache_key = rcube_cache::key_name('mailboxes', array($root, $name, $filter, $rights)); // get cached folder list $a_mboxes = $this->get_cache($cache_key); @@ -2997,14 +2991,9 @@ * * @return array Indexed array with folder names */ - public function list_folders($root='', $name='*', $filter=null, $rights=null, $skip_sort=false) + public function list_folders($root = '', $name = '*', $filter = null, $rights = null, $skip_sort = false) { - $cache_key = $root.':'.$name; - if (!empty($filter)) { - $cache_key .= ':'.(is_string($filter) ? $filter : serialize($filter)); - } - $cache_key .= ':'.$rights; - $cache_key = 'mailboxes.list.'.md5($cache_key); + $cache_key = rcube_cache::key_name('mailboxes.list', array($root, $name, $filter, $rights)); // get cached folder list $a_mboxes = $this->get_cache($cache_key); @@ -3717,7 +3706,7 @@ } // get cached metadata - $cache_key = 'mailboxes.folder-info.' . $folder; + $cache_key = rcube_cache::key_name('mailboxes.folder-info', array($folder)); $cached = $this->get_cache($cache_key); if (is_array($cached)) { @@ -3887,7 +3876,7 @@ return false; } - $this->clear_cache('mailboxes.folder-info.' . $folder); + $this->clear_cache(rcube_cache::key_name('mailboxes.folder-info', array($folder))); return $this->conn->setACL($folder, $user, $acl); } @@ -4064,13 +4053,7 @@ $entries = (array) $entries; if (!$force) { - // create cache key - // @TODO: this is the simplest solution, but we do the same with folders list - // maybe we should store data per-entry and merge on request - sort($options); - sort($entries); - $cache_key = 'mailboxes.metadata.' . $folder; - $cache_key .= '.' . md5(serialize($options).serialize($entries)); + $cache_key = rcube_cache::key_name('mailboxes.metadata', array($folder, $options, $entries)); // get cached data $cached_data = $this->get_cache($cache_key);
View file
roundcubemail-1.4-rc2.12.tar.gz/program/lib/Roundcube/rcube_ldap.php -> roundcubemail-1.4.1.27.tar.gz/program/lib/Roundcube/rcube_ldap.php
Changed
@@ -339,7 +339,7 @@ $search_base_dn = strtr($conf['search_base_dn'], $replaces); $search_filter = strtr($conf['search_filter'], $replaces); - $cache_key = 'DN.' . md5("$host:$search_bind_dn:$search_base_dn:$search_filter:" . $conf['search_bind_pw']); + $cache_key = rcube_cache::key_name('DN', array($host, $search_bind_dn, $search_base_dn, $search_filter, $conf['search_bind_pw'])); if ($this->cache && ($dn = $this->cache->get($cache_key))) { $replaces['%dn'] = $dn;
View file
roundcubemail-1.4-rc2.12.tar.gz/program/localization/bg_BG/labels.inc -> roundcubemail-1.4.1.27.tar.gz/program/localization/bg_BG/labels.inc
Changed
@@ -145,7 +145,7 @@ $labels['first'] = 'Първо'; $labels['last'] = 'Последно'; $labels['previous'] = 'Предишно'; -$labels['next'] = 'Сладващо'; +$labels['next'] = 'Следващо'; $labels['select'] = 'Избери'; $labels['selection'] = 'Селекция'; $labels['all'] = 'Всички';
View file
roundcubemail-1.4-rc2.12.tar.gz/program/localization/bg_BG/timezones.inc -> roundcubemail-1.4.1.27.tar.gz/program/localization/bg_BG/timezones.inc
Changed
@@ -21,14 +21,53 @@ $labels['tz:africa:addis_ababa'] = 'Адис Абеба'; $labels['tz:africa:algiers'] = 'Алжир'; $labels['tz:africa:asmara'] = 'Асмара'; +$labels['tz:africa:bamako'] = 'Бамако'; +$labels['tz:africa:bangui'] = 'Бангуи'; +$labels['tz:africa:banjul'] = 'Банджул'; +$labels['tz:africa:bissau'] = 'Бисау'; +$labels['tz:africa:blantyre'] = 'Блантайър'; +$labels['tz:africa:brazzaville'] = 'Бразавил'; +$labels['tz:africa:bujumbura'] = 'Бужумбура'; $labels['tz:africa:cairo'] = 'Кайро'; $labels['tz:africa:casablanca'] = 'Казабланка'; $labels['tz:africa:ceuta'] = 'Сеута'; $labels['tz:africa:conakry'] = 'Конакри'; $labels['tz:africa:dakar'] = 'Дакар'; +$labels['tz:africa:dar_es_salaam'] = 'Дар ес Салаам'; +$labels['tz:africa:djibouti'] = 'Джибути'; +$labels['tz:africa:douala'] = 'Дуала'; +$labels['tz:africa:el_aaiun'] = 'Ел-Аюн'; +$labels['tz:africa:freetown'] = 'Фрийтаун'; +$labels['tz:africa:gaborone'] = 'Габороне'; +$labels['tz:africa:harare'] = 'Хараре'; +$labels['tz:africa:johannesburg'] = 'Йоханесбург'; +$labels['tz:africa:juba'] = 'Джуба'; +$labels['tz:africa:kampala'] = 'Кампала'; +$labels['tz:africa:khartoum'] = 'Хартум'; +$labels['tz:africa:kigali'] = 'Кигали'; +$labels['tz:africa:kinshasa'] = 'Киншаса'; $labels['tz:africa:lagos'] = 'Лагос'; +$labels['tz:africa:libreville'] = 'Либревил'; +$labels['tz:africa:lome'] = 'Ломе'; +$labels['tz:africa:luanda'] = 'Луанда'; +$labels['tz:africa:lubumbashi'] = 'Лубумбаши'; +$labels['tz:africa:lusaka'] = 'Лусака'; +$labels['tz:africa:malabo'] = 'Малабо'; +$labels['tz:africa:maputo'] = 'Мапуто'; +$labels['tz:africa:maseru'] = 'Масеру'; +$labels['tz:africa:mbabane'] = 'Мбабане'; +$labels['tz:africa:mogadishu'] = 'Могадишу'; +$labels['tz:africa:monrovia'] = 'Монровия'; +$labels['tz:africa:nairobi'] = 'Найроби'; +$labels['tz:africa:ndjamena'] = 'Нджамена'; +$labels['tz:africa:niamey'] = 'Ниамей'; +$labels['tz:africa:nouakchott'] = 'Нуакшот'; +$labels['tz:africa:ouagadougou'] = 'Уагадугу'; +$labels['tz:africa:porto-novo'] = 'Порто-Ново'; +$labels['tz:africa:sao_tome'] = 'Сао Томе'; $labels['tz:africa:tripoli'] = 'Триполи'; $labels['tz:africa:tunis'] = 'Тунис'; +$labels['tz:africa:windhoek'] = 'Уиндхоек'; $labels['tz:america'] = 'Америка'; $labels['tz:america:argentina'] = 'Аржентина'; $labels['tz:america:argentina:buenos_aires'] = 'Буенос Айрес'; @@ -91,6 +130,7 @@ $labels['tz:europe'] = 'Европа'; $labels['tz:europe:amsterdam'] = 'Амстердам'; $labels['tz:europe:andorra'] = 'Андора'; +$labels['tz:europe:astrakhan'] = 'Астрахан'; $labels['tz:europe:athens'] = 'Атина'; $labels['tz:europe:belgrade'] = 'Белград'; $labels['tz:europe:berlin'] = 'Берлин'; @@ -98,9 +138,12 @@ $labels['tz:europe:brussels'] = 'Брюксел'; $labels['tz:europe:bucharest'] = 'Букурещ'; $labels['tz:europe:budapest'] = 'Будапеща'; +$labels['tz:europe:busingen'] = 'Бюзинген'; +$labels['tz:europe:chisinau'] = 'Кишинев'; $labels['tz:europe:copenhagen'] = 'Копенхаген'; $labels['tz:europe:dublin'] = 'Дъблин'; $labels['tz:europe:gibraltar'] = 'Гибралтар'; +$labels['tz:europe:guernsey'] = 'Гърнзи'; $labels['tz:europe:helsinki'] = 'Хелзинки'; $labels['tz:europe:isle_of_man'] = 'Остров Ман'; $labels['tz:europe:istanbul'] = 'Истанбул'; @@ -114,6 +157,7 @@ $labels['tz:europe:luxembourg'] = 'Люксембург'; $labels['tz:europe:madrid'] = 'Мадрид'; $labels['tz:europe:malta'] = 'Малта'; +$labels['tz:europe:mariehamn'] = 'Мариехамн'; $labels['tz:europe:minsk'] = 'Минск'; $labels['tz:europe:monaco'] = 'Монако'; $labels['tz:europe:moscow'] = 'Москва'; @@ -153,3 +197,4 @@ $labels['tz:pacific:honolulu'] = 'Хонолулу'; $labels['tz:pacific:midway'] = 'Мидуей'; $labels['tz:pacific:norfolk'] = 'Норфолк'; +$labels['tz:pacific:wallis'] = 'Уолис';
View file
roundcubemail-1.4-rc2.12.tar.gz/program/localization/is_IS/labels.inc -> roundcubemail-1.4.1.27.tar.gz/program/localization/is_IS/labels.inc
Changed
@@ -169,6 +169,7 @@ $labels['expand-unread'] = 'Þenja ólesið'; $labels['collapse-all'] = 'Fella allt saman'; $labels['threaded'] = 'Þrætt'; +$labels['showunread'] = 'Birta ólesin skilaboð'; $labels['autoexpand_threads'] = 'Þenja skilaboðaþræði út'; $labels['do_expand'] = 'allir þræðir'; $labels['expand_only_unread'] = 'aðeins ólesin skilaboð'; @@ -510,6 +511,7 @@ $labels['toggleadvancedoptions'] = 'Víxla ítarlegum valkostum af/á'; $labels['focusonnewmessage'] = 'Láta vafraglugga vera virkan á nýjum skilaboðum'; $labels['checkallfolders'] = 'Athuga með ný skilaboð í öllum möppum'; +$labels['displaynext'] = 'Birta næstu færslu í lista eftir að skilaboðum er eytt/færð'; $labels['defaultfont'] = 'Sjálfgefið letur HTML-skilaboða'; $labels['mainoptions'] = 'Aðalstillingar'; $labels['browseroptions'] = 'Valkostir vafra';
View file
roundcubemail-1.4-rc2.12.tar.gz/program/localization/pl_PL/timezones.inc -> roundcubemail-1.4.1.27.tar.gz/program/localization/pl_PL/timezones.inc
Changed
@@ -48,6 +48,7 @@ $labels['tz:africa:kinshasa'] = 'Kinszasa'; $labels['tz:africa:lagos'] = 'Lagos'; $labels['tz:africa:libreville'] = 'Libreville'; +$labels['tz:africa:lome'] = 'Lome'; $labels['tz:africa:luanda'] = 'Luanda'; $labels['tz:africa:lubumbashi'] = 'Lubumbashi'; $labels['tz:africa:lusaka'] = 'Lusaka'; @@ -63,6 +64,7 @@ $labels['tz:africa:nouakchott'] = 'Nawakszut'; $labels['tz:africa:ouagadougou'] = 'Wagadugu'; $labels['tz:africa:porto-novo'] = 'Porto-Novo'; +$labels['tz:africa:sao_tome'] = 'Sao Tome'; $labels['tz:africa:tripoli'] = 'Trypolis'; $labels['tz:africa:tunis'] = 'Tunis'; $labels['tz:africa:windhoek'] = 'Windhuk'; @@ -73,7 +75,11 @@ $labels['tz:america:antigua'] = 'Antigua'; $labels['tz:america:araguaina'] = 'Araguaina'; $labels['tz:america:argentina'] = 'Argentyna'; +$labels['tz:america:argentina:buenos_aires'] = 'Buenos Aires'; +$labels['tz:america:argentina:san_juan'] = 'San Juan'; +$labels['tz:america:argentina:san_luis'] = 'San Luis'; $labels['tz:america:aruba'] = 'Aruba'; +$labels['tz:america:asuncion'] = 'Asuncion'; $labels['tz:america:atikokan'] = 'Atikokan'; $labels['tz:america:bahia'] = 'Bahia'; $labels['tz:america:bahia_banderas'] = 'Bahia Banderas'; @@ -119,6 +125,7 @@ $labels['tz:america:havana'] = 'Hawana'; $labels['tz:america:hermosillo'] = 'Hermosillo'; $labels['tz:america:indiana'] = 'Indiana'; +$labels['tz:america:indiana:indianapolis'] = 'Indianapolis'; $labels['tz:america:indiana:petersburg'] = 'Petersburg'; $labels['tz:america:inuvik'] = 'Inuvik'; $labels['tz:america:iqaluit'] = 'Iqaluit';
View file
roundcubemail-1.4-rc2.12.tar.gz/program/localization/pt_BR/labels.inc -> roundcubemail-1.4.1.27.tar.gz/program/localization/pt_BR/labels.inc
Changed
@@ -169,6 +169,7 @@ $labels['expand-unread'] = 'Expandir Não Lidas'; $labels['collapse-all'] = 'Recolher Tudo'; $labels['threaded'] = 'Agrupado'; +$labels['showunread'] = 'Mostrar mensagens não lidas'; $labels['autoexpand_threads'] = 'Expandir mensagens agrupadas'; $labels['do_expand'] = 'todos os grupos'; $labels['expand_only_unread'] = 'somente com mensagem(s) não lidas'; @@ -510,6 +511,7 @@ $labels['toggleadvancedoptions'] = 'Ativar opções avançadas'; $labels['focusonnewmessage'] = 'Focar janela do navegador ao receber nova mensagem'; $labels['checkallfolders'] = 'Verificar se há novas mensagens em todas as pastas'; +$labels['displaynext'] = 'Mostrar próximo item da lista após excluir/mover'; $labels['defaultfont'] = 'Fonte padrão para mensagens HTML'; $labels['mainoptions'] = 'Opções Principais'; $labels['browseroptions'] = 'Opções do navegador';
View file
roundcubemail-1.4-rc2.12.tar.gz/program/localization/ru_RU/labels.inc -> roundcubemail-1.4.1.27.tar.gz/program/localization/ru_RU/labels.inc
Changed
@@ -169,6 +169,7 @@ $labels['expand-unread'] = 'Развернуть непрочитанные'; $labels['collapse-all'] = 'Свернуть все'; $labels['threaded'] = 'Обсуждения'; +$labels['showunread'] = 'Показать непрочитанные сообщения'; $labels['autoexpand_threads'] = 'Развернуть обсуждения'; $labels['do_expand'] = 'все обсуждения'; $labels['expand_only_unread'] = 'только с непрочитанными сообщениями'; @@ -510,6 +511,7 @@ $labels['toggleadvancedoptions'] = 'Дополнительные параметры'; $labels['focusonnewmessage'] = 'Фокусировать окно браузера при новом сообщении'; $labels['checkallfolders'] = 'Проверять новые сообщения во всех папках'; +$labels['displaynext'] = 'Показать следующую запись списка после удаления/перемещения'; $labels['defaultfont'] = 'Шрифт по умолчанию HTML сообщения'; $labels['mainoptions'] = 'Основные настройки'; $labels['browseroptions'] = 'Настройки обозревателя';
View file
roundcubemail-1.4-rc2.12.tar.gz/program/localization/sv_SE/labels.inc -> roundcubemail-1.4.1.27.tar.gz/program/localization/sv_SE/labels.inc
Changed
@@ -169,6 +169,7 @@ $labels['expand-unread'] = 'Visa olästa'; $labels['collapse-all'] = 'Dölj alla'; $labels['threaded'] = 'Trådat'; +$labels['showunread'] = 'Visa olästa meddelanden'; $labels['autoexpand_threads'] = 'Visa trådade meddelanden'; $labels['do_expand'] = 'Alla trådar'; $labels['expand_only_unread'] = 'Trådar med olästa meddelanden'; @@ -510,6 +511,7 @@ $labels['toggleadvancedoptions'] = 'Växla avancerade inställningar'; $labels['focusonnewmessage'] = 'Fokusera webbläsarens fönster vid nytt meddelande'; $labels['checkallfolders'] = 'Genomsök samtliga kataloger efter nya meddelanden'; +$labels['displaynext'] = 'Visa nästa i listan efter ta bort eller flytta'; $labels['defaultfont'] = 'Förvalt typsnitt i HTML-meddelande'; $labels['mainoptions'] = 'Huvudalternativ'; $labels['browseroptions'] = 'Webbläsaralternativ';
View file
roundcubemail-1.4-rc2.12.tar.gz/program/steps/mail/folders.inc -> roundcubemail-1.4.1.27.tar.gz/program/steps/mail/folders.inc
Changed
@@ -59,6 +59,13 @@ if ($success) { $OUTPUT->show_message('folderpurged', 'confirmation'); + $OUTPUT->command('set_unread_count', $mbox, 0); + rcmail_set_unseen_count($mbox, 0); + + // set trash folder state + if ($mbox === $trash_mbox) { + $OUTPUT->command('set_trash_count', 0); + } if (!empty($_REQUEST['_reload'])) { $OUTPUT->set_env('messagecount', 0); @@ -66,14 +73,7 @@ $OUTPUT->set_env('exists', 0); $OUTPUT->command('message_list.clear'); $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text(), $mbox); - $OUTPUT->command('set_unread_count', $mbox, 0); $OUTPUT->command('set_quota', $RCMAIL->quota_content(null, $mbox)); - rcmail_set_unseen_count($mbox, 0); - - // set trash folder state - if ($mbox === $trash_mbox) { - $OUTPUT->command('set_trash_count', 0); - } } } else {
View file
roundcubemail-1.4-rc2.12.tar.gz/program/steps/mail/func.inc -> roundcubemail-1.4.1.27.tar.gz/program/steps/mail/func.inc
Changed
@@ -1704,11 +1704,11 @@ $input_attr = array( 'multiple' => true, 'name' => '_file[]', - 'accept' => '.eml, .mbox, .msg, message/rfc822, text/*', + 'accept' => '.eml,.mbox,.msg,message/rfc822,text/*', ); if (class_exists('ZipArchive', false)) { - $input_attr['accept'] .= '.zip, application/zip, application/x-zip'; + $input_attr['accept'] .= '.zip,application/zip,application/x-zip'; $description .= ' ' . $RCMAIL->gettext('mailimportzip'); }
View file
roundcubemail-1.4-rc2.12.tar.gz/program/steps/mail/sendmail.inc -> roundcubemail-1.4.1.27.tar.gz/program/steps/mail/sendmail.inc
Changed
@@ -168,7 +168,7 @@ unset($COMPOSE['attachments'][$idx]); } - $COMPOSE['attachments'] = array_merge(array_filter($files), $COMPOSE['attachments']); + $COMPOSE['attachments'] = array_merge(array_filter($files), (array) $COMPOSE['attachments']); } // Since we can handle big messages with disk usage, we need more time to work
View file
roundcubemail-1.4-rc2.12.tar.gz/public_html/index.php -> roundcubemail-1.4.1.27.tar.gz/public_html/index.php
Changed
@@ -3,7 +3,7 @@ /* +-----------------------------------------------------------------------+ | Roundcube Webmail IMAP Client | - | Version 1.4-git | + | Version 1.4.1 | | | | Copyright (C) The Roundcube Dev Team | | |
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/README.md -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/README.md
Changed
@@ -28,7 +28,7 @@ ------------ All styles are written using LESS syntax. Thus it needs to be compiled -using the `lessc` command line tool. This comes with the `nodejs-less` +using the `lessc` (>= 1.5.0) command line tool. This comes with the `nodejs-less` RPM package which depends on nodejs. ``` $ lessc -x styles/styles.less > styles/styles.css
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/deps/bootstrap.bundle.min.js -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/deps/bootstrap.bundle.min.js
Changed
@@ -4,4 +4,3 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t=t||self).bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}p=p&&p.hasOwnProperty("default")?p.default:p;var e="transitionend";function n(t){var e=this,n=!1;return p(this).one(m.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||m.triggerTransitionEnd(e)},t),this}var m={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=p(t).css("transition-duration"),n=p(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){p(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&m.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?m.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};p.fn.emulateTransitionEnd=n,p.event.special[m.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(p(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=p.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},u="alert",f="fade",d="show",g=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){p.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=m.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=p(t).closest("."+u)[0]),n},t._triggerCloseEvent=function(t){var e=p.Event(h.CLOSE);return p(t).trigger(e),e},t._removeElement=function(e){var n=this;if(p(e).removeClass(d),p(e).hasClass(f)){var t=m.getTransitionDurationFromElement(e);p(e).one(m.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){p(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();p(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),p.fn[o]=g._jQueryInterface,p.fn[o].Constructor=g,p.fn[o].noConflict=function(){return p.fn[o]=c,g._jQueryInterface};var _="button",v="bs.button",y="."+v,E=".data-api",b=p.fn[_],w="active",C="btn",T="focus",S='[data-toggle^="button"]',D='[data-toggle="buttons"]',I='input:not([type="hidden"])',A=".active",O=".btn",N={CLICK_DATA_API:"click"+y+E,FOCUS_BLUR_DATA_API:"focus"+y+E+" blur"+y+E},k=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=this._element.querySelector(I);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(w))t=!1;else{var o=n.querySelector(A);o&&p(o).removeClass(w)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(w),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(w)),t&&p(this._element).toggleClass(w)},t.dispose=function(){p.removeData(this._element,v),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(v);t||(t=new n(this),p(this).data(v,t)),"toggle"===e&&t[e]()})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),n}();p(document).on(N.CLICK_DATA_API,S,function(t){t.preventDefault();var e=t.target;p(e).hasClass(C)||(e=p(e).closest(O)),k._jQueryInterface.call(p(e),"toggle")}).on(N.FOCUS_BLUR_DATA_API,S,function(t){var e=p(t.target).closest(O)[0];p(e).toggleClass(T,/^focus(in)?$/.test(t.type))}),p.fn[_]=k._jQueryInterface,p.fn[_].Constructor=k,p.fn[_].noConflict=function(){return p.fn[_]=b,k._jQueryInterface};var L="carousel",x="bs.carousel",P="."+x,H=".data-api",j=p.fn[L],R={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},F={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},M="next",W="prev",U="left",B="right",q={SLIDE:"slide"+P,SLID:"slid"+P,KEYDOWN:"keydown"+P,MOUSEENTER:"mouseenter"+P,MOUSELEAVE:"mouseleave"+P,TOUCHSTART:"touchstart"+P,TOUCHMOVE:"touchmove"+P,TOUCHEND:"touchend"+P,POINTERDOWN:"pointerdown"+P,POINTERUP:"pointerup"+P,DRAG_START:"dragstart"+P,LOAD_DATA_API:"load"+P+H,CLICK_DATA_API:"click"+P+H},K="carousel",Q="active",V="slide",Y="carousel-item-right",z="carousel-item-left",X="carousel-item-next",G="carousel-item-prev",$="pointer-event",J=".active",Z=".active.carousel-item",tt=".carousel-item",et=".carousel-item img",nt=".carousel-item-next, .carousel-item-prev",it=".carousel-indicators",ot="[data-slide], [data-slide-to]",rt='[data-ride="carousel"]',st={TOUCH:"touch",PEN:"pen"},at=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(it),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(M)},t.nextWhenVisible=function(){!document.hidden&&p(this._element).is(":visible")&&"hidden"!==p(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(W)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(nt)&&(m.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(Z);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)p(this._element).one(q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?M:W;this._slide(i,this._items[t])}},t.dispose=function(){p(this._element).off(P),p.removeData(this._element,x),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},R,t),m.typeCheckConfig(L,t,F),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&p(this._element).on(q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&p(this._element).on(q.MOUSEENTER,function(t){return e.pause(t)}).on(q.MOUSELEAVE,function(t){return e.cycle(t)}),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&st[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&st[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};p(this._element.querySelectorAll(et)).on(q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(p(this._element).on(q.POINTERDOWN,function(t){return e(t)}),p(this._element).on(q.POINTERUP,function(t){return i(t)}),this._element.classList.add($)):(p(this._element).on(q.TOUCHSTART,function(t){return e(t)}),p(this._element).on(q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),p(this._element).on(q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(tt)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===M,i=t===W,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===W?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(Z)),o=p.Event(q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return p(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(J));p(e).removeClass(Q);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&p(n).addClass(Q)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector(Z),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===M?(n=z,i=X,U):(n=Y,i=G,B),l&&p(l).hasClass(Q))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=p.Event(q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(p(this._element).hasClass(V)){p(l).addClass(i),m.reflow(l),p(s).addClass(n),p(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,f):this._config.defaultInterval||this._config.interval;var d=m.getTransitionDurationFromElement(s);p(s).one(m.TRANSITION_END,function(){p(l).removeClass(n+" "+i).addClass(Q),p(s).removeClass(Q+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return p(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else p(s).removeClass(Q),p(l).addClass(Q),this._isSliding=!1,p(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=p(this).data(x),e=l({},R,p(this).data());"object"==typeof i&&(e=l({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),p(this).data(x,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&e.ride&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=m.getSelectorFromElement(this);if(e){var n=p(e)[0];if(n&&p(n).hasClass(K)){var i=l({},p(n).data(),p(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(p(n),i),o&&p(n).data(x).to(o),t.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return R}}]),r}();p(document).on(q.CLICK_DATA_API,ot,at._dataApiClickHandler),p(window).on(q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(rt)),e=0,n=t.length;e<n;e++){var i=p(t[e]);at._jQueryInterface.call(i,i.data())}}),p.fn[L]=at._jQueryInterface,p.fn[L].Constructor=at,p.fn[L].noConflict=function(){return p.fn[L]=j,at._jQueryInterface};var lt="collapse",ct="bs.collapse",ht="."+ct,ut=p.fn[lt],ft={toggle:!0,parent:""},dt={toggle:"boolean",parent:"(string|element)"},pt={SHOW:"show"+ht,SHOWN:"shown"+ht,HIDE:"hide"+ht,HIDDEN:"hidden"+ht,CLICK_DATA_API:"click"+ht+".data-api"},mt="show",gt="collapse",_t="collapsing",vt="collapsed",yt="width",Et="height",bt=".show, .collapsing",wt='[data-toggle="collapse"]',Ct=function(){function a(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(wt)),i=0,o=n.length;i<o;i++){var r=n[i],s=m.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){p(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!p(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(bt)).filter(function(t){return"string"==typeof n._config.parent?t.getAttribute("data-parent")===n._config.parent:t.classList.contains(gt)})).length&&(t=null),!(t&&(e=p(t).not(this._selector).data(ct))&&e._isTransitioning))){var i=p.Event(pt.SHOW);if(p(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(p(t).not(this._selector),"hide"),e||p(t).data(ct,null));var o=this._getDimension();p(this._element).removeClass(gt).addClass(_t),this._element.style[o]=0,this._triggerArray.length&&p(this._triggerArray).removeClass(vt).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){p(n._element).removeClass(_t).addClass(gt).addClass(mt),n._element.style[o]="",n.setTransitioning(!1),p(n._element).trigger(pt.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&p(this._element).hasClass(mt)){var e=p.Event(pt.HIDE);if(p(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",m.reflow(this._element),p(this._element).addClass(_t).removeClass(gt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=m.getSelectorFromElement(r);if(null!==s)p([].slice.call(document.querySelectorAll(s))).hasClass(mt)||p(r).addClass(vt).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){t.setTransitioning(!1),p(t._element).removeClass(_t).addClass(gt).trigger(pt.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){p.removeData(this._element,ct),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},ft,t)).toggle=Boolean(t.toggle),m.typeCheckConfig(lt,t,dt),t},t._getDimension=function(){return p(this._element).hasClass(yt)?yt:Et},t._getParent=function(){var t,n=this;m.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return p(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=p(t).hasClass(mt);e.length&&p(e).toggleClass(vt,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(t){var e=m.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=p(this),e=t.data(ct),n=l({},ft,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ct,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return ft}}]),a}();p(document).on(pt.CLICK_DATA_API,wt,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=p(this),e=m.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));p(i).each(function(){var t=p(this),e=t.data(ct)?"toggle":n.data();Ct._jQueryInterface.call(t,e)})}),p.fn[lt]=Ct._jQueryInterface,p.fn[lt].Constructor=Ct,p.fn[lt].noConflict=function(){return p.fn[lt]=ut,Ct._jQueryInterface};for(var Tt="undefined"!=typeof window&&"undefined"!=typeof document,St=["Edge","Trident","Firefox"],Dt=0,It=0;It<St.length;It+=1)if(Tt&&0<=navigator.userAgent.indexOf(St[It])){Dt=1;break}var At=Tt&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Dt))}};function Ot(t){return t&&"[object Function]"==={}.toString.call(t)}function Nt(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function kt(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function Lt(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=Nt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:Lt(kt(t))}var xt=Tt&&!(!window.MSInputMethodContext||!document.documentMode),Pt=Tt&&/MSIE 10/.test(navigator.userAgent);function Ht(t){return 11===t?xt:10===t?Pt:xt||Pt}function jt(t){if(!t)return document.documentElement;for(var e=Ht(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===Nt(n,"position")?jt(n):n:t?t.ownerDocument.documentElement:document.documentElement}function Rt(t){return null!==t.parentNode?Rt(t.parentNode):t}function Ft(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var s,a,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(a=(s=l).nodeName)||"HTML"!==a&&jt(s.firstElementChild)!==s?jt(l):l;var c=Rt(t);return c.host?Ft(c.host,e):Ft(t,Rt(e).host)}function Mt(t){var e="top"===(1<arguments.length&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"!==n&&"HTML"!==n)return t[e];var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}function Wt(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}function Ut(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Ht(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function Bt(t){var e=t.body,n=t.documentElement,i=Ht(10)&&getComputedStyle(n);return{height:Ut("Height",e,n,i),width:Ut("Width",e,n,i)}}var qt=function(){function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}}(),Kt=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},Qt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function Vt(t){return Qt({},t,{right:t.left+t.width,bottom:t.top+t.height})}function Yt(t){var e={};try{if(Ht(10)){e=t.getBoundingClientRect();var n=Mt(t,"top"),i=Mt(t,"left");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},r="HTML"===t.nodeName?Bt(t.ownerDocument):{},s=r.width||t.clientWidth||o.right-o.left,a=r.height||t.clientHeight||o.bottom-o.top,l=t.offsetWidth-s,c=t.offsetHeight-a;if(l||c){var h=Nt(t);l-=Wt(h,"x"),c-=Wt(h,"y"),o.width-=l,o.height-=c}return Vt(o)}function zt(t,e){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=Ht(10),o="HTML"===e.nodeName,r=Yt(t),s=Yt(e),a=Lt(t),l=Nt(e),c=parseFloat(l.borderTopWidth,10),h=parseFloat(l.borderLeftWidth,10);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var u=Vt({top:r.top-s.top-c,left:r.left-s.left-h,width:r.width,height:r.height});if(u.marginTop=0,u.marginLeft=0,!i&&o){var f=parseFloat(l.marginTop,10),d=parseFloat(l.marginLeft,10);u.top-=c-f,u.bottom-=c-f,u.left-=h-d,u.right-=h-d,u.marginTop=f,u.marginLeft=d}return(i&&!n?e.contains(a):e===a&&"BODY"!==a.nodeName)&&(u=function(t,e){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=Mt(e,"top"),o=Mt(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}(u,e)),u}function Xt(t){if(!t||!t.parentElement||Ht())return document.documentElement;for(var e=t.parentElement;e&&"none"===Nt(e,"transform");)e=e.parentElement;return e||document.documentElement}function Gt(t,e,n,i){var o=4<arguments.length&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},s=o?Xt(t):Ft(t,e);if("viewport"===i)r=function(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=zt(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:Mt(n),a=e?0:Mt(n,"left");return Vt({top:s-i.top+i.marginTop,left:a-i.left+i.marginLeft,width:o,height:r})}(s,o);else{var a=void 0;"scrollParent"===i?"BODY"===(a=Lt(kt(e))).nodeName&&(a=t.ownerDocument.documentElement):a="window"===i?t.ownerDocument.documentElement:i;var l=zt(a,s,o);if("HTML"!==a.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===Nt(e,"position"))return!0;var i=kt(e);return!!i&&t(i)}(s))r=l;else{var c=Bt(t.ownerDocument),h=c.height,u=c.width;r.top+=l.top-l.marginTop,r.bottom=h+l.top,r.left+=l.left-l.marginLeft,r.right=u+l.left}}var f="number"==typeof(n=n||0);return r.left+=f?n:n.left||0,r.top+=f?n:n.top||0,r.right-=f?n:n.right||0,r.bottom-=f?n:n.bottom||0,r}function $t(t,e,i,n,o){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var s=Gt(i,n,r,o),a={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},l=Object.keys(a).map(function(t){return Qt({key:t},a[t],{area:(e=a[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=l.filter(function(t){var e=t.width,n=t.height;return e>=i.clientWidth&&n>=i.clientHeight}),h=0<c.length?c[0].key:l[0].key,u=t.split("-")[1];return h+(u?"-"+u:"")}function Jt(t,e,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return zt(n,i?Xt(e):Ft(e,n),i)}function Zt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function te(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function ee(t,e,n){n=n.split("-")[0];var i=Zt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),s=r?"top":"left",a=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return o[s]=e[s]+e[l]/2-i[l]/2,o[a]=n===a?e[a]-i[c]:e[te(a)],o}function ne(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ie(t,n,e){return(void 0===e?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=ne(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",e))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var e=t.function||t.fn;t.enabled&&Ot(e)&&(n.offsets.popper=Vt(n.offsets.popper),n.offsets.reference=Vt(n.offsets.reference),n=e(n,t))}),n}function oe(t,n){return t.some(function(t){var e=t.name;return t.enabled&&e===n})}function re(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],r=o?""+o+n:t;if("undefined"!=typeof document.body.style[r])return r}return null}function se(t){var e=t.ownerDocument;return e?e.defaultView:window}function ae(t,e,n,i){n.updateBound=i,se(t).addEventListener("resize",n.updateBound,{passive:!0});var o=Lt(t);return function t(e,n,i,o){var r="BODY"===e.nodeName,s=r?e.ownerDocument.defaultView:e;s.addEventListener(n,i,{passive:!0}),r||t(Lt(s.parentNode),n,i,o),o.push(s)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function le(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,se(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener("scroll",e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function ce(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function he(n,i){Object.keys(i).forEach(function(t){var e="";-1!==["width","height","top","right","bottom","left"].indexOf(t)&&ce(i[t])&&(e="px"),n.style[t]=i[t]+e})}var ue=Tt&&/Firefox/i.test(navigator.userAgent);function fe(t,e,n){var i=ne(t,function(t){return t.name===e}),o=!!i&&t.some(function(t){return t.name===n&&t.enabled&&t.order<i.order});if(!o){var r="`"+e+"`",s="`"+n+"`";console.warn(s+" modifier is required by "+r+" modifier in order to work, be sure to include it before "+r+"!")}return o}var de=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],pe=de.slice(3);function me(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=pe.indexOf(t),i=pe.slice(n+1).concat(pe.slice(0,n));return e?i.reverse():i}var ge="flip",_e="clockwise",ve="counterclockwise";function ye(t,o,r,e){var s=[0,0],a=-1!==["right","left"].indexOf(e),n=t.split(/(\+|\-)/).map(function(t){return t.trim()}),i=n.indexOf(ne(n,function(t){return-1!==t.search(/,|\s/)}));n[i]&&-1===n[i].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==i?[n.slice(0,i).concat([n[i].split(l)[0]]),[n[i].split(l)[1]].concat(n.slice(i+1))]:[n];return(c=c.map(function(t,e){var n=(1===e?!a:a)?"height":"width",i=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,i=!0,t):i?(t[t.length-1]+=e,i=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],s=o[2];if(!r)return t;if(0!==s.indexOf("%"))return"vh"!==s&&"vw"!==s?r:("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return Vt(a)[e]/100*r}(t,n,o,r)})})).forEach(function(n,i){n.forEach(function(t,e){ce(t)&&(s[i]+=t*("-"===n[e-1]?-1:1))})}),s}var Ee={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,s=o.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",h={start:Kt({},l,r[l]),end:Kt({},l,r[l]+r[c]-s[c])};t.offsets.popper=Qt({},s,h[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,s=o.reference,a=i.split("-")[0],l=void 0;return l=ce(+n)?[+n,0]:ye(n,r,s,a),"left"===a?(r.top+=l[0],r.left-=l[1]):"right"===a?(r.top+=l[0],r.left+=l[1]):"top"===a?(r.left+=l[0],r.top-=l[1]):"bottom"===a&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,i){var e=i.boundariesElement||jt(t.instance.popper);t.instance.reference===e&&(e=jt(e));var n=re("transform"),o=t.instance.popper.style,r=o.top,s=o.left,a=o[n];o.top="",o.left="",o[n]="";var l=Gt(t.instance.popper,t.instance.reference,i.padding,e,t.positionFixed);o.top=r,o.left=s,o[n]=a,i.boundaries=l;var c=i.priority,h=t.offsets.popper,u={primary:function(t){var e=h[t];return h[t]<l[t]&&!i.escapeWithReference&&(e=Math.max(h[t],l[t])),Kt({},t,e)},secondary:function(t){var e="right"===t?"left":"top",n=h[e];return h[t]>l[t]&&!i.escapeWithReference&&(n=Math.min(h[e],l[t]-("right"===t?h.width:h.height))),Kt({},e,n)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";h=Qt({},h,u[e](t))}),t.offsets.popper=h,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]<r(i[l])&&(t.offsets.popper[l]=r(i[l])-n[c]),n[l]>r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!fe(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=Zt(i)[c];a[d]-p<s[u]&&(t.offsets.popper[u]-=s[u]-(a[d]-p)),a[u]+p>s[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=Vt(t.offsets.popper);var m=a[u]+a[c]/2-p/2,g=Nt(t.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-t.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),t.arrowElement=i,t.offsets.arrow=(Kt(n={},u,Math.round(y)),Kt(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,m){if(oe(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=Gt(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split("-")[0],v=te(_),y=p.placement.split("-")[1]||"",E=[];switch(m.behavior){case ge:E=[_,v];break;case _e:E=me(_);break;case ve:E=me(_,!0);break;default:E=m.behavior}return E.forEach(function(t,e){if(_!==t||E.length===e+1)return p;_=p.placement.split("-")[0],v=te(_);var n,i=p.offsets.popper,o=p.offsets.reference,r=Math.floor,s="left"===_&&r(i.right)>r(o.left)||"right"===_&&r(i.left)<r(o.right)||"top"===_&&r(i.bottom)>r(o.top)||"bottom"===_&&r(i.top)<r(o.bottom),a=r(i.left)<r(g.left),l=r(i.right)>r(g.right),c=r(i.top)<r(g.top),h=r(i.bottom)>r(g.bottom),u="left"===_&&a||"right"===_&&l||"top"===_&&c||"bottom"===_&&h,f=-1!==["top","bottom"].indexOf(_),d=!!m.flipVariations&&(f&&"start"===y&&a||f&&"end"===y&&l||!f&&"start"===y&&c||!f&&"end"===y&&h);(s||u||d)&&(p.flipped=!0,(s||u)&&(_=E[e+1]),d&&(y="end"===(n=y)?"start":"start"===n?"end":n),p.placement=_+(y?"-"+y:""),p.offsets.popper=Qt({},p.offsets.popper,ee(p.instance.popper,p.offsets.reference,p.placement)),p=ie(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=te(e),t.offsets.popper=Vt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!fe(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ne(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,r=ne(t.instance.modifiers,function(t){return"applyStyle"===t.name}).gpuAcceleration;void 0!==r&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var s,a,l,c,h,u,f,d,p,m,g,_,v,y,E=void 0!==r?r:e.gpuAcceleration,b=jt(t.instance.popper),w=Yt(b),C={position:o.position},T=(s=t,a=window.devicePixelRatio<2||!ue,l=s.offsets,c=l.popper,h=l.reference,u=Math.round,f=Math.floor,d=function(t){return t},p=u(h.width),m=u(c.width),g=-1!==["left","right"].indexOf(s.placement),_=-1!==s.placement.indexOf("-"),y=a?u:d,{left:(v=a?g||_||p%2==m%2?u:f:d)(p%2==1&&m%2==1&&!_&&a?c.left-1:c.left),top:y(c.top),bottom:y(c.bottom),right:v(c.right)}),S="bottom"===n?"top":"bottom",D="right"===i?"left":"right",I=re("transform"),A=void 0,O=void 0;if(O="bottom"===S?"HTML"===b.nodeName?-b.clientHeight+T.bottom:-w.height+T.bottom:T.top,A="right"===D?"HTML"===b.nodeName?-b.clientWidth+T.right:-w.width+T.right:T.left,E&&I)C[I]="translate3d("+A+"px, "+O+"px, 0)",C[S]=0,C[D]=0,C.willChange="transform";else{var N="bottom"===S?-1:1,k="right"===D?-1:1;C[S]=O*N,C[D]=A*k,C.willChange=S+", "+D}var L={"x-placement":t.placement};return t.attributes=Qt({},L,t.attributes),t.styles=Qt({},C,t.styles),t.arrowStyles=Qt({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return he(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach(function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&he(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var r=Jt(o,e,t,n.positionFixed),s=$t(n.placement,r,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",s),he(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},be=function(){function r(t,e){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=At(this.update.bind(this)),this.options=Qt({},r.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=e&&e.jquery?e[0]:e,this.options.modifiers={},Object.keys(Qt({},r.Defaults.modifiers,i.modifiers)).forEach(function(t){n.options.modifiers[t]=Qt({},r.Defaults.modifiers[t]||{},i.modifiers?i.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return Qt({name:t},n.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&Ot(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return qt(r,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=Jt(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=$t(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=ee(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ie(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,oe(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[re("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=ae(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return le.call(this)}}]),r}();be.Utils=("undefined"!=typeof window?window:global).PopperUtils,be.placements=de,be.Defaults=Ee;var we="dropdown",Ce="bs.dropdown",Te="."+Ce,Se=".data-api",De=p.fn[we],Ie=new RegExp("38|40|27"),Ae={HIDE:"hide"+Te,HIDDEN:"hidden"+Te,SHOW:"show"+Te,SHOWN:"shown"+Te,CLICK:"click"+Te,CLICK_DATA_API:"click"+Te+Se,KEYDOWN_DATA_API:"keydown"+Te+Se,KEYUP_DATA_API:"keyup"+Te+Se},Oe="disabled",Ne="show",ke="dropup",Le="dropright",xe="dropleft",Pe="dropdown-menu-right",He="position-static",je='[data-toggle="dropdown"]',Re=".dropdown form",Fe=".dropdown-menu",Me=".navbar-nav",We=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Ue="top-start",Be="top-end",qe="bottom-start",Ke="bottom-end",Qe="right-start",Ve="left-start",Ye={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},ze={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Xe=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!p(this._element).hasClass(Oe)){var t=c._getParentFromElement(this._element),e=p(this._menu).hasClass(Ne);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=p.Event(Ae.SHOW,n);if(p(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof be)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=t:m.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&p(t).addClass(He),this._popper=new be(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===p(t).closest(Me).length&&p(document.body).children().on("mouseover",null,p.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),p(this._menu).toggleClass(Ne),p(t).toggleClass(Ne).trigger(p.Event(Ae.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||p(this._element).hasClass(Oe)||p(this._menu).hasClass(Ne))){var t={relatedTarget:this._element},e=p.Event(Ae.SHOW,t),n=c._getParentFromElement(this._element);p(n).trigger(e),e.isDefaultPrevented()||(p(this._menu).toggleClass(Ne),p(n).toggleClass(Ne).trigger(p.Event(Ae.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!p(this._element).hasClass(Oe)&&p(this._menu).hasClass(Ne)){var t={relatedTarget:this._element},e=p.Event(Ae.HIDE,t),n=c._getParentFromElement(this._element);p(n).trigger(e),e.isDefaultPrevented()||(p(this._menu).toggleClass(Ne),p(n).toggleClass(Ne).trigger(p.Event(Ae.HIDDEN,t)))}},t.dispose=function(){p.removeData(this._element,Ce),p(this._element).off(Te),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;p(this._element).on(Ae.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,p(this._element).data(),t),m.typeCheckConfig(we,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._element);t&&(this._menu=t.querySelector(Fe))}return this._menu},t._getPlacement=function(){var t=p(this._element.parentNode),e=qe;return t.hasClass(ke)?(e=Ue,p(this._menu).hasClass(Pe)&&(e=Be)):t.hasClass(Le)?e=Qe:t.hasClass(xe)?e=Ve:p(this._menu).hasClass(Pe)&&(e=Ke),e},t._detectNavbar=function(){return 0<p(this._element).closest(".navbar").length},t._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),t},c._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(Ce);if(t||(t=new c(this,"object"==typeof e?e:null),p(this).data(Ce,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(je)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=p(e[n]).data(Ce),s={relatedTarget:e[n]};if(t&&"click"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(p(o).hasClass(Ne)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&p.contains(o,t.target))){var l=p.Event(Ae.HIDE,s);p(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),e[n].setAttribute("aria-expanded","false"),p(a).removeClass(Ne),p(o).removeClass(Ne).trigger(p.Event(Ae.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=m.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||p(t.target).closest(Fe).length)):Ie.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!p(this).hasClass(Oe))){var e=c._getParentFromElement(this),n=p(e).hasClass(Ne);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(We));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(je);p(r).trigger("focus")}p(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Ye}},{key:"DefaultType",get:function(){return ze}}]),c}();p(document).on(Ae.KEYDOWN_DATA_API,je,Xe._dataApiKeydownHandler).on(Ae.KEYDOWN_DATA_API,Fe,Xe._dataApiKeydownHandler).on(Ae.CLICK_DATA_API+" "+Ae.KEYUP_DATA_API,Xe._clearMenus).on(Ae.CLICK_DATA_API,je,function(t){t.preventDefault(),t.stopPropagation(),Xe._jQueryInterface.call(p(this),"toggle")}).on(Ae.CLICK_DATA_API,Re,function(t){t.stopPropagation()}),p.fn[we]=Xe._jQueryInterface,p.fn[we].Constructor=Xe,p.fn[we].noConflict=function(){return p.fn[we]=De,Xe._jQueryInterface};var Ge="modal",$e="bs.modal",Je="."+$e,Ze=p.fn[Ge],tn={backdrop:!0,keyboard:!0,focus:!0,show:!0},en={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},nn={HIDE:"hide"+Je,HIDDEN:"hidden"+Je,SHOW:"show"+Je,SHOWN:"shown"+Je,FOCUSIN:"focusin"+Je,RESIZE:"resize"+Je,CLICK_DISMISS:"click.dismiss"+Je,KEYDOWN_DISMISS:"keydown.dismiss"+Je,MOUSEUP_DISMISS:"mouseup.dismiss"+Je,MOUSEDOWN_DISMISS:"mousedown.dismiss"+Je,CLICK_DATA_API:"click"+Je+".data-api"},on="modal-dialog-scrollable",rn="modal-scrollbar-measure",sn="modal-backdrop",an="modal-open",ln="fade",cn="show",hn=".modal-dialog",un=".modal-body",fn='[data-toggle="modal"]',dn='[data-dismiss="modal"]',pn=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",mn=".sticky-top",gn=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(hn),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){p(this._element).hasClass(ln)&&(this._isTransitioning=!0);var n=p.Event(nn.SHOW,{relatedTarget:t});p(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),p(this._element).on(nn.CLICK_DISMISS,dn,function(t){return e.hide(t)}),p(this._dialog).on(nn.MOUSEDOWN_DISMISS,function(){p(e._element).one(nn.MOUSEUP_DISMISS,function(t){p(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=p.Event(nn.HIDE);if(p(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=p(this._element).hasClass(ln);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),p(document).off(nn.FOCUSIN),p(this._element).removeClass(cn),p(this._element).off(nn.CLICK_DISMISS),p(this._dialog).off(nn.MOUSEDOWN_DISMISS),i){var o=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return p(t).off(Je)}),p(document).off(nn.FOCUSIN),p.removeData(this._element,$e),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},tn,t),m.typeCheckConfig(Ge,t,en),t},t._showElement=function(t){var e=this,n=p(this._element).hasClass(ln);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),p(this._dialog).hasClass(on)?this._dialog.querySelector(un).scrollTop=0:this._element.scrollTop=0,n&&m.reflow(this._element),p(this._element).addClass(cn),this._config.focus&&this._enforceFocus();var i=p.Event(nn.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,p(e._element).trigger(i)};if(n){var r=m.getTransitionDurationFromElement(this._dialog);p(this._dialog).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;p(document).off(nn.FOCUSIN).on(nn.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===p(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?p(this._element).on(nn.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||p(this._element).off(nn.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?p(window).on(nn.RESIZE,function(t){return e.handleUpdate(t)}):p(window).off(nn.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){p(document.body).removeClass(an),t._resetAdjustments(),t._resetScrollbar(),p(t._element).trigger(nn.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(p(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=p(this._element).hasClass(ln)?ln:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=sn,n&&this._backdrop.classList.add(n),p(this._backdrop).appendTo(document.body),p(this._element).on(nn.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&m.reflow(this._backdrop),p(this._backdrop).addClass(cn),!t)return;if(!n)return void t();var i=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){p(this._backdrop).removeClass(cn);var o=function(){e._removeBackdrop(),t&&t()};if(p(this._element).hasClass(ln)){var r=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(pn)),e=[].slice.call(document.querySelectorAll(mn));p(t).each(function(t,e){var n=e.style.paddingRight,i=p(e).css("padding-right");p(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),p(e).each(function(t,e){var n=e.style.marginRight,i=p(e).css("margin-right");p(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=p(document.body).css("padding-right");p(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}p(document.body).addClass(an)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(pn));p(t).each(function(t,e){var n=p(e).data("padding-right");p(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+mn));p(e).each(function(t,e){var n=p(e).data("margin-right");"undefined"!=typeof n&&p(e).css("margin-right",n).removeData("margin-right")});var n=p(document.body).data("padding-right");p(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=rn,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=p(this).data($e),e=l({},tn,p(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),p(this).data($e,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return tn}}]),o}();p(document).on(nn.CLICK_DATA_API,fn,function(t){var e,n=this,i=m.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=p(e).data($e)?"toggle":l({},p(e).data(),p(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=p(e).one(nn.SHOW,function(t){t.isDefaultPrevented()||r.one(nn.HIDDEN,function(){p(n).is(":visible")&&n.focus()})});gn._jQueryInterface.call(p(e),o,this)}),p.fn[Ge]=gn._jQueryInterface,p.fn[Ge].Constructor=gn,p.fn[Ge].noConflict=function(){return p.fn[Ge]=Ze,gn._jQueryInterface};var _n=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},yn=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,En=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function bn(t,s,e){if(0===t.length)return t;if(e&&"function"==typeof e)return e(t);for(var n=(new window.DOMParser).parseFromString(t,"text/html"),a=Object.keys(s),l=[].slice.call(n.body.querySelectorAll("*")),i=function(t,e){var n=l[t],i=n.nodeName.toLowerCase();if(-1===a.indexOf(n.nodeName.toLowerCase()))return n.parentNode.removeChild(n),"continue";var o=[].slice.call(n.attributes),r=[].concat(s["*"]||[],s[i]||[]);o.forEach(function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===_n.indexOf(n)||Boolean(t.nodeValue.match(yn)||t.nodeValue.match(En));for(var i=e.filter(function(t){return t instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1})(t,r)||n.removeAttribute(t.nodeName)})},o=0,r=l.length;o<r;o++)i(o);return n.body.innerHTML}var wn="tooltip",Cn="bs.tooltip",Tn="."+Cn,Sn=p.fn[wn],Dn="bs-tooltip",In=new RegExp("(^|\\s)"+Dn+"\\S+","g"),An=["sanitize","whiteList","sanitizeFn"],On={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object"},Nn={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},kn={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:vn},Ln="show",xn="out",Pn={HIDE:"hide"+Tn,HIDDEN:"hidden"+Tn,SHOW:"show"+Tn,SHOWN:"shown"+Tn,INSERTED:"inserted"+Tn,CLICK:"click"+Tn,FOCUSIN:"focusin"+Tn,FOCUSOUT:"focusout"+Tn,MOUSEENTER:"mouseenter"+Tn,MOUSELEAVE:"mouseleave"+Tn},Hn="fade",jn="show",Rn=".tooltip-inner",Fn=".arrow",Mn="hover",Wn="focus",Un="click",Bn="manual",qn=function(){function i(t,e){if("undefined"==typeof be)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(jn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Hn);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new be(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Fn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),p(o).addClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p(e.element).trigger(e.constructor.Event.SHOWN),t===xn&&e._leave(null,e)};if(p(this.tip).hasClass(Hn)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==Ln&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),p(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Un]=!1,this._activeTrigger[Wn]=!1,this._activeTrigger[Mn]=!1,p(this.tip).hasClass(Hn)){var r=m.getTransitionDurationFromElement(n);p(n).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p(this.getTipElement()).addClass(Dn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p(t.querySelectorAll(Rn)),this.getTitle()),p(t).removeClass(Hn+" "+jn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=bn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p(e).parent().is(t)||t.empty().append(e):t.text(p(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},t._getAttachment=function(t){return Nn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Bn){var e=t===Mn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Mn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Wn:Mn]=!0),p(e.getTipElement()).hasClass(jn)||e._hoverState===Ln?e._hoverState=Ln:(clearTimeout(e._timeout),e._hoverState=Ln,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Ln&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Wn:Mn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=xn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===xn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p(this.element).data();return Object.keys(e).forEach(function(t){-1!==An.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(wn,t,this.constructor.DefaultType),t.sanitize&&(t.template=bn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(In);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p(t).removeClass(Hn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Cn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Cn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return kn}},{key:"NAME",get:function(){return wn}},{key:"DATA_KEY",get:function(){return Cn}},{key:"Event",get:function(){return Pn}},{key:"EVENT_KEY",get:function(){return Tn}},{key:"DefaultType",get:function(){return On}}]),i}();p.fn[wn]=qn._jQueryInterface,p.fn[wn].Constructor=qn,p.fn[wn].noConflict=function(){return p.fn[wn]=Sn,qn._jQueryInterface};var Kn="popover",Qn="bs.popover",Vn="."+Qn,Yn=p.fn[Kn],zn="bs-popover",Xn=new RegExp("(^|\\s)"+zn+"\\S+","g"),Gn=l({},qn.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),$n=l({},qn.DefaultType,{content:"(string|element|function)"}),Jn="fade",Zn="show",ti=".popover-header",ei=".popover-body",ni={HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn,INSERTED:"inserted"+Vn,CLICK:"click"+Vn,FOCUSIN:"focusin"+Vn,FOCUSOUT:"focusout"+Vn,MOUSEENTER:"mouseenter"+Vn,MOUSELEAVE:"mouseleave"+Vn},ii=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p(this.getTipElement()).addClass(zn+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},o.setContent=function(){var t=p(this.getTipElement());this.setElementContent(t.find(ti),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ei),e),t.removeClass(Jn+" "+Zn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(Xn);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Qn),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Qn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Gn}},{key:"NAME",get:function(){return Kn}},{key:"DATA_KEY",get:function(){return Qn}},{key:"Event",get:function(){return ni}},{key:"EVENT_KEY",get:function(){return Vn}},{key:"DefaultType",get:function(){return $n}}]),i}(qn);p.fn[Kn]=ii._jQueryInterface,p.fn[Kn].Constructor=ii,p.fn[Kn].noConflict=function(){return p.fn[Kn]=Yn,ii._jQueryInterface};var oi="scrollspy",ri="bs.scrollspy",si="."+ri,ai=p.fn[oi],li={offset:10,method:"auto",target:""},ci={offset:"number",method:"string",target:"(string|element)"},hi={ACTIVATE:"activate"+si,SCROLL:"scroll"+si,LOAD_DATA_API:"load"+si+".data-api"},ui="dropdown-item",fi="active",di='[data-spy="scroll"]',pi=".nav, .list-group",mi=".nav-link",gi=".nav-item",_i=".list-group-item",vi=".dropdown",yi=".dropdown-item",Ei=".dropdown-toggle",bi="offset",wi="position",Ci=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+mi+","+this._config.target+" "+_i+","+this._config.target+" "+yi,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,p(this._scrollElement).on(hi.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?bi:wi,o="auto"===this._config.method?t:this._config.method,r=o===wi?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=m.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[p(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){p.removeData(this._element,ri),p(this._scrollElement).off(si),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=l({},li,"object"==typeof t&&t?t:{})).target){var e=p(t.target).attr("id");e||(e=m.getUID(oi),p(t.target).attr("id",e)),t.target="#"+e}return m.typeCheckConfig(oi,t,ci),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=p([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(ui)?(n.closest(vi).find(Ei).addClass(fi),n.addClass(fi)):(n.addClass(fi),n.parents(pi).prev(mi+", "+_i).addClass(fi),n.parents(pi).prev(gi).children(mi).addClass(fi)),p(this._scrollElement).trigger(hi.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(fi)}).forEach(function(t){return t.classList.remove(fi)})},n._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(ri);if(t||(t=new n(this,"object"==typeof e&&e),p(this).data(ri,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return li}}]),n}();p(window).on(hi.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(di)),e=t.length;e--;){var n=p(t[e]);Ci._jQueryInterface.call(n,n.data())}}),p.fn[oi]=Ci._jQueryInterface,p.fn[oi].Constructor=Ci,p.fn[oi].noConflict=function(){return p.fn[oi]=ai,Ci._jQueryInterface};var Ti="bs.tab",Si="."+Ti,Di=p.fn.tab,Ii={HIDE:"hide"+Si,HIDDEN:"hidden"+Si,SHOW:"show"+Si,SHOWN:"shown"+Si,CLICK_DATA_API:"click"+Si+".data-api"},Ai="dropdown-menu",Oi="active",Ni="disabled",ki="fade",Li="show",xi=".dropdown",Pi=".nav, .list-group",Hi=".active",ji="> li > .active",Ri='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',Fi=".dropdown-toggle",Mi="> .dropdown-menu .active",Wi=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p(this._element).hasClass(Oi)||p(this._element).hasClass(Ni))){var t,i,e=p(this._element).closest(Pi)[0],o=m.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?ji:Hi;i=(i=p.makeArray(p(e).find(r)))[i.length-1]}var s=p.Event(Ii.HIDE,{relatedTarget:this._element}),a=p.Event(Ii.SHOW,{relatedTarget:i});if(i&&p(i).trigger(s),p(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=p.Event(Ii.HIDDEN,{relatedTarget:n._element}),e=p.Event(Ii.SHOWN,{relatedTarget:i});p(i).trigger(t),p(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){p.removeData(this._element,Ti),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?p(e).children(Hi):p(e).find(ji))[0],r=n&&o&&p(o).hasClass(ki),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=m.getTransitionDurationFromElement(o);p(o).removeClass(Li).one(m.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){p(e).removeClass(Oi);var i=p(e.parentNode).find(Mi)[0];i&&p(i).removeClass(Oi),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(p(t).addClass(Oi),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m.reflow(t),t.classList.contains(ki)&&t.classList.add(Li),t.parentNode&&p(t.parentNode).hasClass(Ai)){var o=p(t).closest(xi)[0];if(o){var r=[].slice.call(o.querySelectorAll(Fi));p(r).addClass(Oi)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(Ti);if(e||(e=new i(this),t.data(Ti,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();p(document).on(Ii.CLICK_DATA_API,Ri,function(t){t.preventDefault(),Wi._jQueryInterface.call(p(this),"show")}),p.fn.tab=Wi._jQueryInterface,p.fn.tab.Constructor=Wi,p.fn.tab.noConflict=function(){return p.fn.tab=Di,Wi._jQueryInterface};var Ui="toast",Bi="bs.toast",qi="."+Bi,Ki=p.fn[Ui],Qi={CLICK_DISMISS:"click.dismiss"+qi,HIDE:"hide"+qi,HIDDEN:"hidden"+qi,SHOW:"show"+qi,SHOWN:"shown"+qi},Vi="fade",Yi="hide",zi="show",Xi="showing",Gi={animation:"boolean",autohide:"boolean",delay:"number"},$i={animation:!0,autohide:!0,delay:500},Ji='[data-dismiss="toast"]',Zi=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;p(this._element).trigger(Qi.SHOW),this._config.animation&&this._element.classList.add(Vi);var e=function(){t._element.classList.remove(Xi),t._element.classList.add(zi),p(t._element).trigger(Qi.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove(Yi),this._element.classList.add(Xi),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(zi)&&(p(this._element).trigger(Qi.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(zi)&&this._element.classList.remove(zi),p(this._element).off(Qi.CLICK_DISMISS),p.removeData(this._element,Bi),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},$i,p(this._element).data(),"object"==typeof t&&t?t:{}),m.typeCheckConfig(Ui,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;p(this._element).on(Qi.CLICK_DISMISS,Ji,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add(Yi),p(t._element).trigger(Qi.HIDDEN)};if(this._element.classList.remove(zi),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(Bi);if(e||(e=new i(this,"object"==typeof n&&n),t.data(Bi,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"DefaultType",get:function(){return Gi}},{key:"Default",get:function(){return $i}}]),i}();p.fn[Ui]=Zi._jQueryInterface,p.fn[Ui].Constructor=Zi,p.fn[Ui].noConflict=function(){return p.fn[Ui]=Ki,Zi._jQueryInterface},function(){if("undefined"==typeof p)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=p.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=m,t.Alert=g,t.Button=k,t.Carousel=at,t.Collapse=Ct,t.Dropdown=Xe,t.Modal=gn,t.Popover=ii,t.Scrollspy=Ci,t.Tab=Wi,t.Toast=Zi,t.Tooltip=qn,Object.defineProperty(t,"__esModule",{value:!0})}); -//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/deps/bootstrap.min.css -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/deps/bootstrap.min.css
Changed
@@ -4,4 +4,3 @@ * Copyright 2011-2019 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/styles/colors.less -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/styles/colors.less
Changed
@@ -106,6 +106,7 @@ @color-message: @color-font; @color-message-border: transparent; @color-message-background: fadeout(@color-main, 95%); +@color-message-text: #fff; @color-message-link: @color-main; @color-message-link-font-weight: normal; @color-message-information: @color-main; @@ -113,14 +114,19 @@ @color-message-warning: @color-warning; @color-message-error: @color-error; @color-message-loading: tint(@color-font, 30%); +@color-message-information-text: @color-message-text; +@color-message-success-text: @color-message-text; +@color-message-warning-text: @color-message; +@color-message-error-text: @color-message-text; +@color-message-loading-text: @color-message-text; @color-message-error-box: @color-message; @color-message-information-box: @color-message; @color-message-success-box: @color-message; @color-message-warning-box: @color-message; -@color-message-error-box-background: fadeout(@color-message-error, 85%); -@color-message-information-box-background: fadeout(@color-message-information, 85%); -@color-message-success-box-background: fadeout(@color-message-success, 85%); -@color-message-warning-box-background: fadeout(#ffff66, 75%); +@color-message-error-box-background: fadeout(@color-message-error, 80%); +@color-message-information-box-background: fadeout(@color-message-information, 80%); +@color-message-success-box-background: fadeout(@color-message-success, 80%); +@color-message-warning-box-background: fadeout(@color-message-warning, 80%); // Popovers (menus)
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/styles/styles.less -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/styles/styles.less
Changed
@@ -374,8 +374,8 @@ } #composestatusbar { - position: absolute; opacity: .3; + right: 2.5rem; @media screen and (min-width: (@screen-width-small + 1px)) { display: none; @@ -383,11 +383,10 @@ a.button { display: inline-block; - height: 2.5rem; - margin-right: .25rem; &:before { - line-height: 2.5rem; + line-height: @layout-touch-header-height; + font-size: 1.25rem !important; } } }
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/styles/widgets/editor.less -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/styles/widgets/editor.less
Changed
@@ -836,42 +836,63 @@ .html-editor { position: relative; - display: flex; - margin-bottom: .25rem; + margin-bottom: .2rem; - & > .nav { - border-color: transparent; - z-index: 1; + .editor-toolbar { position: absolute; - right: 1rem; - - a.active { - border-color: @color-input-border !important; + left: 1px; + top: 1px; + right: 1px; + border-radius: .25rem .25rem 0 0; + border-bottom: 1px solid @color-input-border; + background-color: @color-input-addon-background; - &.mode-html { - background-color: @color-input-addon-background; - border-bottom-color: @color-input-addon-background !important; - } + .mce-i-html { + display: block; + padding: 1px 5px; + margin: 2px; + width: 2rem; + height: 24px; + border: 1px solid transparent; + color: #595959; - &.mode-plain { - border-bottom-color: #fff !important; + &:focus, + &:hover { + text-decoration: none; + border-color: #e2e4e7; + background-color: #fff; } } + } - a:hover, - a:focus { - border-bottom-color: transparent; - outline: 0; - } + // hide toolbar in html mode and in mailvelope mode + &.mailvelope .editor-toolbar, + .mce-tinymce + textarea + .editor-toolbar { + display: none; + } + + .mce-i-html:before, + .mce-i-plaintext:before { + &:extend(.font-icon-class); + margin: 0; + width: 1em; + font-size: 1.2rem; + } + + .mce-i-html:before { + content: @fa-var-image; + line-height: 1.2em; + } + + .mce-i-plaintext:before { + content: @fa-var-window-close; //@fa-var-align-justify; } - & > iframe, // e.g. mailvelope frame & > .googie_edit_layer, - & > .mce-tinymce, & > textarea { - margin-top: 2.55rem; font-family: monospace; width: 100% !important; + padding-top: 2.5rem; } & > iframe { // e.g. mailvelope frame @@ -905,7 +926,7 @@ padding: .5rem .75rem; border: 1px solid @color-input-border; border-radius: .3rem; - line-height: 1.25; + line-height: 1.5; } .googie_link {
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/styles/widgets/forms.less -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/styles/widgets/forms.less
Changed
@@ -612,7 +612,7 @@ &:extend(.font-icon-class); margin: 0 !important; line-height: 1; - font-size: 1.1em; + font-size: 1.1rem; } &.user:before { content: @fa-var-user; @@ -623,7 +623,7 @@ &.host:before { content: @fa-var-home; } - &.language.before { + &.language:before { content: @fa-var-globe; } &.cancel:before { @@ -984,7 +984,6 @@ float: none; display: inline-block; width: 1em; - margin: 0; line-height: 1.5; } }
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/styles/widgets/menu.less -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/styles/widgets/menu.less
Changed
@@ -386,6 +386,8 @@ } a.toolbar-button { + cursor: pointer; + @media screen and (min-width: (@screen-width-large + 1px)) { line-height: 1.5; padding: .45rem;
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/styles/widgets/messages.less -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/styles/widgets/messages.less
Changed
@@ -193,7 +193,7 @@ div { background-color: @color-message; - color: #fff; + color: @color-message-text; @media screen and (max-width: @screen-width-xs) { margin: 0; @@ -211,7 +211,7 @@ } & > i.icon:before { - color: #fff; + color: @color-message-text; } &:last-child { @@ -221,22 +221,42 @@ .loading { background-color: @color-message-loading; + & when not(@color-message-loading-text = @color-message-text) { color: @color-message-loading-text; } + & > i.icon:before { + & when not(@color-message-loading-text = @color-message-text) { color: @color-message-loading-text; } + } } .alert-info.information { background-color: @color-message-information; + & when not(@color-message-information-text = @color-message-text) { color: @color-message-information-text; } + & > i.icon:before { + & when not(@color-message-information-text = @color-message-text) { color: @color-message-information-text; } + } } .alert-success { background-color: @color-message-success; + & when not(@color-message-success-text = @color-message-text) { color: @color-message-success-text; } + & > i.icon:before { + & when not(@color-message-success-text = @color-message-text) { color: @color-message-success-text; } + } } .alert-warning { background-color: @color-message-warning; + & when not(@color-message-warning-text = @color-message-text) { color: @color-message-warning-text; } + & > i.icon:before { + & when not(@color-message-warning-text = @color-message-text) { color: @color-message-warning-text; } + } } .alert-danger { background-color: @color-message-error; + & when not(@color-message-error-text = @color-message-text) { color: @color-message-error-text; } + & > i.icon:before { + & when not(@color-message-error-text = @color-message-text) { color: @color-message-error-text; } + } } a {
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/templates/compose.html -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/templates/compose.html
Changed
@@ -77,6 +77,7 @@ <div class="header"> <a class="button icon task-menu-button" href="#menu"><span class="inner"><roundcube:label name="menu" /></span></a> <span class="header-title"><roundcube:label name="compose" /></span> + <div id="composestatusbar" class="position-absolute"></div> <!-- toolbar --> <div id="messagetoolbar" class="toolbar menu" role="toolbar" aria-labelledby="aria-label-toolbar"> <a class="options" href="#options" onclick="UI.show_sidebar()" data-hidden="big"> @@ -214,7 +215,6 @@ <div id="composebodycontainer"> <label for="composebody" class="voice"><roundcube:label name="arialabelmessagebody" /></label> <roundcube:object name="composeBody" id="composebody" form="form" cols="70" rows="20" class="form-control" tabindex="1" /> - <div id="composestatusbar"></div> </div> </form> <div class="formbuttons">
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/templates/mail.html -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/templates/mail.html
Changed
@@ -87,10 +87,8 @@ </div> <div id="messagelist-content" class="scroller" tabindex="-1"> <h2 id="aria-label-messagelist" class="voice"><roundcube:label name="arialabelmessagelist" /></h2> - <roundcube:object name="messages" id="messagelist" optionsmenuIcon="true" - class="listing messagelist sortheader fixedheader" - aria-labelledby="aria-label-messagelist" - data-list="message_list" data-label-msg="listempty" + <roundcube:object name="messages" id="messagelist" class="listing messagelist sortheader fixedheader" + aria-labelledby="aria-label-messagelist" data-list="message_list" data-label-msg="listempty" /> </div> <roundcube:include file="includes/pagenav.html" />
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/elastic/ui.js -> roundcubemail-1.4.1.27.tar.gz/skins/elastic/ui.js
Changed
@@ -119,7 +119,7 @@ // Intercept jQuery-UI dialogs... $.ui && $.widget('ui.dialog', $.ui.dialog, { open: function() { - // .. to unify min width for iframe'd dialogs + // ... to unify min width for iframe'd dialogs if ($(this.element).is('.iframe')) { this.options.width = Math.max(576, this.options.width); } @@ -152,20 +152,20 @@ } } else if (!is_framed) { - title = $('.boxtitle', layout.content).first().detach().text(); + title = layout.content.find('.boxtitle').first().detach().text(); if (!title) { title = $('h1.voice').first().text(); } if (title) { - $('.header > .header-title', layout.content).text(title); + layout.content.find('.header > .header-title').text(title); } } // Add content frame toolbar in the footer, for content buttons and navigation - if (!is_framed && layout.content.length && !$(layout.content).is('.no-navbar') - && !$(layout.content).children('.frame-content').length + if (!is_framed && layout.content.length && !layout.content.is('.no-navbar') + && !layout.content.children('.frame-content').length ) { env.frame_nav = $('<div class="footer menu toolbar content-frame-navigation hide-nav-buttons">') .append($('<a class="button prev">') @@ -492,7 +492,29 @@ (new MutationObserver(callback)).observe(document.body, {childList: true}); } - // Initialize column resizers + // Create floating action button(s) + if ((layout.list.length || layout.content.length) && is_mobile()) { + var fabuttons = []; + + $('[data-fab]').each(function() { + var button = $(this), + task = button.data('fab-task') || '*', + action = button.data('fab-action') || '*'; + + if ((task == '*' || task == rcmail.env.task) + && (action == '*' || action == rcmail.env.action || (action == 'none' && !rcmail.env.action)) + ) { + fabuttons.push(create_cloned_button(button, false, false, true)); + } + }); + + if (fabuttons.length) { + $('<div class="floating-action-buttons">').append(fabuttons) + .appendTo(layout.list.length ? layout.list : layout.content); + } + } + + // Initialize column resizers (must be after floating buttons) if (layout.sidebar.length) { splitter_init(layout.sidebar); } @@ -631,28 +653,6 @@ }); } - // Create floating action button(s) - if ((layout.list.length || layout.content.length) && is_mobile()) { - var fabuttons = []; - - $('[data-fab]').each(function() { - var button = $(this), - task = button.data('fab-task') || '*', - action = button.data('fab-action') || '*'; - - if ((task == '*' || task == rcmail.task) - && (action == '*' || action == rcmail.env.action || (action == 'none' && !rcmail.env.action)) - ) { - fabuttons.push(create_cloned_button(button, false, false, true)); - } - }); - - if (fabuttons.length) { - $('<div class="floating-action-buttons">').append(fabuttons) - .appendTo(layout.list.length ? layout.list : layout.content); - } - } - // Add menu link for each attachment if (rcmail.env.action != 'print') { $('#attachment-list > li').each(function() { @@ -683,7 +683,7 @@ if (rcmail.env.action == 'compose') { rcmail.addEventListener('compose-encrypted', function(e) { $("a.mode-html, button.attach").prop('disabled', e.active); - $('a.attach, a.responses')[e.active ? 'addClass' : 'removeClass']('disabled'); + $('a.attach, a.responses:not(.edit)')[e.active ? 'addClass' : 'removeClass']('disabled'); }); $('#layout-sidebar > .footer:not(.pagenav) > a.button').click(function() { @@ -703,8 +703,8 @@ } } - // In compose/preview window we do not provide "Back' button, instead - // we modify the Mail button in the task menu to act like it (i.e. calls 'list' command) + // In compose/preview window we do not provide "Back" button, instead + // we modify the "Mail" button in the task menu to act like it (i.e. calls 'list' command) if (!rcmail.env.extwin && (rcmail.env.action == 'compose' || rcmail.env.action == 'show')) { $('a.mail', layout.menu).attr('onclick', "return rcmail.command('list','',this,event)"); } @@ -737,6 +737,10 @@ if (rcmail.env.devel_mode && window.less) { less.pageLoadFinished.then(function() { resize(); + // Re-focus the focused input field on mail compose + if (rcmail.env.compose_focus_elem) { + $(rcmail.env.compose_focus_elem).focus(); + } }); } else { @@ -1177,7 +1181,7 @@ title = $('h1.voice').text() || $('title').text() || ''; } - $('.header > .header-title', layout.content).text(title); + layout.content.find('.header > .header-title').text(title); }; // display or reset the content frame @@ -1346,6 +1350,9 @@ */ function tinymce_init(o) { + var onload = [], + is_editor = $('#' + o.id).is('[data-html-editor]'); + // Enable autoresize plugin o.config.plugins += ' autoresize'; @@ -1370,9 +1377,9 @@ }; // Shift+Tab on mail compose editor scrolls the page to the top - o.config.setup_callback = function(ed) { + onload.push(function(ed) { ed.on('keypress', keypress); - }; + }); $('#composebody').on('keypress', keypress); @@ -1393,6 +1400,26 @@ $(window).resize(function() { form.trigger('scroll'); }); } + + if (is_editor) { + o.config.toolbar = 'plaintext | ' + o.config.toolbar; + // Use setup_callback, we can't use editor-load event + o.config.setup_callback = function(ed) { + ed.addButton('plaintext', { + tooltip: rcmail.gettext('plaintoggle'), + icon: 'plaintext', + onclick: function(e) { + if (rcmail.command('toggle-editor', {id: ed.id, html: false}, '', e.originalEvent)) { + $('#' + ed.id).parent().removeClass('ishtml'); + } + } + }); + }; + } + + rcmail.addEventListener('editor-load', function(e) { + $.each(onload, function() { this(e.ref.editor); }); + }); }; function datepicker_init(datepicker) @@ -1517,14 +1544,14 @@ case 'reply-list': if (rcmail.env.reply_all_mode == 1) { var label = rcmail.gettext(args.status ? 'replylist' : 'replyall'); - $('a.button.reply-all').attr('title', label).find('.inner').text(label); + $('.toolbar a.reply-all').attr('title', label).find('.inner').text(label); } break; case 'compose-encrypted': // show the toolbar button for Mailvelope if (args.status) { - $('a.button.encrypt:not(.icon)').parent().show(); + $('.toolbar a.encrypt').parent().show(); } break;
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/larry/includes/footer.html -> roundcubemail-1.4.1.27.tar.gz/skins/larry/includes/footer.html
Changed
@@ -1,5 +1,5 @@ <roundcube:object name="message" id="messagestack" condition="env:task != 'login'" /> -<script type="text/javascript"> +<script> if (!window.UI) { var UI = new rcube_mail_ui(); } </script>
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/larry/includes/header.html -> roundcubemail-1.4.1.27.tar.gz/skins/larry/includes/header.html
Changed
@@ -1,4 +1,4 @@ -<script type="text/javascript"> +<script> var UI = new rcube_mail_ui(); </script>
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/larry/includes/links.html -> roundcubemail-1.4.1.27.tar.gz/skins/larry/includes/links.html
Changed
@@ -5,7 +5,7 @@ <roundcube:if condition="in_array(env:task, array('mail','addressbook','settings'))" /> <link rel="stylesheet" type="text/css" href="/<roundcube:var name="env:task" />.css" /> <roundcube:endif /> -<script type="text/javascript" src="/ui.js"></script> +<script src="/ui.js"></script> <roundcube:add_label name="errortitle" /> <roundcube:add_label name="toggleadvancedoptions" /> <roundcube:add_label name="options" />
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/larry/mail.css -> roundcubemail-1.4.1.27.tar.gz/skins/larry/mail.css
Changed
@@ -1347,7 +1347,6 @@ #composebodycontainer .mce-panel { border-color: #ddd !important; - background: #f0f0f0; } #composebody_toolbargroup {
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/larry/styles.css -> roundcubemail-1.4.1.27.tar.gz/skins/larry/styles.css
Changed
@@ -3103,6 +3103,15 @@ z-index: 65537 !important; } +.mce-tinymce.mce-container { + box-shadow: none; +} + +.mce-toolbar.mce-container { + background: #f0f0f0; +} + + /** PGP Key import dialog **/ .pgpkeyimport div.key { position: relative;
View file
roundcubemail-1.4-rc2.12.tar.gz/skins/larry/ui.js -> roundcubemail-1.4.1.27.tar.gz/skins/larry/ui.js
Changed
@@ -183,9 +183,7 @@ else if (rcmail.env.action == 'compose') { rcmail.addEventListener('fileappended', function(e) { if (e.attachment.complete) attachmentmenu_append(e.item); }) .addEventListener('aftertoggle-editor', function(e) { - window.setTimeout(function() { layout_composeview() }, 200); - if (e && e.mode) - $("select[name='editorSelector']").val(e.mode); + window.setTimeout(function() { layout_composeview(); }, 200); }) .addEventListener('compose-encrypted', function(e) { $("select[name='editorSelector']").prop('disabled', e.active);
View file
roundcubemail-1.4-rc2.12.tar.gz/tests/Framework/Bootstrap.php -> roundcubemail-1.4.1.27.tar.gz/tests/Framework/Bootstrap.php
Changed
@@ -17,11 +17,11 @@ $needle = 'test'; $result = in_array_nocase($needle, $haystack); - $this->assertTrue($result, $title); + $this->assertTrue($result, "Invalid in_array_nocase() result (Array)"); $result = in_array_nocase($needle, null); - $this->assertFalse($result, $title); + $this->assertFalse($result, "Invalid in_array_nocase() result (null)"); } /**
View file
roundcubemail-1.4-rc2.12.tar.gz/tests/Framework/Browser.php -> roundcubemail-1.4.1.27.tar.gz/tests/Framework/Browser.php
Changed
@@ -21,7 +21,7 @@ /** * @dataProvider browsers */ - function test_browser($useragent, $opera, $chrome, $ie, $edge, $ns, $safari, $mz) + function test_browser($useragent, $opera, $chrome, $ie, $edge, $safari, $mz) { $object = $this->getBrowser($useragent); @@ -63,7 +63,7 @@ function browsers() { - return $this->extractDataSet(array('isOpera', 'isChrome', 'isIE', 'isEdge', 'isNS', 'isSafari', 'isMZ')); + return $this->extractDataSet(array('isOpera', 'isChrome', 'isIE', 'isEdge', 'isSafari', 'isMZ')); } function useragents()
View file
roundcubemail-1.4-rc2.12.tar.gz/tests/Framework/DB.php -> roundcubemail-1.4.1.27.tar.gz/tests/Framework/DB.php
Changed
@@ -34,19 +34,28 @@ "-- test comment", "ALTER TABLE `xxx` CHANGE test test int;", "TRUNCATE xxx;", + "TRUNCATE TABLE xxx;", "DROP TABLE `vvv`;", "CREATE TABLE `i` (test int CONSTRAINT `iii` FOREIGN KEY (`test`) REFERENCES `xxx`(`test`) ON DELETE CASCADE ON UPDATE CASCADE);", + "CREATE TABLE `i` (`test` int, INDEX `testidx` (`test`))", + "CREATE TABLE `i` (`test` int, UNIQUE `testidx` (`test`))", + "CREATE TABLE `i` (`test` int, UNIQUE INDEX `testidx` (`test`))", "INSERT INTO xxx test = 1;", "SELECT test FROM xxx;", )); + $output = implode("\n", array( "CREATE TABLE `prefix_xxx` (test int, INDEX prefix_xxx (test))", "ALTER TABLE `prefix_xxx` CHANGE test test int", "TRUNCATE prefix_xxx", + "TRUNCATE TABLE prefix_xxx", "DROP TABLE `prefix_vvv`", "CREATE TABLE `prefix_i` (test int CONSTRAINT `prefix_iii` FOREIGN KEY (`test`) REFERENCES `prefix_xxx`(`test`) ON DELETE CASCADE ON UPDATE CASCADE)", + "CREATE TABLE `prefix_i` (`test` int, INDEX `prefix_testidx` (`test`))", + "CREATE TABLE `prefix_i` (`test` int, UNIQUE `prefix_testidx` (`test`))", + "CREATE TABLE `prefix_i` (`test` int, UNIQUE INDEX `prefix_testidx` (`test`))", "INSERT INTO prefix_xxx test = 1", "SELECT test FROM prefix_xxx", ));
View file
roundcubemail-1.4.1.27.tar.gz/tests/Rcmail/OutputHtml.php
Added
@@ -0,0 +1,147 @@ +<?php +/** + * Test class to test rcmail_output_html class + * + * @package Tests + */ +class Rcmail_OutputHtml extends PHPUnit_Framework_TestCase +{ + /** + * Test get_template_logo() + */ + function test_logo() + { + $rcmail = rcube::get_instance(); + $output = new rcmail_output_html(); + $reflection = new ReflectionClass('rcmail_output_html'); + $set_skin = $reflection->getProperty('skin_name'); + $set_template = $reflection->getProperty('template_name'); + $get_template_logo = $reflection->getMethod('get_template_logo'); + + $set_skin->setAccessible(true); + $set_template->setAccessible(true); + $get_template_logo->setAccessible(true); + + $set_skin->setValue($output, 'elastic'); + + $rcmail->config->set('skin_logo', 'img00'); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img00', $result); + + $set_template->setValue($output, 'mail'); + $result = $get_template_logo->invokeArgs($output, array('small')); + $this->assertSame('img00', $result); + + $rcmail->config->set('skin_logo', array( + "elastic:login[small]" => "img01", + "elastic:login" => "img02", + "elastic:*[small]" => "img03", + "larry:*" => "img04", + "*:login[small]" => "img05", + "*:login" => "img06", + "*[print]" => "img07", + "*" => "img08", + )); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array('small')); + $this->assertSame('img01', $result); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img02', $result); + + $set_template->setValue($output, 'mail'); + $result = $get_template_logo->invokeArgs($output, array('small')); + $this->assertSame('img03', $result); + + $set_template->setValue($output, 'mail'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img08', $result); + + $set_template->setValue($output, 'mail'); + $result = $get_template_logo->invokeArgs($output, array('small')); + $this->assertSame('img03', $result); + + $set_template->setValue($output, '_test_'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img08', $result); + + $set_skin->setValue($output, 'larry'); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array('small')); + $this->assertSame('img05', $result); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img04', $result); + + $set_template->setValue($output, '_test_'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img04', $result); + + $set_skin->setValue($output, '_test_'); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array('small')); + $this->assertSame('img05', $result); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img06', $result); + + $set_template->setValue($output, '_test_'); + $result = $get_template_logo->invokeArgs($output, array('print')); + $this->assertSame('img07', $result); + + $set_template->setValue($output, '_test_'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img08', $result); + + $rcmail->config->set('skin_logo', array( + "elastic:login[small]" => "img09", + "elastic:login" => "img10", + "larry:*" => "img11", + "elastic[small]" => "img12", + "login[small]" => "img13", + "login" => "img14", + "[print]" => "img15", + "*" => "img16", + )); + + $set_skin->setValue($output, 'elastic'); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array('small')); + $this->assertSame('img09', $result); + + $set_template->setValue($output, 'mail'); + $result = $get_template_logo->invokeArgs($output, array('small')); + $this->assertSame(null, $result); + + $set_skin->setValue($output, '_test_'); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array('small')); + $this->assertSame('img13', $result); + + $set_template->setValue($output, 'login'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img14', $result); + + $set_template->setValue($output, '_test_'); + $result = $get_template_logo->invokeArgs($output, array('print')); + $this->assertSame('img15', $result); + + $set_template->setValue($output, '_test_'); + $result = $get_template_logo->invokeArgs($output, array('_test_')); + $this->assertSame(null, $result); + + $set_template->setValue($output, '_test_'); + $result = $get_template_logo->invokeArgs($output, array()); + $this->assertSame('img16', $result); + } +}
View file
roundcubemail-1.4-rc2.12.tar.gz/tests/phpunit.xml -> roundcubemail-1.4.1.27.tar.gz/tests/phpunit.xml
Changed
@@ -51,12 +51,14 @@ <file>Framework/VCard.php</file> <file>Framework/Washtml.php</file> <file>MailFunc.php</file> + <file>Rcmail/OutputHtml.php</file> <file>Rcmail/Rcmail.php</file> </testsuite> <testsuite name="Plugins Tests"> <file>./../plugins/acl/tests/Acl.php</file> <file>./../plugins/additional_message_headers/tests/AdditionalMessageHeaders.php</file> <file>./../plugins/archive/tests/Archive.php</file> + <file>./../plugins/attachment_reminder/tests/AttachmentReminder.php</file> <file>./../plugins/autologon/tests/Autologon.php</file> <file>./../plugins/database_attachments/tests/DatabaseAttachments.php</file> <file>./../plugins/debug_logger/tests/DebugLogger.php</file>
View file
roundcubemail.dsc
Changed
@@ -2,7 +2,7 @@ Source: roundcubemail Binary: roundcubemail Architecture: all -Version: 1:1.4-0~kolab316 +Version: 1:1.4.1.27-0~kolab1 Maintainer: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> Uploaders: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> Homepage: http://www.roundcube.net/ @@ -14,5 +14,5 @@ roundcubemail deb web extra roundcubemail-core deb web extra Files: - 00000000000000000000000000000000 0 roundcubemail-1.4-rc2.12.tar.gz + 00000000000000000000000000000000 0 roundcubemail-1.4.1.27.tar.gz 00000000000000000000000000000000 0 debian.tar.gz
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.