summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksander Machniak <machniak@kolabsys.com>2019-05-10 11:36:33 +0000
committerAleksander Machniak <machniak@kolabsys.com>2019-05-10 11:36:33 +0000
commit1995649953b587fce4ca72e215e4c64b863410f7 (patch)
treeb147772d41ef2e070aa57aa631a0280985f475af
parent0f51ea19380e770215694416f598e1bb8f9d5352 (diff)
downloadwebadmin-1995649953b587fce4ca72e215e4c64b863410f7.tar.gz
New skin
-rw-r--r--lib/client/kolab_client_task_ou.php2
-rw-r--r--lib/client/kolab_client_task_settings.php83
-rw-r--r--lib/client/kolab_client_task_user.php3
-rw-r--r--lib/kolab_client_task.php69
-rw-r--r--lib/kolab_form.php51
-rw-r--r--lib/kolab_html.php28
-rw-r--r--lib/locale/bg_BG.php7
-rw-r--r--lib/locale/cs_CZ.php8
-rw-r--r--lib/locale/de_CH.php7
-rw-r--r--lib/locale/de_DE.php7
-rw-r--r--lib/locale/en_US.php8
-rw-r--r--lib/locale/es_ES.php7
-rw-r--r--lib/locale/et_EE.php8
-rw-r--r--lib/locale/fi_FI.php7
-rw-r--r--lib/locale/fr_FR.php7
-rw-r--r--lib/locale/it_IT.php7
-rw-r--r--lib/locale/ja_JP.php7
-rw-r--r--lib/locale/nl_NL.php7
-rw-r--r--lib/locale/pl_PL.php7
-rw-r--r--lib/locale/pt_BR.php7
-rw-r--r--lib/locale/ru_RU.php7
-rw-r--r--public_html/js/jquery.datetimepicker.js1287
-rw-r--r--public_html/js/kolab_admin.js497
-rw-r--r--public_html/skins/default/deps/bootstrap.bundle.min.js7
-rw-r--r--public_html/skins/default/deps/bootstrap.min.css7
-rw-r--r--public_html/skins/default/fonts/fa-regular-400.woffbin0 -> 18164 bytes
-rw-r--r--public_html/skins/default/fonts/fa-regular-400.woff2bin0 -> 14872 bytes
-rw-r--r--public_html/skins/default/fonts/fa-solid-900.woffbin0 -> 102224 bytes
-rw-r--r--public_html/skins/default/fonts/fa-solid-900.woff2bin0 -> 79100 bytes
-rw-r--r--public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woffbin0 -> 86184 bytes
-rw-r--r--public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woff2bin0 -> 64740 bytes
-rw-r--r--public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woffbin0 -> 91968 bytes
-rw-r--r--public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woff2bin0 -> 70360 bytes
-rw-r--r--public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woffbin0 -> 91728 bytes
-rw-r--r--public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woff2bin0 -> 70280 bytes
-rw-r--r--public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woffbin0 -> 85876 bytes
-rw-r--r--public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woff2bin0 -> 64632 bytes
-rw-r--r--public_html/skins/default/images/README10
-rw-r--r--public_html/skins/default/images/about.pngbin9902 -> 0 bytes
-rw-r--r--public_html/skins/default/images/arrow_left.pngbin1059 -> 0 bytes
-rw-r--r--public_html/skins/default/images/arrow_right.pngbin279 -> 0 bytes
-rw-r--r--public_html/skins/default/images/body.pngbin184 -> 0 bytes
-rw-r--r--public_html/skins/default/images/buttons.pngbin1928 -> 0 bytes
-rw-r--r--public_html/skins/default/images/domain_ico.pngbin751 -> 0 bytes
-rw-r--r--public_html/skins/default/images/domains.pngbin11176 -> 0 bytes
-rw-r--r--public_html/skins/default/images/error.pngbin3328 -> 0 bytes
-rw-r--r--public_html/skins/default/images/favicon.icobin0 -> 15086 bytes
-rw-r--r--public_html/skins/default/images/favicon.pngbin1094 -> 0 bytes
-rw-r--r--public_html/skins/default/images/favicon.png.enterprisebin396 -> 0 bytes
-rw-r--r--public_html/skins/default/images/groups.pngbin10537 -> 0 bytes
-rw-r--r--public_html/skins/default/images/info.pngbin3424 -> 0 bytes
-rw-r--r--public_html/skins/default/images/kolabsystems.pngbin12281 -> 4416 bytes
-rw-r--r--public_html/skins/default/images/linen_header.jpgbin607 -> 0 bytes
-rw-r--r--public_html/skins/default/images/loading.gifbin1781 -> 0 bytes
-rw-r--r--public_html/skins/default/images/logo-big.pngbin43206 -> 0 bytes
-rw-r--r--public_html/skins/default/images/logo-big.png.enterprisebin10125 -> 0 bytes
-rw-r--r--public_html/skins/default/images/logo.pngbin13367 -> 3864 bytes
-rw-r--r--public_html/skins/default/images/logo.png.enterprisebin10923 -> 0 bytes
-rw-r--r--public_html/skins/default/images/logo_kolab.pngbin17755 -> 0 bytes
-rw-r--r--public_html/skins/default/images/navbg.pngbin142 -> 0 bytes
-rw-r--r--public_html/skins/default/images/ou.pngbin8361 -> 0 bytes
-rw-r--r--public_html/skins/default/images/resources.pngbin12407 -> 0 bytes
-rw-r--r--public_html/skins/default/images/roles.pngbin10331 -> 0 bytes
-rw-r--r--public_html/skins/default/images/settings.pngbin16278 -> 0 bytes
-rw-r--r--public_html/skins/default/images/sharedfolders.pngbin10423 -> 0 bytes
-rw-r--r--public_html/skins/default/images/tabs-left.gifbin230 -> 0 bytes
-rw-r--r--public_html/skins/default/images/tabs-right.gifbin1420 -> 0 bytes
-rw-r--r--public_html/skins/default/images/user_ico.pngbin616 -> 0 bytes
-rw-r--r--public_html/skins/default/images/users.pngbin7648 -> 0 bytes
-rw-r--r--public_html/skins/default/images/watermark.svg23
-rw-r--r--public_html/skins/default/jquery.datetimepicker.css304
-rw-r--r--public_html/skins/default/style.css1175
-rw-r--r--public_html/skins/default/templates/about.html.enterprise5
-rw-r--r--public_html/skins/default/templates/about_kolab.html2
-rw-r--r--public_html/skins/default/templates/about_kolabsys.html4
-rw-r--r--public_html/skins/default/templates/domain.html13
-rw-r--r--public_html/skins/default/templates/error.html3
-rw-r--r--public_html/skins/default/templates/footer.html.enterprise4
-rw-r--r--public_html/skins/default/templates/group.html13
-rw-r--r--public_html/skins/default/templates/login.html4
-rw-r--r--public_html/skins/default/templates/main.html14
-rw-r--r--public_html/skins/default/templates/ou.html13
-rw-r--r--public_html/skins/default/templates/resource.html13
-rw-r--r--public_html/skins/default/templates/role.html13
-rw-r--r--public_html/skins/default/templates/search.html11
-rw-r--r--public_html/skins/default/templates/sharedfolder.html13
-rw-r--r--public_html/skins/default/templates/signup.html4
-rw-r--r--public_html/skins/default/templates/type.html18
-rw-r--r--public_html/skins/default/templates/user.html13
-rw-r--r--public_html/skins/default/templates/watermark.html2
-rw-r--r--public_html/skins/default/ui.js85
91 files changed, 830 insertions, 3071 deletions
diff --git a/lib/client/kolab_client_task_ou.php b/lib/client/kolab_client_task_ou.php
index 2a99f92..11cf7cc 100644
--- a/lib/client/kolab_client_task_ou.php
+++ b/lib/client/kolab_client_task_ou.php
@@ -97,7 +97,7 @@ class kolab_client_task_ou extends kolab_client_task
}
if ($item['has_children']) {
- $tree .= '<span class="expando"></span>';
+ $tree .= '<span class="expando font-icon"></span>';
}
else if ($max_tree_level) {
$tree .= '<span class="spacer"></span>';
diff --git a/lib/client/kolab_client_task_settings.php b/lib/client/kolab_client_task_settings.php
index d811f1e..961b457 100644
--- a/lib/client/kolab_client_task_settings.php
+++ b/lib/client/kolab_client_task_settings.php
@@ -288,12 +288,12 @@ class kolab_client_task_settings extends kolab_client_task
$count_str = kolab_html::span(array(
'content' => $this->translate('list.records', $start, $end, $count)), true);
$prev = kolab_html::a(array(
- 'class' => 'prev' . ($prev ? '' : ' disabled'),
+ 'class' => 'prev font-icon' . ($prev ? '' : ' disabled'),
'href' => '#',
'onclick' => $prev ? "kadm.command('settings.type_list', {page: $prev})" : "return false",
));
$next = kolab_html::a(array(
- 'class' => 'next' . ($next ? '' : ' disabled'),
+ 'class' => 'next font-icon' . ($next ? '' : ' disabled'),
'href' => '#',
'onclick' => $next ? "kadm.command('settings.type_list', {page: $next})" : "return false",
));
@@ -324,7 +324,7 @@ class kolab_client_task_settings extends kolab_client_task
$table = kolab_html::table(array(
'id' => 'settingstypelist',
- 'class' => 'list',
+ 'class' => 'list table table-sm',
'head' => $head,
'body' => $rows,
'foot' => $foot,
@@ -565,7 +565,7 @@ class kolab_client_task_settings extends kolab_client_task
$debug = kolab_html::escape(print_r($data, true));
$debug = preg_replace('/(^Array\n\(|\n*\)$|\t)/', '', $debug);
$debug = str_replace("\n ", "\n", $debug);
- $debug = '<pre class="debug">' . $debug . '</pre>';
+ $debug = '<pre class="debug form-control">' . $debug . '</pre>';
$fields['debug'] = array(
'label' => 'debug',
'section' => 'props',
@@ -606,7 +606,7 @@ class kolab_client_task_settings extends kolab_client_task
$attr_table = array();
$table = array(
'id' => 'type_attr_table',
- 'class' => 'list',
+ 'class' => 'list table table-sm',
);
$cells = array(
'name' => array(
@@ -717,13 +717,13 @@ class kolab_client_task_settings extends kolab_client_task
if (in_array('delete', $rights)) {
$row['actions']['body'] .= kolab_html::a(array(
'href' => '#delete', 'onclick' => "kadm.type_attr_delete('$attr')",
- 'class' => 'button delete', 'title' => $this->translate('delete')));
+ 'class' => 'button font-icon delete', 'title' => $this->translate('delete')));
}
if (in_array('write', $rights)) {
$row['actions']['body'] .= kolab_html::a(array(
'href' => '#edit', 'onclick' => "kadm.type_attr_edit('$attr')",
- 'class' => 'button edit', 'title' => $this->translate('edit')));
+ 'class' => 'button font-icon edit', 'title' => $this->translate('edit')));
}
}
@@ -789,7 +789,6 @@ class kolab_client_task_settings extends kolab_client_task
private function type_form_attributes_form($attributes)
{
// build form
- $rows = array();
$form = array(
'name' => array(
'type' => kolab_form::INPUT_SELECT,
@@ -837,57 +836,41 @@ class kolab_client_task_settings extends kolab_client_task
),
);
+ $result = new kolab_form();
+
foreach ($form as $idx => $element) {
- $element['name'] = 'attr_' . $idx;
- $body = kolab_form::get_element($element);
+ $element['name'] = 'attr_' . $idx;
+
+ if ($idx === 'value') {
+ $add = array(
+ 'name' => 'attr_data',
+ 'type' => kolab_form::INPUT_TEXT,
+ );
- if ($idx == 'value') {
- $body .= kolab_form::get_element(array(
- 'name' => 'attr_data',
- 'type' => kolab_form::INPUT_TEXT,
+ $element = kolab_html::div(array(
+ 'class' => 'input-group',
+ 'content' => kolab_form::get_element($element) . kolab_form::get_element($add)
));
+
+ $element = array('value' => $element);
}
- $rows[] = array(
- 'id' => 'attr_form_row_' . $idx,
- 'cells' => array(
- array(
- 'class' => 'label',
- 'body' => $this->translate('attribute.' . $idx),
- ),
- array(
- 'class' => 'value',
- 'body' => $body,
- ),
- ),
- );
+ $element['label'] = $this->translate('attribute.' . $idx);
+
+ $result->add_element($element);
}
- $rows[] = array(
- 'cells' => array(
- array(
- 'colspan' => 2,
- 'class' => 'formbuttons',
- 'body' => kolab_html::input(array(
- 'type' => 'button',
- 'value' => $this->translate('button.save'),
- 'onclick' => "kadm.type_attr_save()",
- ))
- . kolab_html::input(array(
- 'type' => 'button',
- 'value' => $this->translate('button.cancel'),
- 'onclick' => "kadm.type_attr_cancel()",
- )),
- ),
- ),
- );
+ $result->add_button(array(
+ 'value' => $this->translate('button.save'),
+ 'onclick' => "kadm.type_attr_save()",
+ ));
- $table = array(
- 'class' => 'form',
- 'body' => $rows,
- );
+ $result->add_button(array(
+ 'value' => $this->translate('button.cancel'),
+ 'onclick' => "kadm.type_attr_cancel()",
+ ));
- return kolab_html::table($table);
+ return $result->output();
}
/**
diff --git a/lib/client/kolab_client_task_user.php b/lib/client/kolab_client_task_user.php
index 357d7c6..9171c7f 100644
--- a/lib/client/kolab_client_task_user.php
+++ b/lib/client/kolab_client_task_user.php
@@ -181,11 +181,12 @@ class kolab_client_task_user extends kolab_client_task
$fields['userpassword2'] = $fields['userpassword'];
// Add 'Generate password' link
if (empty($fields['userpassword']['readonly'])) {
+ $fields['userpassword']['input-group'] = true;
$fields['userpassword']['suffix'] = kolab_html::a(array(
'content' => $this->translate('password.generate'),
'href' => '#',
'onclick' => "kadm.generate_password('userpassword')",
- 'class' => 'nowrap',
+ 'class' => 'nowrap btn btn-secondary input-group-append',
));
}
}
diff --git a/lib/kolab_client_task.php b/lib/kolab_client_task.php
index 3c6402f..46eecaf 100644
--- a/lib/kolab_client_task.php
+++ b/lib/kolab_client_task.php
@@ -793,28 +793,43 @@ class kolab_client_task
{
$post = $this->get_input('login', 'POST', true);
- $username = kolab_html::label(array(
- 'for' => 'login_name',
- 'content' => $this->translate('login.username')), true)
- . kolab_html::input(array(
- 'type' => 'text',
- 'id' => 'login_name',
- 'name' => 'login[username]',
- 'value' => $post['username'],
- 'autofocus' => true));
-
- $password = kolab_html::label(array(
- 'for' => 'login_pass',
- 'content' => $this->translate('login.password')), true)
- . kolab_html::input(array(
- 'type' => 'password',
- 'id' => 'login_pass',
- 'name' => 'login[password]',
- 'value' => ''));
+ $username = kolab_html::div(array(
+ 'class' => 'form-group input-group input-group-lg',
+ 'content' => kolab_html::label(array(
+ 'for' => 'login_name',
+ 'class' => 'font-icon login input-group-prepend input-group-text',
+ 'content' => kolab_html::span(array(
+ 'class' => 'sr-only',
+ 'content' => $this->translate('login.username'), true))))
+ . kolab_html::input(array(
+ 'type' => 'text',
+ 'id' => 'login_name',
+ 'name' => 'login[username]',
+ 'value' => $post['username'],
+ 'placeholder' => $this->translate('login.username'),
+ 'autofocus' => true))
+ ));
+
+ $password = kolab_html::div(array(
+ 'class' => 'form-group input-group input-group-lg',
+ 'content' => kolab_html::label(array(
+ 'for' => 'login_pass',
+ 'class' => 'font-icon password input-group-prepend input-group-text',
+ 'content' => kolab_html::span(array(
+ 'class' => 'sr-only',
+ 'content' => $this->translate('login.password'), true))))
+ . kolab_html::input(array(
+ 'type' => 'password',
+ 'id' => 'login_pass',
+ 'name' => 'login[password]',
+ 'placeholder' => $this->translate('login.password'),
+ 'value' => ''))
+ ));
$button = kolab_html::input(array(
'type' => 'submit',
'id' => 'login_submit',
+ 'class' => 'btn btn-primary btn-lg text-uppercase w-100',
'value' => $this->translate('login.login')));
$form = kolab_html::form(array(
@@ -822,9 +837,10 @@ class kolab_client_task
'name' => 'login',
'method' => 'post',
'action' => '?'),
- kolab_html::span(array('content' => $username))
- . kolab_html::span(array('content' => $password))
- . $button);
+ kolab_html::div(array('content' => $username))
+ . kolab_html::div(array('content' => $password))
+ . $button
+ );
return $form;
}
@@ -944,7 +960,7 @@ class kolab_client_task
$this->output->add_translation('ldap.one', 'ldap.sub', 'ldap.base',
'ldap.host', 'ldap.basedn','ldap.scope', 'ldap.conditions',
'ldap.filter_any', 'ldap.filter_both', 'ldap.filter_prefix', 'ldap.filter_suffix',
- 'ldap.filter_exact', 'ldap.filter_notexact'
+ 'ldap.filter_exact'
);
}
}
@@ -1225,7 +1241,7 @@ class kolab_client_task
$debug = kolab_html::escape(print_r($data, true));
$debug = preg_replace('/(^Array\n\(|\n*\)$|\t)/', '', $debug);
$debug = str_replace("\n ", "\n", $debug);
- $debug = '<pre class="debug">' . $debug . '</pre>';
+ $debug = '<pre class="debug form-control">' . $debug . '</pre>';
$fields['debug'] = array(
'label' => 'debug',
'section' => 'system',
@@ -1483,6 +1499,7 @@ class kolab_client_task
$id = $data['id'];
$form->add_button(array(
'value' => kolab_html::escape($this->translate('button.delete')),
+ 'class' => 'btn btn-danger',
'onclick' => "kadm.command('{$name}.delete', '{$id}')",
));
}
@@ -1718,12 +1735,12 @@ class kolab_client_task
$count_str = kolab_html::span(array(
'content' => $this->translate('list.records', $start, $end, $count)), true);
$prev = kolab_html::a(array(
- 'class' => 'prev' . ($prev ? '' : ' disabled'),
+ 'class' => 'prev font-icon' . ($prev ? '' : ' disabled'),
'href' => '#',
'onclick' => $prev ? "kadm.command('$task.list', {page: $prev})" : "return false",
));
$next = kolab_html::a(array(
- 'class' => 'next' . ($next ? '' : ' disabled'),
+ 'class' => 'next font-icon' . ($next ? '' : ' disabled'),
'href' => '#',
'onclick' => $next ? "kadm.command('$task.list', {page: $next})" : "return false",
));
@@ -1772,7 +1789,7 @@ class kolab_client_task
$table = kolab_html::table(array(
'id' => $task . 'list',
- 'class' => $table_class,
+ 'class' => $table_class . ' table table-sm',
'head' => $head,
'body' => $rows,
'foot' => $foot,
diff --git a/lib/kolab_form.php b/lib/kolab_form.php
index 9ebf900..ec0afde 100644
--- a/lib/kolab_form.php
+++ b/lib/kolab_form.php
@@ -145,7 +145,7 @@ class kolab_form
if (!empty($rows)) {
$content .= "\n" . kolab_html::fieldset(array(
'legend' => $set,
- 'content' => kolab_html::table(array('body' => $rows, 'class' => 'form')),
+ 'content' => implode("\n", $rows),
'class' => $this->active_section == $set_idx ? 'active' : '',
));
}
@@ -168,7 +168,7 @@ class kolab_form
}
if (!empty($rows)) {
- $content = kolab_html::table(array('body' => $rows, 'class' => 'form'));
+ $content = implode("\n", $rows);
}
if (!empty($hidden)) {
@@ -214,34 +214,39 @@ class kolab_form
*/
private function form_row($element)
{
- $attrib = array();
+ $attrib['class'] = 'form-group';
if (!empty($element['required']) && empty($element['readonly']) && empty($element['disabled'])) {
- $attrib['class'] = 'required';
+ $attrib['class'] .= ' required';
}
if ($element['type'] == self::INPUT_CONTENT) {
- $attrib['cells'] = array(
- 0 => array(
- 'class' => $element['class'],
- 'colspan' => 2,
- 'body' => $element['content'],
- ),
- );
+ $attrib['content'] = kolab_html::div(array(
+ 'class' => $element['class'],
+ 'content' => $element['content'],
+ ));
}
else {
- $attrib['cells'] = array(
- 0 => array(
- 'class' => 'label',
- 'body' => $element['label'],
- ),
- 1 => array(
- 'class' => 'value',
- 'body' => self::get_element($element),
- ),
- );
+ $attrib['class'] .= ' row';
+ $content = self::get_element($element);
+ $class = 'col-sm-9' . ($content[0] != '<' ? ' form-control-plaintext' : '');
+
+ if (is_array($element) && $element['input-group']) {
+ $class .= ' input-group';
+ }
+
+ $attrib['content'] = kolab_html::label(array(
+ 'class' => 'col-form-label col-sm-3',
+ 'content' => $element['label'],
+ ), true)
+ . kolab_html::div(array(
+ 'class' => $class,
+ 'content' => $content,
+ ));
}
+ return kolab_html::div($attrib);
+
return $attrib;
}
@@ -269,10 +274,6 @@ class kolab_form
}
}
- if ($attribs['size'] >= 40) {
- $attribs['class'] = (!empty($attribs['class']) ? $attribs['class'] . ' ' : '') . 'maxsize';
- }
-
$content = kolab_html::input($attribs);
break;
diff --git a/lib/kolab_html.php b/lib/kolab_html.php
index 895647e..a2088a1 100644
--- a/lib/kolab_html.php
+++ b/lib/kolab_html.php
@@ -37,7 +37,7 @@ class kolab_html
public static $td_attribs = array('colspan', 'rowspan');
public static $textarea_attribs = array('cols', 'rows', 'disabled', 'name', 'readonly', 'tabindex');
public static $input_attribs = array('checked', 'disabled', 'name', 'readonly', 'tabindex',
- 'type', 'size', 'maxlength', 'value', 'autofocus');
+ 'type', 'size', 'maxlength', 'value', 'autofocus', 'placeholder');
public static $select_attribs = array('multiple', 'name', 'size', 'disabled', 'readonly', 'autofocus');
public static $option_attribs = array('selected', 'value', 'disabled', 'readonly');
public static $a_attribs = array('href', 'name', 'rel', 'tabindex', 'target');
@@ -66,7 +66,7 @@ class kolab_html
if (!empty($attribs['head']) && is_array($attribs['head'])) {
$table .= '<thead>';
foreach ($attribs['head'] as $row) {
- $table .= "\n" . self::tr($row, null, true);
+ $table .= "\n" . self::tr($row, true);
}
$table .= '</thead>';
}
@@ -155,6 +155,20 @@ class kolab_html
$attribs['disabled'] = 'disabled';
}
+ if ($attribs['type'] == 'button' || $attribs['type'] == 'submit') {
+ $attribs['class'] = trim($attribs['class'] . ' btn');
+
+ if (!preg_match('/btn-/', $attribs['class'])) {
+ $attribs['class'] .= ' btn-' . (strpos($attribs['class'], 'submit') !== false ? 'primary' : 'secondary');
+ }
+ }
+ else if ($attribs['type'] == 'checkbox') {
+ // TODO: Bootstrap style
+ }
+ else {
+ $attribs['class'] = trim($attribs['class'] . ' form-control');
+ }
+
return sprintf('<input%s />', self::attrib_string($attribs, $elem_attribs));
}
@@ -205,8 +219,12 @@ class kolab_html
}
$attribs['data-type'] = 'quota';
+ $select['class'] = 'input-group-append';
- return self::input($attribs) . self::select($select);
+ return self::div(array(
+ 'class' => 'input-group',
+ 'content' => self::input($attribs) . self::select($select)
+ ));
}
/**
@@ -228,6 +246,8 @@ class kolab_html
$content = self::escape($content);
}
+ $attribs['class'] = trim($attribs['class'] . ' form-control');
+
return sprintf('<textarea%s>%s</textarea>',
self::attrib_string($attribs, $elem_attribs), $content);
}
@@ -271,6 +291,8 @@ class kolab_html
}
}
+ $attribs['class'] = trim($attribs['class'] . ' custom-select');
+
return sprintf('<select%s>%s</select>',
self::attrib_string($attribs, $elem_attribs), implode("\n", $content));
}
diff --git a/lib/locale/bg_BG.php b/lib/locale/bg_BG.php
index 21d2094..4c92021 100644
--- a/lib/locale/bg_BG.php
+++ b/lib/locale/bg_BG.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 to $2 of $3';
$LANG['loading'] = 'Loading...';
$LANG['logout'] = 'Logout';
-$LANG['login.username'] = 'Username:';
-$LANG['login.password'] = 'Password:';
-$LANG['login.domain'] = 'Domain:';
+$LANG['login.username'] = 'Username';
+$LANG['login.password'] = 'Password';
$LANG['login.login'] = 'Login';
$LANG['loginerror'] = 'Incorrect username or password!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Role Type';
$LANG['saving'] = 'Запазване на данни...';
-$LANG['search'] = 'Search';
+$LANG['search'] = 'Search...';
$LANG['search.reset'] = 'Reset';
$LANG['search.criteria'] = 'Search criteria';
$LANG['search.field'] = 'Field:';
diff --git a/lib/locale/cs_CZ.php b/lib/locale/cs_CZ.php
index dfb80b1..26206c7 100644
--- a/lib/locale/cs_CZ.php
+++ b/lib/locale/cs_CZ.php
@@ -201,9 +201,9 @@ $LANG['list.records'] = '$1 to $2 of $3';
$LANG['loading'] = 'Loading...';
$LANG['logout'] = 'Logout';
-$LANG['login.username'] = 'Username:';
-$LANG['login.password'] = 'Password:';
-$LANG['login.domain'] = 'Domain:';
+$LANG['login.username'] = 'Username';
+$LANG['login.password'] = 'Password';
+$LANG['login.domain'] = 'Domain';
$LANG['login.login'] = 'Login';
$LANG['loginerror'] = 'Incorrect username or password!';
$LANG['MB'] = 'MB';
@@ -273,7 +273,7 @@ $LANG['role.type_id'] = 'Role Type';
$LANG['saving'] = 'Ukládám data...';
-$LANG['search'] = 'Search';
+$LANG['search'] = 'Search...';
$LANG['search.reset'] = 'Reset';
$LANG['search.criteria'] = 'Search criteria';
$LANG['search.field'] = 'Field:';
diff --git a/lib/locale/de_CH.php b/lib/locale/de_CH.php
index 33c47f1..5750530 100644
--- a/lib/locale/de_CH.php
+++ b/lib/locale/de_CH.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 to $2 of $3';
$LANG['loading'] = 'Laden...';
$LANG['logout'] = 'Abmelden';
-$LANG['login.username'] = 'Username:';
-$LANG['login.password'] = 'Password:';
-$LANG['login.domain'] = 'Domain:';
+$LANG['login.username'] = 'Username';
+$LANG['login.password'] = 'Password';
$LANG['login.login'] = 'Login';
$LANG['loginerror'] = 'Benutzername oder Passwort inkorrekt!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Role Type';
$LANG['saving'] = 'Speichere...';
-$LANG['search'] = 'Suchen';
+$LANG['search'] = 'Suchen...';
$LANG['search.reset'] = 'Reset';
$LANG['search.criteria'] = 'Search criteria';
$LANG['search.field'] = 'Field:';
diff --git a/lib/locale/de_DE.php b/lib/locale/de_DE.php
index 1727518..bfc8934 100644
--- a/lib/locale/de_DE.php
+++ b/lib/locale/de_DE.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 zu $2 von $3';
$LANG['loading'] = 'Laden…';
$LANG['logout'] = 'Abmelden';
-$LANG['login.username'] = 'Benutzername:';
-$LANG['login.password'] = 'Passwort:';
-$LANG['login.domain'] = 'Domäne:';
+$LANG['login.username'] = 'Benutzername';
+$LANG['login.password'] = 'Passwort';
$LANG['login.login'] = 'Anmelden';
$LANG['loginerror'] = 'Ungültiger Benutzername oder Passwort!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Rollentyp';
$LANG['saving'] = 'Speichern…';
-$LANG['search'] = 'Suchen';
+$LANG['search'] = 'Suchen...';
$LANG['search.reset'] = 'Zurücksetzen';
$LANG['search.criteria'] = 'Suchkriterien';
$LANG['search.field'] = 'Feld:';
diff --git a/lib/locale/en_US.php b/lib/locale/en_US.php
index 4cbe353..d67c413 100644
--- a/lib/locale/en_US.php
+++ b/lib/locale/en_US.php
@@ -193,15 +193,13 @@ $LANG['ldap.filter_both'] = 'contains';
$LANG['ldap.filter_prefix'] = 'starts with';
$LANG['ldap.filter_suffix'] = 'ends with';
$LANG['ldap.filter_exact'] = 'is equal to';
-$LANG['ldap.filter_notexact'] = 'is not equal to';
$LANG['list.records'] = '$1 to $2 of $3';
$LANG['loading'] = 'Loading...';
$LANG['logout'] = 'Logout';
-$LANG['login.username'] = 'Username:';
-$LANG['login.password'] = 'Password:';
-$LANG['login.domain'] = 'Domain:';
+$LANG['login.username'] = 'Username';
+$LANG['login.password'] = 'Password';
$LANG['login.login'] = 'Login';
$LANG['loginerror'] = 'Incorrect username or password!';
$LANG['MB'] = 'MB';
@@ -272,7 +270,7 @@ $LANG['role.type_id'] = 'Role Type';
$LANG['saving'] = 'Saving data...';
-$LANG['search'] = 'Search';
+$LANG['search'] = 'Search...';
$LANG['search.reset'] = 'Reset';
$LANG['search.criteria'] = 'Search criteria';
$LANG['search.field'] = 'Field:';
diff --git a/lib/locale/es_ES.php b/lib/locale/es_ES.php
index 082478b..c37c800 100644
--- a/lib/locale/es_ES.php
+++ b/lib/locale/es_ES.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 to $2 of $3';
$LANG['loading'] = 'Cargando...';
$LANG['logout'] = 'Desloguearse';
-$LANG['login.username'] = 'Nombre de usuario:';
-$LANG['login.password'] = 'Contraseña:';
-$LANG['login.domain'] = 'Dominio:';
+$LANG['login.username'] = 'Nombre de usuario';
+$LANG['login.password'] = 'Contraseña';
$LANG['login.login'] = 'Login';
$LANG['loginerror'] = '¡Nombre de usuario o contraseña incorrectos!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Tipo de Rol';
$LANG['saving'] = 'Guardando datos...';
-$LANG['search'] = 'Buscar';
+$LANG['search'] = 'Buscar...';
$LANG['search.reset'] = 'Restablecer';
$LANG['search.criteria'] = 'Criterio de búsqueda';
$LANG['search.field'] = 'Campo:';
diff --git a/lib/locale/et_EE.php b/lib/locale/et_EE.php
index 08ec479..4e5d9d1 100644
--- a/lib/locale/et_EE.php
+++ b/lib/locale/et_EE.php
@@ -201,9 +201,9 @@ $LANG['list.records'] = '$1 to $2 of $3';
$LANG['loading'] = 'Loading...';
$LANG['logout'] = 'Logout';
-$LANG['login.username'] = 'Username:';
-$LANG['login.password'] = 'Password:';
-$LANG['login.domain'] = 'Domain:';
+$LANG['login.username'] = 'Username';
+$LANG['login.password'] = 'Password';
+$LANG['login.domain'] = 'Domain';
$LANG['login.login'] = 'Login';
$LANG['loginerror'] = 'Incorrect username or password!';
$LANG['MB'] = 'MB';
@@ -273,7 +273,7 @@ $LANG['role.type_id'] = 'Role Type';
$LANG['saving'] = 'Saving data...';
-$LANG['search'] = 'Search';
+$LANG['search'] = 'Search...';
$LANG['search.reset'] = 'Reset';
$LANG['search.criteria'] = 'Search criteria';
$LANG['search.field'] = 'Field:';
diff --git a/lib/locale/fi_FI.php b/lib/locale/fi_FI.php
index 6ae5835..d9b9b58 100644
--- a/lib/locale/fi_FI.php
+++ b/lib/locale/fi_FI.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 to $2 of $3';
$LANG['loading'] = 'Ladataan...';
$LANG['logout'] = 'Kirjaudu ulos';
-$LANG['login.username'] = 'Käyttäjätunnus:';
-$LANG['login.password'] = 'Salasana:';
-$LANG['login.domain'] = 'Toimialue:';
+$LANG['login.username'] = 'Käyttäjätunnus';
+$LANG['login.password'] = 'Salasana';
$LANG['login.login'] = 'Kirjaudu';
$LANG['loginerror'] = 'Väärä käyttäjätunnus tai salasana!';
$LANG['MB'] = 'Mt';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Roolin tyyppi';
$LANG['saving'] = 'Tallennetaan tietoja...';
-$LANG['search'] = 'Etsi';
+$LANG['search'] = 'Etsi...';
$LANG['search.reset'] = 'Reset';
$LANG['search.criteria'] = 'Search criteria';
$LANG['search.field'] = 'Kenttä:';
diff --git a/lib/locale/fr_FR.php b/lib/locale/fr_FR.php
index c86e2de..f77312c 100644
--- a/lib/locale/fr_FR.php
+++ b/lib/locale/fr_FR.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 to $2 of $3';
$LANG['loading'] = 'Chargement...';
$LANG['logout'] = 'Déconnexion';
-$LANG['login.username'] = 'Nom d\'Utilisateur:';
-$LANG['login.password'] = 'Mot de passe:';
-$LANG['login.domain'] = 'Domaine:';
+$LANG['login.username'] = 'Nom d\'Utilisateur';
+$LANG['login.password'] = 'Mot de passe';
$LANG['login.login'] = 'Se connecter';
$LANG['loginerror'] = 'Nom d\'utilisateur ou mot de passe incorrect!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Type de Rôle';
$LANG['saving'] = 'Enregistrer...';
-$LANG['search'] = 'Chercher';
+$LANG['search'] = 'Chercher...';
$LANG['search.reset'] = 'Réinitialiser';
$LANG['search.criteria'] = 'Critères de recherche';
$LANG['search.field'] = 'Champ:';
diff --git a/lib/locale/it_IT.php b/lib/locale/it_IT.php
index cc20cb8..c807303 100644
--- a/lib/locale/it_IT.php
+++ b/lib/locale/it_IT.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 to $2 of $3';
$LANG['loading'] = 'Caricamento...';
$LANG['logout'] = 'Logout';
-$LANG['login.username'] = 'Nome Utente:';
-$LANG['login.password'] = 'Password:';
-$LANG['login.domain'] = 'Dominio:';
+$LANG['login.username'] = 'Nome Utente';
+$LANG['login.password'] = 'Password';
$LANG['login.login'] = 'Accedi';
$LANG['loginerror'] = 'Nome utente o password errati!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Role Type';
$LANG['saving'] = 'Salvataggio dati...';
-$LANG['search'] = 'Search';
+$LANG['search'] = 'Search...';
$LANG['search.reset'] = 'Reset';
$LANG['search.criteria'] = 'Search criteria';
$LANG['search.field'] = 'Field:';
diff --git a/lib/locale/ja_JP.php b/lib/locale/ja_JP.php
index df1eba4..f6a3a7c 100644
--- a/lib/locale/ja_JP.php
+++ b/lib/locale/ja_JP.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1から$2 $3中';
$LANG['loading'] = '読込中…';
$LANG['logout'] = 'ログアウト';
-$LANG['login.username'] = 'ユーザ名:';
-$LANG['login.password'] = 'パスワード:';
-$LANG['login.domain'] = 'ドメイン:';
+$LANG['login.username'] = 'ユーザ名';
+$LANG['login.password'] = 'パスワード';
$LANG['login.login'] = 'ログイン';
$LANG['loginerror'] = 'ユーザ名もしくはパスワードが違います!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'ロールタイプ';
$LANG['saving'] = 'データを保存中…';
-$LANG['search'] = '検索';
+$LANG['search'] = '検索...';
$LANG['search.reset'] = 'リセット';
$LANG['search.criteria'] = '検索設定';
$LANG['search.field'] = 'フィールド:';
diff --git a/lib/locale/nl_NL.php b/lib/locale/nl_NL.php
index c678df9..3bc1d45 100644
--- a/lib/locale/nl_NL.php
+++ b/lib/locale/nl_NL.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 tot $2 van $3';
$LANG['loading'] = 'Bezig met laden...';
$LANG['logout'] = 'Uitloggen';
-$LANG['login.username'] = 'Gebruikersnaam:';
-$LANG['login.password'] = 'Wachtwoord:';
-$LANG['login.domain'] = 'Domein:';
+$LANG['login.username'] = 'Gebruikersnaam';
+$LANG['login.password'] = 'Wachtwoord';
$LANG['login.login'] = 'Gebruikersnaam';
$LANG['loginerror'] = 'Incorrecte gebruikersnaam of wachtwoord!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Rol Type';
$LANG['saving'] = 'Bezig data op te slaan...';
-$LANG['search'] = 'Zoeken';
+$LANG['search'] = 'Zoeken...';
$LANG['search.reset'] = 'Reset';
$LANG['search.criteria'] = 'Zoek criteria';
$LANG['search.field'] = 'Veld:';
diff --git a/lib/locale/pl_PL.php b/lib/locale/pl_PL.php
index d2ef1f7..71d5212 100644
--- a/lib/locale/pl_PL.php
+++ b/lib/locale/pl_PL.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 do $2 z $3';
$LANG['loading'] = 'Ładowanie...';
$LANG['logout'] = 'Wyloguj';
-$LANG['login.username'] = 'Nazwa użytkownika:';
-$LANG['login.password'] = 'Hasło:';
-$LANG['login.domain'] = 'Domena:';
+$LANG['login.username'] = 'Nazwa użytkownika';
+$LANG['login.password'] = 'Hasło';
$LANG['login.login'] = 'Zaloguj';
$LANG['loginerror'] = 'Nieprawidłowa nazwa użytkownika lub hasło!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Typ roli';
$LANG['saving'] = 'Zapisywanie danych...';
-$LANG['search'] = 'Znajdź';
+$LANG['search'] = 'Wyszukaj...';
$LANG['search.reset'] = 'Wyczyść';
$LANG['search.criteria'] = 'Kryteria wyszukiwania';
$LANG['search.field'] = 'Pole:';
diff --git a/lib/locale/pt_BR.php b/lib/locale/pt_BR.php
index 63c8b99..69c3916 100644
--- a/lib/locale/pt_BR.php
+++ b/lib/locale/pt_BR.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = '$1 - $2 de $3';
$LANG['loading'] = 'Carregando...';
$LANG['logout'] = 'Deslogar';
-$LANG['login.username'] = 'Usuário:';
-$LANG['login.password'] = 'Senha:';
-$LANG['login.domain'] = 'Domínio:';
+$LANG['login.username'] = 'Usuário';
+$LANG['login.password'] = 'Senha';
$LANG['login.login'] = 'Usuário';
$LANG['loginerror'] = 'O usuário ou senha estão incorretos!';
$LANG['MB'] = 'MB';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Tipo da função';
$LANG['saving'] = 'Salvando dados...';
-$LANG['search'] = 'Pesquisar';
+$LANG['search'] = 'Pesquisar...';
$LANG['search.reset'] = 'Redefinir';
$LANG['search.criteria'] = 'Critério da pesquisa';
$LANG['search.field'] = 'Campo:';
diff --git a/lib/locale/ru_RU.php b/lib/locale/ru_RU.php
index dda3564..d498765 100644
--- a/lib/locale/ru_RU.php
+++ b/lib/locale/ru_RU.php
@@ -201,9 +201,8 @@ $LANG['list.records'] = 'от $1 до $2 из $3';
$LANG['loading'] = 'Загрузка...';
$LANG['logout'] = 'Выход';
-$LANG['login.username'] = 'Имя пользователя:';
-$LANG['login.password'] = 'Пароль:';
-$LANG['login.domain'] = 'Домен:';
+$LANG['login.username'] = 'Имя пользователя';
+$LANG['login.password'] = 'Пароль';
$LANG['login.login'] = 'Логин';
$LANG['loginerror'] = 'Неверное имя пользователя или пароль!';
$LANG['MB'] = 'МБ';
@@ -273,7 +272,7 @@ $LANG['role.type_id'] = 'Тип роли';
$LANG['saving'] = 'Сохранение данных...';
-$LANG['search'] = 'Поиск';
+$LANG['search'] = 'Поиск...';
$LANG['search.reset'] = 'Сбросить';
$LANG['search.criteria'] = 'Критерий';
$LANG['search.field'] = 'Поле:';
diff --git a/public_html/js/jquery.datetimepicker.js b/public_html/js/jquery.datetimepicker.js
deleted file mode 100644
index bf64572..0000000
--- a/public_html/js/jquery.datetimepicker.js
+++ /dev/null
@@ -1,1287 +0,0 @@
-/**
- * @preserve jQuery DateTimePicker plugin v2.2.5
- * @homepage http://xdsoft.net/jqplugins/datetimepicker/
- * (c) 2014, Chupurnov Valeriy.
- */
-(function( $ ) {
- 'use strict'
- var default_options = {
- i18n:{
- ru:{ // Russian
- months:[
- 'Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'
- ],
- dayOfWeek:[
- "Вск", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"
- ]
- },
- en:{ // English
- months: [
- "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
- ],
- dayOfWeek: [
- "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
- ]
- },
- de:{ // German
- months:[
- 'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'
- ],
- dayOfWeek:[
- "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"
- ]
- },
- nl:{ // Dutch
- months:[
- "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"
- ],
- dayOfWeek:[
- "zo", "ma", "di", "wo", "do", "vr", "za"
- ]
- },
- tr:{ // Turkish
- months:[
- "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"
- ],
- dayOfWeek:[
- "Paz", "Pts", "Sal", "Çar", "Per", "Cum", "Cts"
- ]
- },
- fr:{ //French
- months:[
- "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"
- ],
- dayOfWeek:[
- "Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"
- ]
- },
- es:{ // Spanish
- months: [
- "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"
- ],
- dayOfWeek: [
- "Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"
- ]
- },
- th:{ // Thai
- months:[
- 'มกราคม','กุมภาพันธ์','มีนาคม','เมษายน','พฤษภาคม','มิถุนายน','กรกฎาคม','สิงหาคม','กันยายน','ตุลาคม','พฤศจิกายน','ธันวาคม'
- ],
- dayOfWeek:[
- 'อา.','จ.','อ.','พ.','พฤ.','ศ.','ส.'
- ]
- },
- pl:{ // Polish
- months: [
- "styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"
- ],
- dayOfWeek: [
- "nd", "pn", "wt", "śr", "cz", "pt", "sb"
- ]
- },
- pt:{ // Portuguese
- months: [
- "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"
- ],
- dayOfWeek: [
- "Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"
- ]
- },
- ch:{ // Simplified Chinese
- months: [
- "一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"
- ],
- dayOfWeek: [
- "日", "一","二","三","四","五","六"
- ]
- },
- se:{ // Swedish
- months: [
- "Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September","Oktober", "November", "December"
- ],
- dayOfWeek: [
- "Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"
- ]
- },
- kr:{ // Korean
- months: [
- "1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"
- ],
- dayOfWeek: [
- "일", "월", "화", "수", "목", "금", "토"
- ]
- },
- it:{ // Italian
- months: [
- "Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"
- ],
- dayOfWeek: [
- "Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"
- ]
- },
- da:{ // Dansk
- months: [
- "January", "Februar", "Marts", "April", "Maj", "Juni", "July", "August", "September", "Oktober", "November", "December"
- ],
- dayOfWeek: [
- "Søn", "Man", "Tir", "ons", "Tor", "Fre", "lør"
- ]
- },
- ja:{ // Japanese
- months: [
- "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"
- ],
- dayOfWeek: [
- "日", "月", "火", "水", "木", "金", "土"
- ]
- }
- },
- value:'',
- lang: 'en',
-
- format: 'Y/m/d H:i',
- formatTime: 'H:i',
- formatDate: 'Y/m/d',
-
- startDate: false, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05',
-
- //fromUnixtime: false,
-
- step:60,
-
- closeOnDateSelect:false,
- closeOnWithoutClick:true,
-
- timepicker:true,
- datepicker:true,
-
- minDate:false,
- maxDate:false,
- minTime:false,
- maxTime:false,
-
- allowTimes:[],
- opened:false,
- initTime:true,
- inline:false,
-
- onSelectDate:function() {},
- onSelectTime:function() {},
- onChangeMonth:function() {},
- onChangeDateTime:function() {},
- onShow:function() {},
- onClose:function() {},
- onGenerate:function() {},
-
- withoutCopyright:true,
-
- inverseButton:false,
- hours12:false,
- next: 'xdsoft_next',
- prev : 'xdsoft_prev',
- dayOfWeekStart:0,
-
- timeHeightInTimePicker:25,
- timepickerScrollbar:true,
-
- todayButton:true, // 2.1.0
- defaultSelect:true, // 2.1.0
-
- scrollMonth:true,
- scrollTime:true,
- scrollInput:true,
-
- lazyInit:false,
-
- mask:false,
- validateOnBlur:true,
- allowBlank:true,
-
- yearStart:1950,
- yearEnd:2050,
-
- style:'',
- id:'',
-
- roundTime:'round', // ceil, floor
- className:'',
-
- weekends : [],
- yearOffset:0
- };
-
- // fix for ie8
- if ( !Array.prototype.indexOf ) {
- Array.prototype.indexOf = function(obj, start) {
- for (var i = (start || 0), j = this.length; i < j; i++) {
- if (this[i] === obj) { return i; }
- }
- return -1;
- }
- };
-
- $.fn.xdsoftScroller = function( _percent ) {
- return this.each(function() {
- var timeboxparent = $(this);
- if( !$(this).hasClass('xdsoft_scroller_box') ) {
- var pointerEventToXY = function( e ) {
- var out = {x:0, y:0};
- if( e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel' ) {
- var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
- out.x = touch.pageX;
- out.y = touch.pageY;
- }else if (e.type == 'mousedown' || e.type == 'mouseup' || e.type == 'mousemove' || e.type == 'mouseover'|| e.type=='mouseout' || e.type=='mouseenter' || e.type=='mouseleave') {
- out.x = e.pageX;
- out.y = e.pageY;
- }
- return out;
- },
- move = 0,
- timebox = timeboxparent.children().eq(0),
- parentHeight = timeboxparent[0].clientHeight,
- height = timebox[0].offsetHeight,
- scrollbar = $('<div class="xdsoft_scrollbar"></div>'),
- scroller = $('<div class="xdsoft_scroller"></div>'),
- maximumOffset = 100,
- start = false;
-
- scrollbar.append(scroller);
-
- timeboxparent.addClass('xdsoft_scroller_box').append(scrollbar);
- scroller.on('mousedown.xdsoft_scroller',function ( event ) {
- if( !parentHeight )
- timeboxparent.trigger('resize_scroll.xdsoft_scroller',[_percent]);
- var pageY = event.pageY,
- top = parseInt(scroller.css('margin-top')),
- h1 = scrollbar[0].offsetHeight;
- $(document.body).addClass('xdsoft_noselect');
- $([document.body,window]).on('mouseup.xdsoft_scroller',function arguments_callee() {
- $([document.body,window]).off('mouseup.xdsoft_scroller',arguments_callee)
- .off('mousemove.xdsoft_scroller',move)
- .removeClass('xdsoft_noselect');
- });
- $(document.body).on('mousemove.xdsoft_scroller',move = function(event) {
- var offset = event.pageY-pageY+top;
- if( offset<0 )
- offset = 0;
- if( offset+scroller[0].offsetHeight>h1 )
- offset = h1-scroller[0].offsetHeight;
- timeboxparent.trigger('scroll_element.xdsoft_scroller',[maximumOffset?offset/maximumOffset:0]);
- });
- });
-
- timeboxparent
- .on('scroll_element.xdsoft_scroller',function( event,percent ) {
- if( !parentHeight )
- timeboxparent.trigger('resize_scroll.xdsoft_scroller',[percent,true]);
- percent = percent>1?1:(percent<0||isNaN(percent))?0:percent;
- scroller.css('margin-top',maximumOffset*percent);
- timebox.css('marginTop',-parseInt((height-parentHeight)*percent))
- })
- .on('resize_scroll.xdsoft_scroller',function( event,_percent,noTriggerScroll ) {
- parentHeight = timeboxparent[0].clientHeight;
- height = timebox[0].offsetHeight;
- var percent = parentHeight/height,
- sh = percent*scrollbar[0].offsetHeight;
- if( percent>1 )
- scroller.hide();
- else{
- scroller.show();
- scroller.css('height',parseInt(sh>10?sh:10));
- maximumOffset = scrollbar[0].offsetHeight-scroller[0].offsetHeight;
- if( noTriggerScroll!==true )
- timeboxparent.trigger('scroll_element.xdsoft_scroller',[_percent?_percent:Math.abs(parseInt(timebox.css('marginTop')))/(height-parentHeight)]);
- }
- });
- timeboxparent.mousewheel&&timeboxparent.mousewheel(function(event, delta, deltaX, deltaY) {
- var top = Math.abs(parseInt(timebox.css('marginTop')));
- timeboxparent.trigger('scroll_element.xdsoft_scroller',[(top-delta*20)/(height-parentHeight)]);
- event.stopPropagation();
- return false;
- });
- timeboxparent.on('touchstart',function( event ) {
- start = pointerEventToXY(event);
- });
- timeboxparent.on('touchmove',function( event ) {
- if( start ) {
- var coord = pointerEventToXY(event), top = Math.abs(parseInt(timebox.css('marginTop')));
- timeboxparent.trigger('scroll_element.xdsoft_scroller',[(top-(coord.y-start.y))/(height-parentHeight)]);
- event.stopPropagation();
- event.preventDefault();
- };
- });
- timeboxparent.on('touchend touchcancel',function( event ) {
- start = false;
- });
- }
- timeboxparent.trigger('resize_scroll.xdsoft_scroller',[_percent]);
- });
- };
- $.fn.datetimepicker = function( opt ) {
- var KEY0 = 48,
- KEY9 = 57,
- _KEY0 = 96,
- _KEY9 = 105,
- CTRLKEY = 17,
- DEL = 46,
- ENTER = 13,
- ESC = 27,
- BACKSPACE = 8,
- ARROWLEFT = 37,
- ARROWUP = 38,
- ARROWRIGHT = 39,
- ARROWDOWN = 40,
- TAB = 9,
- F5 = 116,
- AKEY = 65,
- CKEY = 67,
- VKEY = 86,
- ZKEY = 90,
- YKEY = 89,
- ctrlDown = false,
- options = ($.isPlainObject(opt)||!opt)?$.extend(true,{},default_options,opt):$.extend({},default_options),
-
- lazyInitTimer = 0,
-
- lazyInit = function( input ){
- input
- .on('open.xdsoft focusin.xdsoft mousedown.xdsoft',function initOnActionCallback(event) {
- if( input.is(':disabled')||input.is(':hidden')||!input.is(':visible')||input.data( 'xdsoft_datetimepicker') )
- return;
-
- clearTimeout(lazyInitTimer);
-
- lazyInitTimer = setTimeout(function() {
-
- if( !input.data( 'xdsoft_datetimepicker') )
- createDateTimePicker(input);
-
- input
- .off('open.xdsoft focusin.xdsoft mousedown.xdsoft',initOnActionCallback)
- .trigger('open.xdsoft');
- },100);
-
- });
- },
-
- createDateTimePicker = function( input ) {
-
- var datetimepicker = $('<div '+(options.id?'id="'+options.id+'"':'')+' '+(options.style?'style="'+options.style+'"':'')+' class="xdsoft_datetimepicker xdsoft_noselect '+options.className+'"></div>'),
- xdsoft_copyright = $('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),
- datepicker = $('<div class="xdsoft_datepicker active"></div>'),
- mounth_picker = $('<div class="xdsoft_mounthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span></div><div class="xdsoft_label xdsoft_year"><span></span></div><button type="button" class="xdsoft_next"></button></div>'),
- calendar = $('<div class="xdsoft_calendar"></div>'),
- timepicker = $('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),
- timeboxparent = timepicker.find('.xdsoft_time_box').eq(0),
- timebox = $('<div class="xdsoft_time_variant"></div>'),
- scrollbar = $('<div class="xdsoft_scrollbar"></div>'),
- scroller = $('<div class="xdsoft_scroller"></div>'),
- monthselect =$('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),
- yearselect =$('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>');
-
- //constructor lego
- mounth_picker
- .find('.xdsoft_month span')
- .after(monthselect);
- mounth_picker
- .find('.xdsoft_year span')
- .after(yearselect);
-
- mounth_picker
- .find('.xdsoft_month,.xdsoft_year')
- .on('mousedown.xdsoft',function(event) {
- mounth_picker
- .find('.xdsoft_select')
- .hide();
-
- var select = $(this).find('.xdsoft_select').eq(0),
- val = 0,
- top = 0;
-
- if( _xdsoft_datetime.currentTime )
- val = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month')?'getMonth':'getFullYear']();
-
- select.show();
-
- for(var items = select.find('div.xdsoft_option'),i = 0;i<items.length;i++) {
- if( items.eq(i).data('value')==val ) {
- break;
- }else top+=items[0].offsetHeight;
- }
-
- select.xdsoftScroller(top/(select.children()[0].offsetHeight-(select[0].clientHeight)));
- event.stopPropagation();
-
- return false;
- });
-
- mounth_picker
- .find('.xdsoft_select')
- .xdsoftScroller()
- .on('mousedown.xdsoft',function( event ) {
- event.stopPropagation();
- event.preventDefault();
- })
- .on('mousedown.xdsoft','.xdsoft_option',function( event ) {
- if( _xdsoft_datetime&&_xdsoft_datetime.currentTime )
- _xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect')?'setMonth':'setFullYear']($(this).data('value'));
-
- $(this).parent().parent().hide();
-
- datetimepicker.trigger('xchange.xdsoft');
- options.onChangeMonth&&options.onChangeMonth.call&&options.onChangeMonth.call(datetimepicker,_xdsoft_datetime.currentTime,datetimepicker.data('input'));
- });
-
-
- // set options
- datetimepicker.setOptions = function( _options ) {
- options = $.extend(true,{},options,_options);
-
- if( _options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length ){
- options['allowTimes'] = $.extend(true,[],_options.allowTimes);
- }
-
- if( _options.weekends && $.isArray(_options.weekends) && _options.weekends.length ){
- options['weekends'] = $.extend(true,[],_options.weekends);
- }
-
- if( (options.open||options.opened)&&(!options.inline) ) {
- input.trigger('open.xdsoft');
- }
-
- if( options.inline ) {
- datetimepicker.addClass('xdsoft_inline');
- input.after(datetimepicker).hide();
- datetimepicker.trigger('afterOpen.xdsoft');
- }
-
- if( options.inverseButton ) {
- options.next = 'xdsoft_prev';
- options.prev = 'xdsoft_next';
- }
-
- if( options.datepicker )
- datepicker.addClass('active');
- else
- datepicker.removeClass('active');
-
- if( options.timepicker )
- timepicker.addClass('active');
- else
- timepicker.removeClass('active');
-
- if( options.value ){
- input&&input.val&&input.val(options.value);
- _xdsoft_datetime.setCurrentTime(options.value);
- }
-
- if( isNaN(options.dayOfWeekStart)||parseInt(options.dayOfWeekStart)<0||parseInt(options.dayOfWeekStart)>6 )
- options.dayOfWeekStart = 0;
- else
- options.dayOfWeekStart = parseInt(options.dayOfWeekStart);
-
- if( !options.timepickerScrollbar )
- scrollbar.hide();
-
- if( options.minDate && /^-(.*)$/.test(options.minDate) ){
- options.minDate = _xdsoft_datetime.strToDateTime(options.minDate).dateFormat( options.formatDate );
- }
-
- if( options.maxDate && /^\+(.*)$/.test(options.maxDate) ) {
- options.maxDate = _xdsoft_datetime.strToDateTime(options.maxDate).dateFormat( options.formatDate );
- }
-
- mounth_picker
- .find('.xdsoft_today_button')
- .css('visibility',!options.todayButton?'hidden':'visible');
-
- if( options.mask ) {
- var e,
- getCaretPos = function ( input ) {
- try{
- if ( document.selection && document.selection.createRange ) {
- var range = document.selection.createRange();
- return range.getBookmark().charCodeAt(2) - 2;
- }else
- if ( input.setSelectionRange )
- return input.selectionStart;
- }catch(e) {
- return 0;
- }
- },
- setCaretPos = function ( node,pos ) {
- var node = (typeof node == "string" || node instanceof String) ? document.getElementById(node) : node;
- if(!node) {
- return false;
- }else if(node.createTextRange) {
- var textRange = node.createTextRange();
- textRange.collapse(true);
- textRange.moveEnd(pos);
- textRange.moveStart(pos);
- textRange.select();
- return true;
- }else if(node.setSelectionRange) {
- node.setSelectionRange(pos,pos);
- return true;
- }
- return false;
- },
- isValidValue = function ( mask,value ) {
- var reg = mask
- .replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,'\\$1')
- .replace(/_/g,'{digit+}')
- .replace(/([0-9]{1})/g,'{digit$1}')
- .replace(/\{digit([0-9]{1})\}/g,'[0-$1_]{1}')
- .replace(/\{digit[\+]\}/g,'[0-9_]{1}');
- return RegExp(reg).test(value);
- };
- input.off('keydown.xdsoft');
- switch(true) {
- case ( options.mask===true ):
-
- options.mask = options.format
- .replace(/Y/g,'9999')
- .replace(/F/g,'9999')
- .replace(/m/g,'19')
- .replace(/d/g,'39')
- .replace(/H/g,'29')
- .replace(/i/g,'59')
- .replace(/s/g,'59');
-
- case ( $.type(options.mask) == 'string' ):
-
- if( !isValidValue( options.mask,input.val() ) )
- input.val(options.mask.replace(/[0-9]/g,'_'));
-
- input.on('keydown.xdsoft',function( event ) {
- var val = this.value,
- key = event.which;
-
- switch(true) {
- case (( key>=KEY0&&key<=KEY9 )||( key>=_KEY0&&key<=_KEY9 ))||(key==BACKSPACE||key==DEL):
- var pos = getCaretPos(this),
- digit = ( key!=BACKSPACE&&key!=DEL )?String.fromCharCode((_KEY0 <= key && key <= _KEY9)? key-KEY0 : key):'_';
-
- if( (key==BACKSPACE||key==DEL)&&pos ) {
- pos--;
- digit='_';
- }
-
- while( /[^0-9_]/.test(options.mask.substr(pos,1))&&pos<options.mask.length&&pos>0 )
- pos+=( key==BACKSPACE||key==DEL )?-1:1;
-
- val = val.substr(0,pos)+digit+val.substr(pos+1);
- if( $.trim(val)=='' ){
- val = options.mask.replace(/[0-9]/g,'_');
- }else{
- if( pos==options.mask.length )
- break;
- }
-
- pos+=(key==BACKSPACE||key==DEL)?0:1;
- while( /[^0-9_]/.test(options.mask.substr(pos,1))&&pos<options.mask.length&&pos>0 )
- pos+=(key==BACKSPACE||key==DEL)?-1:1;
-
- if( isValidValue( options.mask,val ) ) {
- this.value = val;
- setCaretPos(this,pos);
- }else if( $.trim(val)=='' )
- this.value = options.mask.replace(/[0-9]/g,'_');
- else{
- input.trigger('error_input.xdsoft');
- }
- break;
- case ( !!~([AKEY,CKEY,VKEY,ZKEY,YKEY].indexOf(key))&&ctrlDown ):
- case !!~([ESC,ARROWUP,ARROWDOWN,ARROWLEFT,ARROWRIGHT,F5,CTRLKEY,TAB,ENTER].indexOf(key)):
- return true;
- }
- event.preventDefault();
- return false;
- });
- break;
- }
- }
- if( options.validateOnBlur ) {
- input
- .off('blur.xdsoft')
- .on('blur.xdsoft', function() {
- if( options.allowBlank && !$.trim($(this).val()).length ) {
- $(this).val(null);
- datetimepicker.data('xdsoft_datetime').empty();
- }else if( !Date.parseDate( $(this).val(), options.format ) ) {
- $(this).val((_xdsoft_datetime.now()).dateFormat( options.format ));
- datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
- }
- else{
- datetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());
- }
- datetimepicker.trigger('changedatetime.xdsoft');
- });
- }
- options.dayOfWeekStartPrev = (options.dayOfWeekStart==0)?6:options.dayOfWeekStart-1;
- datetimepicker
- .trigger('xchange.xdsoft');
- };
-
- datetimepicker
- .data('options',options)
- .on('mousedown.xdsoft',function( event ) {
- event.stopPropagation();
- event.preventDefault();
- yearselect.hide();
- monthselect.hide();
- return false;
- });
-
- var scroll_element = timepicker.find('.xdsoft_time_box');
- scroll_element.append(timebox);
- scroll_element.xdsoftScroller();
- datetimepicker.on('afterOpen.xdsoft',function() {
- scroll_element.xdsoftScroller();
- });
-
- datetimepicker
- .append(datepicker)
- .append(timepicker);
-
- if( options.withoutCopyright!==true )
- datetimepicker
- .append(xdsoft_copyright);
-
- datepicker
- .append(mounth_picker)
- .append(calendar);
-
- $('body').append(datetimepicker);
-
- var _xdsoft_datetime = new function() {
- var _this = this;
- _this.now = function() {
- var d = new Date();
- if( options.yearOffset )
- d.setFullYear(d.getFullYear()+options.yearOffset);
- return d;
- };
-
- _this.currentTime = this.now();
- _this.isValidDate = function (d) {
- if ( Object.prototype.toString.call(d) !== "[object Date]" )
- return false;
- return !isNaN(d.getTime());
- };
-
- _this.setCurrentTime = function( dTime) {
- _this.currentTime = (typeof dTime == 'string')? _this.strToDateTime(dTime) : _this.isValidDate(dTime) ? dTime: _this.now();
- datetimepicker.trigger('xchange.xdsoft');
- };
-
- _this.empty = function() {
- _this.currentTime = null;
- };
-
- _this.getCurrentTime = function( dTime) {
- return _this.currentTime;
- };
-
- _this.nextMonth = function() {
- var month = _this.currentTime.getMonth()+1;
- if( month==12 ) {
- _this.currentTime.setFullYear(_this.currentTime.getFullYear()+1);
- month = 0;
- }
- _this.currentTime.setDate(
- Math.min(
- Date.daysInMonth[month],
- _this.currentTime.getDate()
- )
- )
- _this.currentTime.setMonth(month);
- options.onChangeMonth&&options.onChangeMonth.call&&options.onChangeMonth.call(datetimepicker,_xdsoft_datetime.currentTime,datetimepicker.data('input'));
- datetimepicker.trigger('xchange.xdsoft');
- return month;
- };
-
- _this.prevMonth = function() {
- var month = _this.currentTime.getMonth()-1;
- if( month==-1 ) {
- _this.currentTime.setFullYear(_this.currentTime.getFullYear()-1);
- month = 11;
- }
- _this.currentTime.setDate(
- Math.min(
- Date.daysInMonth[month],
- _this.currentTime.getDate()
- )
- )
- _this.currentTime.setMonth(month);
- options.onChangeMonth&&options.onChangeMonth.call&&options.onChangeMonth.call(datetimepicker,_xdsoft_datetime.currentTime,datetimepicker.data('input'));
- datetimepicker.trigger('xchange.xdsoft');
- return month;
- };
-
- _this.strToDateTime = function( sDateTime ) {
- var tmpDate = [],timeOffset,currentTime;
-
- if( ( tmpDate = /^(\+|\-)(.*)$/.exec(sDateTime) ) && ( tmpDate[2]=Date.parseDate(tmpDate[2], options.formatDate) ) ) {
- timeOffset = tmpDate[2].getTime()-1*(tmpDate[2].getTimezoneOffset())*60000;
- currentTime = new Date((_xdsoft_datetime.now()).getTime()+parseInt(tmpDate[1]+'1')*timeOffset);
- }else
- currentTime = sDateTime?Date.parseDate(sDateTime, options.format):_this.now();
-
- if( !_this.isValidDate(currentTime) )
- currentTime = _this.now();
-
- return currentTime;
- };
-
- _this.strtodate = function( sDate ) {
- var currentTime = sDate?Date.parseDate(sDate, options.formatDate):_this.now();
- if( !_this.isValidDate(currentTime) )
- currentTime = _this.now();
- return currentTime;
- };
-
- _this.strtotime = function( sTime ) {
- var currentTime = sTime?Date.parseDate(sTime, options.formatTime):_this.now();
- if( !_this.isValidDate(currentTime) )
- currentTime = _this.now();
- return currentTime;
- };
-
- _this.str = function() {
- return _this.currentTime.dateFormat(options.format);
- };
- };
- mounth_picker
- .find('.xdsoft_today_button')
- .on('mousedown.xdsoft',function() {
- datetimepicker.data('changed',true);
- _xdsoft_datetime.setCurrentTime(0);
- datetimepicker.trigger('afterOpen.xdsoft');
- }).on('dblclick.xdsoft',function(){
- input.val( _xdsoft_datetime.str() );
- datetimepicker.trigger('close.xdsoft');
- });
- mounth_picker
- .find('.xdsoft_prev,.xdsoft_next')
- .on('mousedown.xdsoft',function() {
- var $this = $(this),
- timer = 0,
- stop = false;
-
- (function arguments_callee1(v) {
- var month = _xdsoft_datetime.currentTime.getMonth();
- if( $this.hasClass( options.next ) ) {
- _xdsoft_datetime.nextMonth();
- }else if( $this.hasClass( options.prev ) ) {
- _xdsoft_datetime.prevMonth();
- }
- !stop&&(timer = setTimeout(arguments_callee1,v?v:100));
- })(500);
-
- $([document.body,window]).on('mouseup.xdsoft',function arguments_callee2() {
- clearTimeout(timer);
- stop = true;
- $([document.body,window]).off('mouseup.xdsoft',arguments_callee2);
- });
- });
-
- timepicker
- .find('.xdsoft_prev,.xdsoft_next')
- .on('mousedown.xdsoft',function() {
- var $this = $(this),
- timer = 0,
- stop = false,
- period = 110;
- (function arguments_callee4(v) {
- var pheight = timeboxparent[0].clientHeight,
- height = timebox[0].offsetHeight,
- top = Math.abs(parseInt(timebox.css('marginTop')));
- if( $this.hasClass(options.next) && (height-pheight)- options.timeHeightInTimePicker>=top ) {
- timebox.css('marginTop','-'+(top+options.timeHeightInTimePicker)+'px')
- }else if( $this.hasClass(options.prev) && top-options.timeHeightInTimePicker>=0 ) {
- timebox.css('marginTop','-'+(top-options.timeHeightInTimePicker)+'px')
- }
- timeboxparent.trigger('scroll_element.xdsoft_scroller',[Math.abs(parseInt(timebox.css('marginTop'))/(height-pheight))]);
- period= ( period>10 )?10:period-10;
- !stop&&(timer = setTimeout(arguments_callee4,v?v:period));
- })(500);
- $([document.body,window]).on('mouseup.xdsoft',function arguments_callee5() {
- clearTimeout(timer);
- stop = true;
- $([document.body,window])
- .off('mouseup.xdsoft',arguments_callee5);
- });
- });
-
- var xchangeTimer = 0;
- // base handler - generating a calendar and timepicker
- datetimepicker
- .on('xchange.xdsoft',function( event ) {
- clearTimeout(xchangeTimer);
- xchangeTimer = setTimeout(function(){
- var table = '',
- start = new Date(_xdsoft_datetime.currentTime.getFullYear(),_xdsoft_datetime.currentTime.getMonth(),1, 12, 0, 0),
- i = 0,
- today = _xdsoft_datetime.now();
-
- while( start.getDay()!=options.dayOfWeekStart )
- start.setDate(start.getDate()-1);
-
- //generate calendar
- table+='<table><thead><tr>';
-
- // days
- for(var j = 0; j<7; j++) {
- table+='<th>'+options.i18n[options.lang].dayOfWeek[(j+options.dayOfWeekStart)>6?0:j+options.dayOfWeekStart]+'</th>';
- }
-
- table+='</tr></thead>';
- table+='<tbody><tr>';
- var maxDate = false, minDate = false;
-
- if( options.maxDate!==false ) {
- maxDate = _xdsoft_datetime.strtodate(options.maxDate);
- maxDate = new Date(maxDate.getFullYear(),maxDate.getMonth(),maxDate.getDate(),23,59,59,999);
- }
-
- if( options.minDate!==false ) {
- minDate = _xdsoft_datetime.strtodate(options.minDate);
- minDate = new Date(minDate.getFullYear(),minDate.getMonth(),minDate.getDate());
- }
-
- var d,y,m,classes = [];
-
- while( i<_xdsoft_datetime.currentTime.getDaysInMonth()||start.getDay()!=options.dayOfWeekStart||_xdsoft_datetime.currentTime.getMonth()==start.getMonth() ) {
- classes = [];
- i++;
-
- d = start.getDate(); y = start.getFullYear(); m = start.getMonth();
-
- classes.push('xdsoft_date');
-
- if( ( maxDate!==false && start > maxDate )||( minDate!==false && start < minDate ) ){
- classes.push('xdsoft_disabled');
- }
-
- if( _xdsoft_datetime.currentTime.getMonth()!=m ){
- classes.push('xdsoft_other_month');
- }
-
- if( (options.defaultSelect||datetimepicker.data('changed')) && _xdsoft_datetime.currentTime.dateFormat('d.m.Y')==start.dateFormat('d.m.Y') ) {
- classes.push('xdsoft_current');
- }
-
- if( today.dateFormat('d.m.Y')==start.dateFormat('d.m.Y') ) {
- classes.push('xdsoft_today');
- }
-
- if( start.getDay()==0||start.getDay()==6||~options.weekends.indexOf(start.dateFormat('d.m.Y')) ) {
- classes.push('xdsoft_weekend');
- }
-
- table+='<td data-date="'+d+'" data-month="'+m+'" data-year="'+y+'"'+' class="xdsoft_date xdsoft_day_of_week'+start.getDay()+' '+ classes.join(' ')+'">'+
- '<div>'+d+'</div>'+
- '</td>';
-
- if( start.getDay()==options.dayOfWeekStartPrev ) {
- table+='</tr>';
- }
-
- start.setDate(d+1);
- }
- table+='</tbody></table>';
-
- calendar.html(table);
-
- mounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[options.lang].months[_xdsoft_datetime.currentTime.getMonth()]);
- mounth_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear());
-
- // generate timebox
- var time = '',
- h = '',
- m ='',
- line_time = function line_time( h,m ) {
- var now = _xdsoft_datetime.now();
- now.setHours(h);
- h = parseInt(now.getHours());
- now.setMinutes(m);
- m = parseInt(now.getMinutes());
-
- classes = [];
- if( (options.maxTime!==false&&_xdsoft_datetime.strtotime(options.maxTime).getTime()<now.getTime())||(options.minTime!==false&&_xdsoft_datetime.strtotime(options.minTime).getTime()>now.getTime()))
- classes.push('xdsoft_disabled');
- if( (options.initTime||options.defaultSelect||datetimepicker.data('changed')) && parseInt(_xdsoft_datetime.currentTime.getHours())==parseInt(h)&&(options.step>59||Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes()/options.step)*options.step==parseInt(m))) {
- if( options.defaultSelect||datetimepicker.data('changed')) {
- classes.push('xdsoft_current');
- } else if( options.initTime ) {
- classes.push('xdsoft_init_time');
- }
- }
- if( parseInt(today.getHours())==parseInt(h)&&parseInt(today.getMinutes())==parseInt(m))
- classes.push('xdsoft_today');
- time+= '<div class="xdsoft_time '+classes.join(' ')+'" data-hour="'+h+'" data-minute="'+m+'">'+now.dateFormat(options.formatTime)+'</div>';
- };
-
- if( !options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length ) {
- for( var i=0,j=0;i<(options.hours12?12:24);i++ ) {
- for( j=0;j<60;j+=options.step ) {
- h = (i<10?'0':'')+i;
- m = (j<10?'0':'')+j;
- line_time( h,m );
- }
- }
- }else{
- for( var i=0;i<options.allowTimes.length;i++ ) {
- h = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours();
- m = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes();
- line_time( h,m );
- }
- }
-
- timebox.html(time);
-
- var opt = '',
- i = 0;
-
- for( i = parseInt(options.yearStart,10)+options.yearOffset;i<= parseInt(options.yearEnd,10)+options.yearOffset;i++ ) {
- opt+='<div class="xdsoft_option '+(_xdsoft_datetime.currentTime.getFullYear()==i?'xdsoft_current':'')+'" data-value="'+i+'">'+i+'</div>';
- }
- yearselect.children().eq(0)
- .html(opt);
-
- for( i = 0,opt = '';i<= 11;i++ ) {
- opt+='<div class="xdsoft_option '+(_xdsoft_datetime.currentTime.getMonth()==i?'xdsoft_current':'')+'" data-value="'+i+'">'+options.i18n[options.lang].months[i]+'</div>';
- }
- monthselect.children().eq(0).html(opt);
- $(this).trigger('generate.xdsoft');
- },10);
- event.stopPropagation();
- })
- .on('afterOpen.xdsoft',function() {
- if( options.timepicker ) {
- var classType;
- if( timebox.find('.xdsoft_current').length ) {
- classType = '.xdsoft_current';
- } else if( timebox.find('.xdsoft_init_time').length ) {
- classType = '.xdsoft_init_time';
- }
-
- if( classType ) {
- var pheight = timeboxparent[0].clientHeight,
- height = timebox[0].offsetHeight,
- top = timebox.find(classType).index()*options.timeHeightInTimePicker+1;
- if( (height-pheight)<top )
- top = height-pheight;
- timebox.css('marginTop','-'+parseInt(top)+'px');
- timeboxparent.trigger('scroll_element.xdsoft_scroller',[parseInt(top)/(height-pheight)]);
- }
- }
- });
-
- var timerclick = 0;
-
- calendar
- .on('click.xdsoft', 'td', function (xdevent) {
- xdevent.stopPropagation(); // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap
- timerclick++;
- var $this = $(this),
- currentTime = _xdsoft_datetime.currentTime;
- if( $this.hasClass('xdsoft_disabled') )
- return false;
-
- currentTime.setDate( $this.data('date') );
- currentTime.setMonth( $this.data('month') );
- currentTime.setFullYear( $this.data('year') );
-
- datetimepicker.trigger('select.xdsoft',[currentTime]);
-
- input.val( _xdsoft_datetime.str() );
- if( (timerclick>1||(options.closeOnDateSelect===true||( options.closeOnDateSelect===0&&!options.timepicker )))&&!options.inline ) {
- datetimepicker.trigger('close.xdsoft');
- }
-
- if( options.onSelectDate && options.onSelectDate.call ) {
- options.onSelectDate.call(datetimepicker,_xdsoft_datetime.currentTime,datetimepicker.data('input'));
- }
-
- datetimepicker.data('changed',true);
- datetimepicker.trigger('xchange.xdsoft');
- datetimepicker.trigger('changedatetime.xdsoft');
- setTimeout(function(){
- timerclick = 0;
- },200);
- });
-
- timebox
- .on('click.xdsoft', 'div', function (xdevent) {
- xdevent.stopPropagation(); // NAJ: Prevents closing of Pop-ups, Modals and Flyouts
- var $this = $(this),
- currentTime = _xdsoft_datetime.currentTime;
- if( $this.hasClass('xdsoft_disabled') )
- return false;
- currentTime.setHours($this.data('hour'));
- currentTime.setMinutes($this.data('minute'));
- datetimepicker.trigger('select.xdsoft',[currentTime]);
-
- datetimepicker.data('input').val( _xdsoft_datetime.str() );
-
- !options.inline&&datetimepicker.trigger('close.xdsoft');
-
- if( options.onSelectTime&&options.onSelectTime.call ) {
- options.onSelectTime.call(datetimepicker,_xdsoft_datetime.currentTime,datetimepicker.data('input'));
- }
- datetimepicker.data('changed',true);
- datetimepicker.trigger('xchange.xdsoft');
- datetimepicker.trigger('changedatetime.xdsoft');
- });
-
- datetimepicker.mousewheel&&datepicker.mousewheel(function(event, delta, deltaX, deltaY) {
- if( !options.scrollMonth )
- return true;
- if( delta<0 )
- _xdsoft_datetime.nextMonth();
- else
- _xdsoft_datetime.prevMonth();
- return false;
- });
-
- datetimepicker.mousewheel&&timeboxparent.unmousewheel().mousewheel(function(event, delta, deltaX, deltaY) {
- if( !options.scrollTime )
- return true;
- var pheight = timeboxparent[0].clientHeight,
- height = timebox[0].offsetHeight,
- top = Math.abs(parseInt(timebox.css('marginTop'))),
- fl = true;
- if( delta<0 && (height-pheight)-options.timeHeightInTimePicker>=top ) {
- timebox.css('marginTop','-'+(top+options.timeHeightInTimePicker)+'px');
- fl = false;
- }else if( delta>0&&top-options.timeHeightInTimePicker>=0 ) {
- timebox.css('marginTop','-'+(top-options.timeHeightInTimePicker)+'px');
- fl = false;
- }
- timeboxparent.trigger('scroll_element.xdsoft_scroller',[Math.abs(parseInt(timebox.css('marginTop'))/(height-pheight))]);
- event.stopPropagation();
- return fl;
- });
-
- datetimepicker
- .on('changedatetime.xdsoft',function() {
- if( options.onChangeDateTime&&options.onChangeDateTime.call ) {
- var $input = datetimepicker.data('input');
- options.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input);
- $input.trigger('change');
- }
- })
- .on('generate.xdsoft',function() {
- if( options.onGenerate&&options.onGenerate.call )
- options.onGenerate.call(datetimepicker,_xdsoft_datetime.currentTime,datetimepicker.data('input'));
- });
-
- var current_time_index = 0;
- input.mousewheel&&input.mousewheel(function( event, delta, deltaX, deltaY ) {
- if( !options.scrollInput )
- return true;
- if( !options.datepicker && options.timepicker ) {
- current_time_index = timebox.find('.xdsoft_current').length?timebox.find('.xdsoft_current').eq(0).index():0;
- if( current_time_index+delta>=0&&current_time_index+delta<timebox.children().length )
- current_time_index+=delta;
- timebox.children().eq(current_time_index).length&&timebox.children().eq(current_time_index).trigger('mousedown');
- return false;
- }else if( options.datepicker && !options.timepicker ) {
- datepicker.trigger( event, [delta, deltaX, deltaY]);
- input.val&&input.val( _xdsoft_datetime.str() );
- datetimepicker.trigger('changedatetime.xdsoft');
- return false;
- }
- });
- var setPos = function() {
- var offset = datetimepicker.data('input').offset(), top = offset.top+datetimepicker.data('input')[0].offsetHeight-1, left = offset.left;
- if( top+datetimepicker[0].offsetHeight>$(window).height()+$(window).scrollTop() )
- top = offset.top-datetimepicker[0].offsetHeight+1;
- if (top < 0)
- top = 0;
- if( left+datetimepicker[0].offsetWidth>$(window).width() )
- left = offset.left-datetimepicker[0].offsetWidth+datetimepicker.data('input')[0].offsetWidth;
- datetimepicker.css({
- left:left,
- top:top
- });
- };
- datetimepicker
- .on('open.xdsoft', function() {
- var onShow = true;
- if( options.onShow&&options.onShow.call) {
- onShow = options.onShow.call(datetimepicker,_xdsoft_datetime.currentTime,datetimepicker.data('input'));
- }
- if( onShow!==false ) {
- datetimepicker.show();
- datetimepicker.trigger('afterOpen.xdsoft');
- setPos();
- $(window)
- .off('resize.xdsoft',setPos)
- .on('resize.xdsoft',setPos);
-
- if( options.closeOnWithoutClick ) {
- $([document.body,window]).on('mousedown.xdsoft',function arguments_callee6() {
- datetimepicker.trigger('close.xdsoft');
- $([document.body,window]).off('mousedown.xdsoft',arguments_callee6);
- });
- }
- }
- })
- .on('close.xdsoft', function( event ) {
- var onClose = true;
- if( options.onClose&&options.onClose.call ) {
- onClose=options.onClose.call(datetimepicker,_xdsoft_datetime.currentTime,datetimepicker.data('input'));
- }
- if( onClose!==false&&!options.opened&&!options.inline ) {
- datetimepicker.hide();
- }
- event.stopPropagation();
- })
- .data('input',input);
-
- var timer = 0,
- timer1 = 0;
-
- datetimepicker.data('xdsoft_datetime',_xdsoft_datetime);
- datetimepicker.setOptions(options);
-
- function getCurrentValue(){
- var ct = options.value?options.value:(input&&input.val&&input.val())?input.val():'';
-
- if( ct && _xdsoft_datetime.isValidDate(ct = Date.parseDate(ct, options.format)) ) {
- datetimepicker.data('changed',true);
- }else
- ct = '';
-
- if( !ct && options.startDate!==false ){
- ct = _xdsoft_datetime.strToDateTime(options.startDate);
- }
-
- return ct?ct:0;
- }
-
- _xdsoft_datetime.setCurrentTime( getCurrentValue() );
-
- datetimepicker.trigger('afterOpen.xdsoft');
-
- input
- .data( 'xdsoft_datetimepicker',datetimepicker )
- .on('open.xdsoft focusin.xdsoft mousedown.xdsoft',function(event) {
- if( input.is(':disabled')||input.is(':hidden')||!input.is(':visible') )
- return;
- clearTimeout(timer);
- timer = setTimeout(function() {
- if( input.is(':disabled')||input.is(':hidden')||!input.is(':visible') )
- return;
- _xdsoft_datetime.setCurrentTime(getCurrentValue());
-
- datetimepicker.trigger('open.xdsoft');
- },100);
- })
- .on('keydown.xdsoft',function( event ) {
- var val = this.value,
- key = event.which;
- switch(true) {
- case !!~([ENTER].indexOf(key)):
- var elementSelector = $("input:visible,textarea:visible");
- datetimepicker.trigger('close.xdsoft');
- elementSelector.eq(elementSelector.index(this) + 1).focus();
- return false;
- case !!~[TAB].indexOf(key):
- datetimepicker.trigger('close.xdsoft');
- return true;
- }
- });
- },
- destroyDateTimePicker = function( input ) {
- var datetimepicker = input.data('xdsoft_datetimepicker');
- if( datetimepicker ) {
- datetimepicker.data('xdsoft_datetime',null);
- datetimepicker.remove();
- input
- .data( 'xdsoft_datetimepicker',null )
- .off( 'open.xdsoft focusin.xdsoft focusout.xdsoft mousedown.xdsoft blur.xdsoft keydown.xdsoft' );
- $(window).off('resize.xdsoft');
- $([window,document.body]).off('mousedown.xdsoft');
- input.unmousewheel&&input.unmousewheel();
- }
- };
- $(document)
- .off('keydown.xdsoftctrl keyup.xdsoftctrl')
- .on('keydown.xdsoftctrl',function(e) {
- if ( e.keyCode == CTRLKEY )
- ctrlDown = true;
- })
- .on('keyup.xdsoftctrl',function(e) {
- if ( e.keyCode == CTRLKEY )
- ctrlDown = false;
- });
- return this.each(function() {
- var datetimepicker;
- if( datetimepicker = $(this).data('xdsoft_datetimepicker') ) {
- if( $.type(opt) === 'string' ) {
- switch(opt) {
- case 'show':
- $(this).select().focus();
- datetimepicker.trigger( 'open.xdsoft' );
- break;
- case 'hide':
- datetimepicker.trigger('close.xdsoft');
- break;
- case 'destroy':
- destroyDateTimePicker($(this));
- break;
- case 'reset':
- this.value = this.defaultValue;
- if(!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(Date.parseDate(this.value, options.format)))
- datetimepicker.data('changed',false);
- datetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);
- break;
- }
- }else{
- datetimepicker
- .setOptions(opt);
- }
- return 0;
- }else
- if( ($.type(opt) !== 'string') ){
- if( !options.lazyInit||options.open||options.inline ){
- createDateTimePicker($(this));
- }else
- lazyInit($(this));
- }
- });
- };
-})( jQuery );
-
-//http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/
-/*
- * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, version 2.1.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- */
-Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b=="unixtime"){return parseInt(this.getTime()/1000);}if(Date.formatFunctions[b]==null){Date.createNewFormat(b);}var a=Date.formatFunctions[b];return this[a]();};Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var code="Date.prototype."+funcName+" = function() {return ";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;}else{if(special){special=false;code+="'"+String.escape(ch)+"' + ";}else{code+=Date.getFormatCode(ch);}}}eval(code.substring(0,code.length-3)+";}");};Date.getFormatCode=function(a){switch(a){case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.dayNames[this.getDay()].substring(0, 3) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"this.getWeekOfYear() + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.monthNames[this.getMonth()].substring(0, 3) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() %12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"O":return"this.getGMTOffset() + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";default:return"'"+String.escape(a)+"' + ";}};Date.parseDate=function(a,c){if(c=="unixtime"){return new Date(!isNaN(parseInt(a))?parseInt(a)*1000:0);}if(Date.parseFunctions[c]==null){Date.createParser(c);}var b=Date.parseFunctions[c];return Date[b](a);};Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input) {\nvar y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, z = -1;\nvar d = new Date();\ny = d.getFullYear();\nm = d.getMonth();\nd = d.getDate();\nvar results = input.match(Date.parseRegexes["+regexNum+"]);\nif (results && results.length > 0) {";var regex="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;}else{if(special){special=false;regex+=String.escape(ch);}else{obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c;}}}}code+="if (y > 0 && z > 0){\nvar doyDate = new Date(y,0);\ndoyDate.setDate(z);\nm = doyDate.getMonth();\nd = doyDate.getDate();\n}";code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n{return new Date(y, m, d, h, i, s);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n{return new Date(y, m, d, h, i);}\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\n{return new Date(y, m, d, h);}\nelse if (y > 0 && m >= 0 && d > 0)\n{return new Date(y, m, d);}\nelse if (y > 0 && m >= 0)\n{return new Date(y, m);}\nelse if (y > 0)\n{return new Date(y);}\n}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$");eval(code);};Date.formatCodeToRegex=function(b,a){switch(b){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:1,c:"z = parseInt(results["+a+"], 10);\n",s:"(\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+a+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+a+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+a+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+a+"], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+a+"] == 'am') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+a+"] == 'AM') {\nif (h == 12) { h = 0; }\n} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+a+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+a+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(b)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,"0");};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;b<this.getMonth();++b){a+=Date.daysInMonth[b];}return a+this.getDate();};Date.prototype.getWeekOfYear=function(){var b=this.getDayOfYear()+(4-this.getDay());var a=new Date(this.getFullYear(),0,1);var c=(7-a.getDay()+4);return String.leftPad(Math.ceil((b-c)/7)+1,2,"0");};Date.prototype.isLeapYear=function(){var a=this.getFullYear();return((a&3)==0&&(a%100||(a%400==0&&a)));};Date.prototype.getFirstDayOfMonth=function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a;};Date.prototype.getLastDayOfMonth=function(){var a=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(a<0)?(a+7):a;};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()];};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}};String.escape=function(a){return a.replace(/('|\\)/g,"\\$1");};String.leftPad=function(d,b,c){var a=new String(d);if(c==null){c=" ";}while(a.length<b){a=c+a;}return a;};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.patterns={ISO8601LongPattern:"Y-m-d H:i:s",ISO8601ShortPattern:"Y-m-d",ShortDatePattern:"n/j/Y",LongDatePattern:"l, F d, Y",FullDateTimePattern:"l, F d, Y g:i:s A",MonthDayPattern:"F d",ShortTimePattern:"g:i A",LongTimePattern:"g:i:s A",SortableDateTimePattern:"Y-m-d\\TH:i:s",UniversalSortableDateTimePattern:"Y-m-d H:i:sO",YearMonthPattern:"F, Y"};
-/*
- * Copyright (c) 2013 Brandon Aaron (http://brandonaaron.net)
- *
- * Licensed under the MIT License (LICENSE.txt).
- *
- * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
- * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
- * Thanks to: Seamus Leahy for adding deltaX and deltaY
- *
- * Version: 3.1.3
- *
- * Requires: 1.2.2+
- */
-(function(factory) {if(typeof define==='function'&&define.amd) {define(['jquery'],factory)}else if(typeof exports==='object') {module.exports=factory}else{factory(jQuery)}}(function($) {var toFix=['wheel','mousewheel','DOMMouseScroll','MozMousePixelScroll'];var toBind='onwheel'in document||document.documentMode>=9?['wheel']:['mousewheel','DomMouseScroll','MozMousePixelScroll'];var lowestDelta,lowestDeltaXY;if($.event.fixHooks) {for(var i=toFix.length;i;) {$.event.fixHooks[toFix[--i]]=$.event.mouseHooks}}$.event.special.mousewheel={setup:function() {if(this.addEventListener) {for(var i=toBind.length;i;) {this.addEventListener(toBind[--i],handler,false)}}else{this.onmousewheel=handler}},teardown:function() {if(this.removeEventListener) {for(var i=toBind.length;i;) {this.removeEventListener(toBind[--i],handler,false)}}else{this.onmousewheel=null}}};$.fn.extend({mousewheel:function(fn) {return fn?this.bind("mousewheel",fn):this.trigger("mousewheel")},unmousewheel:function(fn) {return this.unbind("mousewheel",fn)}});function handler(event) {var orgEvent=event||window.event,args=[].slice.call(arguments,1),delta=0,deltaX=0,deltaY=0,absDelta=0,absDeltaXY=0,fn;event=$.event.fix(orgEvent);event.type="mousewheel";if(orgEvent.wheelDelta) {delta=orgEvent.wheelDelta}if(orgEvent.detail) {delta=orgEvent.detail*-1}if(orgEvent.deltaY) {deltaY=orgEvent.deltaY*-1;delta=deltaY}if(orgEvent.deltaX) {deltaX=orgEvent.deltaX;delta=deltaX*-1}if(orgEvent.wheelDeltaY!==undefined) {deltaY=orgEvent.wheelDeltaY}if(orgEvent.wheelDeltaX!==undefined) {deltaX=orgEvent.wheelDeltaX*-1}absDelta=Math.abs(delta);if(!lowestDelta||absDelta<lowestDelta) {lowestDelta=absDelta}absDeltaXY=Math.max(Math.abs(deltaY),Math.abs(deltaX));if(!lowestDeltaXY||absDeltaXY<lowestDeltaXY) {lowestDeltaXY=absDeltaXY}fn=delta>0?'floor':'ceil';delta=Math[fn](delta/lowestDelta);deltaX=Math[fn](deltaX/lowestDeltaXY);deltaY=Math[fn](deltaY/lowestDeltaXY);args.unshift(event,delta,deltaX,deltaY);return($.event.dispatch||$.event.handle).apply(this,args)}}));
diff --git a/public_html/js/kolab_admin.js b/public_html/js/kolab_admin.js
index 1701a8e..0454ce4 100644
--- a/public_html/js/kolab_admin.js
+++ b/public_html/js/kolab_admin.js
@@ -2,7 +2,7 @@
+--------------------------------------------------------------------------+
| This file is part of the Kolab Web Admin Panel |
| |
- | Copyright (C) 2011-2014, Kolab Systems AG |
+ | Copyright (C) 2011-2019, Kolab Systems AG |
| |
| This program is free software: you can redistribute it and/or modify |
| it under the terms of the GNU Affero General Public License as published |
@@ -30,6 +30,7 @@ function kolab_admin()
this.request_timeout = 300;
this.message_time = 3000;
this.events = {};
+ this.modals = [];
this.attr_default_rx = /^(text|select|imap_acl)/;
// set jQuery ajax options
@@ -212,7 +213,7 @@ function kolab_admin()
obj = $('<div>');
if (type != 'loading') {
- msg = '<div><span>' + msg + '</span></div>';
+ msg = '<div class="font-icon font-icon-text"><span>' + msg + '</span></div>';
obj.addClass(type).click(function() { return self.hide_message(); });
}
@@ -244,43 +245,43 @@ function kolab_admin()
// modal dialog popup
this.modal_dialog = function(content, buttons, opts)
{
- var settings = {btns: {}},
- body = $('<div class="modal"></div>'),
- head, foot, footer = [];
+ var btns = [],
+ dialog = $('<div class="modal" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"></div></div></div>'),
+ body = dialog.find('.modal-content');
// title bar
if (opts && opts.title)
- $('<div class="modal_header"></div>')
- .append($('<span>').text(opts.title))
+ $('<div class="modal-header"></div>')
+ .append($('<h5 class="modal-title">').text(opts.title))
.appendTo(body);
// dialog content
if (typeof content != 'object')
- content = $('<div></div>').html(content);
+ content = $('<div>').html(content);
- content.addClass('modal_msg').appendTo(body);
+ content.addClass('modal-body').appendTo(body);
// buttons
$.each(buttons, function(i, v) {
var n = i.replace(/[^a-z0-9_]/ig, '');
- settings.btns[n] = v;
- footer.push({name: n, label: self.t(i)});
- });
-
-// if (!settings.btns.cancel && (!opts || !opts.no_cancel))
-// settings.btns.cancel = function() { this.hide(); };
+ var button = $('<button type="button" class="btn">').text(self.t(i)).click(v);
- if (footer.length) {
- foot = $('<div class="modal_btns"></div>');
- $.each(footer, function() {
- $('<div></div>').addClass('modal_btn_' + this.name).text(this.label).appendTo(foot);
- });
+ button.addClass(!i.match(/cancel/) ? 'btn-primary' : 'btn-secondary');
+ btns.push(button);
+ });
- body.append(foot);
+ if (btns.length) {
+ $('<div class="modal-footer"></div>').append(btns).appendTo(body);
}
// configure and display dialog
- body.wModal(settings).wModal('show');
+ this.modals.push(dialog.modal());
+ };
+
+ this.modal_hide = function()
+ {
+ if (this.modals.length)
+ this.modals.pop().modal('hide').remove();
};
this.tree_list_init = function()
@@ -655,7 +656,7 @@ function kolab_admin()
// reset content
ul.innerHTML = '';
// move the results pane right under the input box
- this.ac_pane.css({left: (pos.left - 1)+'px', top: (pos.top + this.ac_input.offsetHeight - 1)+'px', display: 'none'});
+ this.ac_pane.css({left: pos.left + 'px', top: (pos.top + this.ac_input.offsetHeight - 1)+'px', display: 'none'});
// add each result line to the list
for (i in result) {
@@ -879,14 +880,14 @@ function kolab_admin()
// add simple input rows
$.each(list, function(i, v) {
- var elem = $('<input>');
- elem.attr({
+ var elem = $('<input>').attr({
value: v,
disabled: disabled,
readonly: readonly,
+ 'class': 'form-control',
name: form_element.name + '[' + (j++) + ']'
- })
- elem = $('<span class="listelement">').append(elem);
+ });
+ elem = $('<span class="listelement input-group">').append(elem);
elem.appendTo(area);
});
}
@@ -955,13 +956,13 @@ function kolab_admin()
delete data['key'];
// build element content
- content = '<span class="listelement"><span class="actions">'
- + (!ac ? '<span title="" class="add"></span>' : ac && idx == -1 ? '<span title="" class="search"></span>' : '')
- + (!ac || idx >= 0 ? '<span title="" class="reset"></span>' : '')
+ content = '<span class="listelement input-group"><span class="listactions input-group-prepend">'
+ + (!ac ? '<a href="#" class="add font-icon input-group-text"></a>' : ac && idx == -1 ? '<span class="search font-icon input-group-text"></span>' : '')
+ + (!ac || idx >= 0 ? '<a href="#" class="reset font-icon input-group-text"></a>' : '')
+ '</span><input type="text" autocomplete="off"></span>';
elem = $(content);
- input = $('input', elem);
+ input = elem.find('input').addClass('form-control');
// Set INPUT attributes
input.attr(data);
@@ -973,9 +974,9 @@ function kolab_admin()
// attach element creation event
if (!ac)
- $('span[class="add"]', elem).click(function() {
+ $('a.add', elem).click(function() {
var name = data.name.replace(/\[[0-9]+\]$/, ''),
- span = $(this.parentNode.parentNode),
+ span = $(this).closest('.listelement'),
maxcount = $('textarea[name="'+name+'"]').attr('data-maxcount');
// check element count limit
@@ -994,8 +995,8 @@ function kolab_admin()
// attach element deletion event
if (!ac || idx >= 0)
- $('span[class="reset"]', elem).click(function() {
- var span = $(this.parentNode.parentNode),
+ $('a.reset', elem).click(function() {
+ var span = $(this).closest('.listelement'),
name = data.name.replace(/\[[0-9]+\]$/, ''),
l = $('input[name^="' + name + '["]', form),
key = $(this).data('key');
@@ -1199,7 +1200,7 @@ function kolab_admin()
this.form_select_option_element = function(form, data)
{
// build element content
- var elem = $('<span class="listelement"></span>')
+ var elem = $('<span class="listelement input-group"></span>')
.data('value', data.key).text(data.value)
.click(function(e) {
var val = $(this).data('value'),
@@ -1239,12 +1240,12 @@ function kolab_admin()
form = form_element.form,
name = form_element.name,
div = $('<div class="aci"></div>'),
- select = $('<select multiple="multiple" size="8"></select>'),
+ select = $('<select multiple="multiple" size="8" class="form-control"></select>'),
table = $('<table class="acltable"><tr><td class="list"></td><td class="buttons"></td></tr></table>'),
buttons = [
- $('<input type="button" />').attr({value: this.t('aci.new')}),
- $('<input type="button" />').attr({value: this.t('aci.edit'), disabled: true}),
- $('<input type="button" />').attr({value: this.t('aci.remove'), disabled: true})
+ $('<input type="button" class="btn btn-secondary" />').attr({value: this.t('aci.new')}),
+ $('<input type="button" class="btn btn-secondary" />').attr({value: this.t('aci.edit'), disabled: true}),
+ $('<input type="button" class="btn btn-danger" />').attr({value: this.t('aci.remove'), disabled: true})
],
aci = this.parse_aci(e.val()) || [];
this.aci[name] = aci;
@@ -1317,13 +1318,11 @@ function kolab_admin()
var buttons = {
'button.ok': function() {
if (self.form_aci_dialog_submit()) {
- this.hide();
- $('#aci-dialog').remove();
+ self.modal_hide();
}
},
'button.cancel': function() {
- this.hide();
- $('#aci-dialog').remove();
+ self.modal_hide();
},
};
@@ -1337,22 +1336,23 @@ function kolab_admin()
if (!dialog.length) {
var i, tabs = [
- $('<fieldset></fieldset>').attr('id', 'aci-tab-users')
- .append($('<legend></legend>').text(this.t('aci.users')))
+ $('<fieldset>').attr('id', 'aci-tab-users')
+ .append($('<legend>').text(this.t('aci.users')))
.append(this.form_aci_dialog_tab_users()),
- $('<fieldset></fieldset>').attr('id', 'aci-tab-rights')
- .append($('<legend></legend>').text(this.t('aci.rights')))
+ $('<fieldset>').attr('id', 'aci-tab-rights')
+ .append($('<legend>').text(this.t('aci.rights')))
.append(this.form_aci_dialog_tab_rights()),
- $('<fieldset></fieldset>').attr('id', 'aci-tab-targets')
- .append($('<legend></legend>').text(this.t('aci.targets')))
+ $('<fieldset>').attr('id', 'aci-tab-targets')
+ .append($('<legend>').text(this.t('aci.targets')))
.append(this.form_aci_dialog_tab_targets())
];
- dialog = $('<div id="aci-dialog"><label></label><input id="aci-name" type="text" size="40" />'
- + '<form id="aci-form"></form></div>')
- .hide().appendTo('body');
+ dialog = $('<div id="aci-dialog"><div class="form-group row"><label class="col-form-label col-sm-2"></label>'
+ + '<span class="col-sm-10"><input id="aci-name" type="text" size="40" class="form-control" /></span>'
+ + '</div><form id="aci-form"></form></div>'
+ ).hide().appendTo('body');
- dialog.children('label').text(this.t('aci.aciname'));
+ dialog.find('label').text(this.t('aci.aciname'));
$('#aci-form').append(tabs);
@@ -1380,7 +1380,7 @@ function kolab_admin()
});
$('#aci-name').val(aci.name);
- $('#aci-rights-type').val(aci.perms ? aci.perms[0].type : '');
+ $('#aci-rights-type').val(aci.perms ? aci.perms[0].type : 'allow');
$('#aci-users-button-remove').prop('disabled', true);
target_operator.filter('[value="="]').prop('checked', true);
target_operator.filter('[value="!="]').prop('checked', false);
@@ -1548,11 +1548,11 @@ function kolab_admin()
// tab Users in aci dialog
this.form_aci_dialog_tab_users = function()
{
- var select = $('<select id="aci-users" multiple="multiple" size="8"></select>'),
+ var select = $('<select id="aci-users" multiple="multiple" size="8" class="custom-select"></select>'),
table = $('<table class="acltable"><tr><td class="list"></td><td class="buttons"></td></tr></table>'),
buttons = [
- $('<input type="button" />').attr({value: this.t('aci.new')}),
- $('<input type="button" id="aci-users-button-remove" />').attr({value: this.t('aci.remove'), disabled: true})
+ $('<input type="button" class="btn btn-secondary" />').attr({value: this.t('aci.new')}),
+ $('<input type="button" class="btn btn-danger" id="aci-users-button-remove" />').attr({value: this.t('aci.remove'), disabled: true})
];
select.on('change', function() {
@@ -1582,14 +1582,16 @@ function kolab_admin()
this.form_aci_dialog_tab_rights = function()
{
var div = $('<div id="aci-rights"></div>'),
- select = $('<select id="aci-rights-type"></select>'),
+ select = $('<select id="aci-rights-type" class="custom-select mb-2"></select>'),
types = ['allow', 'deny'],
rights = ['read', 'compare', 'search', 'write', 'selfwrite', 'delete', 'add', 'proxy', 'all'],
inputs = [];
$.each(rights, function(i, v) {
var input = $('<input type="checkbox" name="aci-right[]" />').attr({value: v, id: 'aci-rights-' + v});
- inputs.push($('<label for="aci-rights-' + v + '"></label>').text(self.t('aci.' + v)).prepend(input));
+
+ inputs.push($('<label for="aci-rights-' + v + '"></label>')
+ .append(input).append($('<span>').text(self.t('aci.' + v))));
if (v == 'all')
input.on('change', function() {
@@ -1614,11 +1616,12 @@ function kolab_admin()
{
var opts = [],
content = $('<div id="aci-targets"></div>'),
- target = $('<input id="aci-targets-target" type="text" size="40" />'),
- filter = $('<input id="aci-targets-filter" type="text" size="40" />'),
- button = $('<input type="button" id="aci-targets-targetbtn" />').val(this.t('aci.thisentry'))
+ target = $('<input id="aci-targets-target" type="text" size="40" class="form-control" />'),
+ filter = $('<input id="aci-targets-filter" type="text" size="40" class="form-control" />'),
+ button = $('<input type="button" id="aci-targets-targetbtn" class="btn btn-secondary input-group-append" />')
+ .val(this.t('aci.thisentry'))
.on('click', function() { target.val('ldap:///' + self.env.entrydn); }),
- select = $('<select id="aci-targets-attr" multiple="multiple" size="8"></select>'),
+ select = $('<select id="aci-targets-attr" multiple="multiple" size="8" class="custom-select"></select>'),
radio = [
$('<label>').text(this.t('aci.selected')).prepend($('<input type="radio" name="attr-operator" value="=" />')),
$('<label>').text(this.t('aci.other')).prepend($('<input type="radio" name="attr-operator" value="!=" />'))
@@ -1635,9 +1638,15 @@ function kolab_admin()
select.append(opts);
content.append([
- $('<label>').text(this.t('aci.rights.target')), $('<div>').append([target, button]),
- $('<label>').text(this.t('aci.rights.filter')), $('<div>').append(filter),
- $('<label>').text(this.t('aci.rights.attrs')), $('<div>').append([select, radio[0], radio[1]])
+ $('<div class="form-group row">')
+ .append($('<label class="col-form-label col-sm-2">').text(this.t('aci.rights.target')))
+ .append($('<div class="input-group col-sm-10">').append([target, button])),
+ $('<div class="form-group row">')
+ .append($('<label class="col-form-label col-sm-2">').text(this.t('aci.rights.filter')))
+ .append($('<div class="col-sm-10">').append(filter)),
+ $('<div class="form-group row">')
+ .append($('<label class="col-form-label col-sm-2">').text(this.t('aci.rights.attrs')))
+ .append($('<div class="col-sm-10">').append([select, radio[0], radio[1]]))
]);
return content;
@@ -1647,12 +1656,12 @@ function kolab_admin()
{
var dialog = $('#aci-dialog'),
content = $('<div id="aci-users-dialog"></div>'),
- search = $('<input id="aci-users-search" type="text" />'),
- search_btn = $('<input id="aci-users-search-button" type="button" />')
+ search = $('<input id="aci-users-search" type="text" class="form-control" />'),
+ search_btn = $('<input id="aci-users-search-button" type="button" class="btn btn-secondary input-group-append" />')
.val(this.t('aci.search')).on('click', function() { self.form_aci_user_search(); }),
- results = $('<select id="aci-users-results" multiple="multiple" size="6"></select>'),
- selected = $('<select id="aci-users-selected" multiple="multiple" size="6"></select>'),
- groups = $('<select id="aci-users-group"></select>')
+ results = $('<select id="aci-users-results" multiple="multiple" size="6" class="form-control"></select>'),
+ selected = $('<select id="aci-users-selected" multiple="multiple" size="6" class="form-control"></select>'),
+ groups = $('<select id="aci-users-group" class="custom-select"></select>')
.on('change', function() {
results.html('');
if (this.value == 'specials')
@@ -1667,16 +1676,10 @@ function kolab_admin()
buttons = {
'button.ok': function() {
self.form_aci_user_dialog_submit();
- this.hide();
- $('#aci-users-dialog').remove();
- // bring back the main dialog
- self.modal_dialog(dialog, self.form_aci_dialog_buttons());
+ self.modal_hide();
},
'button.cancel': function() {
- this.hide();
- $('#aci-users-dialog').remove();
- // bring back the main dialog
- self.modal_dialog(dialog, self.form_aci_dialog_buttons());
+ self.modal_hide();
}
};
@@ -1685,9 +1688,15 @@ function kolab_admin()
});
content.append([
- $('<label>').text(this.t('aci.usersearch')), $('<div>').append([search, groups, search_btn]),
- $('<label>').text(this.t('aci.usersearchresult')), $('<div>').append(results),
- $('<label>').text(this.t('aci.userselected')), $('<div>').append(selected)
+ $('<div class="form-group">')
+ .append($('<label>').text(this.t('aci.usersearch')))
+ .append($('<div class="input-group">').append([search, groups, search_btn])),
+ $('<div class="form-group">')
+ .append($('<label>').text(this.t('aci.usersearchresult')))
+ .append($('<div>').append(results)),
+ $('<div class="form-group">')
+ .append($('<label>').text(this.t('aci.userselected')))
+ .append($('<div>').append(selected))
]);
this.modal_dialog(content, buttons);
@@ -1780,12 +1789,12 @@ function kolab_admin()
form = form_element.form,
name = form_element.name,
div = $('<div class="acl"></div>'),
- select = $('<select multiple="multiple" size="8"></select>'),
+ select = $('<select multiple="multiple" size="8" class="form-control"></select>'),
table = $('<table class="acltable"><tr><td class="list"></td><td class="buttons"></td></tr></table>'),
buttons = [
- $('<input type="button" />').attr({value: this.t('aci.new')}),
- $('<input type="button" />').attr({value: this.t('aci.edit'), disabled: true}),
- $('<input type="button" />').attr({value: this.t('aci.remove'), disabled: true})
+ $('<input type="button" class="btn btn-secondary" />').attr({value: this.t('aci.new')}),
+ $('<input type="button" class="btn btn-secondary" />').attr({value: this.t('aci.edit'), disabled: true}),
+ $('<input type="button" class="btn btn-danger" />').attr({value: this.t('aci.remove'), disabled: true})
],
acl = this.parse_acl(e.val()) || [];
@@ -1859,13 +1868,11 @@ function kolab_admin()
var buttons = {
'button.ok': function() {
if (self.form_acl_dialog_submit()) {
- this.hide();
- $('#acl-dialog').remove();
+ self.modal_hide();
}
},
'button.cancel': function() {
- this.hide();
- $('#acl-dialog').remove();
+ self.modal_hide();
},
};
@@ -1875,22 +1882,22 @@ function kolab_admin()
// build and return IMAP ACL dialog content
this.form_acl_dialog_content = function(acl)
{
- var dialog = $('<div id="acl-dialog"><form id="acl-form"><table class="form">'
- + '<tr><td class="label"></td><td class="value"></td></tr>'
- + '<tr><td class="label"></td><td class="value"></td></tr>'
- + '<tr><td class="label"></td><td class="value"></td></tr>'
- + '</table></form></div>'),
- rows = $('tr', dialog),
- rights_div = $('<div>'),
- spans = [$('<span>'), $('<span>')],
- subject_select = $('<select id="acl-subject"></select>')
+ var dialog = $('<div id="acl-dialog"><form id="acl-form">'
+ + '<div class="form-group row"></div>'
+ + '<div class="form-group row"></div>'
+ + '<div class="form-group row"></div>'
+ + '</form></div>'),
+ rows = dialog.find('.row'),
+ rights_div = $('<div class="form-row">'),
+ spans = [$('<span class="col-sm-6">'), $('<span class="col-sm-6">')],
+ subject_select = $('<select id="acl-subject" class="custom-select"></select>')
.on('change', function() {
subject_input[$(this).val() == 'user' ? 'show' : 'hide']();
}),
- subject_input = $('<input id="acl-subject-user" type="text" size="30" />'),
- select = $('<select id="acl-type"></select>')
+ subject_input = $('<input id="acl-subject-user" type="text" size="30" class="form-control" />'),
+ select = $('<select id="acl-type" class="custom-select"></select>')
.on('change', function() {
- rights_div[$(this).val() == 'custom' ? 'show' : 'hide']();
+ rights_div.css('display', $(this).val() == 'custom' ? '' : 'none');
}),
// Not yet implemented
// epoch_input = $('<input id="acl-epoch" type="text" size="13" />'),
@@ -1913,15 +1920,12 @@ function kolab_admin()
.appendTo(spans[i > 5 ? 1 : 0]);
});
- $('td.label', rows[0]).text(this.t('acl.identifier'));
- $('td.value', rows[0]).append(subject_select).append(subject_input);
- $('td.label', rows[1]).text(this.t('acl.rights'));
- $('td.value', rows[1]).append(select).append(rights_div.append(spans));
+ rows.eq(0).append([$('<label class="col-form-label col-sm-2">').text(this.t('acl.identifier')),
+ $('<div class="input-group col-sm-10">').append(subject_select).append(subject_input)]);
+ rows.eq(1).append([$('<label class="col-form-label col-sm-2">').text(this.t('acl.rights')),
+ $('<div class="col-sm-10">').append([select, rights_div.append(spans)])]);
// Not yet implemented
-// $('td.label', rows[2]).text(this.t('acl.expire'));
-// $('td.value', rows[2]).append(epoch_input);
-
- dialog.hide().appendTo('body');
+// rows.eq(2).append([$('<label class="col-form-label col-sm-2">').text(this.t('acl.expire')), epoch_input]);
this.trigger_event('form-load', 'acl-form');
@@ -1950,7 +1954,7 @@ function kolab_admin()
form: $('textarea[name="' + this.acl_dialog_name + '"]').parents('form')
});
- return dialog.show();
+ return dialog;
};
// submits IMAP ACL dialog, updates acl definition in form
@@ -2038,16 +2042,16 @@ function kolab_admin()
name = form_element.name,
ldap = this.parse_ldap_url(e.val()) || {},
options = ['sub', 'one', 'base'],
- div = $('<div class="ldap_url"><table></table></div>'),
- host = $('<input type="text">').attr({name: 'ldap_host_'+name, size: 30, value: ldap.host, 'class': 'ldap_host'}),
- port = $('<input type="text">').attr({name: 'ldap_port_'+name, size: 5, value: ldap.port || '389'}),
- base = $('<input type="text">').attr({name: 'ldap_base_'+name, value: ldap.base}),
- scope = $('<select>').attr({name: 'ldap_scope_'+name}),
+ div = $('<div class="ldap_url"></div>'),
+ host = $('<input type="text">').attr({name: 'ldap_host_'+name, size: 30, value: ldap.host, 'class': 'ldap_host form-control'}),
+ port = $('<input type="text">').attr({name: 'ldap_port_'+name, size: 5, value: ldap.port || '389', 'class': 'form-control'}),
+ base = $('<input type="text">').attr({name: 'ldap_base_'+name, value: ldap.base, 'class': 'form-control'}),
+ scope = $('<select class="custom-select">').attr({name: 'ldap_scope_'+name, 'class': 'custom-select'}),
filter = $('<ul>'),
- row_host = $('<tr class="ldap_host"><td></td><td></td></tr>'),
- row_base = $('<tr class="ldap_base"><td></td><td></td></tr>'),
- row_scope = $('<tr class="ldap_scope"><td></td><td></td></tr>'),
- row_filter = $('<tr class="ldap_filter"><td></td><td></td></tr>');
+ row_host = $('<div class="ldap_host form-group row">'),
+ row_base = $('<div class="ldap_base form-group row">'),
+ row_scope = $('<div class="ldap_scope form-group row">'),
+ row_filter = $('<div class="ldap_filter form-group row">');
for (i in options)
$('<option>').val(options[i]).text(this.t('ldap.'+options[i])).appendTo(scope);
@@ -2060,37 +2064,38 @@ function kolab_admin()
e.hide();
- $('td:first', row_host).text(this.t('ldap.host'));
- $('td:last', row_host).append(host).append($('<span>').text(':')).append(port);
- $('td:first', row_base).text(this.t('ldap.basedn'));
- $('td:last', row_base).append(base);
- $('td:first', row_scope).text(this.t('ldap.scope'));
- $('td:last', row_scope).append(scope);
- $('td:first', row_filter).text(this.t('ldap.conditions'));
- $('td:last', row_filter).append(filter);
- $('table', div).append(row_host).append(row_base).append(row_scope).append(row_filter);
+ row_host.append($('<label class="col-form-label col-sm-2">').text(this.t('ldap.host')))
+ .append($('<div class="input-group col-sm-10">').append(host).append($('<span class="input-group-text">').text(':')).append(port));
+ row_base.append($('<label class="col-form-label col-sm-2">').text(this.t('ldap.basedn')))
+ .append($('<div class="col-sm-10">').append(base));
+ row_scope.append($('<label class="col-form-label col-sm-2">').text(this.t('ldap.scope')))
+ .append($('<div class="col-sm-10">').append(scope));
+ row_filter.append($('<label class="col-form-label col-sm-2">').text(this.t('ldap.conditions')))
+ .append($('<div class="col-sm-10">').append(filter));
+
+ div.append(row_host).append(row_base).append(row_scope).append(row_filter);
$(form_element).parent().append(div);
};
this.form_url_filter_element = function(name, idx, filter)
{
- var options = ['any', 'both', 'prefix', 'suffix', 'exact', 'notexact'],
- filter_type = $('<select>').attr({name: 'ldap_filter_type_'+name+'['+idx+']'}),
- filter_name = $('<input type="text">').attr({name: 'ldap_filter_name_'+name+'['+idx+']'}),
- filter_value = $('<input type="text">').attr({name: 'ldap_filter_value_'+name+'['+idx+']'}),
- a_add = $('<a class="button add" href="#add"></a>').click(function() {
+ var options = ['any', 'both', 'prefix', 'suffix', 'exact'],
+ filter_type = $('<select class="custom-select">').attr({name: 'ldap_filter_type_'+name+'['+idx+']'}),
+ filter_name = $('<input type="text" class="form-control">').attr({name: 'ldap_filter_name_'+name+'['+idx+']'}),
+ filter_value = $('<input type="text" class="form-control">').attr({name: 'ldap_filter_value_'+name+'['+idx+']'}),
+ li = $('<li class="input-group">'),
+ a_add = $('<a class="button add font-icon input-group-text" href="#add"></a>').click(function() {
var dt = new Date().getTime();
- $(this.parentNode.parentNode).append(kadm.form_url_filter_element(name, dt, {}));
+ $(this).closest('ul').append(kadm.form_url_filter_element(name, dt, {}));
}).attr({title: this.t('add')}),
- a_del = $('<a class="button delete" href="#delete"></a>').click(function() {
- if ($('li', this.parentNode.parentNode).length > 1)
- $(this.parentNode).remove();
+ a_del = $('<a class="button font-icon delete input-group-text" href="#delete"></a>').click(function() {
+ if (li.parent().children().length > 1)
+ li.remove();
else {
- $('input', this.parentNode).val('');
- $('select', this.parentNode).val('any').change();
+ li.find('input').val('');
+ li.find('select').val('any').change();
}
- }).attr({title: this.t('delete')}),
- li = $('<li>');
+ }).attr({title: this.t('delete')});
for (i in options)
$('<option>').val(options[i]).text(this.t('ldap.filter_'+options[i])).appendTo(filter_type);
@@ -2106,8 +2111,11 @@ function kolab_admin()
filter_value.css({display: $(this).val() == 'any' ? 'none' : 'inline'});
}).change();
- return li.append(filter_name).append(filter_type).append(filter_value)
- .append(a_del).append(a_add);
+ return li
+ .append(filter_name)
+ .append(filter_type)
+ .append(filter_value)
+ .append($('<span class="input-group-append">').append(a_del).append(a_add));
};
// updates form data with LDAP URL (on form submit)
@@ -2935,7 +2943,8 @@ function kolab_admin()
if (attr) {
name_select.hide().val(attr);
- $('<span></span>').text(this.env.attributes[attr] ? this.env.attributes[attr] : attr)
+ $('<span class="form-control-plaintext"></span>')
+ .text(this.env.attributes[attr] ? this.env.attributes[attr] : attr)
.appendTo(name_select.parent());
}
else {
@@ -2970,21 +2979,17 @@ function kolab_admin()
// Update attribute form on value type change
this.type_attr_value_change = function(elem)
{
- var type = $(elem || 'select[name="attr_value"]').val(),
- field_type = $('select[name="attr_type"]').val(),
- optional = $('#attr_form_row_optional'),
- select = $('select[name="attr_name"]').val(),
+ var type = $(elem || 'select[name=attr_value]').val(),
+ field_type = $('select[name=attr_type]').val(),
+ select = $('select[name=attr_name]').val(),
attr_name = this.env.attributes[select],
// only non-static and non-required attributes can be marked as optional
opt = type != 'static' && $.inArray(attr_name, this.env.attributes_required) == -1;
- $('input[name="attr_data"]')[type != 'normal' ? 'show' : 'hide']();
- $('#attr_form_row_readonly')[type != 'static' ? 'show' : 'hide']();
- $('#attr_form_row_default')[type == 'normal' && field_type.match(this.attr_default_rx) ? 'show' : 'hide']();
- optional[opt ? 'show' : 'hide']();
-
- if (!opt)
- $('input', optional).attr('checked', false);
+ $('[name=attr_data]')[type != 'normal' ? 'show' : 'hide']();
+ $('[name=attr_readonly]').closest('.form-group')[type != 'static' ? 'show' : 'hide']();
+ $('[name=attr_default]').closest('.form-group')[type == 'normal' && field_type.match(this.attr_default_rx) ? 'show' : 'hide']();
+ $('[name=attr_optional]').attr('checked', opt).closest('.form-group')[opt ? 'show' : 'hide']();
};
// Update attribute form on type change
@@ -2993,9 +2998,9 @@ function kolab_admin()
var type = $(elem || 'select[name="attr_type"]').val(),
val_type = $('select[name="attr_value"]').val();
- $('#attr_form_row_maxcount')[type == 'list' || type == 'list-autocomplete' ? 'show' : 'hide']();
- $('#attr_form_row_options')[type == 'select' || type == 'multiselect' ? 'show' : 'hide']();
- $('#attr_form_row_default')[val_type == 'normal' && type.match(this.attr_default_rx) ? 'show' : 'hide']();
+ $('[name=attr_maxcount]').closest('.form-group')[type == 'list' || type == 'list-autocomplete' ? 'show' : 'hide']();
+ $('[name=attr_options]').closest('.form-group')[type == 'select' || type == 'multiselect' ? 'show' : 'hide']();
+ $('[name=attr_default]').closest('.form-group')[val_type == 'normal' && type.match(this.attr_default_rx) ? 'show' : 'hide']();
};
// Update attributes list on object classes change
@@ -3275,8 +3280,6 @@ function kolab_admin()
if (next != '&' && next != '|') {
next = filter.indexOf(')', pos);
if (next > 0) {
- if (filter.charAt(pos+1) == '!' && filter.charAt(pos+2) == '(')
- next++;
if (elem = this.parse_ldap_filter_entry(filter.substr(pos + 1, next - pos - 1))) {
elem.join = join;
elem.level = level;
@@ -3298,12 +3301,11 @@ function kolab_admin()
// LDAP filter-entry parser
this.parse_ldap_filter_entry = function(entry)
{
- var type = 'exact', not, name, value;
+ var type = 'exact', name, value;
- if (entry.match(/^(!?)\(?([a-zA-Z0-9_-]+)=([^\)]*)\)?$/)) {
- name = RegExp.$2;
- value = RegExp.$3;
- not = RegExp.$1.length > 0;
+ if (entry.match(/^([a-zA-Z0-9_-]+)=(.*)$/)) {
+ name = RegExp.$1;
+ value = RegExp.$2;
if (value == '*') {
value = ''
@@ -3322,14 +3324,14 @@ function kolab_admin()
type = 'prefix';
}
- return {name: name, type: (not ? 'not' : '') + type, value: value};
+ return {name: name, type: type, value: value};
}
};
// Builds LDAP filter string from the defined structure
this.build_ldap_filter = function(filter)
{
- var i, elem, not, str = '', last = -1, join = {'AND': '&', 'OR': '|'};
+ var i, elem, str = '', last = -1, join = {'AND': '&', 'OR': '|'};
for (i=0; i<filter.length; i++) {
elem = filter[i];
@@ -3338,14 +3340,7 @@ function kolab_admin()
else if (elem.level < last)
str += ')';
- str += '('
-
- if (not = /^not(.*)$/.test(elem.type)) {
- str += '!(';
- elem.type = RegExp.$1;
- }
-
- str += elem.name + '=';
+ str += '(' + elem.name + '=';
if (elem.type == 'any')
str += '*';
@@ -3358,7 +3353,7 @@ function kolab_admin()
else
str += elem.value;
- str += (not ? ')' : '') + ')';
+ str += ')';
last = elem.level;
}
@@ -3472,152 +3467,6 @@ function kolab_admin()
};
};
-/**
- * Modal dialogs
- */
-(function($) {
- $.fn.wModal = function(option, settings) {
- if (typeof option === 'object') {
- settings = option;
- }
- else if (typeof option === 'string') {
- var values = [],
- elements = this.each(function() {
- var data = $(this).data('modal');
-
- if (data) {
- if (option === 'show')
- data.show(settings || {});
- else if (option === 'hide')
- data.hide(settings || {});
- else if ($.fn.wModal.defaultSettings[option] !== undefined) {
- if (settings !== undefined)
- data.settings[option] = settings;
- else
- values.push(data.settings[option]);
- }
- }
- });
-
- if (values.length === 1)
- return values[0];
- else if (values.length > 0)
- return values;
- else
- return elements;
- }
-
- return this.each(function() {
- var _settings = $.extend({}, $.fn.wModal.defaultSettings, settings || {}),
- modal = new Modal(_settings, $(this)),
- $el = modal.generate();
-
- modal.pixel.append($el);
-
- $(this).data('modal', modal);
- });
- }
-
- $.fn.wModal.defaultSettings = {btns: {}, msg: null};
-
- function Modal(settings, elem)
- {
- this.modal = null;
- this.settings = settings;
- this.elem = elem;
- this.tempButtons = {};
-
- return this;
- }
-
- Modal.prototype =
- {
- generate: function()
- {
- var _this = this;
-
- if (this.modal) return this.modal;
-
- // bg - check if bg already exists
- if ($('#modal_bg').length) {
- this.bg = $('#modal_bg');
- this.pixel = $('#modal_pixel');
- }
- else {
- this.bg = $('<div id="modal_bg"></div>').css({position:'fixed', left:'0', top:'0', display:'none'});
- $('body').append(this.bg);
- $(window).resize(function() { if(_this.bg.is(':visible')) _this.resetBg.apply(_this); });
-
- // positioning pixel setting to body produces some weird effects with scrollbars when doing sliding effects
- this.pixel = $('<div id="modal_pixel"></div>').css({position:'fixed', left:'0', top:'0', width:'0', height:'0', lineHeight:'0', fontSize:'0'});
- $('body').append(this.pixel);
- }
-
- // modal
- this.modal = $('<div class="modal_holder"></div>').css({position:'absolute', display:'none'});
- this.modal.append(this.elem);
-
- $(window).resize(function() { if(_this.modal.is(':visible')) _this.resetModal.apply(_this); });
-
- this.resetBtns();
-
- return this.modal;
- },
-
- resetModal: function()
- {
- var modalWidth = this.modal.outerWidth(true),
- modalHeight = this.modal.outerHeight(true),
- viewWidth = $(window).width(),
- viewHeight = $(window).height(),
- left = (viewWidth/2) - (modalWidth/2),
- top = (viewHeight/2) - (modalHeight/2);
-
- this.modal.css({left:(left > 0 ? left + 'px' : 'auto'), top:(top > 0 ? top + 'px' : 'auto'), bottom: 'auto', right: 'auto'});
- },
-
- resetBg: function()
- {
- this.bg.css({width:$(window).width(), height:$(window).height()});
- },
-
- resetBtns: function(btns)
- {
- var btns = btns || this.settings.btns,
- _this = this;
-
- for (var btn in btns) {
- (function(btn) {
- _this.modal.find('.modal_btn_' + btn).unbind('click');
- _this.modal.find('.modal_btn_' + btn).click(function() {
- if (_this.tempBtns[btn])
- _this.tempBtns[btn].apply(_this);
- else
- btns[btn].apply(_this);
- });
- })(btn);
- }
- },
-
- show: function(settings)
- {
- this.tempBtns = settings.btns || {};
- this.resetBg();
- this.resetModal();
- this.pixel.children('.modal_holder').hide();
-
- var _this = this;
- this.bg.fadeIn(100, function(){ _this.modal.fadeIn(100); });
- },
-
- hide: function()
- {
- this.modal.hide().remove();
- this.bg.hide();
- }
- }
-})(jQuery);
-
// Add escape() method to RegExp object
// http://dev.rubyonrails.org/changeset/7271
RegExp.escape = function(str)
diff --git a/public_html/skins/default/deps/bootstrap.bundle.min.js b/public_html/skins/default/deps/bootstrap.bundle.min.js
new file mode 100644
index 0000000..4320368
--- /dev/null
+++ b/public_html/skins/default/deps/bootstrap.bundle.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v4.3.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * 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
diff --git a/public_html/skins/default/deps/bootstrap.min.css b/public_html/skins/default/deps/bootstrap.min.css
new file mode 100644
index 0000000..92e3fe8
--- /dev/null
+++ b/public_html/skins/default/deps/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v4.3.1 (https://getbootstrap.com/)
+ * Copyright 2011-2019 The Bootstrap Authors
+ * 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
diff --git a/public_html/skins/default/fonts/fa-regular-400.woff b/public_html/skins/default/fonts/fa-regular-400.woff
new file mode 100644
index 0000000..56acb37
--- /dev/null
+++ b/public_html/skins/default/fonts/fa-regular-400.woff
Binary files differ
diff --git a/public_html/skins/default/fonts/fa-regular-400.woff2 b/public_html/skins/default/fonts/fa-regular-400.woff2
new file mode 100644
index 0000000..4c5168f
--- /dev/null
+++ b/public_html/skins/default/fonts/fa-regular-400.woff2
Binary files differ
diff --git a/public_html/skins/default/fonts/fa-solid-900.woff b/public_html/skins/default/fonts/fa-solid-900.woff
new file mode 100644
index 0000000..4484e52
--- /dev/null
+++ b/public_html/skins/default/fonts/fa-solid-900.woff
Binary files differ
diff --git a/public_html/skins/default/fonts/fa-solid-900.woff2 b/public_html/skins/default/fonts/fa-solid-900.woff2
new file mode 100644
index 0000000..f0b9b0c
--- /dev/null
+++ b/public_html/skins/default/fonts/fa-solid-900.woff2
Binary files differ
diff --git a/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woff b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woff
new file mode 100644
index 0000000..6e0f562
--- /dev/null
+++ b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woff
Binary files differ
diff --git a/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woff2 b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woff2
new file mode 100644
index 0000000..76817cc
--- /dev/null
+++ b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woff2
Binary files differ
diff --git a/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woff b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woff
new file mode 100644
index 0000000..ea90d71
--- /dev/null
+++ b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woff
Binary files differ
diff --git a/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woff2 b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woff2
new file mode 100644
index 0000000..45c9ef7
--- /dev/null
+++ b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woff2
Binary files differ
diff --git a/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woff b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woff
new file mode 100644
index 0000000..818233d
--- /dev/null
+++ b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woff
Binary files differ
diff --git a/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woff2 b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woff2
new file mode 100644
index 0000000..e7f173b
--- /dev/null
+++ b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woff2
Binary files differ
diff --git a/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woff b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woff
new file mode 100644
index 0000000..96c1986
--- /dev/null
+++ b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woff
Binary files differ
diff --git a/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woff2 b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woff2
new file mode 100644
index 0000000..9a0064e
--- /dev/null
+++ b/public_html/skins/default/fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woff2
Binary files differ
diff --git a/public_html/skins/default/images/README b/public_html/skins/default/images/README
deleted file mode 100644
index a180527..0000000
--- a/public_html/skins/default/images/README
+++ /dev/null
@@ -1,10 +0,0 @@
-search.png Oxygen (GPL)
-logout.png Cologne (CC)
-error.png Humility (GPL)
-info.png Humility (GPL)
-delete.png UIDesign Icons (free)
-settings.png UIDesign Icons (free)
-
-tasks:
- users.png Futurosoft (GPL)
- about.png Futurosoft (GPL)
diff --git a/public_html/skins/default/images/about.png b/public_html/skins/default/images/about.png
deleted file mode 100644
index 0b8eb39..0000000
--- a/public_html/skins/default/images/about.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/arrow_left.png b/public_html/skins/default/images/arrow_left.png
deleted file mode 100644
index c0635a5..0000000
--- a/public_html/skins/default/images/arrow_left.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/arrow_right.png b/public_html/skins/default/images/arrow_right.png
deleted file mode 100644
index 0bca46c..0000000
--- a/public_html/skins/default/images/arrow_right.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/body.png b/public_html/skins/default/images/body.png
deleted file mode 100644
index 79c0fd8..0000000
--- a/public_html/skins/default/images/body.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/buttons.png b/public_html/skins/default/images/buttons.png
deleted file mode 100644
index fd814a5..0000000
--- a/public_html/skins/default/images/buttons.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/domain_ico.png b/public_html/skins/default/images/domain_ico.png
deleted file mode 100644
index 98d4c3b..0000000
--- a/public_html/skins/default/images/domain_ico.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/domains.png b/public_html/skins/default/images/domains.png
deleted file mode 100644
index 3aa3380..0000000
--- a/public_html/skins/default/images/domains.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/error.png b/public_html/skins/default/images/error.png
deleted file mode 100644
index ddcef31..0000000
--- a/public_html/skins/default/images/error.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/favicon.ico b/public_html/skins/default/images/favicon.ico
new file mode 100644
index 0000000..c1e49fd
--- /dev/null
+++ b/public_html/skins/default/images/favicon.ico
Binary files differ
diff --git a/public_html/skins/default/images/favicon.png b/public_html/skins/default/images/favicon.png
deleted file mode 100644
index d8e35a9..0000000
--- a/public_html/skins/default/images/favicon.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/favicon.png.enterprise b/public_html/skins/default/images/favicon.png.enterprise
deleted file mode 100644
index 941020a..0000000
--- a/public_html/skins/default/images/favicon.png.enterprise
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/groups.png b/public_html/skins/default/images/groups.png
deleted file mode 100644
index 698b7ab..0000000
--- a/public_html/skins/default/images/groups.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/info.png b/public_html/skins/default/images/info.png
deleted file mode 100644
index bca166c..0000000
--- a/public_html/skins/default/images/info.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/kolabsystems.png b/public_html/skins/default/images/kolabsystems.png
index 90620d3..c49af80 100644
--- a/public_html/skins/default/images/kolabsystems.png
+++ b/public_html/skins/default/images/kolabsystems.png
Binary files differ
diff --git a/public_html/skins/default/images/linen_header.jpg b/public_html/skins/default/images/linen_header.jpg
deleted file mode 100644
index 040a4e2..0000000
--- a/public_html/skins/default/images/linen_header.jpg
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/loading.gif b/public_html/skins/default/images/loading.gif
deleted file mode 100644
index 48623dc..0000000
--- a/public_html/skins/default/images/loading.gif
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/logo-big.png b/public_html/skins/default/images/logo-big.png
deleted file mode 100644
index d8733a3..0000000
--- a/public_html/skins/default/images/logo-big.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/logo-big.png.enterprise b/public_html/skins/default/images/logo-big.png.enterprise
deleted file mode 100644
index 533b164..0000000
--- a/public_html/skins/default/images/logo-big.png.enterprise
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/logo.png b/public_html/skins/default/images/logo.png
index 69c4a51..9f4974b 100644
--- a/public_html/skins/default/images/logo.png
+++ b/public_html/skins/default/images/logo.png
Binary files differ
diff --git a/public_html/skins/default/images/logo.png.enterprise b/public_html/skins/default/images/logo.png.enterprise
deleted file mode 100644
index a2120f9..0000000
--- a/public_html/skins/default/images/logo.png.enterprise
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/logo_kolab.png b/public_html/skins/default/images/logo_kolab.png
deleted file mode 100644
index 0c06ff1..0000000
--- a/public_html/skins/default/images/logo_kolab.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/navbg.png b/public_html/skins/default/images/navbg.png
deleted file mode 100644
index 208df50..0000000
--- a/public_html/skins/default/images/navbg.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/ou.png b/public_html/skins/default/images/ou.png
deleted file mode 100644
index 1143f9a..0000000
--- a/public_html/skins/default/images/ou.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/resources.png b/public_html/skins/default/images/resources.png
deleted file mode 100644
index c818165..0000000
--- a/public_html/skins/default/images/resources.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/roles.png b/public_html/skins/default/images/roles.png
deleted file mode 100644
index d715c5f..0000000
--- a/public_html/skins/default/images/roles.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/settings.png b/public_html/skins/default/images/settings.png
deleted file mode 100644
index da2ee94..0000000
--- a/public_html/skins/default/images/settings.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/sharedfolders.png b/public_html/skins/default/images/sharedfolders.png
deleted file mode 100644
index 4395216..0000000
--- a/public_html/skins/default/images/sharedfolders.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/tabs-left.gif b/public_html/skins/default/images/tabs-left.gif
deleted file mode 100644
index f72d980..0000000
--- a/public_html/skins/default/images/tabs-left.gif
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/tabs-right.gif b/public_html/skins/default/images/tabs-right.gif
deleted file mode 100644
index cc6cbe8..0000000
--- a/public_html/skins/default/images/tabs-right.gif
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/user_ico.png b/public_html/skins/default/images/user_ico.png
deleted file mode 100644
index 89badba..0000000
--- a/public_html/skins/default/images/user_ico.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/users.png b/public_html/skins/default/images/users.png
deleted file mode 100644
index 5726a2b..0000000
--- a/public_html/skins/default/images/users.png
+++ /dev/null
Binary files differ
diff --git a/public_html/skins/default/images/watermark.svg b/public_html/skins/default/images/watermark.svg
new file mode 100644
index 0000000..6aae6d9
--- /dev/null
+++ b/public_html/skins/default/images/watermark.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+ viewBox="0 0 1700.8 566.9" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:#F3A628;}
+</style>
+<path class="st0" d="M97.8,125.3c0-6.3,4.8-11.9,11.9-11.9h14.3c6.3,0,11.9,5.4,11.9,11.9v139.5l153.9-146.4c2-2.4,6.3-4.8,9.3-4.8
+ h24.2c8.9,0,13.8,9.9,6,17.3L173.6,276.4l163.2,167.1c3.5,3.5,2.4,15.3-8.4,15.3h-25.1c-3.5,0-7.8-2-8.9-3.5L136,290v156.8
+ c0,6.3-5.4,11.9-11.9,11.9h-14.3c-6.9,0-11.9-5.4-11.9-11.9V125.3z"/>
+<path class="st0" d="M789.4,122.7c0-4.8,3.9-9.3,9.3-9.3h19.2c4.8,0,9.3,4.5,9.3,9.3v302.7h141.9c5.4,0,9.3,4.5,9.3,9.3V449
+ c0,4.8-3.9,9.3-9.3,9.3H798.5c-5.4,0-9.3-4.5-9.3-9.3V122.7H789.4z"/>
+<path class="st0" d="M999.5,445.7L1149.4,114c1.5-3,3.9-5.4,8.4-5.4h4.8c4.5,0,6.9,2.4,8.4,5.4l148.8,331.7c3,6.3-0.9,12.9-8.4,12.9
+ h-19.7c-4.5,0-7.5-3-8.4-5.4l-36.5-81.4H1072l-35.9,81.4c-0.9,2.4-3.9,5.4-8.4,5.4h-19.7C1000.4,458.5,996.5,452,999.5,445.7z
+ M1233.6,341.2c-24.2-53.6-47.9-108-71.9-161.7h-3.9l-71.9,161.7H1233.6z"/>
+<path class="st0" d="M1373.5,122.7c0-4.8,3.9-9.3,9.3-9.3h108c60.2,0,101.1,38.9,101.1,90.7c0,38-25.1,65.6-48.2,78.8
+ c26.1,10.8,59.2,35,59.2,80.3c0,55.1-44,95.2-107.5,95.2h-112.3c-5.4,0-9.3-4.5-9.3-9.3V122.7H1373.5z M1499.3,425.4
+ c35.9,0,62-27.2,62-62.6c0-35-32-60.7-70.4-60.7h-81.4v123.3H1499.3z M1490.9,268.2c38,0,59.2-27.2,59.2-61.7
+ c0-35.6-21.2-59.2-59.2-59.2h-80.3V268h80.3V268.2z"/>
+<path class="st0" d="M576.9,456.1c-7.5,0-14.3-5-16.2-12.7c-2.2-8.9,3.2-18.1,12.3-20.3c63.7-15.8,108.2-73,108.2-138.6
+ c0-78.8-64.1-142.9-142.9-142.9s-142.9,64.1-142.9,142.9c0,65.8,44.5,122.7,108.2,138.6c8.9,2.2,14.5,11.4,12.3,20.3
+ c-2.2,8.9-11.4,14.5-20.3,12.3c-78.6-19.6-133.6-90.2-133.6-171.2c0-97.2,79.2-176.6,176.6-176.6s176.6,79.2,176.6,176.6
+ c0,81.2-54.9,151.6-133.6,171.2C579.7,455.9,578.4,456.1,576.9,456.1z"/>
+</svg>
diff --git a/public_html/skins/default/jquery.datetimepicker.css b/public_html/skins/default/jquery.datetimepicker.css
deleted file mode 100644
index dad45ed..0000000
--- a/public_html/skins/default/jquery.datetimepicker.css
+++ /dev/null
@@ -1,304 +0,0 @@
-.xdsoft_datetimepicker{
- box-shadow: 0px 5px 15px -5px rgba(0, 0, 0, 0.506);
- background: #FFFFFF;
- border-bottom: 1px solid #BBBBBB;
- border-left: 1px solid #CCCCCC;
- border-right: 1px solid #CCCCCC;
- border-top: 1px solid #CCCCCC;
- color: #333333;
- display: block;
- font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
- padding: 8px;
- padding-left: 0px;
- padding-top: 2px;
- position: absolute;
- z-index: 9999;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- display:none;
-}
-
-.xdsoft_datetimepicker iframe {
- position: absolute;
- left: 0;
- top: 0;
- width: 75px;
- height: 210px;
- background: transparent;
- border:none;
-}
-/*For IE8 or lower*/
-.xdsoft_datetimepicker button {
- border:none !important;
-}
-
-.xdsoft_noselect{
- -webkit-touch-callout: none;
- -webkit-user-select: none;
- -khtml-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- -o-user-select: none;
- user-select: none;
-}
-.xdsoft_noselect::selection { background: transparent; }
-.xdsoft_noselect::-moz-selection { background: transparent; }
-.xdsoft_datetimepicker.xdsoft_inline{
- display: inline-block;
- position: static;
- box-shadow: none;
-}
-.xdsoft_datetimepicker *{
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- padding:0px;
- margin:0px;
-}
-.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker{
- display:none;
-}
-.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active{
- display:block;
-}
-.xdsoft_datetimepicker .xdsoft_datepicker{
- width: 224px;
- float:left;
- margin-left:8px;
-}
-.xdsoft_datetimepicker .xdsoft_timepicker{
- width: 58px;
- float:left;
- text-align:center;
- margin-left:8px;
- margin-top:0px;
-}
-.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker{
- margin-top:8px;
- margin-bottom:3px
-}
-.xdsoft_datetimepicker .xdsoft_mounthpicker{
- position: relative;
- text-align: center;
-}
-
-.xdsoft_datetimepicker .xdsoft_prev, .xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_today_button{
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAAAeCAYAAACsYQl4AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDozQjRCQjRGREU4MkNFMzExQjRDQkIyRDJDOTdBRUI1MCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQjg0OUYyNTZDODAxMUUzQjMwM0IwMERBNUU0ODQ5NSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQjg0OUYyNDZDODAxMUUzQjMwM0IwMERBNUU0ODQ5NSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI5NzE3MjFBN0E2Q0UzMTFBQjJEQjgzMDk5RTNBNTdBIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNCNEJCNEZERTgyQ0UzMTFCNENCQjJEMkM5N0FFQjUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aQvATgAAAfVJREFUeNrsmr1OwzAQxzGtkPjYEAuvVGAvfQIGRKADE49gdLwDDwBiZ2RhQUKwICQkWLsgFiRQuIBTucFJ/XFp4+hO+quqnZ4uvzj2nV2RpukCW/22yAgYNINmc7du7DcghCjrkqgOKjF1znpt6rZ0AGWQj7TvCU8d9UM+QAGDrhdyc2Bnc1WVVPBev9V8lBnY+rDwncWZThG4xk4lmxtJy2AHgoY/FySgbSBPwPZ8mEXbQx3aDERb0EbYAYFC7pcAtAvkMWwC0D3NX58S9D/YnoGC7nPWr3Dg9JTbtuHhDShBT8D2CBSK/iIEvVXxpuxSgh7DdgwUTL4iA92zmJb6lKB/YTsECmV+IgK947AGDIqgQ/LojsO135Hn51l2cWlov0JdGNrPUceueXRwilSVgkUyom9Rd6gbLfYTDeO+1v6orn0InTogYDGUkYLO3/wc9BdqqTCKP1Tfi+oTIaCBIL2TES+GTyruT9S61p6BHam+99DFEAgLFklYsIBHwSI9QY80H5ta+1rB/6ovaKihBJeEJbgLbBlQgl+j3lDPqA2tfQV1j3pVn8s+oKHGTSVJ+FqDLeR5bCqJ2E/BCycsoLZETXaKGs7rhKVt+9HZScrZNMi88V8P7LlDbvOZYaJVpMMmBCT4n0o8dTBoNgbdWPsRYACs3r7XyNfbnAAAAABJRU5ErkJggg==');
-}
-.xdsoft_datetimepicker .xdsoft_prev{
- float: left;
- background-position:-20px 0px;
-}
-.xdsoft_datetimepicker .xdsoft_today_button{
- float: left;
- background-position:-70px 0px;
- margin-left:5px;
-}
-
-.xdsoft_datetimepicker .xdsoft_next{
- float: right;
- background-position:0px 0px;
-}
-.xdsoft_datetimepicker .xdsoft_next:active,.xdsoft_datetimepicker .xdsoft_prev:active{
-}
-.xdsoft_datetimepicker .xdsoft_next,.xdsoft_datetimepicker .xdsoft_prev ,.xdsoft_datetimepicker .xdsoft_today_button{
- background-color: transparent;
- background-repeat: no-repeat;
- border: 0px none currentColor;
- cursor: pointer;
- display: block;
- height: 30px;
- opacity: 0.5;
- outline: medium none currentColor;
- overflow: hidden;
- padding: 0px;
- position: relative;
- text-indent: 100%;
- white-space: nowrap;
- width: 20px;
-}
-.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,
-.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next{
- float:none;
- background-position:-40px -15px;
- height: 15px;
- width: 30px;
- display: block;
- margin-left:14px;
- margin-top:7px;
-}
-.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev{
- background-position:-40px 0px;
- margin-bottom:7px;
- margin-top:0px;
-}
-.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box{
- height:151px;
- overflow:hidden;
- border-bottom:1px solid #DDDDDD;
-}
-.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div{
- background: #F5F5F5;
- border-top:1px solid #DDDDDD;
- color: #666666;
- font-size: 12px;
- text-align: center;
- border-collapse:collapse;
- cursor:pointer;
- border-bottom-width:0px;
- height:25px;
- line-height:25px;
-}
-
-.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child{
- border-top-width:0px;
-}
-.xdsoft_datetimepicker .xdsoft_today_button:hover,
-.xdsoft_datetimepicker .xdsoft_next:hover,
-.xdsoft_datetimepicker .xdsoft_prev:hover {
- opacity: 1;
-}
-.xdsoft_datetimepicker .xdsoft_label{
- display: inline;
- position: relative;
- z-index: 9999;
- margin: 0;
- padding: 5px 3px;
- font-size: 14px;
- line-height: 20px;
- font-weight: bold;
- background-color: #fff;
- float:left;
- width:182px;
- text-align:center;
- cursor:pointer;
-}
-.xdsoft_datetimepicker .xdsoft_label:hover{
- text-decoration:underline;
-}
-.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select{
- border:1px solid #ccc;
- position:absolute;
- display:block;
- right:0px;
- top:30px;
- z-index:101;
- display:none;
- background:#fff;
- max-height:160px;
- overflow-y:hidden;
-}
-.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{right:-7px;}
-.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{right:2px;}
-.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover{
- color: #fff;
- background: #ff8000;
-}
-.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option{
- padding:2px 10px 2px 5px;
-}
-.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current{
- background: #33AAFF;
- box-shadow: #178FE5 0px 1px 3px 0px inset;
- color:#fff;
- font-weight: 700;
-}
-.xdsoft_datetimepicker .xdsoft_month{
- width:90px;
- text-align:right;
-}
-.xdsoft_datetimepicker .xdsoft_calendar{
- clear:both;
-}
-.xdsoft_datetimepicker .xdsoft_year{
- width:56px;
-}
-.xdsoft_datetimepicker .xdsoft_calendar table{
- border-collapse:collapse;
- width:100%;
-
-}
-.xdsoft_datetimepicker .xdsoft_calendar td > div{
- padding-right:5px;
-}
-.xdsoft_datetimepicker .xdsoft_calendar th{
- height: 25px;
-}
-.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th{
- width:14.2857142%;
- text-align:center;
- background: #F5F5F5;
- border:1px solid #DDDDDD;
- color: #666666;
- font-size: 12px;
- text-align: right;
- padding:0px;
- border-collapse:collapse;
- cursor:pointer;
- height: 25px;
-}
-.xdsoft_datetimepicker .xdsoft_calendar th{
- background: #F1F1F1;
-}
-.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today{
- color:#33AAFF;
-}
-.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,
-.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,
-.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current{
- background: #33AAFF;
- box-shadow: #178FE5 0px 1px 3px 0px inset;
- color:#fff;
- font-weight: 700;
-}
-.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,
-.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,
-.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled{
- opacity:0.5;
-}
-.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled{
- opacity:0.2;
-}
-.xdsoft_datetimepicker .xdsoft_calendar td:hover,
-.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover{
- color: #fff !important;
- background: #ff8000 !important;
- box-shadow: none !important;
-}
-.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,
-.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover{
- color: inherit !important;
- background: inherit !important;
- box-shadow: inherit !important;
-}
-.xdsoft_datetimepicker .xdsoft_calendar th{
- font-weight: 700;
- text-align: center;
- color: #999;
- cursor:default;
-}
-.xdsoft_datetimepicker .xdsoft_copyright{ color:#ccc !important; font-size:10px;clear:both;float:none;margin-left:8px;}
-.xdsoft_datetimepicker .xdsoft_copyright a{ color:#eee !important;}
-.xdsoft_datetimepicker .xdsoft_copyright a:hover{ color:#aaa !important;}
-
-
-.xdsoft_time_box{
- position:relative;
- border:1px solid #ccc;
-}
-.xdsoft_scrollbar >.xdsoft_scroller{
- background:#ccc !important;
- height:20px;
- border-radius:3px;
-}
-.xdsoft_scrollbar{
- position:absolute;
- width:7px;
- width:7px;
- right:0px;
- top:0px;
- bottom:0px;
- cursor:pointer;
-}
-.xdsoft_scroller_box{
-position:relative;
-} \ No newline at end of file
diff --git a/public_html/skins/default/style.css b/public_html/skins/default/style.css
index ee00c91..69bbfd4 100644
--- a/public_html/skins/default/style.css
+++ b/public_html/skins/default/style.css
@@ -1,84 +1,91 @@
-body {
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 12px;
- color: #333;
- margin: 0;
- color: #514949;
- background: url(images/body.png) top repeat-x #f0f0f0;
+@font-face {
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: 900;
+ src: url("fonts/fa-solid-900.woff2") format('woff2'),
+ url("fonts/fa-solid-900.woff") format('woff');
}
-a {
- color: #1E90FF;
- text-decoration: none;
+@font-face {
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: 400;
+ src: url("fonts/fa-regular-400.woff2") format('woff2'),
+ url("fonts/fa-regular-400.woff") format('woff');
}
-h1, h2, h3, h4, h5, h6 {
- margin-top: 5px;
- color: #ff9900;
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Roboto'), local('Roboto-Regular'),
+ url('fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woff2') format('woff2'), // Chrome 26+, Opera 23+, Firefox 39+
+ url('fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-regular.woff') format('woff'); // Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+
}
-input[type="text"],
-input[type="password"],
-select[multiple="multiple"],
-textarea {
- border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- padding-left: 2px;
- color: black;
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 400;
+ src: local('Roboto Italic'), local('Roboto-Italic'),
+ url('fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woff2') format('woff2'), // Chrome 26+, Opera 23+, Firefox 39+
+ url('fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-italic.woff') format('woff'); // Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+
}
-select[multiple="multiple"] {
- padding-left: 0;
+@font-face {
+ font-family: 'Roboto';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Roboto Bold'), local('Roboto-Bold'),
+ url('fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woff2') format('woff2'), // Chrome 26+, Opera 23+, Firefox 39+
+ url('fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700.woff') format('woff'); // Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+
}
-table.list {
- border: 1px solid #d0d0d0;
- border-spacing: 0;
- border-radius: 3px;
- width: 100%;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
+@font-face {
+ font-family: 'Roboto';
+ font-style: italic;
+ font-weight: 700;
+ src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'),
+ url('fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woff2') format('woff2'), // Chrome 26+, Opera 23+, Firefox 39+
+ url('fonts/roboto-v18-greek-ext_cyrillic-ext_cyrillic_greek_latin-ext_latin-700italic.woff') format('woff'); // Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+
}
-table.list td {
- padding: 2px 4px;
- border: 1px solid white;
- border-left: none;
- border-top: none;
+html {
+ font-size: 9pt;
}
-table.list thead tr {
- background-color: #e0e0e0;
- font-weight: bold;
+body {
+ margin: 0;
+ color: #4f4f4f;
+ background: #f1eeea;
+ line-height: 1.5;
}
-table.list tbody tr {
- background-color: #f0f0f0;
+body, button, input, optgroup, select, textarea, .popover {
+ font-family: Roboto, sans-serif;
}
-table.list tfoot tr {
- background-color: #e0e0e0;
+a {
+ text-decoration: none;
}
-table.list tfoot tr td {
- padding: 3px 3px;
- font-size: 10px;
- text-shadow: white 1px 1px;
+table.list {
+ border: 1px solid #d0d0d0;
+ border-spacing: 0;
+ width: 100%;
}
-table.list tfoot tr td {
- border-top: solid 1px white;
- border-bottom: none;
+table.list thead tr {
+ background: #f1eeea;
}
-table.list td:last-child {
- border-right: none;
+table.list thead tr th {
+ border-width: 1px;
+ border-top: 0;
}
-table.list tbody tr:last-child td {
- border-bottom: none;
+table.list tfoot tr {
+ background: #f1eeea;
}
table.list tbody tr.selectable td {
@@ -86,12 +93,12 @@ table.list tbody tr.selectable td {
}
table.list tbody tr.selectable:hover {
- background-color: #d6efff;
+ background-color: #fef9e6;
}
table.list tbody tr td.empty-body {
height: 150px;
- color: #ff9900;
+ color: #f3a628;
text-align: center;
}
@@ -100,103 +107,181 @@ table.list tbody tr.deleted td {
}
fieldset {
- border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
margin-top: 10px;
}
legend {
- padding-left: 0;
color: #909090;
+ font-size: 1rem;
}
-table.form {
- width: 100%;
+form .required input,
+form .required select,
+form .required textarea {
+ background-color: #f0f9ff !important;
}
-table.form td {
- padding: 1px 5px;
+form input.error,
+form select.error,
+form textarea.error {
+ background-color: #f5e3e3 !important;
}
-table.form select {
- max-width: 500px;
+table.list.tree td span.expando {
+ cursor: pointer;
+ padding: 0 2px;
}
-table.form tr.required input,
-table.form tr.required select,
-table.form tr.required textarea {
- background-color: #f0f9ff;
+table.list.tree td span.expando:before {
+ content: "\f146";
+ font-size: 1rem;
+ font-weight: normal;
}
-table.form tr input.error,
-table.form tr select.error,
-table.form tr textarea.error {
- background-color: #f5e3e3;
+table.list.tree tr.expanded td span.expando:before {
+ content: "\f0fe";
+ font-size: 1rem;
+ font-weight: normal;
}
-td.label {
- width: 1%;
- min-width: 120px;
- text-align: right;
- font-weight: bold;
- white-space: nowrap;
+table.list.tree td span.expando,
+table.list.tree td span.spacer,
+table.list.tree td span.level {
+ display: inline-block;
}
-table.list.tree td span.expando {
- background: url(images/buttons.png) -4px -161px no-repeat;
+table.list.tree td span.spacer {
width: 16px;
- height: 14px;
- cursor: pointer;
}
-table.list.tree tr.expanded td span.expando {
- background-position: -4px -180px;
+.table,
+.form-group {
+ margin-bottom: .5rem;
}
-table.list.tree td span.expando,
-table.list.tree td span.spacer,
-table.list.tree td span.level {
+.input-group-text,
+.form-control:disabled,
+.form-control[readonly] {
+ background-color: #f5f3f0;
+}
+
+.modal-dialog {
+ max-width: 640px;
+ margin: 10rem auto;
+}
+
+.col-sm-9 > input[type=checkbox] {
+ margin-top: .4em;
+}
+
+input[type=radio] {
+ vertical-align: middle;
+}
+
+/**** Font-icons ****/
+
+.font-icon:before {
+ font-size: 1.25em;
display: inline-block;
+ width: 1em;
+ height: 1em;
+ line-height: 1;
+ font-family: 'Icons';
+ font-style: normal;
+ font-weight: 900;
+ text-decoration: inherit;
+ text-align: center;
+ speak: none;
+ font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
}
-table.list.tree td span.spacer {
- width: 16px;
+.font-icon.add:before {
+ content: "\f067";
+}
+
+.font-icon.reset:before,
+.font-icon.delete:before {
+ content: "\f1f8";
}
+.font-icon.edit:before {
+ content: "\f303";
+}
+
+.font-icon.settings:before {
+ content: "\f7d9";
+}
+
+.font-icon.search:before {
+ content: "\f002";
+}
+
+.font-icon.logout:before {
+ content: "\f011";
+}
+
+.font-icon.login:before {
+ content: "\f007";
+}
+
+.font-icon.domain:before {
+ content: "\f0ac";
+}
+
+.font-icon.password:before {
+ content: "\f023";
+}
+
+.font-icon.prev:before {
+ content: "\f104";
+}
+
+.font-icon.next:before {
+ content: "\f105";
+}
+
+.input-group-text.font-icon {
+ padding: 0 5px;
+ text-decoration: none;
+}
+
+.font-icon-text:before {
+ margin-right: .5em;
+ font-size: 1em;
+}
/**** Common UI elements ****/
#topmenu {
text-align: right;
height: 20px;
- padding: 0 10px;
- margin: 0;
+ padding: 0 5px;
white-space: nowrap;
- background: url(images/linen_header.jpg) 0 0 repeat-x;
+ background-color: #3a444e;
}
#topmenu > span {
color: #aaa;
font-size: 11px;
padding-top: 2px;
- height: 20px;
line-height: 20px;
}
#navigation {
- margin: 0 15px;
+ padding: 0 5px;
text-align: right;
height: 36px;
z-index: 2;
white-space: nowrap;
+ background-color: #3a444e;
}
#task_navigation {
- margin: 0 15px;
+ margin: 0 5px;
text-align: right;
- height: 21px;
+ min-height: 2em;
z-index: 2;
white-space: nowrap;
}
@@ -204,66 +289,65 @@ table.list.tree td span.spacer {
#message {
position: absolute;
top: 80px;
- left: 20px;
- width: 350px;
- height: 60px;
+ left: 0;
+ right: 0;
+ height: 56px;
z-index: 20;
}
#message div {
- opacity: 0.97;
- padding-left: 70px;
- border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- -moz-box-shadow: 1px 1px 3px #999;
- -webkit-box-shadow: #999 1px 1px 3px;
- width: 100%;
- height: 100%;
+ opacity: .97;
display: table;
}
#message.notice div {
- border-color: #aec1db;
color: #3465a4;
- background: url(images/info.png) 10px center no-repeat #c0e0ff;
+ background: #c0e0ff;
}
#message.error div {
- border-color: #db9999;
color: #a40000;
- background: url(images/error.png) 10px center no-repeat #edcccc;
+ background: #edcccc;
+}
+
+#message div:before {
+ font-size: 32px;
+ margin: 12px 1.5rem;
+}
+
+#message.notice div:before {
+ content: "\f05a";
+}
+
+#message.error div:before {
+ content: "\f071";
}
#message div span {
vertical-align: middle;
display: table-cell;
- line-height: 20px;
+ width: 99%;
}
#logo {
position: absolute;
top: 0px;
- left: 10px;
+ left: 5px;
cursor: pointer;
}
#content {
min-height: 400px;
- margin: 0 15px;
padding: 10px;
- background-color: #f5f5f5;
+ background-color: #fff;
border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
+ border-width: 1px 0 1px 0;
}
#footer {
- margin: 2px 15px;
- color: #b0b0b0;
- font-size: 9px;
+ margin: 5px;
+ color: #666;
+ font-size: 7pt;
margin-bottom: 10px;
clear: both;
}
@@ -271,83 +355,78 @@ table.list.tree td span.spacer {
#loading {
position: absolute;
display: none;
- top: 2px;
+ top: 60px;
left: 15px;
width: 150px;
- height: 18px;
- padding-left: 86px;
- color: #aaa;
+ height: 16px;
font-size: 11px;
+ line-height: 1.5;
z-index: 1;
- background: url(images/loading.gif) 0 3px no-repeat;
white-space: nowrap;
}
#topmenu .logout {
- background: url(images/buttons.png) -1px -101px no-repeat;
- padding-left: 20px;
margin-right: 10px;
color: white;
}
#topmenu .login {
- padding-left: 20px;
- margin-right: 20px;
- background: url(images/user_ico.png) 0 2px no-repeat;
+ margin-right: 10px;
}
#topmenu .domain {
- padding-left: 20px;
margin-right: 10px;
- background: url(images/domain_ico.png) 0 3px no-repeat;
+}
+
+#topmenu .domain:before {
+ margin-right: 0;
}
#navigation ul {
list-style-type: none;
margin: 0;
- padding: 8px 0;
+ padding: 0;
}
#navigation ul li {
- display: inline;
- font-size: 13px;
+ display: inline-block;
font-weight: bold;
- padding: 8px 0;
+ padding: 0;
}
#navigation ul li a {
- padding: 8px 10px;
+ display: inline-block;
+ line-height: 36px;
+ padding: 0 10px;
text-decoration: none;
- color: #514949;
+ color: #999;
}
-#navigation ul li.active {
- background: url(images/navbg.png) 0 0 repeat-x;
+#navigation ul li:hover {
+ background: #505e6b;
}
+#navigation ul li:hover a,
#navigation ul li.active a {
- text-shadow: white 1px 1px;
- color: #ff9900;
+ color: #e1e2e3;
}
#task_navigation ul {
list-style-type: none;
margin: 0;
- padding: 2px 0;
}
#task_navigation ul li {
- padding: 1px 0;
display: inline;
- font-size: 12px;
font-weight: bold;
- text-shadow: white 1px 1px;
}
#task_navigation ul li a {
- padding: 1px 10px;
+ line-height: 2;
+ padding: 0 10px;
text-decoration: none;
- color: #808080;
+ color: #f3a628;
+ text-shadow: 1px 1px #fff;
}
#navigation ul li a:active,
@@ -357,13 +436,9 @@ table.list.tree td span.spacer {
#taskcontent {
min-height: 380px;
- padding: 10px;
- background-color: #f0f0f0;
- border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- overflow-x: auto;
+ padding: 0 10px;
+ display: flex;
+ flex-direction: column;
}
#toc {
@@ -374,92 +449,30 @@ table.list.tree td span.spacer {
#search {
padding: 7px;
- margin-bottom: 10px;
border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- background-color: #e0e0e0;
-}
-
-#searchinput {
- border: none;
- background-color: white;
+ border-bottom: 0;
+ background-color: #f1eeea;
}
#searchinput:focus {
outline: none;
}
-.searchinput {
- height: 20px;
- margin: 0;
- padding: 0;
- background-color: white;
- border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- overflow: hidden;
-}
-
-.searchactions {
- float: left;
- padding: 1px;
- margin-left: -1px;
- height: 18px;
- width: 37px;
- background-color: #f0f0f0;
- cursor: pointer;
- border-right: 1px solid #e0e0e0;
- border-top-left-radius: 3px;
- border-bottom-left-radius: 3px;
- -moz-border-radius-topleft: 3px;
- -moz-border-radius-bottomleft: 3px;
- -webkit-border-top-left-radius: 3px;
- -webkit-border-left-right-radius: 3px;
-}
-
-#search-reset,
-#search-details {
- display: block;
- float: left;
- width: 18px;
- height: 18px;
- background: url(images/buttons.png) -1px 0 no-repeat;
-}
-
-#search-reset:hover,
-#search-details:hover {
- background-color: white;
-}
-
-#search-reset {
- border-left: 1px solid #e0e0e0;
-}
-
-#search-details {
- background-position: -1px -20px;
-}
-
.searchdetails {
display: none;
}
.searchfilter {
- color: #909090;
- font-weight: bold;
margin-top: 5px;
}
#search fieldset {
margin: 0;
- color: #909090;
margin-top: 5px;
}
-#search td.label {
- min-width: 0;
+#search + div > table.list {
+ border-top: 0;
}
div.vsplitter {
@@ -474,34 +487,25 @@ div.vsplitter {
white-space: nowrap;
}
-.clear {
- clear: both;
+.watermark {
+ flex: 1;
+ display: flex;
+ justify-content: center;
}
-.watermark {
- padding-top: 40px;
- text-align: center;
- width: 100%;
+.watermark img {
+ opacity: .3;
+ width: 75%;
}
.link {
cursor: pointer;
}
-.icon {
- width: 16px;
- height: 16px;
-}
-
-input.inactive {
- color: #d0d0d0;
-}
-
.formtitle {
- color: #ff9900;
font-size: 18px;
font-weight: bold;
- margin-left: 5px;
+ margin-bottom: 1rem;
}
.formbuttons {
@@ -509,29 +513,21 @@ input.inactive {
white-space: nowrap;
}
-.formbuttons .submit {
- font-weight: bold;
-}
-
.formbuttons input {
margin: 5px;
}
.listnav {
- width: 100%;
- text-align: right;
+ font-size: 10px;
}
.listnav a {
- float: left;
- display: block;
- width: 16px;
- height: 16px;
- background: url(images/arrow_left.png) center no-repeat;
-}
-
-.listnav a.next {
- background: url(images/arrow_right.png) center no-repeat;
+ display: inline-block;
+ text-decoration: none;
+ padding: 0 .25rem;
+ line-height: 1;
+ font-size: 10pt;
+ color: inherit;
}
.listnav a.disabled {
@@ -539,43 +535,13 @@ input.inactive {
cursor: default;
}
-.listnav span span {
- float: left;
- display: block;
- height: 14px;
- padding: 1px 5px;
-}
-
-.disabled,
-.readonly,
-.select.readonly option {
- color: #a0a0a0;
-}
-
-input.disabled,
-input.readonly,
-select.disabled,
-select.readonly,
-textarea.disabled,
-textarea.readonly {
- background-color: #f5f5f5;
- color: #a0a0a0;
-}
-
-input.maxsize {
- width: 368px; /* span.listarea width - 2px */
+.listnav > span {
+ display: flex;
+ align-items: center;
}
pre.debug {
- border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- background-color: white;
- padding: 2px;
- width: 500px;
height: 200px;
- margin: 0;
overflow: auto;
}
@@ -585,194 +551,73 @@ pre.debug {
border: none;
border-radius: 3px;
box-shadow: 0 2px 6px 0 #333;
- -moz-box-shadow: 0 2px 6px 0 #333;
- -webkit-box-shadow: 0 2px 6px 0 #333;
- -o-box-shadow: 0 2px 6px 0 #333;
}
a.button {
- display: inline-block;
- width: 18px;
- height: 18px;
- background: url(images/buttons.png) 0 0 no-repeat;
-}
-
-a.button.edit {
- background-position: -1px -81px;
-}
-
-a.button.add {
- background-position: -1px -41px;
-}
-
-a.button.delete {
- background-position: -1px -1px;
-}
-
-.xdsoft_datetimepicker {
- border-radius: 4px;
+ text-decoration: none;
+ color: #495057;
+ padding: 0 .25rem;
+ line-height: 2.1;
}
/********* Form smart inputs *********/
-span.listarea {
- display: block;
- width: 370px;
- max-height: 209px;
- overflow-y: auto;
- overflow-x: hidden;
- margin: 0;
- padding: 0;
- background-color: white;
- border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- text-align: left;
- text-shadow: none;
- color: black;
-}
-
-span.listelement {
- display: block;
- padding: 0;
- margin: 0;
- height: 18px;
- line-height: 18px;
- overflow: hidden;
- border-top: 1px solid #d0d0d0;
- white-space: nowrap;
-}
-
-span.listelement:first-child {
- border: none;
-}
-
-span.listelement input {
- border: none;
- background-color: transparent;
- padding-left: 2px;
- width: 328px;
- height: 17px;
- line-height: 17px;
-}
-
-span.listarea.disabled span.listelement input,
-span.listarea.readonly span.listelement input {
- width: 370px;
-}
-
-span.listelement input:focus {
- outline: none;
-}
-
-span.listelement span.actions {
- float: left;
- padding: 0;
- margin-left: -1px;
+.listelement:not(:first-child) > input,
+.listelement:not(:first-child) > span {
margin-top: -1px;
- height: 18px;
- width: 37px;
- border: 1px solid #d0d0d0;
- background-color: #f0f0f0;
- cursor: pointer;
-}
-
-span.listelement span.actions span {
- display: block;
- float: left;
- width: 18px;
- height: 18px;
- background: url(images/buttons.png) 0 0 no-repeat;
-}
-
-span.listelement span.actions span:hover {
- background-color: white;
-}
-
-span.listelement span.actions span.reset {
- background-position: -1px 0;
- border-left: 1px solid #e0e0e0;
-}
-
-span.listelement span.actions span.add {
- background-position: -1px -41px;
-}
-
-span.listelement span.actions span.search {
- background-position: -1px -60px;
- cursor: default;
}
-span.listarea.disabled,
-span.listarea.readonly {
- background-color: #f5f5f5;
+.listelement.input-group > input {
+ border-radius: 0 !important;
}
-input.disabled,
-input.readonly,
-span.listarea.disabled span.listelement input,
-span.listarea.readonly span.listelement input {
- color: #a0a0a0;
- cursor: default;
+.listelement.input-group > span :first-child {
+ border-radius: 0 !important;
}
-span.listarea.autocomplete span.listelement input {
- color: #514949;
+.listelement.input-group:first-child > input {
+ border-top-right-radius: .25rem !important;
}
-span.listarea.autocomplete span.listelement input.autocomplete {
- color: black;
+.listelement.input-group:first-child > span :first-child {
+ border-top-left-radius: .25rem !important;
}
-.autocomplete > span.listelement input {
- width: 348px;
- border-radius: 0;
+.listelement:last-child input {
+ border-bottom-right-radius: .25rem !important;
}
-.autocomplete > span.listelement span.actions {
- width: 18px;
+.listelement:last-child > span :first-child {
+ border-bottom-left-radius: .25rem !important;
}
-.autocomplete > span.listelement span.actions span.reset {
- border-left: none;
+.listarea.disabled,
+.listarea.readonly,
+.listarea.disabled span.listelement input,
+.listarea.readonly span.listelement input {
+ background-color: #f5f3f0;
}
-.autocomplete > span.listelement span.actions span.search:hover {
- background-color: #f0f0f0;
-}
-
-span.listarea.select {
- width: 200px;
-}
-
-span.listarea.select > span.listelement input {
- width: 180px;
-}
-
-span.listcontent {
+.listcontent {
display: block;
- padding: 0;
- margin: 0;
- overflow: hidden;
max-height: 94px;
overflow-x: hidden;
overflow-y: auto;
- border-top: 1px solid #d0d0d0;
- background-color: #f5f5f5;
+ background-color: #f1eeea;
cursor: default;
+ border-radius: 0 0 .25rem .25rem;
}
-span.listcontent span.listelement {
- padding-left: 3px;
-}
-
-span.listcontent span.listelement:hover {
- background-color: #d6efff;
+.listcontent .listelement {
+ padding: 0 5px;
+ line-height: 2;
+ color: #4f4f4f;
+ font-size: 9pt;
}
-span.listcontent span.listelement.selected {
- background-color: #d6efff;
+.listcontent .listelement:hover,
+.listcontent .listelement.selected {
+ background-color: #fef9e6;
}
span.form_error {
@@ -782,84 +627,58 @@ span.form_error {
padding-left: 5px;
}
-.ldap_url,
-.aci {
- background-color: #F5F5F5;
- border: 1px solid #D0D0D0;
- border-radius: 3px 3px 3px 3px;
-}
-
-.ldap_url td, li {
- white-space: nowrap;
-}
-
.ldap_url ul {
list-style-type: none;
padding: 0;
margin: 0;
}
-.ldap_url ul li {
- padding: 0;
- margin: 0;
-}
-
-.ldap_url ul li input {
- width: 120px;
- margin-right: 5px;
-}
-
-.ldap_url tr span {
- padding: 0 5px;
+.ldap_url ul li:not(:last-child) {
+ margin-bottom: .25rem;
}
-.ldap_url tr.ldap_base td input,
-.ldap_url tr.ldap_scope td select {
- width: 368px;
+form .required .ldap_url {
+ padding: .25rem;
+ border-radius: .25rem;
}
-.ldap_url tr.ldap_host td input.ldap_host {
- width: 290px;
+.ldap_host .input-group-text {
+ height: calc(1.5em + .75rem + 2px);
+ border-radius: 0;
+ border-right: 0;
+ border-left: 0;
}
-table.form tr.required .ldap_url input,
-table.form tr.required .ldap_url select {
- background-color: white;
+.ldap_host input:first-child {
+ flex: 10;
}
-table.form tr.required .ldap_url {
- background-color: #F0F9FF;
+.ldap_filter select {
+ max-width: 120px;
}
-.ldap_url a.button {
- vertical-align: middle;
- height: 22px;
-}
-
-.aci {
- padding: 5px;
+.acltable {
+ border-spacing: 0;
}
.acltable select {
- width: 400px;
+ width: 99%;
+ padding: 0;
}
.acltable .buttons {
+ width: 1%;
vertical-align: top;
text-align: center;
}
.acltable .buttons input {
- display: block;
- width: 100px;
-}
-
-.acltable {
- border-spacing: 0;
+ width: 80px;
+ margin-bottom: 5px;
}
.acltable td.list {
- padding: 0;
+ padding-right: 5px;
}
/***** autocomplete list *****/
@@ -873,276 +692,64 @@ table.form tr.required .ldap_url {
#autocompletepane ul
{
- margin: 0px;
+ margin: 0;
padding: 2px;
- list-style-image: none;
- list-style-type: none;
}
#autocompletepane ul li
{
display: block;
- height: 16px;
- font-size: 11px;
padding-left: 6px;
- padding-top: 2px;
padding-right: 6px;
white-space: nowrap;
cursor: pointer;
+ line-height: 2;
}
#autocompletepane ul li.selected
{
- background-color: #d6efff;
-}
-
-/***** tabbed interface elements *****/
-
-div.tabsbar
-{
- height: 22px;
- border-bottom: 1px solid #d0d0d0;
- white-space: nowrap;
- margin: 10px 5px 0 5px;
-}
-
-span.tablink,
-span.tablink-selected
-{
- float: left;
- height: 23px !important;
- height: 22px;
- overflow: hidden;
- background: url(images/tabs-left.gif) top left no-repeat;
- font-weight: bold;
-}
-
-span.tablink
-{
- cursor: pointer;
- text-shadow: white 1px 1px;
-}
-
-span.tablink-selected
-{
- cursor: default;
- background-position: 0px -23px;
-}
-
-span.tablink a,
-span.tablink-selected a
-{
- display: inline-block;
- padding: 4px 10px 0 5px;
- margin-left: 5px;
- height: 23px;
- color: #808080;
- max-width: 185px;
- text-decoration: none;
- overflow: hidden;
- text-overflow: ellipsis;
- -o-text-overflow: ellipsis;
- background: url(images/tabs-right.gif) top right no-repeat;
- outline: none;
-}
-
-span.tablink-selected a
-{
- cursor: inherit;
- color: #514949;
- background-position: right -23px;
-}
-
-fieldset.tabbed
-{
- margin-top: 0;
- padding-top: 12px;
- border-top: none;
-}
-
-/***** Dialog windows *****/
-
-#modal_bg {
- background-color: #000;
- z-index: 1000;
- opacity: 0.2;
- filter: alpha(opacity=20);
-}
-
-#modal_pixel {
- z-index: 1001;
-}
-
-.modal {
- position: relative;
- min-width: 350px;
- overflow: hidden;
- line-height: 15px;
- background-color: #FFF;
- color: #333;
- border: 1px solid rgba(51, 51, 51, 0.5);
- border-radius: 4px;
- box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-
-.modal_header {
- padding: 10px;
- font-size: 14px;
- font-weight: bold;
- border-bottom: solid 1px #DDD;
-}
-
-.modal_close {
- position: absolute;
- right: 10px;
- top: 10px;
- font-weight: normal;
- font-size: 12px;
- cursor: pointer;
- color: #BABABA;
-}
-
-.modal_msg {
- font-size: 12px;
- padding: 20px;
- color: #3A3A3A;
- text-shadow: rgba(255, 255, 255, 0.75) 0 1px 1px;
-}
-
-.modal_btns {
- padding: 10px;
- font-size: 10px;
- font-weight: bold;
- border-top: solid 1px #DDD;
- background-color: #EFEFEF;
- text-align: right;
- white-space: nowrap;
-}
-
-.modal_btns div {
- display: inline-block;
- min-width: 40px;
- padding: 0 10px;
- height: 25px;
- line-height: 25px;
- margin-left: 10px;
- text-align: center;
- cursor: pointer;
- border-radius: 4px;
- box-shadow: rgba(255, 255, 255, 0.2) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.0470588) 0px 1px 2px 0px;
- text-shadow: rgba(255, 255, 255, 0.75) 0 1px 1px;
- border: 1px solid rgba(0, 0, 0, 0.14902);
- border-bottom-color: rgba(0, 0, 0, 0.247059);
- background-color: #F5F5F5;
- color: #333;
-}
-
-.modal_btns div:hover {
- background-color: #E6E6E6;
-}
-
-.modal_btns div.default {
- text-shadow: rgba(0, 0, 0, 0.247059) 0px -1px 0px;
- border: 1px solid rgba(0, 0, 0, 0.0980392);
- background-color: #006DCC;
- color: #FFF;
-}
-
-.modal_btns div.default:hover {
- background-color: #0044CC
+ background-color: #fef9e6;
}
/**** ACI widget ********/
-#aci-dialog,
-#aci-users-dialog {
- width: 550px;
- background-color: #F0F0F0;
- border: 1px solid #D0D0D0;
- border-radius: 4px;
- margin: 10px;
- padding: 10px;
-}
-
-#aci-users-dialog {
- width: 400px;
-}
-
-#aci-dialog fieldset {
- background-color: #f0f0f0;
-}
-
-#aci-dialog > label {
- padding-right: 5px;
-}
-
-#aci-name {
- width: 420px;
-}
-
-#aci-rights label,
-#aci-users-results,
-#aci-users-selected,
-#aci-targets-attr {
+#aci-rights label {
display: block;
}
-#aci-rights-all {
- padding-top: 5px;
+#aci-rights label input {
+ vertical-align: middle;
}
-#aci-targets-attr,
-#aci-users-results,
-#aci-users-selected,
-#aci-targets-target,
-#aci-targets-filter {
- width: 400px;
+#aci-rights label span {
+ padding-left: 5px;
}
-#aci-users-dialog label,
-#aci-targets label {
- font-size: 11px;
- font-color: #606060;
+#aci-targets-targetbtn {
+ height: calc(1.5em + .75rem + 2px);
}
-#aci-users-dialog div,
-#aci-targets div {
- margin-bottom: 10px;
+#aci-targets-attr + label {
+ padding-right: 1rem;
}
-
/**** IMAP ACL widget ********/
-#acl-dialog {
- width: 550px;
- background-color: #F0F0F0;
- border: 1px solid #D0D0D0;
- border-radius: 4px;
- margin: 10px;
- padding: 10px;
-}
-
-#acl-form td {
- white-space: nowrap;
- width: 1%;
- min-width: 20px;
-}
-
#acl-form label {
display: block;
}
-#acl-form td.value div span {
- display: inline-block;
- vertical-align: top;
- min-width: 200px;
+#acl-type {
+ margin-bottom: .5rem;
}
-#acl-form td.value div label input,
-#acl-form td.value div label span {
+#acl-type + div label input {
vertical-align: middle;
}
+#acl-type + div label span {
+ padding-left: 5px;
+}
/**** Login form elements ****/
@@ -1151,34 +758,14 @@ fieldset.tabbed
margin-top: 75px;
padding: 20px;
width: 330px;
- background-color: #e0e0e0;
+ background-color: #f1eeea;
border: 1px solid #d0d0d0;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
+ border-radius: .25rem;
text-align: center;
}
-#login_form span {
- display: block;
- line-height: 24px;
- width: 330px;
- text-align: left;
- white-space: nowrap;
-}
-
#login_form label {
- display: block;
- width: 100px;
- text-align: right;
- float: left;
- margin-right: 10px;
-}
-
-#login_form select,
-#login_form input[type="text"],
-#login_form input[type="password"] {
- width: 210px;
+ padding: 0 1rem;
}
#login_submit {
@@ -1188,69 +775,70 @@ fieldset.tabbed
/**** Main screen elements ****/
#main {
- padding: 5px 30px;
+ display: flex;
+ flex-wrap: wrap;
}
#main div {
- float: left;
margin: 10px;
width: 150px;
height: 150px;
text-align: center;
cursor: pointer;
- background-color: #f0f0f0;
+ background-color: #f1eeea;
border: 1px solid #d0d0d0;
border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
}
#main div:hover {
- background-color: #d6efff;
+ background-color: #fef9e6;
}
-#main div span.image {
- display: block;
- margin: 15px 27px 10px;
- height: 96px;
- width: 96px;
- background: url(images/about.png) center center no-repeat;
+#main div span.image:before {
+ font-size: 96px;
+ color: #f3a628;
+ margin: 15px 0 10px;
+ width: 100%;
+}
+
+#main div.user span.image:before {
+ content: "\f007";
}
-#main div.user span.image {
- background: url(images/users.png) center center no-repeat;
+#main div.group span.image:before {
+ content: "\f0c0";
}
-#main div.group span.image {
- background: url(images/groups.png) center center no-repeat;
+#main div.resource span.image:before {
+ content: "\f013";
}
-#main div.resource span.image {
- background: url(images/resources.png) center center no-repeat;
+#main div.sharedfolder span.image:before {
+ content: "\f07c";
}
-#main div.sharedfolder span.image {
- background: url(images/sharedfolders.png) center center no-repeat;
+#main div.settings span.image:before {
+ content: "\f7d9";
}
-#main div.settings span.image {
- background: url(images/settings.png) center center no-repeat;
+#main div.domain span.image:before {
+ content: "\f0ac";
}
-#main div.domain span.image {
- background: url(images/domains.png) center center no-repeat;
+#main div.role span.image:before {
+ content: "\f21b";
}
-#main div.role span.image {
- background: url(images/roles.png) center center no-repeat;
+#main div.ou span.image:before {
+ content: "\f0e8";
}
-#main div.ou span.image {
- background: url(images/ou.png) center center no-repeat;
+#main div.about span.image:before {
+ content: "\f05a";
}
+
#main div span.label {
font-weight: bold;
-
}
#reqtime {
@@ -1263,34 +851,23 @@ fieldset.tabbed
text-decoration: none;
}
-/**** User/Group task elements ****/
-
-#userlist table,
-#grouplist table {
- width: 100%;
-}
-
/**** About pages ****/
td.yes {
- background-color: #B5FFAB;
- font-style: italic;
+ background-color: #d4edda;
+ color: #155724;
text-align: center;
+ font-style: italic;
}
td.no {
- background-color: #FF0000;
- color: #FFFFFF;
- font-weight: bold;
+ background-color: #f8d7da;
+ color: #721c24;
text-align: center;
}
/**** Settings ****/
-table.form table.list td {
- padding: 2px 4px;
-}
-
#type_attr_table td.actions {
width: 40px;
padding: 0;
@@ -1313,11 +890,7 @@ table.form table.list td {
display: none;
}
-#type_attr_form table.form td {
- border: none;
-}
-
-a.add_attr {
- padding-left: 2px;
- padding-top: 2px;
+#type_attr_form td {
+ padding: 1rem;
+ background-color: #f8f8f8;
}
diff --git a/public_html/skins/default/templates/about.html.enterprise b/public_html/skins/default/templates/about.html.enterprise
index b3e20be..1b7b5ce 100644
--- a/public_html/skins/default/templates/about.html.enterprise
+++ b/public_html/skins/default/templates/about.html.enterprise
@@ -1,5 +1,4 @@
-<html><head>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252"></head><body><div id="task_content">
+<div id="task_content">
<h1>Kolab Web Administration Panel</h1>
<p>
This is the Kolab Web Administration Panel client interface for Kolab Enterprise, developed and supported by <a href="http://www.kolabsys.com/">Kolab Systems AG</a>.
@@ -21,5 +20,3 @@ If you have server support tickets left, you can create a new ticket by
emailing <a href="mailto:support@kolabsys.com">support@kolabsys.com</a>. Please keep in mind that we only accept one issue per ticket. If you need new server support tickets, please send email to <a href="mailto:sales@kolabsys.com">sales@kolabsys.com</a>.
</p>
</div>
-
-</body></html> \ No newline at end of file
diff --git a/public_html/skins/default/templates/about_kolab.html b/public_html/skins/default/templates/about_kolab.html
index e9f5857..8ddb920 100644
--- a/public_html/skins/default/templates/about_kolab.html
+++ b/public_html/skins/default/templates/about_kolab.html
@@ -10,7 +10,7 @@ the Kolab Groupware Solution would normally include one or more of these
servers, in combination with <a href="https://kolab.org/clients">a
variety of clients</a> for its users.
If you are interested in the technology, you can read more about
-it on the dedicated <a href="/admin/kolab/technology.php">technology page</a>.
+it on the dedicated <a href="#technology" onclick="return kadm.command('about.technology', '', this)">technology page</a>.
</p>
<h2>Why Kolab?</h2>
diff --git a/public_html/skins/default/templates/about_kolabsys.html b/public_html/skins/default/templates/about_kolabsys.html
index 95d77f5..3f02c15 100644
--- a/public_html/skins/default/templates/about_kolabsys.html
+++ b/public_html/skins/default/templates/about_kolabsys.html
@@ -1,8 +1,8 @@
<div id="task_content">
-<div align="center">
+<div align="center" class="mb-3">
<a href="http://kolabsys.com/">
- <img src="{$skin_path}images/kolabsystems.png" alt="Kolab Systems AG" longdesc="http://kolabsys.com" style="border:0px;" />
+ <img src="{$skin_path}images/kolabsystems.png" alt="Kolab Systems AG" />
</a>
</div>
diff --git a/public_html/skins/default/templates/domain.html b/public_html/skins/default/templates/domain.html
index 1ad4332..45941d5 100644
--- a/public_html/skins/default/templates/domain.html
+++ b/public_html/skins/default/templates/domain.html
@@ -1,17 +1,6 @@
<div id="toc" class="domain">
- <div id="search">
- <div class="searchinput">
- <input type="text" id="searchinput" name="search" value="{$engine->translate('search')}" />
- <script type="text/javascript">search_init('domain.list')</script>
- <span class="searchactions">
- <span id="search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></span>
- <span id="search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></span>
- </span>
- </div>
- <div class="searchdetails">{$engine->search_form()}</div>
- </div>
+ {include file="search.html" list="domain.list"}
<div id="domainlist"></div>
</div>
<div class="vsplitter">&nbsp;</div>
<div id="taskcontent" class="domain"></div>
-<div class="clear"></div>
diff --git a/public_html/skins/default/templates/error.html b/public_html/skins/default/templates/error.html
index 848a161..b74509a 100644
--- a/public_html/skins/default/templates/error.html
+++ b/public_html/skins/default/templates/error.html
@@ -3,8 +3,9 @@
<head>
<meta charset="utf-8" />
<title>{$pagetitle}</title>
+ <link rel="stylesheet" href="{$skin_path}deps/bootstrap.min.css">
<link rel="stylesheet" href="{$skin_path}style.css" />
- <link rel="shortcut icon" type="image/png" href="{$skin_path}images/favicon.png" />
+ <link rel="shortcut icon" href="{$skin_path}images/favicon.ico" />
</head>
<body>
<img id="logo" src="{$skin_path}images/logo.png" alt="logo" />
diff --git a/public_html/skins/default/templates/footer.html.enterprise b/public_html/skins/default/templates/footer.html.enterprise
index d6c6f59..e00ca2c 100644
--- a/public_html/skins/default/templates/footer.html.enterprise
+++ b/public_html/skins/default/templates/footer.html.enterprise
@@ -1,6 +1,4 @@
-<html><head>
-<meta http-equiv="content-type" content="text/html; charset=windows-1252"></head><body><div style="font-size:130%;">
+<div>
This is the web admin of <strong>Kolab Enterprise</strong>.<br>
It usually comes with an SLA. If you have an SLA and server support tickets left, you can contact <a href="mailto:support@kolabsys.com">support@kolabsys.com</a> for technical assistance in case you need any.
</div>
-</body></html> \ No newline at end of file
diff --git a/public_html/skins/default/templates/group.html b/public_html/skins/default/templates/group.html
index e1a4c82..c982ef7 100644
--- a/public_html/skins/default/templates/group.html
+++ b/public_html/skins/default/templates/group.html
@@ -1,17 +1,6 @@
<div id="toc" class="group">
- <div id="search">
- <div class="searchinput">
- <input type="text" id="searchinput" name="search" value="{$engine->translate('search')}" />
- <script type="text/javascript">search_init('group.list')</script>
- <span class="searchactions">
- <span id="search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></span>
- <span id="search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></span>
- </span>
- </div>
- <div class="searchdetails">{$engine->search_form()}</div>
- </div>
+ {include file="search.html" list="group.list"}
<div id="grouplist"></div>
</div>
<div class="vsplitter">&nbsp;</div>
<div id="taskcontent" class="group"></div>
-<div class="clear"></div>
diff --git a/public_html/skins/default/templates/login.html b/public_html/skins/default/templates/login.html
index 24c4730..6e2fa8a 100644
--- a/public_html/skins/default/templates/login.html
+++ b/public_html/skins/default/templates/login.html
@@ -3,8 +3,9 @@
<head>
<meta charset="utf-8" />
<title>{$pagetitle}</title>
+ <link rel="stylesheet" href="{$skin_path}deps/bootstrap.min.css">
<link rel="stylesheet" href="{$skin_path}style.css" />
- <link rel="shortcut icon" type="image/png" href="{$skin_path}images/favicon.png" />
+ <link rel="shortcut icon" href="{$skin_path}images/favicon.ico" />
<script src="js/jquery.min.js"></script>
<script src="js/kolab_admin.js"></script>
</head>
@@ -17,6 +18,7 @@
<div id="footer">
{include file="footer.html"}
</div>
+<script src="{$skin_path}deps/bootstrap.bundle.min.js"></script>
{$script}
</body>
</html>
diff --git a/public_html/skins/default/templates/main.html b/public_html/skins/default/templates/main.html
index 3237252..b9143b1 100644
--- a/public_html/skins/default/templates/main.html
+++ b/public_html/skins/default/templates/main.html
@@ -3,19 +3,18 @@
<head>
<meta charset="utf-8" />
<title>{$pagetitle}</title>
+ <link rel="stylesheet" href="{$skin_path}deps/bootstrap.min.css">
<link rel="stylesheet" href="{$skin_path}style.css" />
- <link rel="stylesheet" href="{$skin_path}jquery.datetimepicker.css" />
- <link rel="shortcut icon" type="image/png" href="{$skin_path}images/favicon.png" />
+ <link rel="shortcut icon" href="{$skin_path}images/favicon.ico" />
<script src="js/jquery.min.js"></script>
- <script src="js/jquery.datetimepicker.js"></script>
<script src="js/kolab_admin.js"></script>
<script src="{$skin_path}ui.js"></script>
</head>
<body>
<img id="logo" src="{$skin_path}images/logo.png" alt="logo" onclick="document.location='.'" />
<div id="topmenu">
- <span class="login">{$user.fullname}</span>
- <span id="domain-selector" class="domain">
+ <span class="login font-icon font-icon-text">{$user.fullname}</span>
+ <span id="domain-selector" class="domain font-icon font-icon-text">
{if count($engine->get_env('domains')) > 1}
<form id="domain-selector-form" method="post" style="display: inline">
<input data-type="select" name="domain" type="hidden" value="{$user.domain}" />
@@ -24,7 +23,7 @@
{$user.domain}
{/if}
</span>
- <span class="logout link" onclick="kadm.main_logout()">{$engine->translate('logout')}</span>
+ <span class="logout link font-icon font-icon-text" onclick="kadm.main_logout()">{$engine->translate('logout')}</span>
</div>
<div id="navigation">{$main_menu}</div>
<div id="task_navigation">{$task_menu}</div>
@@ -33,7 +32,7 @@
<div id="main">
{foreach $tasks as $link => $label}
<div class="{preg_replace('/\..*$/', '', $link)}" onclick="kadm.command('{$link}', '', this)">
- <span class="image"></span>
+ <span class="image font-icon"></span>
<span class="label">{$engine->translate($label)}</span>
</div>
{/foreach}
@@ -42,6 +41,7 @@
<div id="footer">
{include file="footer.html"}
</div>
+<script src="{$skin_path}deps/bootstrap.bundle.min.js"></script>
{$script}
</body>
</html>
diff --git a/public_html/skins/default/templates/ou.html b/public_html/skins/default/templates/ou.html
index 6928c6c..6402986 100644
--- a/public_html/skins/default/templates/ou.html
+++ b/public_html/skins/default/templates/ou.html
@@ -1,17 +1,6 @@
<div id="toc" class="ou">
- <div id="search">
- <div class="searchinput">
- <input type="text" id="searchinput" name="search" value="{$engine->translate('search')}" />
- <script type="text/javascript">search_init('ou.list')</script>
- <span class="searchactions">
- <span id="search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></span>
- <span id="search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></span>
- </span>
- </div>
- <div class="searchdetails">{$engine->search_form()}</div>
- </div>
+ {include file="search.html" list="ou.list"}
<div id="oulist"></div>
</div>
<div class="vsplitter">&nbsp;</div>
<div id="taskcontent" class="ou"></div>
-<div class="clear"></div>
diff --git a/public_html/skins/default/templates/resource.html b/public_html/skins/default/templates/resource.html
index 0f09c04..c4b58fc 100644
--- a/public_html/skins/default/templates/resource.html
+++ b/public_html/skins/default/templates/resource.html
@@ -1,17 +1,6 @@
<div id="toc" class="resource">
- <div id="search">
- <div class="searchinput">
- <input type="text" id="searchinput" name="search" value="{$engine->translate('search')}" />
- <script type="text/javascript">search_init('resource.list')</script>
- <span class="searchactions">
- <span id="search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></span>
- <span id="search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></span>
- </span>
- </div>
- <div class="searchdetails">{$engine->search_form()}</div>
- </div>
+ {include file="search.html" list="resource.list"}
<div id="resourcelist"></div>
</div>
<div class="vsplitter">&nbsp;</div>
<div id="taskcontent" class="resource"></div>
-<div class="clear"></div>
diff --git a/public_html/skins/default/templates/role.html b/public_html/skins/default/templates/role.html
index 1a37852..166520e 100644
--- a/public_html/skins/default/templates/role.html
+++ b/public_html/skins/default/templates/role.html
@@ -1,17 +1,6 @@
<div id="toc" class="role">
- <div id="search">
- <div class="searchinput">
- <input type="text" id="searchinput" name="search" value="{$engine->translate('search')}" />
- <script type="text/javascript">search_init('role.list')</script>
- <span class="searchactions">
- <span id="search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></span>
- <span id="search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></span>
- </span>
- </div>
- <div class="searchdetails">{$engine->search_form()}</div>
- </div>
+ {include file="search.html" list="role.list"}
<div id="rolelist"></div>
</div>
<div class="vsplitter">&nbsp;</div>
<div id="taskcontent" class="role"></div>
-<div class="clear"></div>
diff --git a/public_html/skins/default/templates/search.html b/public_html/skins/default/templates/search.html
new file mode 100644
index 0000000..556de85
--- /dev/null
+++ b/public_html/skins/default/templates/search.html
@@ -0,0 +1,11 @@
+ <div id="search">
+ <div class="searchinput input-group">
+ <span class="input-group-prepend">
+ <a id="search-details" class="input-group-text font-icon settings" href="#search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></a>
+ <a id="search-reset" class="input-group-text font-icon delete" href="#search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></a>
+ </span>
+ <input type="text" id="searchinput" name="search" />
+ </div>
+ <script type="text/javascript">search_init('{$list}')</script>
+ <div class="searchdetails">{$engine->search_form()}</div>
+ </div>
diff --git a/public_html/skins/default/templates/sharedfolder.html b/public_html/skins/default/templates/sharedfolder.html
index 77d09fb..ffcedb3 100644
--- a/public_html/skins/default/templates/sharedfolder.html
+++ b/public_html/skins/default/templates/sharedfolder.html
@@ -1,17 +1,6 @@
<div id="toc" class="sharedfolder">
- <div id="search">
- <div class="searchinput">
- <input type="text" id="searchinput" name="search" value="{$engine->translate('search')}" />
- <script type="text/javascript">search_init('sharedfolder.list')</script>
- <span class="searchactions">
- <span id="search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></span>
- <span id="search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></span>
- </span>
- </div>
- <div class="searchdetails">{$engine->search_form()}</div>
- </div>
+ {include file="search.html" list="sharedfolder.list"}
<div id="sharedfolderlist"></div>
</div>
<div class="vsplitter">&nbsp;</div>
<div id="taskcontent" class="sharedfolder"></div>
-<div class="clear"></div>
diff --git a/public_html/skins/default/templates/signup.html b/public_html/skins/default/templates/signup.html
index f020865..4cb8926 100644
--- a/public_html/skins/default/templates/signup.html
+++ b/public_html/skins/default/templates/signup.html
@@ -5,10 +5,10 @@
<title>{$engine->translate('signup.headline')}</title>
<link rel="stylesheet" href="{$skin_path}style.css" />
<link rel="stylesheet" href="{$skin_path}hosted.css" />
- <link rel="shortcut icon" type="image/png" href="{$skin_path}images/favicon.png" />
+ <link rel="shortcut icon" href="{$skin_path}images/favicon.ico" />
<script src="js/jquery.min.js"></script>
<script src="js/kolab_admin.js"></script>
- <script src='https://www.google.com/recaptcha/api.js'></script>
+ <script src="https://www.google.com/recaptcha/api.js"></script>
<script src="js/kolab_hosted.js"></script>
<script src="{$skin_path}ui.js"></script>
</head>
diff --git a/public_html/skins/default/templates/type.html b/public_html/skins/default/templates/type.html
index 8e15792..66a20d1 100644
--- a/public_html/skins/default/templates/type.html
+++ b/public_html/skins/default/templates/type.html
@@ -1,18 +1,20 @@
<div id="toc" class="type">
<div id="search">
- <div class="searchinput">
- <input type="text" id="searchinput" name="search" value="{$engine->translate('search')}" />
- <script type="text/javascript">search_init('settings.type_list')</script>
- <span class="searchactions">
- <span id="search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></span>
- <span id="search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></span>
+ <div class="searchinput input-group">
+ <span class="input-group-prepend">
+ <a id="search-details" class="input-group-text font-icon settings" href="#search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></a>
+ <a id="search-reset" class="input-group-text font-icon delete" href="#search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></a>
</span>
+ <input type="text" id="searchinput" name="search" />
</div>
+ <script type="text/javascript">search_init('settings.type_list')</script>
<div class="searchdetails">{$engine->type_search_form()}</div>
- <div class="searchfilter">{$engine->translate('type.object_type')}: {$engine->type_filter()}</div>
+ <div class="searchfilter input-group">
+ <span class="input-group-prepend input-group-text">{$engine->translate('type.object_type')}</span>
+ {$engine->type_filter()}
+ </div>
</div>
<div id="typelist"></div>
</div>
<div class="vsplitter">&nbsp;</div>
<div id="taskcontent" class="type"></div>
-<div class="clear"></div>
diff --git a/public_html/skins/default/templates/user.html b/public_html/skins/default/templates/user.html
index 8244305..14a7c10 100644
--- a/public_html/skins/default/templates/user.html
+++ b/public_html/skins/default/templates/user.html
@@ -1,17 +1,6 @@
<div id="toc" class="user">
- <div id="search">
- <div class="searchinput">
- <input type="text" id="searchinput" name="search" value="{$engine->translate('search')}" />
- <script type="text/javascript">search_init('user.list')</script>
- <span class="searchactions">
- <span id="search-details" title="{$engine->translate('search.criteria')}" onclick="search_details()"></span>
- <span id="search-reset" title="{$engine->translate('search.reset')}" onclick="search_reset()"></span>
- </span>
- </div>
- <div class="searchdetails">{$engine->search_form()}</div>
- </div>
+ {include file="search.html" list="user.list"}
<div id="userlist"></div>
</div>
<div class="vsplitter">&nbsp;</div>
<div id="taskcontent" class="user"></div>
-<div class="clear"></div>
diff --git a/public_html/skins/default/templates/watermark.html b/public_html/skins/default/templates/watermark.html
index 1229f20..30d5aca 100644
--- a/public_html/skins/default/templates/watermark.html
+++ b/public_html/skins/default/templates/watermark.html
@@ -1,3 +1,3 @@
<div class="watermark">
- <img src="{$skin_path}images/logo-big.png" alt="" />
+ <img src="{$skin_path}images/watermark.svg" alt="" />
</div>
diff --git a/public_html/skins/default/ui.js b/public_html/skins/default/ui.js
index 543b6b3..5ea7c62 100644
--- a/public_html/skins/default/ui.js
+++ b/public_html/skins/default/ui.js
@@ -28,11 +28,7 @@ function search_init(command)
{
kadm.env.search_command = command;
- $('#searchinput').addClass('inactive')
- .blur(function() {
- if (this.value == '')
- $(this).val(kadm.t('search')).addClass('inactive');
- })
+ $('#searchinput').addClass('form-control').attr('placeholder', kadm.t('search'))
.keypress(function(e) {
if (this.value && e.which == 13) { // ENTER key
var props = kadm.serialize_form('#search-form');
@@ -41,18 +37,10 @@ function search_init(command)
kadm.command(kadm.env.search_command, props);
}
})
- .focus(function() {
- if (this.value == kadm.t('search'))
- $(this).val('').removeClass('inactive');
- });
};
function search_reset()
{
- var input = $('#searchinput');
-
- input.val(kadm.t('search')).addClass('inactive');
-
kadm.command(kadm.env.search_command, {search: ''});
};
@@ -78,49 +66,31 @@ function init_tabs(id, current)
if (!fs.length)
return;
- // find active fieldset
- if (!current) {
- current = 0;
- fs.each(function(idx) { if ($(this).hasClass('active')) { current = idx; return false; } });
- }
+ // TODO: preselect the current tab
- // first hide not selected tabs
- fs.each(function(idx) { if (idx != current) $(this).hide(); });
+ content.each(function(idx, item) {
+ var tabs = [], nav = $('<ul>').attr({'class': 'nav nav-tabs', role: 'tablist'});
- // create tabs container
- var tabs = $('<div>').addClass('tabsbar').prependTo(content);
+ $(this).addClass('tab-content').children('fieldset').each(function(i, fieldset) {
+ var tab, id = fieldset.id || ('tab' + idx + '-' + i),
+ tab_class = $(fieldset).data('navlink-class');
- // convert fildsets into tabs
- fs.each(function(idx) {
- var tab, a, elm = $(this), legend = elm.children('legend');
-
- // create a tab
- a = $('<a>').text(legend.text()).attr('href', '#');
- tab = $('<span>').attr({'id': 'tab'+idx, 'class': 'tablink'})
- .click(function() { show_tab(id, idx); return false; })
-
- // remove legend
- legend.remove();
- // style fieldset
- elm.addClass('tabbed');
- // style selected tab
- if (idx == current)
- tab.addClass('tablink-selected');
-
- // add the tab to container
- tab.append(a).appendTo(tabs);
- });
-};
+ $(fieldset).addClass('tab-pane').attr({id: id, role: 'tabpanel'});
+ tab = $('<li>').addClass('nav-item').append(
+ $('<a>').addClass('nav-link' + (tab_class ? ' ' + tab_class : ''))
+ .attr({role: 'tab', 'href': '#' + id})
+ .text($('legend', fieldset).first().text())
+ .click(function(e) { $(this).tab('show'); return false; })
+ );
+ $('legend', fieldset).first().hide();
+ tabs.push(tab);
+ });
-function show_tab(id, index)
-{
- var form = $('#'+id), fs = form.children('fieldset');
+ // create the navigation bar
+ nav.append(tabs).insertBefore(item);
- fs.each(function(idx) {
- // Show/hide fieldset (tab content)
- $(this)[index == idx ? 'show' : 'hide']();
- // Select/unselect tab
- $('#tab'+idx, form).toggleClass('tablink-selected', idx == index);
+ // activate the first tab
+ $('a.nav-link', nav).first().click();
});
};
@@ -156,16 +126,6 @@ function form_load(id)
}
};
-// UI resize handler
-function ui_resize()
-{
- var h = $('#content').height();
- // resize UI elements
- if (h - 22 > 380) {
- $('#taskcontent:not(.signup)').css({'min-height': h - 22});
- }
-};
-
// UI loader
function ui_load()
{
@@ -180,8 +140,6 @@ function ui_load()
// API response handler
function http_response(response)
{
- ui_resize();
-
// update domain selector
if (response.action == 'domain.list')
domain_selector();
@@ -192,5 +150,4 @@ function http_response(response)
*/
kadm.add_event_listener('form-load', form_load);
kadm.add_event_listener('http-response', http_response);
-//$(window).resize(function() { ui_resize(); });
$(window).load(function() { ui_load(); });