From b941f0a3e439ffb5c0968cd729267e21a4f50cba Mon Sep 17 00:00:00 2001 From: Karson <karsonzhang@163.com> Date: Fri, 6 Apr 2018 21:39:12 +0800 Subject: [PATCH] 新增插件分类、免费插件搜索 新增全局的Template 新增自定义通用搜索表单内容 新增通用搜索按钮显示配置 新增单独清除模板、插件缓存 新增后台登录失败重试配置 优化通用搜索,搜索元素支持自动绑定元素事件 优化本地插件显示 优化前台首页和API文档字体显示 修复元素验证指定data-target不生效的BUG 修复插件命令行添加--force不生效的BUG 修复noNeedLogin和noNeedRight大小写的BUG 修复fieldlist无法挺拽的BUG 修复一键CRUD后指定字段显示后无法显示关联数据的BUG --- application/admin/command/Addon.php | 208 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------- application/admin/command/Api/template/index.html | 10 +++++++++- application/admin/command/Crud.php | 12 +++++++++--- application/admin/controller/Addon.php | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------- application/admin/controller/Ajax.php | 100 +++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------- application/admin/lang/zh-cn/addon.php | 2 ++ application/admin/lang/zh-cn/index.php | 4 ++++ application/admin/library/Auth.php | 7 ++++--- application/admin/view/addon/config.html | 13 +++---------- application/admin/view/addon/index.html | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- application/admin/view/common/header.html | 26 ++++++++++++++++++-------- application/admin/view/index/login.html | 4 ++-- application/common/controller/Backend.php | 3 ++- application/common/library/Auth.php | 2 ++ application/common/model/Category.php | 7 +++++++ application/config.php | 16 +++++++++------- public/api.html | 12 ++++++++++-- public/assets/css/backend.css | 4 +++- public/assets/css/backend.min.css | 2 +- public/assets/css/index.css | 5 ++++- public/assets/js/backend.js | 15 +++++++++------ public/assets/js/backend/addon.js | 52 ++++++++++++++++++++++++++++++++++++---------------- public/assets/js/backend/index.js | 3 ++- public/assets/js/bootstrap-table-commonsearch.js | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------- public/assets/js/frontend.js | 4 +++- public/assets/js/require-backend.min.js | 8989 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ public/assets/js/require-form.js | 19 ++++++++++++++----- public/assets/js/require-frontend.min.js | 6 +++++- public/assets/less/backend.less | 4 ++++ 29 files changed, 4150 insertions(+), 5849 deletions(-) diff --git a/application/admin/command/Addon.php b/application/admin/command/Addon.php index e2cde5f..302ced6 100644 --- a/application/admin/command/Addon.php +++ b/application/admin/command/Addon.php @@ -19,14 +19,14 @@ class Addon extends Command protected function configure() { $this - ->setName('addon') - ->addOption('name', 'a', Option::VALUE_REQUIRED, 'addon name', null) - ->addOption('action', 'c', Option::VALUE_REQUIRED, 'action(create/enable/disable/install/uninstall/refresh/upgrade/package)', 'create') - ->addOption('force', 'f', Option::VALUE_OPTIONAL, 'force override', null) - ->addOption('release', 'r', Option::VALUE_OPTIONAL, 'addon release version', null) - ->addOption('uid', 'u', Option::VALUE_OPTIONAL, 'fastadmin uid', null) - ->addOption('token', 't', Option::VALUE_OPTIONAL, 'fastadmin token', null) - ->setDescription('Addon manager'); + ->setName('addon') + ->addOption('name', 'a', Option::VALUE_REQUIRED, 'addon name', null) + ->addOption('action', 'c', Option::VALUE_REQUIRED, 'action(create/enable/disable/install/uninstall/refresh/upgrade/package)', 'create') + ->addOption('force', 'f', Option::VALUE_OPTIONAL, 'force override', null) + ->addOption('release', 'r', Option::VALUE_OPTIONAL, 'addon release version', null) + ->addOption('uid', 'u', Option::VALUE_OPTIONAL, 'fastadmin uid', null) + ->addOption('token', 't', Option::VALUE_OPTIONAL, 'fastadmin token', null) + ->setDescription('Addon manager'); } protected function execute(Input $input, Output $output) @@ -44,12 +44,10 @@ class Addon extends Command include dirname(__DIR__) . DS . 'common.php'; - if (!$name) - { + if (!$name) { throw new Exception('Addon name could not be empty'); } - if (!$action || !in_array($action, ['create', 'disable', 'enable', 'install', 'uninstall', 'refresh', 'upgrade', 'package'])) - { + if (!$action || !in_array($action, ['create', 'disable', 'enable', 'install', 'uninstall', 'refresh', 'upgrade', 'package'])) { throw new Exception('Please input correct action name'); } @@ -57,17 +55,14 @@ class Addon extends Command Db::execute("SELECT 1"); $addonDir = ADDON_PATH . $name . DS; - switch ($action) - { + switch ($action) { case 'create': //非覆盖模式时如果存在则报错 - if (is_dir($addonDir) && !$force) - { + if (is_dir($addonDir) && !$force) { throw new Exception("addon already exists!\nIf you need to create again, use the parameter --force=true "); } //如果存在先移除 - if (is_dir($addonDir)) - { + if (is_dir($addonDir)) { rmdirs($addonDir); } mkdir($addonDir); @@ -76,16 +71,12 @@ class Addon extends Command $createMenu = $this->getCreateMenu($menuList); $prefix = Config::get('database.prefix'); $createTableSql = ''; - try - { + try { $result = Db::query("SHOW CREATE TABLE `" . $prefix . $name . "`;"); - if (isset($result[0]) && isset($result[0]['Create Table'])) - { + if (isset($result[0]) && isset($result[0]['Create Table'])) { $createTableSql = $result[0]['Create Table']; } - } - catch (PDOException $e) - { + } catch (PDOException $e) { } @@ -102,8 +93,7 @@ class Addon extends Command $this->writeToFile("config", $data, $addonDir . 'config.php'); $this->writeToFile("info", $data, $addonDir . 'info.ini'); $this->writeToFile("controller", $data, $addonDir . 'controller' . DS . 'Index.php'); - if ($createTableSql) - { + if ($createTableSql) { $createTableSql = str_replace("`" . $prefix, '`__PREFIX__', $createTableSql); file_put_contents($addonDir . 'install.sql', $createTableSql); } @@ -112,75 +102,61 @@ class Addon extends Command break; case 'disable': case 'enable': - try - { + try { //调用启用、禁用的方法 Service::$action($name, 0); - } - catch (AddonException $e) - { - if ($e->getCode() != -3) - { + } catch (AddonException $e) { + if ($e->getCode() != -3) { throw new Exception($e->getMessage()); } - //如果有冲突文件则提醒 - $data = $e->getData(); - foreach ($data['conflictlist'] as $k => $v) - { - $output->warning($v); - } - $output->info("Are you sure you want to " . ($action == 'enable' ? 'override' : 'delete') . " all those files? Type 'yes' to continue: "); - $line = fgets(STDIN); - if (trim($line) != 'yes') - { - throw new Exception("Operation is aborted!"); + if (!$force) { + //如果有冲突文件则提醒 + $data = $e->getData(); + foreach ($data['conflictlist'] as $k => $v) { + $output->warning($v); + } + $output->info("Are you sure you want to " . ($action == 'enable' ? 'override' : 'delete') . " all those files? Type 'yes' to continue: "); + $line = fgets(STDIN); + if (trim($line) != 'yes') { + throw new Exception("Operation is aborted!"); + } } //调用启用、禁用的方法 Service::$action($name, 1); - } - catch (Exception $e) - { + } catch (Exception $e) { throw new Exception($e->getMessage()); } $output->info(ucfirst($action) . " Successed!"); break; case 'install': //非覆盖模式时如果存在则报错 - if (is_dir($addonDir) && !$force) - { + if (is_dir($addonDir) && !$force) { throw new Exception("addon already exists!\nIf you need to install again, use the parameter --force=true "); } //如果存在先移除 - if (is_dir($addonDir)) - { + if (is_dir($addonDir)) { rmdirs($addonDir); } - try - { + try { Service::install($name, 0, ['version' => $release]); - } - catch (AddonException $e) - { - if ($e->getCode() != -3) - { + } catch (AddonException $e) { + if ($e->getCode() != -3) { throw new Exception($e->getMessage()); } - //如果有冲突文件则提醒 - $data = $e->getData(); - foreach ($data['conflictlist'] as $k => $v) - { - $output->warning($v); - } - $output->info("Are you sure you want to override all those files? Type 'yes' to continue: "); - $line = fgets(STDIN); - if (trim($line) != 'yes') - { - throw new Exception("Operation is aborted!"); + if (!$force) { + //如果有冲突文件则提醒 + $data = $e->getData(); + foreach ($data['conflictlist'] as $k => $v) { + $output->warning($v); + } + $output->info("Are you sure you want to override all those files? Type 'yes' to continue: "); + $line = fgets(STDIN); + if (trim($line) != 'yes') { + throw new Exception("Operation is aborted!"); + } } Service::install($name, 1, ['version' => $release, 'uid' => $uid, 'token' => $token]); - } - catch (Exception $e) - { + } catch (Exception $e) { throw new Exception($e->getMessage()); } @@ -188,36 +164,29 @@ class Addon extends Command break; case 'uninstall': //非覆盖模式时如果存在则报错 - if (!$force) - { + if (!$force) { throw new Exception("If you need to uninstall addon, use the parameter --force=true "); } - try - { + try { Service::uninstall($name, 0); - } - catch (AddonException $e) - { - if ($e->getCode() != -3) - { + } catch (AddonException $e) { + if ($e->getCode() != -3) { throw new Exception($e->getMessage()); } - //如果有冲突文件则提醒 - $data = $e->getData(); - foreach ($data['conflictlist'] as $k => $v) - { - $output->warning($v); - } - $output->info("Are you sure you want to delete all those files? Type 'yes' to continue: "); - $line = fgets(STDIN); - if (trim($line) != 'yes') - { - throw new Exception("Operation is aborted!"); + if (!$force) { + //如果有冲突文件则提醒 + $data = $e->getData(); + foreach ($data['conflictlist'] as $k => $v) { + $output->warning($v); + } + $output->info("Are you sure you want to delete all those files? Type 'yes' to continue: "); + $line = fgets(STDIN); + if (trim($line) != 'yes') { + throw new Exception("Operation is aborted!"); + } } Service::uninstall($name, 1); - } - catch (Exception $e) - { + } catch (Exception $e) { throw new Exception($e->getMessage()); } @@ -233,53 +202,44 @@ class Addon extends Command break; case 'package': $infoFile = $addonDir . 'info.ini'; - if (!is_file($infoFile)) - { + if (!is_file($infoFile)) { throw new Exception(__('Addon info file was not found')); } $info = get_addon_info($name); - if (!$info) - { + if (!$info) { throw new Exception(__('Addon info file data incorrect')); } $infoname = isset($info['name']) ? $info['name'] : ''; - if (!$infoname || !preg_match("/^[a-z]+$/i", $infoname) || $infoname != $name) - { + if (!$infoname || !preg_match("/^[a-z]+$/i", $infoname) || $infoname != $name) { throw new Exception(__('Addon info name incorrect')); } $infoversion = isset($info['version']) ? $info['version'] : ''; - if (!$infoversion || !preg_match("/^\d+\.\d+\.\d+$/i", $infoversion)) - { + if (!$infoversion || !preg_match("/^\d+\.\d+\.\d+$/i", $infoversion)) { throw new Exception(__('Addon info version incorrect')); } $addonTmpDir = RUNTIME_PATH . 'addons' . DS; - if (!is_dir($addonTmpDir)) - { + if (!is_dir($addonTmpDir)) { @mkdir($addonTmpDir, 0755, true); } $addonFile = $addonTmpDir . $infoname . '-' . $infoversion . '.zip'; - if (!class_exists('ZipArchive')) - { + if (!class_exists('ZipArchive')) { throw new Exception(__('ZinArchive not install')); } $zip = new \ZipArchive; $zip->open($addonFile, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); $files = new \RecursiveIteratorIterator( - new \RecursiveDirectoryIterator($addonDir), \RecursiveIteratorIterator::LEAVES_ONLY + new \RecursiveDirectoryIterator($addonDir), \RecursiveIteratorIterator::LEAVES_ONLY ); - foreach ($files as $name => $file) - { - if (!$file->isDir()) - { + foreach ($files as $name => $file) { + if (!$file->isDir()) { $filePath = $file->getRealPath(); $relativePath = substr($filePath, strlen($addonDir)); - if (!in_array($file->getFilename(), ['.git', '.DS_Store', 'Thumbs.db'])) - { + if (!in_array($file->getFilename(), ['.git', '.DS_Store', 'Thumbs.db'])) { $zip->addFile($filePath, $relativePath); } } @@ -301,22 +261,18 @@ class Addon extends Command protected function getCreateMenu($menu) { $result = []; - foreach ($menu as $k => & $v) - { + foreach ($menu as $k => & $v) { $arr = [ 'name' => $v['name'], 'title' => $v['title'], ]; - if ($v['icon'] != 'fa fa-circle-o') - { + if ($v['icon'] != 'fa fa-circle-o') { $arr['icon'] = $v['icon']; } - if ($v['ismenu']) - { + if ($v['ismenu']) { $arr['ismenu'] = $v['ismenu']; } - if (isset($v['childlist']) && $v['childlist']) - { + if (isset($v['childlist']) && $v['childlist']) { $arr['sublist'] = $this->getCreateMenu($v['childlist']); } $result[] = $arr; @@ -334,16 +290,14 @@ class Addon extends Command protected function writeToFile($name, $data, $pathname) { $search = $replace = []; - foreach ($data as $k => $v) - { + foreach ($data as $k => $v) { $search[] = "{%{$k}%}"; $replace[] = $v; } $stub = file_get_contents($this->getStub($name)); $content = str_replace($search, $replace, $stub); - if (!is_dir(dirname($pathname))) - { + if (!is_dir(dirname($pathname))) { mkdir(strtolower(dirname($pathname)), 0755, true); } return file_put_contents($pathname, $content); diff --git a/application/admin/command/Api/template/index.html b/application/admin/command/Api/template/index.html index aaa73b3..1fc0b18 100755 --- a/application/admin/command/Api/template/index.html +++ b/application/admin/command/Api/template/index.html @@ -9,7 +9,15 @@ <title>{$config.title}</title> <link href="https://cdn.bootcss.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> <style type="text/css"> - body { padding-top: 70px; margin-bottom: 15px; } + body { + padding-top: 70px; margin-bottom: 15px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: "Roboto", "SF Pro SC", "SF Pro Display", "SF Pro Icons", "PingFang SC", BlinkMacSystemFont, -apple-system, "Segoe UI", "Microsoft Yahei", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif; + font-weight: 400; + } + h2 { font-size: 1.6em; } + hr { margin-top: 10px; } .tab-pane { padding-top: 10px; } .mt0 { margin-top: 0px; } .footer { font-size: 12px; color: #666; } diff --git a/application/admin/command/Crud.php b/application/admin/command/Crud.php index fef1e16..98b7292 100755 --- a/application/admin/command/Crud.php +++ b/application/admin/command/Crud.php @@ -654,9 +654,10 @@ class Crud extends Command $priDefined = TRUE; $javascriptList[] = "{checkbox: true}"; } - //构造JS列信息 - $javascriptList[] = $this->getJsColumn($field, $v['DATA_TYPE'], $inputType && in_array($inputType, ['select', 'checkbox', 'radio']) ? '_text' : '', $itemArr); - + if (!$fields || in_array($field, explode(',', $fields))) { + //构造JS列信息 + $javascriptList[] = $this->getJsColumn($field, $v['DATA_TYPE'], $inputType && in_array($inputType, ['select', 'checkbox', 'radio']) ? '_text' : '', $itemArr); + } //排序方式,如果有指定排序字段,否则按主键排序 $order = $field == $this->sortField ? $this->sortField : $order; } @@ -767,6 +768,11 @@ class Crud extends Command //构造关联模型的方法 $relationMethodList[] = $this->getReplacedStub('mixins' . DS . 'modelrelationmethod', $relation); + //如果设置了显示主表字段,则必须显式将关联表字段显示 + if ($fields) { + $relationVisibleFieldList[] = "\$row->visible(['{$relation['relationMethod']}']);"; + } + //显示的字段 if ($relation['relationFields']) { $relationVisibleFieldList[] = "\$row->getRelation('" . $relation['relationMethod'] . "')->visible(['" . implode("','", $relation['relationFields']) . "']);"; diff --git a/application/admin/controller/Addon.php b/application/admin/controller/Addon.php index 89b8183..959d585 100644 --- a/application/admin/controller/Addon.php +++ b/application/admin/controller/Addon.php @@ -3,6 +3,7 @@ namespace app\admin\controller; use app\common\controller\Backend; +use fast\Http; use think\addons\AddonException; use think\addons\Service; use think\Cache; @@ -31,8 +32,7 @@ class Addon extends Backend public function index() { $addons = get_addon_list(); - foreach ($addons as $k => &$v) - { + foreach ($addons as $k => &$v) { $config = get_addon_config($v['name']); $v['config'] = $config ? 1 : 0; } @@ -46,60 +46,31 @@ class Addon extends Backend public function config($ids = NULL) { $name = $this->request->get("name"); - if (!$name) - { + if (!$name) { $this->error(__('Parameter %s can not be empty', $ids ? 'id' : 'name')); } - if (!is_dir(ADDON_PATH . $name)) - { + if (!is_dir(ADDON_PATH . $name)) { $this->error(__('Directory not found')); } $info = get_addon_info($name); $config = get_addon_fullconfig($name); if (!$info) $this->error(__('No Results were found')); - if ($this->request->isPost()) - { + if ($this->request->isPost()) { $params = $this->request->post("row/a"); - if ($params) - { - foreach ($config as $k => &$v) - { - if (isset($params[$v['name']])) - { - if ($v['type'] == 'array') - { - $fieldarr = $valuearr = []; - $field = $params[$v['name']]['field']; - $value = $params[$v['name']]['value']; - - foreach ($field as $m => $n) - { - if ($n != '') - { - $fieldarr[] = $field[$m]; - $valuearr[] = $value[$m]; - } - } - $params[$v['name']] = array_combine($fieldarr, $valuearr); - $value = $params[$v['name']]; - } - else - { - $value = is_array($params[$v['name']]) ? implode(',', $params[$v['name']]) : $params[$v['name']]; - } - + if ($params) { + foreach ($config as $k => &$v) { + if (isset($params[$v['name']])) { + $value = is_array($params[$v['name']]) ? implode(',', $params[$v['name']]) : $params[$v['name']]; $v['value'] = $value; } } - try - { + try { //更新配置文件 set_addon_fullconfig($name, $config); + Service::refresh(); $this->success(); - } - catch (Exception $e) - { + } catch (Exception $e) { $this->error($e->getMessage()); } } @@ -115,13 +86,11 @@ class Addon extends Backend public function install() { $name = $this->request->post("name"); - $force = (int) $this->request->post("force"); - if (!$name) - { + $force = (int)$this->request->post("force"); + if (!$name) { $this->error(__('Parameter %s can not be empty', 'name')); } - try - { + try { $uid = $this->request->post("uid"); $token = $this->request->post("token"); $version = $this->request->post("version"); @@ -137,13 +106,9 @@ class Addon extends Backend $info['config'] = get_addon_config($name) ? 1 : 0; $info['state'] = 1; $this->success(__('Install successful'), null, ['addon' => $info]); - } - catch (AddonException $e) - { + } catch (AddonException $e) { $this->result($e->getData(), $e->getCode(), $e->getMessage()); - } - catch (Exception $e) - { + } catch (Exception $e) { $this->error($e->getMessage(), $e->getCode()); } } @@ -154,22 +119,16 @@ class Addon extends Backend public function uninstall() { $name = $this->request->post("name"); - $force = (int) $this->request->post("force"); - if (!$name) - { + $force = (int)$this->request->post("force"); + if (!$name) { $this->error(__('Parameter %s can not be empty', 'name')); } - try - { + try { Service::uninstall($name, $force); $this->success(__('Uninstall successful')); - } - catch (AddonException $e) - { + } catch (AddonException $e) { $this->result($e->getData(), $e->getCode(), $e->getMessage()); - } - catch (Exception $e) - { + } catch (Exception $e) { $this->error($e->getMessage()); } } @@ -181,25 +140,19 @@ class Addon extends Backend { $name = $this->request->post("name"); $action = $this->request->post("action"); - $force = (int) $this->request->post("force"); - if (!$name) - { + $force = (int)$this->request->post("force"); + if (!$name) { $this->error(__('Parameter %s can not be empty', 'name')); } - try - { + try { $action = $action == 'enable' ? $action : 'disable'; //调用启用、禁用的方法 Service::$action($name, $force); Cache::rm('__menu__'); $this->success(__('Operate successful')); - } - catch (AddonException $e) - { + } catch (AddonException $e) { $this->result($e->getData(), $e->getCode(), $e->getMessage()); - } - catch (Exception $e) - { + } catch (Exception $e) { $this->error($e->getMessage()); } } @@ -213,55 +166,46 @@ class Addon extends Backend $file = $this->request->file('file'); $addonTmpDir = RUNTIME_PATH . 'addons' . DS; - if (!is_dir($addonTmpDir)) - { + if (!is_dir($addonTmpDir)) { @mkdir($addonTmpDir, 0755, true); } $info = $file->rule('uniqid')->validate(['size' => 10240000, 'ext' => 'zip'])->move($addonTmpDir); - if ($info) - { + if ($info) { $tmpName = substr($info->getFilename(), 0, stripos($info->getFilename(), '.')); $tmpAddonDir = ADDON_PATH . $tmpName . DS; $tmpFile = $addonTmpDir . $info->getSaveName(); - try - { + try { Service::unzip($tmpName); @unlink($tmpFile); $infoFile = $tmpAddonDir . 'info.ini'; - if (!is_file($infoFile)) - { + if (!is_file($infoFile)) { throw new Exception(__('Addon info file was not found')); } $config = Config::parse($infoFile, '', $tmpName); $name = isset($config['name']) ? $config['name'] : ''; - if (!$name) - { + if (!$name) { throw new Exception(__('Addon info file data incorrect')); } $newAddonDir = ADDON_PATH . $name . DS; - if (is_dir($newAddonDir)) - { + if (is_dir($newAddonDir)) { throw new Exception(__('Addon already exists')); } //重命名插件文件夹 rename($tmpAddonDir, $newAddonDir); - try - { + try { //默认禁用该插件 $info = get_addon_info($name); - if ($info['state']) - { + if ($info['state']) { $info['state'] = 0; set_addon_info($name, $info); } //执行插件的安装方法 $class = get_addon_class($name); - if (class_exists($class)) - { + if (class_exists($class)) { $addon = new $class(); $addon->install(); } @@ -271,22 +215,16 @@ class Addon extends Backend $info['config'] = get_addon_config($name) ? 1 : 0; $this->success(__('Offline installed tips'), null, ['addon' => $info]); - } - catch (Exception $e) - { + } catch (Exception $e) { @rmdirs($newAddonDir); throw new Exception($e->getMessage()); } - } - catch (Exception $e) - { + } catch (Exception $e) { @unlink($tmpFile); @rmdirs($tmpAddonDir); $this->error($e->getMessage()); } - } - else - { + } else { // 上传失败获取错误信息 $this->error($file->getError()); } @@ -298,12 +236,10 @@ class Addon extends Backend public function upgrade() { $name = $this->request->post("name"); - if (!$name) - { + if (!$name) { $this->error(__('Parameter %s can not be empty', 'name')); } - try - { + try { $uid = $this->request->post("uid"); $token = $this->request->post("token"); $version = $this->request->post("version"); @@ -318,29 +254,9 @@ class Addon extends Backend Service::upgrade($name, $extend); Cache::rm('__menu__'); $this->success(__('Operate successful')); - } - catch (AddonException $e) - { + } catch (AddonException $e) { $this->result($e->getData(), $e->getCode(), $e->getMessage()); - } - catch (Exception $e) - { - $this->error($e->getMessage()); - } - } - - /** - * 刷新缓存 - */ - public function refresh() - { - try - { - Service::refresh(); - $this->success(__('Operate successful')); - } - catch (Exception $e) - { + } catch (Exception $e) { $this->error($e->getMessage()); } } @@ -350,31 +266,51 @@ class Addon extends Backend */ public function downloaded() { - $offset = (int) $this->request->get("offset"); - $limit = (int) $this->request->get("limit"); + $offset = (int)$this->request->get("offset"); + $limit = (int)$this->request->get("limit"); + $filter = $this->request->get("filter"); $search = $this->request->get("search"); $search = htmlspecialchars(strip_tags($search)); - + $onlineaddons = Cache::get("onlineaddons"); + if (!is_array($onlineaddons)) { + $onlineaddons = []; + $result = Http::sendRequest(config('fastadmin.api_url') . '/addon/index'); + if ($result['ret']) { + $json = json_decode($result['msg'], TRUE); + $rows = isset($json['rows']) ? $json['rows'] : []; + foreach ($rows as $index => $row) { + $onlineaddons[$row['name']] = $row; + } + } + Cache::set("onlineaddons", $onlineaddons, 600); + } + $filter = (array)json_decode($filter, true); $addons = get_addon_list(); $list = []; - foreach ($addons as $k => $v) - { + foreach ($addons as $k => $v) { if ($search && stripos($v['name'], $search) === FALSE && stripos($v['intro'], $search) === FALSE) continue; - $v['flag'] = ''; - $v['banner'] = ''; - $v['image'] = ''; - $v['donateimage'] = ''; - $v['demourl'] = ''; - $v['price'] = '0.00'; + if (isset($onlineaddons[$v['name']])) { + $v = array_merge($onlineaddons[$v['name']], $v); + } else { + $v['category_id'] = 0; + $v['flag'] = ''; + $v['banner'] = ''; + $v['image'] = ''; + $v['donateimage'] = ''; + $v['demourl'] = ''; + $v['price'] = '0.00'; + } $v['url'] = addon_url($v['name']); $v['createtime'] = filemtime(ADDON_PATH . $v['name']); + if ($filter && isset($filter['category_id']) && is_numeric($filter['category_id']) && $filter['category_id'] != $v['category_id']) { + continue; + } $list[] = $v; } $total = count($list); - if ($limit) - { + if ($limit) { $list = array_slice($list, $offset, $limit); } $result = array("total" => $total, "rows" => $list); diff --git a/application/admin/controller/Ajax.php b/application/admin/controller/Ajax.php index 5c40c06..ed8d80e 100644 --- a/application/admin/controller/Ajax.php +++ b/application/admin/controller/Ajax.php @@ -4,6 +4,7 @@ namespace app\admin\controller; use app\common\controller\Backend; use fast\Random; +use think\addons\Service; use think\Cache; use think\Config; use think\Db; @@ -47,8 +48,7 @@ class Ajax extends Backend { Config::set('default_return_type', 'json'); $file = $this->request->file('file'); - if (empty($file)) - { + if (empty($file)) { $this->error(__('No file upload or server upload limit exceeded')); } @@ -60,7 +60,7 @@ class Ajax extends Backend preg_match('/(\d+)(\w+)/', $upload['maxsize'], $matches); $type = strtolower($matches[2]); $typeDict = ['b' => 0, 'k' => 1, 'kb' => 1, 'm' => 2, 'mb' => 2, 'gb' => 3, 'g' => 3]; - $size = (int) $upload['maxsize'] * pow(1024, isset($typeDict[$type]) ? $typeDict[$type] : 0); + $size = (int)$upload['maxsize'] * pow(1024, isset($typeDict[$type]) ? $typeDict[$type] : 0); $fileInfo = $file->getInfo(); $suffix = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION)); $suffix = $suffix ? $suffix : 'file'; @@ -68,8 +68,7 @@ class Ajax extends Backend $mimetypeArr = explode(',', $upload['mimetype']); $typeArr = explode('/', $fileInfo['type']); //验证文件后缀 - if ($upload['mimetype'] !== '*' && !in_array($suffix, $mimetypeArr) && !in_array($fileInfo['type'], $mimetypeArr) && !in_array($typeArr[0] . '/*', $mimetypeArr)) - { + if ($upload['mimetype'] !== '*' && !in_array($suffix, $mimetypeArr) && !in_array($fileInfo['type'], $mimetypeArr) && !in_array($typeArr[0] . '/*', $mimetypeArr)) { $this->error(__('Uploaded file format is limited')); } $replaceArr = [ @@ -93,11 +92,9 @@ class Ajax extends Backend $fileName = substr($savekey, strripos($savekey, '/') + 1); // $splInfo = $file->validate(['size' => $size])->move(ROOT_PATH . '/public' . $uploadDir, $fileName); - if ($splInfo) - { + if ($splInfo) { $imagewidth = $imageheight = 0; - if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf'])) - { + if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf'])) { $imgInfo = getimagesize($splInfo->getPathname()); $imagewidth = isset($imgInfo[0]) ? $imgInfo[0] : $imagewidth; $imageheight = isset($imgInfo[1]) ? $imgInfo[1] : $imageheight; @@ -121,9 +118,7 @@ class Ajax extends Backend $this->success(__('Upload successful'), null, [ 'url' => $uploadDir . $splInfo->getSaveName() ]); - } - else - { + } else { // 上传失败获取错误信息 $this->error($file->getError()); } @@ -153,12 +148,10 @@ class Ajax extends Backend $field = in_array($field, ['weigh']) ? $field : 'weigh'; // 如果设定了pid的值,此时只匹配满足条件的ID,其它忽略 - if ($pid !== '') - { + if ($pid !== '') { $hasids = []; $list = Db::name($table)->where($prikey, 'in', $ids)->where('pid', 'in', $pid)->field('id,pid')->select(); - foreach ($list as $k => $v) - { + foreach ($list as $k => $v) { $hasids[] = $v['id']; } $ids = array_values(array_intersect($ids, $hasids)); @@ -166,20 +159,15 @@ class Ajax extends Backend //直接修复排序 $one = Db::name($table)->field("{$field},COUNT(*) AS nums")->group($field)->having('nums > 1')->find(); - if ($one) - { + if ($one) { $list = Db::name($table)->field("$prikey,$field")->order($field, $orderway)->select(); - foreach ($list as $k => $v) - { + foreach ($list as $k => $v) { Db::name($table)->where($prikey, $v[$prikey])->update([$field => $k + 1]); } $this->success(); - } - else - { + } else { $list = Db::name($table)->field("$prikey,$field")->where($prikey, 'in', $ids)->order($field, $orderway)->select(); - foreach ($list as $k => $v) - { + foreach ($list as $k => $v) { $sour[] = $v[$prikey]; $weighdata[$v[$prikey]] = $v[$field]; } @@ -192,20 +180,13 @@ class Ajax extends Backend //echo "替换的ID:{$desc_id}\n"; $weighids = array(); $temp = array_values(array_diff_assoc($ids, $sour)); - foreach ($temp as $m => $n) - { - if ($n == $sour_id) - { + foreach ($temp as $m => $n) { + if ($n == $sour_id) { $offset = $desc_id; - } - else - { - if ($sour_id == $temp[0]) - { + } else { + if ($sour_id == $temp[0]) { $offset = isset($temp[$m + 1]) ? $temp[$m + 1] : $sour_id; - } - else - { + } else { $offset = isset($temp[$m - 1]) ? $temp[$m - 1] : $sour_id; } } @@ -221,15 +202,23 @@ class Ajax extends Backend */ public function wipecache() { - $wipe_cache_type = ['TEMP_PATH', 'LOG_PATH', 'CACHE_PATH']; - foreach ($wipe_cache_type as $item) - { - $dir = constant($item); - if (!is_dir($dir)) - continue; - rmdirs($dir); + $type = $this->request->request("type"); + switch ($type) { + case 'content' || 'all': + rmdirs(CACHE_PATH, false); + Cache::clear(); + if ($type == 'content') + break; + case 'template' || 'all': + rmdirs(TEMP_PATH, false); + if ($type == 'template') + break; + case 'addons' || 'all': + Service::refresh(); + if ($type == 'addons') + break; } - Cache::clear(); + \think\Hook::listen("wipecache_after"); $this->success(); } @@ -243,14 +232,11 @@ class Ajax extends Backend $pid = $this->request->get('pid'); $where = ['status' => 'normal']; $categorylist = null; - if ($pid !== '') - { - if ($type) - { + if ($pid !== '') { + if ($type) { $where['type'] = $type; } - if ($pid) - { + if ($pid) { $where['pid'] = $pid; } @@ -268,17 +254,13 @@ class Ajax extends Backend $city = $this->request->get('city'); $where = ['pid' => 0, 'level' => 1]; $provincelist = null; - if ($province !== '') - { - if ($province) - { + if ($province !== '') { + if ($province) { $where['pid'] = $province; $where['level'] = 2; } - if ($city !== '') - { - if ($city) - { + if ($city !== '') { + if ($city) { $where['pid'] = $city; $where['level'] = 3; } diff --git a/application/admin/lang/zh-cn/addon.php b/application/admin/lang/zh-cn/addon.php index 9a8da32..d3bce24 100755 --- a/application/admin/lang/zh-cn/addon.php +++ b/application/admin/lang/zh-cn/addon.php @@ -30,6 +30,8 @@ return [ 'Please disable addon first' => '请先禁用插件再进行升级', 'Login now' => '立即登录', 'Continue install' => '不登录,继续安装', + 'All' => '全部', + 'Uncategoried' => '未归类', 'Recommend' => '推荐', 'Hot' => '热门', 'New' => '新', diff --git a/application/admin/lang/zh-cn/index.php b/application/admin/lang/zh-cn/index.php index d5e4eeb..d96e47a 100644 --- a/application/admin/lang/zh-cn/index.php +++ b/application/admin/lang/zh-cn/index.php @@ -33,6 +33,10 @@ return [ 'Wipe cache completed' => '清除缓存成功', 'Wipe cache failed' => '清除缓存失败', 'Wipe cache' => '清空缓存', + 'Wipe all cache' => '一键清除缓存', + 'Wipe content cache' => '清空内容缓存', + 'Wipe template cache' => '清除模板缓存', + 'Wipe addons cache' => '清除插件缓存', 'Check for updates' => '检测更新', 'Latest news' => '最新消息', 'View more' => '查看更多', diff --git a/application/admin/library/Auth.php b/application/admin/library/Auth.php index 1f59057..c0836ad 100644 --- a/application/admin/library/Auth.php +++ b/application/admin/library/Auth.php @@ -30,7 +30,7 @@ class Auth extends \fast\Auth /** * 管理员登录 - * + * * @param string $username 用户名 * @param string $password 密码 * @param int $keeptime 有效时长 @@ -44,7 +44,7 @@ class Auth extends \fast\Auth $this->setError('Username is incorrect'); return false; } - if ($admin->loginfailure >= 3 && time() - $admin->updatetime < 86400) + if (Config::get('fastadmin.login_failure_retry') && $admin->loginfailure >= 10 && time() - $admin->updatetime < 86400) { $this->setError('Please try again after 1 day'); return false; @@ -119,7 +119,7 @@ class Auth extends \fast\Auth /** * 刷新保持登录的Cookie - * + * * @param int $keeptime * @return boolean */ @@ -155,6 +155,7 @@ class Auth extends \fast\Auth return FALSE; } + $arr = array_map('strtolower', $arr); // 是否存在 if (in_array(strtolower($request->action()), $arr) || in_array('*', $arr)) { diff --git a/application/admin/view/addon/config.html b/application/admin/view/addon/config.html index e780dc8..ef050c1 100644 --- a/application/admin/view/addon/config.html +++ b/application/admin/view/addon/config.html @@ -21,20 +21,13 @@ <textarea name="row[{$item.name}]" class="form-control" data-rule="{$item.rule}" rows="5" data-tip="{$item.tip}" {$item.extend}>{$item.value}</textarea> {/case} {case array} - <dl class="fieldlist" rel="{$item.value|count}" data-name="row[{$item.name}]"> + <dl class="fieldlist" data-name="row[{$item.name}]"> <dd> <ins>{:__('Array key')}</ins> <ins>{:__('Array value')}</ins> </dd> - {foreach $item.value as $key => $vo} - <dd class="form-inline"> - <input type="text" name="row[{$item.name}][field][{$key}]" class="form-control" value="{$key}" size="10" /> - <input type="text" name="row[{$item.name}][value][{$key}]" class="form-control" value="{$vo}" size="30" /> - <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> - <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span> - </dd> - {/foreach} - <dd><a href="javascript:;" class="append btn btn-sm btn-success"><i class="fa fa-plus"></i> {:__('Append')}</a></dd> + <dd><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></dd> + <textarea name="row[{$item.name}]" cols="30" rows="5" class="hide">{$item.value|json_encode}</textarea> </dl> {/case} {case datetime} diff --git a/application/admin/view/addon/index.html b/application/admin/view/addon/index.html index c7e6db5..639481b 100644 --- a/application/admin/view/addon/index.html +++ b/application/admin/view/addon/index.html @@ -1,7 +1,7 @@ <style type="text/css"> .noimage {width:100%;text-align: center;background:#18bc9c;color:#fff;padding-bottom:66.66%;position:relative;} .noimage > div {position: absolute;top:48%;width:100%;text-align:center;} - .addon {position: relative;} + .addon {position: relative;border-color:#e4e4e4;} .addon > span {position:absolute;left:15px;top:15px;z-index:9;} .addon > span a{opacity: 0.5;border:none;color:#fff;} .layui-layer-pay .layui-layer-content {padding:0;height:600px!important;} @@ -16,9 +16,34 @@ .status-disabled .noimage { background:#d2d6de; } + @media (min-width: 992px) { + .addon { + -webkit-transition:all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; + } + .addon:hover { + border-color: #dddddd; + -webkit-box-shadow: 0 26px 40px -24px rgba(0,36,100,0.3); + -moz-box-shadow: 0 26px 40px -24px rgba(0,36,100,0.3); + box-shadow: 0 26px 40px -24px rgba(0,36,100,0.3); + -webkit-transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + transition: all 0.3s ease; + } + } </style> <div class="panel panel-default panel-intro"> - {:build_heading()} + <div class="panel-heading"> + {:build_heading(null,FALSE)} + <ul class="nav nav-tabs nav-category"> + <li class="active"><a href="javascript:;" data-id="">{:__('All')}</a></li> + <li><a href="javascript:;" data-id="0">{:__('Uncategoried')}</a></li> + </ul> + + </div> <div class="panel-body"> <div id="myTabContent" class="tab-content"> @@ -27,10 +52,11 @@ <div id="toolbar" class="toolbar"> {:build_toolbar('refresh')} <button type="button" id="plupload-addon" class="btn btn-danger plupload" data-url="addon/local" data-mimetype="application/zip" data-multiple="false"><i class="fa fa-upload"></i> {:__('Offline install')}</button> - <a class="btn btn-success btn-ajax" href="addon/refresh"><i class="fa fa-refresh"></i> {:__('Refresh addon cache')}</a> <div class="btn-group"> - <a href="#" class="btn btn-info btn-switch active" data-url="{$config.fastadmin.api_url}/addon/index"><i class="fa fa-cloud"></i> {:__('Online store')}</a> - <a href="#" class="btn btn-info btn-switch" data-url="addon/downloaded"><i class="fa fa-laptop"></i> {:__('Local addon')}</a> + <a href="#" class="btn btn-info btn-switch active" data-type="all" data-url="{$config.fastadmin.api_url}/addon/index"><i class="fa fa-list"></i> {:__('全部')}</a> + <a href="#" class="btn btn-info btn-switch" data-type="free" data-url="{$config.fastadmin.api_url}/addon/index"><i class="fa fa-gift"></i> {:__('免费')}</a> + <a href="#" class="btn btn-info btn-switch" data-type="price" data-url="{$config.fastadmin.api_url}/addon/index"><i class="fa fa-rmb"></i> {:__('付费')}</a> + <a href="#" class="btn btn-info btn-switch" data-type="local" data-url="addon/downloaded"><i class="fa fa-laptop"></i> {:__('Local addon')}</a> </div> <a class="btn btn-primary btn-userinfo" href="javascript:;"><i class="fa fa-user"></i> {:__('Userinfo')}</a> </div> @@ -44,6 +70,55 @@ </div> </div> </div> +<script id="searchformtpl" type="text/html"> + <form action="" class="form-commonsearch hide"> + <div class="well" style="box-shadow:none;border-radius:2px;margin-bottom:10px;"> + <div class="row"> + <div class="col-xs-12 col-sm-6 col-md-3"> + <div class="form-group"> + <label class="control-label">标题</label> + <input class="operate" type="hidden" data-name="title" value="like"/> + <input class="form-control" type="text" name="title" placeholder="请输入查找的标题" value=""/> + </div> + </div> + <div class="col-xs-12 col-sm-6 col-md-3"> + <div class="form-group"> + <label class="control-label">类型</label> + <input class="operate" type="hidden" data-name="type" value="="/> + <input class="form-control" type="text" name="type" placeholder="all" value=""/> + </div> + </div> + <div class="col-xs-12 col-sm-6 col-md-3"> + <div class="form-group"> + <label class="control-label">分类</label> + <input type="hidden" class="operate" data-name="category_id" value="="/> + <input class="form-control" name="category_id" type="text" value=""> + </div> + </div> + <div class="col-xs-12 col-sm-6 col-md-3"> + <div class="form-group"> + <label class="control-label">版本号</label> + <input type="hidden" class="operate" data-name="faversion" value="="/> + <input class="form-control" name="faversion" type="text" value="{$config.fastadmin.version}"> + </div> + </div> + <div class="col-xs-12 col-sm-6 col-md-3"> + <div class="form-group"> + <label class="control-label"></label> + <div class="row"> + <div class="col-xs-6"> + <input type="submit" class="btn btn-success btn-block" value="提交"/> + </div> + <div class="col-xs-6"> + <input type="reset" class="btn btn-primary btn-block" value="重置"/> + </div> + </div> + </div> + </div> + </div> + </div> + </form> +</script> <script id="logintpl" type="text/html"> <div> <form class="form-horizontal"> @@ -180,7 +255,7 @@ <%}%> </a> <div class="caption"> - <h4><%=item.title?item.title:'{:__('None')}'%> + <h4><%=item.title?item.title:'{:__('None')}'%> <% if(item.flag.indexOf("recommend")>-1){%> <span class="label label-success">{:__('Recommend')}</span> <% } %> @@ -203,7 +278,7 @@ <% if(!addon){ %> <% if(typeof item.releaselist !="undefined" && item.releaselist.length>1){%> <span class="btn-group"> - <a href="javascript:;" class="btn btn-primary btn-success btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a> + <a href="javascript:;" class="btn btn-primary btn-success btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a> <a class="btn btn-success dropdown-toggle" data-toggle="dropdown" href="javascript:;"> <span class="fa fa-caret-down"></span> </a> @@ -214,10 +289,10 @@ </ul> </span> <% }else{%> - <a href="javascript:;" class="btn btn-primary btn-success btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a> + <a href="javascript:;" class="btn btn-primary btn-success btn-install" data-type="<%=item.price<=0?'free':'price';%>" data-donateimage="<%=item.donateimage%>" data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a> <% } %> <% if(item.demourl){ %> - <a href="<%=item.demourl%>" class="btn btn-primary btn-info btn-demo" target="_blank"><i class="fa fa-flash"></i> {:__('Demo')}</a> + <a href="<%=item.demourl%>" class="btn btn-primary btn-info btn-demo" target="_blank"><i class="fa fa-flash"></i> {:__('Demo')}</a> <% } %> <% } %> @@ -235,7 +310,7 @@ <% if(addon && item && addon.version!=item.version){%> <% if(typeof item.releaselist !="undefined" && item.releaselist.length>1){%> <span class="btn-group"> - <a href="javascript:;" class="btn btn-info btn-success btn-upgrade" data-version="<%=item.version%>"><i class="fa fa-cloud"></i> {:__('Upgrade')}</a> + <a href="javascript:;" class="btn btn-info btn-success btn-upgrade" data-version="<%=item.version%>"><i class="fa fa-cloud"></i> {:__('Upgrade')}</a> <a class="btn btn-info dropdown-toggle" data-toggle="dropdown" href="javascript:;"> <span class="fa fa-caret-down"></span> </a> diff --git a/application/admin/view/common/header.html b/application/admin/view/common/header.html index 29ffba2..406bee7 100755 --- a/application/admin/view/common/header.html +++ b/application/admin/view/common/header.html @@ -25,7 +25,7 @@ <a href="__PUBLIC__" target="_blank"><i class="fa fa-home" style="font-size:14px;"></i></a> </li> - <li class="dropdown notifications-menu"> + <li class="dropdown notifications-menu hidden-xs"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <i class="fa fa-bell-o"></i> <span class="label label-warning"></span> @@ -41,19 +41,26 @@ <li class="footer"><a href="#" target="_blank">{:__('View more')}</a></li> </ul> </li> - - <li> + + <li class="hidden-xs"> <a href="javascript:;" data-toggle="checkupdate" title="{:__('Check for updates')}"> <i class="fa fa-refresh"></i> </a> </li> - + <li> - <a href="javascript:;" data-toggle="wipecache" title="{:__('Wipe cache')}"> + <a href="javascript:;" data-toggle="dropdown" title="{:__('Wipe cache')}"> <i class="fa fa-trash"></i> </a> + <ul class="dropdown-menu wipecache"> + <li><a href="javascript:;" data-type="all"><i class="fa fa-trash"></i> {:__('Wipe all cache')}</a></li> + <li><a href="javascript:;" data-type="content"><i class="fa fa-file-text"></i> {:__('Wipe content cache')}</a></li> + <li><a href="javascript:;" data-type="template"><i class="fa fa-file-image-o"></i> {:__('Wipe template cache')}</a></li> + <li><a href="javascript:;" data-type="addons"><i class="fa fa-rocket"></i> {:__('Wipe addons cache')}</a></li> + </ul> </li> + {if $Think.config.lang_switch_on} <li class="hidden-xs"> <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-language"></i></a> <ul class="dropdown-menu"> @@ -65,6 +72,7 @@ </li> </ul> </li> + {/if} <li class="hidden-xs"> <a href="#" data-toggle="fullscreen"><i class="fa fa-arrows-alt"></i></a> @@ -103,16 +111,18 @@ <!-- Menu Footer--> <li class="user-footer"> <div class="pull-left"> - <a href="general/profile" class="btn btn-primary addtabsit"><i class="fa fa-user"></i> {:__('Profile')}</a> + <a href="general/profile" class="btn btn-primary addtabsit"><i class="fa fa-user"></i> + {:__('Profile')}</a> </div> <div class="pull-right"> - <a href="{:url('index/logout')}" class="btn btn-danger"><i class="fa fa-sign-out"></i> {:__('Logout')}</a> + <a href="{:url('index/logout')}" class="btn btn-danger"><i class="fa fa-sign-out"></i> + {:__('Logout')}</a> </div> </li> </ul> </li> <!-- 控制栏切换按钮 --> - <li> + <li class="hidden-xs"> <a href="javascript:;" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a> </li> </ul> diff --git a/application/admin/view/index/login.html b/application/admin/view/index/login.html index 9746acd..57f3992 100644 --- a/application/admin/view/index/login.html +++ b/application/admin/view/index/login.html @@ -80,7 +80,7 @@ <div class="input-group"> <div class="input-group-addon"><span class="glyphicon glyphicon-option-horizontal" aria-hidden="true"></span></div> <input type="text" name="captcha" class="form-control" placeholder="{:__('Captcha')}" data-rule="{:__('Captcha')}:required;length(4)" /> - <span class="input-group-addon" style="padding:0;border:none;"> + <span class="input-group-addon" style="padding:0;border:none;cursor:pointer;"> <img src="{:captcha_src()}" width="100" height="30" onclick="this.src = '{:captcha_src()}?r=' + Math.random();"/> </span> </div> @@ -97,7 +97,7 @@ </form> </div> </div> - <p class="copyright"><a href="https://www.fastadmin.net?ref=demo">Powered By FastAdmin</a></p> + <p class="copyright"><a href="https://www.fastadmin.net">Powered By FastAdmin</a></p> </div> </div> </div> diff --git a/application/common/controller/Backend.php b/application/common/controller/Backend.php index 5ef3105..77a5f81 100644 --- a/application/common/controller/Backend.php +++ b/application/common/controller/Backend.php @@ -279,6 +279,7 @@ class Backend extends Controller { $k = $tableName . $k; } + $v = !is_array($v) ? trim($v) : $v; $sym = strtoupper(isset($op[$k]) ? $op[$k] : $sym); switch ($sym) { @@ -306,7 +307,7 @@ class Backend extends Controller case 'IN(...)': case 'NOT IN': case 'NOT IN(...)': - $where[] = [$k, str_replace('(...)', '', $sym), explode(',', $v)]; + $where[] = [$k, str_replace('(...)', '', $sym), is_array($v) ? $v : explode(',', $v)]; break; case 'BETWEEN': case 'NOT BETWEEN': diff --git a/application/common/library/Auth.php b/application/common/library/Auth.php index 8ab8199..b2b8487 100644 --- a/application/common/library/Auth.php +++ b/application/common/library/Auth.php @@ -382,6 +382,7 @@ class Auth $rules[] = $v['name']; } $url = ($module ? $module : request()->module()) . '/' . (is_null($path) ? $this->getRequestUri() : $path); + $url = strtolower(str_replace('.', '/', $url)); return in_array($url, $rules) ? TRUE : FALSE; } @@ -539,6 +540,7 @@ class Auth { return FALSE; } + $arr = array_map('strtolower', $arr); // 是否存在 if (in_array(strtolower($request->action()), $arr) || in_array('*', $arr)) { diff --git a/application/common/model/Category.php b/application/common/model/Category.php index fa1c9f4..40e5701 100644 --- a/application/common/model/Category.php +++ b/application/common/model/Category.php @@ -21,6 +21,13 @@ class Category Extends Model 'flag_text', ]; + protected static function init() + { + self::afterInsert(function ($row) { + $row->save(['weigh' => $row['id']]); + }); + } + public function setFlagAttr($value, $data) { return is_array($value) ? implode(',', $value) : $value; diff --git a/application/config.php b/application/config.php index b747246..375c9e2 100755 --- a/application/config.php +++ b/application/config.php @@ -258,18 +258,20 @@ return [ //FastAdmin配置 'fastadmin' => [ //是否开启前台会员中心 - 'usercenter' => true, + 'usercenter' => true, //登录验证码 - 'login_captcha' => false, + 'login_captcha' => true, + //登录失败超过10则1天后重试 + 'login_failure_retry' => true, //是否同一账号同一时间只能在一个地方登录 - 'login_unique' => false, + 'login_unique' => false, //登录页默认背景图 - 'login_background' => "/assets/img/loginbg.jpg", + 'login_background' => "/assets/img/loginbg.jpg", //自动检测更新 - 'checkupdate' => false, + 'checkupdate' => false, //版本号 - 'version' => '1.0.0.20180401_beta', + 'version' => '1.0.0.20180406_beta', //API接口地址 - 'api_url' => 'https://api.fastadmin.net', + 'api_url' => 'https://api.fastadmin.net', ], ]; diff --git a/public/api.html b/public/api.html index d45f6f8..e2c09e6 100755 --- a/public/api.html +++ b/public/api.html @@ -9,7 +9,15 @@ <title>FastAdmin</title> <link href="https://cdn.bootcss.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet"> <style type="text/css"> - body { padding-top: 70px; margin-bottom: 15px; } + body { + padding-top: 70px; margin-bottom: 15px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: "Roboto", "SF Pro SC", "SF Pro Display", "SF Pro Icons", "PingFang SC", BlinkMacSystemFont, -apple-system, "Segoe UI", "Microsoft Yahei", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif; + font-weight: 400; + } + h2 { font-size: 1.6em; } + hr { margin-top: 10px; } .tab-pane { padding-top: 10px; } .mt0 { margin-top: 0px; } .footer { font-size: 12px; color: #666; } @@ -3351,7 +3359,7 @@ <div class="row mt0 footer"> <div class="col-md-6" align="left"> - Generated on 2018-04-01 15:11:14 </div> + Generated on 2018-04-06 19:15:01 </div> <div class="col-md-6" align="right"> <a href="https://www.fastadmin.net" target="_blank">FastAdmin</a> </div> diff --git a/public/assets/css/backend.css b/public/assets/css/backend.css index f3bc297..77cef5e 100644 --- a/public/assets/css/backend.css +++ b/public/assets/css/backend.css @@ -807,4 +807,6 @@ form.form-horizontal .control-label { .checkbox > label > input { margin: 2px 0 0; } -/*# sourceMappingURL=backend.css.map */ \ No newline at end of file +.wipecache li a { + color: #444444!important; +} diff --git a/public/assets/css/backend.min.css b/public/assets/css/backend.min.css index bb65dc7..9c1a855 100644 --- a/public/assets/css/backend.min.css +++ b/public/assets/css/backend.min.css @@ -1 +1 @@ -/*! * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter,Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block;}audio,canvas,progress,video{display:inline-block;vertical-align:baseline;}audio:not([controls]){display:none;height:0;}[hidden],template{display:none;}a{background-color:transparent;}a:active,a:hover{outline:0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}h1{font-size:2em;margin:0.67em 0;}mark{background:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:1em 40px;}hr{box-sizing:content-box;height:0;}pre{overflow:auto;}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{overflow:visible;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}input{line-height:normal;}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto;}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}textarea{overflow:auto;}optgroup{font-weight:bold;}table{border-collapse:collapse;border-spacing:0;}td,th{padding:0;}@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important;}a,a:visited{text-decoration:underline;}a[href]:after{content:" (" attr(href) ")";}abbr[title]:after{content:" (" attr(title) ")";}a[href^="#"]:after,a[href^="javascript:"]:after{content:"";}pre,blockquote{border:1px solid #999;page-break-inside:avoid;}thead{display:table-header-group;}tr,img{page-break-inside:avoid;}img{max-width:100% !important;}p,h2,h3{orphans:3;widows:3;}h2,h3{page-break-after:avoid;}.navbar{display:none;}.btn > .caret,.dropup > .btn > .caret{border-top-color:#000 !important;}.label{border:1px solid #000;}.table{border-collapse:collapse !important;}.table td,.table th{background-color:#fff !important;}.table-bordered th,.table-bordered td{border:1px solid #ddd !important;}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg');}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.glyphicon-asterisk:before{content:"\002a";}.glyphicon-plus:before{content:"\002b";}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac";}.glyphicon-minus:before{content:"\2212";}.glyphicon-cloud:before{content:"\2601";}.glyphicon-envelope:before{content:"\2709";}.glyphicon-pencil:before{content:"\270f";}.glyphicon-glass:before{content:"\e001";}.glyphicon-music:before{content:"\e002";}.glyphicon-search:before{content:"\e003";}.glyphicon-heart:before{content:"\e005";}.glyphicon-star:before{content:"\e006";}.glyphicon-star-empty:before{content:"\e007";}.glyphicon-user:before{content:"\e008";}.glyphicon-film:before{content:"\e009";}.glyphicon-th-large:before{content:"\e010";}.glyphicon-th:before{content:"\e011";}.glyphicon-th-list:before{content:"\e012";}.glyphicon-ok:before{content:"\e013";}.glyphicon-remove:before{content:"\e014";}.glyphicon-zoom-in:before{content:"\e015";}.glyphicon-zoom-out:before{content:"\e016";}.glyphicon-off:before{content:"\e017";}.glyphicon-signal:before{content:"\e018";}.glyphicon-cog:before{content:"\e019";}.glyphicon-trash:before{content:"\e020";}.glyphicon-home:before{content:"\e021";}.glyphicon-file:before{content:"\e022";}.glyphicon-time:before{content:"\e023";}.glyphicon-road:before{content:"\e024";}.glyphicon-download-alt:before{content:"\e025";}.glyphicon-download:before{content:"\e026";}.glyphicon-upload:before{content:"\e027";}.glyphicon-inbox:before{content:"\e028";}.glyphicon-play-circle:before{content:"\e029";}.glyphicon-repeat:before{content:"\e030";}.glyphicon-refresh:before{content:"\e031";}.glyphicon-list-alt:before{content:"\e032";}.glyphicon-lock:before{content:"\e033";}.glyphicon-flag:before{content:"\e034";}.glyphicon-headphones:before{content:"\e035";}.glyphicon-volume-off:before{content:"\e036";}.glyphicon-volume-down:before{content:"\e037";}.glyphicon-volume-up:before{content:"\e038";}.glyphicon-qrcode:before{content:"\e039";}.glyphicon-barcode:before{content:"\e040";}.glyphicon-tag:before{content:"\e041";}.glyphicon-tags:before{content:"\e042";}.glyphicon-book:before{content:"\e043";}.glyphicon-bookmark:before{content:"\e044";}.glyphicon-print:before{content:"\e045";}.glyphicon-camera:before{content:"\e046";}.glyphicon-font:before{content:"\e047";}.glyphicon-bold:before{content:"\e048";}.glyphicon-italic:before{content:"\e049";}.glyphicon-text-height:before{content:"\e050";}.glyphicon-text-width:before{content:"\e051";}.glyphicon-align-left:before{content:"\e052";}.glyphicon-align-center:before{content:"\e053";}.glyphicon-align-right:before{content:"\e054";}.glyphicon-align-justify:before{content:"\e055";}.glyphicon-list:before{content:"\e056";}.glyphicon-indent-left:before{content:"\e057";}.glyphicon-indent-right:before{content:"\e058";}.glyphicon-facetime-video:before{content:"\e059";}.glyphicon-picture:before{content:"\e060";}.glyphicon-map-marker:before{content:"\e062";}.glyphicon-adjust:before{content:"\e063";}.glyphicon-tint:before{content:"\e064";}.glyphicon-edit:before{content:"\e065";}.glyphicon-share:before{content:"\e066";}.glyphicon-check:before{content:"\e067";}.glyphicon-move:before{content:"\e068";}.glyphicon-step-backward:before{content:"\e069";}.glyphicon-fast-backward:before{content:"\e070";}.glyphicon-backward:before{content:"\e071";}.glyphicon-play:before{content:"\e072";}.glyphicon-pause:before{content:"\e073";}.glyphicon-stop:before{content:"\e074";}.glyphicon-forward:before{content:"\e075";}.glyphicon-fast-forward:before{content:"\e076";}.glyphicon-step-forward:before{content:"\e077";}.glyphicon-eject:before{content:"\e078";}.glyphicon-chevron-left:before{content:"\e079";}.glyphicon-chevron-right:before{content:"\e080";}.glyphicon-plus-sign:before{content:"\e081";}.glyphicon-minus-sign:before{content:"\e082";}.glyphicon-remove-sign:before{content:"\e083";}.glyphicon-ok-sign:before{content:"\e084";}.glyphicon-question-sign:before{content:"\e085";}.glyphicon-info-sign:before{content:"\e086";}.glyphicon-screenshot:before{content:"\e087";}.glyphicon-remove-circle:before{content:"\e088";}.glyphicon-ok-circle:before{content:"\e089";}.glyphicon-ban-circle:before{content:"\e090";}.glyphicon-arrow-left:before{content:"\e091";}.glyphicon-arrow-right:before{content:"\e092";}.glyphicon-arrow-up:before{content:"\e093";}.glyphicon-arrow-down:before{content:"\e094";}.glyphicon-share-alt:before{content:"\e095";}.glyphicon-resize-full:before{content:"\e096";}.glyphicon-resize-small:before{content:"\e097";}.glyphicon-exclamation-sign:before{content:"\e101";}.glyphicon-gift:before{content:"\e102";}.glyphicon-leaf:before{content:"\e103";}.glyphicon-fire:before{content:"\e104";}.glyphicon-eye-open:before{content:"\e105";}.glyphicon-eye-close:before{content:"\e106";}.glyphicon-warning-sign:before{content:"\e107";}.glyphicon-plane:before{content:"\e108";}.glyphicon-calendar:before{content:"\e109";}.glyphicon-random:before{content:"\e110";}.glyphicon-comment:before{content:"\e111";}.glyphicon-magnet:before{content:"\e112";}.glyphicon-chevron-up:before{content:"\e113";}.glyphicon-chevron-down:before{content:"\e114";}.glyphicon-retweet:before{content:"\e115";}.glyphicon-shopping-cart:before{content:"\e116";}.glyphicon-folder-close:before{content:"\e117";}.glyphicon-folder-open:before{content:"\e118";}.glyphicon-resize-vertical:before{content:"\e119";}.glyphicon-resize-horizontal:before{content:"\e120";}.glyphicon-hdd:before{content:"\e121";}.glyphicon-bullhorn:before{content:"\e122";}.glyphicon-bell:before{content:"\e123";}.glyphicon-certificate:before{content:"\e124";}.glyphicon-thumbs-up:before{content:"\e125";}.glyphicon-thumbs-down:before{content:"\e126";}.glyphicon-hand-right:before{content:"\e127";}.glyphicon-hand-left:before{content:"\e128";}.glyphicon-hand-up:before{content:"\e129";}.glyphicon-hand-down:before{content:"\e130";}.glyphicon-circle-arrow-right:before{content:"\e131";}.glyphicon-circle-arrow-left:before{content:"\e132";}.glyphicon-circle-arrow-up:before{content:"\e133";}.glyphicon-circle-arrow-down:before{content:"\e134";}.glyphicon-globe:before{content:"\e135";}.glyphicon-wrench:before{content:"\e136";}.glyphicon-tasks:before{content:"\e137";}.glyphicon-filter:before{content:"\e138";}.glyphicon-briefcase:before{content:"\e139";}.glyphicon-fullscreen:before{content:"\e140";}.glyphicon-dashboard:before{content:"\e141";}.glyphicon-paperclip:before{content:"\e142";}.glyphicon-heart-empty:before{content:"\e143";}.glyphicon-link:before{content:"\e144";}.glyphicon-phone:before{content:"\e145";}.glyphicon-pushpin:before{content:"\e146";}.glyphicon-usd:before{content:"\e148";}.glyphicon-gbp:before{content:"\e149";}.glyphicon-sort:before{content:"\e150";}.glyphicon-sort-by-alphabet:before{content:"\e151";}.glyphicon-sort-by-alphabet-alt:before{content:"\e152";}.glyphicon-sort-by-order:before{content:"\e153";}.glyphicon-sort-by-order-alt:before{content:"\e154";}.glyphicon-sort-by-attributes:before{content:"\e155";}.glyphicon-sort-by-attributes-alt:before{content:"\e156";}.glyphicon-unchecked:before{content:"\e157";}.glyphicon-expand:before{content:"\e158";}.glyphicon-collapse-down:before{content:"\e159";}.glyphicon-collapse-up:before{content:"\e160";}.glyphicon-log-in:before{content:"\e161";}.glyphicon-flash:before{content:"\e162";}.glyphicon-log-out:before{content:"\e163";}.glyphicon-new-window:before{content:"\e164";}.glyphicon-record:before{content:"\e165";}.glyphicon-save:before{content:"\e166";}.glyphicon-open:before{content:"\e167";}.glyphicon-saved:before{content:"\e168";}.glyphicon-import:before{content:"\e169";}.glyphicon-export:before{content:"\e170";}.glyphicon-send:before{content:"\e171";}.glyphicon-floppy-disk:before{content:"\e172";}.glyphicon-floppy-saved:before{content:"\e173";}.glyphicon-floppy-remove:before{content:"\e174";}.glyphicon-floppy-save:before{content:"\e175";}.glyphicon-floppy-open:before{content:"\e176";}.glyphicon-credit-card:before{content:"\e177";}.glyphicon-transfer:before{content:"\e178";}.glyphicon-cutlery:before{content:"\e179";}.glyphicon-header:before{content:"\e180";}.glyphicon-compressed:before{content:"\e181";}.glyphicon-earphone:before{content:"\e182";}.glyphicon-phone-alt:before{content:"\e183";}.glyphicon-tower:before{content:"\e184";}.glyphicon-stats:before{content:"\e185";}.glyphicon-sd-video:before{content:"\e186";}.glyphicon-hd-video:before{content:"\e187";}.glyphicon-subtitles:before{content:"\e188";}.glyphicon-sound-stereo:before{content:"\e189";}.glyphicon-sound-dolby:before{content:"\e190";}.glyphicon-sound-5-1:before{content:"\e191";}.glyphicon-sound-6-1:before{content:"\e192";}.glyphicon-sound-7-1:before{content:"\e193";}.glyphicon-copyright-mark:before{content:"\e194";}.glyphicon-registration-mark:before{content:"\e195";}.glyphicon-cloud-download:before{content:"\e197";}.glyphicon-cloud-upload:before{content:"\e198";}.glyphicon-tree-conifer:before{content:"\e199";}.glyphicon-tree-deciduous:before{content:"\e200";}.glyphicon-cd:before{content:"\e201";}.glyphicon-save-file:before{content:"\e202";}.glyphicon-open-file:before{content:"\e203";}.glyphicon-level-up:before{content:"\e204";}.glyphicon-copy:before{content:"\e205";}.glyphicon-paste:before{content:"\e206";}.glyphicon-alert:before{content:"\e209";}.glyphicon-equalizer:before{content:"\e210";}.glyphicon-king:before{content:"\e211";}.glyphicon-queen:before{content:"\e212";}.glyphicon-pawn:before{content:"\e213";}.glyphicon-bishop:before{content:"\e214";}.glyphicon-knight:before{content:"\e215";}.glyphicon-baby-formula:before{content:"\e216";}.glyphicon-tent:before{content:"\26fa";}.glyphicon-blackboard:before{content:"\e218";}.glyphicon-bed:before{content:"\e219";}.glyphicon-apple:before{content:"\f8ff";}.glyphicon-erase:before{content:"\e221";}.glyphicon-hourglass:before{content:"\231b";}.glyphicon-lamp:before{content:"\e223";}.glyphicon-duplicate:before{content:"\e224";}.glyphicon-piggy-bank:before{content:"\e225";}.glyphicon-scissors:before{content:"\e226";}.glyphicon-bitcoin:before{content:"\e227";}.glyphicon-btc:before{content:"\e227";}.glyphicon-xbt:before{content:"\e227";}.glyphicon-yen:before{content:"\00a5";}.glyphicon-jpy:before{content:"\00a5";}.glyphicon-ruble:before{content:"\20bd";}.glyphicon-rub:before{content:"\20bd";}.glyphicon-scale:before{content:"\e230";}.glyphicon-ice-lolly:before{content:"\e231";}.glyphicon-ice-lolly-tasted:before{content:"\e232";}.glyphicon-education:before{content:"\e233";}.glyphicon-option-horizontal:before{content:"\e234";}.glyphicon-option-vertical:before{content:"\e235";}.glyphicon-menu-hamburger:before{content:"\e236";}.glyphicon-modal-window:before{content:"\e237";}.glyphicon-oil:before{content:"\e238";}.glyphicon-grain:before{content:"\e239";}.glyphicon-sunglasses:before{content:"\e240";}.glyphicon-text-size:before{content:"\e241";}.glyphicon-text-color:before{content:"\e242";}.glyphicon-text-background:before{content:"\e243";}.glyphicon-object-align-top:before{content:"\e244";}.glyphicon-object-align-bottom:before{content:"\e245";}.glyphicon-object-align-horizontal:before{content:"\e246";}.glyphicon-object-align-left:before{content:"\e247";}.glyphicon-object-align-vertical:before{content:"\e248";}.glyphicon-object-align-right:before{content:"\e249";}.glyphicon-triangle-right:before{content:"\e250";}.glyphicon-triangle-left:before{content:"\e251";}.glyphicon-triangle-bottom:before{content:"\e252";}.glyphicon-triangle-top:before{content:"\e253";}.glyphicon-console:before{content:"\e254";}.glyphicon-superscript:before{content:"\e255";}.glyphicon-subscript:before{content:"\e256";}.glyphicon-menu-left:before{content:"\e257";}.glyphicon-menu-right:before{content:"\e258";}.glyphicon-menu-down:before{content:"\e259";}.glyphicon-menu-up:before{content:"\e260";}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0);}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.42857143;color:#333333;background-color:#fff;}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;}a{color:#2c3e50;text-decoration:none;}a:hover,a:focus{color:#11181f;text-decoration:underline;}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}figure{margin:0;}img{vertical-align:middle;}.img-responsive,.thumbnail > img,.thumbnail a > img,.carousel-inner > .item > img,.carousel-inner > .item > a > img{display:block;max-width:100%;height:auto;}.img-rounded{border-radius:5px;}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto;}.img-circle{border-radius:50%;}hr{margin-top:17px;margin-bottom:17px;border:0;border-top:1px solid #eeeeee;}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;}[role="button"]{cursor:pointer;}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777777;}h1,.h1,h2,.h2,h3,.h3{margin-top:17px;margin-bottom:8.5px;}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%;}h4,.h4,h5,.h5,h6,.h6{margin-top:8.5px;margin-bottom:8.5px;}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%;}h1,.h1{font-size:31px;}h2,.h2{font-size:25px;}h3,.h3{font-size:21px;}h4,.h4{font-size:15px;}h5,.h5{font-size:12px;}h6,.h6{font-size:11px;}p{margin:0 0 8.5px;}.lead{margin-bottom:17px;font-size:13px;font-weight:300;line-height:1.4;}@media (min-width:768px){.lead{font-size:18px;}}small,.small{font-size:91%;}mark,.mark{background-color:#fcf8e3;padding:.2em;}.text-left{text-align:left;}.text-right{text-align:right;}.text-center{text-align:center;}.text-justify{text-align:justify;}.text-nowrap{white-space:nowrap;}.text-lowercase{text-transform:lowercase;}.text-uppercase{text-transform:uppercase;}.text-capitalize{text-transform:capitalize;}.text-muted{color:#777777;}.text-primary{color:#2c3e50;}a.text-primary:hover,a.text-primary:focus{color:#1a242f;}.text-success{color:#18bc9c;}a.text-success:hover,a.text-success:focus{color:#128f76;}.text-info{color:#3498db;}a.text-info:hover,a.text-info:focus{color:#217dbb;}.text-warning{color:#f39c12;}a.text-warning:hover,a.text-warning:focus{color:#c87f0a;}.text-danger{color:#e74c3c;}a.text-danger:hover,a.text-danger:focus{color:#d62c1a;}.bg-primary{color:#fff;background-color:#2c3e50;}a.bg-primary:hover,a.bg-primary:focus{background-color:#1a242f;}.bg-success{background-color:#dff0d8;}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3;}.bg-info{background-color:#d9edf7;}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee;}.bg-warning{background-color:#fcf8e3;}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5;}.bg-danger{background-color:#f2dede;}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9;}.page-header{padding-bottom:7.5px;margin:34px 0 17px;border-bottom:1px solid #eeeeee;}ul,ol{margin-top:0;margin-bottom:8.5px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:0;}.list-unstyled{padding-left:0;list-style:none;}.list-inline{padding-left:0;list-style:none;margin-left:-5px;}.list-inline > li{display:inline-block;padding-left:5px;padding-right:5px;}dl{margin-top:0;margin-bottom:17px;}dt,dd{line-height:1.42857143;}dt{font-weight:bold;}dd{margin-left:0;}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.dl-horizontal dd{margin-left:180px;}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777777;}.initialism{font-size:90%;text-transform:uppercase;}blockquote{padding:8.5px 17px;margin:0 0 17px;font-size:15px;border-left:5px solid #eeeeee;}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0;}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777777;}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0';}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right;}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:'';}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014';}address{margin-bottom:17px;font-style:normal;line-height:1.42857143;}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:3px;}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none;}pre{display:block;padding:8px;margin:0 0 8.5px;font-size:11px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px;}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0;}.pre-scrollable{max-height:340px;overflow-y:scroll;}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}@media (min-width:768px){.container{width:750px;}}@media (min-width:992px){.container{width:970px;}}@media (min-width:1200px){.container{width:1170px;}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}.row{margin-left:-15px;margin-right:-15px;}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left;}.col-xs-12{width:100%;}.col-xs-11{width:91.66666667%;}.col-xs-10{width:83.33333333%;}.col-xs-9{width:75%;}.col-xs-8{width:66.66666667%;}.col-xs-7{width:58.33333333%;}.col-xs-6{width:50%;}.col-xs-5{width:41.66666667%;}.col-xs-4{width:33.33333333%;}.col-xs-3{width:25%;}.col-xs-2{width:16.66666667%;}.col-xs-1{width:8.33333333%;}.col-xs-pull-12{right:100%;}.col-xs-pull-11{right:91.66666667%;}.col-xs-pull-10{right:83.33333333%;}.col-xs-pull-9{right:75%;}.col-xs-pull-8{right:66.66666667%;}.col-xs-pull-7{right:58.33333333%;}.col-xs-pull-6{right:50%;}.col-xs-pull-5{right:41.66666667%;}.col-xs-pull-4{right:33.33333333%;}.col-xs-pull-3{right:25%;}.col-xs-pull-2{right:16.66666667%;}.col-xs-pull-1{right:8.33333333%;}.col-xs-pull-0{right:auto;}.col-xs-push-12{left:100%;}.col-xs-push-11{left:91.66666667%;}.col-xs-push-10{left:83.33333333%;}.col-xs-push-9{left:75%;}.col-xs-push-8{left:66.66666667%;}.col-xs-push-7{left:58.33333333%;}.col-xs-push-6{left:50%;}.col-xs-push-5{left:41.66666667%;}.col-xs-push-4{left:33.33333333%;}.col-xs-push-3{left:25%;}.col-xs-push-2{left:16.66666667%;}.col-xs-push-1{left:8.33333333%;}.col-xs-push-0{left:auto;}.col-xs-offset-12{margin-left:100%;}.col-xs-offset-11{margin-left:91.66666667%;}.col-xs-offset-10{margin-left:83.33333333%;}.col-xs-offset-9{margin-left:75%;}.col-xs-offset-8{margin-left:66.66666667%;}.col-xs-offset-7{margin-left:58.33333333%;}.col-xs-offset-6{margin-left:50%;}.col-xs-offset-5{margin-left:41.66666667%;}.col-xs-offset-4{margin-left:33.33333333%;}.col-xs-offset-3{margin-left:25%;}.col-xs-offset-2{margin-left:16.66666667%;}.col-xs-offset-1{margin-left:8.33333333%;}.col-xs-offset-0{margin-left:0%;}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left;}.col-sm-12{width:100%;}.col-sm-11{width:91.66666667%;}.col-sm-10{width:83.33333333%;}.col-sm-9{width:75%;}.col-sm-8{width:66.66666667%;}.col-sm-7{width:58.33333333%;}.col-sm-6{width:50%;}.col-sm-5{width:41.66666667%;}.col-sm-4{width:33.33333333%;}.col-sm-3{width:25%;}.col-sm-2{width:16.66666667%;}.col-sm-1{width:8.33333333%;}.col-sm-pull-12{right:100%;}.col-sm-pull-11{right:91.66666667%;}.col-sm-pull-10{right:83.33333333%;}.col-sm-pull-9{right:75%;}.col-sm-pull-8{right:66.66666667%;}.col-sm-pull-7{right:58.33333333%;}.col-sm-pull-6{right:50%;}.col-sm-pull-5{right:41.66666667%;}.col-sm-pull-4{right:33.33333333%;}.col-sm-pull-3{right:25%;}.col-sm-pull-2{right:16.66666667%;}.col-sm-pull-1{right:8.33333333%;}.col-sm-pull-0{right:auto;}.col-sm-push-12{left:100%;}.col-sm-push-11{left:91.66666667%;}.col-sm-push-10{left:83.33333333%;}.col-sm-push-9{left:75%;}.col-sm-push-8{left:66.66666667%;}.col-sm-push-7{left:58.33333333%;}.col-sm-push-6{left:50%;}.col-sm-push-5{left:41.66666667%;}.col-sm-push-4{left:33.33333333%;}.col-sm-push-3{left:25%;}.col-sm-push-2{left:16.66666667%;}.col-sm-push-1{left:8.33333333%;}.col-sm-push-0{left:auto;}.col-sm-offset-12{margin-left:100%;}.col-sm-offset-11{margin-left:91.66666667%;}.col-sm-offset-10{margin-left:83.33333333%;}.col-sm-offset-9{margin-left:75%;}.col-sm-offset-8{margin-left:66.66666667%;}.col-sm-offset-7{margin-left:58.33333333%;}.col-sm-offset-6{margin-left:50%;}.col-sm-offset-5{margin-left:41.66666667%;}.col-sm-offset-4{margin-left:33.33333333%;}.col-sm-offset-3{margin-left:25%;}.col-sm-offset-2{margin-left:16.66666667%;}.col-sm-offset-1{margin-left:8.33333333%;}.col-sm-offset-0{margin-left:0%;}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left;}.col-md-12{width:100%;}.col-md-11{width:91.66666667%;}.col-md-10{width:83.33333333%;}.col-md-9{width:75%;}.col-md-8{width:66.66666667%;}.col-md-7{width:58.33333333%;}.col-md-6{width:50%;}.col-md-5{width:41.66666667%;}.col-md-4{width:33.33333333%;}.col-md-3{width:25%;}.col-md-2{width:16.66666667%;}.col-md-1{width:8.33333333%;}.col-md-pull-12{right:100%;}.col-md-pull-11{right:91.66666667%;}.col-md-pull-10{right:83.33333333%;}.col-md-pull-9{right:75%;}.col-md-pull-8{right:66.66666667%;}.col-md-pull-7{right:58.33333333%;}.col-md-pull-6{right:50%;}.col-md-pull-5{right:41.66666667%;}.col-md-pull-4{right:33.33333333%;}.col-md-pull-3{right:25%;}.col-md-pull-2{right:16.66666667%;}.col-md-pull-1{right:8.33333333%;}.col-md-pull-0{right:auto;}.col-md-push-12{left:100%;}.col-md-push-11{left:91.66666667%;}.col-md-push-10{left:83.33333333%;}.col-md-push-9{left:75%;}.col-md-push-8{left:66.66666667%;}.col-md-push-7{left:58.33333333%;}.col-md-push-6{left:50%;}.col-md-push-5{left:41.66666667%;}.col-md-push-4{left:33.33333333%;}.col-md-push-3{left:25%;}.col-md-push-2{left:16.66666667%;}.col-md-push-1{left:8.33333333%;}.col-md-push-0{left:auto;}.col-md-offset-12{margin-left:100%;}.col-md-offset-11{margin-left:91.66666667%;}.col-md-offset-10{margin-left:83.33333333%;}.col-md-offset-9{margin-left:75%;}.col-md-offset-8{margin-left:66.66666667%;}.col-md-offset-7{margin-left:58.33333333%;}.col-md-offset-6{margin-left:50%;}.col-md-offset-5{margin-left:41.66666667%;}.col-md-offset-4{margin-left:33.33333333%;}.col-md-offset-3{margin-left:25%;}.col-md-offset-2{margin-left:16.66666667%;}.col-md-offset-1{margin-left:8.33333333%;}.col-md-offset-0{margin-left:0%;}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left;}.col-lg-12{width:100%;}.col-lg-11{width:91.66666667%;}.col-lg-10{width:83.33333333%;}.col-lg-9{width:75%;}.col-lg-8{width:66.66666667%;}.col-lg-7{width:58.33333333%;}.col-lg-6{width:50%;}.col-lg-5{width:41.66666667%;}.col-lg-4{width:33.33333333%;}.col-lg-3{width:25%;}.col-lg-2{width:16.66666667%;}.col-lg-1{width:8.33333333%;}.col-lg-pull-12{right:100%;}.col-lg-pull-11{right:91.66666667%;}.col-lg-pull-10{right:83.33333333%;}.col-lg-pull-9{right:75%;}.col-lg-pull-8{right:66.66666667%;}.col-lg-pull-7{right:58.33333333%;}.col-lg-pull-6{right:50%;}.col-lg-pull-5{right:41.66666667%;}.col-lg-pull-4{right:33.33333333%;}.col-lg-pull-3{right:25%;}.col-lg-pull-2{right:16.66666667%;}.col-lg-pull-1{right:8.33333333%;}.col-lg-pull-0{right:auto;}.col-lg-push-12{left:100%;}.col-lg-push-11{left:91.66666667%;}.col-lg-push-10{left:83.33333333%;}.col-lg-push-9{left:75%;}.col-lg-push-8{left:66.66666667%;}.col-lg-push-7{left:58.33333333%;}.col-lg-push-6{left:50%;}.col-lg-push-5{left:41.66666667%;}.col-lg-push-4{left:33.33333333%;}.col-lg-push-3{left:25%;}.col-lg-push-2{left:16.66666667%;}.col-lg-push-1{left:8.33333333%;}.col-lg-push-0{left:auto;}.col-lg-offset-12{margin-left:100%;}.col-lg-offset-11{margin-left:91.66666667%;}.col-lg-offset-10{margin-left:83.33333333%;}.col-lg-offset-9{margin-left:75%;}.col-lg-offset-8{margin-left:66.66666667%;}.col-lg-offset-7{margin-left:58.33333333%;}.col-lg-offset-6{margin-left:50%;}.col-lg-offset-5{margin-left:41.66666667%;}.col-lg-offset-4{margin-left:33.33333333%;}.col-lg-offset-3{margin-left:25%;}.col-lg-offset-2{margin-left:16.66666667%;}.col-lg-offset-1{margin-left:8.33333333%;}.col-lg-offset-0{margin-left:0%;}}table{background-color:transparent;}caption{padding-top:8px;padding-bottom:8px;color:#777777;text-align:left;}th{text-align:left;}.table{width:100%;max-width:100%;margin-bottom:17px;}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd;}.table > thead > tr > th{vertical-align:bottom;border-bottom:2px solid #ddd;}.table > caption + thead > tr:first-child > th,.table > colgroup + thead > tr:first-child > th,.table > thead:first-child > tr:first-child > th,.table > caption + thead > tr:first-child > td,.table > colgroup + thead > tr:first-child > td,.table > thead:first-child > tr:first-child > td{border-top:0;}.table > tbody + tbody{border-top:2px solid #ddd;}.table .table{background-color:#fff;}.table-condensed > thead > tr > th,.table-condensed > tbody > tr > th,.table-condensed > tfoot > tr > th,.table-condensed > thead > tr > td,.table-condensed > tbody > tr > td,.table-condensed > tfoot > tr > td{padding:5px;}.table-bordered{border:1px solid #ddd;}.table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #ddd;}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px;}.table-striped > tbody > tr:nth-of-type(odd){background-color:#f9f9f9;}.table-hover > tbody > tr:hover{background-color:#f5f5f5;}table col[class*="col-"]{position:static;float:none;display:table-column;}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell;}.table > thead > tr > td.active,.table > tbody > tr > td.active,.table > tfoot > tr > td.active,.table > thead > tr > th.active,.table > tbody > tr > th.active,.table > tfoot > tr > th.active,.table > thead > tr.active > td,.table > tbody > tr.active > td,.table > tfoot > tr.active > td,.table > thead > tr.active > th,.table > tbody > tr.active > th,.table > tfoot > tr.active > th{background-color:#f5f5f5;}.table-hover > tbody > tr > td.active:hover,.table-hover > tbody > tr > th.active:hover,.table-hover > tbody > tr.active:hover > td,.table-hover > tbody > tr:hover > .active,.table-hover > tbody > tr.active:hover > th{background-color:#e8e8e8;}.table > thead > tr > td.success,.table > tbody > tr > td.success,.table > tfoot > tr > td.success,.table > thead > tr > th.success,.table > tbody > tr > th.success,.table > tfoot > tr > th.success,.table > thead > tr.success > td,.table > tbody > tr.success > td,.table > tfoot > tr.success > td,.table > thead > tr.success > th,.table > tbody > tr.success > th,.table > tfoot > tr.success > th{background-color:#dff0d8;}.table-hover > tbody > tr > td.success:hover,.table-hover > tbody > tr > th.success:hover,.table-hover > tbody > tr.success:hover > td,.table-hover > tbody > tr:hover > .success,.table-hover > tbody > tr.success:hover > th{background-color:#d0e9c6;}.table > thead > tr > td.info,.table > tbody > tr > td.info,.table > tfoot > tr > td.info,.table > thead > tr > th.info,.table > tbody > tr > th.info,.table > tfoot > tr > th.info,.table > thead > tr.info > td,.table > tbody > tr.info > td,.table > tfoot > tr.info > td,.table > thead > tr.info > th,.table > tbody > tr.info > th,.table > tfoot > tr.info > th{background-color:#d9edf7;}.table-hover > tbody > tr > td.info:hover,.table-hover > tbody > tr > th.info:hover,.table-hover > tbody > tr.info:hover > td,.table-hover > tbody > tr:hover > .info,.table-hover > tbody > tr.info:hover > th{background-color:#c4e3f3;}.table > thead > tr > td.warning,.table > tbody > tr > td.warning,.table > tfoot > tr > td.warning,.table > thead > tr > th.warning,.table > tbody > tr > th.warning,.table > tfoot > tr > th.warning,.table > thead > tr.warning > td,.table > tbody > tr.warning > td,.table > tfoot > tr.warning > td,.table > thead > tr.warning > th,.table > tbody > tr.warning > th,.table > tfoot > tr.warning > th{background-color:#fcf8e3;}.table-hover > tbody > tr > td.warning:hover,.table-hover > tbody > tr > th.warning:hover,.table-hover > tbody > tr.warning:hover > td,.table-hover > tbody > tr:hover > .warning,.table-hover > tbody > tr.warning:hover > th{background-color:#faf2cc;}.table > thead > tr > td.danger,.table > tbody > tr > td.danger,.table > tfoot > tr > td.danger,.table > thead > tr > th.danger,.table > tbody > tr > th.danger,.table > tfoot > tr > th.danger,.table > thead > tr.danger > td,.table > tbody > tr.danger > td,.table > tfoot > tr.danger > td,.table > thead > tr.danger > th,.table > tbody > tr.danger > th,.table > tfoot > tr.danger > th{background-color:#f2dede;}.table-hover > tbody > tr > td.danger:hover,.table-hover > tbody > tr > th.danger:hover,.table-hover > tbody > tr.danger:hover > td,.table-hover > tbody > tr:hover > .danger,.table-hover > tbody > tr.danger:hover > th{background-color:#ebcccc;}.table-responsive{overflow-x:auto;min-height:0.01%;}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:12.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;}.table-responsive > .table{margin-bottom:0;}.table-responsive > .table > thead > tr > th,.table-responsive > .table > tbody > tr > th,.table-responsive > .table > tfoot > tr > th,.table-responsive > .table > thead > tr > td,.table-responsive > .table > tbody > tr > td,.table-responsive > .table > tfoot > tr > td{white-space:nowrap;}.table-responsive > .table-bordered{border:0;}.table-responsive > .table-bordered > thead > tr > th:first-child,.table-responsive > .table-bordered > tbody > tr > th:first-child,.table-responsive > .table-bordered > tfoot > tr > th:first-child,.table-responsive > .table-bordered > thead > tr > td:first-child,.table-responsive > .table-bordered > tbody > tr > td:first-child,.table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0;}.table-responsive > .table-bordered > thead > tr > th:last-child,.table-responsive > .table-bordered > tbody > tr > th:last-child,.table-responsive > .table-bordered > tfoot > tr > th:last-child,.table-responsive > .table-bordered > thead > tr > td:last-child,.table-responsive > .table-bordered > tbody > tr > td:last-child,.table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0;}.table-responsive > .table-bordered > tbody > tr:last-child > th,.table-responsive > .table-bordered > tfoot > tr:last-child > th,.table-responsive > .table-bordered > tbody > tr:last-child > td,.table-responsive > .table-bordered > tfoot > tr:last-child > td{border-bottom:0;}}fieldset{padding:0;margin:0;border:0;min-width:0;}legend{display:block;width:100%;padding:0;margin-bottom:17px;font-size:18px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold;}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal;}input[type="file"]{display:block;}input[type="range"]{display:block;width:100%;}select[multiple],select[size]{height:auto;}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}output{display:block;padding-top:7px;font-size:12px;line-height:1.42857143;color:#555555;}.form-control{display:block;width:100%;height:31px;padding:6px 12px;font-size:12px;line-height:1.42857143;color:#555555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);}.form-control::-moz-placeholder{color:#999;opacity:1;}.form-control:-ms-input-placeholder{color:#999;}.form-control::-webkit-input-placeholder{color:#999;}.form-control::-ms-expand{border:0;background-color:transparent;}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1;}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed;}textarea.form-control{height:auto;}input[type="search"]{-webkit-appearance:none;}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:31px;}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:28px;}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:42px;}}.form-group{margin-bottom:15px;}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px;}.radio label,.checkbox label{min-height:17px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer;}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9;}.radio + .radio,.checkbox + .checkbox{margin-top:-5px;}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer;}.radio-inline + .radio-inline,.checkbox-inline + .checkbox-inline{margin-top:0;margin-left:10px;}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed;}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed;}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:29px;}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0;}.input-sm{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-sm{height:28px;line-height:28px;}textarea.input-sm,select[multiple].input-sm{height:auto;}.form-group-sm .form-control{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.form-group-sm select.form-control{height:28px;line-height:28px;}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto;}.form-group-sm .form-control-static{height:28px;min-height:28px;padding:6px 10px;font-size:11px;line-height:1.5;}.input-lg{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-lg{height:42px;line-height:42px;}textarea.input-lg,select[multiple].input-lg{height:auto;}.form-group-lg .form-control{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.form-group-lg select.form-control{height:42px;line-height:42px;}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto;}.form-group-lg .form-control-static{height:42px;min-height:32px;padding:11px 16px;font-size:15px;line-height:1.3333333;}.has-feedback{position:relative;}.has-feedback .form-control{padding-right:38.75px;}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:31px;height:31px;line-height:31px;text-align:center;pointer-events:none;}.input-lg + .form-control-feedback,.input-group-lg + .form-control-feedback,.form-group-lg .form-control + .form-control-feedback{width:42px;height:42px;line-height:42px;}.input-sm + .form-control-feedback,.input-group-sm + .form-control-feedback,.form-group-sm .form-control + .form-control-feedback{width:28px;height:28px;line-height:28px;}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#18bc9c;}.has-success .form-control{border-color:#18bc9c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-success .form-control:focus{border-color:#128f76;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;}.has-success .input-group-addon{color:#18bc9c;border-color:#18bc9c;background-color:#dff0d8;}.has-success .form-control-feedback{color:#18bc9c;}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f39c12;}.has-warning .form-control{border-color:#f39c12;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-warning .form-control:focus{border-color:#c87f0a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;}.has-warning .input-group-addon{color:#f39c12;border-color:#f39c12;background-color:#fcf8e3;}.has-warning .form-control-feedback{color:#f39c12;}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#e74c3c;}.has-error .form-control{border-color:#e74c3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-error .form-control:focus{border-color:#d62c1a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;}.has-error .input-group-addon{color:#e74c3c;border-color:#e74c3c;background-color:#f2dede;}.has-error .form-control-feedback{color:#e74c3c;}.has-feedback label ~ .form-control-feedback{top:22px;}.has-feedback label.sr-only ~ .form-control-feedback{top:0;}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle;}.form-inline .form-control-static{display:inline-block;}.form-inline .input-group{display:inline-table;vertical-align:middle;}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto;}.form-inline .input-group > .form-control{width:100%;}.form-inline .control-label{margin-bottom:0;vertical-align:middle;}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;}.form-inline .radio label,.form-inline .checkbox label{padding-left:0;}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0;}.form-inline .has-feedback .form-control-feedback{top:0;}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px;}.form-horizontal .radio,.form-horizontal .checkbox{min-height:24px;}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px;}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px;}}.form-horizontal .has-feedback .form-control-feedback{right:15px;}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:15px;}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:11px;}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:12px;line-height:1.42857143;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none;}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none;}.btn-default{color:#333;background-color:#fff;border-color:#ccc;}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c;}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad;}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad;}.btn-default:active:hover,.btn-default.active:hover,.open > .dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open > .dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open > .dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c;}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{background-image:none;}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc;}.btn-default .badge{color:#fff;background-color:#333;}.btn-primary{color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#1a242f;border-color:#000000;}.btn-primary:hover{color:#fff;background-color:#1a242f;border-color:#161f29;}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{color:#fff;background-color:#1a242f;border-color:#161f29;}.btn-primary:active:hover,.btn-primary.active:hover,.open > .dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open > .dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open > .dropdown-toggle.btn-primary.focus{color:#fff;background-color:#0d1318;border-color:#000000;}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{background-image:none;}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2c3e50;border-color:#2c3e50;}.btn-primary .badge{color:#2c3e50;background-color:#fff;}.btn-success{color:#fff;background-color:#18bc9c;border-color:#18bc9c;}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#128f76;border-color:#0a4b3e;}.btn-success:hover{color:#fff;background-color:#128f76;border-color:#11866f;}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{color:#fff;background-color:#128f76;border-color:#11866f;}.btn-success:active:hover,.btn-success.active:hover,.open > .dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open > .dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open > .dropdown-toggle.btn-success.focus{color:#fff;background-color:#0e6f5c;border-color:#0a4b3e;}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{background-image:none;}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#18bc9c;border-color:#18bc9c;}.btn-success .badge{color:#18bc9c;background-color:#fff;}.btn-info{color:#fff;background-color:#3498db;border-color:#3498db;}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#217dbb;border-color:#16527a;}.btn-info:hover{color:#fff;background-color:#217dbb;border-color:#2077b2;}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{color:#fff;background-color:#217dbb;border-color:#2077b2;}.btn-info:active:hover,.btn-info.active:hover,.open > .dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open > .dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open > .dropdown-toggle.btn-info.focus{color:#fff;background-color:#1c699d;border-color:#16527a;}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{background-image:none;}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#3498db;border-color:#3498db;}.btn-info .badge{color:#3498db;background-color:#fff;}.btn-warning{color:#fff;background-color:#f39c12;border-color:#f39c12;}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#c87f0a;border-color:#7f5006;}.btn-warning:hover{color:#fff;background-color:#c87f0a;border-color:#be780a;}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{color:#fff;background-color:#c87f0a;border-color:#be780a;}.btn-warning:active:hover,.btn-warning.active:hover,.open > .dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open > .dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open > .dropdown-toggle.btn-warning.focus{color:#fff;background-color:#a66908;border-color:#7f5006;}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{background-image:none;}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f39c12;border-color:#f39c12;}.btn-warning .badge{color:#f39c12;background-color:#fff;}.btn-danger{color:#fff;background-color:#e74c3c;border-color:#e74c3c;}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#d62c1a;border-color:#921e12;}.btn-danger:hover{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.btn-danger:active:hover,.btn-danger.active:hover,.open > .dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open > .dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open > .dropdown-toggle.btn-danger.focus{color:#fff;background-color:#b62516;border-color:#921e12;}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{background-image:none;}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e74c3c;border-color:#e74c3c;}.btn-danger .badge{color:#e74c3c;background-color:#fff;}.btn-link{color:#2c3e50;font-weight:normal;border-radius:0;}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none;}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent;}.btn-link:hover,.btn-link:focus{color:#11181f;text-decoration:underline;background-color:transparent;}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777777;text-decoration:none;}.btn-lg,.btn-group-lg > .btn{padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.btn-sm,.btn-group-sm > .btn{padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.btn-xs,.btn-group-xs > .btn{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:2px;}.btn-block{display:block;width:100%;}.btn-block + .btn-block{margin-top:5px;}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}.collapse{display:none;}.collapse.in{display:block;}tr.collapse.in{display:table-row;}tbody.collapse.in{display:table-row-group;}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease;}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent;}.dropup,.dropdown{position:relative;}.dropdown-toggle:focus{outline:0;}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:3px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}.dropdown-menu .divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.dropdown-menu > li > a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap;}.dropdown-menu > li > a:hover,.dropdown-menu > li > a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5;}.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#fff;text-decoration:none;outline:0;background-color:#2c3e50;}.dropdown-menu > .disabled > a,.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{color:#777777;}.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed;}.open > .dropdown-menu{display:block;}.open > a{outline:0;}.dropdown-menu-right{left:auto;right:0;}.dropdown-menu-left{left:0;right:auto;}.dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.42857143;color:#777777;white-space:nowrap;}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990;}.pull-right > .dropdown-menu{right:0;left:auto;}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:"";}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px;}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0;}.navbar-right .dropdown-menu-left{left:0;right:auto;}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle;}.btn-group > .btn,.btn-group-vertical > .btn{position:relative;float:left;}.btn-group > .btn:hover,.btn-group-vertical > .btn:hover,.btn-group > .btn:focus,.btn-group-vertical > .btn:focus,.btn-group > .btn:active,.btn-group-vertical > .btn:active,.btn-group > .btn.active,.btn-group-vertical > .btn.active{z-index:2;}.btn-group .btn + .btn,.btn-group .btn + .btn-group,.btn-group .btn-group + .btn,.btn-group .btn-group + .btn-group{margin-left:-1px;}.btn-toolbar{margin-left:-5px;}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left;}.btn-toolbar > .btn,.btn-toolbar > .btn-group,.btn-toolbar > .input-group{margin-left:5px;}.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0;}.btn-group > .btn:first-child{margin-left:0;}.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn:last-child:not(:first-child),.btn-group > .dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group > .btn-group{float:left;}.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0;}.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}.btn-group > .btn + .dropdown-toggle{padding-left:8px;padding-right:8px;}.btn-group > .btn-lg + .dropdown-toggle{padding-left:12px;padding-right:12px;}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn .caret{margin-left:0;}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0;}.dropup .btn-lg .caret{border-width:0 5px 5px;}.btn-group-vertical > .btn,.btn-group-vertical > .btn-group,.btn-group-vertical > .btn-group > .btn{display:block;float:none;width:100%;max-width:100%;}.btn-group-vertical > .btn-group > .btn{float:none;}.btn-group-vertical > .btn + .btn,.btn-group-vertical > .btn + .btn-group,.btn-group-vertical > .btn-group + .btn,.btn-group-vertical > .btn-group + .btn-group{margin-top:-1px;margin-left:0;}.btn-group-vertical > .btn:not(:first-child):not(:last-child){border-radius:0;}.btn-group-vertical > .btn:first-child:not(:last-child){border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.btn-group-vertical > .btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0;}.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0;}.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child{border-top-right-radius:0;border-top-left-radius:0;}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate;}.btn-group-justified > .btn,.btn-group-justified > .btn-group{float:none;display:table-cell;width:1%;}.btn-group-justified > .btn-group .btn{width:100%;}.btn-group-justified > .btn-group .dropdown-menu{left:auto;}[data-toggle="buttons"] > .btn input[type="radio"],[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],[data-toggle="buttons"] > .btn input[type="checkbox"],[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none;}.input-group{position:relative;display:table;border-collapse:separate;}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0;}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0;}.input-group .form-control:focus{z-index:3;}.input-group-lg > .form-control,.input-group-lg > .input-group-addon,.input-group-lg > .input-group-btn > .btn{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-group-lg > .form-control,select.input-group-lg > .input-group-addon,select.input-group-lg > .input-group-btn > .btn{height:42px;line-height:42px;}textarea.input-group-lg > .form-control,textarea.input-group-lg > .input-group-addon,textarea.input-group-lg > .input-group-btn > .btn,select[multiple].input-group-lg > .form-control,select[multiple].input-group-lg > .input-group-addon,select[multiple].input-group-lg > .input-group-btn > .btn{height:auto;}.input-group-sm > .form-control,.input-group-sm > .input-group-addon,.input-group-sm > .input-group-btn > .btn{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-group-sm > .form-control,select.input-group-sm > .input-group-addon,select.input-group-sm > .input-group-btn > .btn{height:28px;line-height:28px;}textarea.input-group-sm > .form-control,textarea.input-group-sm > .input-group-addon,textarea.input-group-sm > .input-group-btn > .btn,select[multiple].input-group-sm > .form-control,select[multiple].input-group-sm > .input-group-addon,select[multiple].input-group-sm > .input-group-btn > .btn{height:auto;}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell;}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0;}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle;}.input-group-addon{padding:6px 12px;font-size:12px;font-weight:normal;line-height:1;color:#555555;text-align:center;background-color:#eeeeee;border:1px solid #ccc;border-radius:3px;}.input-group-addon.input-sm{padding:5px 10px;font-size:11px;border-radius:2px;}.input-group-addon.input-lg{padding:10px 16px;font-size:15px;border-radius:5px;}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0;}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group > .btn,.input-group-btn:first-child > .dropdown-toggle,.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child > .btn-group:not(:last-child) > .btn{border-bottom-right-radius:0;border-top-right-radius:0;}.input-group-addon:first-child{border-right:0;}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group > .btn,.input-group-btn:last-child > .dropdown-toggle,.input-group-btn:first-child > .btn:not(:first-child),.input-group-btn:first-child > .btn-group:not(:first-child) > .btn{border-bottom-left-radius:0;border-top-left-radius:0;}.input-group-addon:last-child{border-left:0;}.input-group-btn{position:relative;font-size:0;white-space:nowrap;}.input-group-btn > .btn{position:relative;}.input-group-btn > .btn + .btn{margin-left:-1px;}.input-group-btn > .btn:hover,.input-group-btn > .btn:focus,.input-group-btn > .btn:active{z-index:2;}.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group{margin-right:-1px;}.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group{z-index:2;margin-left:-1px;}.nav{margin-bottom:0;padding-left:0;list-style:none;}.nav > li{position:relative;display:block;}.nav > li > a{position:relative;display:block;padding:10px 15px;}.nav > li > a:hover,.nav > li > a:focus{text-decoration:none;background-color:#eeeeee;}.nav > li.disabled > a{color:#777777;}.nav > li.disabled > a:hover,.nav > li.disabled > a:focus{color:#777777;text-decoration:none;background-color:transparent;cursor:not-allowed;}.nav .open > a,.nav .open > a:hover,.nav .open > a:focus{background-color:#eeeeee;border-color:#2c3e50;}.nav .nav-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.nav > li > a > img{max-width:none;}.nav-tabs{border-bottom:1px solid #ddd;}.nav-tabs > li{float:left;margin-bottom:-1px;}.nav-tabs > li > a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0;}.nav-tabs > li > a:hover{border-color:#eeeeee #eeeeee #ddd;}.nav-tabs > li.active > a,.nav-tabs > li.active > a:hover,.nav-tabs > li.active > a:focus{color:#555555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}.nav-tabs.nav-justified{width:100%;border-bottom:0;}.nav-tabs.nav-justified > li{float:none;}.nav-tabs.nav-justified > li > a{text-align:center;margin-bottom:5px;}.nav-tabs.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto;}@media (min-width:768px){.nav-tabs.nav-justified > li{display:table-cell;width:1%;}.nav-tabs.nav-justified > li > a{margin-bottom:0;}}.nav-tabs.nav-justified > li > a{margin-right:0;border-radius:3px;}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border:1px solid #ddd;}@media (min-width:768px){.nav-tabs.nav-justified > li > a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0;}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border-bottom-color:#fff;}}.nav-pills > li{float:left;}.nav-pills > li > a{border-radius:3px;}.nav-pills > li + li{margin-left:2px;}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{color:#fff;background-color:#2c3e50;}.nav-stacked > li{float:none;}.nav-stacked > li + li{margin-top:2px;margin-left:0;}.nav-justified{width:100%;}.nav-justified > li{float:none;}.nav-justified > li > a{text-align:center;margin-bottom:5px;}.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto;}@media (min-width:768px){.nav-justified > li{display:table-cell;width:1%;}.nav-justified > li > a{margin-bottom:0;}}.nav-tabs-justified{border-bottom:0;}.nav-tabs-justified > li > a{margin-right:0;border-radius:3px;}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border:1px solid #ddd;}@media (min-width:768px){.nav-tabs-justified > li > a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0;}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border-bottom-color:#fff;}}.tab-content > .tab-pane{display:none;}.tab-content > .active{display:block;}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0;}.navbar{position:relative;min-height:50px;margin-bottom:17px;border:1px solid transparent;}@media (min-width:768px){.navbar{border-radius:3px;}}@media (min-width:768px){.navbar-header{float:left;}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch;}.navbar-collapse.in{overflow-y:auto;}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none;}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important;}.navbar-collapse.in{overflow-y:visible;}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0;}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px;}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px;}}.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:-15px;margin-left:-15px;}@media (min-width:768px){.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:0;margin-left:0;}}.navbar-static-top{z-index:1000;border-width:0 0 1px;}@media (min-width:768px){.navbar-static-top{border-radius:0;}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0;}}.navbar-fixed-top{top:0;border-width:0 0 1px;}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0;}.navbar-brand{float:left;padding:16.5px 15px;font-size:15px;line-height:17px;height:50px;}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none;}.navbar-brand > img{display:block;}@media (min-width:768px){.navbar > .container .navbar-brand,.navbar > .container-fluid .navbar-brand{margin-left:-15px;}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px;}.navbar-toggle:focus{outline:0;}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;}.navbar-toggle .icon-bar + .icon-bar{margin-top:4px;}@media (min-width:768px){.navbar-toggle{display:none;}}.navbar-nav{margin:8.25px -15px;}.navbar-nav > li > a{padding-top:10px;padding-bottom:10px;line-height:17px;}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none;}.navbar-nav .open .dropdown-menu > li > a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px;}.navbar-nav .open .dropdown-menu > li > a{line-height:17px;}.navbar-nav .open .dropdown-menu > li > a:hover,.navbar-nav .open .dropdown-menu > li > a:focus{background-image:none;}}@media (min-width:768px){.navbar-nav{float:left;margin:0;}.navbar-nav > li{float:left;}.navbar-nav > li > a{padding-top:16.5px;padding-bottom:16.5px;}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:9.5px;margin-bottom:9.5px;}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle;}.navbar-form .form-control-static{display:inline-block;}.navbar-form .input-group{display:inline-table;vertical-align:middle;}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto;}.navbar-form .input-group > .form-control{width:100%;}.navbar-form .control-label{margin-bottom:0;vertical-align:middle;}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0;}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0;}.navbar-form .has-feedback .form-control-feedback{top:0;}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px;}.navbar-form .form-group:last-child{margin-bottom:0;}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none;}}.navbar-nav > li > .dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0;}.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu{margin-bottom:0;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.navbar-btn{margin-top:9.5px;margin-bottom:9.5px;}.navbar-btn.btn-sm{margin-top:11px;margin-bottom:11px;}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px;}.navbar-text{margin-top:16.5px;margin-bottom:16.5px;}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px;}}@media (min-width:768px){.navbar-left{float:left !important;}.navbar-right{float:right !important;margin-right:-15px;}.navbar-right ~ .navbar-right{margin-right:0;}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7;}.navbar-default .navbar-brand{color:#777;}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent;}.navbar-default .navbar-text{color:#777;}.navbar-default .navbar-nav > li > a{color:#777;}.navbar-default .navbar-nav > li > a:hover,.navbar-default .navbar-nav > li > a:focus{color:#333;background-color:transparent;}.navbar-default .navbar-nav > .active > a,.navbar-default .navbar-nav > .active > a:hover,.navbar-default .navbar-nav > .active > a:focus{color:#555;background-color:#e7e7e7;}.navbar-default .navbar-nav > .disabled > a,.navbar-default .navbar-nav > .disabled > a:hover,.navbar-default .navbar-nav > .disabled > a:focus{color:#ccc;background-color:transparent;}.navbar-default .navbar-toggle{border-color:#ddd;}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd;}.navbar-default .navbar-toggle .icon-bar{background-color:#888;}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7;}.navbar-default .navbar-nav > .open > a,.navbar-default .navbar-nav > .open > a:hover,.navbar-default .navbar-nav > .open > a:focus{background-color:#e7e7e7;color:#555;}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu > li > a{color:#777;}.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus{color:#333;background-color:transparent;}.navbar-default .navbar-nav .open .dropdown-menu > .active > a,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus{color:#555;background-color:#e7e7e7;}.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#ccc;background-color:transparent;}}.navbar-default .navbar-link{color:#777;}.navbar-default .navbar-link:hover{color:#333;}.navbar-default .btn-link{color:#777;}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333;}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc;}.navbar-inverse{background-color:#222;border-color:#080808;}.navbar-inverse .navbar-brand{color:#9d9d9d;}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-text{color:#9d9d9d;}.navbar-inverse .navbar-nav > li > a{color:#9d9d9d;}.navbar-inverse .navbar-nav > li > a:hover,.navbar-inverse .navbar-nav > li > a:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-nav > .active > a,.navbar-inverse .navbar-nav > .active > a:hover,.navbar-inverse .navbar-nav > .active > a:focus{color:#fff;background-color:#080808;}.navbar-inverse .navbar-nav > .disabled > a,.navbar-inverse .navbar-nav > .disabled > a:hover,.navbar-inverse .navbar-nav > .disabled > a:focus{color:#444;background-color:transparent;}.navbar-inverse .navbar-toggle{border-color:#333;}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333;}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff;}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010;}.navbar-inverse .navbar-nav > .open > a,.navbar-inverse .navbar-nav > .open > a:hover,.navbar-inverse .navbar-nav > .open > a:focus{background-color:#080808;color:#fff;}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header{border-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a{color:#9d9d9d;}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus{color:#fff;background-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#444;background-color:transparent;}}.navbar-inverse .navbar-link{color:#9d9d9d;}.navbar-inverse .navbar-link:hover{color:#fff;}.navbar-inverse .btn-link{color:#9d9d9d;}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff;}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444;}.breadcrumb{padding:8px 15px;margin-bottom:17px;list-style:none;background-color:#f5f5f5;border-radius:3px;}.breadcrumb > li{display:inline-block;}.breadcrumb > li + li:before{content:"/\00a0";padding:0 5px;color:#ccc;}.breadcrumb > .active{color:#777777;}.pagination{display:inline-block;padding-left:0;margin:17px 0;border-radius:3px;}.pagination > li{display:inline;}.pagination > li > a,.pagination > li > span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#2c3e50;background-color:#fff;border:1px solid #ddd;margin-left:-1px;}.pagination > li:first-child > a,.pagination > li:first-child > span{margin-left:0;border-bottom-left-radius:3px;border-top-left-radius:3px;}.pagination > li:last-child > a,.pagination > li:last-child > span{border-bottom-right-radius:3px;border-top-right-radius:3px;}.pagination > li > a:hover,.pagination > li > span:hover,.pagination > li > a:focus,.pagination > li > span:focus{z-index:2;color:#11181f;background-color:#eeeeee;border-color:#ddd;}.pagination > .active > a,.pagination > .active > span,.pagination > .active > a:hover,.pagination > .active > span:hover,.pagination > .active > a:focus,.pagination > .active > span:focus{z-index:3;color:#fff;background-color:#2c3e50;border-color:#2c3e50;cursor:default;}.pagination > .disabled > span,.pagination > .disabled > span:hover,.pagination > .disabled > span:focus,.pagination > .disabled > a,.pagination > .disabled > a:hover,.pagination > .disabled > a:focus{color:#777777;background-color:#fff;border-color:#ddd;cursor:not-allowed;}.pagination-lg > li > a,.pagination-lg > li > span{padding:10px 16px;font-size:15px;line-height:1.3333333;}.pagination-lg > li:first-child > a,.pagination-lg > li:first-child > span{border-bottom-left-radius:5px;border-top-left-radius:5px;}.pagination-lg > li:last-child > a,.pagination-lg > li:last-child > span{border-bottom-right-radius:5px;border-top-right-radius:5px;}.pagination-sm > li > a,.pagination-sm > li > span{padding:5px 10px;font-size:11px;line-height:1.5;}.pagination-sm > li:first-child > a,.pagination-sm > li:first-child > span{border-bottom-left-radius:2px;border-top-left-radius:2px;}.pagination-sm > li:last-child > a,.pagination-sm > li:last-child > span{border-bottom-right-radius:2px;border-top-right-radius:2px;}.pager{padding-left:0;margin:17px 0;list-style:none;text-align:center;}.pager li{display:inline;}.pager li > a,.pager li > span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px;}.pager li > a:hover,.pager li > a:focus{text-decoration:none;background-color:#eeeeee;}.pager .next > a,.pager .next > span{float:right;}.pager .previous > a,.pager .previous > span{float:left;}.pager .disabled > a,.pager .disabled > a:hover,.pager .disabled > a:focus,.pager .disabled > span{color:#777777;background-color:#fff;cursor:not-allowed;}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer;}.label:empty{display:none;}.btn .label{position:relative;top:-1px;}.label-default{background-color:#777777;}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e;}.label-primary{background-color:#2c3e50;}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a242f;}.label-success{background-color:#18bc9c;}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76;}.label-info{background-color:#3498db;}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb;}.label-warning{background-color:#f39c12;}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a;}.label-danger{background-color:#e74c3c;}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a;}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:11px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777777;border-radius:10px;}.badge:empty{display:none;}.btn .badge{position:relative;top:-1px;}.btn-xs .badge,.btn-group-xs > .btn .badge{top:0;padding:1px 5px;}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer;}.list-group-item.active > .badge,.nav-pills > .active > a > .badge{color:#2c3e50;background-color:#fff;}.list-group-item > .badge{float:right;}.list-group-item > .badge + .badge{margin-right:5px;}.nav-pills > li > a > .badge{margin-left:3px;}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee;}.jumbotron h1,.jumbotron .h1{color:inherit;}.jumbotron p{margin-bottom:15px;font-size:18px;font-weight:200;}.jumbotron > hr{border-top-color:#d5d5d5;}.container .jumbotron,.container-fluid .jumbotron{border-radius:5px;padding-left:15px;padding-right:15px;}.jumbotron .container{max-width:100%;}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px;}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px;}.jumbotron h1,.jumbotron .h1{font-size:54px;}}.thumbnail{display:block;padding:4px;margin-bottom:17px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out;}.thumbnail > img,.thumbnail a > img{margin-left:auto;margin-right:auto;}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2c3e50;}.thumbnail .caption{padding:9px;color:#333333;}.alert{padding:15px;margin-bottom:17px;border:1px solid transparent;border-radius:3px;}.alert h4{margin-top:0;color:inherit;}.alert .alert-link{font-weight:bold;}.alert > p,.alert > ul{margin-bottom:0;}.alert > p + p{margin-top:5px;}.alert-dismissable,.alert-dismissible{padding-right:35px;}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit;}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#18bc9c;}.alert-success hr{border-top-color:#c9e2b3;}.alert-success .alert-link{color:#128f76;}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3498db;}.alert-info hr{border-top-color:#a6e1ec;}.alert-info .alert-link{color:#217dbb;}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#f39c12;}.alert-warning hr{border-top-color:#f7e1b5;}.alert-warning .alert-link{color:#c87f0a;}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#e74c3c;}.alert-danger hr{border-top-color:#e4b9c0;}.alert-danger .alert-link{color:#d62c1a;}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;}}.progress{overflow:hidden;height:17px;margin-bottom:17px;background-color:#f5f5f5;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);}.progress-bar{float:left;width:0%;height:100%;font-size:11px;line-height:17px;color:#fff;text-align:center;background-color:#2c3e50;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px;}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}.progress-bar-success{background-color:#18bc9c;}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.media{margin-top:15px;}.media:first-child{margin-top:0;}.media,.media-body{zoom:1;overflow:hidden;}.media-body{width:10000px;}.media-object{display:block;}.media-object.img-thumbnail{max-width:none;}.media-right,.media > .pull-right{padding-left:10px;}.media-left,.media > .pull-left{padding-right:10px;}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top;}.media-middle{vertical-align:middle;}.media-bottom{vertical-align:bottom;}.media-heading{margin-top:0;margin-bottom:5px;}.media-list{padding-left:0;list-style:none;}.list-group{margin-bottom:20px;padding-left:0;}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd;}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px;}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}a.list-group-item,button.list-group-item{color:#555;}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333;}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5;}button.list-group-item{width:100%;text-align:left;}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#777777;cursor:not-allowed;}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit;}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777777;}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading > small,.list-group-item.active:hover .list-group-item-heading > small,.list-group-item.active:focus .list-group-item-heading > small,.list-group-item.active .list-group-item-heading > .small,.list-group-item.active:hover .list-group-item-heading > .small,.list-group-item.active:focus .list-group-item-heading > .small{color:inherit;}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#8aa4be;}.list-group-item-success{color:#18bc9c;background-color:#dff0d8;}a.list-group-item-success,button.list-group-item-success{color:#18bc9c;}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit;}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#18bc9c;background-color:#d0e9c6;}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#18bc9c;border-color:#18bc9c;}.list-group-item-info{color:#3498db;background-color:#d9edf7;}a.list-group-item-info,button.list-group-item-info{color:#3498db;}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit;}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3498db;background-color:#c4e3f3;}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3498db;border-color:#3498db;}.list-group-item-warning{color:#f39c12;background-color:#fcf8e3;}a.list-group-item-warning,button.list-group-item-warning{color:#f39c12;}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit;}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#f39c12;background-color:#faf2cc;}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#f39c12;border-color:#f39c12;}.list-group-item-danger{color:#e74c3c;background-color:#f2dede;}a.list-group-item-danger,button.list-group-item-danger{color:#e74c3c;}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit;}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#e74c3c;background-color:#ebcccc;}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#e74c3c;border-color:#e74c3c;}.list-group-item-heading{margin-top:0;margin-bottom:5px;}.list-group-item-text{margin-bottom:0;line-height:1.3;}.panel{margin-bottom:17px;background-color:#fff;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05);}.panel-body{padding:15px;}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px;}.panel-heading > .dropdown .dropdown-toggle{color:inherit;}.panel-title{margin-top:0;margin-bottom:0;font-size:14px;color:inherit;}.panel-title > a,.panel-title > small,.panel-title > .small,.panel-title > small > a,.panel-title > .small > a{color:inherit;}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .list-group,.panel > .panel-collapse > .list-group{margin-bottom:0;}.panel > .list-group .list-group-item,.panel > .panel-collapse > .list-group .list-group-item{border-width:1px 0;border-radius:0;}.panel > .list-group:first-child .list-group-item:first-child,.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:2px;border-top-left-radius:2px;}.panel > .list-group:last-child .list-group-item:last-child,.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0;}.panel-heading + .list-group .list-group-item:first-child{border-top-width:0;}.list-group + .panel-footer{border-top-width:0;}.panel > .table,.panel > .table-responsive > .table,.panel > .panel-collapse > .table{margin-bottom:0;}.panel > .table caption,.panel > .table-responsive > .table caption,.panel > .panel-collapse > .table caption{padding-left:15px;padding-right:15px;}.panel > .table:first-child,.panel > .table-responsive:first-child > .table:first-child{border-top-right-radius:2px;border-top-left-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child{border-top-left-radius:2px;border-top-right-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child{border-top-left-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child{border-top-right-radius:2px;}.panel > .table:last-child,.panel > .table-responsive:last-child > .table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child{border-bottom-left-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child{border-bottom-right-radius:2px;}.panel > .panel-body + .table,.panel > .panel-body + .table-responsive,.panel > .table + .panel-body,.panel > .table-responsive + .panel-body{border-top:1px solid #ddd;}.panel > .table > tbody:first-child > tr:first-child th,.panel > .table > tbody:first-child > tr:first-child td{border-top:0;}.panel > .table-bordered,.panel > .table-responsive > .table-bordered{border:0;}.panel > .table-bordered > thead > tr > th:first-child,.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,.panel > .table-bordered > tbody > tr > th:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,.panel > .table-bordered > tfoot > tr > th:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,.panel > .table-bordered > thead > tr > td:first-child,.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,.panel > .table-bordered > tbody > tr > td:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,.panel > .table-bordered > tfoot > tr > td:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0;}.panel > .table-bordered > thead > tr > th:last-child,.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,.panel > .table-bordered > tbody > tr > th:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,.panel > .table-bordered > tfoot > tr > th:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,.panel > .table-bordered > thead > tr > td:last-child,.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,.panel > .table-bordered > tbody > tr > td:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,.panel > .table-bordered > tfoot > tr > td:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0;}.panel > .table-bordered > thead > tr:first-child > td,.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,.panel > .table-bordered > tbody > tr:first-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,.panel > .table-bordered > thead > tr:first-child > th,.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,.panel > .table-bordered > tbody > tr:first-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th{border-bottom:0;}.panel > .table-bordered > tbody > tr:last-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,.panel > .table-bordered > tfoot > tr:last-child > td,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,.panel > .table-bordered > tbody > tr:last-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,.panel > .table-bordered > tfoot > tr:last-child > th,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th{border-bottom:0;}.panel > .table-responsive{border:0;margin-bottom:0;}.panel-group{margin-bottom:17px;}.panel-group .panel{margin-bottom:0;border-radius:3px;}.panel-group .panel + .panel{margin-top:5px;}.panel-group .panel-heading{border-bottom:0;}.panel-group .panel-heading + .panel-collapse > .panel-body,.panel-group .panel-heading + .panel-collapse > .list-group{border-top:1px solid #ddd;}.panel-group .panel-footer{border-top:0;}.panel-group .panel-footer + .panel-collapse .panel-body{border-bottom:1px solid #ddd;}.panel-default{border-color:#ddd;}.panel-default > .panel-heading{color:#333333;background-color:#f5f5f5;border-color:#ddd;}.panel-default > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ddd;}.panel-default > .panel-heading .badge{color:#f5f5f5;background-color:#333333;}.panel-default > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ddd;}.panel-primary{border-color:#2c3e50;}.panel-primary > .panel-heading{color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.panel-primary > .panel-heading + .panel-collapse > .panel-body{border-top-color:#2c3e50;}.panel-primary > .panel-heading .badge{color:#2c3e50;background-color:#fff;}.panel-primary > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#2c3e50;}.panel-success{border-color:#d6e9c6;}.panel-success > .panel-heading{color:#18bc9c;background-color:#dff0d8;border-color:#d6e9c6;}.panel-success > .panel-heading + .panel-collapse > .panel-body{border-top-color:#d6e9c6;}.panel-success > .panel-heading .badge{color:#dff0d8;background-color:#18bc9c;}.panel-success > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#d6e9c6;}.panel-info{border-color:#bce8f1;}.panel-info > .panel-heading{color:#3498db;background-color:#d9edf7;border-color:#bce8f1;}.panel-info > .panel-heading + .panel-collapse > .panel-body{border-top-color:#bce8f1;}.panel-info > .panel-heading .badge{color:#d9edf7;background-color:#3498db;}.panel-info > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#bce8f1;}.panel-warning{border-color:#faebcc;}.panel-warning > .panel-heading{color:#f39c12;background-color:#fcf8e3;border-color:#faebcc;}.panel-warning > .panel-heading + .panel-collapse > .panel-body{border-top-color:#faebcc;}.panel-warning > .panel-heading .badge{color:#fcf8e3;background-color:#f39c12;}.panel-warning > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#faebcc;}.panel-danger{border-color:#ebccd1;}.panel-danger > .panel-heading{color:#e74c3c;background-color:#f2dede;border-color:#ebccd1;}.panel-danger > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ebccd1;}.panel-danger > .panel-heading .badge{color:#f2dede;background-color:#e74c3c;}.panel-danger > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ebccd1;}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden;}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0;}.embed-responsive-16by9{padding-bottom:56.25%;}.embed-responsive-4by3{padding-bottom:75%;}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15);}.well-lg{padding:24px;border-radius:5px;}.well-sm{padding:9px;border-radius:2px;}.close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.modal-open{overflow:hidden;}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0;}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out;}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.modal-open .modal{overflow-x:hidden;overflow-y:auto;}.modal-dialog{position:relative;width:auto;margin:10px;}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0;}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000;}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0);}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50);}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;}.modal-header .close{margin-top:-2px;}.modal-title{margin:0;line-height:1.42857143;}.modal-body{position:relative;padding:15px;}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5;}.modal-footer .btn + .btn{margin-left:5px;margin-bottom:0;}.modal-footer .btn-group .btn + .btn{margin-left:-1px;}.modal-footer .btn-block + .btn-block{margin-left:0;}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll;}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5);}.modal-sm{width:300px;}}@media (min-width:992px){.modal-lg{width:900px;}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.9;filter:alpha(opacity=90);}.tooltip.top{margin-top:-3px;padding:5px 0;}.tooltip.right{margin-left:3px;padding:0 5px;}.tooltip.bottom{margin-top:3px;padding:5px 0;}.tooltip.left{margin-left:-3px;padding:0 5px;}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px;}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000;}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000;}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);}.popover.top{margin-top:-10px;}.popover.right{margin-left:10px;}.popover.bottom{margin-top:10px;}.popover.left{margin-left:-10px;}.popover-title{margin:0;padding:8px 14px;font-size:12px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0;}.popover-content{padding:9px 14px;}.popover > .arrow,.popover > .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}.popover > .arrow{border-width:11px;}.popover > .arrow:after{border-width:10px;content:"";}.popover.top > .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px;}.popover.top > .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff;}.popover.right > .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25);}.popover.right > .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff;}.popover.bottom > .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px;}.popover.bottom > .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff;}.popover.left > .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25);}.popover.left > .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px;}.carousel{position:relative;}.carousel-inner{position:relative;overflow:hidden;width:100%;}.carousel-inner > .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner > .item > img,.carousel-inner > .item > a > img{line-height:1;}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner > .item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px;}.carousel-inner > .item.next,.carousel-inner > .item.active.right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0;}.carousel-inner > .item.prev,.carousel-inner > .item.active.left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0;}.carousel-inner > .item.next.left,.carousel-inner > .item.prev.right,.carousel-inner > .item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0;}}.carousel-inner > .active,.carousel-inner > .next,.carousel-inner > .prev{display:block;}.carousel-inner > .active{left:0;}.carousel-inner > .next,.carousel-inner > .prev{position:absolute;top:0;width:100%;}.carousel-inner > .next{left:100%;}.carousel-inner > .prev{left:-100%;}.carousel-inner > .next.left,.carousel-inner > .prev.right{left:0;}.carousel-inner > .active.left{left:-100%;}.carousel-inner > .active.right{left:100%;}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0);}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1);}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1);}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block;}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px;}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px;}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif;}.carousel-control .icon-prev:before{content:'\2039';}.carousel-control .icon-next:before{content:'\203a';}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center;}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff;}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);}.carousel-caption .btn{text-shadow:none;}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px;}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px;}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px;}.carousel-caption{left:20%;right:20%;padding-bottom:30px;}.carousel-indicators{bottom:20px;}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical > .btn-group:before,.btn-group-vertical > .btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table;}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical > .btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both;}.center-block{display:block;margin-left:auto;margin-right:auto;}.pull-right{float:right !important;}.pull-left{float:left !important;}.hide{display:none !important;}.show{display:block !important;}.invisible{visibility:hidden;}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.hidden{display:none !important;}.affix{position:fixed;}@-ms-viewport{width:device-width;}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important;}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important;}@media (max-width:767px){.visible-xs{display:block !important;}table.visible-xs{display:table !important;}tr.visible-xs{display:table-row !important;}th.visible-xs,td.visible-xs{display:table-cell !important;}}@media (max-width:767px){.visible-xs-block{display:block !important;}}@media (max-width:767px){.visible-xs-inline{display:inline !important;}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important;}table.visible-sm{display:table !important;}tr.visible-sm{display:table-row !important;}th.visible-sm,td.visible-sm{display:table-cell !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important;}table.visible-md{display:table !important;}tr.visible-md{display:table-row !important;}th.visible-md,td.visible-md{display:table-cell !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important;}}@media (min-width:1200px){.visible-lg{display:block !important;}table.visible-lg{display:table !important;}tr.visible-lg{display:table-row !important;}th.visible-lg,td.visible-lg{display:table-cell !important;}}@media (min-width:1200px){.visible-lg-block{display:block !important;}}@media (min-width:1200px){.visible-lg-inline{display:inline !important;}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important;}}@media (max-width:767px){.hidden-xs{display:none !important;}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important;}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important;}}@media (min-width:1200px){.hidden-lg{display:none !important;}}.visible-print{display:none !important;}@media print{.visible-print{display:block !important;}table.visible-print{display:table !important;}tr.visible-print{display:table-row !important;}th.visible-print,td.visible-print{display:table-cell !important;}}.visible-print-block{display:none !important;}@media print{.visible-print-block{display:block !important;}}.visible-print-inline{display:none !important;}@media print{.visible-print-inline{display:inline !important;}}.visible-print-inline-block{display:none !important;}@media print{.visible-print-inline-block{display:inline-block !important;}}@media print{.hidden-print{display:none !important;}}/*! * AdminLTE v2.3.7 * Author:Almsaeed Studio * Website:Almsaeed Studio <http://almsaeedstudio.com> * License:Open source - MIT * Please visit http://opensource.org/licenses/MIT for more information !*/ html,body{min-height:100%;}.layout-boxed html,.layout-boxed body{height:100%;}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto;}.wrapper{min-height:100%;position:relative;overflow:hidden;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative;}.layout-boxed{background:url(../img/boxed-bg.jpg) repeat fixed;}.content-wrapper,.right-side,.main-footer{-webkit-transition:-webkit-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,margin 0.3s ease-in-out;transition:transform 0.3s ease-in-out,margin 0.3s ease-in-out;margin-left:230px;z-index:820;}.layout-top-nav .content-wrapper,.layout-top-nav .right-side,.layout-top-nav .main-footer{margin-left:0;}@media (max-width:767px){.content-wrapper,.right-side,.main-footer{margin-left:0;}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .right-side,.sidebar-collapse .main-footer{margin-left:0;}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .right-side,.sidebar-open .main-footer{-webkit-transform:translate(230px,0);-ms-transform:translate(230px,0);-o-transform:translate(230px,0);transform:translate(230px,0);}}.content-wrapper,.right-side{min-height:100%;background-color:#ecf0f5;z-index:800;}.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de;}.fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed;}.fixed .main-header{top:0;right:0;left:0;}.fixed .content-wrapper,.fixed .right-side{padding-top:50px;}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px;}}.fixed.layout-boxed .wrapper{max-width:100%;}body.hold-transition .content-wrapper,body.hold-transition .right-side,body.hold-transition .main-footer,body.hold-transition .main-sidebar,body.hold-transition .left-side,body.hold-transition .main-header .navbar,body.hold-transition .main-header .logo{-webkit-transition:none;-o-transition:none;transition:none;}.content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif;}a{color:#3c8dbc;}a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2;}.page-header{margin:10px 0 20px 0;font-size:22px;}.page-header > small{color:#666;display:block;margin-top:5px;}.main-header{position:relative;max-height:100px;z-index:1030;}.main-header .navbar{-webkit-transition:margin-left 0.3s ease-in-out;-o-transition:margin-left 0.3s ease-in-out;transition:margin-left 0.3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0;}.layout-top-nav .main-header .navbar{margin-left:0;}.main-header #navbar-search-input.form-control{background:rgba(255,255,255,0.2);border-color:transparent;}.main-header #navbar-search-input.form-control:focus,.main-header #navbar-search-input.form-control:active{border-color:rgba(0,0,0,0.1);background:rgba(255,255,255,0.9);}.main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1;}.main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc;}.main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc;}.main-header .navbar-custom-menu,.main-header .navbar-right{float:right;}@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:transparent;}}@media (max-width:767px){.main-header .navbar-right{float:none;}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px;}.main-header .navbar-right > li{color:inherit;border:0;}}.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:16.5px 15px;font-family:fontAwesome;}.main-header .sidebar-toggle:before{content:"\f0c9";}.main-header .sidebar-toggle:hover{color:#fff;}.main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent;}.main-header .sidebar-toggle .icon-bar{display:none;}.main-header .navbar .nav > li.user > a > .fa,.main-header .navbar .nav > li.user > a > .glyphicon,.main-header .navbar .nav > li.user > a > .ion{margin-right:5px;}.main-header .navbar .nav > li > a > .label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9;}.main-header .logo{-webkit-transition:width 0.3s ease-in-out;-o-transition:width 0.3s ease-in-out;transition:width 0.3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden;}.main-header .logo .logo-lg{display:block;}.main-header .logo .logo-mini{display:none;}.main-header .navbar-brand{color:#fff;}.content-header{position:relative;padding:15px 15px 0 15px;}.content-header > h1{margin:0;font-size:24px;}.content-header > h1 > small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300;}.content-header > .breadcrumb{float:right;background:transparent;margin-top:0;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px;}.content-header > .breadcrumb > li > a{color:#444;text-decoration:none;display:inline-block;}.content-header > .breadcrumb > li > a > .fa,.content-header > .breadcrumb > li > a > .glyphicon,.content-header > .breadcrumb > li > a > .ion{margin-right:5px;}.content-header > .breadcrumb > li + li:before{content:'>\00a0';}@media (max-width:991px){.content-header > .breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px;}.content-header > .breadcrumb li:before{color:#97a0b3;}}.navbar-toggle{color:#fff;border:0;margin:0;padding:16.5px 15px;}@media (max-width:991px){.navbar-custom-menu .navbar-nav > li{float:left;}.navbar-custom-menu .navbar-nav{margin:0;float:left;}.navbar-custom-menu .navbar-nav > li > a{padding-top:15px;padding-bottom:15px;line-height:20px;}}@media (max-width:767px){.main-header{position:relative;}.main-header .logo,.main-header .navbar{width:100%;float:none;}.main-header .navbar{margin:0;}.main-header .navbar-custom-menu{float:right;}}@media (max-width:991px){.navbar-collapse.pull-left{float:none !important;}.navbar-collapse.pull-left + .navbar-custom-menu{display:block;position:absolute;top:0;right:40px;}}.main-sidebar,.left-side{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform 0.3s ease-in-out,width 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,width 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,width 0.3s ease-in-out;transition:transform 0.3s ease-in-out,width 0.3s ease-in-out;}@media (max-width:767px){.main-sidebar,.left-side{padding-top:100px;}}@media (max-width:767px){.main-sidebar,.left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (min-width:768px){.sidebar-collapse .main-sidebar,.sidebar-collapse .left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (max-width:767px){.sidebar-open .main-sidebar,.sidebar-open .left-side{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}}.sidebar{padding-bottom:10px;}.sidebar-form input:focus{border-color:transparent;}.user-panel{position:relative;width:100%;padding:10px;overflow:hidden;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel > .image > img{width:100%;max-width:45px;height:auto;}.user-panel > .info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px;}.user-panel > .info > p{font-weight:600;margin-bottom:9px;}.user-panel > .info > a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px;}.user-panel > .info > a > .fa,.user-panel > .info > a > .ion,.user-panel > .info > a > .glyphicon{margin-right:3px;}.sidebar-menu{list-style:none;margin:0;padding:0;}.sidebar-menu > li{position:relative;margin:0;padding:0;}.sidebar-menu > li > a{padding:12px 5px 12px 15px;display:block;}.sidebar-menu > li > a > .fa,.sidebar-menu > li > a > .glyphicon,.sidebar-menu > li > a > .ion{width:20px;}.sidebar-menu > li .label,.sidebar-menu > li .badge{margin-right:5px;}.sidebar-menu > li .badge{margin-top:3px;}.sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px;}.sidebar-menu li > a > .fa-angle-left,.sidebar-menu li > a > .pull-right-container > .fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;}.sidebar-menu li.active > a > .fa-angle-left,.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg);}.sidebar-menu li.active > .treeview-menu{display:block;}.sidebar-menu .treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px;}.sidebar-menu .treeview-menu .treeview-menu{padding-left:20px;}.sidebar-menu .treeview-menu > li{margin:0;}.sidebar-menu .treeview-menu > li > a{padding:12px 5px 12px 15px;display:block;font-size:12px;}.sidebar-menu .treeview-menu > li > a > .fa,.sidebar-menu .treeview-menu > li > a > .glyphicon,.sidebar-menu .treeview-menu > li > a > .ion{width:20px;}.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-down,.sidebar-menu .treeview-menu > li > a > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .fa-angle-down{width:auto;}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px !important;z-index:840;}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);width:50px !important;z-index:850;}.sidebar-mini.sidebar-collapse .sidebar-menu > li{position:relative;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a{margin-right:0;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span{border-top-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span{border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right),.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{display:block !important;position:absolute;width:180px;left:50px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container{float:right;width:auto!important;left:200px!important;top:10px!important;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type){display:none;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{top:44px;margin-left:0;}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span,.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none !important;-webkit-transform:translateZ(0);}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg{display:none;}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px;}}.sidebar-menu,.main-sidebar .user-panel,.sidebar-menu > li.header{white-space:nowrap;overflow:hidden;}.sidebar-menu:hover{overflow:visible;}.sidebar-form,.sidebar-menu > li.header{overflow:hidden;text-overflow:clip;}.sidebar-menu li > a{position:relative;}.sidebar-menu li > a > .pull-right-container{position:absolute;right:10px;top:50%;margin-top:-7px;}.control-sidebar-bg{position:fixed;z-index:1000;bottom:0;}.control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right 0.3s ease-in-out;-o-transition:right 0.3s ease-in-out;transition:right 0.3s ease-in-out;}.control-sidebar{position:absolute;padding-top:50px;z-index:1010;}@media (max-width:768px){.control-sidebar{padding-top:100px;}}.control-sidebar > .tab-content{padding:10px 15px;}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open + .control-sidebar-bg{right:0;}.control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0;}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px;}}.nav-tabs.control-sidebar-tabs > li:first-of-type > a,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus{border-left-width:0;}.nav-tabs.control-sidebar-tabs > li > a{border-radius:0;}.nav-tabs.control-sidebar-tabs > li > a,.nav-tabs.control-sidebar-tabs > li > a:hover{border-top:none;border-right:none;border-left:1px solid transparent;border-bottom:1px solid transparent;}.nav-tabs.control-sidebar-tabs > li > a .icon{font-size:16px;}.nav-tabs.control-sidebar-tabs > li.active > a,.nav-tabs.control-sidebar-tabs > li.active > a:hover,.nav-tabs.control-sidebar-tabs > li.active > a:focus,.nav-tabs.control-sidebar-tabs > li.active > a:active{border-top:none;border-right:none;border-bottom:none;}@media (max-width:768px){.nav-tabs.control-sidebar-tabs{display:table;}.nav-tabs.control-sidebar-tabs > li{display:table-cell;}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px;}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px;}.control-sidebar-menu{list-style:none;padding:0;margin:0 -15px;}.control-sidebar-menu > li > a{display:block;padding:10px 15px;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a > .control-sidebar-subheading{margin-top:0;}.control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px;}.control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px;}.control-sidebar-menu .menu-info > .control-sidebar-subheading{margin:0;}.control-sidebar-menu .menu-info > p{margin:0;font-size:11px;}.control-sidebar-menu .progress{margin:0;}.control-sidebar-dark{color:#b8c7ce;}.control-sidebar-dark,.control-sidebar-dark + .control-sidebar-bg{background:#222d32;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs{border-bottom:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a{background:#181f23;color:#b8c7ce;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#141a1d;border-bottom-color:#141a1d;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active{background:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover{color:#fff;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#222d32;color:#fff;}.control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff;}.control-sidebar-dark .control-sidebar-menu > li > a:hover{background:#1e282c;}.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p{color:#b8c7ce;}.control-sidebar-light{color:#5e5e5e;}.control-sidebar-light,.control-sidebar-light + .control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs{border-bottom:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a{background:#e8ecf4;color:#444;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#d2d6de;border-bottom-color:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active{background:#eff1f7;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#f9fafc;color:#111;}.control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111;}.control-sidebar-light .control-sidebar-menu{margin-left:-14px;}.control-sidebar-light .control-sidebar-menu > li > a:hover{background:#f4f4f5;}.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p{color:#5e5e5e;}.dropdown-menu{box-shadow:none;border-color:#eee;}.dropdown-menu > li > a{}.dropdown-menu > li > a > .glyphicon,.dropdown-menu > li > a > .fa,.dropdown-menu > li > a > .ion{margin-right:10px;}.dropdown-menu > li > a:hover{background-color:#e1e3e9;color:#333;}.dropdown-menu > .divider{background-color:#eee;}.navbar-nav > .notifications-menu > .dropdown-menu,.navbar-nav > .messages-menu > .dropdown-menu,.navbar-nav > .tasks-menu > .dropdown-menu{width:280px;padding:0 0 0 0;margin:0;top:100%;}.navbar-nav > .notifications-menu > .dropdown-menu > li,.navbar-nav > .messages-menu > .dropdown-menu > li,.navbar-nav > .tasks-menu > .dropdown-menu > li{position:relative;}.navbar-nav > .notifications-menu > .dropdown-menu > li.header,.navbar-nav > .messages-menu > .dropdown-menu > li.header,.navbar-nav > .tasks-menu > .dropdown-menu > li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px;}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444 !important;text-align:center;}@media (max-width:991px){.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{background:#fff !important;color:#444 !important;}}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover{text-decoration:none;font-weight:normal;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,.navbar-nav > .messages-menu > .dropdown-menu > li .menu,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover{background:#f4f4f4;text-decoration:none;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a{color:#444444;overflow:hidden;text-overflow:ellipsis;padding:10px;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion{width:20px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a{margin:0;padding:10px 10px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img{margin:auto 10px auto auto;width:40px;height:40px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small{color:#999999;font-size:10px;position:absolute;top:0;right:0;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p{margin:0 0 0 45px;font-size:12px;color:#888888;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{padding:10px;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress{padding:0;margin:0;}.navbar-nav > .user-menu > .dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width:0;width:280px;}.navbar-nav > .user-menu > .dropdown-menu,.navbar-nav > .user-menu > .dropdown-menu > .user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px;}.navbar-nav > .user-menu > .dropdown-menu > li.user-header{height:175px;padding:10px;text-align:center;}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img{z-index:5;height:90px;width:90px;border:3px solid;border-color:transparent;border-color:rgba(255,255,255,0.2);}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);font-size:17px;margin-top:10px;}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small{display:block;font-size:12px;}.navbar-nav > .user-menu > .dropdown-menu > .user-body{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body a{color:#444 !important;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-body a{background:#fff !important;color:#444 !important;}}.navbar-nav > .user-menu > .dropdown-menu > .user-footer{background-color:#f9f9f9;padding:10px;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default{color:#666666;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover{background-color:#f9f9f9;}}.navbar-nav > .user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px;}@media (max-width:767px){.navbar-nav > .user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px;}}.open:not(.dropup) > .animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX 0.7s both;-o-animation:flipInX 0.7s both;animation:flipInX 0.7s both;}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1,0,0,90deg);transition-timing-function:ease-in;opacity:0;}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);transition-timing-function:ease-in;}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{transform:perspective(400px);}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;opacity:0;}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{-webkit-transform:perspective(400px);}}.navbar-custom-menu > .navbar-nav > li{position:relative;}.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{position:absolute;right:0;left:auto;}@media (max-width:991px){.navbar-custom-menu > .navbar-nav{float:right;}.navbar-custom-menu > .navbar-nav > li{position:static;}.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff;}}.dropdown-submenu{position:relative;}.dropdown-submenu > .dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:3px 0 3px 3px;}.dropdown-submenu:hover > .dropdown-menu{display:block;}.dropdown-submenu:hover > a:after{border-left-color:#fff;}.dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;}.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left > .dropdown-menu{left:-100%;margin-left:10px;border-radius:3px 0 3px 3px;}.form-control{border-radius:0;box-shadow:none;border-color:#d2d6de;-webkit-appearance:none;-moz-appearance:none;appearance:none;}.form-control:focus{border-color:#3c8dbc;box-shadow:none;}.form-control::-moz-placeholder,.form-control:-ms-input-placeholder,.form-control::-webkit-input-placeholder{color:#bbb;opacity:1;}.form-control .btn{border-radius:0;}select.form-control{-webkit-appearance:none;-webkit-border-radius:0px;background-position:right 50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);}.form-group.has-success label{color:#18bc9c;}.form-group.has-success .form-control,.form-group.has-success .input-group-addon{border-color:#18bc9c;box-shadow:none;}.form-group.has-success .help-block{color:#18bc9c;}.form-group.has-warning label{color:#f39c12;}.form-group.has-warning .form-control,.form-group.has-warning .input-group-addon{border-color:#f39c12;box-shadow:none;}.form-group.has-warning .help-block{color:#f39c12;}.form-group.has-error label{color:#e74c3c;}.form-group.has-error .form-control,.form-group.has-error .input-group-addon{border-color:#e74c3c;box-shadow:none;}.form-group.has-error .help-block{color:#e74c3c;}.input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff;}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0;}.icheck > label{padding-left:0;}.form-control-feedback.fa{line-height:31px;}.input-lg + .form-control-feedback.fa,.input-group-lg + .form-control-feedback.fa,.form-group-lg .form-control + .form-control-feedback.fa{line-height:42px;}.input-sm + .form-control-feedback.fa,.input-group-sm + .form-control-feedback.fa,.form-group-sm .form-control + .form-control-feedback.fa{line-height:28px;}.progress,.progress > .progress-bar{-webkit-box-shadow:none;box-shadow:none;}.progress,.progress > .progress-bar,.progress .progress-bar,.progress > .progress-bar .progress-bar{border-radius:1px;}.progress.sm,.progress-sm{height:10px;}.progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px;}.progress.xs,.progress-xs{height:7px;}.progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px;}.progress.xxs,.progress-xxs{height:3px;}.progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px;}.progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px;}.progress.vertical > .progress-bar{width:100%;position:absolute;bottom:0;}.progress.vertical.sm,.progress.vertical.progress-sm{width:20px;}.progress.vertical.xs,.progress.vertical.progress-xs{width:10px;}.progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px;}.progress-group .progress-text{font-weight:600;}.progress-group .progress-number{float:right;}.table tr > td .progress{margin:0;}.progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc;}.progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-green,.progress-bar-success{background-color:#18bc9c;}.progress-striped .progress-bar-green,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-aqua,.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-yellow,.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-red,.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.small-box > .inner{padding:10px;}.small-box > .small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none;}.small-box > .small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15);}.small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0;}.small-box p{font-size:15px;}.small-box p > small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px;}.small-box h3,.small-box p{z-index:5;}.small-box .icon{-webkit-transition:all 0.3s linear;-o-transition:all 0.3s linear;transition:all 0.3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15);}.small-box:hover{text-decoration:none;color:#f9f9f9;}.small-box:hover .icon{font-size:95px;}@media (max-width:767px){.small-box{text-align:center;}.small-box .icon{display:none;}.small-box p{font-size:12px;}}.box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.box.box-primary{border-top-color:#3c8dbc;}.box.box-info{border-top-color:#3498db;}.box.box-danger{border-top-color:#e74c3c;}.box.box-warning{border-top-color:#f39c12;}.box.box-success{border-top-color:#18bc9c;}.box.box-default{border-top-color:#d2d6de;}.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none;}.box .nav-stacked > li{border-bottom:1px solid #f4f4f4;margin:0;}.box .nav-stacked > li:last-of-type{border-bottom:none;}.box.height-control .box-body{max-height:300px;overflow:auto;}.box .border-right{border-right:1px solid #f4f4f4;}.box .border-left{border-left:1px solid #f4f4f4;}.box.box-solid{border-top:0;}.box.box-solid > .box-header .btn.btn-default{background:transparent;}.box.box-solid > .box-header .btn:hover,.box.box-solid > .box-header a:hover{background:rgba(0,0,0,0.1);}.box.box-solid.box-default{border:1px solid #d2d6de;}.box.box-solid.box-default > .box-header{color:#444;background:#d2d6de;background-color:#d2d6de;}.box.box-solid.box-default > .box-header a,.box.box-solid.box-default > .box-header .btn{color:#444;}.box.box-solid.box-primary{border:1px solid #3c8dbc;}.box.box-solid.box-primary > .box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc;}.box.box-solid.box-primary > .box-header a,.box.box-solid.box-primary > .box-header .btn{color:#fff;}.box.box-solid.box-info{border:1px solid #3498db;}.box.box-solid.box-info > .box-header{color:#fff;background:#3498db;background-color:#3498db;}.box.box-solid.box-info > .box-header a,.box.box-solid.box-info > .box-header .btn{color:#fff;}.box.box-solid.box-danger{border:1px solid #e74c3c;}.box.box-solid.box-danger > .box-header{color:#fff;background:#e74c3c;background-color:#e74c3c;}.box.box-solid.box-danger > .box-header a,.box.box-solid.box-danger > .box-header .btn{color:#fff;}.box.box-solid.box-warning{border:1px solid #f39c12;}.box.box-solid.box-warning > .box-header{color:#fff;background:#f39c12;background-color:#f39c12;}.box.box-solid.box-warning > .box-header a,.box.box-solid.box-warning > .box-header .btn{color:#fff;}.box.box-solid.box-success{border:1px solid #18bc9c;}.box.box-solid.box-success > .box-header{color:#fff;background:#18bc9c;background-color:#18bc9c;}.box.box-solid.box-success > .box-header a,.box.box-solid.box-success > .box-header .btn{color:#fff;}.box.box-solid > .box-header > .box-tools .btn{border:0;box-shadow:none;}.box.box-solid[class*='bg'] > .box-header{color:#fff;}.box .box-group > .box{margin-bottom:5px;}.box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:0.3em;}.box > .overlay,.overlay-wrapper > .overlay,.box > .loading-img,.overlay-wrapper > .loading-img{position:absolute;top:0;left:0;width:100%;height:100%;}.box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px;}.box .overlay > .fa,.overlay-wrapper .overlay > .fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px;}.box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5);}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header{color:#444;display:block;padding:10px;position:relative;}.box-header.with-border{border-bottom:1px solid #f4f4f4;}.collapsed-box .box-header.with-border{border-bottom:none;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion{margin-right:5px;}.box-header > .box-tools{position:absolute;right:10px;top:5px;}.box-header > .box-tools [data-toggle="tooltip"]{position:relative;}.box-header > .box-tools.pull-right .dropdown-menu{right:0;left:auto;}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3;}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84;}.btn-box-tool.btn:active{box-shadow:none;}.box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px;}.no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px;}.box-body > .table{margin-bottom:0;}.box-body .fc{margin-top:5px;}.box-body .full-width-chart{margin:-19px;}.box-body.no-padding .full-width-chart{margin:-9px;}.box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px;}.box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0;}.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff;}.chart-legend{margin:10px 0;}@media (max-width:991px){.chart-legend > li{float:left;margin-right:10px;}}.box-comments{background:#f7f7f7;}.box-comments .box-comment{padding:8px 0;border-bottom:1px solid #eee;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:last-of-type{border-bottom:0;}.box-comments .box-comment:first-of-type{padding-top:0;}.box-comments .box-comment img{float:left;}.box-comments .comment-text{margin-left:40px;color:#555;}.box-comments .username{color:#444;display:block;font-weight:600;}.box-comments .text-muted{font-weight:400;font-size:12px;}.todo-list{margin:0;padding:0;list-style:none;overflow:auto;}.todo-list > li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444;}.todo-list > li:last-of-type{margin-bottom:0;}.todo-list > li > input[type='checkbox']{margin:0 10px 0 5px;}.todo-list > li .text{display:inline-block;margin-left:5px;font-weight:600;}.todo-list > li .label{margin-left:10px;font-size:9px;}.todo-list > li .tools{display:none;float:right;color:#e74c3c;}.todo-list > li .tools > .fa,.todo-list > li .tools > .glyphicon,.todo-list > li .tools > .ion{margin-right:5px;cursor:pointer;}.todo-list > li:hover .tools{display:inline-block;}.todo-list > li.done{color:#999;}.todo-list > li.done .text{text-decoration:line-through;font-weight:500;}.todo-list > li.done .label{background:#d2d6de !important;}.todo-list .danger{border-left-color:#e74c3c;}.todo-list .warning{border-left-color:#f39c12;}.todo-list .info{border-left-color:#3498db;}.todo-list .success{border-left-color:#18bc9c;}.todo-list .primary{border-left-color:#3c8dbc;}.todo-list .handle{display:inline-block;cursor:move;margin:0 5px;}.chat{padding:5px 20px 5px 10px;}.chat .item{margin-bottom:10px;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item > img{width:40px;height:40px;border:2px solid transparent;border-radius:50%;}.chat .item > .online{border:2px solid #18bc9c;}.chat .item > .offline{border:2px solid #e74c3c;}.chat .item > .message{margin-left:55px;margin-top:-40px;}.chat .item > .message > .name{display:block;font-weight:600;}.chat .item > .attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px;}.chat .item > .attachment > h4{margin:0 0 5px 0;font-weight:600;font-size:14px;}.chat .item > .attachment > p,.chat .item > .attachment > .filename{font-weight:600;font-size:13px;font-style:italic;margin:0;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.box-input{max-width:200px;}.modal .panel-body{color:#444;}.info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px;}.info-box small{font-size:14px;}.info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px;}.info-box .progress,.info-box .progress .progress-bar{border-radius:0;}.info-box .progress .progress-bar{background:#fff;}.info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2);}.info-box-icon > img{max-width:100%;}.info-box-content{padding:5px 10px;margin-left:90px;}.info-box-number{display:block;font-weight:bold;font-size:18px;}.progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.info-box-text{text-transform:uppercase;}.info-box-more{display:block;}.progress-description{margin:0;}.timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none;}.timeline:before{content:'';position:absolute;top:0;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px;}.timeline > li{position:relative;margin-right:10px;margin-bottom:15px;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li > .timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative;}.timeline > li > .timeline-item > .time{color:#999;float:right;padding:10px;font-size:12px;}.timeline > li > .timeline-item > .timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1;}.timeline > li > .timeline-item > .timeline-header > a{font-weight:600;}.timeline > li > .timeline-item > .timeline-body,.timeline > li > .timeline-item > .timeline-footer{padding:10px;}.timeline > li > .fa,.timeline > li > .glyphicon,.timeline > li > .ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0;}.timeline > .time-label > span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px;}.timeline-inverse > li > .timeline-item{background:#f0f0f0;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;}.timeline-inverse > li > .timeline-item > .timeline-header{border-bottom-color:#ddd;}.btn{-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent;}.btn.uppercase{text-transform:uppercase;}.btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px;}.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn:focus{outline:none;}.btn.btn-file{position:relative;overflow:hidden;}.btn.btn-file > input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block;}.btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd;}.btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7;}.btn-outline{border:1px solid #fff;background:transparent;color:#fff;}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7);}.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2);}.btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px;}.btn-app > .fa,.btn-app > .glyphicon,.btn-app > .ion{font-size:20px;display:block;}.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa;}.btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-app > .badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400;}.callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee;}.callout a{color:#fff;text-decoration:underline;}.callout a:hover{color:#eee;}.callout h4{margin-top:0;font-weight:600;}.callout p:last-child{margin-bottom:0;}.callout code,.callout .highlight{background-color:#fff;}.callout.callout-danger{border-color:#d62c1a;}.callout.callout-warning{border-color:#c87f0a;}.callout.callout-info{border-color:#217dbb;}.callout.callout-success{border-color:#128f76;}.alert{border-radius:3px;}.alert h4{font-weight:600;}.alert .icon{margin-right:10px;}.alert .close{color:#000;opacity:0.2;filter:alpha(opacity=20);}.alert .close:hover{opacity:0.5;filter:alpha(opacity=50);}.alert a{color:#fff;text-decoration:underline;}.alert-success{border-color:#15a589;}.alert-danger,.alert-error{border-color:#e43725;}.alert-warning{border-color:#e08e0b;}.alert-info{border-color:#258cd1;}.nav > li > a:hover,.nav > li > a:active,.nav > li > a:focus{color:#444;background:#f7f7f7;}.nav-pills > li > a{border-radius:0;border-top:3px solid transparent;color:#444;}.nav-pills > li > a > .fa,.nav-pills > li > a > .glyphicon,.nav-pills > li > a > .ion{margin-right:5px;}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{border-top-color:#3c8dbc;}.nav-pills > li.active > a{font-weight:600;}.nav-stacked > li > a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444;}.nav-stacked > li.active > a,.nav-stacked > li.active > a:hover{background:transparent;color:#444;border-top:0;border-left-color:#3c8dbc;}.nav-stacked > li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase;}.nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;}.nav-tabs-custom > .nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px;}.nav-tabs-custom > .nav-tabs > li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px;}.nav-tabs-custom > .nav-tabs > li > a{color:#444;border-radius:0;}.nav-tabs-custom > .nav-tabs > li > a.text-muted{color:#999;}.nav-tabs-custom > .nav-tabs > li > a,.nav-tabs-custom > .nav-tabs > li > a:hover{background:transparent;margin:0;}.nav-tabs-custom > .nav-tabs > li > a:hover{color:#999;}.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active{border-color:transparent;}.nav-tabs-custom > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom > .nav-tabs > li.active > a,.nav-tabs-custom > .nav-tabs > li.active:hover > a{background-color:#fff;color:#444;}.nav-tabs-custom > .nav-tabs > li.active > a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4;}.nav-tabs-custom > .nav-tabs > li:first-of-type{margin-left:0;}.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a{border-left-color:transparent;}.nav-tabs-custom > .nav-tabs.pull-right{float:none !important;}.nav-tabs-custom > .nav-tabs.pull-right > li{float:right;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type{margin-right:0;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a{border-left-width:1px;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a{border-left-color:#f4f4f4;border-right-color:transparent;}.nav-tabs-custom > .nav-tabs > li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444;}.nav-tabs-custom > .nav-tabs > li.header > .fa,.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,.nav-tabs-custom > .nav-tabs > li.header > .ion{margin-right:5px;}.nav-tabs-custom > .tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.nav-tabs-custom .dropdown.open > a:active,.nav-tabs-custom .dropdown.open > a:focus{background:transparent;color:#999;}.nav-tabs-custom.tab-primary > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom.tab-info > .nav-tabs > li.active{border-top-color:#3498db;}.nav-tabs-custom.tab-danger > .nav-tabs > li.active{border-top-color:#e74c3c;}.nav-tabs-custom.tab-warning > .nav-tabs > li.active{border-top-color:#f39c12;}.nav-tabs-custom.tab-success > .nav-tabs > li.active{border-top-color:#18bc9c;}.nav-tabs-custom.tab-default > .nav-tabs > li.active{border-top-color:#d2d6de;}.pagination > li > a{background:#fafafa;color:#666;}.pagination.pagination-flat > li > a{border-radius:0 !important;}.products-list{list-style:none;margin:0;padding:0;}.products-list > .item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list .product-img{float:left;}.products-list .product-img img{width:50px;height:50px;}.products-list .product-info{margin-left:60px;}.products-list .product-title{font-weight:600;}.products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.product-list-in-box > .item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4;}.product-list-in-box > .item:last-of-type{border-bottom-width:0;}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{border-top:1px solid #f4f4f4;}.table > thead > tr > th{border-bottom:2px solid #f4f4f4;}.table tr td .progress{margin-top:5px;}.table-bordered{border:1px solid #f4f4f4;}.table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #f4f4f4;}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px;}.table.no-border,.table.no-border td,.table.no-border th{border:0;}table.text-center,table.text-center td,table.text-center th{text-align:center;}.table.align th{text-align:left;}.table.align td{text-align:right;}.direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0;}.direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-messages{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);padding:10px;height:250px;overflow:auto;}.direct-chat-msg,.direct-chat-text{display:block;}.direct-chat-msg{margin-bottom:10px;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform 0.5s ease-in-out;-moz-transition:-moz-transform 0.5s ease-in-out;-o-transition:-o-transform 0.5s ease-in-out;transition:transform 0.5s ease-in-out;}.direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444;}.direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none;}.direct-chat-text:after{border-width:5px;margin-top:-5px;}.direct-chat-text:before{border-width:6px;margin-top:-6px;}.right .direct-chat-text{margin-right:50px;margin-left:0;}.right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de;}.direct-chat-img{border-radius:50%;float:left;width:40px;height:40px;}.right .direct-chat-img{float:right;}.direct-chat-info{display:block;margin-bottom:2px;font-size:12px;}.direct-chat-name{font-weight:600;}.direct-chat-timestamp{color:#999;}.direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-contacts{-webkit-transform:translate(101%,0);-ms-transform:translate(101%,0);-o-transform:translate(101%,0);transform:translate(101%,0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto;}.contacts-list > li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:last-of-type{border-bottom:none;}.contacts-list-img{border-radius:50%;width:40px;float:left;}.contacts-list-info{margin-left:45px;color:#fff;}.contacts-list-name,.contacts-list-status{display:block;}.contacts-list-name{font-weight:600;}.contacts-list-status{font-size:12px;}.contacts-list-date{color:#aaa;font-weight:normal;}.contacts-list-msg{color:#999;}.direct-chat-danger .right > .direct-chat-text{background:#e74c3c;border-color:#e74c3c;color:#fff;}.direct-chat-danger .right > .direct-chat-text:after,.direct-chat-danger .right > .direct-chat-text:before{border-left-color:#e74c3c;}.direct-chat-primary .right > .direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff;}.direct-chat-primary .right > .direct-chat-text:after,.direct-chat-primary .right > .direct-chat-text:before{border-left-color:#3c8dbc;}.direct-chat-warning .right > .direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff;}.direct-chat-warning .right > .direct-chat-text:after,.direct-chat-warning .right > .direct-chat-text:before{border-left-color:#f39c12;}.direct-chat-info .right > .direct-chat-text{background:#3498db;border-color:#3498db;color:#fff;}.direct-chat-info .right > .direct-chat-text:after,.direct-chat-info .right > .direct-chat-text:before{border-left-color:#3498db;}.direct-chat-success .right > .direct-chat-text{background:#18bc9c;border-color:#18bc9c;color:#fff;}.direct-chat-success .right > .direct-chat-text:after,.direct-chat-success .right > .direct-chat-text:before{border-left-color:#18bc9c;}.users-list > li{width:25%;float:left;padding:10px;text-align:center;}.users-list > li img{border-radius:50%;max-width:100%;height:auto;}.users-list > li > a:hover,.users-list > li > a:hover .users-list-name{color:#999;}.users-list-name,.users-list-date{display:block;}.users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.users-list-date{color:#999;font-size:12px;}.carousel-control.left,.carousel-control.right{background-image:none;}.carousel-control > .fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px;}.modal{background:rgba(0,0,0,0.3);}.modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);border:0;}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);}}.modal-header{border-bottom-color:#f4f4f4;}.modal-footer{border-top-color:#f4f4f4;}.modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095;}.modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a;}.modal-info .modal-header,.modal-info .modal-footer{border-color:#217dbb;}.modal-success .modal-header,.modal-success .modal-footer{border-color:#128f76;}.modal-danger .modal-header,.modal-danger .modal-footer{border-color:#d62c1a;}.box-widget{border:none;position:relative;}.widget-user .widget-user-header{padding:20px;height:120px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user .widget-user-username{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,0.2);}.widget-user .widget-user-desc{margin-top:0;}.widget-user .widget-user-image{position:absolute;top:65px;left:50%;margin-left:-45px;}.widget-user .widget-user-image > img{width:90px;height:auto;border:3px solid #fff;}.widget-user .box-footer{padding-top:30px;}.widget-user-2 .widget-user-header{padding:20px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user-2 .widget-user-username{margin-top:5px;margin-bottom:5px;font-size:25px;font-weight:300;}.widget-user-2 .widget-user-desc{margin-top:0;}.widget-user-2 .widget-user-username,.widget-user-2 .widget-user-desc{margin-left:75px;}.widget-user-2 .widget-user-image > img{width:65px;height:auto;float:left;}.close,.mailbox-attachment-close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.clearfix:before,.clearfix:after,.content:before,.content:after{content:" ";display:table;}.clearfix:after,.content:after{clear:both;}.center-block{display:block;margin-left:auto;margin-right:auto;}.pull-right{float:right !important;}.pull-left{float:left !important;}.hide{display:none !important;}.show{display:block !important;}.invisible{visibility:hidden;}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.hidden{display:none !important;}.affix{position:fixed;}.mailbox-messages > .table{margin:0;}.mailbox-controls{padding:5px;}.mailbox-controls.with-border{border-bottom:1px solid #f4f4f4;}.mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px;}.mailbox-read-info h3{font-size:20px;margin:0;}.mailbox-read-info h5{margin:0;padding:5px 0 0 0;}.mailbox-read-time{color:#999;font-size:13px;}.mailbox-read-message{padding:10px;}.mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px;}.mailbox-attachment-name{font-weight:bold;color:#666;}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block;}.mailbox-attachment-info{padding:10px;background:#f4f4f4;}.mailbox-attachment-size{color:#999;font-size:12px;}.mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px;}.mailbox-attachment-icon.has-img{padding:0;}.mailbox-attachment-icon.has-img > img{max-width:100%;height:auto;}.lockscreen{background:#d2d6de;}.lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300;}.lockscreen-logo a{color:#444;}.lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%;}.lockscreen .lockscreen-name{text-align:center;font-weight:600;}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px;}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10;}.lockscreen-image > img{border-radius:50%;width:70px;height:70px;}.lockscreen-credentials{margin-left:70px;}.lockscreen-credentials .form-control{border:0;}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px;}.lockscreen-footer{margin-top:10px;}.login-logo,.register-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300;}.login-logo a,.register-logo a{color:#444;}.login-page,.register-page{background:#d2d6de;}.login-box,.register-box{width:360px;margin:7% auto;}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px;}}.login-box-body,.register-box-body{background:#fff;padding:20px;border-top:0;color:#666;}.login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777;}.login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px;}.social-auth-links{margin:10px 0;}.error-page{width:600px;margin:20px auto 0 auto;}@media (max-width:991px){.error-page{width:100%;}}.error-page > .headline{float:left;font-size:100px;font-weight:300;}@media (max-width:991px){.error-page > .headline{float:none;text-align:center;}}.error-page > .error-content{margin-left:190px;display:block;}@media (max-width:991px){.error-page > .error-content{margin-left:0;}}.error-page > .error-content > h3{font-weight:300;font-size:25px;}@media (max-width:991px){.error-page > .error-content > h3{text-align:center;}}.invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px;}.invoice-title{margin-top:0;}.profile-user-img{margin:0 auto;width:100px;padding:3px;border:3px solid #d2d6de;}.profile-username{font-size:21px;margin-top:5px;}.post{border-bottom:1px solid #d2d6de;margin-bottom:15px;padding-bottom:15px;color:#666;}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0;}.post .user-block{margin-bottom:15px;}/* * Social Buttons for Bootstrap * * Copyright 2013-2015 Panayiotis Lipiridis * Licensed under the MIT License * * https://github.com/lipis/bootstrap-social */ .btn-social{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.btn-social > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social.btn-lg{padding-left:57px;}.btn-social.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social.btn-sm{padding-left:36px;}.btn-social.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social.btn-xs{padding-left:29px;}.btn-social.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:31px;width:31px;padding:0;}.btn-social-icon > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social-icon.btn-lg{padding-left:57px;}.btn-social-icon.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social-icon.btn-sm{padding-left:36px;}.btn-social-icon.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social-icon.btn-xs{padding-left:29px;}.btn-social-icon.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon > :first-child{border:none;text-align:center;width:100%;}.btn-social-icon.btn-lg{height:41px;width:41px;padding-left:0;padding-right:0;}.btn-social-icon.btn-sm{height:28px;width:28px;padding-left:0;padding-right:0;}.btn-social-icon.btn-xs{height:21px;width:21px;padding-left:0;padding-right:0;}.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active:hover,.btn-adn.active:hover,.open > .dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open > .dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open > .dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{background-image:none;}.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn .badge{color:#d87a68;background-color:#fff;}.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open > .dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open > .dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open > .dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{background-image:none;}.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket .badge{color:#205081;background-color:#fff;}.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open > .dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open > .dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open > .dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{background-image:none;}.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox .badge{color:#1087dd;background-color:#fff;}.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active:hover,.btn-facebook.active:hover,.open > .dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open > .dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open > .dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{background-image:none;}.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook .badge{color:#3b5998;background-color:#fff;}.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active:hover,.btn-flickr.active:hover,.open > .dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open > .dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open > .dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{background-image:none;}.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr .badge{color:#ff0084;background-color:#fff;}.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open > .dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open > .dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open > .dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{background-image:none;}.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare .badge{color:#f94877;background-color:#fff;}.btn-github{color:#fff;background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active:hover,.btn-github.active:hover,.open > .dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open > .dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open > .dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{background-image:none;}.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github .badge{color:#444444;background-color:#fff;}.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active:hover,.btn-google.active:hover,.open > .dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open > .dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open > .dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{background-image:none;}.btn-google.disabled,.btn-google[disabled],fieldset[disabled] .btn-google,.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus,.btn-google.disabled:active,.btn-google[disabled]:active,fieldset[disabled] .btn-google:active,.btn-google.disabled.active,.btn-google[disabled].active,fieldset[disabled] .btn-google.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google .badge{color:#dd4b39;background-color:#fff;}.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active:hover,.btn-instagram.active:hover,.open > .dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open > .dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open > .dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{background-image:none;}.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram .badge{color:#3f729b;background-color:#fff;}.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open > .dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open > .dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open > .dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{background-image:none;}.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin .badge{color:#007bb6;background-color:#fff;}.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open > .dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open > .dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open > .dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{background-image:none;}.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft .badge{color:#2672ec;background-color:#fff;}.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active:hover,.btn-openid.active:hover,.open > .dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open > .dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open > .dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{background-image:none;}.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid .badge{color:#f7931e;background-color:#fff;}.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open > .dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open > .dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open > .dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{background-image:none;}.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest .badge{color:#cb2027;background-color:#fff;}.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active:hover,.btn-reddit.active:hover,.open > .dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open > .dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open > .dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{background-image:none;}.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit .badge{color:#eff7ff;background-color:#000;}.btn-soundcloud{color:#fff;background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:hover{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open > .dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open > .dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open > .dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{background-image:none;}.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud .badge{color:#ff5500;background-color:#fff;}.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open > .dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open > .dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open > .dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{background-image:none;}.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr .badge{color:#2c4762;background-color:#fff;}.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active:hover,.btn-twitter.active:hover,.open > .dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open > .dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open > .dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{background-image:none;}.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter .badge{color:#55acee;background-color:#fff;}.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open > .dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open > .dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open > .dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{background-image:none;}.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo .badge{color:#1ab7ea;background-color:#fff;}.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active:hover,.btn-vk.active:hover,.open > .dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open > .dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open > .dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{background-image:none;}.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk .badge{color:#587ea3;background-color:#fff;}.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open > .dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open > .dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open > .dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{background-image:none;}.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo .badge{color:#720e9e;background-color:#fff;}.fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd;}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9;}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px;}.fc-header-right{padding-right:10px;}.fc-header-left{padding-left:10px;}.fc-widget-header{background:#fafafa;}.fc-grid{width:100%;border:0;}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0;}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0;}.fc-toolbar{padding:10px;margin:0;}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px;}.fc-color-picker{list-style:none;margin:0;padding:0;}.fc-color-picker > li{float:left;font-size:30px;margin-right:5px;line-height:30px;}.fc-color-picker > li .fa{-webkit-transition:-webkit-transform linear 0.3s;-moz-transition:-moz-transform linear 0.3s;-o-transition:-o-transform linear 0.3s;transition:transform linear 0.3s;}.fc-color-picker > li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg);}#add-new-event{-webkit-transition:all linear 0.3s;-o-transition:all linear 0.3s;transition:all linear 0.3s;}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move;}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2);}.select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none;}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px;}.select2-container--default.select2-container--open{border-color:#3c8dbc;}.select2-dropdown{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white;}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px;}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px;}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px;}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0;}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de;}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #3c8dbc;}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999;}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd;}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444;}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc;}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de;}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7);}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff;}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px;}.pad{padding:10px;}.margin{margin:10px;}.margin-bottom{margin-bottom:20px;}.margin-bottom-none{margin-bottom:0;}.margin-r-5{margin-right:5px;}.inline{display:inline;}.description-block{display:block;margin:10px 0;text-align:center;}.description-block.margin-bottom{margin-bottom:25px;}.description-block > .description-header{margin:0;padding:0;font-weight:600;font-size:16px;}.description-block > .description-text{text-transform:uppercase;}.bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important;}.bg-gray{color:#000;background-color:#d2d6de !important;}.bg-gray-light{background-color:#f7f7f7;}.bg-black{background-color:#111 !important;}.bg-red,.callout.callout-danger,.alert-danger,.alert-error,.modal-danger .modal-body{background-color:#e74c3c !important;}.bg-yellow,.callout.callout-warning,.alert-warning,.modal-warning .modal-body{background-color:#f39c12 !important;}.bg-aqua,.callout.callout-info,.alert-info,.modal-info .modal-body{background-color:#3498db !important;}.bg-blue{background-color:#0073b7 !important;}.bg-light-blue,.modal-primary .modal-body{background-color:#3c8dbc !important;}.bg-green,.callout.callout-success,.alert-success,.modal-success .modal-body{background-color:#18bc9c !important;}.bg-navy{background-color:#001F3F !important;}.bg-teal{background-color:#39CCCC !important;}.bg-olive{background-color:#3D9970 !important;}.bg-lime{background-color:#01FF70 !important;}.bg-orange{background-color:#FF851B !important;}.bg-fuchsia{background-color:#F012BE !important;}.bg-purple{background-color:#605ca8 !important;}.bg-maroon{background-color:#D81B60 !important;}.bg-gray-active{color:#000;background-color:#b5bbc8 !important;}.bg-black-active{background-color:#000000 !important;}.bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#e43321 !important;}.bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important;}.bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#2489cc !important;}.bg-blue-active{background-color:#005384 !important;}.bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important;}.bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#15a589 !important;}.bg-navy-active{background-color:#001a35 !important;}.bg-teal-active{background-color:#30bbbb !important;}.bg-olive-active{background-color:#368763 !important;}.bg-lime-active{background-color:#00e765 !important;}.bg-orange-active{background-color:#ff7701 !important;}.bg-fuchsia-active{background-color:#db0ead !important;}.bg-purple-active{background-color:#555299 !important;}.bg-maroon-active{background-color:#ca195a !important;}[class^="bg-"].disabled{opacity:0.65;filter:alpha(opacity=65);}.text-red{color:#e74c3c !important;}.text-yellow{color:#f39c12 !important;}.text-aqua{color:#3498db !important;}.text-blue{color:#0073b7 !important;}.text-black{color:#111 !important;}.text-light-blue{color:#3c8dbc !important;}.text-green{color:#18bc9c !important;}.text-gray{color:#d2d6de !important;}.text-navy{color:#001F3F !important;}.text-teal{color:#39CCCC !important;}.text-olive{color:#3D9970 !important;}.text-lime{color:#01FF70 !important;}.text-orange{color:#FF851B !important;}.text-fuchsia{color:#F012BE !important;}.text-purple{color:#605ca8 !important;}.text-maroon{color:#D81B60 !important;}.link-muted{color:#7a869d;}.link-muted:hover,.link-muted:focus{color:#606c84;}.link-black{color:#666;}.link-black:hover,.link-black:focus{color:#999;}.hide{display:none !important;}.no-border{border:0 !important;}.no-padding{padding:0 !important;}.no-margin{margin:0 !important;}.no-shadow{box-shadow:none !important;}.list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0;}.list-group-unbordered > .list-group-item{border-left:0;border-right:0;border-radius:0;padding-left:0;padding-right:0;}.flat{border-radius:0 !important;}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700;}.text-sm{font-size:12px;}.jqstooltip{padding:5px !important;width:auto !important;height:auto !important;}.bg-teal-gradient{background:#39CCCC !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#39CCCC),color-stop(1,#7adddd)) !important;background:-ms-linear-gradient(bottom,#39CCCC,#7adddd) !important;background:-moz-linear-gradient(center bottom,#39CCCC 0%,#7adddd 100%) !important;background:-o-linear-gradient(#7adddd,#39CCCC) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd',endColorstr='#39CCCC',GradientType=0) !important;color:#fff;}.bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3c8dbc),color-stop(1,#67a8ce)) !important;background:-ms-linear-gradient(bottom,#3c8dbc,#67a8ce) !important;background:-moz-linear-gradient(center bottom,#3c8dbc 0%,#67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce,#3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce',endColorstr='#3c8dbc',GradientType=0) !important;color:#fff;}.bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#0073b7),color-stop(1,#0089db)) !important;background:-ms-linear-gradient(bottom,#0073b7,#0089db) !important;background:-moz-linear-gradient(center bottom,#0073b7 0%,#0089db 100%) !important;background:-o-linear-gradient(#0089db,#0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db',endColorstr='#0073b7',GradientType=0) !important;color:#fff;}.bg-aqua-gradient{background:#3498db !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3498db),color-stop(1,#52a7e0)) !important;background:-ms-linear-gradient(bottom,#3498db,#52a7e0) !important;background:-moz-linear-gradient(center bottom,#3498db 0%,#52a7e0 100%) !important;background:-o-linear-gradient(#52a7e0,#3498db) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#52a7e0',endColorstr='#3498db',GradientType=0) !important;color:#fff;}.bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#f39c12),color-stop(1,#f7bc60)) !important;background:-ms-linear-gradient(bottom,#f39c12,#f7bc60) !important;background:-moz-linear-gradient(center bottom,#f39c12 0%,#f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60,#f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60',endColorstr='#f39c12',GradientType=0) !important;color:#fff;}.bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#605ca8),color-stop(1,#9491c4)) !important;background:-ms-linear-gradient(bottom,#605ca8,#9491c4) !important;background:-moz-linear-gradient(center bottom,#605ca8 0%,#9491c4 100%) !important;background:-o-linear-gradient(#9491c4,#605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4',endColorstr='#605ca8',GradientType=0) !important;color:#fff;}.bg-green-gradient{background:#18bc9c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#18bc9c),color-stop(1,#1cdcb6)) !important;background:-ms-linear-gradient(bottom,#18bc9c,#1cdcb6) !important;background:-moz-linear-gradient(center bottom,#18bc9c 0%,#1cdcb6 100%) !important;background:-o-linear-gradient(#1cdcb6,#18bc9c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1cdcb6',endColorstr='#18bc9c',GradientType=0) !important;color:#fff;}.bg-red-gradient{background:#e74c3c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#e74c3c),color-stop(1,#ed7669)) !important;background:-ms-linear-gradient(bottom,#e74c3c,#ed7669) !important;background:-moz-linear-gradient(center bottom,#e74c3c 0%,#ed7669 100%) !important;background:-o-linear-gradient(#ed7669,#e74c3c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ed7669',endColorstr='#e74c3c',GradientType=0) !important;color:#fff;}.bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#111),color-stop(1,#2b2b2b)) !important;background:-ms-linear-gradient(bottom,#111,#2b2b2b) !important;background:-moz-linear-gradient(center bottom,#111 0%,#2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b,#111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b',endColorstr='#111',GradientType=0) !important;color:#fff;}.bg-maroon-gradient{background:#D81B60 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#D81B60),color-stop(1,#e73f7c)) !important;background:-ms-linear-gradient(bottom,#D81B60,#e73f7c) !important;background:-moz-linear-gradient(center bottom,#D81B60 0%,#e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c,#D81B60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c',endColorstr='#D81B60',GradientType=0) !important;color:#fff;}.description-block .description-icon{font-size:16px;}.no-pad-top{padding-top:0;}.position-static{position:static !important;}.list-header{font-size:15px;padding:10px 4px;font-weight:bold;color:#666;}.list-seperator{height:1px;background:#f4f4f4;margin:15px 0 9px 0;}.list-link > a{padding:4px;color:#777;}.list-link > a:hover{color:#222;}.font-light{font-weight:300;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block img{width:40px;height:40px;float:left;}.user-block .username,.user-block .description,.user-block .comment{display:block;margin-left:50px;}.user-block .username{font-size:16px;font-weight:600;}.user-block .description{color:#999;font-size:13px;}.user-block.user-block-sm .username,.user-block.user-block-sm .description,.user-block.user-block-sm .comment{margin-left:40px;}.user-block.user-block-sm .username{font-size:14px;}.img-sm,.img-md,.img-lg,.box-comments .box-comment img,.user-block.user-block-sm img{float:left;}.img-sm,.box-comments .box-comment img,.user-block.user-block-sm img{width:30px !important;height:30px !important;}.img-sm + .img-push{margin-left:40px;}.img-md{width:60px;height:60px;}.img-md + .img-push{margin-left:70px;}.img-lg{width:100px;height:100px;}.img-lg + .img-push{margin-left:110px;}.img-bordered{border:3px solid #d2d6de;padding:3px;}.img-bordered-sm{border:2px solid #d2d6de;padding:2px;}.attachment-block{border:1px solid #f4f4f4;padding:5px;margin-bottom:10px;background:#f7f7f7;}.attachment-block .attachment-img{max-width:100px;max-height:100px;height:auto;float:left;}.attachment-block .attachment-pushed{margin-left:110px;}.attachment-block .attachment-heading{margin:0;}.attachment-block .attachment-text{color:#555;}.connectedSortable{min-height:100px;}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.sort-highlight{background:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px;}.full-opacity-hover{opacity:0.65;filter:alpha(opacity=65);}.full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100);}.chart{position:relative;overflow:hidden;width:100%;}.chart svg,.chart canvas{width:100% !important;}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none !important;}.content-wrapper,.right-side,.main-footer{margin-left:0 !important;min-height:0 !important;-webkit-transform:translate(0,0) !important;-ms-transform:translate(0,0) !important;-o-transform:translate(0,0) !important;transform:translate(0,0) !important;}.fixed .content-wrapper,.fixed .right-side{padding-top:0 !important;}.invoice{width:100%;border:0;margin:0;padding:0;}.invoice-col{float:left;width:33.3333333%;}.table-responsive{overflow:auto;}.table-responsive > .table tr th,.table-responsive > .table tr td{white-space:normal !important;}}.skin-green .main-header .navbar{background-color:#18bc9c;}.skin-green .main-header .navbar .nav > li > a{color:#fff;}.skin-green .main-header .navbar .nav > li > a:hover,.skin-green .main-header .navbar .nav > li > a:active,.skin-green .main-header .navbar .nav > li > a:focus,.skin-green .main-header .navbar .nav .open > a,.skin-green .main-header .navbar .nav .open > a:hover,.skin-green .main-header .navbar .nav .open > a:focus,.skin-green .main-header .navbar .nav > .active > a{background:rgba(0,0,0,0.1);color:#f6f6f6;}.skin-green .main-header .navbar .sidebar-toggle{color:#fff;}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1);}.skin-green .main-header .navbar .sidebar-toggle{color:#fff;}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#15a589;}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1);}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff;}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#15a589;}}.skin-green .main-header .logo{background-color:#15a589;color:#fff;border-bottom:0 solid transparent;}.skin-green .main-header .logo:hover{background-color:#15a185;}.skin-green .main-header li.user-header{background-color:#18bc9c;}.skin-green .content-header{background:transparent;}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32;}.skin-green .user-panel > .info,.skin-green .user-panel > .info > a{color:#fff;}.skin-green .sidebar-menu > li.header{color:#4b646f;background:#1a2226;}.skin-green .sidebar-menu > li > a{border-left:3px solid transparent;}.skin-green .sidebar-menu > li:hover > a,.skin-green .sidebar-menu > li.active > a{color:#fff;background:#1e282c;border-left-color:#18bc9c;}.skin-green .sidebar-menu > li > .treeview-menu{margin:0 1px;background:#2c3b41;}.skin-green .sidebar a{color:#b8c7ce;}.skin-green .sidebar a:hover{text-decoration:none;}.skin-green .treeview-menu > li > a{color:#8aa4af;}.skin-green .treeview-menu > li.active > a,.skin-green .treeview-menu > li > a:hover{color:#fff;}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;background-color:#374850;margin:10px 10px;}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn{background-color:#fff;color:#666;}.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn{background:#fff;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0;}.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn{border-left-color:#fff;}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0;}@font-face{font-family:"iconfont";src:url(../fonts/iconfont/iconfont.eot?t=1487643189178);src:url(../fonts/iconfont/iconfont.eot?t=1487643189178#iefix) format('embedded-opentype'),url(../fonts/iconfont/iconfont.woff?t=1487643189178) format('woff'),url(../fonts/iconfont/iconfont.ttf?t=1487643189178) format('truetype'),url(../fonts/iconfont/iconfont.svg?t=1487643189178#iconfont) format('svg');}.iconfont{font-family:"iconfont" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.icon-max:before{content:"\e623";}.icon-restore:before{content:"\e624";}.icon-min:before{content:"\e625";}.icon-close:before{content:"\e626";}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font:SIL OFL 1.1,CSS:MIT License) */@font-face{font-family:'FontAwesome';src:url(../libs/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../libs/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(../libs/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0) format('woff2'),url(../libs/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'),url(../libs/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../libs/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#FFF}.toast-message a:hover{color:#CCC;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#FFF;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}.rtl .toast-close-button{left:-.3em;float:left;right:.3em}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#FFF;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>div.rtl{direction:rtl;padding:15px 50px 15px 15px;background-position:right 15px center}#toast-container>div:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51A351}.toast-error{background-color:#BD362F}.toast-info{background-color:#2F96B4}.toast-warning{background-color:#F89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}#toast-container>div.rtl{padding:15px 50px 15px 15px}}.layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(../libs/layer/dist/theme/default/loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(../libs/layer/dist/theme/default/icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(../libs/layer/dist/theme/default/loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(../libs/layer/dist/theme/default/loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(../libs/layer/dist/theme/default/loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(../libs/layer/dist/theme/default/icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:230px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:43px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}}.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:focus{outline:transparent solid 0}.fixed-table-container thead th:first-child{border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.bootstrap-table .pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}.fixed-table-pagination:after,.fixed-table-toolbar:after{content:"";display:block;clear:both}.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action="today"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,0.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.daterangepicker{position:absolute;color:inherit;background-color:#fff;border-radius:4px;width:278px;padding:4px;margin-top:1px;top:100px;left:20px;}.daterangepicker:before,.daterangepicker:after{position:absolute;display:inline-block;border-bottom-color:rgba(0,0,0,0.2);content:'';}.daterangepicker:before{top:-7px;border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:7px solid #ccc;}.daterangepicker:after{top:-6px;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;}.daterangepicker.opensleft:before{right:9px;}.daterangepicker.opensleft:after{right:10px;}.daterangepicker.openscenter:before{left:0;right:0;width:0;margin-left:auto;margin-right:auto;}.daterangepicker.openscenter:after{left:0;right:0;width:0;margin-left:auto;margin-right:auto;}.daterangepicker.opensright:before{left:9px;}.daterangepicker.opensright:after{left:10px;}.daterangepicker.dropup{margin-top:-5px;}.daterangepicker.dropup:before{top:initial;bottom:-7px;border-bottom:initial;border-top:7px solid #ccc;}.daterangepicker.dropup:after{top:initial;bottom:-6px;border-bottom:initial;border-top:6px solid #fff;}.daterangepicker.dropdown-menu{max-width:none;z-index:3001;}.daterangepicker.single .ranges,.daterangepicker.single .calendar{float:none;}.daterangepicker.show-calendar .calendar{display:block;}.daterangepicker .calendar{display:none;max-width:270px;margin:4px;}.daterangepicker .calendar.single .calendar-table{border:none;}.daterangepicker .calendar th,.daterangepicker .calendar td{white-space:nowrap;text-align:center;min-width:32px;}.daterangepicker .calendar-table{border:1px solid #fff;padding:4px;border-radius:4px;background-color:#fff;}.daterangepicker table{width:100%;margin:0;}.daterangepicker td,.daterangepicker th{text-align:center;width:20px;height:20px;border-radius:4px;border:1px solid transparent;white-space:nowrap;cursor:pointer;}.daterangepicker td.available:hover,.daterangepicker th.available:hover{background-color:#eee;border-color:transparent;color:inherit;}.daterangepicker td.week,.daterangepicker th.week{font-size:80%;color:#ccc;}.daterangepicker td.off,.daterangepicker td.off.in-range,.daterangepicker td.off.start-date,.daterangepicker td.off.end-date{background-color:#fff;border-color:transparent;color:#999;}.daterangepicker td.in-range{background-color:#ebf4f8;border-color:transparent;color:#000;border-radius:0;}.daterangepicker td.start-date{border-radius:4px 0 0 4px;}.daterangepicker td.end-date{border-radius:0 4px 4px 0;}.daterangepicker td.start-date.end-date{border-radius:4px;}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#357ebd;border-color:transparent;color:#fff;}.daterangepicker th.month{width:auto;}.daterangepicker td.disabled,.daterangepicker option.disabled{color:#999;cursor:not-allowed;text-decoration:line-through;}.daterangepicker select.monthselect,.daterangepicker select.yearselect{font-size:12px;padding:1px;height:auto;margin:0;cursor:default;}.daterangepicker select.monthselect{margin-right:2%;width:56%;}.daterangepicker select.yearselect{width:40%;}.daterangepicker select.hourselect,.daterangepicker select.minuteselect,.daterangepicker select.secondselect,.daterangepicker select.ampmselect{width:50px;margin-bottom:0;}.daterangepicker .input-mini{border:1px solid #ccc;border-radius:4px;color:#555;height:30px;line-height:30px;display:block;vertical-align:middle;margin:0 0 5px 0;padding:0 6px 0 28px;width:100%;}.daterangepicker .input-mini.active{border:1px solid #08c;border-radius:4px;}.daterangepicker .daterangepicker_input{position:relative;}.daterangepicker .daterangepicker_input i{position:absolute;left:8px;top:8px;}.daterangepicker.rtl .input-mini{padding-right:28px;padding-left:6px;}.daterangepicker.rtl .daterangepicker_input i{left:auto;right:8px;}.daterangepicker .calendar-time{text-align:center;margin:5px auto;line-height:30px;position:relative;padding-left:28px;}.daterangepicker .calendar-time select.disabled{color:#ccc;cursor:not-allowed;}.ranges{font-size:11px;float:none;margin:4px;text-align:left;}.ranges ul{list-style:none;margin:0 auto;padding:0;width:100%;}.ranges li{font-size:13px;background-color:#f5f5f5;border:1px solid #f5f5f5;border-radius:4px;color:#08c;padding:3px 12px;margin-bottom:8px;cursor:pointer;}.ranges li:hover{background-color:#08c;border:1px solid #08c;color:#fff;}.ranges li.active{background-color:#08c;border:1px solid #08c;color:#fff;}@media (min-width:564px){.daterangepicker{width:auto;}.daterangepicker .ranges ul{width:160px;}.daterangepicker.single .ranges ul{width:100%;}.daterangepicker.single .calendar.left{clear:none;}.daterangepicker.single.ltr .ranges,.daterangepicker.single.ltr .calendar{float:left;}.daterangepicker.single.rtl .ranges,.daterangepicker.single.rtl .calendar{float:right;}.daterangepicker.ltr{direction:ltr;text-align:left;}.daterangepicker.ltr .calendar.left{clear:left;margin-right:0;}.daterangepicker.ltr .calendar.left .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;}.daterangepicker.ltr .calendar.right{margin-left:0;}.daterangepicker.ltr .calendar.right .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;}.daterangepicker.ltr .left .daterangepicker_input{padding-right:12px;}.daterangepicker.ltr .calendar.left .calendar-table{padding-right:12px;}.daterangepicker.ltr .ranges,.daterangepicker.ltr .calendar{float:left;}.daterangepicker.rtl{direction:rtl;text-align:right;}.daterangepicker.rtl .calendar.left{clear:right;margin-left:0;}.daterangepicker.rtl .calendar.left .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;}.daterangepicker.rtl .calendar.right{margin-right:0;}.daterangepicker.rtl .calendar.right .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;}.daterangepicker.rtl .left .daterangepicker_input{padding-left:12px;}.daterangepicker.rtl .calendar.left .calendar-table{padding-left:12px;}.daterangepicker.rtl .ranges,.daterangepicker.rtl .calendar{text-align:right;float:right;}}@media (min-width:730px){.daterangepicker .ranges{width:auto;}.daterangepicker.ltr .ranges{float:left;}.daterangepicker.rtl .ranges{float:right;}.daterangepicker .calendar.left{clear:none !important;}}.n-inline-block,.nice-validator input,.nice-validator select,.nice-validator textarea,.nice-validator [contenteditable],.msg-wrap,.n-icon,.n-msg{display:inline-block;*display:inline;*zoom:1;}.nice-validator .msg-container .msg-box{display:block;}.nice-validator .msg-container .msg-wrap{position:static;}.msg-box{position:relative;*zoom:1;}.msg-wrap{position:relative;white-space:nowrap;line-height:16px;font-size:12px;}.msg-wrap,.n-icon,.n-msg{vertical-align:top;}.msg-box .msg-wrap .n-error,.msg-box .msg-wrap .n-ok,.msg-box .msg-wrap .n-tip{display:block;background:none;box-shadow:none;padding:3px 2px;}.n-arrow{position:absolute;overflow:hidden;}.n-arrow b,.n-arrow i{position:absolute;left:0;top:0;border:0;margin:0;padding:0;overflow:hidden;font-weight:400;font-style:normal;font-size:12px;font-family:serif;line-height:14px;_line-height:15px;}.n-arrow i{text-shadow:none;}.n-icon{width:16px;height:16px;overflow:hidden;background-repeat:no-repeat;}.n-msg{display:inline-block;*display:inline;*zoom:1;margin-left:1px;}.n-error{color:#c33;}.n-ok{color:#390;}.n-tip .n-msg,.n-loading{color:#808080;}.n-error .n-icon{background-position:0 0;}.n-ok .n-icon{background-position:-16px 0;}.n-tip .n-icon{background-position:-32px 0;}.n-loading .n-icon{background:url(../libs/nice-validator/dist/images/loading.gif) 0 center no-repeat !important;}.n-top,.n-right,.n-bottom,.n-left{display:inline-block;*display:inline;*zoom:1;line-height:0;vertical-align:top;outline:0;}.n-top .n-arrow,.n-bottom .n-arrow{height:6px;width:12px;left:8px;}.n-left .n-arrow,.n-right .n-arrow{width:6px;height:12px;top:6px;}.n-top{vertical-align:top;}.n-top .msg-wrap{margin-bottom:6px;}.n-top .n-arrow{bottom:-6px;}.n-top .n-arrow b{top:-6px;}.n-top .n-arrow i{top:-7px;}.n-bottom{vertical-align:bottom;}.n-bottom .msg-wrap{margin-top:6px;}.n-bottom .n-arrow{top:-6px;}.n-bottom .n-arrow b{top:-1px;}.n-bottom .n-arrow i{top:0;}.n-left .msg-wrap{right:100%;margin-right:6px;}.n-left .n-arrow{right:-6px;}.n-left .n-arrow b{left:-6px;}.n-left .n-arrow i{left:-7px;}.n-right .msg-wrap{margin-left:6px;}.n-right .n-arrow{left:-6px;}.n-right .n-arrow b{left:1px;}.n-right .n-arrow i{left:2px;}.n-default .n-left,.n-default .n-right{margin-top:5px;}.n-default .n-top .msg-wrap{bottom:100%;}.n-default .n-bottom .msg-wrap{top:100%;}.n-default .msg-wrap{position:absolute;z-index:1;}.n-default .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_default.png);}.n-default .n-tip .n-icon{display:none;}.n-simple .msg-wrap{position:absolute;z-index:1;}.n-simple .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_simple.png);}.n-simple .n-top .msg-wrap{bottom:100%;}.n-simple .n-bottom .msg-wrap{top:100%;}.n-simple .n-left,.n-simple .n-right{margin-top:5px;}.n-simple .n-bottom .msg-wrap{margin-top:3px;}.n-simple .n-tip .n-icon{display:none;}.n-yellow .msg-wrap{position:absolute;z-index:1;padding:4px 6px;font-size:12px;border:1px solid transparent;background-color:#fffcef;border-color:#ffbb76;color:#db7c22;box-shadow:0 1px 3px #ccc;border-radius:2px;}.n-yellow .msg-wrap .n-arrow b{color:#ffbb76;text-shadow:0 0 2px #ccc;}.n-yellow .msg-wrap .n-arrow i{color:#fffcef;}.n-yellow .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_simple.png);}.n-yellow .n-top .msg-wrap{bottom:100%;}.n-yellow .n-bottom .msg-wrap{top:100%;}.n-yellow .n-tip,.n-yellow .n-ok,.n-yellow .n-loading{background-color:#f8fdff;border-color:#ddd;color:#333;box-shadow:0 1px 3px #ccc;}.n-yellow .n-tip .n-arrow b,.n-yellow .n-ok .n-arrow b,.n-yellow .n-loading .n-arrow b{color:#ddd;text-shadow:0 0 2px #ccc;}.n-yellow .n-tip .n-arrow i,.n-yellow .n-ok .n-arrow i,.n-yellow .n-loading .n-arrow i{color:#f8fdff;}@charset "utf-8";.sp_container{border:none;margin:0;padding:0;display:inline-block;position:relative;vertical-align:middle;}.sp_input{background-color:white;border:1px solid #ccc;border-radius:0px;box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;margin:0 !important;padding:4px 6px;vertical-align:middle;display:block;width:100%;outline:none;box-sizing:border-box;}.sp_input:focus{border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.sp_container_open .sp_input{border-radius:2px !important;}div.sp_button{display:inline-block;border-bottom-right-radius:0;border-top-right-radius:0;cursor:pointer;text-align:center;box-sizing:border-box;border:0;width:24px;height:100%;padding:0;vertical-align:middle;line-height:100%;position:absolute;top:0;right:0;}.sp_container_open > .sp_button{border-bottom-right-radius:0 !important;}div.sp_button span.sp_caret{position:absolute;top:50%;right:12px;margin-top:-1px;vertical-align:middle;display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent;}div.sp_clear_btn{position:absolute;top:0;right:25px;display:block;width:auto;height:100%;cursor:pointer;font-size:18px;color:#666666;font-weight:600;margin:0;padding:5px 0 0 0;box-sizing:border-box;line-height:1;font-family:"Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial;}div.sp_clear_btn:hover{color:black;font-weight:bold;}div.sp_clear_btn i{font-size:12px;}div.sp_clear_btn.sp_align_right{right:10px;}.sp_result_area{background-color:white;border:1px solid #D6D7D7;display:none;list-style:none;margin:0;padding:0;position:absolute;z-index:100;width:300px;border-radius:2px;}div.sp_result_area.shadowDown{box-shadow:0 3px 12px rgba(0,0,0,0.2);-moz-box-shadow:0 3px 12px rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 12px rgba(0,0,0,0.2);}div.sp_result_area.shadowUp{box-shadow:0 -1px 12px rgba(0,0,0,0.2);-moz-box-shadow:0 -1px 12px rgba(0,0,0,0.2);-webkit-box-shadow:0 -1px 12px rgba(0,0,0,0.2);}.sp_results{background-color:white;list-style:none;margin:0;padding:3px 0;}.sp_results > li{height:auto !important;line-height:1;margin:0;overflow:hidden;padding:5px 8px;position:relative;text-align:left;white-space:nowrap;font-size:13px;color:black;cursor :pointer;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";}.sp_results > li.sp_message_box{height:30px;line-height:30px;text-align:center;box-sizing:content-box;font-size:14px;cursor:default;}ul.sp_results > li.sp_over{background-color:#53A4EA !important;color:#fff !important;cursor:pointer;}ul.sp_results > li.sp_selected{color:#cccccc;cursor:default;}.sp_control_box{padding:0;height:27px;}.sp_control_box p{margin:0;line-height:27px;padding-left:8px;font-size:14px;font-weight:400;}.sp_control_box button{height:27px;line-height:20px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:13px !important;padding:0 12px;border:0;background:white none;color:#666666;text-align:left;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);outline:none !important;float:right;opacity:.3;}.sp_control_box:hover{background-color:#F8F8F8;}.sp_control_box:hover button{background-color:#F8F8F8;opacity:1;}.sp_control_box:hover button:hover{background-color:#EEEEEE;color:black;}div.sp_container_combo{border:1px solid #CCCCCC;border-radius:0px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-sizing:border-box;}div.sp_container_combo.sp_disabled{box-shadow:none;}div.sp_container_combo.sp_disabled,div.sp_container_combo.sp_disabled ul.sp_element_box,div.sp_container_combo.sp_disabled .sp_input,div.sp_container.sp_disabled .sp_input{background-color:#eeeeee;cursor:not-allowed !important;}div.sp_container.sp_disabled .sp_clear_btn,div.sp_container_combo.sp_disabled ul.sp_element_box span.tag_close{display:none;}div.sp_container_combo.sp_container_open{border-radius:0px;}input.sp_combo_input{border:0 !important;box-shadow:none;background-color:transparent;max-width:100%;padding:0;height:34px !important;line-height:34px !important;min-height:34px !important;}input.sp_combo_input:focus{box-shadow:none;border:0;}input.sp_combo_input[readonly],input.sp_combo_input[disabled]{background-color:white;}ul.sp_element_box{margin:0;padding:3px 0 0 3px;position:relative;overflow:hidden;clear:both;cursor:text;margin-right:24px;list-style:none;height:auto;min-height:25px;}ul.sp_element_box > li{list-style:none;padding:0 5px;margin-right:3px;margin-bottom:2px;float:left;position:relative;box-sizing:content-box;}ul.sp_element_box li.full_width{width:100%;}ul.sp_element_box li.full_width input{width:100% !important;}ul.sp_element_box li.selected_tag{border:1px solid #AAAAAA;border-radius:3px;background-color:#EFEFEF;cursor:pointer;max-width:100%;box-shadow:0 0 2px white inset,0 1px 0 rgba(0,0,0,0.05);height:22px;line-height:22px;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);}ul.sp_element_box li.selected_tag:hover{background-color:white;border:1px solid #D0D0D0;box-shadow:0 2px 7px rgba(0,0,0,.1);}ul.sp_element_box li.selected_tag i{font-size:12px;color:#AAAAAA;}ul.sp_element_box li.selected_tag i:hover{color:black;}ul.sp_element_box li.input_box{padding:0;margin-top:0;height:24px;min-height:24px;}ul.sp_element_box li.input_box input{height:26px !important;line-height:26px !important;min-height:26px !important;}ul.sp_element_box li.selected_tag span.tag_close{cursor:pointer;margin-left:5px;font-size:14px;font-family:"Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial;}.sp_results_off{}.sp_input_off{background:#eee;color:#333333;}.sp_hide{display:none;}.sp_navi{background:#eee;border-bottom:1px solid #79b;font-size:13px;font-weight:normal;line-height:1;margin:0;padding:4px;text-align:right;}.sp_navi > p > a:link,.sp_navi > p > a:visited,.sp_navi > p > a:hover,.sp_navi > p > a:active{color:blue;font-weight:normal;margin:0 4px;text-decoration:underline;}.sp_navi > p{color:black;font-size:15px;margin:0;padding-top:4px;text-align:center;}.sp_navi > p > a >.current{color:#00c;font-size:16px;font-weight:bold;}.sp_navi > p >.page_end{color:gray;font-weight:normal;margin:0 4px;}.navi_page,.navi_first,.navi_prev,.navi_next,.navi_last{margin:auto 4px !important;}.sp_navi > .info{margin:0 !important;padding:0 !important;}.sp_container > .sp_select_ng{background:#fcc;}div.sp_container input.sp_input.input-block-level{box-sizing:border-box;height:30px;line-height:30px;min-height:30px;width:100%;}div.sp_container_open .sp_input::-ms-clear{display:none;}input::-ms-clear{display:none;}input::-ms-reveal{display:none;}div.sp_navi > p{font-size:12px;}div.sp_result_area div.sp_pagination{margin:0;padding:0;height:26px;line-height:26px;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;display:block;}div.sp_result_area div.sp_pagination.hide{display:none;}div.sp_result_area div.sp_pagination ul{width:100%;display:inline-block;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;padding:0;}div.sp_result_area div.sp_pagination li{text-align:center;display:inline;box-sizing:border-box;}div.sp_result_area div.sp_pagination>ul>li>a{margin:0;border-radius:0;padding:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;background-color:white;float:left;text-decoration:none;border:0;box-sizing:content-box;color:#666666;font-size:13px;height:26px;line-height:26px;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);}div.sp_result_area div.sp_pagination li.csFirstPage a,div.sp_result_area div.sp_pagination li.csPreviousPage a,div.sp_result_area div.sp_pagination li.csNextPage a,div.sp_result_area div.sp_pagination li.csLastPage a{width:30px;}div.sp_result_area div.sp_pagination li.csFirstPage a{border-left:0;border-bottom-left-radius:2px;}div.sp_result_area div.sp_pagination li.csLastPage a{border-right:0;border-bottom-right-radius:2px;}div.sp_result_area div.sp_pagination>ul>li>a:hover{color:#000000;background-color:#E8E8E8;}div.sp_result_area div.sp_pagination>ul>li.disabled>a{color:#DDDDDD;cursor:default;}div.sp_result_area div.sp_pagination>ul>li.disabled>a:hover{color:#DDDDDD;background-color:white;}div.sp_result_area div.sp_pagination>ul>li.pageInfoBox>a{width:178px;text-align:center;color:#666666;font-size:14px;}div.sp_result_area div.sp_pagination>ul>li.pageInfoBox>a:hover{background-color:inherit;color:#666666;cursor:default;}@font-face{font-family:"spfont";src:url('data:image/eot;base64,zA0AACQNAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAfJwy7wAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ynHxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==');src:url('data:image/eot;base64,zA0AACQNAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAfJwy7wAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ynHxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==') format('embedded-opentype'),url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAi8AAsAAAAADSQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kj9Y21hcAAAAYAAAACoAAACNjWzO3RnbHlmAAACKAAABDQAAAXE0sEAXGhlYWQAAAZcAAAALwAAADYPYaJpaGhlYQAABowAAAAeAAAAJAfeA41obXR4AAAGrAAAABcAAAAsK+oAAGxvY2EAAAbEAAAAGAAAABgIbAmwbWF4cAAABtwAAAAfAAAAIAEaAHhuYW1lAAAG/AAAAUUAAAJtPlT+fXBvc3QAAAhEAAAAdQAAAKCcItv9eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sc4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDznZW7438AQw9zA0AAUZgTJAQAmWQyAeJzFkjEOgkAQRf8KLkoksfIMFJaUnISTUBgSOgsOYuWxPsfAPzs0Bm11Nm+T+ZvMTP4sgD2ATFxFDoQnAiweUkPSM5RJz3FTfsFZSkRPsGbDlh0Hjpzmaln0/k3fRlCt7TG9VK8dDjhquqhuhcT4scZPIvyv9Xuc0n1fM20F/YpGJBzTWTu2UTaOHAVbR96CnSOXwcGx38DRkfPg5NgPmSsHxQsreTV9eJxlVE2MFEUUrq+K6Zpepnum/6bnh/npbrbbze7O6vxtVnZnTeACaNxkjaIbdL2YGAJH9uJhjTEBJMZw0cQDi0JEjSEe8EQMBMRwxKMXIBpN8KjhxBS+HoaNxE7n1ffqe11f1Xuvi2UYe3RPXBEl5rBn2HNsH1thDNo0QpPXECTdFp+GF2Q83zVFEiWBjMKWWIIfam6x3e/Gvia1PEzU0Qna/aTFE/S6A74H7WINKFcrq/bkLlt8golSUv9QHeBfwGtEu/KDWbV/ZtltN53sRs62y7Z9OqtlMlnOd+RNHPWLekaf0NT5TL7iXWlM8QZy5aTy4utGs2q/faJ7rDbp68DmJpxq0/xq2apY9L5XKTp2WRaMbKliRLtdbPy+s+TkavFvjB5OZ70qrooXWJ416ZTtom+ZiIIwTqwBOpOBCWnV4QcDzFstJOKVUgNolIaHSk2gWeIXh4daS8BSi1+cTcdZkWuO2JQrNTtYbFHEImjkF2kkTUGaN8U58TybYnvZEVINerR0RFJeEGo1uEW/45E31iWu1xlgCd1Yulq6N4L9TtAbIE2p7wXtoiei9Muo142pTv9B0otoiV7g0WLpnNhU99GKno1aUPcNxzEs5AHb5D+aNghaNFfS5bAvdV0ipiPm0pPGUr+ZzcgPZIbsRyOLLSoxP0HmM8n3XApngdnwkm2eNWw86O8HDbANfrD/Nw1nTftCuuIRqd/26bmtS3VDZm7dyshti+X+gwf9ZZDHdlCObovvRZ/q0mARSxhzBmk7jeojA8qJYz3ur57VjSkpGpJ5P4GPlzAT8J+DdDvBcCGYoSR5ef5lwfMKw8N5D9m7U3dfxg/T6iD/M5gdx6TfXB4eToNGocNv70zd0XF5Wh0Y98j71CMFFlK1+t0EMfU6NVva8PPONnpC8Vd1Xa3rVVvHSbWh21X9r22ErTGHdycqE+Q5FV0dV8f1iqOL14xtjK0x/T99Ukb6nyU66cWhFNvoCYVv9FSH9NUGTj7Wf4JI+zGHT0mAPNLHKZxKNR9+bWxjtT6mGfXsoz/4r6JC+kx/6ugky39Rm1m3kMUxdSZbcLPYzOIMGYLqDE2lFAVQ32fSH05cE28wi9XZNJthC4xNBmEL/XkM0k6mG8MENDpHcXRzIBZh3LNSzrNcTUZuHe0Bui26iiBWhuthpyoKWLVavTkLqwVR7aiP7YL6ruAGfCtwU2QbDqxdtmPM5fySnxuZenluoc7frDeb9eG52sJcmT9EjVAY1vhbNbXbMdAwbNtQ9wznaK5oGMVyasb3xTX+E/27OVamWoRxl5LQLrq0Z8S04W6/TSVwNegThoYL0jGlWpP4nPp9TTNtSVMm3jHtLM5LcolTaxgFGho5jsFG+f5HnBY5tpPyI3VQeed16mxxekXdUDdWsKSur2ARiyvq+r6nPCxRBG3zX8yJDj54nGNgZGBgAOL3RuU28fw2Xxm4WRhA4JqiviaC/n+AhYE5CsjlYGACiQIA93sITQB4nGNgZGBgbvjfwBDDAmQxMLAwMIBpJMANAEcqAnUAAHicY2FgYGB+ycDAwkAAMzIwAAAnpgEWAAAAAAAAdgCwAUIBiAHIAggCLAKOAsAC4nicY2BkYGDgZshhYGUAASYg5gJCBob/YD4DABRyAZMAeJxlj01OwzAQhV/6B6QSqqhgh+QFYgEo/RGrblhUavdddN+mTpsqiSPHrdQDcB6OwAk4AtyAO/BIJ5s2lsffvHljTwDc4Acejt8t95E9XDI7cg0XuBeuU38QbpBfhJto41W4Rf1N2MczpsJtdGF5g9e4YvaEd2EPHXwI13CNT+E69S/hBvlbuIk7/Aq30PHqwj7mXle4jUcv9sdWL5xeqeVBxaHJIpM5v4KZXu+Sha3S6pxrW8QmU4OgX0lTnWlb3VPs10PnIhVZk6oJqzpJjMqt2erQBRvn8lGvF4kehCblWGP+tsYCjnEFhSUOjDFCGGSIyujoO1Vm9K+xQ8Jee1Y9zed0WxTU/3OFAQL0z1xTurLSeTpPgT1fG1J1dCtuy56UNJFezUkSskJe1rZUQuoBNmVXjhF6XNGJPyhnSP8ACVpuyAAAAHicbYnNDsIgEAb3q8Va8Kav0YNPZMiKsFrZBKmpPr1/N+OcJjPU0BdL/3FosEALgyU6rNDDwmFNmA2nwGcrrHngMfjSz5PPj6Q5bj/xICVwlZcVialufuIYjrW967TrTpJj9Oqy3iTq/j1MlUu4Ej0BvEMlfAAAAA==') format('woff'),url('data:image/ttf;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ydzxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==') format('truetype'),url('data:image/svg;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPCEtLQoyMDEzLTktMzA6IENyZWF0ZWQuCi0tPgo8c3ZnPgo8bWV0YWRhdGE+CkNyZWF0ZWQgYnkgaWNvbmZvbnQKPC9tZXRhZGF0YT4KPGRlZnM+Cgo8Zm9udCBpZD0iaWNvbmZvbnQiIGhvcml6LWFkdi14PSIxMDI0IiA+CiAgPGZvbnQtZmFjZQogICAgZm9udC1mYW1pbHk9Imljb25mb250IgogICAgZm9udC13ZWlnaHQ9IjUwMCIKICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIgogICAgdW5pdHMtcGVyLWVtPSIxMDI0IgogICAgYXNjZW50PSI4OTYiCiAgICBkZXNjZW50PSItMTI4IgogIC8+CiAgICA8bWlzc2luZy1nbHlwaCAvPgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieCIgdW5pY29kZT0ieCIgaG9yaXotYWR2LXg9IjEwMDEiCmQ9Ik0yODEgNTQzcS0yNyAtMSAtNTMgLTFoLTgzcS0xOCAwIC0zNi41IC02dC0zMi41IC0xOC41dC0yMyAtMzJ0LTkgLTQ1LjV2LTc2aDkxMnY0MXEwIDE2IC0wLjUgMzB0LTAuNSAxOHEwIDEzIC01IDI5dC0xNyAyOS41dC0zMS41IDIyLjV0LTQ5LjUgOWgtMTMzdi05N2gtNDM4djk3ek05NTUgMzEwdi01MnEwIC0yMyAwLjUgLTUydDAuNSAtNTh0LTEwLjUgLTQ3LjV0LTI2IC0zMHQtMzMgLTE2dC0zMS41IC00LjVxLTE0IC0xIC0yOS41IC0wLjUKdC0yOS41IDAuNWgtMzJsLTQ1IDEyOGgtNDM5bC00NCAtMTI4aC0yOWgtMzRxLTIwIDAgLTQ1IDFxLTI1IDAgLTQxIDkuNXQtMjUuNSAyM3QtMTMuNSAyOS41dC00IDMwdjE2N2g5MTF6TTE2MyAyNDdxLTEyIDAgLTIxIC04LjV0LTkgLTIxLjV0OSAtMjEuNXQyMSAtOC41cTEzIDAgMjIgOC41dDkgMjEuNXQtOSAyMS41dC0yMiA4LjV6TTMxNiAxMjNxLTggLTI2IC0xNCAtNDhxLTUgLTE5IC0xMC41IC0zN3QtNy41IC0yNXQtMyAtMTV0MSAtMTQuNQp0OS41IC0xMC41dDIxLjUgLTRoMzdoNjdoODFoODBoNjRoMzZxMjMgMCAzNCAxMnQyIDM4cS01IDEzIC05LjUgMzAuNXQtOS41IDM0LjVxLTUgMTkgLTExIDM5aC0zNjh6TTMzNiA0OTh2MjI4cTAgMTEgMi41IDIzdDEwIDIxLjV0MjAuNSAxNS41dDM0IDZoMTg4cTMxIDAgNTEuNSAtMTQuNXQyMC41IC01Mi41di0yMjdoLTMyN3oiIC8+CiAgICAKCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaGVjayIgdW5pY29kZT0iJiM1ODkzMjsiIGQ9Ik04NTEuNjA4IDc4MC4yNzljMzEuMDU2IDAgNTYuMzIzLTI1LjI2NyA1Ni4zMjMtNTYuMzI1di02NzkuODg2YzAtMzEuMDU3LTI1LjI2Ni01Ni4zMjQtNTYuMzIzLTU2LjMyNGgtNjc5Ljg4NmMtMzEuMDU4IDAtNTYuMzI1IDI1LjI2Ni01Ni4zMjUgNTYuMzI0bDAgNjc5Ljg4NmMwIDMxLjA1OCAyNS4yNjcgNTYuMzI1IDU2LjMyNSA1Ni4zMjVoNjc5Ljg4Nk04NTEuNjA4IDgzMS40NDVoLTY3OS44ODZjLTU5LjM2NSAwLTEwNy40OS00OC4xMjUtMTA3LjQ5LTEwNy40OXYtNjc5Ljg4NmMwLTU5LjM2NSA0OC4xMjUtMTA3LjQ4OSAxMDcuNDktMTA3LjQ4OWg2NzkuODg2YzU5LjM2NSAwIDEwNy40ODggNDguMTI0IDEwNy40ODggMTA3LjQ4OXY2NzkuODg2YzAgNTkuMzY1LTQ4LjEyMyAxMDcuNDktMTA3LjQ4OCAxMDcuNDl2MHoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uLWNsZWFyIiB1bmljb2RlPSImIzU5MDIwOyIgZD0iTTg5NS41OSA1NzEuMDgwaC0yNzcuNDg5djE3NS4xMjRjMCA0My43ODEtMzYuNzIxIDc5LjYwMS04MS42MTggNzkuNjAxaC00OC45NjNjLTQ0Ljg5NyAwLTgxLjYyMy0zNS44Mi04MS42MjMtNzkuNjAxdi0xNzUuMTI0aC0yNzcuNDg5Yy0xNy45NTYgMC0zMi42NDUtMTQuMzM2LTMyLjY0NS0zMS44NDZ2LTE1OS4yMDFjMC0xNy41MjEgMTQuNjg5LTMxLjg1MiAzMi42NDUtMzEuODUyaDE2LjMyM3YtMjQ1Ljk3YzAtNzAuMDU3LTE2LjMyMy0xMjguMTc0LTE2LjMyMy0xMjguMTc0IDAtMTcuNTEgMTQuNjk0LTMxLjg0NiAzMi42NDUtMzEuODQ2aDcwMS44OTFjMTcuOTYxIDAgMzIuNjQ1IDE0LjM0MSAzMi42NDUgMzEuODQ2IDAgMC0xNi4zMjMgNjAuNTA4LTE2LjMyMyAxMzEuMzU5djI0Mi43ODVoMTYuMzIzYzE3Ljk2MSAwIDMyLjY0NSAxNC4zMzYgMzIuNjQ1IDMxLjg0NnYxNTkuMjA2YzAgMTcuNTE2LTE0LjY3OSAzMS44NDYtMzIuNjQ1IDMxLjg0NnpNODg1LjExNSA0MDYuMTY0YzAtOC43NTUtNy4zNDItMTUuOTE4LTE2LjMyOC0xNS45MThoLTcxMy41NzRjLTguOTggMC0xNi4zMjMgNy4xNjgtMTYuMzIzIDE1LjkyM3YxMDYuOTIxYzAgOC43NiA3LjM0MiAxNS45MjMgMTYuMzIzIDE1LjkyM2gyOTMuODExdjIwOS4yMzljMCAzMS4wNDMgMjUuMzAzIDQ1LjQ5MSA1Ny4xMzQgNDUuNDkxaDExLjY4OWMzMS44MjYgMCA1Ny4xMjQtMTQuNDQ5IDU3LjEyNC00NS40OTF2LTIwOS4yMzRoMjkzLjgxNmM4Ljk4NiAwIDE2LjMyOC03LjE1OCAxNi4zMjgtMTUuOTIzdi0xMDYuOTI2ek02ODcuNDczIDE5Ni45MzFoLTguMTY2Yy02LjUyMyAwLTEyLjIzNy01LjU3MS0xMi4yMzctMTEuOTR2LTIwMC43MjRoLTEzMC41ODZ2MjAwLjcxOWMwIDYuMzY5LTUuNzA5IDExLjk0LTEyLjI0NyAxMS45NGgtOC4xNTZjLTYuNTIzIDAtMTIuMjM3LTUuNTcxLTEyLjIzNy0xMS45NHYtMjAwLjcyNGgtMTM4Ljc0N3YyMDAuNzI0YzAgNi4zNjktNS43MTQgMTEuOTQtMTIuMjUyIDExLjk0aC04LjE1MWMtNi41MjggMC0xMi4yNDctNS41NzEtMTIuMjQ3LTExLjk0di0yMDAuNzI0aC0xNjAuOTIyczE2LjMyOCA0Ny4wODkgMTYuMzI4IDExNy45Mzl2MjQ1Ljk3NWg2NDguMjk0di0yNDUuOTc1YzAtNzAuODUxIDE2LjMyMy0xMTcuOTM5IDE2LjMyMy0xMTcuOTM5aC0xNTIuNzU1djIwMC43MjRjMCA2LjM2OS01LjcxNCAxMS45NC0xMi4yNDIgMTEuOTR6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieHVhbnpob25nIiB1bmljb2RlPSImIzU4OTIwOyIgZD0iTTc2Ljg4MzkxMSA3NDIuODc5OTNjMCA0My4zNzE3MjMgMzUuMDg4MDc2IDc4LjUzMDQwNyA3OC41MjkzODQgNzguNTMwNDA3aDcxMC42MTIwOGM0My4zNzE3MjMgMCA3OC41MzA0MDctMzUuMDg4MDc2IDc4LjUzMDQwNy03OC41MzA0MDd2LTcxMC42MTEwNTdjMC00My4zNzE3MjMtMzUuMDg4MDc2LTc4LjUzMDQwNy03OC41MzA0MDctNzguNTMwNDA3SDE1NS40MTQzMThjLTQzLjM3MDcgMC03OC41MjkzODQgMzUuMDg4MDc2LTc4LjUyOTM4NCA3OC41MzA0MDdWNzQyLjg3OTkzaC0wLjAwMTAyM3ogbTU5LjMyOTEyOC0xNy45MTYwMDl2LTY3NC43NzY5OTJjMC0yMC41Mzk3NjEgMTYuNTkwODMtMzcuMTIwMzU4IDM3LjExOTMzNS0zNy4xMjAzNThoNjc0Ljc3ODAxNWMyMC41Mzc3MTQgMCAzNy4xMTkzMzUgMTYuNTg5ODA3IDM3LjExOTMzNSAzNy4xMjAzNTh2Njc0Ljc3Njk5MmMwIDIwLjUzODczOC0xNi41OTA4MyAzNy4xMjAzNTgtMzcuMTE5MzM1IDM3LjEyMDM1OEgxNzMuMzMxMzUxYy0yMC41Mzg3MzggMC0zNy4xMTgzMTItMTYuNTkxODU0LTM3LjExODMxMi0zNy4xMjAzNTh6TTQwMC41NjAxMzEgMTQzLjk0MzA3OUwxNzcuMjQyNDE5IDM2Ny4yMTY3ODlsNDEuMjE2NjQ1IDQxLjE3MTYxOSAyMjMuMjc2NzgtMjIzLjI3Njc4LTQxLjE3NTcxMy00MS4xNjg1NDl6TTM2My4yOTEzOTQgMTkzLjkwMDc4N2w0MzcuMzAxODY3IDQzNy4zMDU5NiA0My42MDQwMTMtNDMuNTk2ODUtNDM3LjI2NzA3NS00MzcuMzAzOTEzLTI3LjE3ODk1OCAyNy4xMzcwMDMtMTYuNDU5ODQ3IDE2LjQ1Nzh6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaWNvbi1kaXJlY3Rpb24tcmlnaHQiIHVuaWNvZGU9IiYjNTkwMDY7IiBkPSJNNTk4LjA4NiAzNjEuNDUxYzYuMDQ0IDYuMDI4IDkuMzczIDE0LjA0IDkuMzczIDIyLjU2IDAgOC41MjEtMy4zMyAxNi41MjUtOS4zNzEgMjIuNTM2TDE4Mi4wMDQgODIyLjYzYy02LjAzNCA2LjAzNC0xNC4wNTIgOS4zNTQtMjIuNTc5IDkuMzQ5LTguNTEzLTAuMDA1LTE2LjUxLTMuMzI2LTIyLjUxOS05LjM1MS02LjAyNy02LjA0Mi05LjM0Ni0xNC4wNTgtOS4zNDYtMjIuNTcxIDAtOC41MTQgMy4zMi0xNi41MjIgOS4zNDgtMjIuNTUxTDUzMC40MTcgMzg0IDEzNi45MS05LjUwNTk5OTk5OTk5OTk3MmMtNi4wMjgtNi4wMjgtOS4zNDgtMTQuMDQxLTkuMzQ4LTIyLjU2MnMzLjMyLTE2LjUzNCA5LjM0OC0yMi41NjJjNi4wMzQtNi4wMzQgMTQuMDU0LTkuMzU0IDIyLjU4LTkuMzQ4IDguNTEyIDAuMDA2IDE2LjUwOCAzLjMyNiAyMi41MTQgOS4zNDhsNDE2LjA4MiA0MTYuMDgxek00MTYuNTM3IDgwMC4wNTdjMC04LjUxNCAzLjMyLTE2LjUyMiA5LjM0OC0yMi41NTFMODE5LjM5MiAzODQgNDI1Ljg4NS05LjUwNTk5OTk5OTk5OTk3MmMtNi4wMjgtNi4wMjgtOS4zNDgtMTQuMDQxLTkuMzQ4LTIyLjU2MnMzLjMyLTE2LjUzNCA5LjM0OC0yMi41NjJjNi4wMzQtNi4wMzQgMTQuMDU0LTkuMzU0IDIyLjU4LTkuMzQ4IDguNTEyIDAuMDA2IDE2LjUwOCAzLjMyNiAyMi41MTQgOS4zNDhMODg3LjA2IDM2MS40NTJjNi4wNDQgNi4wMjggOS4zNzMgMTQuMDQgOS4zNzMgMjIuNTYgMCA4LjUyMS0zLjMzIDE2LjUyNS05LjM3MSAyMi41MzZMNDcwLjk4IDgyMi42M2MtNi4wMzQgNi4wMzQtMTQuMDUyIDkuMzU0LTIyLjU3OSA5LjM0OS04LjUxMy0wLjAwNS0xNi41MS0zLjMyNi0yMi41MTktOS4zNTEtNi4wMjYtNi4wNDItOS4zNDUtMTQuMDU4LTkuMzQ1LTIyLjU3MXoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uLWRpcmVjdGlvbi1sZWZ0IiB1bmljb2RlPSImIzU5MDA5OyIgZD0iTTQyNS45MDkgNDA2LjU0OWMtNi4wNDQtNi4wMjgtOS4zNzMtMTQuMDQtOS4zNzMtMjIuNTYgMC04LjUyMSAzLjMzLTE2LjUyNSA5LjM3MS0yMi41MzZMODQxLjk5LTU0LjYyOTk5OTk5OTk5OTk5NWM2LjAzNC02LjAzNCAxNC4wNTItOS4zNTQgMjIuNTc5LTkuMzQ5IDguNTEzIDAuMDA1IDE2LjUxIDMuMzI2IDIyLjUxOCA5LjM1MSA2LjAyNyA2LjA0MiA5LjM0NiAxNC4wNTggOS4zNDYgMjIuNTcxIDAgOC41MTMtMy4zMiAxNi41MjItOS4zNDggMjIuNTUxTDQ5My41NzcgMzg0bDM5My41MDggMzkzLjUwN2M2LjAyOCA2LjAyOCA5LjM0OCAxNC4wNDEgOS4zNDggMjIuNTYycy0zLjMyIDE2LjUzNC05LjM0OCAyMi41NjJjLTYuMDM0IDYuMDM0LTE0LjA1NCA5LjM1NC0yMi41OCA5LjM0OC04LjUxMi0wLjAwNi0xNi41MDgtMy4zMjYtMjIuNTE0LTkuMzQ4TDQyNS45MDkgNDA2LjU0OXpNNjA3LjQ1Ny0zMi4wNTcwMDAwMDAwMDAwMTZjMCA4LjUxMy0zLjMyIDE2LjUyMi05LjM0OCAyMi41NTFMMjA0LjYwMiAzODQgNTk4LjExIDc3Ny41MDcwMDAwMDAwMDAxYzYuMDI4IDYuMDI4IDkuMzQ4IDE0LjA0MSA5LjM0OCAyMi41NjJzLTMuMzIgMTYuNTM0LTkuMzQ4IDIyLjU2MmMtNi4wMzQgNi4wMzQtMTQuMDU0IDkuMzU0LTIyLjU4IDkuMzQ4LTguNTEyLTAuMDA2LTE2LjUwOC0zLjMyNi0yMi41MTQtOS4zNDhMMTM2LjkzNCA0MDYuNTQ5Yy02LjA0NC02LjAyOC05LjM3My0xNC4wNC05LjM3My0yMi41NiAwLTguNTIxIDMuMzMtMTYuNTI1IDkuMzcxLTIyLjUzNkw1NTMuMDE1LTU0LjYyOTk5OTk5OTk5OTk5NWM2LjAzNC02LjAzNCAxNC4wNTItOS4zNTQgMjIuNTc5LTkuMzQ5IDguNTEzIDAuMDA1IDE2LjUxIDMuMzI2IDIyLjUxOCA5LjM1MSA2LjAyNyA2LjA0MiA5LjM0NSAxNC4wNTkgOS4zNDUgMjIuNTcxeiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPgoKICAgIAogICAgPGdseXBoIGdseXBoLW5hbWU9InlvdTEiIHVuaWNvZGU9IiYjNTkxNDk7IiBkPSJNNzIxLjkyIDQwMS45MmwtMzg0IDM4NGMtMTAuMjQgMTAuMjQtMjUuNiAxMC4yNC0zNS44NCAwcy0xMC4yNC0yNS42IDAtMzUuODRMNjY4LjE2IDM4NCAzMDIuMDggMTcuOTJjLTEwLjI0LTEwLjI0LTEwLjI0LTI1LjYgMC0zNS44NHMyNS42LTEwLjI0IDM1Ljg0IDBsMzg0IDM4NGMxMC4yNCAxMC4yNCAxMC4yNCAyNS42IDAgMzUuODR6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iamluZ2dhbyIgdW5pY29kZT0iJiM1ODk0MDsiIGQ9Ik04NDcuNTU0NTYgMjkuOTAwOEgxNzYuNDcxMDRjLTQ1LjAwNDggMC04MS4xNTcxMiAxNy42Mzg0LTk5LjIxMDI0IDQ4LjQwOTYtMTguMDU4MjQgMzAuNzY2MDgtMTUuODYxNzYgNzAuOTU4MDggNi4wNTE4NCAxMTAuMjMzNkw0MjEuOTA4NDggNzk1LjM1MTA0QzQ0My45NTAwOCA4MzQuOTEzMjggNDc2LjcyMzIgODU3LjU4OTc2IDUxMS43OTAwOCA4NTcuNTg5NzZzNjcuODA5MjgtMjIuNjQ1NzYgODkuOTEyMzItNjIuMTcyMTZsMzM4Ljk1NDI0LTYwNi45MzUwNGMyMS45MDg0OC0zOS4yNzU1MiAyNC4xNzE1Mi03OS40MzY4IDYuMDgyNTYtMTEwLjIwMjg4LTE4LjAyNzUyLTMwLjc2NjA4LTU0LjIxMDU2LTQ4LjM3ODg4LTk5LjE4NDY0LTQ4LjM3ODg4ek01MTEuODI1OTIgNzkzLjg5MTg0Yy0xMS4xNTEzNiAwLTIzLjkyMDY0LTExLjA1NDA4LTM0LjI3MzI4LTI5LjU1Nzc2TDEzOC45NTY4IDE1Ny40NjA0OGMtMTAuNjA4NjQtMTkuMDQ2NC0xMy4wOTE4NC0zNi4xNTIzMi02Ljc1MzI4LTQ2Ljk0NTI4IDYuMzQzNjgtMTAuNzY3MzYgMjIuNDg3MDQtMTYuOTQ3MiA0NC4yNzI2NC0xNi45NDcyaDY3MS4wODM1MmMyMS44MjE0NCAwIDM3LjkzOTIgNi4xNDkxMiA0NC4yNzI2NCAxNi45NDcyIDYuMzAyNzIgMTAuNzYyMjQgMy44NTUzNiAyNy44NjgxNi02Ljc4NCA0Ni45MTQ1Nkw1NDYuMDk5MiA3NjQuMzM0MDhjLTEwLjMyNzA0IDE4LjUwMzY4LTIzLjE1Nzc2IDI5LjU1Nzc2LTM0LjI3MzI4IDI5LjU1Nzc2eiBtMC4xODk0NC00NzYuNjQxMjhhMzEuODQ2NCAzMS44NDY0IDAgMCAwLTMxLjg0NjQgMzEuODUxNTJWNjM1Ljc1MDRhMzEuODYxNzYgMzEuODYxNzYgMCAwIDAgMzEuODQ2NCAzMS44NTE1MiAzMS44NjE3NiAzMS44NjE3NiAwIDAgMCAzMS44NTE1Mi0zMS44NTE1MnYtMjg2LjY1MzQ0YTMxLjg0NjQgMzEuODQ2NCAwIDAgMC0zMS44NTE1Mi0zMS44NDY0ek01MTIgMjA4LjM4OTEybS00Ny4zMzk1MiAwYTQ3LjMzOTUyIDQ3LjMzOTUyIDAgMSAxIDk0LjY3OTA0IDAgNDcuMzM5NTIgNDcuMzM5NTIgMCAxIDEtOTQuNjc5MDQgMFoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJub3ZpZ29fbGVmdCIgdW5pY29kZT0iJiM1ODk3MDsiIGQ9Ik0yNjQuNzAwMTQ5IDM1OC4yODczODVhMjIuOTQ5Njg4IDIyLjk0OTY4OCAwIDAgMC0xNi4yODA4MDEgNi43NDM1ODhjLTguOTkxNzkyIDguOTkxNzkyLTguOTkxNzkyIDIzLjU2OTgxMiAwIDMyLjU2MTYwM2w0MjAuNzkyNzE4IDQyMC43OTM3NDJjOC45OTE3OTIgOC45OTE3OTIgMjMuNTY5ODEyIDguOTkxNzkyIDMyLjU2MTYwMyAwIDguOTkwNzY4LTguOTkxNzkyIDguOTkwNzY4LTIzLjU2OTgxMiAwLTMyLjU2MDU4bC00MjAuNzkzNzQxLTQyMC43OTQ3NjVhMjIuOTQ3NjQxIDIyLjk0NzY0MSAwIDAgMC0xNi4yNzk3NzktNi43NDM1ODh6TTY4NS40OTM4OTEtNjIuNTA2MzU2OTk5OTk5OThhMjIuOTQ5Njg4IDIyLjk0OTY4OCAwIDAgMC0xNi4yODA4MDEgNi43NDM1ODhsLTQyMC43OTM3NDIgNDIwLjc5NDc2NWMtOC45OTE3OTIgOC45OTE3OTItOC45OTE3OTIgMjMuNTY5ODEyIDAgMzIuNTYxNjA0IDguOTkwNzY4IDguOTkwNzY4IDIzLjU2OTgxMiA4Ljk5MDc2OCAzMi41NjA1OCAwbDQyMC43OTM3NDEtNDIwLjc5Mzc0MmM4Ljk5MDc2OC04Ljk5MTc5MiA4Ljk5MDc2OC0yMy41Njk4MTIgMC0zMi41NjE2MDRhMjIuOTQ4NjY1IDIyLjk0ODY2NSAwIDAgMC0xNi4yNzk3NzgtNi43NDQ2MTF6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGltZXMiIHVuaWNvZGU9IiYjNTg4ODA7IiBkPSJNOTA3LjUxIDY3LjU5NTAwMDAwMDAwMDAzbC03OS4xMDEtNzkuMTAyLTMxNi40MDYgMzE2LjQwNS0zMTYuNDA1LTMxNi40MDUtNzkuMTA0IDc5LjEwMkw0MzIuODk5IDM4NCAxMTYuNDk0IDcwMC40MDVsNzkuMTA0IDc5LjA5OSAzMTYuNDA1LTMxNi40MDVMODI4LjQxIDc3OS41MDRsNzkuMDk4LTc5LjA5OUw1OTEuMTAyIDM4NGwzMTYuNDA1LTMxNi40MDV6IiAgaG9yaXotYWR2LXg9IjEwMjUiIC8+CgogICAgCgoKICA8L2ZvbnQ+CjwvZGVmcz48L3N2Zz4K') format('svg');}.spfont{font-family:"spfont" !important;font-size:14px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.sp-unselect-all:before{content:"\e634";}.sp-clear:before{content:"\e68c";}.sp-select-all:before{content:"\e628";}.sp-last:before{content:"\e67e";}.sp-first:before{content:"\e681";}.sp-next:before{content:"\e70d";}.sp-warning:before{content:"\e63c";}.sp-previous:before{content:"\e65a";}.sp-close:before{content:"\e600";}body{background:#f1f4f6;}body.is-dialog{background:#fff;}.selection{position:absolute;border:1px solid #8B9;background-color:#BEC;}.main-header .logo,.main-header .navbar{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.main-header .navbar{position:relative;}.main-header .navbar .sidebar-toggle{position:absolute;width:45px;text-align:center;}.main-header .navbar #nav{position:absolute;left:45px;}.main-header .navbar .navbar-custom-menu{position:absolute;right:0;}.bootstrap-dialog .modal-dialog{max-width:885px;}html.ios-fix,html.ios-fix body{height:100%;overflow:auto;-webkit-overflow-scrolling:touch;}.content{min-height:500px;}#header{background:#fff;box-shadow:0 2px 2px rgba(0,0,0,0.05),0 1px 0 rgba(0,0,0,0.05);}.content-wrapper{position:relative;}.control-relative{position:relative;}.tab-addtabs{overflow:hidden;}.tab-addtabs .tab-pane{height:100%;width:100%;}.row-between .col-xs-6 + .col-xs-6:before{content:"-";position:absolute;left:-2%;top:6px;}@media only screen and (min-width:481px){.row-flex{display:flex;flex-wrap:wrap;}.row-flex > [class*='col-']{display:flex;flex-direction:column;}.row-flex.row:after,.row-flex.row:before{display:flex;}}@media (max-width:991px){.main-header .navbar-custom-menu a.btn-danger{color:#fff;background-color:#e74c3c;}.main-header .navbar-custom-menu a.btn-primary{color:#fff;background-color:#2c3e50;}}.common-search-table{min-height:20px;padding:15px;margin-bottom:15px;background-color:#f5f5f5;}.searchit{border-bottom:1px dashed #3c8dbc;}.fixed-footer{position:fixed;bottom:0;background-color:#ecf0f1;width:100%;margin-bottom:0;padding:10px;}.layer-footer{display:none;}table.table-template{overflow:hidden;}.sp_container .msg-box{position:absolute;right:0;top:0;}.toast-top-right-index{top:62px;right:12px;}.bootstrap-select .status{background:#f0f0f0;clear:both;color:#999;font-size:12px;font-weight:500;line-height:1;margin-bottom:-5px;padding:10px 20px;}.img-center{margin:0 auto;display:inline;float:none;}#ribbon{overflow:hidden;padding:15px 15px 0 15px;position:relative;}#ribbon a{color:#777 !important;text-decoration:none !important;}#ribbon .breadcrumb{display:inline-block;margin:0;padding:0;background:none;vertical-align:top;}#ribbon .breadcrumb > .active,#ribbon .breadcrumb li{color:#aaa;}#ribbon .shortcut a{margin-left:10px;}.is-dialog #main{background:#fff;}form.form-horizontal .control-label{font-weight:normal;}.user-panel > .image img{width:45px;height:45px;}.panel-intro{margin-bottom:0;border:none;}.panel-intro > .panel-heading{padding:15px;padding-bottom:0;background:#e8edf0;border-color:#e8edf0;position:relative;}.panel-intro > .panel-heading .panel-lead{margin-bottom:15px;}.panel-intro > .panel-heading .panel-lead em{display:block;font-weight:bold;font-style:normal;}.panel-intro > .panel-heading .panel-title{height:25px;font-weight:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.panel-intro > .panel-heading .panel-control{height:42px;position:absolute;top:8px;right:8px;}.panel-intro > .panel-heading .panel-control .fa{font-size:14px;}.panel-intro > .panel-heading .nav-tabs{border-bottom:0;margin-bottom:0;}.panel-intro > .panel-heading .nav-tabs > li > a{margin-right:4px;color:#95a5a6;background-color:#d8e0e6;border:1px solid #e8edf0;border-bottom-color:transparent;}.panel-intro > .panel-heading .nav-tabs > li > a:hover,.panel-intro > .panel-heading .nav-tabs > li > a:focus{border:1px solid #e8edf0;color:#7b8a8b;background-color:#c9d4dc;}.panel-intro > .panel-heading .nav-tabs > li.active > a,.panel-intro > .panel-heading .nav-tabs > li.active > a:hover,.panel-intro > .panel-heading .nav-tabs > li.active > a:focus{color:#7b8a8b;background-color:#ffffff;border-bottom-color:transparent;cursor:default;}.panel-tabs .panel-heading{padding:12px 15px 12px 15px;}.panel-tabs .panel-heading .panel-lead{margin-bottom:0px;}.panel-nav .panel-heading{padding:0px;padding-bottom:0;background:#f1f4f6;border-color:#f1f4f6;}.panel-nav .nav-tabs > li > a{padding:12px 15px;background-color:#e8edf0;border:1px solid #f1f4f6;}.panel-nav .nav-tabs > li > a:hover,.panel-nav .nav-tabs > li > a:focus{border:1px solid #e8edf0;background-color:#e8edf0;}.panel-nav .nav-tabs > li.active > a,.panel-nav .nav-tabs > li.active > a:hover,.panel-nav .nav-tabs > li.active > a:focus{border-color:#f1f4f6;border-bottom-color:transparent;}.nav-addtabs{border:none;}.nav-addtabs.disable-top-badge > li > a > .pull-right-container{display:none;}.nav-addtabs > li{margin:0;}.nav-addtabs > li > a{height:49px;line-height:49px;padding:0 15px;border-radius:0;border:none;border-right:1px solid rgba(0,0,0,0.05);margin:0;color:#95a5a6;}.nav-addtabs > li > a:hover,.nav-addtabs > li > a:focus{border:none;color:#2c3e50;border-right:1px solid rgba(0,0,0,0.05);}.nav-addtabs > li > a i{margin-right:3px;}.nav-addtabs > li.active > a{height:49px;line-height:49px;padding:0 15px;border-radius:0;border:none;border-right:1px solid rgba(0,0,0,0.05);background:#f1f4f6;color:#2c3e50;overflow:hidden;}.nav-addtabs > li.active > a:hover,.nav-addtabs > li.active > a:focus{border:none;color:#2c3e50;border-right:1px solid rgba(0,0,0,0.05);background:#f1f4f6;}.nav-addtabs > li .close-tab{font-size:10px;position:absolute;right:5px;top:50%;margin-top:-7px;z-index:100;cursor:hand;cursor:pointer;color:#fff;display:none;}.nav-addtabs .open > a:hover,.nav-addtabs .open > a:focus{border-right:1px solid rgba(0,0,0,0.05);}.nav-addtabs ul li{position:relative;}.nav-addtabs li:hover > .close-tab{display:block;}.main-sidebar .sidebar-form{overflow:visible;}.main-sidebar .sidebar-form .menuresult{z-index:999;position:absolute;top:34px;left:-1px;width:100%;max-height:250px;overflow:auto;margin:0;border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.main-sidebar .sidebar-form .menuresult a{border-top:1px solid #eee;background-color:#fff;border-bottom:1px solid #eee;margin-bottom:-1px;display:block;padding:10px 15px;color:#222d32;}.main-sidebar .sidebar-form .menuresult a:hover{background:#eee;}.input-group .sp_result_area{width:100%;}.sidebar-menu.show-submenu .treeview-menu{display:block;}.sidebar-menu > li .badge{margin-top:0;}.sidebar-collapse .user-panel > .image img{width:25px;height:25px;}@media (min-width:768px){.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{top:41px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container{top:7px!important;height:17px;}}.fieldlist dd{display:block;margin:5px 0;}.fieldlist dd input{display:inline-block;width:300px;}.fieldlist dd input:first-child{width:110px;}.fieldlist dd ins{width:110px;display:inline-block;text-decoration:none;font-weight:bold;}.form-layer{height:100%;min-height:150px;min-width:300px;}.form-layer .form-body{width:100%;overflow:auto;top:0;position:absolute;z-index:10;bottom:50px;padding:15px;}.form-layer .form-footer{height:50px;line-height:50px;background-color:#ecf0f1;width:100%;position:absolute;z-index:200;bottom:0;margin:0;}.form-layer .form-footer .form-group{margin-left:0;margin-right:0;}#treeview .jstree-container-ul .jstree-node{display:block;clear:both;}#treeview .jstree-leaf:not(:first-child){float:left;background:none;margin-left:0;width:80px;clear:none;}#treeview .jstree-leaf{float:left;margin-left:0;padding-left:24px;width:80px;clear:none;color:#777;}#treeview .jstree-leaf > .jstree-icon,#treeview .jstree-leaf .jstree-themeicon{display:none;}#treeview .jstree-last{background-image:url("../img/32px.png");background-position:-292px -4px;background-repeat:repeat-y;}#treeview .jstree-children:before,#treeview .jstree-children:after{content:" ";display:table;}#treeview .jstree-children:after{clear:both;}#treeview .jstree-themeicon{display:none;}.fixed-table-container{border:none!important;}.nice-validator input,.nice-validator select,.nice-validator textarea,.nice-validator [contenteditable]{display:inline-block;*display:inline;*zoom:1;}.nice-validator .note-editor .note-editing-area .note-editable{display:inherit;}.plupload-preview{padding:0 10px;margin-bottom:0;}.plupload-preview li{margin-top:15px;}.plupload-preview .thumbnail{margin-bottom:10px;}.plupload-preview a{display:block;}.plupload-preview a:first-child{height:90px;}.plupload-preview a img{height:80px;object-fit:cover;}.pjax-loader-bar .progress{position:fixed;top:0;left:0;height:2px;background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,0.7);-webkit-transition:width 0.4s ease;transition:width 0.4s ease;}.dropdown-menu.text-left a,.dropdown-menu.text-left li{text-align:left!important;}.bootstrap-table .fixed-table-toolbar .dropdown-menu{overflow:auto;}.toolbar{margin-top:10px;margin-bottom:10px;}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{line-height:inherit;}.fixed-table-toolbar .toolbar{margin-top:0;margin-bottom:0;}.bootstrap-table table tbody tr:first-child td .bs-checkbox{vertical-align:middle;}.bootstrap-table td.bs-checkbox{vertical-align:middle;}.dropdown-submenu{position:relative;}.dropdown-submenu > .dropdown-menu{overflow:auto;top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-webkit-background-clip:padding-box;-moz-border-radius:0 6px 6px 6px;-moz-background-clip:padding;border-radius:0 6px 6px 6px;background-clip:padding-box;}.dropdown-submenu:hover > .dropdown-menu{display:block;}.dropdown-submenu:hover > a:after{border-left-color:#fff;}.dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;}.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left > .dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-webkit-background-clip:padding-box;-moz-border-radius:6px 0 6px 6px;-moz-background-clip:padding;border-radius:6px 0 6px 6px;background-clip:padding-box;}.toast-primary{background-color:#48c9b0!important;}.toast-success{background-color:#18bc9c!important;}.toast-error{background-color:#e74c3c!important;}.toast-info{background-color:#5dade2!important;}.toast-warning{background-color:#f1c40f!important;}.toast-inverse{background-color:#34495e!important;}.toast-default{background-color:#bdc3c7!important;}#toast-container > div,#toast-container > div:hover{-webkit-box-shadow:0 0 3px #eee;-moz-box-shadow:0 0 3px #eee;box-shadow:0 0 3px #eee;}.layui-layer-fast{}.layui-layer-fast .layui-layer-title{background:#2c3e50!important;color:#fff!important;border-bottom:none;}.layui-layer-fast .layui-layer-title ~ .layui-layer-setwin{top:0px;height:42px;}.layui-layer-fast .layui-layer-title ~ .layui-layer-setwin > a{height:42px;line-height:42px;display:inline-block;}.layui-layer-fast.layui-layer-border{border:none!important;box-shadow:1px 1px 50px rgba(0,0,0,0.3) !important;}.layui-layer-fast.layui-layer-iframe{overflow:visible;}.layui-layer-fast .layui-layer-moves{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}.layui-layer-fast .layui-layer-btn{text-align:center!important;padding:10px!important;background:#ecf0f1;overflow:hidden;}.layui-layer-fast .layui-layer-btn a{background-color:#95a5a6;border-color:#95a5a6;color:#fff!important;height:31px;margin-top:0;border:1px solid transparent;}.layui-layer-fast .layui-layer-btn .layui-layer-btn0{background-color:#18bc9c;border-color:#18bc9c;}.layui-layer-fast .layui-layer-footer{padding:8px 20px;background-color:#ecf0f1;height:auto;text-align:inherit!important;}.layui-layer-fast .layui-layer-setwin > a{background:none!important;}.layui-layer-fast .layui-layer-setwin > a cite{display:none;}.layui-layer-fast .layui-layer-setwin > a:after{content:"\e625";font-family:iconfont;font-style:normal;font-weight:normal;text-decoration:inherit;position:absolute;font-size:18px;color:#fff;margin:0;z-index:1;}.layui-layer-fast .layui-layer-setwin > a:hover{text-decoration:none!important;background:none!important;}.layui-layer-fast .layui-layer-setwin > a:focus{text-decoration:none!important;}.layui-layer-fast .layui-layer-setwin .layui-layer-min{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-min:after{content:"\e625";}.layui-layer-fast .layui-layer-setwin .layui-layer-max{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-max:after{content:"\e623";}.layui-layer-fast .layui-layer-setwin .layui-layer-maxmin{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-maxmin:after{content:"\e624";}.layui-layer-fast .layui-layer-setwin .layui-layer-close1:after{content:"\e626";}.layui-layer-fast .layui-layer-setwin .layui-layer-close2,.layui-layer-fast .layui-layer-setwin .layui-layer-close2:hover{background:url('../libs/layer/dist/theme/default/icon.png') no-repeat -149px -31px !important;top:-30px;right:-30px;}.layui-layer-fast .layui-layer-setwin .layui-layer-close2:after,.layui-layer-fast .layui-layer-setwin .layui-layer-close2:hover:after{display:none;}.layui-layer-content{clear:both;}.layui-layer-fast-msg{min-width:100px;border-radius:2px;background-color:rgba(0,0,0,0.6);color:#fff;}.layui-layer-fast-msg .layui-layer-content{padding:12px 25px;text-align:center;}.n-bootstrap .input-group > .n-right{position:absolute;}@media (min-width:564px){body.is-dialog .daterangepicker{min-width:130px;}body.is-dialog .daterangepicker .ranges ul{width:130px;}}@media (max-width:480px){.nav-addtabs{display:none;}.fixed-table-toolbar .columns-right.btn-group{display:none;}.fixed .content-wrapper,.fixed .right-side{padding-top:50px;}}@media (max-width:768px){.n-bootstrap .n-right{margin-top:0;top:-20px;position:absolute;left:0;text-align:right;width:100%;}.n-bootstrap .n-right .msg-wrap{position:relative;}.n-bootstrap .col-xs-12 > .n-right .msg-wrap{margin-right:15px;}}.radio > label,.checkbox > label{margin-right:10px;}.radio > label > input,.checkbox > label > input{margin:2px 0 0;} \ No newline at end of file +/*! * Bootstrap v3.3.6 (http://getbootstrap.com) * Copyright 2011-2015 Twitter,Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;}body{margin:0;}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block;}audio,canvas,progress,video{display:inline-block;vertical-align:baseline;}audio:not([controls]){display:none;height:0;}[hidden],template{display:none;}a{background-color:transparent;}a:active,a:hover{outline:0;}abbr[title]{border-bottom:1px dotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}h1{font-size:2em;margin:0.67em 0;}mark{background:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}figure{margin:1em 40px;}hr{box-sizing:content-box;height:0;}pre{overflow:auto;}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em;}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;}button{overflow:visible;}button,select{text-transform:none;}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;}button[disabled],html input[disabled]{cursor:default;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}input{line-height:normal;}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto;}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box;}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em;}legend{border:0;padding:0;}textarea{overflow:auto;}optgroup{font-weight:bold;}table{border-collapse:collapse;border-spacing:0;}td,th{padding:0;}@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important;}a,a:visited{text-decoration:underline;}a[href]:after{content:" (" attr(href) ")";}abbr[title]:after{content:" (" attr(title) ")";}a[href^="#"]:after,a[href^="javascript:"]:after{content:"";}pre,blockquote{border:1px solid #999;page-break-inside:avoid;}thead{display:table-header-group;}tr,img{page-break-inside:avoid;}img{max-width:100% !important;}p,h2,h3{orphans:3;widows:3;}h2,h3{page-break-after:avoid;}.navbar{display:none;}.btn > .caret,.dropup > .btn > .caret{border-top-color:#000 !important;}.label{border:1px solid #000;}.table{border-collapse:collapse !important;}.table td,.table th{background-color:#fff !important;}.table-bordered th,.table-bordered td{border:1px solid #ddd !important;}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg');}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.glyphicon-asterisk:before{content:"\002a";}.glyphicon-plus:before{content:"\002b";}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac";}.glyphicon-minus:before{content:"\2212";}.glyphicon-cloud:before{content:"\2601";}.glyphicon-envelope:before{content:"\2709";}.glyphicon-pencil:before{content:"\270f";}.glyphicon-glass:before{content:"\e001";}.glyphicon-music:before{content:"\e002";}.glyphicon-search:before{content:"\e003";}.glyphicon-heart:before{content:"\e005";}.glyphicon-star:before{content:"\e006";}.glyphicon-star-empty:before{content:"\e007";}.glyphicon-user:before{content:"\e008";}.glyphicon-film:before{content:"\e009";}.glyphicon-th-large:before{content:"\e010";}.glyphicon-th:before{content:"\e011";}.glyphicon-th-list:before{content:"\e012";}.glyphicon-ok:before{content:"\e013";}.glyphicon-remove:before{content:"\e014";}.glyphicon-zoom-in:before{content:"\e015";}.glyphicon-zoom-out:before{content:"\e016";}.glyphicon-off:before{content:"\e017";}.glyphicon-signal:before{content:"\e018";}.glyphicon-cog:before{content:"\e019";}.glyphicon-trash:before{content:"\e020";}.glyphicon-home:before{content:"\e021";}.glyphicon-file:before{content:"\e022";}.glyphicon-time:before{content:"\e023";}.glyphicon-road:before{content:"\e024";}.glyphicon-download-alt:before{content:"\e025";}.glyphicon-download:before{content:"\e026";}.glyphicon-upload:before{content:"\e027";}.glyphicon-inbox:before{content:"\e028";}.glyphicon-play-circle:before{content:"\e029";}.glyphicon-repeat:before{content:"\e030";}.glyphicon-refresh:before{content:"\e031";}.glyphicon-list-alt:before{content:"\e032";}.glyphicon-lock:before{content:"\e033";}.glyphicon-flag:before{content:"\e034";}.glyphicon-headphones:before{content:"\e035";}.glyphicon-volume-off:before{content:"\e036";}.glyphicon-volume-down:before{content:"\e037";}.glyphicon-volume-up:before{content:"\e038";}.glyphicon-qrcode:before{content:"\e039";}.glyphicon-barcode:before{content:"\e040";}.glyphicon-tag:before{content:"\e041";}.glyphicon-tags:before{content:"\e042";}.glyphicon-book:before{content:"\e043";}.glyphicon-bookmark:before{content:"\e044";}.glyphicon-print:before{content:"\e045";}.glyphicon-camera:before{content:"\e046";}.glyphicon-font:before{content:"\e047";}.glyphicon-bold:before{content:"\e048";}.glyphicon-italic:before{content:"\e049";}.glyphicon-text-height:before{content:"\e050";}.glyphicon-text-width:before{content:"\e051";}.glyphicon-align-left:before{content:"\e052";}.glyphicon-align-center:before{content:"\e053";}.glyphicon-align-right:before{content:"\e054";}.glyphicon-align-justify:before{content:"\e055";}.glyphicon-list:before{content:"\e056";}.glyphicon-indent-left:before{content:"\e057";}.glyphicon-indent-right:before{content:"\e058";}.glyphicon-facetime-video:before{content:"\e059";}.glyphicon-picture:before{content:"\e060";}.glyphicon-map-marker:before{content:"\e062";}.glyphicon-adjust:before{content:"\e063";}.glyphicon-tint:before{content:"\e064";}.glyphicon-edit:before{content:"\e065";}.glyphicon-share:before{content:"\e066";}.glyphicon-check:before{content:"\e067";}.glyphicon-move:before{content:"\e068";}.glyphicon-step-backward:before{content:"\e069";}.glyphicon-fast-backward:before{content:"\e070";}.glyphicon-backward:before{content:"\e071";}.glyphicon-play:before{content:"\e072";}.glyphicon-pause:before{content:"\e073";}.glyphicon-stop:before{content:"\e074";}.glyphicon-forward:before{content:"\e075";}.glyphicon-fast-forward:before{content:"\e076";}.glyphicon-step-forward:before{content:"\e077";}.glyphicon-eject:before{content:"\e078";}.glyphicon-chevron-left:before{content:"\e079";}.glyphicon-chevron-right:before{content:"\e080";}.glyphicon-plus-sign:before{content:"\e081";}.glyphicon-minus-sign:before{content:"\e082";}.glyphicon-remove-sign:before{content:"\e083";}.glyphicon-ok-sign:before{content:"\e084";}.glyphicon-question-sign:before{content:"\e085";}.glyphicon-info-sign:before{content:"\e086";}.glyphicon-screenshot:before{content:"\e087";}.glyphicon-remove-circle:before{content:"\e088";}.glyphicon-ok-circle:before{content:"\e089";}.glyphicon-ban-circle:before{content:"\e090";}.glyphicon-arrow-left:before{content:"\e091";}.glyphicon-arrow-right:before{content:"\e092";}.glyphicon-arrow-up:before{content:"\e093";}.glyphicon-arrow-down:before{content:"\e094";}.glyphicon-share-alt:before{content:"\e095";}.glyphicon-resize-full:before{content:"\e096";}.glyphicon-resize-small:before{content:"\e097";}.glyphicon-exclamation-sign:before{content:"\e101";}.glyphicon-gift:before{content:"\e102";}.glyphicon-leaf:before{content:"\e103";}.glyphicon-fire:before{content:"\e104";}.glyphicon-eye-open:before{content:"\e105";}.glyphicon-eye-close:before{content:"\e106";}.glyphicon-warning-sign:before{content:"\e107";}.glyphicon-plane:before{content:"\e108";}.glyphicon-calendar:before{content:"\e109";}.glyphicon-random:before{content:"\e110";}.glyphicon-comment:before{content:"\e111";}.glyphicon-magnet:before{content:"\e112";}.glyphicon-chevron-up:before{content:"\e113";}.glyphicon-chevron-down:before{content:"\e114";}.glyphicon-retweet:before{content:"\e115";}.glyphicon-shopping-cart:before{content:"\e116";}.glyphicon-folder-close:before{content:"\e117";}.glyphicon-folder-open:before{content:"\e118";}.glyphicon-resize-vertical:before{content:"\e119";}.glyphicon-resize-horizontal:before{content:"\e120";}.glyphicon-hdd:before{content:"\e121";}.glyphicon-bullhorn:before{content:"\e122";}.glyphicon-bell:before{content:"\e123";}.glyphicon-certificate:before{content:"\e124";}.glyphicon-thumbs-up:before{content:"\e125";}.glyphicon-thumbs-down:before{content:"\e126";}.glyphicon-hand-right:before{content:"\e127";}.glyphicon-hand-left:before{content:"\e128";}.glyphicon-hand-up:before{content:"\e129";}.glyphicon-hand-down:before{content:"\e130";}.glyphicon-circle-arrow-right:before{content:"\e131";}.glyphicon-circle-arrow-left:before{content:"\e132";}.glyphicon-circle-arrow-up:before{content:"\e133";}.glyphicon-circle-arrow-down:before{content:"\e134";}.glyphicon-globe:before{content:"\e135";}.glyphicon-wrench:before{content:"\e136";}.glyphicon-tasks:before{content:"\e137";}.glyphicon-filter:before{content:"\e138";}.glyphicon-briefcase:before{content:"\e139";}.glyphicon-fullscreen:before{content:"\e140";}.glyphicon-dashboard:before{content:"\e141";}.glyphicon-paperclip:before{content:"\e142";}.glyphicon-heart-empty:before{content:"\e143";}.glyphicon-link:before{content:"\e144";}.glyphicon-phone:before{content:"\e145";}.glyphicon-pushpin:before{content:"\e146";}.glyphicon-usd:before{content:"\e148";}.glyphicon-gbp:before{content:"\e149";}.glyphicon-sort:before{content:"\e150";}.glyphicon-sort-by-alphabet:before{content:"\e151";}.glyphicon-sort-by-alphabet-alt:before{content:"\e152";}.glyphicon-sort-by-order:before{content:"\e153";}.glyphicon-sort-by-order-alt:before{content:"\e154";}.glyphicon-sort-by-attributes:before{content:"\e155";}.glyphicon-sort-by-attributes-alt:before{content:"\e156";}.glyphicon-unchecked:before{content:"\e157";}.glyphicon-expand:before{content:"\e158";}.glyphicon-collapse-down:before{content:"\e159";}.glyphicon-collapse-up:before{content:"\e160";}.glyphicon-log-in:before{content:"\e161";}.glyphicon-flash:before{content:"\e162";}.glyphicon-log-out:before{content:"\e163";}.glyphicon-new-window:before{content:"\e164";}.glyphicon-record:before{content:"\e165";}.glyphicon-save:before{content:"\e166";}.glyphicon-open:before{content:"\e167";}.glyphicon-saved:before{content:"\e168";}.glyphicon-import:before{content:"\e169";}.glyphicon-export:before{content:"\e170";}.glyphicon-send:before{content:"\e171";}.glyphicon-floppy-disk:before{content:"\e172";}.glyphicon-floppy-saved:before{content:"\e173";}.glyphicon-floppy-remove:before{content:"\e174";}.glyphicon-floppy-save:before{content:"\e175";}.glyphicon-floppy-open:before{content:"\e176";}.glyphicon-credit-card:before{content:"\e177";}.glyphicon-transfer:before{content:"\e178";}.glyphicon-cutlery:before{content:"\e179";}.glyphicon-header:before{content:"\e180";}.glyphicon-compressed:before{content:"\e181";}.glyphicon-earphone:before{content:"\e182";}.glyphicon-phone-alt:before{content:"\e183";}.glyphicon-tower:before{content:"\e184";}.glyphicon-stats:before{content:"\e185";}.glyphicon-sd-video:before{content:"\e186";}.glyphicon-hd-video:before{content:"\e187";}.glyphicon-subtitles:before{content:"\e188";}.glyphicon-sound-stereo:before{content:"\e189";}.glyphicon-sound-dolby:before{content:"\e190";}.glyphicon-sound-5-1:before{content:"\e191";}.glyphicon-sound-6-1:before{content:"\e192";}.glyphicon-sound-7-1:before{content:"\e193";}.glyphicon-copyright-mark:before{content:"\e194";}.glyphicon-registration-mark:before{content:"\e195";}.glyphicon-cloud-download:before{content:"\e197";}.glyphicon-cloud-upload:before{content:"\e198";}.glyphicon-tree-conifer:before{content:"\e199";}.glyphicon-tree-deciduous:before{content:"\e200";}.glyphicon-cd:before{content:"\e201";}.glyphicon-save-file:before{content:"\e202";}.glyphicon-open-file:before{content:"\e203";}.glyphicon-level-up:before{content:"\e204";}.glyphicon-copy:before{content:"\e205";}.glyphicon-paste:before{content:"\e206";}.glyphicon-alert:before{content:"\e209";}.glyphicon-equalizer:before{content:"\e210";}.glyphicon-king:before{content:"\e211";}.glyphicon-queen:before{content:"\e212";}.glyphicon-pawn:before{content:"\e213";}.glyphicon-bishop:before{content:"\e214";}.glyphicon-knight:before{content:"\e215";}.glyphicon-baby-formula:before{content:"\e216";}.glyphicon-tent:before{content:"\26fa";}.glyphicon-blackboard:before{content:"\e218";}.glyphicon-bed:before{content:"\e219";}.glyphicon-apple:before{content:"\f8ff";}.glyphicon-erase:before{content:"\e221";}.glyphicon-hourglass:before{content:"\231b";}.glyphicon-lamp:before{content:"\e223";}.glyphicon-duplicate:before{content:"\e224";}.glyphicon-piggy-bank:before{content:"\e225";}.glyphicon-scissors:before{content:"\e226";}.glyphicon-bitcoin:before{content:"\e227";}.glyphicon-btc:before{content:"\e227";}.glyphicon-xbt:before{content:"\e227";}.glyphicon-yen:before{content:"\00a5";}.glyphicon-jpy:before{content:"\00a5";}.glyphicon-ruble:before{content:"\20bd";}.glyphicon-rub:before{content:"\20bd";}.glyphicon-scale:before{content:"\e230";}.glyphicon-ice-lolly:before{content:"\e231";}.glyphicon-ice-lolly-tasted:before{content:"\e232";}.glyphicon-education:before{content:"\e233";}.glyphicon-option-horizontal:before{content:"\e234";}.glyphicon-option-vertical:before{content:"\e235";}.glyphicon-menu-hamburger:before{content:"\e236";}.glyphicon-modal-window:before{content:"\e237";}.glyphicon-oil:before{content:"\e238";}.glyphicon-grain:before{content:"\e239";}.glyphicon-sunglasses:before{content:"\e240";}.glyphicon-text-size:before{content:"\e241";}.glyphicon-text-color:before{content:"\e242";}.glyphicon-text-background:before{content:"\e243";}.glyphicon-object-align-top:before{content:"\e244";}.glyphicon-object-align-bottom:before{content:"\e245";}.glyphicon-object-align-horizontal:before{content:"\e246";}.glyphicon-object-align-left:before{content:"\e247";}.glyphicon-object-align-vertical:before{content:"\e248";}.glyphicon-object-align-right:before{content:"\e249";}.glyphicon-triangle-right:before{content:"\e250";}.glyphicon-triangle-left:before{content:"\e251";}.glyphicon-triangle-bottom:before{content:"\e252";}.glyphicon-triangle-top:before{content:"\e253";}.glyphicon-console:before{content:"\e254";}.glyphicon-superscript:before{content:"\e255";}.glyphicon-subscript:before{content:"\e256";}.glyphicon-menu-left:before{content:"\e257";}.glyphicon-menu-right:before{content:"\e258";}.glyphicon-menu-down:before{content:"\e259";}.glyphicon-menu-up:before{content:"\e260";}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0);}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;line-height:1.42857143;color:#333333;background-color:#fff;}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;}a{color:#2c3e50;text-decoration:none;}a:hover,a:focus{color:#11181f;text-decoration:underline;}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}figure{margin:0;}img{vertical-align:middle;}.img-responsive,.thumbnail > img,.thumbnail a > img,.carousel-inner > .item > img,.carousel-inner > .item > a > img{display:block;max-width:100%;height:auto;}.img-rounded{border-radius:5px;}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto;}.img-circle{border-radius:50%;}hr{margin-top:17px;margin-bottom:17px;border:0;border-top:1px solid #eeeeee;}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto;}[role="button"]{cursor:pointer;}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777777;}h1,.h1,h2,.h2,h3,.h3{margin-top:17px;margin-bottom:8.5px;}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%;}h4,.h4,h5,.h5,h6,.h6{margin-top:8.5px;margin-bottom:8.5px;}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%;}h1,.h1{font-size:31px;}h2,.h2{font-size:25px;}h3,.h3{font-size:21px;}h4,.h4{font-size:15px;}h5,.h5{font-size:12px;}h6,.h6{font-size:11px;}p{margin:0 0 8.5px;}.lead{margin-bottom:17px;font-size:13px;font-weight:300;line-height:1.4;}@media (min-width:768px){.lead{font-size:18px;}}small,.small{font-size:91%;}mark,.mark{background-color:#fcf8e3;padding:.2em;}.text-left{text-align:left;}.text-right{text-align:right;}.text-center{text-align:center;}.text-justify{text-align:justify;}.text-nowrap{white-space:nowrap;}.text-lowercase{text-transform:lowercase;}.text-uppercase{text-transform:uppercase;}.text-capitalize{text-transform:capitalize;}.text-muted{color:#777777;}.text-primary{color:#2c3e50;}a.text-primary:hover,a.text-primary:focus{color:#1a242f;}.text-success{color:#18bc9c;}a.text-success:hover,a.text-success:focus{color:#128f76;}.text-info{color:#3498db;}a.text-info:hover,a.text-info:focus{color:#217dbb;}.text-warning{color:#f39c12;}a.text-warning:hover,a.text-warning:focus{color:#c87f0a;}.text-danger{color:#e74c3c;}a.text-danger:hover,a.text-danger:focus{color:#d62c1a;}.bg-primary{color:#fff;background-color:#2c3e50;}a.bg-primary:hover,a.bg-primary:focus{background-color:#1a242f;}.bg-success{background-color:#dff0d8;}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3;}.bg-info{background-color:#d9edf7;}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee;}.bg-warning{background-color:#fcf8e3;}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5;}.bg-danger{background-color:#f2dede;}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9;}.page-header{padding-bottom:7.5px;margin:34px 0 17px;border-bottom:1px solid #eeeeee;}ul,ol{margin-top:0;margin-bottom:8.5px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:0;}.list-unstyled{padding-left:0;list-style:none;}.list-inline{padding-left:0;list-style:none;margin-left:-5px;}.list-inline > li{display:inline-block;padding-left:5px;padding-right:5px;}dl{margin-top:0;margin-bottom:17px;}dt,dd{line-height:1.42857143;}dt{font-weight:bold;}dd{margin-left:0;}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.dl-horizontal dd{margin-left:180px;}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777777;}.initialism{font-size:90%;text-transform:uppercase;}blockquote{padding:8.5px 17px;margin:0 0 17px;font-size:15px;border-left:5px solid #eeeeee;}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0;}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777777;}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0';}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0;text-align:right;}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:'';}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014';}address{margin-bottom:17px;font-style:normal;line-height:1.42857143;}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:3px;}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:2px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none;}pre{display:block;padding:8px;margin:0 0 8.5px;font-size:11px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:3px;}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0;}.pre-scrollable{max-height:340px;overflow-y:scroll;}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}@media (min-width:768px){.container{width:750px;}}@media (min-width:992px){.container{width:970px;}}@media (min-width:1200px){.container{width:1170px;}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}.row{margin-left:-15px;margin-right:-15px;}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px;}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left;}.col-xs-12{width:100%;}.col-xs-11{width:91.66666667%;}.col-xs-10{width:83.33333333%;}.col-xs-9{width:75%;}.col-xs-8{width:66.66666667%;}.col-xs-7{width:58.33333333%;}.col-xs-6{width:50%;}.col-xs-5{width:41.66666667%;}.col-xs-4{width:33.33333333%;}.col-xs-3{width:25%;}.col-xs-2{width:16.66666667%;}.col-xs-1{width:8.33333333%;}.col-xs-pull-12{right:100%;}.col-xs-pull-11{right:91.66666667%;}.col-xs-pull-10{right:83.33333333%;}.col-xs-pull-9{right:75%;}.col-xs-pull-8{right:66.66666667%;}.col-xs-pull-7{right:58.33333333%;}.col-xs-pull-6{right:50%;}.col-xs-pull-5{right:41.66666667%;}.col-xs-pull-4{right:33.33333333%;}.col-xs-pull-3{right:25%;}.col-xs-pull-2{right:16.66666667%;}.col-xs-pull-1{right:8.33333333%;}.col-xs-pull-0{right:auto;}.col-xs-push-12{left:100%;}.col-xs-push-11{left:91.66666667%;}.col-xs-push-10{left:83.33333333%;}.col-xs-push-9{left:75%;}.col-xs-push-8{left:66.66666667%;}.col-xs-push-7{left:58.33333333%;}.col-xs-push-6{left:50%;}.col-xs-push-5{left:41.66666667%;}.col-xs-push-4{left:33.33333333%;}.col-xs-push-3{left:25%;}.col-xs-push-2{left:16.66666667%;}.col-xs-push-1{left:8.33333333%;}.col-xs-push-0{left:auto;}.col-xs-offset-12{margin-left:100%;}.col-xs-offset-11{margin-left:91.66666667%;}.col-xs-offset-10{margin-left:83.33333333%;}.col-xs-offset-9{margin-left:75%;}.col-xs-offset-8{margin-left:66.66666667%;}.col-xs-offset-7{margin-left:58.33333333%;}.col-xs-offset-6{margin-left:50%;}.col-xs-offset-5{margin-left:41.66666667%;}.col-xs-offset-4{margin-left:33.33333333%;}.col-xs-offset-3{margin-left:25%;}.col-xs-offset-2{margin-left:16.66666667%;}.col-xs-offset-1{margin-left:8.33333333%;}.col-xs-offset-0{margin-left:0%;}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left;}.col-sm-12{width:100%;}.col-sm-11{width:91.66666667%;}.col-sm-10{width:83.33333333%;}.col-sm-9{width:75%;}.col-sm-8{width:66.66666667%;}.col-sm-7{width:58.33333333%;}.col-sm-6{width:50%;}.col-sm-5{width:41.66666667%;}.col-sm-4{width:33.33333333%;}.col-sm-3{width:25%;}.col-sm-2{width:16.66666667%;}.col-sm-1{width:8.33333333%;}.col-sm-pull-12{right:100%;}.col-sm-pull-11{right:91.66666667%;}.col-sm-pull-10{right:83.33333333%;}.col-sm-pull-9{right:75%;}.col-sm-pull-8{right:66.66666667%;}.col-sm-pull-7{right:58.33333333%;}.col-sm-pull-6{right:50%;}.col-sm-pull-5{right:41.66666667%;}.col-sm-pull-4{right:33.33333333%;}.col-sm-pull-3{right:25%;}.col-sm-pull-2{right:16.66666667%;}.col-sm-pull-1{right:8.33333333%;}.col-sm-pull-0{right:auto;}.col-sm-push-12{left:100%;}.col-sm-push-11{left:91.66666667%;}.col-sm-push-10{left:83.33333333%;}.col-sm-push-9{left:75%;}.col-sm-push-8{left:66.66666667%;}.col-sm-push-7{left:58.33333333%;}.col-sm-push-6{left:50%;}.col-sm-push-5{left:41.66666667%;}.col-sm-push-4{left:33.33333333%;}.col-sm-push-3{left:25%;}.col-sm-push-2{left:16.66666667%;}.col-sm-push-1{left:8.33333333%;}.col-sm-push-0{left:auto;}.col-sm-offset-12{margin-left:100%;}.col-sm-offset-11{margin-left:91.66666667%;}.col-sm-offset-10{margin-left:83.33333333%;}.col-sm-offset-9{margin-left:75%;}.col-sm-offset-8{margin-left:66.66666667%;}.col-sm-offset-7{margin-left:58.33333333%;}.col-sm-offset-6{margin-left:50%;}.col-sm-offset-5{margin-left:41.66666667%;}.col-sm-offset-4{margin-left:33.33333333%;}.col-sm-offset-3{margin-left:25%;}.col-sm-offset-2{margin-left:16.66666667%;}.col-sm-offset-1{margin-left:8.33333333%;}.col-sm-offset-0{margin-left:0%;}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left;}.col-md-12{width:100%;}.col-md-11{width:91.66666667%;}.col-md-10{width:83.33333333%;}.col-md-9{width:75%;}.col-md-8{width:66.66666667%;}.col-md-7{width:58.33333333%;}.col-md-6{width:50%;}.col-md-5{width:41.66666667%;}.col-md-4{width:33.33333333%;}.col-md-3{width:25%;}.col-md-2{width:16.66666667%;}.col-md-1{width:8.33333333%;}.col-md-pull-12{right:100%;}.col-md-pull-11{right:91.66666667%;}.col-md-pull-10{right:83.33333333%;}.col-md-pull-9{right:75%;}.col-md-pull-8{right:66.66666667%;}.col-md-pull-7{right:58.33333333%;}.col-md-pull-6{right:50%;}.col-md-pull-5{right:41.66666667%;}.col-md-pull-4{right:33.33333333%;}.col-md-pull-3{right:25%;}.col-md-pull-2{right:16.66666667%;}.col-md-pull-1{right:8.33333333%;}.col-md-pull-0{right:auto;}.col-md-push-12{left:100%;}.col-md-push-11{left:91.66666667%;}.col-md-push-10{left:83.33333333%;}.col-md-push-9{left:75%;}.col-md-push-8{left:66.66666667%;}.col-md-push-7{left:58.33333333%;}.col-md-push-6{left:50%;}.col-md-push-5{left:41.66666667%;}.col-md-push-4{left:33.33333333%;}.col-md-push-3{left:25%;}.col-md-push-2{left:16.66666667%;}.col-md-push-1{left:8.33333333%;}.col-md-push-0{left:auto;}.col-md-offset-12{margin-left:100%;}.col-md-offset-11{margin-left:91.66666667%;}.col-md-offset-10{margin-left:83.33333333%;}.col-md-offset-9{margin-left:75%;}.col-md-offset-8{margin-left:66.66666667%;}.col-md-offset-7{margin-left:58.33333333%;}.col-md-offset-6{margin-left:50%;}.col-md-offset-5{margin-left:41.66666667%;}.col-md-offset-4{margin-left:33.33333333%;}.col-md-offset-3{margin-left:25%;}.col-md-offset-2{margin-left:16.66666667%;}.col-md-offset-1{margin-left:8.33333333%;}.col-md-offset-0{margin-left:0%;}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left;}.col-lg-12{width:100%;}.col-lg-11{width:91.66666667%;}.col-lg-10{width:83.33333333%;}.col-lg-9{width:75%;}.col-lg-8{width:66.66666667%;}.col-lg-7{width:58.33333333%;}.col-lg-6{width:50%;}.col-lg-5{width:41.66666667%;}.col-lg-4{width:33.33333333%;}.col-lg-3{width:25%;}.col-lg-2{width:16.66666667%;}.col-lg-1{width:8.33333333%;}.col-lg-pull-12{right:100%;}.col-lg-pull-11{right:91.66666667%;}.col-lg-pull-10{right:83.33333333%;}.col-lg-pull-9{right:75%;}.col-lg-pull-8{right:66.66666667%;}.col-lg-pull-7{right:58.33333333%;}.col-lg-pull-6{right:50%;}.col-lg-pull-5{right:41.66666667%;}.col-lg-pull-4{right:33.33333333%;}.col-lg-pull-3{right:25%;}.col-lg-pull-2{right:16.66666667%;}.col-lg-pull-1{right:8.33333333%;}.col-lg-pull-0{right:auto;}.col-lg-push-12{left:100%;}.col-lg-push-11{left:91.66666667%;}.col-lg-push-10{left:83.33333333%;}.col-lg-push-9{left:75%;}.col-lg-push-8{left:66.66666667%;}.col-lg-push-7{left:58.33333333%;}.col-lg-push-6{left:50%;}.col-lg-push-5{left:41.66666667%;}.col-lg-push-4{left:33.33333333%;}.col-lg-push-3{left:25%;}.col-lg-push-2{left:16.66666667%;}.col-lg-push-1{left:8.33333333%;}.col-lg-push-0{left:auto;}.col-lg-offset-12{margin-left:100%;}.col-lg-offset-11{margin-left:91.66666667%;}.col-lg-offset-10{margin-left:83.33333333%;}.col-lg-offset-9{margin-left:75%;}.col-lg-offset-8{margin-left:66.66666667%;}.col-lg-offset-7{margin-left:58.33333333%;}.col-lg-offset-6{margin-left:50%;}.col-lg-offset-5{margin-left:41.66666667%;}.col-lg-offset-4{margin-left:33.33333333%;}.col-lg-offset-3{margin-left:25%;}.col-lg-offset-2{margin-left:16.66666667%;}.col-lg-offset-1{margin-left:8.33333333%;}.col-lg-offset-0{margin-left:0%;}}table{background-color:transparent;}caption{padding-top:8px;padding-bottom:8px;color:#777777;text-align:left;}th{text-align:left;}.table{width:100%;max-width:100%;margin-bottom:17px;}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd;}.table > thead > tr > th{vertical-align:bottom;border-bottom:2px solid #ddd;}.table > caption + thead > tr:first-child > th,.table > colgroup + thead > tr:first-child > th,.table > thead:first-child > tr:first-child > th,.table > caption + thead > tr:first-child > td,.table > colgroup + thead > tr:first-child > td,.table > thead:first-child > tr:first-child > td{border-top:0;}.table > tbody + tbody{border-top:2px solid #ddd;}.table .table{background-color:#fff;}.table-condensed > thead > tr > th,.table-condensed > tbody > tr > th,.table-condensed > tfoot > tr > th,.table-condensed > thead > tr > td,.table-condensed > tbody > tr > td,.table-condensed > tfoot > tr > td{padding:5px;}.table-bordered{border:1px solid #ddd;}.table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #ddd;}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px;}.table-striped > tbody > tr:nth-of-type(odd){background-color:#f9f9f9;}.table-hover > tbody > tr:hover{background-color:#f5f5f5;}table col[class*="col-"]{position:static;float:none;display:table-column;}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell;}.table > thead > tr > td.active,.table > tbody > tr > td.active,.table > tfoot > tr > td.active,.table > thead > tr > th.active,.table > tbody > tr > th.active,.table > tfoot > tr > th.active,.table > thead > tr.active > td,.table > tbody > tr.active > td,.table > tfoot > tr.active > td,.table > thead > tr.active > th,.table > tbody > tr.active > th,.table > tfoot > tr.active > th{background-color:#f5f5f5;}.table-hover > tbody > tr > td.active:hover,.table-hover > tbody > tr > th.active:hover,.table-hover > tbody > tr.active:hover > td,.table-hover > tbody > tr:hover > .active,.table-hover > tbody > tr.active:hover > th{background-color:#e8e8e8;}.table > thead > tr > td.success,.table > tbody > tr > td.success,.table > tfoot > tr > td.success,.table > thead > tr > th.success,.table > tbody > tr > th.success,.table > tfoot > tr > th.success,.table > thead > tr.success > td,.table > tbody > tr.success > td,.table > tfoot > tr.success > td,.table > thead > tr.success > th,.table > tbody > tr.success > th,.table > tfoot > tr.success > th{background-color:#dff0d8;}.table-hover > tbody > tr > td.success:hover,.table-hover > tbody > tr > th.success:hover,.table-hover > tbody > tr.success:hover > td,.table-hover > tbody > tr:hover > .success,.table-hover > tbody > tr.success:hover > th{background-color:#d0e9c6;}.table > thead > tr > td.info,.table > tbody > tr > td.info,.table > tfoot > tr > td.info,.table > thead > tr > th.info,.table > tbody > tr > th.info,.table > tfoot > tr > th.info,.table > thead > tr.info > td,.table > tbody > tr.info > td,.table > tfoot > tr.info > td,.table > thead > tr.info > th,.table > tbody > tr.info > th,.table > tfoot > tr.info > th{background-color:#d9edf7;}.table-hover > tbody > tr > td.info:hover,.table-hover > tbody > tr > th.info:hover,.table-hover > tbody > tr.info:hover > td,.table-hover > tbody > tr:hover > .info,.table-hover > tbody > tr.info:hover > th{background-color:#c4e3f3;}.table > thead > tr > td.warning,.table > tbody > tr > td.warning,.table > tfoot > tr > td.warning,.table > thead > tr > th.warning,.table > tbody > tr > th.warning,.table > tfoot > tr > th.warning,.table > thead > tr.warning > td,.table > tbody > tr.warning > td,.table > tfoot > tr.warning > td,.table > thead > tr.warning > th,.table > tbody > tr.warning > th,.table > tfoot > tr.warning > th{background-color:#fcf8e3;}.table-hover > tbody > tr > td.warning:hover,.table-hover > tbody > tr > th.warning:hover,.table-hover > tbody > tr.warning:hover > td,.table-hover > tbody > tr:hover > .warning,.table-hover > tbody > tr.warning:hover > th{background-color:#faf2cc;}.table > thead > tr > td.danger,.table > tbody > tr > td.danger,.table > tfoot > tr > td.danger,.table > thead > tr > th.danger,.table > tbody > tr > th.danger,.table > tfoot > tr > th.danger,.table > thead > tr.danger > td,.table > tbody > tr.danger > td,.table > tfoot > tr.danger > td,.table > thead > tr.danger > th,.table > tbody > tr.danger > th,.table > tfoot > tr.danger > th{background-color:#f2dede;}.table-hover > tbody > tr > td.danger:hover,.table-hover > tbody > tr > th.danger:hover,.table-hover > tbody > tr.danger:hover > td,.table-hover > tbody > tr:hover > .danger,.table-hover > tbody > tr.danger:hover > th{background-color:#ebcccc;}.table-responsive{overflow-x:auto;min-height:0.01%;}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:12.75px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;}.table-responsive > .table{margin-bottom:0;}.table-responsive > .table > thead > tr > th,.table-responsive > .table > tbody > tr > th,.table-responsive > .table > tfoot > tr > th,.table-responsive > .table > thead > tr > td,.table-responsive > .table > tbody > tr > td,.table-responsive > .table > tfoot > tr > td{white-space:nowrap;}.table-responsive > .table-bordered{border:0;}.table-responsive > .table-bordered > thead > tr > th:first-child,.table-responsive > .table-bordered > tbody > tr > th:first-child,.table-responsive > .table-bordered > tfoot > tr > th:first-child,.table-responsive > .table-bordered > thead > tr > td:first-child,.table-responsive > .table-bordered > tbody > tr > td:first-child,.table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0;}.table-responsive > .table-bordered > thead > tr > th:last-child,.table-responsive > .table-bordered > tbody > tr > th:last-child,.table-responsive > .table-bordered > tfoot > tr > th:last-child,.table-responsive > .table-bordered > thead > tr > td:last-child,.table-responsive > .table-bordered > tbody > tr > td:last-child,.table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0;}.table-responsive > .table-bordered > tbody > tr:last-child > th,.table-responsive > .table-bordered > tfoot > tr:last-child > th,.table-responsive > .table-bordered > tbody > tr:last-child > td,.table-responsive > .table-bordered > tfoot > tr:last-child > td{border-bottom:0;}}fieldset{padding:0;margin:0;border:0;min-width:0;}legend{display:block;width:100%;padding:0;margin-bottom:17px;font-size:18px;line-height:inherit;color:#333333;border:0;border-bottom:1px solid #e5e5e5;}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold;}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal;}input[type="file"]{display:block;}input[type="range"]{display:block;width:100%;}select[multiple],select[size]{height:auto;}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}output{display:block;padding-top:7px;font-size:12px;line-height:1.42857143;color:#555555;}.form-control{display:block;width:100%;height:31px;padding:6px 12px;font-size:12px;line-height:1.42857143;color:#555555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,0.6);}.form-control::-moz-placeholder{color:#999;opacity:1;}.form-control:-ms-input-placeholder{color:#999;}.form-control::-webkit-input-placeholder{color:#999;}.form-control::-ms-expand{border:0;background-color:transparent;}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eeeeee;opacity:1;}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed;}textarea.form-control{height:auto;}input[type="search"]{-webkit-appearance:none;}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:31px;}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:28px;}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:42px;}}.form-group{margin-bottom:15px;}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px;}.radio label,.checkbox label{min-height:17px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer;}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9;}.radio + .radio,.checkbox + .checkbox{margin-top:-5px;}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer;}.radio-inline + .radio-inline,.checkbox-inline + .checkbox-inline{margin-top:0;margin-left:10px;}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed;}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed;}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed;}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:29px;}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0;}.input-sm{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-sm{height:28px;line-height:28px;}textarea.input-sm,select[multiple].input-sm{height:auto;}.form-group-sm .form-control{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.form-group-sm select.form-control{height:28px;line-height:28px;}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto;}.form-group-sm .form-control-static{height:28px;min-height:28px;padding:6px 10px;font-size:11px;line-height:1.5;}.input-lg{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-lg{height:42px;line-height:42px;}textarea.input-lg,select[multiple].input-lg{height:auto;}.form-group-lg .form-control{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.form-group-lg select.form-control{height:42px;line-height:42px;}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto;}.form-group-lg .form-control-static{height:42px;min-height:32px;padding:11px 16px;font-size:15px;line-height:1.3333333;}.has-feedback{position:relative;}.has-feedback .form-control{padding-right:38.75px;}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:31px;height:31px;line-height:31px;text-align:center;pointer-events:none;}.input-lg + .form-control-feedback,.input-group-lg + .form-control-feedback,.form-group-lg .form-control + .form-control-feedback{width:42px;height:42px;line-height:42px;}.input-sm + .form-control-feedback,.input-group-sm + .form-control-feedback,.form-group-sm .form-control + .form-control-feedback{width:28px;height:28px;line-height:28px;}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#18bc9c;}.has-success .form-control{border-color:#18bc9c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-success .form-control:focus{border-color:#128f76;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #51e9cb;}.has-success .input-group-addon{color:#18bc9c;border-color:#18bc9c;background-color:#dff0d8;}.has-success .form-control-feedback{color:#18bc9c;}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#f39c12;}.has-warning .form-control{border-color:#f39c12;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-warning .form-control:focus{border-color:#c87f0a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f8c573;}.has-warning .input-group-addon{color:#f39c12;border-color:#f39c12;background-color:#fcf8e3;}.has-warning .form-control-feedback{color:#f39c12;}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#e74c3c;}.has-error .form-control{border-color:#e74c3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.has-error .form-control:focus{border-color:#d62c1a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #f29f97;}.has-error .input-group-addon{color:#e74c3c;border-color:#e74c3c;background-color:#f2dede;}.has-error .form-control-feedback{color:#e74c3c;}.has-feedback label ~ .form-control-feedback{top:22px;}.has-feedback label.sr-only ~ .form-control-feedback{top:0;}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle;}.form-inline .form-control-static{display:inline-block;}.form-inline .input-group{display:inline-table;vertical-align:middle;}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto;}.form-inline .input-group > .form-control{width:100%;}.form-inline .control-label{margin-bottom:0;vertical-align:middle;}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;}.form-inline .radio label,.form-inline .checkbox label{padding-left:0;}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0;}.form-inline .has-feedback .form-control-feedback{top:0;}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px;}.form-horizontal .radio,.form-horizontal .checkbox{min-height:24px;}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px;}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px;}}.form-horizontal .has-feedback .form-control-feedback{right:15px;}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:15px;}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:11px;}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:12px;line-height:1.42857143;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none;}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none;}.btn-default{color:#333;background-color:#fff;border-color:#ccc;}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c;}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad;}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad;}.btn-default:active:hover,.btn-default.active:hover,.open > .dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open > .dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open > .dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c;}.btn-default:active,.btn-default.active,.open > .dropdown-toggle.btn-default{background-image:none;}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc;}.btn-default .badge{color:#fff;background-color:#333;}.btn-primary{color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#1a242f;border-color:#000000;}.btn-primary:hover{color:#fff;background-color:#1a242f;border-color:#161f29;}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{color:#fff;background-color:#1a242f;border-color:#161f29;}.btn-primary:active:hover,.btn-primary.active:hover,.open > .dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open > .dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open > .dropdown-toggle.btn-primary.focus{color:#fff;background-color:#0d1318;border-color:#000000;}.btn-primary:active,.btn-primary.active,.open > .dropdown-toggle.btn-primary{background-image:none;}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#2c3e50;border-color:#2c3e50;}.btn-primary .badge{color:#2c3e50;background-color:#fff;}.btn-success{color:#fff;background-color:#18bc9c;border-color:#18bc9c;}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#128f76;border-color:#0a4b3e;}.btn-success:hover{color:#fff;background-color:#128f76;border-color:#11866f;}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{color:#fff;background-color:#128f76;border-color:#11866f;}.btn-success:active:hover,.btn-success.active:hover,.open > .dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open > .dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open > .dropdown-toggle.btn-success.focus{color:#fff;background-color:#0e6f5c;border-color:#0a4b3e;}.btn-success:active,.btn-success.active,.open > .dropdown-toggle.btn-success{background-image:none;}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#18bc9c;border-color:#18bc9c;}.btn-success .badge{color:#18bc9c;background-color:#fff;}.btn-info{color:#fff;background-color:#3498db;border-color:#3498db;}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#217dbb;border-color:#16527a;}.btn-info:hover{color:#fff;background-color:#217dbb;border-color:#2077b2;}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{color:#fff;background-color:#217dbb;border-color:#2077b2;}.btn-info:active:hover,.btn-info.active:hover,.open > .dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open > .dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open > .dropdown-toggle.btn-info.focus{color:#fff;background-color:#1c699d;border-color:#16527a;}.btn-info:active,.btn-info.active,.open > .dropdown-toggle.btn-info{background-image:none;}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#3498db;border-color:#3498db;}.btn-info .badge{color:#3498db;background-color:#fff;}.btn-warning{color:#fff;background-color:#f39c12;border-color:#f39c12;}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#c87f0a;border-color:#7f5006;}.btn-warning:hover{color:#fff;background-color:#c87f0a;border-color:#be780a;}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{color:#fff;background-color:#c87f0a;border-color:#be780a;}.btn-warning:active:hover,.btn-warning.active:hover,.open > .dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open > .dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open > .dropdown-toggle.btn-warning.focus{color:#fff;background-color:#a66908;border-color:#7f5006;}.btn-warning:active,.btn-warning.active,.open > .dropdown-toggle.btn-warning{background-image:none;}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f39c12;border-color:#f39c12;}.btn-warning .badge{color:#f39c12;background-color:#fff;}.btn-danger{color:#fff;background-color:#e74c3c;border-color:#e74c3c;}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#d62c1a;border-color:#921e12;}.btn-danger:hover{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{color:#fff;background-color:#d62c1a;border-color:#cd2a19;}.btn-danger:active:hover,.btn-danger.active:hover,.open > .dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open > .dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open > .dropdown-toggle.btn-danger.focus{color:#fff;background-color:#b62516;border-color:#921e12;}.btn-danger:active,.btn-danger.active,.open > .dropdown-toggle.btn-danger{background-image:none;}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#e74c3c;border-color:#e74c3c;}.btn-danger .badge{color:#e74c3c;background-color:#fff;}.btn-link{color:#2c3e50;font-weight:normal;border-radius:0;}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none;}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent;}.btn-link:hover,.btn-link:focus{color:#11181f;text-decoration:underline;background-color:transparent;}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777777;text-decoration:none;}.btn-lg,.btn-group-lg > .btn{padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}.btn-sm,.btn-group-sm > .btn{padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}.btn-xs,.btn-group-xs > .btn{padding:1px 5px;font-size:11px;line-height:1.5;border-radius:2px;}.btn-block{display:block;width:100%;}.btn-block + .btn-block{margin-top:5px;}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%;}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;}.fade.in{opacity:1;}.collapse{display:none;}.collapse.in{display:block;}tr.collapse.in{display:table-row;}tbody.collapse.in{display:table-row-group;}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease;}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent;}.dropup,.dropdown{position:relative;}.dropdown-toggle:focus{outline:0;}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:12px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:3px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box;}.dropdown-menu.pull-right{right:0;left:auto;}.dropdown-menu .divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.dropdown-menu > li > a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333333;white-space:nowrap;}.dropdown-menu > li > a:hover,.dropdown-menu > li > a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5;}.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#fff;text-decoration:none;outline:0;background-color:#2c3e50;}.dropdown-menu > .disabled > a,.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{color:#777777;}.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed;}.open > .dropdown-menu{display:block;}.open > a{outline:0;}.dropdown-menu-right{left:auto;right:0;}.dropdown-menu-left{left:0;right:auto;}.dropdown-header{display:block;padding:3px 20px;font-size:11px;line-height:1.42857143;color:#777777;white-space:nowrap;}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990;}.pull-right > .dropdown-menu{right:0;left:auto;}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:"";}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px;}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0;}.navbar-right .dropdown-menu-left{left:0;right:auto;}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle;}.btn-group > .btn,.btn-group-vertical > .btn{position:relative;float:left;}.btn-group > .btn:hover,.btn-group-vertical > .btn:hover,.btn-group > .btn:focus,.btn-group-vertical > .btn:focus,.btn-group > .btn:active,.btn-group-vertical > .btn:active,.btn-group > .btn.active,.btn-group-vertical > .btn.active{z-index:2;}.btn-group .btn + .btn,.btn-group .btn + .btn-group,.btn-group .btn-group + .btn,.btn-group .btn-group + .btn-group{margin-left:-1px;}.btn-toolbar{margin-left:-5px;}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left;}.btn-toolbar > .btn,.btn-toolbar > .btn-group,.btn-toolbar > .input-group{margin-left:5px;}.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0;}.btn-group > .btn:first-child{margin-left:0;}.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn:last-child:not(:first-child),.btn-group > .dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group > .btn-group{float:left;}.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0;}.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0;}.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0;}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}.btn-group > .btn + .dropdown-toggle{padding-left:8px;padding-right:8px;}.btn-group > .btn-lg + .dropdown-toggle{padding-left:12px;padding-right:12px;}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn .caret{margin-left:0;}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0;}.dropup .btn-lg .caret{border-width:0 5px 5px;}.btn-group-vertical > .btn,.btn-group-vertical > .btn-group,.btn-group-vertical > .btn-group > .btn{display:block;float:none;width:100%;max-width:100%;}.btn-group-vertical > .btn-group > .btn{float:none;}.btn-group-vertical > .btn + .btn,.btn-group-vertical > .btn + .btn-group,.btn-group-vertical > .btn-group + .btn,.btn-group-vertical > .btn-group + .btn-group{margin-top:-1px;margin-left:0;}.btn-group-vertical > .btn:not(:first-child):not(:last-child){border-radius:0;}.btn-group-vertical > .btn:first-child:not(:last-child){border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.btn-group-vertical > .btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn{border-radius:0;}.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0;}.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child{border-top-right-radius:0;border-top-left-radius:0;}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate;}.btn-group-justified > .btn,.btn-group-justified > .btn-group{float:none;display:table-cell;width:1%;}.btn-group-justified > .btn-group .btn{width:100%;}.btn-group-justified > .btn-group .dropdown-menu{left:auto;}[data-toggle="buttons"] > .btn input[type="radio"],[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],[data-toggle="buttons"] > .btn input[type="checkbox"],[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"]{position:absolute;clip:rect(0,0,0,0);pointer-events:none;}.input-group{position:relative;display:table;border-collapse:separate;}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0;}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0;}.input-group .form-control:focus{z-index:3;}.input-group-lg > .form-control,.input-group-lg > .input-group-addon,.input-group-lg > .input-group-btn > .btn{height:42px;padding:10px 16px;font-size:15px;line-height:1.3333333;border-radius:5px;}select.input-group-lg > .form-control,select.input-group-lg > .input-group-addon,select.input-group-lg > .input-group-btn > .btn{height:42px;line-height:42px;}textarea.input-group-lg > .form-control,textarea.input-group-lg > .input-group-addon,textarea.input-group-lg > .input-group-btn > .btn,select[multiple].input-group-lg > .form-control,select[multiple].input-group-lg > .input-group-addon,select[multiple].input-group-lg > .input-group-btn > .btn{height:auto;}.input-group-sm > .form-control,.input-group-sm > .input-group-addon,.input-group-sm > .input-group-btn > .btn{height:28px;padding:5px 10px;font-size:11px;line-height:1.5;border-radius:2px;}select.input-group-sm > .form-control,select.input-group-sm > .input-group-addon,select.input-group-sm > .input-group-btn > .btn{height:28px;line-height:28px;}textarea.input-group-sm > .form-control,textarea.input-group-sm > .input-group-addon,textarea.input-group-sm > .input-group-btn > .btn,select[multiple].input-group-sm > .form-control,select[multiple].input-group-sm > .input-group-addon,select[multiple].input-group-sm > .input-group-btn > .btn{height:auto;}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell;}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0;}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle;}.input-group-addon{padding:6px 12px;font-size:12px;font-weight:normal;line-height:1;color:#555555;text-align:center;background-color:#eeeeee;border:1px solid #ccc;border-radius:3px;}.input-group-addon.input-sm{padding:5px 10px;font-size:11px;border-radius:2px;}.input-group-addon.input-lg{padding:10px 16px;font-size:15px;border-radius:5px;}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0;}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group > .btn,.input-group-btn:first-child > .dropdown-toggle,.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child > .btn-group:not(:last-child) > .btn{border-bottom-right-radius:0;border-top-right-radius:0;}.input-group-addon:first-child{border-right:0;}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group > .btn,.input-group-btn:last-child > .dropdown-toggle,.input-group-btn:first-child > .btn:not(:first-child),.input-group-btn:first-child > .btn-group:not(:first-child) > .btn{border-bottom-left-radius:0;border-top-left-radius:0;}.input-group-addon:last-child{border-left:0;}.input-group-btn{position:relative;font-size:0;white-space:nowrap;}.input-group-btn > .btn{position:relative;}.input-group-btn > .btn + .btn{margin-left:-1px;}.input-group-btn > .btn:hover,.input-group-btn > .btn:focus,.input-group-btn > .btn:active{z-index:2;}.input-group-btn:first-child > .btn,.input-group-btn:first-child > .btn-group{margin-right:-1px;}.input-group-btn:last-child > .btn,.input-group-btn:last-child > .btn-group{z-index:2;margin-left:-1px;}.nav{margin-bottom:0;padding-left:0;list-style:none;}.nav > li{position:relative;display:block;}.nav > li > a{position:relative;display:block;padding:10px 15px;}.nav > li > a:hover,.nav > li > a:focus{text-decoration:none;background-color:#eeeeee;}.nav > li.disabled > a{color:#777777;}.nav > li.disabled > a:hover,.nav > li.disabled > a:focus{color:#777777;text-decoration:none;background-color:transparent;cursor:not-allowed;}.nav .open > a,.nav .open > a:hover,.nav .open > a:focus{background-color:#eeeeee;border-color:#2c3e50;}.nav .nav-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.nav > li > a > img{max-width:none;}.nav-tabs{border-bottom:1px solid #ddd;}.nav-tabs > li{float:left;margin-bottom:-1px;}.nav-tabs > li > a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:3px 3px 0 0;}.nav-tabs > li > a:hover{border-color:#eeeeee #eeeeee #ddd;}.nav-tabs > li.active > a,.nav-tabs > li.active > a:hover,.nav-tabs > li.active > a:focus{color:#555555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}.nav-tabs.nav-justified{width:100%;border-bottom:0;}.nav-tabs.nav-justified > li{float:none;}.nav-tabs.nav-justified > li > a{text-align:center;margin-bottom:5px;}.nav-tabs.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto;}@media (min-width:768px){.nav-tabs.nav-justified > li{display:table-cell;width:1%;}.nav-tabs.nav-justified > li > a{margin-bottom:0;}}.nav-tabs.nav-justified > li > a{margin-right:0;border-radius:3px;}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border:1px solid #ddd;}@media (min-width:768px){.nav-tabs.nav-justified > li > a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0;}.nav-tabs.nav-justified > .active > a,.nav-tabs.nav-justified > .active > a:hover,.nav-tabs.nav-justified > .active > a:focus{border-bottom-color:#fff;}}.nav-pills > li{float:left;}.nav-pills > li > a{border-radius:3px;}.nav-pills > li + li{margin-left:2px;}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{color:#fff;background-color:#2c3e50;}.nav-stacked > li{float:none;}.nav-stacked > li + li{margin-top:2px;margin-left:0;}.nav-justified{width:100%;}.nav-justified > li{float:none;}.nav-justified > li > a{text-align:center;margin-bottom:5px;}.nav-justified > .dropdown .dropdown-menu{top:auto;left:auto;}@media (min-width:768px){.nav-justified > li{display:table-cell;width:1%;}.nav-justified > li > a{margin-bottom:0;}}.nav-tabs-justified{border-bottom:0;}.nav-tabs-justified > li > a{margin-right:0;border-radius:3px;}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border:1px solid #ddd;}@media (min-width:768px){.nav-tabs-justified > li > a{border-bottom:1px solid #ddd;border-radius:3px 3px 0 0;}.nav-tabs-justified > .active > a,.nav-tabs-justified > .active > a:hover,.nav-tabs-justified > .active > a:focus{border-bottom-color:#fff;}}.tab-content > .tab-pane{display:none;}.tab-content > .active{display:block;}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0;}.navbar{position:relative;min-height:50px;margin-bottom:17px;border:1px solid transparent;}@media (min-width:768px){.navbar{border-radius:3px;}}@media (min-width:768px){.navbar-header{float:left;}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch;}.navbar-collapse.in{overflow-y:auto;}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none;}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important;}.navbar-collapse.in{overflow-y:visible;}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0;}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px;}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px;}}.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:-15px;margin-left:-15px;}@media (min-width:768px){.container > .navbar-header,.container-fluid > .navbar-header,.container > .navbar-collapse,.container-fluid > .navbar-collapse{margin-right:0;margin-left:0;}}.navbar-static-top{z-index:1000;border-width:0 0 1px;}@media (min-width:768px){.navbar-static-top{border-radius:0;}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0;}}.navbar-fixed-top{top:0;border-width:0 0 1px;}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0;}.navbar-brand{float:left;padding:16.5px 15px;font-size:15px;line-height:17px;height:50px;}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none;}.navbar-brand > img{display:block;}@media (min-width:768px){.navbar > .container .navbar-brand,.navbar > .container-fluid .navbar-brand{margin-left:-15px;}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:3px;}.navbar-toggle:focus{outline:0;}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;}.navbar-toggle .icon-bar + .icon-bar{margin-top:4px;}@media (min-width:768px){.navbar-toggle{display:none;}}.navbar-nav{margin:8.25px -15px;}.navbar-nav > li > a{padding-top:10px;padding-bottom:10px;line-height:17px;}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none;}.navbar-nav .open .dropdown-menu > li > a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px;}.navbar-nav .open .dropdown-menu > li > a{line-height:17px;}.navbar-nav .open .dropdown-menu > li > a:hover,.navbar-nav .open .dropdown-menu > li > a:focus{background-image:none;}}@media (min-width:768px){.navbar-nav{float:left;margin:0;}.navbar-nav > li{float:left;}.navbar-nav > li > a{padding-top:16.5px;padding-bottom:16.5px;}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:9.5px;margin-bottom:9.5px;}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle;}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle;}.navbar-form .form-control-static{display:inline-block;}.navbar-form .input-group{display:inline-table;vertical-align:middle;}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto;}.navbar-form .input-group > .form-control{width:100%;}.navbar-form .control-label{margin-bottom:0;vertical-align:middle;}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle;}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0;}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0;}.navbar-form .has-feedback .form-control-feedback{top:0;}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px;}.navbar-form .form-group:last-child{margin-bottom:0;}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none;}}.navbar-nav > li > .dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0;}.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu{margin-bottom:0;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:0;border-bottom-left-radius:0;}.navbar-btn{margin-top:9.5px;margin-bottom:9.5px;}.navbar-btn.btn-sm{margin-top:11px;margin-bottom:11px;}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px;}.navbar-text{margin-top:16.5px;margin-bottom:16.5px;}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px;}}@media (min-width:768px){.navbar-left{float:left !important;}.navbar-right{float:right !important;margin-right:-15px;}.navbar-right ~ .navbar-right{margin-right:0;}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7;}.navbar-default .navbar-brand{color:#777;}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent;}.navbar-default .navbar-text{color:#777;}.navbar-default .navbar-nav > li > a{color:#777;}.navbar-default .navbar-nav > li > a:hover,.navbar-default .navbar-nav > li > a:focus{color:#333;background-color:transparent;}.navbar-default .navbar-nav > .active > a,.navbar-default .navbar-nav > .active > a:hover,.navbar-default .navbar-nav > .active > a:focus{color:#555;background-color:#e7e7e7;}.navbar-default .navbar-nav > .disabled > a,.navbar-default .navbar-nav > .disabled > a:hover,.navbar-default .navbar-nav > .disabled > a:focus{color:#ccc;background-color:transparent;}.navbar-default .navbar-toggle{border-color:#ddd;}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd;}.navbar-default .navbar-toggle .icon-bar{background-color:#888;}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7;}.navbar-default .navbar-nav > .open > a,.navbar-default .navbar-nav > .open > a:hover,.navbar-default .navbar-nav > .open > a:focus{background-color:#e7e7e7;color:#555;}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu > li > a{color:#777;}.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus{color:#333;background-color:transparent;}.navbar-default .navbar-nav .open .dropdown-menu > .active > a,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus{color:#555;background-color:#e7e7e7;}.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#ccc;background-color:transparent;}}.navbar-default .navbar-link{color:#777;}.navbar-default .navbar-link:hover{color:#333;}.navbar-default .btn-link{color:#777;}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333;}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc;}.navbar-inverse{background-color:#222;border-color:#080808;}.navbar-inverse .navbar-brand{color:#9d9d9d;}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-text{color:#9d9d9d;}.navbar-inverse .navbar-nav > li > a{color:#9d9d9d;}.navbar-inverse .navbar-nav > li > a:hover,.navbar-inverse .navbar-nav > li > a:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-nav > .active > a,.navbar-inverse .navbar-nav > .active > a:hover,.navbar-inverse .navbar-nav > .active > a:focus{color:#fff;background-color:#080808;}.navbar-inverse .navbar-nav > .disabled > a,.navbar-inverse .navbar-nav > .disabled > a:hover,.navbar-inverse .navbar-nav > .disabled > a:focus{color:#444;background-color:transparent;}.navbar-inverse .navbar-toggle{border-color:#333;}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333;}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff;}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010;}.navbar-inverse .navbar-nav > .open > a,.navbar-inverse .navbar-nav > .open > a:hover,.navbar-inverse .navbar-nav > .open > a:focus{background-color:#080808;color:#fff;}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header{border-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a{color:#9d9d9d;}.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus{color:#fff;background-color:transparent;}.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus{color:#fff;background-color:#080808;}.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus{color:#444;background-color:transparent;}}.navbar-inverse .navbar-link{color:#9d9d9d;}.navbar-inverse .navbar-link:hover{color:#fff;}.navbar-inverse .btn-link{color:#9d9d9d;}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff;}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444;}.breadcrumb{padding:8px 15px;margin-bottom:17px;list-style:none;background-color:#f5f5f5;border-radius:3px;}.breadcrumb > li{display:inline-block;}.breadcrumb > li + li:before{content:"/\00a0";padding:0 5px;color:#ccc;}.breadcrumb > .active{color:#777777;}.pagination{display:inline-block;padding-left:0;margin:17px 0;border-radius:3px;}.pagination > li{display:inline;}.pagination > li > a,.pagination > li > span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#2c3e50;background-color:#fff;border:1px solid #ddd;margin-left:-1px;}.pagination > li:first-child > a,.pagination > li:first-child > span{margin-left:0;border-bottom-left-radius:3px;border-top-left-radius:3px;}.pagination > li:last-child > a,.pagination > li:last-child > span{border-bottom-right-radius:3px;border-top-right-radius:3px;}.pagination > li > a:hover,.pagination > li > span:hover,.pagination > li > a:focus,.pagination > li > span:focus{z-index:2;color:#11181f;background-color:#eeeeee;border-color:#ddd;}.pagination > .active > a,.pagination > .active > span,.pagination > .active > a:hover,.pagination > .active > span:hover,.pagination > .active > a:focus,.pagination > .active > span:focus{z-index:3;color:#fff;background-color:#2c3e50;border-color:#2c3e50;cursor:default;}.pagination > .disabled > span,.pagination > .disabled > span:hover,.pagination > .disabled > span:focus,.pagination > .disabled > a,.pagination > .disabled > a:hover,.pagination > .disabled > a:focus{color:#777777;background-color:#fff;border-color:#ddd;cursor:not-allowed;}.pagination-lg > li > a,.pagination-lg > li > span{padding:10px 16px;font-size:15px;line-height:1.3333333;}.pagination-lg > li:first-child > a,.pagination-lg > li:first-child > span{border-bottom-left-radius:5px;border-top-left-radius:5px;}.pagination-lg > li:last-child > a,.pagination-lg > li:last-child > span{border-bottom-right-radius:5px;border-top-right-radius:5px;}.pagination-sm > li > a,.pagination-sm > li > span{padding:5px 10px;font-size:11px;line-height:1.5;}.pagination-sm > li:first-child > a,.pagination-sm > li:first-child > span{border-bottom-left-radius:2px;border-top-left-radius:2px;}.pagination-sm > li:last-child > a,.pagination-sm > li:last-child > span{border-bottom-right-radius:2px;border-top-right-radius:2px;}.pager{padding-left:0;margin:17px 0;list-style:none;text-align:center;}.pager li{display:inline;}.pager li > a,.pager li > span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px;}.pager li > a:hover,.pager li > a:focus{text-decoration:none;background-color:#eeeeee;}.pager .next > a,.pager .next > span{float:right;}.pager .previous > a,.pager .previous > span{float:left;}.pager .disabled > a,.pager .disabled > a:hover,.pager .disabled > a:focus,.pager .disabled > span{color:#777777;background-color:#fff;cursor:not-allowed;}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer;}.label:empty{display:none;}.btn .label{position:relative;top:-1px;}.label-default{background-color:#777777;}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e;}.label-primary{background-color:#2c3e50;}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#1a242f;}.label-success{background-color:#18bc9c;}.label-success[href]:hover,.label-success[href]:focus{background-color:#128f76;}.label-info{background-color:#3498db;}.label-info[href]:hover,.label-info[href]:focus{background-color:#217dbb;}.label-warning{background-color:#f39c12;}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#c87f0a;}.label-danger{background-color:#e74c3c;}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#d62c1a;}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:11px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777777;border-radius:10px;}.badge:empty{display:none;}.btn .badge{position:relative;top:-1px;}.btn-xs .badge,.btn-group-xs > .btn .badge{top:0;padding:1px 5px;}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer;}.list-group-item.active > .badge,.nav-pills > .active > a > .badge{color:#2c3e50;background-color:#fff;}.list-group-item > .badge{float:right;}.list-group-item > .badge + .badge{margin-right:5px;}.nav-pills > li > a > .badge{margin-left:3px;}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eeeeee;}.jumbotron h1,.jumbotron .h1{color:inherit;}.jumbotron p{margin-bottom:15px;font-size:18px;font-weight:200;}.jumbotron > hr{border-top-color:#d5d5d5;}.container .jumbotron,.container-fluid .jumbotron{border-radius:5px;padding-left:15px;padding-right:15px;}.jumbotron .container{max-width:100%;}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px;}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px;}.jumbotron h1,.jumbotron .h1{font-size:54px;}}.thumbnail{display:block;padding:4px;margin-bottom:17px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:3px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out;}.thumbnail > img,.thumbnail a > img{margin-left:auto;margin-right:auto;}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2c3e50;}.thumbnail .caption{padding:9px;color:#333333;}.alert{padding:15px;margin-bottom:17px;border:1px solid transparent;border-radius:3px;}.alert h4{margin-top:0;color:inherit;}.alert .alert-link{font-weight:bold;}.alert > p,.alert > ul{margin-bottom:0;}.alert > p + p{margin-top:5px;}.alert-dismissable,.alert-dismissible{padding-right:35px;}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit;}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#18bc9c;}.alert-success hr{border-top-color:#c9e2b3;}.alert-success .alert-link{color:#128f76;}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3498db;}.alert-info hr{border-top-color:#a6e1ec;}.alert-info .alert-link{color:#217dbb;}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#f39c12;}.alert-warning hr{border-top-color:#f7e1b5;}.alert-warning .alert-link{color:#c87f0a;}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#e74c3c;}.alert-danger hr{border-top-color:#e4b9c0;}.alert-danger .alert-link{color:#d62c1a;}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;}}@keyframes progress-bar-stripes{from{background-position:40px 0;}to{background-position:0 0;}}.progress{overflow:hidden;height:17px;margin-bottom:17px;background-color:#f5f5f5;border-radius:3px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);}.progress-bar{float:left;width:0%;height:100%;font-size:11px;line-height:17px;color:#fff;text-align:center;background-color:#2c3e50;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:40px 40px;}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}.progress-bar-success{background-color:#18bc9c;}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.media{margin-top:15px;}.media:first-child{margin-top:0;}.media,.media-body{zoom:1;overflow:hidden;}.media-body{width:10000px;}.media-object{display:block;}.media-object.img-thumbnail{max-width:none;}.media-right,.media > .pull-right{padding-left:10px;}.media-left,.media > .pull-left{padding-right:10px;}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top;}.media-middle{vertical-align:middle;}.media-bottom{vertical-align:bottom;}.media-heading{margin-top:0;margin-bottom:5px;}.media-list{padding-left:0;list-style:none;}.list-group{margin-bottom:20px;padding-left:0;}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd;}.list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px;}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}a.list-group-item,button.list-group-item{color:#555;}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333;}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5;}button.list-group-item{width:100%;text-align:left;}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eeeeee;color:#777777;cursor:not-allowed;}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit;}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777777;}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading > small,.list-group-item.active:hover .list-group-item-heading > small,.list-group-item.active:focus .list-group-item-heading > small,.list-group-item.active .list-group-item-heading > .small,.list-group-item.active:hover .list-group-item-heading > .small,.list-group-item.active:focus .list-group-item-heading > .small{color:inherit;}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#8aa4be;}.list-group-item-success{color:#18bc9c;background-color:#dff0d8;}a.list-group-item-success,button.list-group-item-success{color:#18bc9c;}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit;}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#18bc9c;background-color:#d0e9c6;}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#18bc9c;border-color:#18bc9c;}.list-group-item-info{color:#3498db;background-color:#d9edf7;}a.list-group-item-info,button.list-group-item-info{color:#3498db;}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit;}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#3498db;background-color:#c4e3f3;}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#3498db;border-color:#3498db;}.list-group-item-warning{color:#f39c12;background-color:#fcf8e3;}a.list-group-item-warning,button.list-group-item-warning{color:#f39c12;}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit;}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#f39c12;background-color:#faf2cc;}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#f39c12;border-color:#f39c12;}.list-group-item-danger{color:#e74c3c;background-color:#f2dede;}a.list-group-item-danger,button.list-group-item-danger{color:#e74c3c;}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit;}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#e74c3c;background-color:#ebcccc;}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#e74c3c;border-color:#e74c3c;}.list-group-item-heading{margin-top:0;margin-bottom:5px;}.list-group-item-text{margin-bottom:0;line-height:1.3;}.panel{margin-bottom:17px;background-color:#fff;border:1px solid transparent;border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05);}.panel-body{padding:15px;}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:2px;border-top-left-radius:2px;}.panel-heading > .dropdown .dropdown-toggle{color:inherit;}.panel-title{margin-top:0;margin-bottom:0;font-size:14px;color:inherit;}.panel-title > a,.panel-title > small,.panel-title > .small,.panel-title > small > a,.panel-title > .small > a{color:inherit;}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .list-group,.panel > .panel-collapse > .list-group{margin-bottom:0;}.panel > .list-group .list-group-item,.panel > .panel-collapse > .list-group .list-group-item{border-width:1px 0;border-radius:0;}.panel > .list-group:first-child .list-group-item:first-child,.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:2px;border-top-left-radius:2px;}.panel > .list-group:last-child .list-group-item:last-child,.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0;}.panel-heading + .list-group .list-group-item:first-child{border-top-width:0;}.list-group + .panel-footer{border-top-width:0;}.panel > .table,.panel > .table-responsive > .table,.panel > .panel-collapse > .table{margin-bottom:0;}.panel > .table caption,.panel > .table-responsive > .table caption,.panel > .panel-collapse > .table caption{padding-left:15px;padding-right:15px;}.panel > .table:first-child,.panel > .table-responsive:first-child > .table:first-child{border-top-right-radius:2px;border-top-left-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child{border-top-left-radius:2px;border-top-right-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child{border-top-left-radius:2px;}.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child{border-top-right-radius:2px;}.panel > .table:last-child,.panel > .table-responsive:last-child > .table:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child{border-bottom-left-radius:2px;}.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child{border-bottom-right-radius:2px;}.panel > .panel-body + .table,.panel > .panel-body + .table-responsive,.panel > .table + .panel-body,.panel > .table-responsive + .panel-body{border-top:1px solid #ddd;}.panel > .table > tbody:first-child > tr:first-child th,.panel > .table > tbody:first-child > tr:first-child td{border-top:0;}.panel > .table-bordered,.panel > .table-responsive > .table-bordered{border:0;}.panel > .table-bordered > thead > tr > th:first-child,.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,.panel > .table-bordered > tbody > tr > th:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,.panel > .table-bordered > tfoot > tr > th:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,.panel > .table-bordered > thead > tr > td:first-child,.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,.panel > .table-bordered > tbody > tr > td:first-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,.panel > .table-bordered > tfoot > tr > td:first-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child{border-left:0;}.panel > .table-bordered > thead > tr > th:last-child,.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,.panel > .table-bordered > tbody > tr > th:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,.panel > .table-bordered > tfoot > tr > th:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,.panel > .table-bordered > thead > tr > td:last-child,.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,.panel > .table-bordered > tbody > tr > td:last-child,.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,.panel > .table-bordered > tfoot > tr > td:last-child,.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child{border-right:0;}.panel > .table-bordered > thead > tr:first-child > td,.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,.panel > .table-bordered > tbody > tr:first-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,.panel > .table-bordered > thead > tr:first-child > th,.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,.panel > .table-bordered > tbody > tr:first-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th{border-bottom:0;}.panel > .table-bordered > tbody > tr:last-child > td,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,.panel > .table-bordered > tfoot > tr:last-child > td,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,.panel > .table-bordered > tbody > tr:last-child > th,.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,.panel > .table-bordered > tfoot > tr:last-child > th,.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th{border-bottom:0;}.panel > .table-responsive{border:0;margin-bottom:0;}.panel-group{margin-bottom:17px;}.panel-group .panel{margin-bottom:0;border-radius:3px;}.panel-group .panel + .panel{margin-top:5px;}.panel-group .panel-heading{border-bottom:0;}.panel-group .panel-heading + .panel-collapse > .panel-body,.panel-group .panel-heading + .panel-collapse > .list-group{border-top:1px solid #ddd;}.panel-group .panel-footer{border-top:0;}.panel-group .panel-footer + .panel-collapse .panel-body{border-bottom:1px solid #ddd;}.panel-default{border-color:#ddd;}.panel-default > .panel-heading{color:#333333;background-color:#f5f5f5;border-color:#ddd;}.panel-default > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ddd;}.panel-default > .panel-heading .badge{color:#f5f5f5;background-color:#333333;}.panel-default > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ddd;}.panel-primary{border-color:#2c3e50;}.panel-primary > .panel-heading{color:#fff;background-color:#2c3e50;border-color:#2c3e50;}.panel-primary > .panel-heading + .panel-collapse > .panel-body{border-top-color:#2c3e50;}.panel-primary > .panel-heading .badge{color:#2c3e50;background-color:#fff;}.panel-primary > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#2c3e50;}.panel-success{border-color:#d6e9c6;}.panel-success > .panel-heading{color:#18bc9c;background-color:#dff0d8;border-color:#d6e9c6;}.panel-success > .panel-heading + .panel-collapse > .panel-body{border-top-color:#d6e9c6;}.panel-success > .panel-heading .badge{color:#dff0d8;background-color:#18bc9c;}.panel-success > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#d6e9c6;}.panel-info{border-color:#bce8f1;}.panel-info > .panel-heading{color:#3498db;background-color:#d9edf7;border-color:#bce8f1;}.panel-info > .panel-heading + .panel-collapse > .panel-body{border-top-color:#bce8f1;}.panel-info > .panel-heading .badge{color:#d9edf7;background-color:#3498db;}.panel-info > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#bce8f1;}.panel-warning{border-color:#faebcc;}.panel-warning > .panel-heading{color:#f39c12;background-color:#fcf8e3;border-color:#faebcc;}.panel-warning > .panel-heading + .panel-collapse > .panel-body{border-top-color:#faebcc;}.panel-warning > .panel-heading .badge{color:#fcf8e3;background-color:#f39c12;}.panel-warning > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#faebcc;}.panel-danger{border-color:#ebccd1;}.panel-danger > .panel-heading{color:#e74c3c;background-color:#f2dede;border-color:#ebccd1;}.panel-danger > .panel-heading + .panel-collapse > .panel-body{border-top-color:#ebccd1;}.panel-danger > .panel-heading .badge{color:#f2dede;background-color:#e74c3c;}.panel-danger > .panel-footer + .panel-collapse > .panel-body{border-bottom-color:#ebccd1;}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden;}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0;}.embed-responsive-16by9{padding-bottom:56.25%;}.embed-responsive-4by3{padding-bottom:75%;}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15);}.well-lg{padding:24px;border-radius:5px;}.well-sm{padding:9px;border-radius:2px;}.close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.modal-open{overflow:hidden;}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0;}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out;}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.modal-open .modal{overflow-x:hidden;overflow-y:auto;}.modal-dialog{position:relative;width:auto;margin:10px;}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0;}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000;}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0);}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50);}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;}.modal-header .close{margin-top:-2px;}.modal-title{margin:0;line-height:1.42857143;}.modal-body{position:relative;padding:15px;}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5;}.modal-footer .btn + .btn{margin-left:5px;margin-bottom:0;}.modal-footer .btn-group .btn + .btn{margin-left:-1px;}.modal-footer .btn-block + .btn-block{margin-left:0;}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll;}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5);}.modal-sm{width:300px;}}@media (min-width:992px){.modal-lg{width:900px;}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.9;filter:alpha(opacity=90);}.tooltip.top{margin-top:-3px;padding:5px 0;}.tooltip.right{margin-left:3px;padding:0 5px;}.tooltip.bottom{margin-top:3px;padding:5px 0;}.tooltip.left{margin-left:-3px;padding:0 5px;}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:3px;}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000;}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000;}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000;}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000;}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);}.popover.top{margin-top:-10px;}.popover.right{margin-left:10px;}.popover.bottom{margin-top:10px;}.popover.left{margin-left:-10px;}.popover-title{margin:0;padding:8px 14px;font-size:12px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0;}.popover-content{padding:9px 14px;}.popover > .arrow,.popover > .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;}.popover > .arrow{border-width:11px;}.popover > .arrow:after{border-width:10px;content:"";}.popover.top > .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px;}.popover.top > .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff;}.popover.right > .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25);}.popover.right > .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff;}.popover.bottom > .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px;}.popover.bottom > .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff;}.popover.left > .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25);}.popover.left > .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px;}.carousel{position:relative;}.carousel-inner{position:relative;overflow:hidden;width:100%;}.carousel-inner > .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}.carousel-inner > .item > img,.carousel-inner > .item > a > img{line-height:1;}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner > .item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px;}.carousel-inner > .item.next,.carousel-inner > .item.active.right{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0;}.carousel-inner > .item.prev,.carousel-inner > .item.active.left{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0;}.carousel-inner > .item.next.left,.carousel-inner > .item.prev.right,.carousel-inner > .item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0;}}.carousel-inner > .active,.carousel-inner > .next,.carousel-inner > .prev{display:block;}.carousel-inner > .active{left:0;}.carousel-inner > .next,.carousel-inner > .prev{position:absolute;top:0;width:100%;}.carousel-inner > .next{left:100%;}.carousel-inner > .prev{left:-100%;}.carousel-inner > .next.left,.carousel-inner > .prev.right{left:0;}.carousel-inner > .active.left{left:-100%;}.carousel-inner > .active.right{left:100%;}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0);}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1);}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1);}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block;}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px;}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px;}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif;}.carousel-control .icon-prev:before{content:'\2039';}.carousel-control .icon-next:before{content:'\203a';}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center;}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff;}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);}.carousel-caption .btn{text-shadow:none;}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px;}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px;}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px;}.carousel-caption{left:20%;right:20%;padding-bottom:30px;}.carousel-indicators{bottom:20px;}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical > .btn-group:before,.btn-group-vertical > .btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table;}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical > .btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both;}.center-block{display:block;margin-left:auto;margin-right:auto;}.pull-right{float:right !important;}.pull-left{float:left !important;}.hide{display:none !important;}.show{display:block !important;}.invisible{visibility:hidden;}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.hidden{display:none !important;}.affix{position:fixed;}@-ms-viewport{width:device-width;}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important;}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important;}@media (max-width:767px){.visible-xs{display:block !important;}table.visible-xs{display:table !important;}tr.visible-xs{display:table-row !important;}th.visible-xs,td.visible-xs{display:table-cell !important;}}@media (max-width:767px){.visible-xs-block{display:block !important;}}@media (max-width:767px){.visible-xs-inline{display:inline !important;}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important;}table.visible-sm{display:table !important;}tr.visible-sm{display:table-row !important;}th.visible-sm,td.visible-sm{display:table-cell !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important;}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important;}table.visible-md{display:table !important;}tr.visible-md{display:table-row !important;}th.visible-md,td.visible-md{display:table-cell !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important;}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important;}}@media (min-width:1200px){.visible-lg{display:block !important;}table.visible-lg{display:table !important;}tr.visible-lg{display:table-row !important;}th.visible-lg,td.visible-lg{display:table-cell !important;}}@media (min-width:1200px){.visible-lg-block{display:block !important;}}@media (min-width:1200px){.visible-lg-inline{display:inline !important;}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important;}}@media (max-width:767px){.hidden-xs{display:none !important;}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important;}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important;}}@media (min-width:1200px){.hidden-lg{display:none !important;}}.visible-print{display:none !important;}@media print{.visible-print{display:block !important;}table.visible-print{display:table !important;}tr.visible-print{display:table-row !important;}th.visible-print,td.visible-print{display:table-cell !important;}}.visible-print-block{display:none !important;}@media print{.visible-print-block{display:block !important;}}.visible-print-inline{display:none !important;}@media print{.visible-print-inline{display:inline !important;}}.visible-print-inline-block{display:none !important;}@media print{.visible-print-inline-block{display:inline-block !important;}}@media print{.hidden-print{display:none !important;}}/*! * AdminLTE v2.3.7 * Author:Almsaeed Studio * Website:Almsaeed Studio <http://almsaeedstudio.com> * License:Open source - MIT * Please visit http://opensource.org/licenses/MIT for more information !*/ html,body{min-height:100%;}.layout-boxed html,.layout-boxed body{height:100%;}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto;}.wrapper{min-height:100%;position:relative;overflow:hidden;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.wrapper:before,.wrapper:after{content:" ";display:table;}.wrapper:after{clear:both;}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative;}.layout-boxed{background:url(../img/boxed-bg.jpg) repeat fixed;}.content-wrapper,.right-side,.main-footer{-webkit-transition:-webkit-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,margin 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,margin 0.3s ease-in-out;transition:transform 0.3s ease-in-out,margin 0.3s ease-in-out;margin-left:230px;z-index:820;}.layout-top-nav .content-wrapper,.layout-top-nav .right-side,.layout-top-nav .main-footer{margin-left:0;}@media (max-width:767px){.content-wrapper,.right-side,.main-footer{margin-left:0;}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .right-side,.sidebar-collapse .main-footer{margin-left:0;}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .right-side,.sidebar-open .main-footer{-webkit-transform:translate(230px,0);-ms-transform:translate(230px,0);-o-transform:translate(230px,0);transform:translate(230px,0);}}.content-wrapper,.right-side{min-height:100%;background-color:#ecf0f5;z-index:800;}.main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de;}.fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed;}.fixed .main-header{top:0;right:0;left:0;}.fixed .content-wrapper,.fixed .right-side{padding-top:50px;}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px;}}.fixed.layout-boxed .wrapper{max-width:100%;}body.hold-transition .content-wrapper,body.hold-transition .right-side,body.hold-transition .main-footer,body.hold-transition .main-sidebar,body.hold-transition .left-side,body.hold-transition .main-header .navbar,body.hold-transition .main-header .logo{-webkit-transition:none;-o-transition:none;transition:none;}.content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px;}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif;}a{color:#3c8dbc;}a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2;}.page-header{margin:10px 0 20px 0;font-size:22px;}.page-header > small{color:#666;display:block;margin-top:5px;}.main-header{position:relative;max-height:100px;z-index:1030;}.main-header .navbar{-webkit-transition:margin-left 0.3s ease-in-out;-o-transition:margin-left 0.3s ease-in-out;transition:margin-left 0.3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0;}.layout-top-nav .main-header .navbar{margin-left:0;}.main-header #navbar-search-input.form-control{background:rgba(255,255,255,0.2);border-color:transparent;}.main-header #navbar-search-input.form-control:focus,.main-header #navbar-search-input.form-control:active{border-color:rgba(0,0,0,0.1);background:rgba(255,255,255,0.9);}.main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1;}.main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc;}.main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc;}.main-header .navbar-custom-menu,.main-header .navbar-right{float:right;}@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:transparent;}}@media (max-width:767px){.main-header .navbar-right{float:none;}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px;}.main-header .navbar-right > li{color:inherit;border:0;}}.main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:16.5px 15px;font-family:fontAwesome;}.main-header .sidebar-toggle:before{content:"\f0c9";}.main-header .sidebar-toggle:hover{color:#fff;}.main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent;}.main-header .sidebar-toggle .icon-bar{display:none;}.main-header .navbar .nav > li.user > a > .fa,.main-header .navbar .nav > li.user > a > .glyphicon,.main-header .navbar .nav > li.user > a > .ion{margin-right:5px;}.main-header .navbar .nav > li > a > .label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9;}.main-header .logo{-webkit-transition:width 0.3s ease-in-out;-o-transition:width 0.3s ease-in-out;transition:width 0.3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden;}.main-header .logo .logo-lg{display:block;}.main-header .logo .logo-mini{display:none;}.main-header .navbar-brand{color:#fff;}.content-header{position:relative;padding:15px 15px 0 15px;}.content-header > h1{margin:0;font-size:24px;}.content-header > h1 > small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300;}.content-header > .breadcrumb{float:right;background:transparent;margin-top:0;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px;}.content-header > .breadcrumb > li > a{color:#444;text-decoration:none;display:inline-block;}.content-header > .breadcrumb > li > a > .fa,.content-header > .breadcrumb > li > a > .glyphicon,.content-header > .breadcrumb > li > a > .ion{margin-right:5px;}.content-header > .breadcrumb > li + li:before{content:'>\00a0';}@media (max-width:991px){.content-header > .breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px;}.content-header > .breadcrumb li:before{color:#97a0b3;}}.navbar-toggle{color:#fff;border:0;margin:0;padding:16.5px 15px;}@media (max-width:991px){.navbar-custom-menu .navbar-nav > li{float:left;}.navbar-custom-menu .navbar-nav{margin:0;float:left;}.navbar-custom-menu .navbar-nav > li > a{padding-top:15px;padding-bottom:15px;line-height:20px;}}@media (max-width:767px){.main-header{position:relative;}.main-header .logo,.main-header .navbar{width:100%;float:none;}.main-header .navbar{margin:0;}.main-header .navbar-custom-menu{float:right;}}@media (max-width:991px){.navbar-collapse.pull-left{float:none !important;}.navbar-collapse.pull-left + .navbar-custom-menu{display:block;position:absolute;top:0;right:40px;}}.main-sidebar,.left-side{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform 0.3s ease-in-out,width 0.3s ease-in-out;-moz-transition:-moz-transform 0.3s ease-in-out,width 0.3s ease-in-out;-o-transition:-o-transform 0.3s ease-in-out,width 0.3s ease-in-out;transition:transform 0.3s ease-in-out,width 0.3s ease-in-out;}@media (max-width:767px){.main-sidebar,.left-side{padding-top:100px;}}@media (max-width:767px){.main-sidebar,.left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (min-width:768px){.sidebar-collapse .main-sidebar,.sidebar-collapse .left-side{-webkit-transform:translate(-230px,0);-ms-transform:translate(-230px,0);-o-transform:translate(-230px,0);transform:translate(-230px,0);}}@media (max-width:767px){.sidebar-open .main-sidebar,.sidebar-open .left-side{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}}.sidebar{padding-bottom:10px;}.sidebar-form input:focus{border-color:transparent;}.user-panel{position:relative;width:100%;padding:10px;overflow:hidden;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel:before,.user-panel:after{content:" ";display:table;}.user-panel:after{clear:both;}.user-panel > .image > img{width:100%;max-width:45px;height:auto;}.user-panel > .info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px;}.user-panel > .info > p{font-weight:600;margin-bottom:9px;}.user-panel > .info > a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px;}.user-panel > .info > a > .fa,.user-panel > .info > a > .ion,.user-panel > .info > a > .glyphicon{margin-right:3px;}.sidebar-menu{list-style:none;margin:0;padding:0;}.sidebar-menu > li{position:relative;margin:0;padding:0;}.sidebar-menu > li > a{padding:12px 5px 12px 15px;display:block;}.sidebar-menu > li > a > .fa,.sidebar-menu > li > a > .glyphicon,.sidebar-menu > li > a > .ion{width:20px;}.sidebar-menu > li .label,.sidebar-menu > li .badge{margin-right:5px;}.sidebar-menu > li .badge{margin-top:3px;}.sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px;}.sidebar-menu li > a > .fa-angle-left,.sidebar-menu li > a > .pull-right-container > .fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;}.sidebar-menu li.active > a > .fa-angle-left,.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg);}.sidebar-menu li.active > .treeview-menu{display:block;}.sidebar-menu .treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px;}.sidebar-menu .treeview-menu .treeview-menu{padding-left:20px;}.sidebar-menu .treeview-menu > li{margin:0;}.sidebar-menu .treeview-menu > li > a{padding:12px 5px 12px 15px;display:block;font-size:12px;}.sidebar-menu .treeview-menu > li > a > .fa,.sidebar-menu .treeview-menu > li > a > .glyphicon,.sidebar-menu .treeview-menu > li > a > .ion{width:20px;}.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-down,.sidebar-menu .treeview-menu > li > a > .fa-angle-left,.sidebar-menu .treeview-menu > li > a > .fa-angle-down{width:auto;}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px !important;z-index:840;}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);width:50px !important;z-index:850;}.sidebar-mini.sidebar-collapse .sidebar-menu > li{position:relative;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a{margin-right:0;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span{border-top-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span{border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right),.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{display:block !important;position:absolute;width:180px;left:50px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container{float:right;width:auto!important;left:200px!important;top:10px!important;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type){display:none;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{top:44px;margin-left:0;}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span,.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none !important;-webkit-transform:translateZ(0);}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px;}.sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg{display:none;}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px;}}.sidebar-menu,.main-sidebar .user-panel,.sidebar-menu > li.header{white-space:nowrap;overflow:hidden;}.sidebar-menu:hover{overflow:visible;}.sidebar-form,.sidebar-menu > li.header{overflow:hidden;text-overflow:clip;}.sidebar-menu li > a{position:relative;}.sidebar-menu li > a > .pull-right-container{position:absolute;right:10px;top:50%;margin-top:-7px;}.control-sidebar-bg{position:fixed;z-index:1000;bottom:0;}.control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right 0.3s ease-in-out;-o-transition:right 0.3s ease-in-out;transition:right 0.3s ease-in-out;}.control-sidebar{position:absolute;padding-top:50px;z-index:1010;}@media (max-width:768px){.control-sidebar{padding-top:100px;}}.control-sidebar > .tab-content{padding:10px 15px;}.control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open + .control-sidebar-bg{right:0;}.control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0;}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px;}}.nav-tabs.control-sidebar-tabs > li:first-of-type > a,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover,.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus{border-left-width:0;}.nav-tabs.control-sidebar-tabs > li > a{border-radius:0;}.nav-tabs.control-sidebar-tabs > li > a,.nav-tabs.control-sidebar-tabs > li > a:hover{border-top:none;border-right:none;border-left:1px solid transparent;border-bottom:1px solid transparent;}.nav-tabs.control-sidebar-tabs > li > a .icon{font-size:16px;}.nav-tabs.control-sidebar-tabs > li.active > a,.nav-tabs.control-sidebar-tabs > li.active > a:hover,.nav-tabs.control-sidebar-tabs > li.active > a:focus,.nav-tabs.control-sidebar-tabs > li.active > a:active{border-top:none;border-right:none;border-bottom:none;}@media (max-width:768px){.nav-tabs.control-sidebar-tabs{display:table;}.nav-tabs.control-sidebar-tabs > li{display:table-cell;}}.control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px;}.control-sidebar-subheading{display:block;font-weight:400;font-size:14px;}.control-sidebar-menu{list-style:none;padding:0;margin:0 -15px;}.control-sidebar-menu > li > a{display:block;padding:10px 15px;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a:before,.control-sidebar-menu > li > a:after{content:" ";display:table;}.control-sidebar-menu > li > a:after{clear:both;}.control-sidebar-menu > li > a > .control-sidebar-subheading{margin-top:0;}.control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px;}.control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px;}.control-sidebar-menu .menu-info > .control-sidebar-subheading{margin:0;}.control-sidebar-menu .menu-info > p{margin:0;font-size:11px;}.control-sidebar-menu .progress{margin:0;}.control-sidebar-dark{color:#b8c7ce;}.control-sidebar-dark,.control-sidebar-dark + .control-sidebar-bg{background:#222d32;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs{border-bottom:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a{background:#181f23;color:#b8c7ce;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#141a1d;border-bottom-color:#141a1d;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active{background:#1c2529;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover{color:#fff;}.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#222d32;color:#fff;}.control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff;}.control-sidebar-dark .control-sidebar-menu > li > a:hover{background:#1e282c;}.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p{color:#b8c7ce;}.control-sidebar-light{color:#5e5e5e;}.control-sidebar-light,.control-sidebar-light + .control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs{border-bottom:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a{background:#e8ecf4;color:#444;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus{border-left-color:#d2d6de;border-bottom-color:#d2d6de;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active{background:#eff1f7;}.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active{background:#f9fafc;color:#111;}.control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111;}.control-sidebar-light .control-sidebar-menu{margin-left:-14px;}.control-sidebar-light .control-sidebar-menu > li > a:hover{background:#f4f4f5;}.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p{color:#5e5e5e;}.dropdown-menu{box-shadow:none;border-color:#eee;}.dropdown-menu > li > a{}.dropdown-menu > li > a > .glyphicon,.dropdown-menu > li > a > .fa,.dropdown-menu > li > a > .ion{margin-right:10px;}.dropdown-menu > li > a:hover{background-color:#e1e3e9;color:#333;}.dropdown-menu > .divider{background-color:#eee;}.navbar-nav > .notifications-menu > .dropdown-menu,.navbar-nav > .messages-menu > .dropdown-menu,.navbar-nav > .tasks-menu > .dropdown-menu{width:280px;padding:0 0 0 0;margin:0;top:100%;}.navbar-nav > .notifications-menu > .dropdown-menu > li,.navbar-nav > .messages-menu > .dropdown-menu > li,.navbar-nav > .tasks-menu > .dropdown-menu > li{position:relative;}.navbar-nav > .notifications-menu > .dropdown-menu > li.header,.navbar-nav > .messages-menu > .dropdown-menu > li.header,.navbar-nav > .tasks-menu > .dropdown-menu > li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px;}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444 !important;text-align:center;}@media (max-width:991px){.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a{background:#fff !important;color:#444 !important;}}.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover{text-decoration:none;font-weight:normal;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu,.navbar-nav > .messages-menu > .dropdown-menu > li .menu,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover,.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover{background:#f4f4f4;text-decoration:none;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a{color:#444444;overflow:hidden;text-overflow:ellipsis;padding:10px;}.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa,.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion{width:20px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a{margin:0;padding:10px 10px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img{margin:auto 10px auto auto;width:40px;height:40px;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small{color:#999999;font-size:10px;position:absolute;top:0;right:0;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p{margin:0 0 0 45px;font-size:12px;color:#888888;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before,.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{content:" ";display:table;}.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after{clear:both;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a{padding:10px;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666;}.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress{padding:0;margin:0;}.navbar-nav > .user-menu > .dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width:0;width:280px;}.navbar-nav > .user-menu > .dropdown-menu,.navbar-nav > .user-menu > .dropdown-menu > .user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px;}.navbar-nav > .user-menu > .dropdown-menu > li.user-header{height:175px;padding:10px;text-align:center;}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img{z-index:5;height:90px;width:90px;border:3px solid;border-color:transparent;border-color:rgba(255,255,255,0.2);}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);font-size:17px;margin-top:10px;}.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small{display:block;font-size:12px;}.navbar-nav > .user-menu > .dropdown-menu > .user-body{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:before,.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-body:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-body a{color:#444 !important;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-body a{background:#fff !important;color:#444 !important;}}.navbar-nav > .user-menu > .dropdown-menu > .user-footer{background-color:#f9f9f9;padding:10px;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before,.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{content:" ";display:table;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after{clear:both;}.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default{color:#666666;}@media (max-width:991px){.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover{background-color:#f9f9f9;}}.navbar-nav > .user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px;}@media (max-width:767px){.navbar-nav > .user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px;}}.open:not(.dropup) > .animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX 0.7s both;-o-animation:flipInX 0.7s both;animation:flipInX 0.7s both;}@keyframes flipInX{0%{transform:perspective(400px) rotate3d(1,0,0,90deg);transition-timing-function:ease-in;opacity:0;}40%{transform:perspective(400px) rotate3d(1,0,0,-20deg);transition-timing-function:ease-in;}60%{transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{transform:perspective(400px);}}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;opacity:0;}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1;}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);}100%{-webkit-transform:perspective(400px);}}.navbar-custom-menu > .navbar-nav > li{position:relative;}.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{position:absolute;right:0;left:auto;}@media (max-width:991px){.navbar-custom-menu > .navbar-nav{float:right;}.navbar-custom-menu > .navbar-nav > li{position:static;}.navbar-custom-menu > .navbar-nav > li > .dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff;}}.dropdown-submenu{position:relative;}.dropdown-submenu > .dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:3px 0 3px 3px;}.dropdown-submenu:hover > .dropdown-menu{display:block;}.dropdown-submenu:hover > a:after{border-left-color:#fff;}.dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;}.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left > .dropdown-menu{left:-100%;margin-left:10px;border-radius:3px 0 3px 3px;}.form-control{border-radius:0;box-shadow:none;border-color:#d2d6de;-webkit-appearance:none;-moz-appearance:none;appearance:none;}.form-control:focus{border-color:#3c8dbc;box-shadow:none;}.form-control::-moz-placeholder,.form-control:-ms-input-placeholder,.form-control::-webkit-input-placeholder{color:#bbb;opacity:1;}.form-control .btn{border-radius:0;}select.form-control{-webkit-appearance:none;-webkit-border-radius:0px;background-position:right 50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAMCAYAAABSgIzaAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZFNDEwNjlGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZFNDEwNkFGNzFEMTFFMkJEQ0VDRTM1N0RCMzMyMkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkU0MTA2N0Y3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkU0MTA2OEY3MUQxMUUyQkRDRUNFMzU3REIzMzIyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuGsgwQAAAA5SURBVHjaYvz//z8DOYCJgUxAf42MQIzTk0D/M+KzkRGPoQSdykiKJrBGpOhgJFYTWNEIiEeAAAMAzNENEOH+do8AAAAASUVORK5CYII=);}.form-group.has-success label{color:#18bc9c;}.form-group.has-success .form-control,.form-group.has-success .input-group-addon{border-color:#18bc9c;box-shadow:none;}.form-group.has-success .help-block{color:#18bc9c;}.form-group.has-warning label{color:#f39c12;}.form-group.has-warning .form-control,.form-group.has-warning .input-group-addon{border-color:#f39c12;box-shadow:none;}.form-group.has-warning .help-block{color:#f39c12;}.form-group.has-error label{color:#e74c3c;}.form-group.has-error .form-control,.form-group.has-error .input-group-addon{border-color:#e74c3c;box-shadow:none;}.form-group.has-error .help-block{color:#e74c3c;}.input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff;}.btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0;}.icheck > label{padding-left:0;}.form-control-feedback.fa{line-height:31px;}.input-lg + .form-control-feedback.fa,.input-group-lg + .form-control-feedback.fa,.form-group-lg .form-control + .form-control-feedback.fa{line-height:42px;}.input-sm + .form-control-feedback.fa,.input-group-sm + .form-control-feedback.fa,.form-group-sm .form-control + .form-control-feedback.fa{line-height:28px;}.progress,.progress > .progress-bar{-webkit-box-shadow:none;box-shadow:none;}.progress,.progress > .progress-bar,.progress .progress-bar,.progress > .progress-bar .progress-bar{border-radius:1px;}.progress.sm,.progress-sm{height:10px;}.progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px;}.progress.xs,.progress-xs{height:7px;}.progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px;}.progress.xxs,.progress-xxs{height:3px;}.progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px;}.progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px;}.progress.vertical > .progress-bar{width:100%;position:absolute;bottom:0;}.progress.vertical.sm,.progress.vertical.progress-sm{width:20px;}.progress.vertical.xs,.progress.vertical.progress-xs{width:10px;}.progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px;}.progress-group .progress-text{font-weight:600;}.progress-group .progress-number{float:right;}.table tr > td .progress{margin:0;}.progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc;}.progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-green,.progress-bar-success{background-color:#18bc9c;}.progress-striped .progress-bar-green,.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-aqua,.progress-bar-info{background-color:#3498db;}.progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-yellow,.progress-bar-warning{background-color:#f39c12;}.progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.progress-bar-red,.progress-bar-danger{background-color:#e74c3c;}.progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);}.small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.small-box > .inner{padding:10px;}.small-box > .small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none;}.small-box > .small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15);}.small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0;}.small-box p{font-size:15px;}.small-box p > small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px;}.small-box h3,.small-box p{z-index:5;}.small-box .icon{-webkit-transition:all 0.3s linear;-o-transition:all 0.3s linear;transition:all 0.3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15);}.small-box:hover{text-decoration:none;color:#f9f9f9;}.small-box:hover .icon{font-size:95px;}@media (max-width:767px){.small-box{text-align:center;}.small-box .icon{display:none;}.small-box p{font-size:12px;}}.box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);}.box.box-primary{border-top-color:#3c8dbc;}.box.box-info{border-top-color:#3498db;}.box.box-danger{border-top-color:#e74c3c;}.box.box-warning{border-top-color:#f39c12;}.box.box-success{border-top-color:#18bc9c;}.box.box-default{border-top-color:#d2d6de;}.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none;}.box .nav-stacked > li{border-bottom:1px solid #f4f4f4;margin:0;}.box .nav-stacked > li:last-of-type{border-bottom:none;}.box.height-control .box-body{max-height:300px;overflow:auto;}.box .border-right{border-right:1px solid #f4f4f4;}.box .border-left{border-left:1px solid #f4f4f4;}.box.box-solid{border-top:0;}.box.box-solid > .box-header .btn.btn-default{background:transparent;}.box.box-solid > .box-header .btn:hover,.box.box-solid > .box-header a:hover{background:rgba(0,0,0,0.1);}.box.box-solid.box-default{border:1px solid #d2d6de;}.box.box-solid.box-default > .box-header{color:#444;background:#d2d6de;background-color:#d2d6de;}.box.box-solid.box-default > .box-header a,.box.box-solid.box-default > .box-header .btn{color:#444;}.box.box-solid.box-primary{border:1px solid #3c8dbc;}.box.box-solid.box-primary > .box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc;}.box.box-solid.box-primary > .box-header a,.box.box-solid.box-primary > .box-header .btn{color:#fff;}.box.box-solid.box-info{border:1px solid #3498db;}.box.box-solid.box-info > .box-header{color:#fff;background:#3498db;background-color:#3498db;}.box.box-solid.box-info > .box-header a,.box.box-solid.box-info > .box-header .btn{color:#fff;}.box.box-solid.box-danger{border:1px solid #e74c3c;}.box.box-solid.box-danger > .box-header{color:#fff;background:#e74c3c;background-color:#e74c3c;}.box.box-solid.box-danger > .box-header a,.box.box-solid.box-danger > .box-header .btn{color:#fff;}.box.box-solid.box-warning{border:1px solid #f39c12;}.box.box-solid.box-warning > .box-header{color:#fff;background:#f39c12;background-color:#f39c12;}.box.box-solid.box-warning > .box-header a,.box.box-solid.box-warning > .box-header .btn{color:#fff;}.box.box-solid.box-success{border:1px solid #18bc9c;}.box.box-solid.box-success > .box-header{color:#fff;background:#18bc9c;background-color:#18bc9c;}.box.box-solid.box-success > .box-header a,.box.box-solid.box-success > .box-header .btn{color:#fff;}.box.box-solid > .box-header > .box-tools .btn{border:0;box-shadow:none;}.box.box-solid[class*='bg'] > .box-header{color:#fff;}.box .box-group > .box{margin-bottom:5px;}.box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:0.3em;}.box > .overlay,.overlay-wrapper > .overlay,.box > .loading-img,.overlay-wrapper > .loading-img{position:absolute;top:0;left:0;width:100%;height:100%;}.box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px;}.box .overlay > .fa,.overlay-wrapper .overlay > .fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px;}.box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5);}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table;}.box-header:after,.box-body:after,.box-footer:after{clear:both;}.box-header{color:#444;display:block;padding:10px;position:relative;}.box-header.with-border{border-bottom:1px solid #f4f4f4;}.collapsed-box .box-header.with-border{border-bottom:none;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1;}.box-header > .fa,.box-header > .glyphicon,.box-header > .ion{margin-right:5px;}.box-header > .box-tools{position:absolute;right:10px;top:5px;}.box-header > .box-tools [data-toggle="tooltip"]{position:relative;}.box-header > .box-tools.pull-right .dropdown-menu{right:0;left:auto;}.btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3;}.open .btn-box-tool,.btn-box-tool:hover{color:#606c84;}.btn-box-tool.btn:active{box-shadow:none;}.box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px;}.no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px;}.box-body > .table{margin-bottom:0;}.box-body .fc{margin-top:5px;}.box-body .full-width-chart{margin:-19px;}.box-body.no-padding .full-width-chart{margin:-9px;}.box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px;}.box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0;}.box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff;}.chart-legend{margin:10px 0;}@media (max-width:991px){.chart-legend > li{float:left;margin-right:10px;}}.box-comments{background:#f7f7f7;}.box-comments .box-comment{padding:8px 0;border-bottom:1px solid #eee;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table;}.box-comments .box-comment:after{clear:both;}.box-comments .box-comment:last-of-type{border-bottom:0;}.box-comments .box-comment:first-of-type{padding-top:0;}.box-comments .box-comment img{float:left;}.box-comments .comment-text{margin-left:40px;color:#555;}.box-comments .username{color:#444;display:block;font-weight:600;}.box-comments .text-muted{font-weight:400;font-size:12px;}.todo-list{margin:0;padding:0;list-style:none;overflow:auto;}.todo-list > li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444;}.todo-list > li:last-of-type{margin-bottom:0;}.todo-list > li > input[type='checkbox']{margin:0 10px 0 5px;}.todo-list > li .text{display:inline-block;margin-left:5px;font-weight:600;}.todo-list > li .label{margin-left:10px;font-size:9px;}.todo-list > li .tools{display:none;float:right;color:#e74c3c;}.todo-list > li .tools > .fa,.todo-list > li .tools > .glyphicon,.todo-list > li .tools > .ion{margin-right:5px;cursor:pointer;}.todo-list > li:hover .tools{display:inline-block;}.todo-list > li.done{color:#999;}.todo-list > li.done .text{text-decoration:line-through;font-weight:500;}.todo-list > li.done .label{background:#d2d6de !important;}.todo-list .danger{border-left-color:#e74c3c;}.todo-list .warning{border-left-color:#f39c12;}.todo-list .info{border-left-color:#3498db;}.todo-list .success{border-left-color:#18bc9c;}.todo-list .primary{border-left-color:#3c8dbc;}.todo-list .handle{display:inline-block;cursor:move;margin:0 5px;}.chat{padding:5px 20px 5px 10px;}.chat .item{margin-bottom:10px;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item:before,.chat .item:after{content:" ";display:table;}.chat .item:after{clear:both;}.chat .item > img{width:40px;height:40px;border:2px solid transparent;border-radius:50%;}.chat .item > .online{border:2px solid #18bc9c;}.chat .item > .offline{border:2px solid #e74c3c;}.chat .item > .message{margin-left:55px;margin-top:-40px;}.chat .item > .message > .name{display:block;font-weight:600;}.chat .item > .attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px;}.chat .item > .attachment > h4{margin:0 0 5px 0;font-weight:600;font-size:14px;}.chat .item > .attachment > p,.chat .item > .attachment > .filename{font-weight:600;font-size:13px;font-style:italic;margin:0;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.chat .item > .attachment:before,.chat .item > .attachment:after{content:" ";display:table;}.chat .item > .attachment:after{clear:both;}.box-input{max-width:200px;}.modal .panel-body{color:#444;}.info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px;}.info-box small{font-size:14px;}.info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px;}.info-box .progress,.info-box .progress .progress-bar{border-radius:0;}.info-box .progress .progress-bar{background:#fff;}.info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2);}.info-box-icon > img{max-width:100%;}.info-box-content{padding:5px 10px;margin-left:90px;}.info-box-number{display:block;font-weight:bold;font-size:18px;}.progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.info-box-text{text-transform:uppercase;}.info-box-more{display:block;}.progress-description{margin:0;}.timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none;}.timeline:before{content:'';position:absolute;top:0;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px;}.timeline > li{position:relative;margin-right:10px;margin-bottom:15px;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li:before,.timeline > li:after{content:" ";display:table;}.timeline > li:after{clear:both;}.timeline > li > .timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative;}.timeline > li > .timeline-item > .time{color:#999;float:right;padding:10px;font-size:12px;}.timeline > li > .timeline-item > .timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1;}.timeline > li > .timeline-item > .timeline-header > a{font-weight:600;}.timeline > li > .timeline-item > .timeline-body,.timeline > li > .timeline-item > .timeline-footer{padding:10px;}.timeline > li > .fa,.timeline > li > .glyphicon,.timeline > li > .ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0;}.timeline > .time-label > span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px;}.timeline-inverse > li > .timeline-item{background:#f0f0f0;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;}.timeline-inverse > li > .timeline-item > .timeline-header{border-bottom-color:#ddd;}.btn{-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent;}.btn.uppercase{text-transform:uppercase;}.btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px;}.btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn:focus{outline:none;}.btn.btn-file{position:relative;overflow:hidden;}.btn.btn-file > input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block;}.btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd;}.btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7;}.btn-outline{border:1px solid #fff;background:transparent;color:#fff;}.btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7);}.btn-link{-webkit-box-shadow:none;box-shadow:none;}.btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2);}.btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px;}.btn-app > .fa,.btn-app > .glyphicon,.btn-app > .ion{font-size:20px;display:block;}.btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa;}.btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);}.btn-app > .badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400;}.callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee;}.callout a{color:#fff;text-decoration:underline;}.callout a:hover{color:#eee;}.callout h4{margin-top:0;font-weight:600;}.callout p:last-child{margin-bottom:0;}.callout code,.callout .highlight{background-color:#fff;}.callout.callout-danger{border-color:#d62c1a;}.callout.callout-warning{border-color:#c87f0a;}.callout.callout-info{border-color:#217dbb;}.callout.callout-success{border-color:#128f76;}.alert{border-radius:3px;}.alert h4{font-weight:600;}.alert .icon{margin-right:10px;}.alert .close{color:#000;opacity:0.2;filter:alpha(opacity=20);}.alert .close:hover{opacity:0.5;filter:alpha(opacity=50);}.alert a{color:#fff;text-decoration:underline;}.alert-success{border-color:#15a589;}.alert-danger,.alert-error{border-color:#e43725;}.alert-warning{border-color:#e08e0b;}.alert-info{border-color:#258cd1;}.nav > li > a:hover,.nav > li > a:active,.nav > li > a:focus{color:#444;background:#f7f7f7;}.nav-pills > li > a{border-radius:0;border-top:3px solid transparent;color:#444;}.nav-pills > li > a > .fa,.nav-pills > li > a > .glyphicon,.nav-pills > li > a > .ion{margin-right:5px;}.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{border-top-color:#3c8dbc;}.nav-pills > li.active > a{font-weight:600;}.nav-stacked > li > a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444;}.nav-stacked > li.active > a,.nav-stacked > li.active > a:hover{background:transparent;color:#444;border-top:0;border-left-color:#3c8dbc;}.nav-stacked > li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase;}.nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;}.nav-tabs-custom > .nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px;}.nav-tabs-custom > .nav-tabs > li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px;}.nav-tabs-custom > .nav-tabs > li > a{color:#444;border-radius:0;}.nav-tabs-custom > .nav-tabs > li > a.text-muted{color:#999;}.nav-tabs-custom > .nav-tabs > li > a,.nav-tabs-custom > .nav-tabs > li > a:hover{background:transparent;margin:0;}.nav-tabs-custom > .nav-tabs > li > a:hover{color:#999;}.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus,.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active{border-color:transparent;}.nav-tabs-custom > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom > .nav-tabs > li.active > a,.nav-tabs-custom > .nav-tabs > li.active:hover > a{background-color:#fff;color:#444;}.nav-tabs-custom > .nav-tabs > li.active > a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4;}.nav-tabs-custom > .nav-tabs > li:first-of-type{margin-left:0;}.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a{border-left-color:transparent;}.nav-tabs-custom > .nav-tabs.pull-right{float:none !important;}.nav-tabs-custom > .nav-tabs.pull-right > li{float:right;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type{margin-right:0;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a{border-left-width:1px;}.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a{border-left-color:#f4f4f4;border-right-color:transparent;}.nav-tabs-custom > .nav-tabs > li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444;}.nav-tabs-custom > .nav-tabs > li.header > .fa,.nav-tabs-custom > .nav-tabs > li.header > .glyphicon,.nav-tabs-custom > .nav-tabs > li.header > .ion{margin-right:5px;}.nav-tabs-custom > .tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;}.nav-tabs-custom .dropdown.open > a:active,.nav-tabs-custom .dropdown.open > a:focus{background:transparent;color:#999;}.nav-tabs-custom.tab-primary > .nav-tabs > li.active{border-top-color:#3c8dbc;}.nav-tabs-custom.tab-info > .nav-tabs > li.active{border-top-color:#3498db;}.nav-tabs-custom.tab-danger > .nav-tabs > li.active{border-top-color:#e74c3c;}.nav-tabs-custom.tab-warning > .nav-tabs > li.active{border-top-color:#f39c12;}.nav-tabs-custom.tab-success > .nav-tabs > li.active{border-top-color:#18bc9c;}.nav-tabs-custom.tab-default > .nav-tabs > li.active{border-top-color:#d2d6de;}.pagination > li > a{background:#fafafa;color:#666;}.pagination.pagination-flat > li > a{border-radius:0 !important;}.products-list{list-style:none;margin:0;padding:0;}.products-list > .item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list > .item:before,.products-list > .item:after{content:" ";display:table;}.products-list > .item:after{clear:both;}.products-list .product-img{float:left;}.products-list .product-img img{width:50px;height:50px;}.products-list .product-info{margin-left:60px;}.products-list .product-title{font-weight:600;}.products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.product-list-in-box > .item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4;}.product-list-in-box > .item:last-of-type{border-bottom-width:0;}.table > thead > tr > th,.table > tbody > tr > th,.table > tfoot > tr > th,.table > thead > tr > td,.table > tbody > tr > td,.table > tfoot > tr > td{border-top:1px solid #f4f4f4;}.table > thead > tr > th{border-bottom:2px solid #f4f4f4;}.table tr td .progress{margin-top:5px;}.table-bordered{border:1px solid #f4f4f4;}.table-bordered > thead > tr > th,.table-bordered > tbody > tr > th,.table-bordered > tfoot > tr > th,.table-bordered > thead > tr > td,.table-bordered > tbody > tr > td,.table-bordered > tfoot > tr > td{border:1px solid #f4f4f4;}.table-bordered > thead > tr > th,.table-bordered > thead > tr > td{border-bottom-width:2px;}.table.no-border,.table.no-border td,.table.no-border th{border:0;}table.text-center,table.text-center td,table.text-center th{text-align:center;}.table.align th{text-align:left;}.table.align td{text-align:right;}.direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0;}.direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-messages{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);padding:10px;height:250px;overflow:auto;}.direct-chat-msg,.direct-chat-text{display:block;}.direct-chat-msg{margin-bottom:10px;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table;}.direct-chat-msg:after{clear:both;}.direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform 0.5s ease-in-out;-moz-transition:-moz-transform 0.5s ease-in-out;-o-transition:-o-transform 0.5s ease-in-out;transition:transform 0.5s ease-in-out;}.direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444;}.direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none;}.direct-chat-text:after{border-width:5px;margin-top:-5px;}.direct-chat-text:before{border-width:6px;margin-top:-6px;}.right .direct-chat-text{margin-right:50px;margin-left:0;}.right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de;}.direct-chat-img{border-radius:50%;float:left;width:40px;height:40px;}.right .direct-chat-img{float:right;}.direct-chat-info{display:block;margin-bottom:2px;font-size:12px;}.direct-chat-name{font-weight:600;}.direct-chat-timestamp{color:#999;}.direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0);}.direct-chat-contacts{-webkit-transform:translate(101%,0);-ms-transform:translate(101%,0);-o-transform:translate(101%,0);transform:translate(101%,0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto;}.contacts-list > li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:before,.contacts-list > li:after{content:" ";display:table;}.contacts-list > li:after{clear:both;}.contacts-list > li:last-of-type{border-bottom:none;}.contacts-list-img{border-radius:50%;width:40px;float:left;}.contacts-list-info{margin-left:45px;color:#fff;}.contacts-list-name,.contacts-list-status{display:block;}.contacts-list-name{font-weight:600;}.contacts-list-status{font-size:12px;}.contacts-list-date{color:#aaa;font-weight:normal;}.contacts-list-msg{color:#999;}.direct-chat-danger .right > .direct-chat-text{background:#e74c3c;border-color:#e74c3c;color:#fff;}.direct-chat-danger .right > .direct-chat-text:after,.direct-chat-danger .right > .direct-chat-text:before{border-left-color:#e74c3c;}.direct-chat-primary .right > .direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff;}.direct-chat-primary .right > .direct-chat-text:after,.direct-chat-primary .right > .direct-chat-text:before{border-left-color:#3c8dbc;}.direct-chat-warning .right > .direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff;}.direct-chat-warning .right > .direct-chat-text:after,.direct-chat-warning .right > .direct-chat-text:before{border-left-color:#f39c12;}.direct-chat-info .right > .direct-chat-text{background:#3498db;border-color:#3498db;color:#fff;}.direct-chat-info .right > .direct-chat-text:after,.direct-chat-info .right > .direct-chat-text:before{border-left-color:#3498db;}.direct-chat-success .right > .direct-chat-text{background:#18bc9c;border-color:#18bc9c;color:#fff;}.direct-chat-success .right > .direct-chat-text:after,.direct-chat-success .right > .direct-chat-text:before{border-left-color:#18bc9c;}.users-list > li{width:25%;float:left;padding:10px;text-align:center;}.users-list > li img{border-radius:50%;max-width:100%;height:auto;}.users-list > li > a:hover,.users-list > li > a:hover .users-list-name{color:#999;}.users-list-name,.users-list-date{display:block;}.users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.users-list-date{color:#999;font-size:12px;}.carousel-control.left,.carousel-control.right{background-image:none;}.carousel-control > .fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px;}.modal{background:rgba(0,0,0,0.3);}.modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);border:0;}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);}}.modal-header{border-bottom-color:#f4f4f4;}.modal-footer{border-top-color:#f4f4f4;}.modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095;}.modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a;}.modal-info .modal-header,.modal-info .modal-footer{border-color:#217dbb;}.modal-success .modal-header,.modal-success .modal-footer{border-color:#128f76;}.modal-danger .modal-header,.modal-danger .modal-footer{border-color:#d62c1a;}.box-widget{border:none;position:relative;}.widget-user .widget-user-header{padding:20px;height:120px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user .widget-user-username{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,0.2);}.widget-user .widget-user-desc{margin-top:0;}.widget-user .widget-user-image{position:absolute;top:65px;left:50%;margin-left:-45px;}.widget-user .widget-user-image > img{width:90px;height:auto;border:3px solid #fff;}.widget-user .box-footer{padding-top:30px;}.widget-user-2 .widget-user-header{padding:20px;border-top-right-radius:3px;border-top-left-radius:3px;}.widget-user-2 .widget-user-username{margin-top:5px;margin-bottom:5px;font-size:25px;font-weight:300;}.widget-user-2 .widget-user-desc{margin-top:0;}.widget-user-2 .widget-user-username,.widget-user-2 .widget-user-desc{margin-left:75px;}.widget-user-2 .widget-user-image > img{width:65px;height:auto;float:left;}.close,.mailbox-attachment-close{float:right;font-size:18px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20);}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50);}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;}.clearfix:before,.clearfix:after,.content:before,.content:after{content:" ";display:table;}.clearfix:after,.content:after{clear:both;}.center-block{display:block;margin-left:auto;margin-right:auto;}.pull-right{float:right !important;}.pull-left{float:left !important;}.hide{display:none !important;}.show{display:block !important;}.invisible{visibility:hidden;}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}.hidden{display:none !important;}.affix{position:fixed;}.mailbox-messages > .table{margin:0;}.mailbox-controls{padding:5px;}.mailbox-controls.with-border{border-bottom:1px solid #f4f4f4;}.mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px;}.mailbox-read-info h3{font-size:20px;margin:0;}.mailbox-read-info h5{margin:0;padding:5px 0 0 0;}.mailbox-read-time{color:#999;font-size:13px;}.mailbox-read-message{padding:10px;}.mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px;}.mailbox-attachment-name{font-weight:bold;color:#666;}.mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block;}.mailbox-attachment-info{padding:10px;background:#f4f4f4;}.mailbox-attachment-size{color:#999;font-size:12px;}.mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px;}.mailbox-attachment-icon.has-img{padding:0;}.mailbox-attachment-icon.has-img > img{max-width:100%;height:auto;}.lockscreen{background:#d2d6de;}.lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300;}.lockscreen-logo a{color:#444;}.lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%;}.lockscreen .lockscreen-name{text-align:center;font-weight:600;}.lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px;}.lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10;}.lockscreen-image > img{border-radius:50%;width:70px;height:70px;}.lockscreen-credentials{margin-left:70px;}.lockscreen-credentials .form-control{border:0;}.lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px;}.lockscreen-footer{margin-top:10px;}.login-logo,.register-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300;}.login-logo a,.register-logo a{color:#444;}.login-page,.register-page{background:#d2d6de;}.login-box,.register-box{width:360px;margin:7% auto;}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px;}}.login-box-body,.register-box-body{background:#fff;padding:20px;border-top:0;color:#666;}.login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777;}.login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px;}.social-auth-links{margin:10px 0;}.error-page{width:600px;margin:20px auto 0 auto;}@media (max-width:991px){.error-page{width:100%;}}.error-page > .headline{float:left;font-size:100px;font-weight:300;}@media (max-width:991px){.error-page > .headline{float:none;text-align:center;}}.error-page > .error-content{margin-left:190px;display:block;}@media (max-width:991px){.error-page > .error-content{margin-left:0;}}.error-page > .error-content > h3{font-weight:300;font-size:25px;}@media (max-width:991px){.error-page > .error-content > h3{text-align:center;}}.invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px;}.invoice-title{margin-top:0;}.profile-user-img{margin:0 auto;width:100px;padding:3px;border:3px solid #d2d6de;}.profile-username{font-size:21px;margin-top:5px;}.post{border-bottom:1px solid #d2d6de;margin-bottom:15px;padding-bottom:15px;color:#666;}.post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0;}.post .user-block{margin-bottom:15px;}/* * Social Buttons for Bootstrap * * Copyright 2013-2015 Panayiotis Lipiridis * Licensed under the MIT License * * https://github.com/lipis/bootstrap-social */ .btn-social{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.btn-social > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social.btn-lg{padding-left:57px;}.btn-social.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social.btn-sm{padding-left:36px;}.btn-social.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social.btn-xs{padding-left:29px;}.btn-social.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon{position:relative;padding-left:41px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:31px;width:31px;padding:0;}.btn-social-icon > :first-child{position:absolute;left:0;top:0;bottom:0;width:29px;line-height:31px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2);}.btn-social-icon.btn-lg{padding-left:57px;}.btn-social-icon.btn-lg > :first-child{line-height:41px;width:41px;font-size:1.8em;}.btn-social-icon.btn-sm{padding-left:36px;}.btn-social-icon.btn-sm > :first-child{line-height:26px;width:26px;font-size:1.4em;}.btn-social-icon.btn-xs{padding-left:29px;}.btn-social-icon.btn-xs > :first-child{line-height:19px;width:19px;font-size:1.2em;}.btn-social-icon > :first-child{border:none;text-align:center;width:100%;}.btn-social-icon.btn-lg{height:41px;width:41px;padding-left:0;padding-right:0;}.btn-social-icon.btn-sm{height:28px;width:28px;padding-left:0;padding-right:0;}.btn-social-icon.btn-xs{height:21px;width:21px;padding-left:0;padding-right:0;}.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2);}.btn-adn:active:hover,.btn-adn.active:hover,.open > .dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open > .dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open > .dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2);}.btn-adn:active,.btn-adn.active,.open > .dropdown-toggle.btn-adn{background-image:none;}.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2);}.btn-adn .badge{color:#d87a68;background-color:#fff;}.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open > .dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open > .dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open > .dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2);}.btn-bitbucket:active,.btn-bitbucket.active,.open > .dropdown-toggle.btn-bitbucket{background-image:none;}.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2);}.btn-bitbucket .badge{color:#205081;background-color:#fff;}.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open > .dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open > .dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open > .dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2);}.btn-dropbox:active,.btn-dropbox.active,.open > .dropdown-toggle.btn-dropbox{background-image:none;}.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2);}.btn-dropbox .badge{color:#1087dd;background-color:#fff;}.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2);}.btn-facebook:active:hover,.btn-facebook.active:hover,.open > .dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open > .dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open > .dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2);}.btn-facebook:active,.btn-facebook.active,.open > .dropdown-toggle.btn-facebook{background-image:none;}.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2);}.btn-facebook .badge{color:#3b5998;background-color:#fff;}.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2);}.btn-flickr:active:hover,.btn-flickr.active:hover,.open > .dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open > .dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open > .dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2);}.btn-flickr:active,.btn-flickr.active,.open > .dropdown-toggle.btn-flickr{background-image:none;}.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2);}.btn-flickr .badge{color:#ff0084;background-color:#fff;}.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open > .dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open > .dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open > .dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2);}.btn-foursquare:active,.btn-foursquare.active,.open > .dropdown-toggle.btn-foursquare{background-image:none;}.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2);}.btn-foursquare .badge{color:#f94877;background-color:#fff;}.btn-github{color:#fff;background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2);}.btn-github:active:hover,.btn-github.active:hover,.open > .dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open > .dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open > .dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2);}.btn-github:active,.btn-github.active,.open > .dropdown-toggle.btn-github{background-image:none;}.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444444;border-color:rgba(0,0,0,0.2);}.btn-github .badge{color:#444444;background-color:#fff;}.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2);}.btn-google:active:hover,.btn-google.active:hover,.open > .dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open > .dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open > .dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2);}.btn-google:active,.btn-google.active,.open > .dropdown-toggle.btn-google{background-image:none;}.btn-google.disabled,.btn-google[disabled],fieldset[disabled] .btn-google,.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus,.btn-google.disabled:active,.btn-google[disabled]:active,fieldset[disabled] .btn-google:active,.btn-google.disabled.active,.btn-google[disabled].active,fieldset[disabled] .btn-google.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2);}.btn-google .badge{color:#dd4b39;background-color:#fff;}.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2);}.btn-instagram:active:hover,.btn-instagram.active:hover,.open > .dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open > .dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open > .dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2);}.btn-instagram:active,.btn-instagram.active,.open > .dropdown-toggle.btn-instagram{background-image:none;}.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2);}.btn-instagram .badge{color:#3f729b;background-color:#fff;}.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open > .dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open > .dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open > .dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2);}.btn-linkedin:active,.btn-linkedin.active,.open > .dropdown-toggle.btn-linkedin{background-image:none;}.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2);}.btn-linkedin .badge{color:#007bb6;background-color:#fff;}.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open > .dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open > .dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open > .dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2);}.btn-microsoft:active,.btn-microsoft.active,.open > .dropdown-toggle.btn-microsoft{background-image:none;}.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2);}.btn-microsoft .badge{color:#2672ec;background-color:#fff;}.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2);}.btn-openid:active:hover,.btn-openid.active:hover,.open > .dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open > .dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open > .dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2);}.btn-openid:active,.btn-openid.active,.open > .dropdown-toggle.btn-openid{background-image:none;}.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2);}.btn-openid .badge{color:#f7931e;background-color:#fff;}.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open > .dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open > .dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open > .dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2);}.btn-pinterest:active,.btn-pinterest.active,.open > .dropdown-toggle.btn-pinterest{background-image:none;}.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2);}.btn-pinterest .badge{color:#cb2027;background-color:#fff;}.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active:hover,.btn-reddit.active:hover,.open > .dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open > .dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open > .dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2);}.btn-reddit:active,.btn-reddit.active,.open > .dropdown-toggle.btn-reddit{background-image:none;}.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2);}.btn-reddit .badge{color:#eff7ff;background-color:#000;}.btn-soundcloud{color:#fff;background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:hover{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{color:#fff;background-color:#cc4400;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open > .dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open > .dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open > .dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2);}.btn-soundcloud:active,.btn-soundcloud.active,.open > .dropdown-toggle.btn-soundcloud{background-image:none;}.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#ff5500;border-color:rgba(0,0,0,0.2);}.btn-soundcloud .badge{color:#ff5500;background-color:#fff;}.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open > .dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open > .dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open > .dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2);}.btn-tumblr:active,.btn-tumblr.active,.open > .dropdown-toggle.btn-tumblr{background-image:none;}.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2);}.btn-tumblr .badge{color:#2c4762;background-color:#fff;}.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2);}.btn-twitter:active:hover,.btn-twitter.active:hover,.open > .dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open > .dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open > .dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2);}.btn-twitter:active,.btn-twitter.active,.open > .dropdown-toggle.btn-twitter{background-image:none;}.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2);}.btn-twitter .badge{color:#55acee;background-color:#fff;}.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open > .dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open > .dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open > .dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2);}.btn-vimeo:active,.btn-vimeo.active,.open > .dropdown-toggle.btn-vimeo{background-image:none;}.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2);}.btn-vimeo .badge{color:#1ab7ea;background-color:#fff;}.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2);}.btn-vk:active:hover,.btn-vk.active:hover,.open > .dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open > .dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open > .dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2);}.btn-vk:active,.btn-vk.active,.open > .dropdown-toggle.btn-vk{background-image:none;}.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2);}.btn-vk .badge{color:#587ea3;background-color:#fff;}.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open > .dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open > .dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open > .dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2);}.btn-yahoo:active,.btn-yahoo.active,.open > .dropdown-toggle.btn-yahoo{background-image:none;}.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2);}.btn-yahoo .badge{color:#720e9e;background-color:#fff;}.fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd;}.fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9;}.fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px;}.fc-header-right{padding-right:10px;}.fc-header-left{padding-left:10px;}.fc-widget-header{background:#fafafa;}.fc-grid{width:100%;border:0;}.fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0;}.fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0;}.fc-toolbar{padding:10px;margin:0;}.fc-day-number{font-size:20px;font-weight:300;padding-right:10px;}.fc-color-picker{list-style:none;margin:0;padding:0;}.fc-color-picker > li{float:left;font-size:30px;margin-right:5px;line-height:30px;}.fc-color-picker > li .fa{-webkit-transition:-webkit-transform linear 0.3s;-moz-transition:-moz-transform linear 0.3s;-o-transition:-o-transform linear 0.3s;transition:transform linear 0.3s;}.fc-color-picker > li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg);}#add-new-event{-webkit-transition:all linear 0.3s;-o-transition:all linear 0.3s;transition:all linear 0.3s;}.external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move;}.external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2);}.select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none;}.select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px;}.select2-container--default.select2-container--open{border-color:#3c8dbc;}.select2-dropdown{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white;}.select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px;}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px;}.select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px;}.select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0;}.select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de;}.select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #3c8dbc;}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999;}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd;}.select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444;}.select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0;}.select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc;}.select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de;}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7);}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff;}.select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px;}.pad{padding:10px;}.margin{margin:10px;}.margin-bottom{margin-bottom:20px;}.margin-bottom-none{margin-bottom:0;}.margin-r-5{margin-right:5px;}.inline{display:inline;}.description-block{display:block;margin:10px 0;text-align:center;}.description-block.margin-bottom{margin-bottom:25px;}.description-block > .description-header{margin:0;padding:0;font-weight:600;font-size:16px;}.description-block > .description-text{text-transform:uppercase;}.bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important;}.bg-gray{color:#000;background-color:#d2d6de !important;}.bg-gray-light{background-color:#f7f7f7;}.bg-black{background-color:#111 !important;}.bg-red,.callout.callout-danger,.alert-danger,.alert-error,.modal-danger .modal-body{background-color:#e74c3c !important;}.bg-yellow,.callout.callout-warning,.alert-warning,.modal-warning .modal-body{background-color:#f39c12 !important;}.bg-aqua,.callout.callout-info,.alert-info,.modal-info .modal-body{background-color:#3498db !important;}.bg-blue{background-color:#0073b7 !important;}.bg-light-blue,.modal-primary .modal-body{background-color:#3c8dbc !important;}.bg-green,.callout.callout-success,.alert-success,.modal-success .modal-body{background-color:#18bc9c !important;}.bg-navy{background-color:#001F3F !important;}.bg-teal{background-color:#39CCCC !important;}.bg-olive{background-color:#3D9970 !important;}.bg-lime{background-color:#01FF70 !important;}.bg-orange{background-color:#FF851B !important;}.bg-fuchsia{background-color:#F012BE !important;}.bg-purple{background-color:#605ca8 !important;}.bg-maroon{background-color:#D81B60 !important;}.bg-gray-active{color:#000;background-color:#b5bbc8 !important;}.bg-black-active{background-color:#000000 !important;}.bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#e43321 !important;}.bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important;}.bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#2489cc !important;}.bg-blue-active{background-color:#005384 !important;}.bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important;}.bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#15a589 !important;}.bg-navy-active{background-color:#001a35 !important;}.bg-teal-active{background-color:#30bbbb !important;}.bg-olive-active{background-color:#368763 !important;}.bg-lime-active{background-color:#00e765 !important;}.bg-orange-active{background-color:#ff7701 !important;}.bg-fuchsia-active{background-color:#db0ead !important;}.bg-purple-active{background-color:#555299 !important;}.bg-maroon-active{background-color:#ca195a !important;}[class^="bg-"].disabled{opacity:0.65;filter:alpha(opacity=65);}.text-red{color:#e74c3c !important;}.text-yellow{color:#f39c12 !important;}.text-aqua{color:#3498db !important;}.text-blue{color:#0073b7 !important;}.text-black{color:#111 !important;}.text-light-blue{color:#3c8dbc !important;}.text-green{color:#18bc9c !important;}.text-gray{color:#d2d6de !important;}.text-navy{color:#001F3F !important;}.text-teal{color:#39CCCC !important;}.text-olive{color:#3D9970 !important;}.text-lime{color:#01FF70 !important;}.text-orange{color:#FF851B !important;}.text-fuchsia{color:#F012BE !important;}.text-purple{color:#605ca8 !important;}.text-maroon{color:#D81B60 !important;}.link-muted{color:#7a869d;}.link-muted:hover,.link-muted:focus{color:#606c84;}.link-black{color:#666;}.link-black:hover,.link-black:focus{color:#999;}.hide{display:none !important;}.no-border{border:0 !important;}.no-padding{padding:0 !important;}.no-margin{margin:0 !important;}.no-shadow{box-shadow:none !important;}.list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0;}.list-group-unbordered > .list-group-item{border-left:0;border-right:0;border-radius:0;padding-left:0;padding-right:0;}.flat{border-radius:0 !important;}.text-bold,.text-bold.table td,.text-bold.table th{font-weight:700;}.text-sm{font-size:12px;}.jqstooltip{padding:5px !important;width:auto !important;height:auto !important;}.bg-teal-gradient{background:#39CCCC !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#39CCCC),color-stop(1,#7adddd)) !important;background:-ms-linear-gradient(bottom,#39CCCC,#7adddd) !important;background:-moz-linear-gradient(center bottom,#39CCCC 0%,#7adddd 100%) !important;background:-o-linear-gradient(#7adddd,#39CCCC) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd',endColorstr='#39CCCC',GradientType=0) !important;color:#fff;}.bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3c8dbc),color-stop(1,#67a8ce)) !important;background:-ms-linear-gradient(bottom,#3c8dbc,#67a8ce) !important;background:-moz-linear-gradient(center bottom,#3c8dbc 0%,#67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce,#3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce',endColorstr='#3c8dbc',GradientType=0) !important;color:#fff;}.bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#0073b7),color-stop(1,#0089db)) !important;background:-ms-linear-gradient(bottom,#0073b7,#0089db) !important;background:-moz-linear-gradient(center bottom,#0073b7 0%,#0089db 100%) !important;background:-o-linear-gradient(#0089db,#0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db',endColorstr='#0073b7',GradientType=0) !important;color:#fff;}.bg-aqua-gradient{background:#3498db !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#3498db),color-stop(1,#52a7e0)) !important;background:-ms-linear-gradient(bottom,#3498db,#52a7e0) !important;background:-moz-linear-gradient(center bottom,#3498db 0%,#52a7e0 100%) !important;background:-o-linear-gradient(#52a7e0,#3498db) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#52a7e0',endColorstr='#3498db',GradientType=0) !important;color:#fff;}.bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#f39c12),color-stop(1,#f7bc60)) !important;background:-ms-linear-gradient(bottom,#f39c12,#f7bc60) !important;background:-moz-linear-gradient(center bottom,#f39c12 0%,#f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60,#f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60',endColorstr='#f39c12',GradientType=0) !important;color:#fff;}.bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#605ca8),color-stop(1,#9491c4)) !important;background:-ms-linear-gradient(bottom,#605ca8,#9491c4) !important;background:-moz-linear-gradient(center bottom,#605ca8 0%,#9491c4 100%) !important;background:-o-linear-gradient(#9491c4,#605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4',endColorstr='#605ca8',GradientType=0) !important;color:#fff;}.bg-green-gradient{background:#18bc9c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#18bc9c),color-stop(1,#1cdcb6)) !important;background:-ms-linear-gradient(bottom,#18bc9c,#1cdcb6) !important;background:-moz-linear-gradient(center bottom,#18bc9c 0%,#1cdcb6 100%) !important;background:-o-linear-gradient(#1cdcb6,#18bc9c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1cdcb6',endColorstr='#18bc9c',GradientType=0) !important;color:#fff;}.bg-red-gradient{background:#e74c3c !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#e74c3c),color-stop(1,#ed7669)) !important;background:-ms-linear-gradient(bottom,#e74c3c,#ed7669) !important;background:-moz-linear-gradient(center bottom,#e74c3c 0%,#ed7669 100%) !important;background:-o-linear-gradient(#ed7669,#e74c3c) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ed7669',endColorstr='#e74c3c',GradientType=0) !important;color:#fff;}.bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#111),color-stop(1,#2b2b2b)) !important;background:-ms-linear-gradient(bottom,#111,#2b2b2b) !important;background:-moz-linear-gradient(center bottom,#111 0%,#2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b,#111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b',endColorstr='#111',GradientType=0) !important;color:#fff;}.bg-maroon-gradient{background:#D81B60 !important;background:-webkit-gradient(linear,left bottom,left top,color-stop(0,#D81B60),color-stop(1,#e73f7c)) !important;background:-ms-linear-gradient(bottom,#D81B60,#e73f7c) !important;background:-moz-linear-gradient(center bottom,#D81B60 0%,#e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c,#D81B60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c',endColorstr='#D81B60',GradientType=0) !important;color:#fff;}.description-block .description-icon{font-size:16px;}.no-pad-top{padding-top:0;}.position-static{position:static !important;}.list-header{font-size:15px;padding:10px 4px;font-weight:bold;color:#666;}.list-seperator{height:1px;background:#f4f4f4;margin:15px 0 9px 0;}.list-link > a{padding:4px;color:#777;}.list-link > a:hover{color:#222;}.font-light{font-weight:300;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block:before,.user-block:after{content:" ";display:table;}.user-block:after{clear:both;}.user-block img{width:40px;height:40px;float:left;}.user-block .username,.user-block .description,.user-block .comment{display:block;margin-left:50px;}.user-block .username{font-size:16px;font-weight:600;}.user-block .description{color:#999;font-size:13px;}.user-block.user-block-sm .username,.user-block.user-block-sm .description,.user-block.user-block-sm .comment{margin-left:40px;}.user-block.user-block-sm .username{font-size:14px;}.img-sm,.img-md,.img-lg,.box-comments .box-comment img,.user-block.user-block-sm img{float:left;}.img-sm,.box-comments .box-comment img,.user-block.user-block-sm img{width:30px !important;height:30px !important;}.img-sm + .img-push{margin-left:40px;}.img-md{width:60px;height:60px;}.img-md + .img-push{margin-left:70px;}.img-lg{width:100px;height:100px;}.img-lg + .img-push{margin-left:110px;}.img-bordered{border:3px solid #d2d6de;padding:3px;}.img-bordered-sm{border:2px solid #d2d6de;padding:2px;}.attachment-block{border:1px solid #f4f4f4;padding:5px;margin-bottom:10px;background:#f7f7f7;}.attachment-block .attachment-img{max-width:100px;max-height:100px;height:auto;float:left;}.attachment-block .attachment-pushed{margin-left:110px;}.attachment-block .attachment-heading{margin:0;}.attachment-block .attachment-text{color:#555;}.connectedSortable{min-height:100px;}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.sort-highlight{background:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px;}.full-opacity-hover{opacity:0.65;filter:alpha(opacity=65);}.full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100);}.chart{position:relative;overflow:hidden;width:100%;}.chart svg,.chart canvas{width:100% !important;}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none !important;}.content-wrapper,.right-side,.main-footer{margin-left:0 !important;min-height:0 !important;-webkit-transform:translate(0,0) !important;-ms-transform:translate(0,0) !important;-o-transform:translate(0,0) !important;transform:translate(0,0) !important;}.fixed .content-wrapper,.fixed .right-side{padding-top:0 !important;}.invoice{width:100%;border:0;margin:0;padding:0;}.invoice-col{float:left;width:33.3333333%;}.table-responsive{overflow:auto;}.table-responsive > .table tr th,.table-responsive > .table tr td{white-space:normal !important;}}.skin-green .main-header .navbar{background-color:#18bc9c;}.skin-green .main-header .navbar .nav > li > a{color:#fff;}.skin-green .main-header .navbar .nav > li > a:hover,.skin-green .main-header .navbar .nav > li > a:active,.skin-green .main-header .navbar .nav > li > a:focus,.skin-green .main-header .navbar .nav .open > a,.skin-green .main-header .navbar .nav .open > a:hover,.skin-green .main-header .navbar .nav .open > a:focus,.skin-green .main-header .navbar .nav > .active > a{background:rgba(0,0,0,0.1);color:#f6f6f6;}.skin-green .main-header .navbar .sidebar-toggle{color:#fff;}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1);}.skin-green .main-header .navbar .sidebar-toggle{color:#fff;}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#15a589;}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1);}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff;}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#15a589;}}.skin-green .main-header .logo{background-color:#15a589;color:#fff;border-bottom:0 solid transparent;}.skin-green .main-header .logo:hover{background-color:#15a185;}.skin-green .main-header li.user-header{background-color:#18bc9c;}.skin-green .content-header{background:transparent;}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32;}.skin-green .user-panel > .info,.skin-green .user-panel > .info > a{color:#fff;}.skin-green .sidebar-menu > li.header{color:#4b646f;background:#1a2226;}.skin-green .sidebar-menu > li > a{border-left:3px solid transparent;}.skin-green .sidebar-menu > li:hover > a,.skin-green .sidebar-menu > li.active > a{color:#fff;background:#1e282c;border-left-color:#18bc9c;}.skin-green .sidebar-menu > li > .treeview-menu{margin:0 1px;background:#2c3b41;}.skin-green .sidebar a{color:#b8c7ce;}.skin-green .sidebar a:hover{text-decoration:none;}.skin-green .treeview-menu > li > a{color:#8aa4af;}.skin-green .treeview-menu > li.active > a,.skin-green .treeview-menu > li > a:hover{color:#fff;}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;background-color:#374850;margin:10px 10px;}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn{background-color:#fff;color:#666;}.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn{background:#fff;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0;}.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn{border-left-color:#fff;}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0;}@font-face{font-family:"iconfont";src:url(../fonts/iconfont/iconfont.eot?t=1487643189178);src:url(../fonts/iconfont/iconfont.eot?t=1487643189178#iefix) format('embedded-opentype'),url(../fonts/iconfont/iconfont.woff?t=1487643189178) format('woff'),url(../fonts/iconfont/iconfont.ttf?t=1487643189178) format('truetype'),url(../fonts/iconfont/iconfont.svg?t=1487643189178#iconfont) format('svg');}.iconfont{font-family:"iconfont" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.icon-max:before{content:"\e623";}.icon-restore:before{content:"\e624";}.icon-min:before{content:"\e625";}.icon-close:before{content:"\e626";}/*! * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font:SIL OFL 1.1,CSS:MIT License) */@font-face{font-family:'FontAwesome';src:url(../libs/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(../libs/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),url(../libs/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0) format('woff2'),url(../libs/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0) format('woff'),url(../libs/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0) format('truetype'),url(../libs/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0,mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2,mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#FFF}.toast-message a:hover{color:#CCC;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#FFF;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}.rtl .toast-close-button{left:-.3em;float:left;right:.3em}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#FFF;opacity:.8;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>div.rtl{direction:rtl;padding:15px 50px 15px 15px;background-position:right 15px center}#toast-container>div:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)!important}#toast-container>.toast-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}#toast-container>.toast-success{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)!important}#toast-container>.toast-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)!important}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51A351}.toast-error{background-color:#BD362F}.toast-info{background-color:#2F96B4}.toast-warning{background-color:#F89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-.2em;top:-.2em}#toast-container .rtl .toast-close-button{left:-.2em;right:.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}#toast-container>div.rtl{padding:15px 50px 15px 15px}}.layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(../libs/layer/dist/theme/default/loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(../libs/layer/dist/theme/default/icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(../libs/layer/dist/theme/default/loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(../libs/layer/dist/theme/default/loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(../libs/layer/dist/theme/default/loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(../libs/layer/dist/theme/default/icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:230px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:43px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}}.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.bootstrap-table .table.table-no-bordered>tbody>tr>td:last-child{border-right:none}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:focus{outline:transparent solid 0}.fixed-table-container thead th:first-child{border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0;padding:0!important}.bootstrap-table .pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}.fixed-table-pagination:after,.fixed-table-toolbar:after{content:"";display:block;clear:both}.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action="today"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,0.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.daterangepicker{position:absolute;color:inherit;background-color:#fff;border-radius:4px;width:278px;padding:4px;margin-top:1px;top:100px;left:20px;}.daterangepicker:before,.daterangepicker:after{position:absolute;display:inline-block;border-bottom-color:rgba(0,0,0,0.2);content:'';}.daterangepicker:before{top:-7px;border-right:7px solid transparent;border-left:7px solid transparent;border-bottom:7px solid #ccc;}.daterangepicker:after{top:-6px;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;}.daterangepicker.opensleft:before{right:9px;}.daterangepicker.opensleft:after{right:10px;}.daterangepicker.openscenter:before{left:0;right:0;width:0;margin-left:auto;margin-right:auto;}.daterangepicker.openscenter:after{left:0;right:0;width:0;margin-left:auto;margin-right:auto;}.daterangepicker.opensright:before{left:9px;}.daterangepicker.opensright:after{left:10px;}.daterangepicker.dropup{margin-top:-5px;}.daterangepicker.dropup:before{top:initial;bottom:-7px;border-bottom:initial;border-top:7px solid #ccc;}.daterangepicker.dropup:after{top:initial;bottom:-6px;border-bottom:initial;border-top:6px solid #fff;}.daterangepicker.dropdown-menu{max-width:none;z-index:3001;}.daterangepicker.single .ranges,.daterangepicker.single .calendar{float:none;}.daterangepicker.show-calendar .calendar{display:block;}.daterangepicker .calendar{display:none;max-width:270px;margin:4px;}.daterangepicker .calendar.single .calendar-table{border:none;}.daterangepicker .calendar th,.daterangepicker .calendar td{white-space:nowrap;text-align:center;min-width:32px;}.daterangepicker .calendar-table{border:1px solid #fff;padding:4px;border-radius:4px;background-color:#fff;}.daterangepicker table{width:100%;margin:0;}.daterangepicker td,.daterangepicker th{text-align:center;width:20px;height:20px;border-radius:4px;border:1px solid transparent;white-space:nowrap;cursor:pointer;}.daterangepicker td.available:hover,.daterangepicker th.available:hover{background-color:#eee;border-color:transparent;color:inherit;}.daterangepicker td.week,.daterangepicker th.week{font-size:80%;color:#ccc;}.daterangepicker td.off,.daterangepicker td.off.in-range,.daterangepicker td.off.start-date,.daterangepicker td.off.end-date{background-color:#fff;border-color:transparent;color:#999;}.daterangepicker td.in-range{background-color:#ebf4f8;border-color:transparent;color:#000;border-radius:0;}.daterangepicker td.start-date{border-radius:4px 0 0 4px;}.daterangepicker td.end-date{border-radius:0 4px 4px 0;}.daterangepicker td.start-date.end-date{border-radius:4px;}.daterangepicker td.active,.daterangepicker td.active:hover{background-color:#357ebd;border-color:transparent;color:#fff;}.daterangepicker th.month{width:auto;}.daterangepicker td.disabled,.daterangepicker option.disabled{color:#999;cursor:not-allowed;text-decoration:line-through;}.daterangepicker select.monthselect,.daterangepicker select.yearselect{font-size:12px;padding:1px;height:auto;margin:0;cursor:default;}.daterangepicker select.monthselect{margin-right:2%;width:56%;}.daterangepicker select.yearselect{width:40%;}.daterangepicker select.hourselect,.daterangepicker select.minuteselect,.daterangepicker select.secondselect,.daterangepicker select.ampmselect{width:50px;margin-bottom:0;}.daterangepicker .input-mini{border:1px solid #ccc;border-radius:4px;color:#555;height:30px;line-height:30px;display:block;vertical-align:middle;margin:0 0 5px 0;padding:0 6px 0 28px;width:100%;}.daterangepicker .input-mini.active{border:1px solid #08c;border-radius:4px;}.daterangepicker .daterangepicker_input{position:relative;}.daterangepicker .daterangepicker_input i{position:absolute;left:8px;top:8px;}.daterangepicker.rtl .input-mini{padding-right:28px;padding-left:6px;}.daterangepicker.rtl .daterangepicker_input i{left:auto;right:8px;}.daterangepicker .calendar-time{text-align:center;margin:5px auto;line-height:30px;position:relative;padding-left:28px;}.daterangepicker .calendar-time select.disabled{color:#ccc;cursor:not-allowed;}.ranges{font-size:11px;float:none;margin:4px;text-align:left;}.ranges ul{list-style:none;margin:0 auto;padding:0;width:100%;}.ranges li{font-size:13px;background-color:#f5f5f5;border:1px solid #f5f5f5;border-radius:4px;color:#08c;padding:3px 12px;margin-bottom:8px;cursor:pointer;}.ranges li:hover{background-color:#08c;border:1px solid #08c;color:#fff;}.ranges li.active{background-color:#08c;border:1px solid #08c;color:#fff;}@media (min-width:564px){.daterangepicker{width:auto;}.daterangepicker .ranges ul{width:160px;}.daterangepicker.single .ranges ul{width:100%;}.daterangepicker.single .calendar.left{clear:none;}.daterangepicker.single.ltr .ranges,.daterangepicker.single.ltr .calendar{float:left;}.daterangepicker.single.rtl .ranges,.daterangepicker.single.rtl .calendar{float:right;}.daterangepicker.ltr{direction:ltr;text-align:left;}.daterangepicker.ltr .calendar.left{clear:left;margin-right:0;}.daterangepicker.ltr .calendar.left .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;}.daterangepicker.ltr .calendar.right{margin-left:0;}.daterangepicker.ltr .calendar.right .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;}.daterangepicker.ltr .left .daterangepicker_input{padding-right:12px;}.daterangepicker.ltr .calendar.left .calendar-table{padding-right:12px;}.daterangepicker.ltr .ranges,.daterangepicker.ltr .calendar{float:left;}.daterangepicker.rtl{direction:rtl;text-align:right;}.daterangepicker.rtl .calendar.left{clear:right;margin-left:0;}.daterangepicker.rtl .calendar.left .calendar-table{border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;}.daterangepicker.rtl .calendar.right{margin-right:0;}.daterangepicker.rtl .calendar.right .calendar-table{border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;}.daterangepicker.rtl .left .daterangepicker_input{padding-left:12px;}.daterangepicker.rtl .calendar.left .calendar-table{padding-left:12px;}.daterangepicker.rtl .ranges,.daterangepicker.rtl .calendar{text-align:right;float:right;}}@media (min-width:730px){.daterangepicker .ranges{width:auto;}.daterangepicker.ltr .ranges{float:left;}.daterangepicker.rtl .ranges{float:right;}.daterangepicker .calendar.left{clear:none !important;}}.n-inline-block,.nice-validator input,.nice-validator select,.nice-validator textarea,.nice-validator [contenteditable],.msg-wrap,.n-icon,.n-msg{display:inline-block;*display:inline;*zoom:1;}.nice-validator .msg-container .msg-box{display:block;}.nice-validator .msg-container .msg-wrap{position:static;}.msg-box{position:relative;*zoom:1;}.msg-wrap{position:relative;white-space:nowrap;line-height:16px;font-size:12px;}.msg-wrap,.n-icon,.n-msg{vertical-align:top;}.msg-box .msg-wrap .n-error,.msg-box .msg-wrap .n-ok,.msg-box .msg-wrap .n-tip{display:block;background:none;box-shadow:none;padding:3px 2px;}.n-arrow{position:absolute;overflow:hidden;}.n-arrow b,.n-arrow i{position:absolute;left:0;top:0;border:0;margin:0;padding:0;overflow:hidden;font-weight:400;font-style:normal;font-size:12px;font-family:serif;line-height:14px;_line-height:15px;}.n-arrow i{text-shadow:none;}.n-icon{width:16px;height:16px;overflow:hidden;background-repeat:no-repeat;}.n-msg{display:inline-block;*display:inline;*zoom:1;margin-left:1px;}.n-error{color:#c33;}.n-ok{color:#390;}.n-tip .n-msg,.n-loading{color:#808080;}.n-error .n-icon{background-position:0 0;}.n-ok .n-icon{background-position:-16px 0;}.n-tip .n-icon{background-position:-32px 0;}.n-loading .n-icon{background:url(../libs/nice-validator/dist/images/loading.gif) 0 center no-repeat !important;}.n-top,.n-right,.n-bottom,.n-left{display:inline-block;*display:inline;*zoom:1;line-height:0;vertical-align:top;outline:0;}.n-top .n-arrow,.n-bottom .n-arrow{height:6px;width:12px;left:8px;}.n-left .n-arrow,.n-right .n-arrow{width:6px;height:12px;top:6px;}.n-top{vertical-align:top;}.n-top .msg-wrap{margin-bottom:6px;}.n-top .n-arrow{bottom:-6px;}.n-top .n-arrow b{top:-6px;}.n-top .n-arrow i{top:-7px;}.n-bottom{vertical-align:bottom;}.n-bottom .msg-wrap{margin-top:6px;}.n-bottom .n-arrow{top:-6px;}.n-bottom .n-arrow b{top:-1px;}.n-bottom .n-arrow i{top:0;}.n-left .msg-wrap{right:100%;margin-right:6px;}.n-left .n-arrow{right:-6px;}.n-left .n-arrow b{left:-6px;}.n-left .n-arrow i{left:-7px;}.n-right .msg-wrap{margin-left:6px;}.n-right .n-arrow{left:-6px;}.n-right .n-arrow b{left:1px;}.n-right .n-arrow i{left:2px;}.n-default .n-left,.n-default .n-right{margin-top:5px;}.n-default .n-top .msg-wrap{bottom:100%;}.n-default .n-bottom .msg-wrap{top:100%;}.n-default .msg-wrap{position:absolute;z-index:1;}.n-default .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_default.png);}.n-default .n-tip .n-icon{display:none;}.n-simple .msg-wrap{position:absolute;z-index:1;}.n-simple .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_simple.png);}.n-simple .n-top .msg-wrap{bottom:100%;}.n-simple .n-bottom .msg-wrap{top:100%;}.n-simple .n-left,.n-simple .n-right{margin-top:5px;}.n-simple .n-bottom .msg-wrap{margin-top:3px;}.n-simple .n-tip .n-icon{display:none;}.n-yellow .msg-wrap{position:absolute;z-index:1;padding:4px 6px;font-size:12px;border:1px solid transparent;background-color:#fffcef;border-color:#ffbb76;color:#db7c22;box-shadow:0 1px 3px #ccc;border-radius:2px;}.n-yellow .msg-wrap .n-arrow b{color:#ffbb76;text-shadow:0 0 2px #ccc;}.n-yellow .msg-wrap .n-arrow i{color:#fffcef;}.n-yellow .msg-wrap .n-icon{background-image:url(../libs/nice-validator/dist/images/validator_simple.png);}.n-yellow .n-top .msg-wrap{bottom:100%;}.n-yellow .n-bottom .msg-wrap{top:100%;}.n-yellow .n-tip,.n-yellow .n-ok,.n-yellow .n-loading{background-color:#f8fdff;border-color:#ddd;color:#333;box-shadow:0 1px 3px #ccc;}.n-yellow .n-tip .n-arrow b,.n-yellow .n-ok .n-arrow b,.n-yellow .n-loading .n-arrow b{color:#ddd;text-shadow:0 0 2px #ccc;}.n-yellow .n-tip .n-arrow i,.n-yellow .n-ok .n-arrow i,.n-yellow .n-loading .n-arrow i{color:#f8fdff;}@charset "utf-8";.sp_container{border:none;margin:0;padding:0;display:inline-block;position:relative;vertical-align:middle;}.sp_input{background-color:white;border:1px solid #ccc;border-radius:0px;box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;-moz-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.075) inset;margin:0 !important;padding:4px 6px;vertical-align:middle;display:block;width:100%;outline:none;box-sizing:border-box;}.sp_input:focus{border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);}.sp_container_open .sp_input{border-radius:2px !important;}div.sp_button{display:inline-block;border-bottom-right-radius:0;border-top-right-radius:0;cursor:pointer;text-align:center;box-sizing:border-box;border:0;width:24px;height:100%;padding:0;vertical-align:middle;line-height:100%;position:absolute;top:0;right:0;}.sp_container_open > .sp_button{border-bottom-right-radius:0 !important;}div.sp_button span.sp_caret{position:absolute;top:50%;right:12px;margin-top:-1px;vertical-align:middle;display:inline-block;width:0;height:0;margin-left:2px;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent;}div.sp_clear_btn{position:absolute;top:0;right:25px;display:block;width:auto;height:100%;cursor:pointer;font-size:18px;color:#666666;font-weight:600;margin:0;padding:5px 0 0 0;box-sizing:border-box;line-height:1;font-family:"Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial;}div.sp_clear_btn:hover{color:black;font-weight:bold;}div.sp_clear_btn i{font-size:12px;}div.sp_clear_btn.sp_align_right{right:10px;}.sp_result_area{background-color:white;border:1px solid #D6D7D7;display:none;list-style:none;margin:0;padding:0;position:absolute;z-index:100;width:300px;border-radius:2px;}div.sp_result_area.shadowDown{box-shadow:0 3px 12px rgba(0,0,0,0.2);-moz-box-shadow:0 3px 12px rgba(0,0,0,0.2);-webkit-box-shadow:0 3px 12px rgba(0,0,0,0.2);}div.sp_result_area.shadowUp{box-shadow:0 -1px 12px rgba(0,0,0,0.2);-moz-box-shadow:0 -1px 12px rgba(0,0,0,0.2);-webkit-box-shadow:0 -1px 12px rgba(0,0,0,0.2);}.sp_results{background-color:white;list-style:none;margin:0;padding:3px 0;}.sp_results > li{height:auto !important;line-height:1;margin:0;overflow:hidden;padding:5px 8px;position:relative;text-align:left;white-space:nowrap;font-size:13px;color:black;cursor :pointer;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";}.sp_results > li.sp_message_box{height:30px;line-height:30px;text-align:center;box-sizing:content-box;font-size:14px;cursor:default;}ul.sp_results > li.sp_over{background-color:#53A4EA !important;color:#fff !important;cursor:pointer;}ul.sp_results > li.sp_selected{color:#cccccc;cursor:default;}.sp_control_box{padding:0;height:27px;}.sp_control_box p{margin:0;line-height:27px;padding-left:8px;font-size:14px;font-weight:400;}.sp_control_box button{height:27px;line-height:20px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;font-size:13px !important;padding:0 12px;border:0;background:white none;color:#666666;text-align:left;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);outline:none !important;float:right;opacity:.3;}.sp_control_box:hover{background-color:#F8F8F8;}.sp_control_box:hover button{background-color:#F8F8F8;opacity:1;}.sp_control_box:hover button:hover{background-color:#EEEEEE;color:black;}div.sp_container_combo{border:1px solid #CCCCCC;border-radius:0px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-sizing:border-box;}div.sp_container_combo.sp_disabled{box-shadow:none;}div.sp_container_combo.sp_disabled,div.sp_container_combo.sp_disabled ul.sp_element_box,div.sp_container_combo.sp_disabled .sp_input,div.sp_container.sp_disabled .sp_input{background-color:#eeeeee;cursor:not-allowed !important;}div.sp_container.sp_disabled .sp_clear_btn,div.sp_container_combo.sp_disabled ul.sp_element_box span.tag_close{display:none;}div.sp_container_combo.sp_container_open{border-radius:0px;}input.sp_combo_input{border:0 !important;box-shadow:none;background-color:transparent;max-width:100%;padding:0;height:34px !important;line-height:34px !important;min-height:34px !important;}input.sp_combo_input:focus{box-shadow:none;border:0;}input.sp_combo_input[readonly],input.sp_combo_input[disabled]{background-color:white;}ul.sp_element_box{margin:0;padding:3px 0 0 3px;position:relative;overflow:hidden;clear:both;cursor:text;margin-right:24px;list-style:none;height:auto;min-height:25px;}ul.sp_element_box > li{list-style:none;padding:0 5px;margin-right:3px;margin-bottom:2px;float:left;position:relative;box-sizing:content-box;}ul.sp_element_box li.full_width{width:100%;}ul.sp_element_box li.full_width input{width:100% !important;}ul.sp_element_box li.selected_tag{border:1px solid #AAAAAA;border-radius:3px;background-color:#EFEFEF;cursor:pointer;max-width:100%;box-shadow:0 0 2px white inset,0 1px 0 rgba(0,0,0,0.05);height:22px;line-height:22px;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);}ul.sp_element_box li.selected_tag:hover{background-color:white;border:1px solid #D0D0D0;box-shadow:0 2px 7px rgba(0,0,0,.1);}ul.sp_element_box li.selected_tag i{font-size:12px;color:#AAAAAA;}ul.sp_element_box li.selected_tag i:hover{color:black;}ul.sp_element_box li.input_box{padding:0;margin-top:0;height:24px;min-height:24px;}ul.sp_element_box li.input_box input{height:26px !important;line-height:26px !important;min-height:26px !important;}ul.sp_element_box li.selected_tag span.tag_close{cursor:pointer;margin-left:5px;font-size:14px;font-family:"Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial;}.sp_results_off{}.sp_input_off{background:#eee;color:#333333;}.sp_hide{display:none;}.sp_navi{background:#eee;border-bottom:1px solid #79b;font-size:13px;font-weight:normal;line-height:1;margin:0;padding:4px;text-align:right;}.sp_navi > p > a:link,.sp_navi > p > a:visited,.sp_navi > p > a:hover,.sp_navi > p > a:active{color:blue;font-weight:normal;margin:0 4px;text-decoration:underline;}.sp_navi > p{color:black;font-size:15px;margin:0;padding-top:4px;text-align:center;}.sp_navi > p > a >.current{color:#00c;font-size:16px;font-weight:bold;}.sp_navi > p >.page_end{color:gray;font-weight:normal;margin:0 4px;}.navi_page,.navi_first,.navi_prev,.navi_next,.navi_last{margin:auto 4px !important;}.sp_navi > .info{margin:0 !important;padding:0 !important;}.sp_container > .sp_select_ng{background:#fcc;}div.sp_container input.sp_input.input-block-level{box-sizing:border-box;height:30px;line-height:30px;min-height:30px;width:100%;}div.sp_container_open .sp_input::-ms-clear{display:none;}input::-ms-clear{display:none;}input::-ms-reveal{display:none;}div.sp_navi > p{font-size:12px;}div.sp_result_area div.sp_pagination{margin:0;padding:0;height:26px;line-height:26px;width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;display:block;}div.sp_result_area div.sp_pagination.hide{display:none;}div.sp_result_area div.sp_pagination ul{width:100%;display:inline-block;margin:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-bottom-left-radius:2px;border-bottom-right-radius:2px;padding:0;}div.sp_result_area div.sp_pagination li{text-align:center;display:inline;box-sizing:border-box;}div.sp_result_area div.sp_pagination>ul>li>a{margin:0;border-radius:0;padding:0;box-shadow:none;-moz-box-shadow:none;-webkit-box-shadow:none;background-color:white;float:left;text-decoration:none;border:0;box-sizing:content-box;color:#666666;font-size:13px;height:26px;line-height:26px;-webkit-transition:all .5s cubic-bezier(.175,.885,.32,1);transition:all .5s cubic-bezier(.175,.885,.32,1);}div.sp_result_area div.sp_pagination li.csFirstPage a,div.sp_result_area div.sp_pagination li.csPreviousPage a,div.sp_result_area div.sp_pagination li.csNextPage a,div.sp_result_area div.sp_pagination li.csLastPage a{width:30px;}div.sp_result_area div.sp_pagination li.csFirstPage a{border-left:0;border-bottom-left-radius:2px;}div.sp_result_area div.sp_pagination li.csLastPage a{border-right:0;border-bottom-right-radius:2px;}div.sp_result_area div.sp_pagination>ul>li>a:hover{color:#000000;background-color:#E8E8E8;}div.sp_result_area div.sp_pagination>ul>li.disabled>a{color:#DDDDDD;cursor:default;}div.sp_result_area div.sp_pagination>ul>li.disabled>a:hover{color:#DDDDDD;background-color:white;}div.sp_result_area div.sp_pagination>ul>li.pageInfoBox>a{width:178px;text-align:center;color:#666666;font-size:14px;}div.sp_result_area div.sp_pagination>ul>li.pageInfoBox>a:hover{background-color:inherit;color:#666666;cursor:default;}@font-face{font-family:"spfont";src:url('data:image/eot;base64,zA0AACQNAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAfJwy7wAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ynHxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==');src:url('data:image/eot;base64,zA0AACQNAAABAAIAAAAAAAIABQMAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAfJwy7wAAAAAAAAAAAAAAAAAAAAAAABAAaQBjAG8AbgBmAG8AbgB0AAAADgBSAGUAZwB1AGwAYQByAAAAFgBWAGUAcgBzAGkAbwBuACAAMQAuADAAAAAQAGkAYwBvAG4AZgBvAG4AdAAAAAAAAAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ynHxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==') format('embedded-opentype'),url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAi8AAsAAAAADSQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kj9Y21hcAAAAYAAAACoAAACNjWzO3RnbHlmAAACKAAABDQAAAXE0sEAXGhlYWQAAAZcAAAALwAAADYPYaJpaGhlYQAABowAAAAeAAAAJAfeA41obXR4AAAGrAAAABcAAAAsK+oAAGxvY2EAAAbEAAAAGAAAABgIbAmwbWF4cAAABtwAAAAfAAAAIAEaAHhuYW1lAAAG/AAAAUUAAAJtPlT+fXBvc3QAAAhEAAAAdQAAAKCcItv9eJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sc4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDznZW7438AQw9zA0AAUZgTJAQAmWQyAeJzFkjEOgkAQRf8KLkoksfIMFJaUnISTUBgSOgsOYuWxPsfAPzs0Bm11Nm+T+ZvMTP4sgD2ATFxFDoQnAiweUkPSM5RJz3FTfsFZSkRPsGbDlh0Hjpzmaln0/k3fRlCt7TG9VK8dDjhquqhuhcT4scZPIvyv9Xuc0n1fM20F/YpGJBzTWTu2UTaOHAVbR96CnSOXwcGx38DRkfPg5NgPmSsHxQsreTV9eJxlVE2MFEUUrq+K6Zpepnum/6bnh/npbrbbze7O6vxtVnZnTeACaNxkjaIbdL2YGAJH9uJhjTEBJMZw0cQDi0JEjSEe8EQMBMRwxKMXIBpN8KjhxBS+HoaNxE7n1ffqe11f1Xuvi2UYe3RPXBEl5rBn2HNsH1thDNo0QpPXECTdFp+GF2Q83zVFEiWBjMKWWIIfam6x3e/Gvia1PEzU0Qna/aTFE/S6A74H7WINKFcrq/bkLlt8golSUv9QHeBfwGtEu/KDWbV/ZtltN53sRs62y7Z9OqtlMlnOd+RNHPWLekaf0NT5TL7iXWlM8QZy5aTy4utGs2q/faJ7rDbp68DmJpxq0/xq2apY9L5XKTp2WRaMbKliRLtdbPy+s+TkavFvjB5OZ70qrooXWJ416ZTtom+ZiIIwTqwBOpOBCWnV4QcDzFstJOKVUgNolIaHSk2gWeIXh4daS8BSi1+cTcdZkWuO2JQrNTtYbFHEImjkF2kkTUGaN8U58TybYnvZEVINerR0RFJeEGo1uEW/45E31iWu1xlgCd1Yulq6N4L9TtAbIE2p7wXtoiei9Muo142pTv9B0otoiV7g0WLpnNhU99GKno1aUPcNxzEs5AHb5D+aNghaNFfS5bAvdV0ipiPm0pPGUr+ZzcgPZIbsRyOLLSoxP0HmM8n3XApngdnwkm2eNWw86O8HDbANfrD/Nw1nTftCuuIRqd/26bmtS3VDZm7dyshti+X+gwf9ZZDHdlCObovvRZ/q0mARSxhzBmk7jeojA8qJYz3ur57VjSkpGpJ5P4GPlzAT8J+DdDvBcCGYoSR5ef5lwfMKw8N5D9m7U3dfxg/T6iD/M5gdx6TfXB4eToNGocNv70zd0XF5Wh0Y98j71CMFFlK1+t0EMfU6NVva8PPONnpC8Vd1Xa3rVVvHSbWh21X9r22ErTGHdycqE+Q5FV0dV8f1iqOL14xtjK0x/T99Ukb6nyU66cWhFNvoCYVv9FSH9NUGTj7Wf4JI+zGHT0mAPNLHKZxKNR9+bWxjtT6mGfXsoz/4r6JC+kx/6ugky39Rm1m3kMUxdSZbcLPYzOIMGYLqDE2lFAVQ32fSH05cE28wi9XZNJthC4xNBmEL/XkM0k6mG8MENDpHcXRzIBZh3LNSzrNcTUZuHe0Bui26iiBWhuthpyoKWLVavTkLqwVR7aiP7YL6ruAGfCtwU2QbDqxdtmPM5fySnxuZenluoc7frDeb9eG52sJcmT9EjVAY1vhbNbXbMdAwbNtQ9wznaK5oGMVyasb3xTX+E/27OVamWoRxl5LQLrq0Z8S04W6/TSVwNegThoYL0jGlWpP4nPp9TTNtSVMm3jHtLM5LcolTaxgFGho5jsFG+f5HnBY5tpPyI3VQeed16mxxekXdUDdWsKSur2ARiyvq+r6nPCxRBG3zX8yJDj54nGNgZGBgAOL3RuU28fw2Xxm4WRhA4JqiviaC/n+AhYE5CsjlYGACiQIA93sITQB4nGNgZGBgbvjfwBDDAmQxMLAwMIBpJMANAEcqAnUAAHicY2FgYGB+ycDAwkAAMzIwAAAnpgEWAAAAAAAAdgCwAUIBiAHIAggCLAKOAsAC4nicY2BkYGDgZshhYGUAASYg5gJCBob/YD4DABRyAZMAeJxlj01OwzAQhV/6B6QSqqhgh+QFYgEo/RGrblhUavdddN+mTpsqiSPHrdQDcB6OwAk4AtyAO/BIJ5s2lsffvHljTwDc4Acejt8t95E9XDI7cg0XuBeuU38QbpBfhJto41W4Rf1N2MczpsJtdGF5g9e4YvaEd2EPHXwI13CNT+E69S/hBvlbuIk7/Aq30PHqwj7mXle4jUcv9sdWL5xeqeVBxaHJIpM5v4KZXu+Sha3S6pxrW8QmU4OgX0lTnWlb3VPs10PnIhVZk6oJqzpJjMqt2erQBRvn8lGvF4kehCblWGP+tsYCjnEFhSUOjDFCGGSIyujoO1Vm9K+xQ8Jee1Y9zed0WxTU/3OFAQL0z1xTurLSeTpPgT1fG1J1dCtuy56UNJFezUkSskJe1rZUQuoBNmVXjhF6XNGJPyhnSP8ACVpuyAAAAHicbYnNDsIgEAb3q8Va8Kav0YNPZMiKsFrZBKmpPr1/N+OcJjPU0BdL/3FosEALgyU6rNDDwmFNmA2nwGcrrHngMfjSz5PPj6Q5bj/xICVwlZcVialufuIYjrW967TrTpJj9Oqy3iTq/j1MlUu4Ej0BvEMlfAAAAA==') format('woff'),url('data:image/ttf;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJW7kj9AAABfAAAAFZjbWFwNbM7dAAAAgAAAAI2Z2x5ZtLBAFwAAARQAAAFxGhlYWQPYaJpAAAA4AAAADZoaGVhB94DjQAAALwAAAAkaG10eCvqAAAAAAHUAAAALGxvY2EIbAmwAAAEOAAAABhtYXhwARoAeAAAARgAAAAgbmFtZT5U/n0AAAoUAAACbXBvc3ScItv9AAAMhAAAAKAAAQAAA4D/gABcBAEAAAAABAAAAQAAAAAAAAAAAAAAAAAAAAsAAQAAAAEAAO8ydzxfDzz1AAsEAAAAAADWIS8pAAAAANYhLykAAP/ABAADWgAAAAgAAgAAAAAAAAABAAAACwBsAAUAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQP+AZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABAAHjnDQOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAPpAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQBAAAAAAAFAAAAAwAAACwAAAAEAAABrgABAAAAAACoAAMAAQAAACwAAwAKAAABrgAEAHwAAAAWABAAAwAGAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAHjmAOYo5jTmPOZa5n7mgeaM5w3//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAFgAWABYAFgAWABYAFgAAAAEACgAEAAIACAAJAAUABgADAAcAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAIgAAAAAAAAACgAAAHgAAAB4AAAAAQAA5gAAAOYAAAAACgAA5igAAOYoAAAABAAA5jQAAOY0AAAAAgAA5jwAAOY8AAAACAAA5loAAOZaAAAACQAA5n4AAOZ+AAAABQAA5oEAAOaBAAAABgAA5owAAOaMAAAAAwAA5w0AAOcNAAAABwAAAAAAAAB2ALABQgGIAcgCCAIsAo4CwALiAAUAAP/hA7wDGAATACgAMQBEAFAAAAEGKwEiDgIdASEnNC4CKwEVIQUVFxQOAycjJyEHIyIuAz0BFyIGFBYyNjQmFwYHBg8BDgEeATMhMjYnLgInATU0PgI7ATIWHQEBGRsaUxIlHBIDkAEKGCcehf5KAqIBFR8jHA8+Lf5JLD8UMiATCHcMEhIZEhKMCAYFBQgCAgQPDgFtFxYJBQkKBv6kBQ8aFbwfKQIfAQwZJxpMWQ0gGxJhiDRuHSUXCQEBgIABExsgDqc/ERoRERoRfBoWExIZBxANCBgaDSMkFAF35AsYEwwdJuMAAAAAAgAA/8ADwANAAA8AIAAAATIWFxEOASMhIiYnET4BMyUhDgEHER4BFyE+ATcRLgEnA1QYHwEBHxj9WBggAQEgGAKo/VguPQEBPS4CqC09AQE9LQMMIBj9WBggIBgCqBggMwE8Lv1YLjwBATwuAqguPAEAAAADAAD/xgOhAzoAKQBDAGsAAAEhNS4BJyMOAQcVISIGHQEUFhczFQ4BBx4BFyE+ATcuASc1Mz4BPQE0JgcUBiMhIiY9ATQ2MyE1PgE7ATIWFxUhMhYVAyMiBh0BIzU0JisBIgYdASM1NCYrASIGBxUjPgE3NSEVHgEXIzU0JgOA/uoBLiMwIy4B/uoNExMNEQEPAQESDgK+DhIBAQ8BEQ0TExgJB/02BwkJBwEmASAYDBggAQEmBwnGCAUHgwcFCAUHiwcFCAUHAaABDgECiAEOAZgHAjuvIi0BAS0irxIOnw0SAfY2SQENEgEBEg0CSzbzARINnw4SpQcJCQdrBwnRFxcXF9EJB/7EBwXJyQUHBwXJyQUHBwXJAT829vY2PwHJBQcABAAA/9EDsQM2AA8AHwAjACcAABM+ATMhMhYXEQ4BByEuAScTER4BMyEyNjURNCYjISIGASc3FycBFwFNASwhAschLQEBLSH9OSEsATsBFQ8CoxAVFRD9XQ8VAQjgKeBPAbYr/ksC5yEtLSH9OSEsAQEsIQK1/V0QFRUQAqMQFRX9q98p3wkBtSv+SgACAAD/wAOBA0AAEAAiAAABNjQnASYiBhQXCQEGFBYyNxMUFwkBBhQWMjcBNjQnASYiBgJWCQn+YAkbEgkBif53CRIbCesJAYn+dwkSGwkBoAkJ/mAJGxIBaQoaCgGgCRMaCf52/nYJGhMJA1cNCf52/nYJGhMJAaAKGgoBoAkTAAIAAP/AA4EDQAAQACIAAAEGFBcBFjI2NCcJATY0JiIHAzQnCQE2NCYiBwEGFBcBFjI2AaoJCQGgCRsSCf53AYkJEhsJ6wn+dwGJCRIbCf5gCQkBoAkbEgGXChoK/mAJExoJAYoBigkaEwn8qQ0JAYoBigkaEwn+YAoaCv5gCRMAAQAA/+YC2gMaABAAAAkBJiIGFBcJAQYUFjI3ATY0AtL+gAgUEAgBbv6SCBAUCAGACAGSAYAIEBQI/pL+kggUEAgBgAgUAAAABQAAAAADwQNaABEAHgArACwAOQAAJSEiLgE2NwE+ATIWFwEeAQ4BAQYHAQYWMyEyNicBJgMiJjURPgEyFhURFAYHIxQeATI+ATQuASIOAQNQ/WAiMxsDEAFTES41LxEBUxADGzP+jhIQ/q0QFCECoCEUEP6tEBINEwERHBITDS8MFxgXDAwXGBcMHhkvOR4CXh4gIB79oR05LxkC/AEd/aEdIiIdAl8d/iQTDQEfDRISDf7hDRNtDBYNDRYZFg0NFgAAAAIAAP/BAsUDOgAMABkAAAEiJjQ3ATYyFhQHAQYBJicBJjQ2MhcBFhQGAQkKDQYBpQcTDgf+WwcBmwkH/lsGDhIHAaUHDgFmDhIIAaQHDhIH/lsH/lsBBgGlBxMNBv5bBxMNAAABAAD/9AOMAwwACwAAJQcJAScJATcJARcBA4xQ/sT+xFABPf7DUAE8ATxQ/sNEUAE9/sNQATwBPFD+wwE9UP7EAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEACAAVAAEAAAAAAAIABwAdAAEAAAAAAAMACAAkAAEAAAAAAAQACAAsAAEAAAAAAAUACwA0AAEAAAAAAAYACAA/AAEAAAAAAAoAKwBHAAEAAAAAAAsAEwByAAMAAQQJAAAAKgCFAAMAAQQJAAEAEACvAAMAAQQJAAIADgC/AAMAAQQJAAMAEADNAAMAAQQJAAQAEADdAAMAAQQJAAUAFgDtAAMAAQQJAAYAEAEDAAMAAQQJAAoAVgETAAMAAQQJAAsAJgFpCkNyZWF0ZWQgYnkgaWNvbmZvbnQKaWNvbmZvbnRSZWd1bGFyaWNvbmZvbnRpY29uZm9udFZlcnNpb24gMS4waWNvbmZvbnRHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuaHR0cDovL2ZvbnRlbGxvLmNvbQAKAEMAcgBlAGEAdABlAGQAIABiAHkAIABpAGMAbwBuAGYAbwBuAHQACgBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgBpAGMAbwBuAGYAbwBuAHQAaQBjAG8AbgBmAG8AbgB0AFYAZQByAHMAaQBvAG4AIAAxAC4AMABpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwECAQMBBAEFAQYBBwEIAQkBCgELAQwAAXgFY2hlY2sKaWNvbi1jbGVhcgl4dWFuemhvbmcUaWNvbi1kaXJlY3Rpb24tcmlnaHQTaWNvbi1kaXJlY3Rpb24tbGVmdAR5b3UxB2ppbmdnYW8Lbm92aWdvX2xlZnQFdGltZXMAAA==') format('truetype'),url('data:image/svg;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPCEtLQoyMDEzLTktMzA6IENyZWF0ZWQuCi0tPgo8c3ZnPgo8bWV0YWRhdGE+CkNyZWF0ZWQgYnkgaWNvbmZvbnQKPC9tZXRhZGF0YT4KPGRlZnM+Cgo8Zm9udCBpZD0iaWNvbmZvbnQiIGhvcml6LWFkdi14PSIxMDI0IiA+CiAgPGZvbnQtZmFjZQogICAgZm9udC1mYW1pbHk9Imljb25mb250IgogICAgZm9udC13ZWlnaHQ9IjUwMCIKICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIgogICAgdW5pdHMtcGVyLWVtPSIxMDI0IgogICAgYXNjZW50PSI4OTYiCiAgICBkZXNjZW50PSItMTI4IgogIC8+CiAgICA8bWlzc2luZy1nbHlwaCAvPgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieCIgdW5pY29kZT0ieCIgaG9yaXotYWR2LXg9IjEwMDEiCmQ9Ik0yODEgNTQzcS0yNyAtMSAtNTMgLTFoLTgzcS0xOCAwIC0zNi41IC02dC0zMi41IC0xOC41dC0yMyAtMzJ0LTkgLTQ1LjV2LTc2aDkxMnY0MXEwIDE2IC0wLjUgMzB0LTAuNSAxOHEwIDEzIC01IDI5dC0xNyAyOS41dC0zMS41IDIyLjV0LTQ5LjUgOWgtMTMzdi05N2gtNDM4djk3ek05NTUgMzEwdi01MnEwIC0yMyAwLjUgLTUydDAuNSAtNTh0LTEwLjUgLTQ3LjV0LTI2IC0zMHQtMzMgLTE2dC0zMS41IC00LjVxLTE0IC0xIC0yOS41IC0wLjUKdC0yOS41IDAuNWgtMzJsLTQ1IDEyOGgtNDM5bC00NCAtMTI4aC0yOWgtMzRxLTIwIDAgLTQ1IDFxLTI1IDAgLTQxIDkuNXQtMjUuNSAyM3QtMTMuNSAyOS41dC00IDMwdjE2N2g5MTF6TTE2MyAyNDdxLTEyIDAgLTIxIC04LjV0LTkgLTIxLjV0OSAtMjEuNXQyMSAtOC41cTEzIDAgMjIgOC41dDkgMjEuNXQtOSAyMS41dC0yMiA4LjV6TTMxNiAxMjNxLTggLTI2IC0xNCAtNDhxLTUgLTE5IC0xMC41IC0zN3QtNy41IC0yNXQtMyAtMTV0MSAtMTQuNQp0OS41IC0xMC41dDIxLjUgLTRoMzdoNjdoODFoODBoNjRoMzZxMjMgMCAzNCAxMnQyIDM4cS01IDEzIC05LjUgMzAuNXQtOS41IDM0LjVxLTUgMTkgLTExIDM5aC0zNjh6TTMzNiA0OTh2MjI4cTAgMTEgMi41IDIzdDEwIDIxLjV0MjAuNSAxNS41dDM0IDZoMTg4cTMxIDAgNTEuNSAtMTQuNXQyMC41IC01Mi41di0yMjdoLTMyN3oiIC8+CiAgICAKCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaGVjayIgdW5pY29kZT0iJiM1ODkzMjsiIGQ9Ik04NTEuNjA4IDc4MC4yNzljMzEuMDU2IDAgNTYuMzIzLTI1LjI2NyA1Ni4zMjMtNTYuMzI1di02NzkuODg2YzAtMzEuMDU3LTI1LjI2Ni01Ni4zMjQtNTYuMzIzLTU2LjMyNGgtNjc5Ljg4NmMtMzEuMDU4IDAtNTYuMzI1IDI1LjI2Ni01Ni4zMjUgNTYuMzI0bDAgNjc5Ljg4NmMwIDMxLjA1OCAyNS4yNjcgNTYuMzI1IDU2LjMyNSA1Ni4zMjVoNjc5Ljg4Nk04NTEuNjA4IDgzMS40NDVoLTY3OS44ODZjLTU5LjM2NSAwLTEwNy40OS00OC4xMjUtMTA3LjQ5LTEwNy40OXYtNjc5Ljg4NmMwLTU5LjM2NSA0OC4xMjUtMTA3LjQ4OSAxMDcuNDktMTA3LjQ4OWg2NzkuODg2YzU5LjM2NSAwIDEwNy40ODggNDguMTI0IDEwNy40ODggMTA3LjQ4OXY2NzkuODg2YzAgNTkuMzY1LTQ4LjEyMyAxMDcuNDktMTA3LjQ4OCAxMDcuNDl2MHoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uLWNsZWFyIiB1bmljb2RlPSImIzU5MDIwOyIgZD0iTTg5NS41OSA1NzEuMDgwaC0yNzcuNDg5djE3NS4xMjRjMCA0My43ODEtMzYuNzIxIDc5LjYwMS04MS42MTggNzkuNjAxaC00OC45NjNjLTQ0Ljg5NyAwLTgxLjYyMy0zNS44Mi04MS42MjMtNzkuNjAxdi0xNzUuMTI0aC0yNzcuNDg5Yy0xNy45NTYgMC0zMi42NDUtMTQuMzM2LTMyLjY0NS0zMS44NDZ2LTE1OS4yMDFjMC0xNy41MjEgMTQuNjg5LTMxLjg1MiAzMi42NDUtMzEuODUyaDE2LjMyM3YtMjQ1Ljk3YzAtNzAuMDU3LTE2LjMyMy0xMjguMTc0LTE2LjMyMy0xMjguMTc0IDAtMTcuNTEgMTQuNjk0LTMxLjg0NiAzMi42NDUtMzEuODQ2aDcwMS44OTFjMTcuOTYxIDAgMzIuNjQ1IDE0LjM0MSAzMi42NDUgMzEuODQ2IDAgMC0xNi4zMjMgNjAuNTA4LTE2LjMyMyAxMzEuMzU5djI0Mi43ODVoMTYuMzIzYzE3Ljk2MSAwIDMyLjY0NSAxNC4zMzYgMzIuNjQ1IDMxLjg0NnYxNTkuMjA2YzAgMTcuNTE2LTE0LjY3OSAzMS44NDYtMzIuNjQ1IDMxLjg0NnpNODg1LjExNSA0MDYuMTY0YzAtOC43NTUtNy4zNDItMTUuOTE4LTE2LjMyOC0xNS45MThoLTcxMy41NzRjLTguOTggMC0xNi4zMjMgNy4xNjgtMTYuMzIzIDE1LjkyM3YxMDYuOTIxYzAgOC43NiA3LjM0MiAxNS45MjMgMTYuMzIzIDE1LjkyM2gyOTMuODExdjIwOS4yMzljMCAzMS4wNDMgMjUuMzAzIDQ1LjQ5MSA1Ny4xMzQgNDUuNDkxaDExLjY4OWMzMS44MjYgMCA1Ny4xMjQtMTQuNDQ5IDU3LjEyNC00NS40OTF2LTIwOS4yMzRoMjkzLjgxNmM4Ljk4NiAwIDE2LjMyOC03LjE1OCAxNi4zMjgtMTUuOTIzdi0xMDYuOTI2ek02ODcuNDczIDE5Ni45MzFoLTguMTY2Yy02LjUyMyAwLTEyLjIzNy01LjU3MS0xMi4yMzctMTEuOTR2LTIwMC43MjRoLTEzMC41ODZ2MjAwLjcxOWMwIDYuMzY5LTUuNzA5IDExLjk0LTEyLjI0NyAxMS45NGgtOC4xNTZjLTYuNTIzIDAtMTIuMjM3LTUuNTcxLTEyLjIzNy0xMS45NHYtMjAwLjcyNGgtMTM4Ljc0N3YyMDAuNzI0YzAgNi4zNjktNS43MTQgMTEuOTQtMTIuMjUyIDExLjk0aC04LjE1MWMtNi41MjggMC0xMi4yNDctNS41NzEtMTIuMjQ3LTExLjk0di0yMDAuNzI0aC0xNjAuOTIyczE2LjMyOCA0Ny4wODkgMTYuMzI4IDExNy45Mzl2MjQ1Ljk3NWg2NDguMjk0di0yNDUuOTc1YzAtNzAuODUxIDE2LjMyMy0xMTcuOTM5IDE2LjMyMy0xMTcuOTM5aC0xNTIuNzU1djIwMC43MjRjMCA2LjM2OS01LjcxNCAxMS45NC0xMi4yNDIgMTEuOTR6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieHVhbnpob25nIiB1bmljb2RlPSImIzU4OTIwOyIgZD0iTTc2Ljg4MzkxMSA3NDIuODc5OTNjMCA0My4zNzE3MjMgMzUuMDg4MDc2IDc4LjUzMDQwNyA3OC41MjkzODQgNzguNTMwNDA3aDcxMC42MTIwOGM0My4zNzE3MjMgMCA3OC41MzA0MDctMzUuMDg4MDc2IDc4LjUzMDQwNy03OC41MzA0MDd2LTcxMC42MTEwNTdjMC00My4zNzE3MjMtMzUuMDg4MDc2LTc4LjUzMDQwNy03OC41MzA0MDctNzguNTMwNDA3SDE1NS40MTQzMThjLTQzLjM3MDcgMC03OC41MjkzODQgMzUuMDg4MDc2LTc4LjUyOTM4NCA3OC41MzA0MDdWNzQyLjg3OTkzaC0wLjAwMTAyM3ogbTU5LjMyOTEyOC0xNy45MTYwMDl2LTY3NC43NzY5OTJjMC0yMC41Mzk3NjEgMTYuNTkwODMtMzcuMTIwMzU4IDM3LjExOTMzNS0zNy4xMjAzNThoNjc0Ljc3ODAxNWMyMC41Mzc3MTQgMCAzNy4xMTkzMzUgMTYuNTg5ODA3IDM3LjExOTMzNSAzNy4xMjAzNTh2Njc0Ljc3Njk5MmMwIDIwLjUzODczOC0xNi41OTA4MyAzNy4xMjAzNTgtMzcuMTE5MzM1IDM3LjEyMDM1OEgxNzMuMzMxMzUxYy0yMC41Mzg3MzggMC0zNy4xMTgzMTItMTYuNTkxODU0LTM3LjExODMxMi0zNy4xMjAzNTh6TTQwMC41NjAxMzEgMTQzLjk0MzA3OUwxNzcuMjQyNDE5IDM2Ny4yMTY3ODlsNDEuMjE2NjQ1IDQxLjE3MTYxOSAyMjMuMjc2NzgtMjIzLjI3Njc4LTQxLjE3NTcxMy00MS4xNjg1NDl6TTM2My4yOTEzOTQgMTkzLjkwMDc4N2w0MzcuMzAxODY3IDQzNy4zMDU5NiA0My42MDQwMTMtNDMuNTk2ODUtNDM3LjI2NzA3NS00MzcuMzAzOTEzLTI3LjE3ODk1OCAyNy4xMzcwMDMtMTYuNDU5ODQ3IDE2LjQ1Nzh6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaWNvbi1kaXJlY3Rpb24tcmlnaHQiIHVuaWNvZGU9IiYjNTkwMDY7IiBkPSJNNTk4LjA4NiAzNjEuNDUxYzYuMDQ0IDYuMDI4IDkuMzczIDE0LjA0IDkuMzczIDIyLjU2IDAgOC41MjEtMy4zMyAxNi41MjUtOS4zNzEgMjIuNTM2TDE4Mi4wMDQgODIyLjYzYy02LjAzNCA2LjAzNC0xNC4wNTIgOS4zNTQtMjIuNTc5IDkuMzQ5LTguNTEzLTAuMDA1LTE2LjUxLTMuMzI2LTIyLjUxOS05LjM1MS02LjAyNy02LjA0Mi05LjM0Ni0xNC4wNTgtOS4zNDYtMjIuNTcxIDAtOC41MTQgMy4zMi0xNi41MjIgOS4zNDgtMjIuNTUxTDUzMC40MTcgMzg0IDEzNi45MS05LjUwNTk5OTk5OTk5OTk3MmMtNi4wMjgtNi4wMjgtOS4zNDgtMTQuMDQxLTkuMzQ4LTIyLjU2MnMzLjMyLTE2LjUzNCA5LjM0OC0yMi41NjJjNi4wMzQtNi4wMzQgMTQuMDU0LTkuMzU0IDIyLjU4LTkuMzQ4IDguNTEyIDAuMDA2IDE2LjUwOCAzLjMyNiAyMi41MTQgOS4zNDhsNDE2LjA4MiA0MTYuMDgxek00MTYuNTM3IDgwMC4wNTdjMC04LjUxNCAzLjMyLTE2LjUyMiA5LjM0OC0yMi41NTFMODE5LjM5MiAzODQgNDI1Ljg4NS05LjUwNTk5OTk5OTk5OTk3MmMtNi4wMjgtNi4wMjgtOS4zNDgtMTQuMDQxLTkuMzQ4LTIyLjU2MnMzLjMyLTE2LjUzNCA5LjM0OC0yMi41NjJjNi4wMzQtNi4wMzQgMTQuMDU0LTkuMzU0IDIyLjU4LTkuMzQ4IDguNTEyIDAuMDA2IDE2LjUwOCAzLjMyNiAyMi41MTQgOS4zNDhMODg3LjA2IDM2MS40NTJjNi4wNDQgNi4wMjggOS4zNzMgMTQuMDQgOS4zNzMgMjIuNTYgMCA4LjUyMS0zLjMzIDE2LjUyNS05LjM3MSAyMi41MzZMNDcwLjk4IDgyMi42M2MtNi4wMzQgNi4wMzQtMTQuMDUyIDkuMzU0LTIyLjU3OSA5LjM0OS04LjUxMy0wLjAwNS0xNi41MS0zLjMyNi0yMi41MTktOS4zNTEtNi4wMjYtNi4wNDItOS4zNDUtMTQuMDU4LTkuMzQ1LTIyLjU3MXoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpY29uLWRpcmVjdGlvbi1sZWZ0IiB1bmljb2RlPSImIzU5MDA5OyIgZD0iTTQyNS45MDkgNDA2LjU0OWMtNi4wNDQtNi4wMjgtOS4zNzMtMTQuMDQtOS4zNzMtMjIuNTYgMC04LjUyMSAzLjMzLTE2LjUyNSA5LjM3MS0yMi41MzZMODQxLjk5LTU0LjYyOTk5OTk5OTk5OTk5NWM2LjAzNC02LjAzNCAxNC4wNTItOS4zNTQgMjIuNTc5LTkuMzQ5IDguNTEzIDAuMDA1IDE2LjUxIDMuMzI2IDIyLjUxOCA5LjM1MSA2LjAyNyA2LjA0MiA5LjM0NiAxNC4wNTggOS4zNDYgMjIuNTcxIDAgOC41MTMtMy4zMiAxNi41MjItOS4zNDggMjIuNTUxTDQ5My41NzcgMzg0bDM5My41MDggMzkzLjUwN2M2LjAyOCA2LjAyOCA5LjM0OCAxNC4wNDEgOS4zNDggMjIuNTYycy0zLjMyIDE2LjUzNC05LjM0OCAyMi41NjJjLTYuMDM0IDYuMDM0LTE0LjA1NCA5LjM1NC0yMi41OCA5LjM0OC04LjUxMi0wLjAwNi0xNi41MDgtMy4zMjYtMjIuNTE0LTkuMzQ4TDQyNS45MDkgNDA2LjU0OXpNNjA3LjQ1Ny0zMi4wNTcwMDAwMDAwMDAwMTZjMCA4LjUxMy0zLjMyIDE2LjUyMi05LjM0OCAyMi41NTFMMjA0LjYwMiAzODQgNTk4LjExIDc3Ny41MDcwMDAwMDAwMDAxYzYuMDI4IDYuMDI4IDkuMzQ4IDE0LjA0MSA5LjM0OCAyMi41NjJzLTMuMzIgMTYuNTM0LTkuMzQ4IDIyLjU2MmMtNi4wMzQgNi4wMzQtMTQuMDU0IDkuMzU0LTIyLjU4IDkuMzQ4LTguNTEyLTAuMDA2LTE2LjUwOC0zLjMyNi0yMi41MTQtOS4zNDhMMTM2LjkzNCA0MDYuNTQ5Yy02LjA0NC02LjAyOC05LjM3My0xNC4wNC05LjM3My0yMi41NiAwLTguNTIxIDMuMzMtMTYuNTI1IDkuMzcxLTIyLjUzNkw1NTMuMDE1LTU0LjYyOTk5OTk5OTk5OTk5NWM2LjAzNC02LjAzNCAxNC4wNTItOS4zNTQgMjIuNTc5LTkuMzQ5IDguNTEzIDAuMDA1IDE2LjUxIDMuMzI2IDIyLjUxOCA5LjM1MSA2LjAyNyA2LjA0MiA5LjM0NSAxNC4wNTkgOS4zNDUgMjIuNTcxeiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPgoKICAgIAogICAgPGdseXBoIGdseXBoLW5hbWU9InlvdTEiIHVuaWNvZGU9IiYjNTkxNDk7IiBkPSJNNzIxLjkyIDQwMS45MmwtMzg0IDM4NGMtMTAuMjQgMTAuMjQtMjUuNiAxMC4yNC0zNS44NCAwcy0xMC4yNC0yNS42IDAtMzUuODRMNjY4LjE2IDM4NCAzMDIuMDggMTcuOTJjLTEwLjI0LTEwLjI0LTEwLjI0LTI1LjYgMC0zNS44NHMyNS42LTEwLjI0IDM1Ljg0IDBsMzg0IDM4NGMxMC4yNCAxMC4yNCAxMC4yNCAyNS42IDAgMzUuODR6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iamluZ2dhbyIgdW5pY29kZT0iJiM1ODk0MDsiIGQ9Ik04NDcuNTU0NTYgMjkuOTAwOEgxNzYuNDcxMDRjLTQ1LjAwNDggMC04MS4xNTcxMiAxNy42Mzg0LTk5LjIxMDI0IDQ4LjQwOTYtMTguMDU4MjQgMzAuNzY2MDgtMTUuODYxNzYgNzAuOTU4MDggNi4wNTE4NCAxMTAuMjMzNkw0MjEuOTA4NDggNzk1LjM1MTA0QzQ0My45NTAwOCA4MzQuOTEzMjggNDc2LjcyMzIgODU3LjU4OTc2IDUxMS43OTAwOCA4NTcuNTg5NzZzNjcuODA5MjgtMjIuNjQ1NzYgODkuOTEyMzItNjIuMTcyMTZsMzM4Ljk1NDI0LTYwNi45MzUwNGMyMS45MDg0OC0zOS4yNzU1MiAyNC4xNzE1Mi03OS40MzY4IDYuMDgyNTYtMTEwLjIwMjg4LTE4LjAyNzUyLTMwLjc2NjA4LTU0LjIxMDU2LTQ4LjM3ODg4LTk5LjE4NDY0LTQ4LjM3ODg4ek01MTEuODI1OTIgNzkzLjg5MTg0Yy0xMS4xNTEzNiAwLTIzLjkyMDY0LTExLjA1NDA4LTM0LjI3MzI4LTI5LjU1Nzc2TDEzOC45NTY4IDE1Ny40NjA0OGMtMTAuNjA4NjQtMTkuMDQ2NC0xMy4wOTE4NC0zNi4xNTIzMi02Ljc1MzI4LTQ2Ljk0NTI4IDYuMzQzNjgtMTAuNzY3MzYgMjIuNDg3MDQtMTYuOTQ3MiA0NC4yNzI2NC0xNi45NDcyaDY3MS4wODM1MmMyMS44MjE0NCAwIDM3LjkzOTIgNi4xNDkxMiA0NC4yNzI2NCAxNi45NDcyIDYuMzAyNzIgMTAuNzYyMjQgMy44NTUzNiAyNy44NjgxNi02Ljc4NCA0Ni45MTQ1Nkw1NDYuMDk5MiA3NjQuMzM0MDhjLTEwLjMyNzA0IDE4LjUwMzY4LTIzLjE1Nzc2IDI5LjU1Nzc2LTM0LjI3MzI4IDI5LjU1Nzc2eiBtMC4xODk0NC00NzYuNjQxMjhhMzEuODQ2NCAzMS44NDY0IDAgMCAwLTMxLjg0NjQgMzEuODUxNTJWNjM1Ljc1MDRhMzEuODYxNzYgMzEuODYxNzYgMCAwIDAgMzEuODQ2NCAzMS44NTE1MiAzMS44NjE3NiAzMS44NjE3NiAwIDAgMCAzMS44NTE1Mi0zMS44NTE1MnYtMjg2LjY1MzQ0YTMxLjg0NjQgMzEuODQ2NCAwIDAgMC0zMS44NTE1Mi0zMS44NDY0ek01MTIgMjA4LjM4OTEybS00Ny4zMzk1MiAwYTQ3LjMzOTUyIDQ3LjMzOTUyIDAgMSAxIDk0LjY3OTA0IDAgNDcuMzM5NTIgNDcuMzM5NTIgMCAxIDEtOTQuNjc5MDQgMFoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4KCiAgICAKICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJub3ZpZ29fbGVmdCIgdW5pY29kZT0iJiM1ODk3MDsiIGQ9Ik0yNjQuNzAwMTQ5IDM1OC4yODczODVhMjIuOTQ5Njg4IDIyLjk0OTY4OCAwIDAgMC0xNi4yODA4MDEgNi43NDM1ODhjLTguOTkxNzkyIDguOTkxNzkyLTguOTkxNzkyIDIzLjU2OTgxMiAwIDMyLjU2MTYwM2w0MjAuNzkyNzE4IDQyMC43OTM3NDJjOC45OTE3OTIgOC45OTE3OTIgMjMuNTY5ODEyIDguOTkxNzkyIDMyLjU2MTYwMyAwIDguOTkwNzY4LTguOTkxNzkyIDguOTkwNzY4LTIzLjU2OTgxMiAwLTMyLjU2MDU4bC00MjAuNzkzNzQxLTQyMC43OTQ3NjVhMjIuOTQ3NjQxIDIyLjk0NzY0MSAwIDAgMC0xNi4yNzk3NzktNi43NDM1ODh6TTY4NS40OTM4OTEtNjIuNTA2MzU2OTk5OTk5OThhMjIuOTQ5Njg4IDIyLjk0OTY4OCAwIDAgMC0xNi4yODA4MDEgNi43NDM1ODhsLTQyMC43OTM3NDIgNDIwLjc5NDc2NWMtOC45OTE3OTIgOC45OTE3OTItOC45OTE3OTIgMjMuNTY5ODEyIDAgMzIuNTYxNjA0IDguOTkwNzY4IDguOTkwNzY4IDIzLjU2OTgxMiA4Ljk5MDc2OCAzMi41NjA1OCAwbDQyMC43OTM3NDEtNDIwLjc5Mzc0MmM4Ljk5MDc2OC04Ljk5MTc5MiA4Ljk5MDc2OC0yMy41Njk4MTIgMC0zMi41NjE2MDRhMjIuOTQ4NjY1IDIyLjk0ODY2NSAwIDAgMC0xNi4yNzk3NzgtNi43NDQ2MTF6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+CgogICAgCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGltZXMiIHVuaWNvZGU9IiYjNTg4ODA7IiBkPSJNOTA3LjUxIDY3LjU5NTAwMDAwMDAwMDAzbC03OS4xMDEtNzkuMTAyLTMxNi40MDYgMzE2LjQwNS0zMTYuNDA1LTMxNi40MDUtNzkuMTA0IDc5LjEwMkw0MzIuODk5IDM4NCAxMTYuNDk0IDcwMC40MDVsNzkuMTA0IDc5LjA5OSAzMTYuNDA1LTMxNi40MDVMODI4LjQxIDc3OS41MDRsNzkuMDk4LTc5LjA5OUw1OTEuMTAyIDM4NGwzMTYuNDA1LTMxNi40MDV6IiAgaG9yaXotYWR2LXg9IjEwMjUiIC8+CgogICAgCgoKICA8L2ZvbnQ+CjwvZGVmcz48L3N2Zz4K') format('svg');}.spfont{font-family:"spfont" !important;font-size:14px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.sp-unselect-all:before{content:"\e634";}.sp-clear:before{content:"\e68c";}.sp-select-all:before{content:"\e628";}.sp-last:before{content:"\e67e";}.sp-first:before{content:"\e681";}.sp-next:before{content:"\e70d";}.sp-warning:before{content:"\e63c";}.sp-previous:before{content:"\e65a";}.sp-close:before{content:"\e600";}body{background:#f1f4f6;}body.is-dialog{background:#fff;}.selection{position:absolute;border:1px solid #8B9;background-color:#BEC;}.main-header .logo,.main-header .navbar{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;}.main-header .navbar{position:relative;}.main-header .navbar .sidebar-toggle{position:absolute;width:45px;text-align:center;}.main-header .navbar #nav{position:absolute;left:45px;}.main-header .navbar .navbar-custom-menu{position:absolute;right:0;}.bootstrap-dialog .modal-dialog{max-width:885px;}html.ios-fix,html.ios-fix body{height:100%;overflow:auto;-webkit-overflow-scrolling:touch;}.content{min-height:500px;}#header{background:#fff;box-shadow:0 2px 2px rgba(0,0,0,0.05),0 1px 0 rgba(0,0,0,0.05);}.content-wrapper{position:relative;}.control-relative{position:relative;}.tab-addtabs{overflow:hidden;}.tab-addtabs .tab-pane{height:100%;width:100%;}.row-between .col-xs-6 + .col-xs-6:before{content:"-";position:absolute;left:-2%;top:6px;}@media only screen and (min-width:481px){.row-flex{display:flex;flex-wrap:wrap;}.row-flex > [class*='col-']{display:flex;flex-direction:column;}.row-flex.row:after,.row-flex.row:before{display:flex;}}@media (max-width:991px){.main-header .navbar-custom-menu a.btn-danger{color:#fff;background-color:#e74c3c;}.main-header .navbar-custom-menu a.btn-primary{color:#fff;background-color:#2c3e50;}}.common-search-table{min-height:20px;padding:15px;margin-bottom:15px;background-color:#f5f5f5;}.searchit{border-bottom:1px dashed #3c8dbc;}.fixed-footer{position:fixed;bottom:0;background-color:#ecf0f1;width:100%;margin-bottom:0;padding:10px;}.layer-footer{display:none;}table.table-template{overflow:hidden;}.sp_container .msg-box{position:absolute;right:0;top:0;}.toast-top-right-index{top:62px;right:12px;}.bootstrap-select .status{background:#f0f0f0;clear:both;color:#999;font-size:12px;font-weight:500;line-height:1;margin-bottom:-5px;padding:10px 20px;}.img-center{margin:0 auto;display:inline;float:none;}#ribbon{overflow:hidden;padding:15px 15px 0 15px;position:relative;}#ribbon a{color:#777 !important;text-decoration:none !important;}#ribbon .breadcrumb{display:inline-block;margin:0;padding:0;background:none;vertical-align:top;}#ribbon .breadcrumb > .active,#ribbon .breadcrumb li{color:#aaa;}#ribbon .shortcut a{margin-left:10px;}.is-dialog #main{background:#fff;}form.form-horizontal .control-label{font-weight:normal;}.user-panel > .image img{width:45px;height:45px;}.panel-intro{margin-bottom:0;border:none;}.panel-intro > .panel-heading{padding:15px;padding-bottom:0;background:#e8edf0;border-color:#e8edf0;position:relative;}.panel-intro > .panel-heading .panel-lead{margin-bottom:15px;}.panel-intro > .panel-heading .panel-lead em{display:block;font-weight:bold;font-style:normal;}.panel-intro > .panel-heading .panel-title{height:25px;font-weight:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.panel-intro > .panel-heading .panel-control{height:42px;position:absolute;top:8px;right:8px;}.panel-intro > .panel-heading .panel-control .fa{font-size:14px;}.panel-intro > .panel-heading .nav-tabs{border-bottom:0;margin-bottom:0;}.panel-intro > .panel-heading .nav-tabs > li > a{margin-right:4px;color:#95a5a6;background-color:#d8e0e6;border:1px solid #e8edf0;border-bottom-color:transparent;}.panel-intro > .panel-heading .nav-tabs > li > a:hover,.panel-intro > .panel-heading .nav-tabs > li > a:focus{border:1px solid #e8edf0;color:#7b8a8b;background-color:#c9d4dc;}.panel-intro > .panel-heading .nav-tabs > li.active > a,.panel-intro > .panel-heading .nav-tabs > li.active > a:hover,.panel-intro > .panel-heading .nav-tabs > li.active > a:focus{color:#7b8a8b;background-color:#ffffff;border-bottom-color:transparent;cursor:default;}.panel-tabs .panel-heading{padding:12px 15px 12px 15px;}.panel-tabs .panel-heading .panel-lead{margin-bottom:0px;}.panel-nav .panel-heading{padding:0px;padding-bottom:0;background:#f1f4f6;border-color:#f1f4f6;}.panel-nav .nav-tabs > li > a{padding:12px 15px;background-color:#e8edf0;border:1px solid #f1f4f6;}.panel-nav .nav-tabs > li > a:hover,.panel-nav .nav-tabs > li > a:focus{border:1px solid #e8edf0;background-color:#e8edf0;}.panel-nav .nav-tabs > li.active > a,.panel-nav .nav-tabs > li.active > a:hover,.panel-nav .nav-tabs > li.active > a:focus{border-color:#f1f4f6;border-bottom-color:transparent;}.nav-addtabs{border:none;}.nav-addtabs.disable-top-badge > li > a > .pull-right-container{display:none;}.nav-addtabs > li{margin:0;}.nav-addtabs > li > a{height:49px;line-height:49px;padding:0 15px;border-radius:0;border:none;border-right:1px solid rgba(0,0,0,0.05);margin:0;color:#95a5a6;}.nav-addtabs > li > a:hover,.nav-addtabs > li > a:focus{border:none;color:#2c3e50;border-right:1px solid rgba(0,0,0,0.05);}.nav-addtabs > li > a i{margin-right:3px;}.nav-addtabs > li.active > a{height:49px;line-height:49px;padding:0 15px;border-radius:0;border:none;border-right:1px solid rgba(0,0,0,0.05);background:#f1f4f6;color:#2c3e50;overflow:hidden;}.nav-addtabs > li.active > a:hover,.nav-addtabs > li.active > a:focus{border:none;color:#2c3e50;border-right:1px solid rgba(0,0,0,0.05);background:#f1f4f6;}.nav-addtabs > li .close-tab{font-size:10px;position:absolute;right:5px;top:50%;margin-top:-7px;z-index:100;cursor:hand;cursor:pointer;color:#fff;display:none;}.nav-addtabs .open > a:hover,.nav-addtabs .open > a:focus{border-right:1px solid rgba(0,0,0,0.05);}.nav-addtabs ul li{position:relative;}.nav-addtabs li:hover > .close-tab{display:block;}.main-sidebar .sidebar-form{overflow:visible;}.main-sidebar .sidebar-form .menuresult{z-index:999;position:absolute;top:34px;left:-1px;width:100%;max-height:250px;overflow:auto;margin:0;border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.main-sidebar .sidebar-form .menuresult a{border-top:1px solid #eee;background-color:#fff;border-bottom:1px solid #eee;margin-bottom:-1px;display:block;padding:10px 15px;color:#222d32;}.main-sidebar .sidebar-form .menuresult a:hover{background:#eee;}.input-group .sp_result_area{width:100%;}.sidebar-menu.show-submenu .treeview-menu{display:block;}.sidebar-menu > li .badge{margin-top:0;}.sidebar-collapse .user-panel > .image img{width:25px;height:25px;}@media (min-width:768px){.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu{top:41px;}.sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container{top:7px!important;height:17px;}}.fieldlist dd{display:block;margin:5px 0;}.fieldlist dd input{display:inline-block;width:300px;}.fieldlist dd input:first-child{width:110px;}.fieldlist dd ins{width:110px;display:inline-block;text-decoration:none;font-weight:bold;}.form-layer{height:100%;min-height:150px;min-width:300px;}.form-layer .form-body{width:100%;overflow:auto;top:0;position:absolute;z-index:10;bottom:50px;padding:15px;}.form-layer .form-footer{height:50px;line-height:50px;background-color:#ecf0f1;width:100%;position:absolute;z-index:200;bottom:0;margin:0;}.form-layer .form-footer .form-group{margin-left:0;margin-right:0;}#treeview .jstree-container-ul .jstree-node{display:block;clear:both;}#treeview .jstree-leaf:not(:first-child){float:left;background:none;margin-left:0;width:80px;clear:none;}#treeview .jstree-leaf{float:left;margin-left:0;padding-left:24px;width:80px;clear:none;color:#777;}#treeview .jstree-leaf > .jstree-icon,#treeview .jstree-leaf .jstree-themeicon{display:none;}#treeview .jstree-last{background-image:url("../img/32px.png");background-position:-292px -4px;background-repeat:repeat-y;}#treeview .jstree-children:before,#treeview .jstree-children:after{content:" ";display:table;}#treeview .jstree-children:after{clear:both;}#treeview .jstree-themeicon{display:none;}.fixed-table-container{border:none!important;}.nice-validator input,.nice-validator select,.nice-validator textarea,.nice-validator [contenteditable]{display:inline-block;*display:inline;*zoom:1;}.nice-validator .note-editor .note-editing-area .note-editable{display:inherit;}.plupload-preview{padding:0 10px;margin-bottom:0;}.plupload-preview li{margin-top:15px;}.plupload-preview .thumbnail{margin-bottom:10px;}.plupload-preview a{display:block;}.plupload-preview a:first-child{height:90px;}.plupload-preview a img{height:80px;object-fit:cover;}.pjax-loader-bar .progress{position:fixed;top:0;left:0;height:2px;background:#77b6ff;box-shadow:0 0 10px rgba(119,182,255,0.7);-webkit-transition:width 0.4s ease;transition:width 0.4s ease;}.dropdown-menu.text-left a,.dropdown-menu.text-left li{text-align:left!important;}.bootstrap-table .fixed-table-toolbar .dropdown-menu{overflow:auto;}.toolbar{margin-top:10px;margin-bottom:10px;}.fixed-table-toolbar .bs-bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{line-height:inherit;}.fixed-table-toolbar .toolbar{margin-top:0;margin-bottom:0;}.bootstrap-table table tbody tr:first-child td .bs-checkbox{vertical-align:middle;}.bootstrap-table td.bs-checkbox{vertical-align:middle;}.dropdown-submenu{position:relative;}.dropdown-submenu > .dropdown-menu{overflow:auto;top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-webkit-background-clip:padding-box;-moz-border-radius:0 6px 6px 6px;-moz-background-clip:padding;border-radius:0 6px 6px 6px;background-clip:padding-box;}.dropdown-submenu:hover > .dropdown-menu{display:block;}.dropdown-submenu:hover > a:after{border-left-color:#fff;}.dropdown-submenu > a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px;}.dropdown-submenu.pull-left{float:none;}.dropdown-submenu.pull-left > .dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-webkit-background-clip:padding-box;-moz-border-radius:6px 0 6px 6px;-moz-background-clip:padding;border-radius:6px 0 6px 6px;background-clip:padding-box;}.toast-primary{background-color:#48c9b0!important;}.toast-success{background-color:#18bc9c!important;}.toast-error{background-color:#e74c3c!important;}.toast-info{background-color:#5dade2!important;}.toast-warning{background-color:#f1c40f!important;}.toast-inverse{background-color:#34495e!important;}.toast-default{background-color:#bdc3c7!important;}#toast-container > div,#toast-container > div:hover{-webkit-box-shadow:0 0 3px #eee;-moz-box-shadow:0 0 3px #eee;box-shadow:0 0 3px #eee;}.layui-layer-fast{}.layui-layer-fast .layui-layer-title{background:#2c3e50!important;color:#fff!important;border-bottom:none;}.layui-layer-fast .layui-layer-title ~ .layui-layer-setwin{top:0px;height:42px;}.layui-layer-fast .layui-layer-title ~ .layui-layer-setwin > a{height:42px;line-height:42px;display:inline-block;}.layui-layer-fast.layui-layer-border{border:none!important;box-shadow:1px 1px 50px rgba(0,0,0,0.3) !important;}.layui-layer-fast.layui-layer-iframe{overflow:visible;}.layui-layer-fast .layui-layer-moves{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}.layui-layer-fast .layui-layer-btn{text-align:center!important;padding:10px!important;background:#ecf0f1;overflow:hidden;}.layui-layer-fast .layui-layer-btn a{background-color:#95a5a6;border-color:#95a5a6;color:#fff!important;height:31px;margin-top:0;border:1px solid transparent;}.layui-layer-fast .layui-layer-btn .layui-layer-btn0{background-color:#18bc9c;border-color:#18bc9c;}.layui-layer-fast .layui-layer-footer{padding:8px 20px;background-color:#ecf0f1;height:auto;text-align:inherit!important;}.layui-layer-fast .layui-layer-setwin > a{background:none!important;}.layui-layer-fast .layui-layer-setwin > a cite{display:none;}.layui-layer-fast .layui-layer-setwin > a:after{content:"\e625";font-family:iconfont;font-style:normal;font-weight:normal;text-decoration:inherit;position:absolute;font-size:18px;color:#fff;margin:0;z-index:1;}.layui-layer-fast .layui-layer-setwin > a:hover{text-decoration:none!important;background:none!important;}.layui-layer-fast .layui-layer-setwin > a:focus{text-decoration:none!important;}.layui-layer-fast .layui-layer-setwin .layui-layer-min{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-min:after{content:"\e625";}.layui-layer-fast .layui-layer-setwin .layui-layer-max{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-max:after{content:"\e623";}.layui-layer-fast .layui-layer-setwin .layui-layer-maxmin{display:none;}.layui-layer-fast .layui-layer-setwin .layui-layer-maxmin:after{content:"\e624";}.layui-layer-fast .layui-layer-setwin .layui-layer-close1:after{content:"\e626";}.layui-layer-fast .layui-layer-setwin .layui-layer-close2,.layui-layer-fast .layui-layer-setwin .layui-layer-close2:hover{background:url('../libs/layer/dist/theme/default/icon.png') no-repeat -149px -31px !important;top:-30px;right:-30px;}.layui-layer-fast .layui-layer-setwin .layui-layer-close2:after,.layui-layer-fast .layui-layer-setwin .layui-layer-close2:hover:after{display:none;}.layui-layer-content{clear:both;}.layui-layer-fast-msg{min-width:100px;border-radius:2px;background-color:rgba(0,0,0,0.6);color:#fff;}.layui-layer-fast-msg .layui-layer-content{padding:12px 25px;text-align:center;}.n-bootstrap .input-group > .n-right{position:absolute;}@media (min-width:564px){body.is-dialog .daterangepicker{min-width:130px;}body.is-dialog .daterangepicker .ranges ul{width:130px;}}@media (max-width:480px){.nav-addtabs{display:none;}.fixed-table-toolbar .columns-right.btn-group{display:none;}.fixed .content-wrapper,.fixed .right-side{padding-top:50px;}}@media (max-width:768px){.n-bootstrap .n-right{margin-top:0;top:-20px;position:absolute;left:0;text-align:right;width:100%;}.n-bootstrap .n-right .msg-wrap{position:relative;}.n-bootstrap .col-xs-12 > .n-right .msg-wrap{margin-right:15px;}}.radio > label,.checkbox > label{margin-right:10px;}.radio > label > input,.checkbox > label > input{margin:2px 0 0;}.wipecache li a{color:#444444!important;} \ No newline at end of file diff --git a/public/assets/css/index.css b/public/assets/css/index.css index 9e9a992..2ed7028 100644 --- a/public/assets/css/index.css +++ b/public/assets/css/index.css @@ -4,7 +4,10 @@ body { width: 100%; } body { - font-family: 'Muli', 'Helvetica', 'Arial', 'sans-serif'; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-family: "Roboto", "SF Pro SC", "SF Pro Display", "SF Pro Icons", "PingFang SC", BlinkMacSystemFont, -apple-system, "Segoe UI", "Microsoft Yahei", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif; + font-weight: 400; } a { -webkit-transition: all 0.35s; diff --git a/public/assets/js/backend.js b/public/assets/js/backend.js index ee400e2..f8791b9 100755 --- a/public/assets/js/backend.js +++ b/public/assets/js/backend.js @@ -1,4 +1,4 @@ -define(['fast', 'moment'], function (Fast, Moment) { +define(['fast', 'template', 'moment'], function (Fast, Template, Moment) { var Backend = { api: { sidebar: function (params) { @@ -8,13 +8,11 @@ define(['fast', 'moment'], function (Fast, Moment) { $.each(params, function (k, v) { $url = Fast.api.fixurl(k); - if ($.isArray(v)) - { + if ($.isArray(v)) { $nums = typeof v[0] !== 'undefined' ? v[0] : 0; $color = typeof v[1] !== 'undefined' ? v[1] : colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums]; $class = typeof v[2] !== 'undefined' ? v[2] : 'label'; - } else - { + } else { $nums = v; $color = colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums]; $class = 'label'; @@ -58,7 +56,10 @@ define(['fast', 'moment'], function (Fast, Moment) { var id = Math.floor(new Date().valueOf() * Math.random()); icon = typeof icon !== 'undefined' ? icon : 'fa fa-circle-o'; title = typeof title !== 'undefined' ? title : ''; - top.window.$("<a />").append('<i class="' + icon + '"></i> <span>' + title + '</span>').prop("href", url).attr({url: url, addtabs: id}).addClass("hide").appendTo(top.window.document.body).trigger("click"); + top.window.$("<a />").append('<i class="' + icon + '"></i> <span>' + title + '</span>').prop("href", url).attr({ + url: url, + addtabs: id + }).addClass("hide").appendTo(top.window.document.body).trigger("click"); } } } @@ -227,6 +228,8 @@ define(['fast', 'moment'], function (Fast, Moment) { } }; Backend.api = $.extend(Fast.api, Backend.api); + //将Template渲染至全局,以便于在子框架中调用 + window.Template = Template; //将Moment渲染至全局,以便于在子框架中调用 window.Moment = Moment; //将Backend渲染至全局,以便于在子框架中调用 diff --git a/public/assets/js/backend/addon.js b/public/assets/js/backend/addon.js index 08744b5..a1b0be9 100644 --- a/public/assets/js/backend/addon.js +++ b/public/assets/js/backend/addon.js @@ -14,6 +14,13 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function var table = $("#table"); + table.on('load-success.bs.table', function (e, json) { + if (json && typeof json.category != 'undefined' && $(".nav-category li").size() == 2) { + $.each(json.category, function (i, j) { + $("<li><a href='javascript:;' data-id='" + j.id + "'>" + j.name + "</a></li>").insertBefore($(".nav-category li:last")); + }); + } + }); table.on('post-body.bs.table', function (e, settings, json, xhr) { var parenttable = table.closest('.bootstrap-table'); var d = $(".fixed-table-toolbar", parenttable).find(".search input"); @@ -53,19 +60,12 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function showColumns: false, showToggle: false, showExport: false, - commonSearch: false, - searchFormVisible: false, + showSearch: false, + commonSearch: true, + searchFormVisible: true, + searchFormTemplate: 'searchformtpl', pageSize: 12, pagination: false, - queryParams: function (params) { - var filter = params.filter ? JSON.parse(params.filter) : {}; - var op = params.op ? JSON.parse(params.op) : {}; - filter.faversion = Config.fastadmin.version; - op.faversion = "="; - params.filter = JSON.stringify(filter); - params.op = JSON.stringify(op); - return params; - } }); // 为表格绑定事件 @@ -124,14 +124,23 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function return false; } }); - - // 切换URL + + // 切换 $(document).on("click", ".btn-switch", function () { $(".btn-switch").removeClass("active"); $(this).addClass("active"); + $("form.form-commonsearch input[name='type']").val($(this).data("type")); table.bootstrapTable('refresh', {url: $(this).data("url"), pageNumber: 1}); + return false; }); - + $(document).on("click", ".nav-category li a", function () { + $(".nav-category li").removeClass("active"); + $(this).parent().addClass("active"); + $("form.form-commonsearch input[name='category_id']").val($(this).data("id")); + table.bootstrapTable('refresh', {url: $(this).data("url"), pageNumber: 1}); + return false; + }); + // 会员信息 $(document).on("click", ".btn-userinfo", function () { var userinfo = Controller.api.userinfo.get(); @@ -146,7 +155,11 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function Fast.api.ajax({ url: Config.fastadmin.api_url + '/user/login', dataType: 'jsonp', - data: {account: $("#inputAccount", layero).val(), password: $("#inputPassword", layero).val(), _method: 'POST'} + data: { + account: $("#inputAccount", layero).val(), + password: $("#inputPassword", layero).val(), + _method: 'POST' + } }, function (data, ret) { Controller.api.userinfo.set(data); Layer.closeAll(); @@ -199,7 +212,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function var token = userinfo ? userinfo.token : ''; Fast.api.ajax({ url: 'addon/install', - data: {name: name, force: force ? 1 : 0, uid: uid, token: token, version: version, faversion: Config.fastadmin.version} + data: { + name: name, + force: force ? 1 : 0, + uid: uid, + token: token, + version: version, + faversion: Config.fastadmin.version + } }, function (data, ret) { Layer.closeAll(); Config['addons'][data.addon.name] = ret.data.addon; diff --git a/public/assets/js/backend/index.js b/public/assets/js/backend/index.js index 906ead1..6e7fe7b 100755 --- a/public/assets/js/backend/index.js +++ b/public/assets/js/backend/index.js @@ -180,10 +180,11 @@ define(['jquery', 'bootstrap', 'backend', 'addtabs', 'adminlte', 'form'], functi }); //清除缓存 - $(document).on('click', "[data-toggle='wipecache']", function () { + $(document).on('click', "ul.wipecache li a", function () { $.ajax({ url: 'ajax/wipecache', dataType: 'json', + data: {type: $(this).data("type")}, cache: false, success: function (ret) { if (ret.hasOwnProperty("code")) { diff --git a/public/assets/js/bootstrap-table-commonsearch.js b/public/assets/js/bootstrap-table-commonsearch.js index 9c9162a..7036c40 100644 --- a/public/assets/js/bootstrap-table-commonsearch.js +++ b/public/assets/js/bootstrap-table-commonsearch.js @@ -1,9 +1,11 @@ /** + * FastAdmin通用搜索 + * * @author: pppscn <35696959@qq.com> - * @version: v0.0.1 + * @update 2017-05-07 <https://gitee.com/pp/fastadmin> * - * @update 2017-05-07 <http://git.oschina.net/pp/fastadmin> - * @update 2017-09-17 <http://git.oschina.net/karson/fastadmin> + * @author: Karson <karsonzhang@163.com> + * @update 2018-04-05 <https://gitee.com/karson/fastadmin> */ !function ($) { @@ -17,75 +19,16 @@ var vFormCommon = createFormCommon(pColumns, that); var vModal = sprintf("<div class=\"commonsearch-table %s\">", that.options.searchFormVisible ? "" : "hidden"); - vModal += vFormCommon.join(''); + vModal += vFormCommon; vModal += "</div>"; that.$container.prepend($(vModal)); that.$commonsearch = $(".commonsearch-table", that.$container); var form = $("form.form-commonsearch", that.$commonsearch); - //绑定日期时间元素事件 - if ($(".datetimepicker", form).size() > 0) { - - require(['bootstrap-datetimepicker'], function () { - $('.datetimepicker', form).parent().css('position', 'relative'); - $('.datetimepicker', form).datetimepicker({ - //format: 'YYYY-MM-DD', - icons: { - time: 'fa fa-clock-o', - date: 'fa fa-calendar', - up: 'fa fa-chevron-up', - down: 'fa fa-chevron-down', - previous: 'fa fa-chevron-left', - next: 'fa fa-chevron-right', - today: 'fa fa-history', - clear: 'fa fa-trash', - close: 'fa fa-remove' - }, - showTodayButton: true, - showClose: true - }); - }); - } - if ($(".datetimerange", form).size() > 0) { - var ranges = {}; - ranges[__('Today')] = [Moment().startOf('day'), Moment().endOf('day')]; - ranges[__('Yesterday')] = [Moment().subtract(1, 'days').startOf('day'), Moment().subtract(1, 'days').endOf('day')]; - ranges[__('Last 7 Days')] = [Moment().subtract(6, 'days').startOf('day'), Moment().endOf('day')]; - ranges[__('Last 30 Days')] = [Moment().subtract(29, 'days').startOf('day'), Moment().endOf('day')]; - ranges[__('This Month')] = [Moment().startOf('month'), Moment().endOf('month')]; - ranges[__('Last Month')] = [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')]; - var options = { - timePicker: false, - autoUpdateInput: false, - timePickerSeconds: true, - timePicker24Hour: true, - autoApply: true, - locale: { - format: 'YYYY-MM-DD HH:mm:ss', - customRangeLabel: __("Custom Range"), - applyLabel: __("Apply"), - cancelLabel: __("Clear"), - }, - ranges: ranges, - }; - var callback = function (start, end) { - $(this.element).val(start.format(options.locale.format) + " - " + end.format(options.locale.format)); - }; - var column, index; - require(['bootstrap-daterangepicker'], function () { - $(".datetimerange", form).each(function () { - $(this).on('apply.daterangepicker', function (ev, picker) { - callback.call(picker, picker.startDate, picker.endDate); - }); - $(this).on('cancel.daterangepicker', function (ev, picker) { - $(this).val(''); - }); - index = $(this).data("index"); - column = pColumns[index]; - $(this).daterangepicker($.extend({}, options, column.options || {}), callback); - }); - }); - } + require(['form'], function (Form) { + Form.api.bindevent(form); + form.validator("destroy"); + }); // 表单提交 form.on("submit", function (event) { @@ -103,9 +46,12 @@ }; var createFormCommon = function (pColumns, that) { + // 如果有使用模板则直接返回模板的内容 + if (that.options.searchFormTemplate) { + return Template(that.options.searchFormTemplate, {columns: pColumns, table: that}); + } var htmlForm = []; - var opList = ['=', '>', '>=', '<', '<=', '!=', 'FIND_IN_SET', 'LIKE', 'LIKE %...%', 'NOT LIKE', 'IN', 'NOT IN', 'IN(...)', 'NOT IN(...)', 'BETWEEN', 'NOT BETWEEN', 'RANGE', 'NOT RANGE', 'IS NULL', 'IS NOT NULL']; - htmlForm.push(sprintf('<form class="form-horizontal form-commonsearch" action="%s" >', that.options.actionForm)); + htmlForm.push(sprintf('<form class="form-horizontal form-commonsearch" novalidate method="post" action="%s" >', that.options.actionForm)); htmlForm.push('<fieldset>'); if (that.options.titleForm.length > 0) htmlForm.push(sprintf("<legend>%s</legend>", that.options.titleForm)); @@ -114,24 +60,28 @@ var vObjCol = pColumns[i]; if (!vObjCol.checkbox && vObjCol.field !== 'operate' && vObjCol.searchable && vObjCol.operate !== false) { var query = Backend.api.query(vObjCol.field); - query = query ? query : ''; - vObjCol.defaultValue = that.options.renderDefault && query != '' ? query : (typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue); + var operate = Backend.api.query(vObjCol.field + "-operate"); + + vObjCol.defaultValue = that.options.renderDefault && query ? query : (typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue); + vObjCol.operate = that.options.renderDefault && operate ? operate : (typeof vObjCol.operate === 'undefined' ? '=' : vObjCol.operate); ColumnsForSearch.push(vObjCol); htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">'); htmlForm.push(sprintf('<label for="%s" class="control-label col-xs-4">%s</label>', vObjCol.field, vObjCol.title)); htmlForm.push('<div class="col-xs-8">'); - vObjCol.operate = (typeof vObjCol.operate === 'undefined' || $.inArray(vObjCol.operate.toUpperCase(), opList) === -1) ? '=' : vObjCol.operate.toUpperCase(); - htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="field-%s" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate)); + vObjCol.operate = vObjCol.operate ? vObjCol.operate.toUpperCase() : '='; + htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="%s-operate" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate)); + var addClass = typeof vObjCol.addClass === 'undefined' ? (typeof vObjCol.addclass === 'undefined' ? 'form-control' : 'form-control ' + vObjCol.addclass) : 'form-control ' + vObjCol.addClass; + var extend = typeof vObjCol.extend === 'undefined' ? '' : vObjCol.extend; var style = typeof vObjCol.style === 'undefined' ? '' : sprintf('style="%s"', vObjCol.style); + extend = typeof vObjCol.data !== 'undefined' && extend == '' ? vObjCol.data : extend; if (vObjCol.searchList) { if (typeof vObjCol.searchList === 'object' && typeof vObjCol.searchList.then === 'function') { - htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, sprintf('<option value="">%s</option>', that.options.formatCommonChoose()))); + htmlForm.push(sprintf('<select class="%s" name="%s" %s %s>%s</select>', addClass, vObjCol.field, style, extend, sprintf('<option value="">%s</option>', that.options.formatCommonChoose()))); (function (vObjCol, that) { $.when(vObjCol.searchList).done(function (ret) { - var isArray = false; if (ret.data && ret.data.searchlist && $.isArray(ret.data.searchlist)) { var resultlist = {}; @@ -160,23 +110,21 @@ var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : ''; searchList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect)); }); - htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, searchList.join(''))); + htmlForm.push(sprintf('<select class="%s" name="%s" %s %s>%s</select>', addClass, vObjCol.field, style, extend, searchList.join(''))); } } else { var placeholder = typeof vObjCol.placeholder === 'undefined' ? vObjCol.title : vObjCol.placeholder; var type = typeof vObjCol.type === 'undefined' ? 'text' : vObjCol.type; - var addclass = typeof vObjCol.addclass === 'undefined' ? 'form-control' : 'form-control ' + vObjCol.addclass; - var data = typeof vObjCol.data === 'undefined' ? '' : vObjCol.data; var defaultValue = typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue; if (/BETWEEN$/.test(vObjCol.operate)) { var defaultValueArr = defaultValue.toString().match(/\|/) ? defaultValue.split('|') : ['', '']; var placeholderArr = placeholder.toString().match(/\|/) ? placeholder.split('|') : [placeholder, placeholder]; htmlForm.push('<div class="row row-between">'); - htmlForm.push(sprintf('<div class="col-xs-6 11"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, data)); - htmlForm.push(sprintf('<div class="col-xs-6 22"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, data)); + htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addClass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, extend)); + htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addClass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, extend)); htmlForm.push('</div>'); } else { - htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addclass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, data)); + htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addClass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, extend)); } } @@ -191,7 +139,7 @@ htmlForm.push('</fieldset>'); htmlForm.push('</form>'); - return htmlForm; + return htmlForm.join(''); }; var createFormBtn = function (that) { @@ -199,7 +147,7 @@ var searchSubmit = that.options.formatCommonSubmitButton(); var searchReset = that.options.formatCommonResetButton(); htmlBtn.push('<div class="col-sm-8 col-xs-offset-4">'); - htmlBtn.push(sprintf('<button type="submit" class="btn btn-success" >%s</button> ', searchSubmit)); + htmlBtn.push(sprintf('<button type="submit" class="btn btn-success" formnovalidate>%s</button> ', searchSubmit)); htmlBtn.push(sprintf('<button type="reset" class="btn btn-default" >%s</button> ', searchReset)); htmlBtn.push('</div>'); return htmlBtn; @@ -219,16 +167,17 @@ var op = {}; var filter = {}; var value = ''; - $("form.form-commonsearch input.operate", that.$commonsearch).each(function (i) { + $("form.form-commonsearch .operate", that.$commonsearch).each(function (i) { var name = $(this).data("name"); - var sym = $(this).val().toUpperCase(); + var sym = $(this).is("select") ? $("option:selected", this).val() : $(this).val().toUpperCase(); var obj = $("[name='" + name + "']", that.$commonsearch); if (obj.size() == 0) return true; var vObjCol = ColumnsForSearch[i]; if (obj.size() > 1) { if (/BETWEEN$/.test(sym)) { - var value_begin = $.trim($("[name='" + name + "']:first", that.$commonsearch).val()), value_end = $.trim($("[name='" + name + "']:last", that.$commonsearch).val()); + var value_begin = $.trim($("[name='" + name + "']:first", that.$commonsearch).val()), + value_end = $.trim($("[name='" + name + "']:last", that.$commonsearch).val()); if (value_begin.length || value_end.length) { if (typeof vObjCol.process === 'function') { value_begin = vObjCol.process(value_begin, 'begin'); @@ -244,11 +193,12 @@ } } else { value = $("[name='" + name + "']:checked", that.$commonsearch).val(); + value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : obj.val(); } } else { - value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : (sym == 'LIKE %...%' ? obj.val().replace(/\*/g, '%') : obj.val()); + value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : obj.val(); } - if (removeempty && value == '' && sym.indexOf("NULL") == -1) { + if (removeempty && (value == '' || value == null || ($.isArray(value) && value.length == 0)) && !sym.match(/null/i)) { return true; } @@ -267,7 +217,7 @@ //移除empty的值 if (removeempty) { $.each(params.filter, function (i, j) { - if (j === '') { + if ((j == '' || j == null || ($.isArray(j) && j.length == 0)) && !params.op[i].match(/null/i)) { delete params.filter[i]; delete params.op[i]; } @@ -282,8 +232,10 @@ commonSearch: false, titleForm: "Common search", actionForm: "", + searchFormTemplate: "", searchFormVisible: true, searchClass: 'searchit', + showSearch: true, renderDefault: true, onCommonSearch: function (field, text) { return false; @@ -322,10 +274,10 @@ $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales); var BootstrapTable = $.fn.bootstrapTable.Constructor, - _initHeader = BootstrapTable.prototype.initHeader, - _initToolbar = BootstrapTable.prototype.initToolbar, - _load = BootstrapTable.prototype.load, - _initSearch = BootstrapTable.prototype.initSearch; + _initHeader = BootstrapTable.prototype.initHeader, + _initToolbar = BootstrapTable.prototype.initToolbar, + _load = BootstrapTable.prototype.load, + _initSearch = BootstrapTable.prototype.initSearch; BootstrapTable.prototype.initHeader = function () { _initHeader.apply(this, Array.prototype.slice.apply(arguments)); @@ -344,12 +296,13 @@ } var that = this, - html = []; - html.push(sprintf('<div class="columns-%s pull-%s" style="margin-top:10px;margin-bottom:10px;">', this.options.buttonsAlign, this.options.buttonsAlign)); - html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="commonSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatCommonSearch())); - html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.commonSearchIcon)) - html.push('</button></div>'); - + html = []; + if(that.options.showSearch){ + html.push(sprintf('<div class="columns-%s pull-%s" style="margin-top:10px;margin-bottom:10px;">', this.options.buttonsAlign, this.options.buttonsAlign)); + html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="commonSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatCommonSearch())); + html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.commonSearchIcon)) + html.push('</button></div>'); + } if (that.$toolbar.find(".pull-right").size() > 0) { $(html.join('')).insertBefore(that.$toolbar.find(".pull-right:first")); } else { @@ -359,7 +312,7 @@ initCommonSearch(that.columns, that); that.$toolbar.find('button[name="commonSearch"]') - .off('click').on('click', function () { + .off('click').on('click', function () { that.$commonsearch.toggleClass("hidden"); return; }); @@ -374,7 +327,7 @@ var queryParams = that.options.queryParams; //匹配默认搜索值 this.options.queryParams = function (params) { - return queryParams(getQueryParams(params, getSearchQuery(this, true))); + return queryParams(getQueryParams(params, getSearchQuery(that, true))); }; this.trigger('post-common-search', that); @@ -409,8 +362,8 @@ var fval = fp[key].toLowerCase(); var value = item[key]; value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header, - that.header.formatters[$.inArray(key, that.header.fields)], - [value, item, i], value); + that.header.formatters[$.inArray(key, that.header.fields)], + [value, item, i], value); if (!($.inArray(key, that.header.fields) !== -1 && (typeof value === 'string' || typeof value === 'number') && diff --git a/public/assets/js/frontend.js b/public/assets/js/frontend.js index 83ab566..84b2803 100644 --- a/public/assets/js/frontend.js +++ b/public/assets/js/frontend.js @@ -1,4 +1,4 @@ -define(['fast'], function (Fast) { +define(['fast', 'template'], function (Fast, Template) { var Frontend = { api: Fast.api, init: function () { @@ -53,6 +53,8 @@ define(['fast'], function (Fast) { } }; Frontend.api = $.extend(Fast.api, Frontend.api); + //将Template渲染至全局,以便于在子框架中调用 + window.Template = Template; //将Frontend渲染至全局,以便于在子框架中调用 window.Frontend = Frontend; diff --git a/public/assets/js/require-backend.min.js b/public/assets/js/require-backend.min.js index 8896312..6ec1eb3 100644 --- a/public/assets/js/require-backend.min.js +++ b/public/assets/js/require-backend.min.js @@ -973,6 +973,8 @@ define('fast',['jquery', 'bootstrap', 'toastr', 'layer', 'lang'], function ($, u return Fast; }); +/*!art-template - Template Engine | http://aui.github.com/artTemplate/*/ +!function(){function a(a){return a.replace(t,"").replace(u,",").replace(v,"").replace(w,"").replace(x,"").split(y)}function b(a){return"'"+a.replace(/('|\\)/g,"\\$1").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+"'"}function c(c,d){function e(a){return m+=a.split(/\n/).length-1,k&&(a=a.replace(/\s+/g," ").replace(/<!--[\w\W]*?-->/g,"")),a&&(a=s[1]+b(a)+s[2]+"\n"),a}function f(b){var c=m;if(j?b=j(b,d):g&&(b=b.replace(/\n/g,function(){return m++,"$line="+m+";"})),0===b.indexOf("=")){var e=l&&!/^=[=#]/.test(b);if(b=b.replace(/^=[=#]?|[\s;]*$/g,""),e){var f=b.replace(/\s*\([^\)]+\)/,"");n[f]||/^(include|print)$/.test(f)||(b="$escape("+b+")")}else b="$string("+b+")";b=s[1]+b+s[2]}return g&&(b="$line="+c+";"+b),r(a(b),function(a){if(a&&!p[a]){var b;b="print"===a?u:"include"===a?v:n[a]?"$utils."+a:o[a]?"$helpers."+a:"$data."+a,w+=a+"="+b+",",p[a]=!0}}),b+"\n"}var g=d.debug,h=d.openTag,i=d.closeTag,j=d.parser,k=d.compress,l=d.escape,m=1,p={$data:1,$filename:1,$utils:1,$helpers:1,$out:1,$line:1},q="".trim,s=q?["$out='';","$out+=",";","$out"]:["$out=[];","$out.push(",");","$out.join('')"],t=q?"$out+=text;return $out;":"$out.push(text);",u="function(){var text=''.concat.apply('',arguments);"+t+"}",v="function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);"+t+"}",w="'use strict';var $utils=this,$helpers=$utils.$helpers,"+(g?"$line=0,":""),x=s[0],y="return new String("+s[3]+");";r(c.split(h),function(a){a=a.split(i);var b=a[0],c=a[1];1===a.length?x+=e(b):(x+=f(b),c&&(x+=e(c)))});var z=w+x+y;g&&(z="try{"+z+"}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:"+b(c)+".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");try{var A=new Function("$data","$filename",z);return A.prototype=n,A}catch(a){throw a.temp="function anonymous($data,$filename) {"+z+"}",a}}var d=function(a,b){return"string"==typeof b?q(b,{filename:a}):g(a,b)};d.version="3.0.0",d.config=function(a,b){e[a]=b};var e=d.defaults={openTag:"<%",closeTag:"%>",escape:!0,cache:!0,compress:!1,parser:null},f=d.cache={};d.render=function(a,b){return q(a)(b)};var g=d.renderFile=function(a,b){var c=d.get(a)||p({filename:a,name:"Render Error",message:"Template not found"});return b?c(b):c};d.get=function(a){var b;if(f[a])b=f[a];else if("object"==typeof document){var c=document.getElementById(a);if(c){var d=(c.value||c.innerHTML).replace(/^\s*|\s*$/g,"");b=q(d,{filename:a})}}return b};var h=function(a,b){return"string"!=typeof a&&(b=typeof a,"number"===b?a+="":a="function"===b?h(a.call(a)):""),a},i={"<":"<",">":">",'"':""","'":"'","&":"&"},j=function(a){return i[a]},k=function(a){return h(a).replace(/&(?![\w#]+;)|[<>"']/g,j)},l=Array.isArray||function(a){return"[object Array]"==={}.toString.call(a)},m=function(a,b){var c,d;if(l(a))for(c=0,d=a.length;c<d;c++)b.call(a,a[c],c,a);else for(c in a)b.call(a,a[c],c)},n=d.utils={$helpers:{},$include:g,$string:h,$escape:k,$each:m};d.helper=function(a,b){o[a]=b};var o=d.helpers=n.$helpers;d.onerror=function(a){var b="Template Error\n\n";for(var c in a)b+="<"+c+">\n"+a[c]+"\n\n";"object"==typeof console&&console.error(b)};var p=function(a){return d.onerror(a),function(){return"{Template Error}"}},q=d.compile=function(a,b){function d(c){try{return new i(c,h)+""}catch(d){return b.debug?p(d)():(b.debug=!0,q(a,b)(c))}}b=b||{};for(var g in e)void 0===b[g]&&(b[g]=e[g]);var h=b.filename;try{var i=c(a,b)}catch(a){return a.filename=h||"anonymous",a.name="Syntax Error",p(a)}return d.prototype=i.prototype,d.toString=function(){return i.toString()},h&&b.cache&&(f[h]=d),d},r=n.$each,s="break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined",t=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g,u=/[^\w$]+/g,v=new RegExp(["\\b"+s.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),w=/^\d[^,]*|,\d[^,]*/g,x=/^,+|,+$/g,y=/^$|,+/;"object"==typeof exports&&"undefined"!=typeof module?module.exports=d:"function"==typeof define?define('template',[],function(){return d}):this.template=d}(); //! moment.js //! version : 2.15.2 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors @@ -5209,7 +5211,7 @@ define('fast',['jquery', 'bootstrap', 'toastr', 'layer', 'lang'], function ($, u })); define('moment', ['moment/moment'], function (main) { return main; }); -define('backend',['fast', 'moment'], function (Fast, Moment) { +define('backend',['fast', 'template', 'moment'], function (Fast, Template, Moment) { var Backend = { api: { sidebar: function (params) { @@ -5219,13 +5221,11 @@ define('backend',['fast', 'moment'], function (Fast, Moment) { $.each(params, function (k, v) { $url = Fast.api.fixurl(k); - if ($.isArray(v)) - { + if ($.isArray(v)) { $nums = typeof v[0] !== 'undefined' ? v[0] : 0; $color = typeof v[1] !== 'undefined' ? v[1] : colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums]; $class = typeof v[2] !== 'undefined' ? v[2] : 'label'; - } else - { + } else { $nums = v; $color = colorArr[(!isNaN($nums) ? $nums : $nums.length) % $colorNums]; $class = 'label'; @@ -5269,7 +5269,10 @@ define('backend',['fast', 'moment'], function (Fast, Moment) { var id = Math.floor(new Date().valueOf() * Math.random()); icon = typeof icon !== 'undefined' ? icon : 'fa fa-circle-o'; title = typeof title !== 'undefined' ? title : ''; - top.window.$("<a />").append('<i class="' + icon + '"></i> <span>' + title + '</span>').prop("href", url).attr({url: url, addtabs: id}).addClass("hide").appendTo(top.window.document.body).trigger("click"); + top.window.$("<a />").append('<i class="' + icon + '"></i> <span>' + title + '</span>').prop("href", url).attr({ + url: url, + addtabs: id + }).addClass("hide").appendTo(top.window.document.body).trigger("click"); } } } @@ -5438,6 +5441,8 @@ define('backend',['fast', 'moment'], function (Fast, Moment) { } }; Backend.api = $.extend(Fast.api, Backend.api); + //将Template渲染至全局,以便于在子框架中调用 + window.Template = Template; //将Moment渲染至全局,以便于在子框架中调用 window.Moment = Moment; //将Backend渲染至全局,以便于在子框架中调用 @@ -5744,5842 +5749,4146 @@ define("bootstrap-table-export", ["bootstrap-table","tableexport"], (function (g }; }(this))); -!function(a){"use strict";if("function"==typeof define&&define.amd)define('bootstrap-datetimepicker',["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t",delete:46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return i.indexOf("Y")!==-1;case"M":return i.indexOf("M")!==-1;case"d":return i.toLowerCase().indexOf("d")!==-1;case"h":case"H":return i.toLowerCase().indexOf("h")!==-1;case"m":return i.indexOf("m")!==-1;case"s":return i.indexOf("s")!==-1;default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&d.daysOfWeekDisabled.indexOf(b.day())!==-1)return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){if(b.isBetween(this[0],this[1]))return e=!0,!1}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;g<42;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),0!==b.day()&&6!==b.day()||k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return!c||!c.transitioning||(b=!0,!1)}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return!a(b.currentTarget).is(".disabled")&&(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),!!Object.keys(c).length&&c},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),!!Object.keys(c).length&&c},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||b<0||isNaN(b)?a:(a.indexOf(b)===-1&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"!==a&&"moment"!==a||(a=y()));var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"!==a&&"moment"!==a||(a=y()));var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||a<1)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&b.indexOf(a.toLowerCase())===-1)throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(r.indexOf(a)===-1)throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(u.indexOf(a)===-1)throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),t.indexOf(b.horizontal)===-1)throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),s.indexOf(b.vertical)===-1)throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter"); -return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.datetimepicker=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.datetimepicker.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.datetimepicker.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"glyphicon glyphicon-time",date:"glyphicon glyphicon-calendar",up:"glyphicon glyphicon-chevron-up",down:"glyphicon glyphicon-chevron-down",previous:"glyphicon glyphicon-chevron-left",next:"glyphicon glyphicon-chevron-right",today:"glyphicon glyphicon-screenshot",clear:"glyphicon glyphicon-trash",close:"glyphicon glyphicon-remove"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},delete:function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.datetimepicker}); /** -* @version: 2.1.27 -* @author: Dan Grossman http://www.dangrossman.info/ -* @copyright: Copyright (c) 2012-2017 Dan Grossman. All rights reserved. -* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php -* @website: http://www.daterangepicker.com/ -*/ -// Follow the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Make globaly available as well - define('bootstrap-daterangepicker',['moment', 'jquery'], function (moment, jquery) { - if (!jquery.fn) jquery.fn = {}; // webpack server rendering - return factory(moment, jquery); - }); - } else if (typeof module === 'object' && module.exports) { - // Node / Browserify - //isomorphic issue - var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined; - if (!jQuery) { - jQuery = require('jquery'); - if (!jQuery.fn) jQuery.fn = {}; - } - var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment'); - module.exports = factory(moment, jQuery); - } else { - // Browser globals - root.daterangepicker = factory(root.moment, root.jQuery); - } -}(this, function(moment, $) { - var DateRangePicker = function(element, options, cb) { - - //default settings for options - this.parentEl = 'body'; - this.element = $(element); - this.startDate = moment().startOf('day'); - this.endDate = moment().endOf('day'); - this.minDate = false; - this.maxDate = false; - this.dateLimit = false; - this.autoApply = false; - this.singleDatePicker = false; - this.showDropdowns = false; - this.showWeekNumbers = false; - this.showISOWeekNumbers = false; - this.showCustomRangeLabel = true; - this.timePicker = false; - this.timePicker24Hour = false; - this.timePickerIncrement = 1; - this.timePickerSeconds = false; - this.linkedCalendars = true; - this.autoUpdateInput = true; - this.alwaysShowCalendars = false; - this.ranges = {}; - - this.opens = 'right'; - if (this.element.hasClass('pull-right')) - this.opens = 'left'; - - this.drops = 'down'; - if (this.element.hasClass('dropup')) - this.drops = 'up'; - - this.buttonClasses = 'btn btn-sm'; - this.applyClass = 'btn-success'; - this.cancelClass = 'btn-default'; - - this.locale = { - direction: 'ltr', - format: moment.localeData().longDateFormat('L'), - separator: ' - ', - applyLabel: 'Apply', - cancelLabel: 'Cancel', - weekLabel: 'W', - customRangeLabel: 'Custom Range', - daysOfWeek: moment.weekdaysMin(), - monthNames: moment.monthsShort(), - firstDay: moment.localeData().firstDayOfWeek() - }; - - this.callback = function() { }; - - //some state information - this.isShowing = false; - this.leftCalendar = {}; - this.rightCalendar = {}; - - //custom options from user - if (typeof options !== 'object' || options === null) - options = {}; - - //allow setting options with data attributes - //data-api options will be overwritten with custom javascript options - options = $.extend(this.element.data(), options); - - //html template for the picker UI - if (typeof options.template !== 'string' && !(options.template instanceof $)) - options.template = '<div class="daterangepicker dropdown-menu">' + - '<div class="calendar left">' + - '<div class="daterangepicker_input">' + - '<input class="input-mini form-control" type="text" name="daterangepicker_start" value="" />' + - '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' + - '<div class="calendar-time">' + - '<div></div>' + - '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' + - '</div>' + - '</div>' + - '<div class="calendar-table"></div>' + - '</div>' + - '<div class="calendar right">' + - '<div class="daterangepicker_input">' + - '<input class="input-mini form-control" type="text" name="daterangepicker_end" value="" />' + - '<i class="fa fa-calendar glyphicon glyphicon-calendar"></i>' + - '<div class="calendar-time">' + - '<div></div>' + - '<i class="fa fa-clock-o glyphicon glyphicon-time"></i>' + - '</div>' + - '</div>' + - '<div class="calendar-table"></div>' + - '</div>' + - '<div class="ranges">' + - '<div class="range_inputs">' + - '<button class="applyBtn" disabled="disabled" type="button"></button> ' + - '<button class="cancelBtn" type="button"></button>' + - '</div>' + - '</div>' + - '</div>'; - - this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl); - this.container = $(options.template).appendTo(this.parentEl); - - // - // handle all the possible options overriding defaults - // - - if (typeof options.locale === 'object') { - - if (typeof options.locale.direction === 'string') - this.locale.direction = options.locale.direction; - - if (typeof options.locale.format === 'string') - this.locale.format = options.locale.format; - - if (typeof options.locale.separator === 'string') - this.locale.separator = options.locale.separator; - - if (typeof options.locale.daysOfWeek === 'object') - this.locale.daysOfWeek = options.locale.daysOfWeek.slice(); - - if (typeof options.locale.monthNames === 'object') - this.locale.monthNames = options.locale.monthNames.slice(); - - if (typeof options.locale.firstDay === 'number') - this.locale.firstDay = options.locale.firstDay; - - if (typeof options.locale.applyLabel === 'string') - this.locale.applyLabel = options.locale.applyLabel; - - if (typeof options.locale.cancelLabel === 'string') - this.locale.cancelLabel = options.locale.cancelLabel; - - if (typeof options.locale.weekLabel === 'string') - this.locale.weekLabel = options.locale.weekLabel; - - if (typeof options.locale.customRangeLabel === 'string'){ - //Support unicode chars in the custom range name. - var elem = document.createElement('textarea'); - elem.innerHTML = options.locale.customRangeLabel; - var rangeHtml = elem.value; - this.locale.customRangeLabel = rangeHtml; - } - } - this.container.addClass(this.locale.direction); - - if (typeof options.startDate === 'string') - this.startDate = moment(options.startDate, this.locale.format); - - if (typeof options.endDate === 'string') - this.endDate = moment(options.endDate, this.locale.format); - - if (typeof options.minDate === 'string') - this.minDate = moment(options.minDate, this.locale.format); - - if (typeof options.maxDate === 'string') - this.maxDate = moment(options.maxDate, this.locale.format); - - if (typeof options.startDate === 'object') - this.startDate = moment(options.startDate); - - if (typeof options.endDate === 'object') - this.endDate = moment(options.endDate); - - if (typeof options.minDate === 'object') - this.minDate = moment(options.minDate); - - if (typeof options.maxDate === 'object') - this.maxDate = moment(options.maxDate); - - // sanity check for bad options - if (this.minDate && this.startDate.isBefore(this.minDate)) - this.startDate = this.minDate.clone(); - - // sanity check for bad options - if (this.maxDate && this.endDate.isAfter(this.maxDate)) - this.endDate = this.maxDate.clone(); - - if (typeof options.applyClass === 'string') - this.applyClass = options.applyClass; - - if (typeof options.cancelClass === 'string') - this.cancelClass = options.cancelClass; - - if (typeof options.dateLimit === 'object') - this.dateLimit = options.dateLimit; - - if (typeof options.opens === 'string') - this.opens = options.opens; - - if (typeof options.drops === 'string') - this.drops = options.drops; - - if (typeof options.showWeekNumbers === 'boolean') - this.showWeekNumbers = options.showWeekNumbers; - - if (typeof options.showISOWeekNumbers === 'boolean') - this.showISOWeekNumbers = options.showISOWeekNumbers; - - if (typeof options.buttonClasses === 'string') - this.buttonClasses = options.buttonClasses; - - if (typeof options.buttonClasses === 'object') - this.buttonClasses = options.buttonClasses.join(' '); - - if (typeof options.showDropdowns === 'boolean') - this.showDropdowns = options.showDropdowns; - - if (typeof options.showCustomRangeLabel === 'boolean') - this.showCustomRangeLabel = options.showCustomRangeLabel; - - if (typeof options.singleDatePicker === 'boolean') { - this.singleDatePicker = options.singleDatePicker; - if (this.singleDatePicker) - this.endDate = this.startDate.clone(); - } - - if (typeof options.timePicker === 'boolean') - this.timePicker = options.timePicker; - - if (typeof options.timePickerSeconds === 'boolean') - this.timePickerSeconds = options.timePickerSeconds; - - if (typeof options.timePickerIncrement === 'number') - this.timePickerIncrement = options.timePickerIncrement; - - if (typeof options.timePicker24Hour === 'boolean') - this.timePicker24Hour = options.timePicker24Hour; - - if (typeof options.autoApply === 'boolean') - this.autoApply = options.autoApply; - - if (typeof options.autoUpdateInput === 'boolean') - this.autoUpdateInput = options.autoUpdateInput; - - if (typeof options.linkedCalendars === 'boolean') - this.linkedCalendars = options.linkedCalendars; - - if (typeof options.isInvalidDate === 'function') - this.isInvalidDate = options.isInvalidDate; - - if (typeof options.isCustomDate === 'function') - this.isCustomDate = options.isCustomDate; + * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill + * v1.5.2 + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + * + * Date: 2016-11-23 + */ +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r<e.length;++r){if(i=s[e[r]]||o(e[r]),!i)throw"module definition dependecy not found: "+e[r];n.push(i)}t.apply(null,n)}function n(e,n,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(n===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";i(n,function(){s[e]=r.apply(null,arguments)})}function r(e){return!!s[e]}function o(t){for(var i=e,n=t.split(/[.\/]/),r=0;r<n.length;++r){if(!i[n[r]])return;i=i[n[r]]}return i}function a(i){for(var n=0;n<i.length;n++){for(var r=e,o=i[n],a=o.split(/[.\/]/),u=0;u<a.length-1;++u)r[a[u]]===t&&(r[a[u]]={}),r=r[a[u]];r[a[a.length-1]]=s[o]}}var s={};n("moxie/core/utils/Basic",[],function(){function e(e){var t;return e===t?"undefined":null===e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()}function t(){return a(!1,!1,arguments)}function i(){return a(!0,!1,arguments)}function n(){return a(!1,!0,arguments)}function r(){return a(!0,!0,arguments)}function o(i){switch(e(i)){case"array":return Array.prototype.slice.call(i);case"object":return t({},i)}return i}function a(t,i,n){var r,s=n[0];return u(n,function(n,c){c>0&&u(n,function(n,u){var c=-1!==m(e(n),["array","object"]);return n===r||t&&s[u]===r?!0:(c&&i&&(n=o(n)),e(s[u])===e(n)&&c?a(t,i,[s[u],n]):s[u]=n,void 0)})}),s}function s(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__parent__=t.prototype,e}function u(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function c(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function l(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++r<o&&!e?n(r):i(e)})}var r=0,o=t.length;"function"!==e(i)&&(i=function(){}),t&&t.length||i(),n(r)}function d(e,t){var i=0,n=e.length,r=new Array(n);u(e,function(e,o){e(function(e){if(e)return t(e);var a=[].slice.call(arguments);a.shift(),r[o]=a,i++,i===n&&(r.unshift(null),t.apply(this,r))})})}function m(e,t){if(t){if(Array.prototype.indexOf)return Array.prototype.indexOf.call(t,e);for(var i=0,n=t.length;n>i;i++)if(t[i]===e)return i}return-1}function h(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===m(t[r],i)&&n.push(t[r]);return n.length?n:!1}function f(e,t){var i=[];return u(e,function(e){-1!==m(e,t)&&i.push(e)}),i.length?i:null}function p(e){var t,i=[];for(t=0;t<e.length;t++)i[t]=e[t];return i}function g(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e}function x(e){if("string"!=typeof e)return e;var t,i={t:1099511627776,g:1073741824,m:1048576,k:1024};return e=/^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g,"")),t=e[2],e=+e[1],i.hasOwnProperty(t)&&(e*=i[t]),Math.floor(e)}function v(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e(t)?t:""})}function y(e,t){var i=this;setTimeout(function(){e.call(i)},t||1)}var w=function(){var e=0;return function(t){var i,n=(new Date).getTime().toString(32);for(i=0;5>i;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:w,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,inherit:s,each:u,isEmptyObj:c,inSeries:l,inParallel:d,inArray:m,arrayDiff:h,arrayIntersect:f,toArray:p,trim:g,sprintf:v,parseSizeStr:x,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m<e.length);return f=p.join(""),i?t(f):f},n=function(t,i){if(i&&(t=e(t)),"function"==typeof window.btoa)return window.btoa(t);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!t)return t;do n=t.charCodeAt(m++),r=t.charCodeAt(m++),o=t.charCodeAt(m++),l=n<<16|r<<8|o,a=63&l>>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(m<t.length);f=p.join("");var g=t.length%3;return(g?f.slice(0,g-3):f)+"===".slice(g||3)};return{utf8_encode:e,utf8_decode:t,atob:i,btoa:n}}),n("moxie/core/utils/Env",["moxie/core/utils/Basic"],function(e){function t(e,t,i){var n=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),n=0;r>n;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]<t[n]){o=-1;break}if(e[n]>t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var i=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d<m.length;d+=2){var h=m[d],f=m[d+1];if(typeof t===r){t={};for(s in f)u=f[s],typeof u===o?t[u[0]]=e:t[u]=e}for(i=a=0;i<h.length;i++)if(c=h[i].exec(this.getUA())){for(s=0;s<f.length;s++)l=c[++a],u=f[s],typeof u===o&&u.length>0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a<n[r].length;a++)if(u.has(n[r][a],t))return r===i?e:r}else if(u.has(n[r],t))return r===i?e:r;return t}},l={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",RT:"ARM"}}}},d={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],[a,s],[/\s(opr)\/([\w\.]+)/i],[[a,"Opera"],s],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i],[a,s],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[[a,"IE"],s],[/(edge)\/((\d+)?[\w\.]+)/i],[a,s],[/(yabrowser)\/([\w\.]+)/i],[[a,"Yandex"],s],[/(comodo_dragon)\/([\w\.]+)/i],[[a,/_/g," "],s],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i,/(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i],[a,s],[/(dolfin)\/([\w\.]+)/i],[[a,"Dolphin"],s],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[[a,"Chrome"],s],[/XiaoMi\/MiuiBrowser\/([\w\.]+)/i],[s,[a,"MIUI Browser"]],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i],[s,[a,"Android Browser"]],[/FBAV\/([\w\.]+);/i],[s,[a,"Facebook"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],[s,[a,"Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],[s,a],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[a,[s,c.str,l.browser.oldsafari.version]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],[a,s],[/(navigator|netscape)\/([\w\.-]+)/i],[[a,"Netscape"],s],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]+)*/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[a,s]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[s,[a,"EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[a,s],[/rv\:([\w\.]+).*(gecko)/i],[s,a]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[a,s],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[a,[s,c.str,l.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[a,"Windows"],[s,c.str,l.os.windows.version]],[/\((bb)(10);/i],[[a,"BlackBerry"],s],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],[a,s],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[a,"Symbian"],s],[/\((series40);/i],[a],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[a,"Firefox OS"],s],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[a,s],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[a,"Chromium OS"],s],[/(sunos)\s?([\w\.]+\d)*/i],[[a,"Solaris"],s],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[a,s],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[a,"iOS"],[s,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,/(macintosh|mac(?=_powerpc)\s)/i],[[a,"Mac OS"],[s,/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i,/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]+)*/i],[a,s]]},m=function(e){var i=e||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:t);this.getBrowser=function(){return c.rgx.apply(this,d.browser)},this.getEngine=function(){return c.rgx.apply(this,d.engine)},this.getOS=function(){return c.rgx.apply(this,d.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS()}},this.getUA=function(){return i},this.setUA=function(e){return i=e,this},this.setUA(i)};return m}(),n=function(){var t={define_property:function(){return!1}(),create_canvas:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))}(),return_response_type:function(t){try{if(-1!==e.inArray(t,["","text","document"]))return!0;if(window.XMLHttpRequest){var i=new XMLHttpRequest;if(i.open("get","/"),"responseType"in i)return i.responseType=t,i.responseType!==t?!1:!0}}catch(n){}return!1},use_data_uri:function(){var e=new Image;return e.onload=function(){t.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return t.use_data_uri&&("IE"!==o.browser||o.version>=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r=(new i).getResult(),o={can:n,uaParser:i,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;t<r.length;t+=2){for(n=r[t+1].split(/ /),i=0;i<n.length;i++)this.mimes[n[i]]=r[t];this.extensions[r[t]]=n}},extList2mimes:function(t,i){var n,r,o,a,s=this,u=[];for(r=0;r<t.length;r++)for(n=t[r].extensions.split(/\s*,\s*/),o=0;o<n.length;o++){if("*"===n[o])return[];if(a=s.mimes[n[o]],a&&-1===e.inArray(a,u)&&u.push(a),i&&/^\w+$/.test(n[o]))u.push("."+n[o]);else if(!a)return[]}return u},mimes2exts:function(t){var i=this,n=[];return e.each(t,function(t){if("*"===t)return n=[],!1;var r=t.match(/^(\w+)\/(\*|\w+)$/);r&&("*"===r[2]?e.each(i.extensions,function(e,t){new RegExp("^"+r[1]+"/").test(t)&&[].push.apply(n,i.extensions[t])}):i.extensions[t]&&[].push.apply(n,i.extensions[t]))}),n},mimes2extList:function(i){var n=[],r=[];return"string"===e.typeOf(i)&&(i=e.trim(i).split(/\s*,\s*/)),r=this.mimes2exts(i),n.push({title:t.translate("Files"),extensions:r.length?r.join(","):"*"}),n.mimes=i,n},getFileExtension:function(e){var t=e&&e.match(/\.([^.]+)$/);return t?t[1].toLowerCase():""},getFileMime:function(e){return this.mimes[this.getFileExtension(e)]||""}};return n.addMimeType(i),n}),n("moxie/file/FileInput",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/I18n","moxie/runtime/Runtime","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o,a,s,u){function c(t){var o,c,d;if(-1!==e.inArray(e.typeOf(t),["string","node"])&&(t={browse_button:t}),c=n.get(t.browse_button),!c)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);d={accept:[{title:a.translate("All Files"),extensions:"*"}],multiple:!1,required_caps:!1,container:c.parentNode||document.body},t=e.extend({},d,t),"string"==typeof t.required_caps&&(t.required_caps=s.parseCaps(t.required_caps)),"string"==typeof t.accept&&(t.accept=i.mimes2extList(t.accept)),o=n.get(t.container),o||(o=document.body),"static"===n.getStyle(o,"position")&&(o.style.position="relative"),o=c=null,u.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){var i=this;i.bind("RuntimeInit",function(r,o){i.ruid=o.uid,i.shimid=o.shimid,i.bind("Ready",function(){i.trigger("Refresh")},999),i.bind("Refresh",function(){var i,r,a,s,u;a=n.get(t.browse_button),s=n.get(o.shimid),a&&(i=n.getPos(a,n.get(t.container)),r=n.getSize(a),u=parseInt(n.getStyle(a,"z-index"),10)||0,s&&e.extend(s.style,{top:i.y+"px",left:i.x+"px",width:r.w+"px",height:r.h+"px",zIndex:u+1})),s=a=null}),o.exec.call(i,"FileInput","init",t)}),i.connectRuntime(e.extend({},t,{required_caps:{select_file:!0}}))},getOption:function(e){return t[e]},setOption:function(e,n){if(t.hasOwnProperty(e)){var o=t[e];switch(e){case"accept":"string"==typeof n&&(n=i.mimes2extList(n));break;case"container":case"required_caps":throw new r.FileException(r.FileException.NO_MODIFICATION_ALLOWED_ERR)}t[e]=n,this.exec("FileInput","setOption",e,n),this.trigger("OptionChanged",e,n,o)}},disable:function(t){var i=this.getRuntime();i&&this.exec("FileInput","disable","undefined"===e.typeOf(t)?!0:t)},refresh:function(){this.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=o.instance,c}),n("moxie/file/File",["moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/file/Blob"],function(e,t,i){function n(n,r){r||(r={}),i.apply(this,arguments),this.type||(this.type=t.getFileMime(r.name));var o;if(r.name)o=r.name.replace(/\\/g,"/"),o=o.substr(o.lastIndexOf("/")+1);else if(this.type){var a=this.type.split("/")[0];o=e.guid((""!==a?a:"file")+"_"),t.extensions[this.type]&&(o+="."+t.extensions[this.type][0])}e.extend(this,{name:o||e.guid("file_"),relativePath:"",lastModifiedDate:r.lastModifiedDate||(new Date).toLocaleString()})}return n.prototype=i.prototype,n}),n("moxie/file/FileDrop",["moxie/core/I18n","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/core/utils/Env","moxie/file/File","moxie/runtime/RuntimeClient","moxie/core/EventTarget","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u){function c(i){var r,o=this;"string"==typeof i&&(i={drop_zone:i}),r={accept:[{title:e.translate("All Files"),extensions:"*"}],required_caps:{drag_and_drop:!0}},i="object"==typeof i?n.extend({},r,i):r,i.container=t.get(i.drop_zone)||document.body,"static"===t.getStyle(i.container,"position")&&(i.container.style.position="relative"),"string"==typeof i.accept&&(i.accept=u.mimes2extList(i.accept)),a.call(o),n.extend(o,{uid:n.guid("uid_"),ruid:null,files:null,init:function(){o.bind("RuntimeInit",function(e,t){o.ruid=t.uid,t.exec.call(o,"FileDrop","init",i),o.dispatchEvent("ready")}),o.connectRuntime(i)},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileDrop","destroy"),this.disconnectRuntime()),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","dragenter","dragleave","drop","error"];return c.prototype=s.instance,c}),n("moxie/file/FileReader",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/Exceptions","moxie/core/EventTarget","moxie/file/Blob","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o){function a(){function n(e,n){if(this.trigger("loadstart"),this.readyState===a.LOADING)return this.trigger("error",new i.DOMException(i.DOMException.INVALID_STATE_ERR)),this.trigger("loadend"),void 0; +if(!(n instanceof r))return this.trigger("error",new i.DOMException(i.DOMException.NOT_FOUND_ERR)),this.trigger("loadend"),void 0;if(this.result=null,this.readyState=a.LOADING,n.isDetached()){var o=n.getSource();switch(e){case"readAsText":case"readAsBinaryString":this.result=o;break;case"readAsDataURL":this.result="data:"+n.type+";base64,"+t.btoa(o)}this.readyState=a.DONE,this.trigger("load"),this.trigger("loadend")}else this.connectRuntime(n.ruid),this.exec("FileReader","read",e,n)}o.call(this),e.extend(this,{uid:e.guid("uid_"),readyState:a.EMPTY,result:null,error:null,readAsBinaryString:function(e){n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){n.call(this,"readAsDataURL",e)},readAsText:function(e){n.call(this,"readAsText",e)},abort:function(){this.result=null,-1===e.inArray(this.readyState,[a.EMPTY,a.DONE])&&(this.readyState===a.LOADING&&(this.readyState=a.DONE),this.exec("FileReader","abort"),this.trigger("abort"),this.trigger("loadend"))},destroy:function(){this.abort(),this.exec("FileReader","destroy"),this.disconnectRuntime(),this.unbindAll()}}),this.handleEventProps(s),this.bind("Error",function(e,t){this.readyState=a.DONE,this.error=t},999),this.bind("Load",function(){this.readyState=a.DONE},999)}var s=["loadstart","progress","load","abort","error","loadend"];return a.EMPTY=0,a.LOADING=1,a.DONE=2,a.prototype=n.instance,a}),n("moxie/core/utils/Url",[],function(){var e=function(t,i){for(var n=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],r=n.length,o={http:80,https:443},a={},s=/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,u=s.exec(t||"");r--;)u[r]&&(a[n[r]]=u[r]);if(!a.scheme){i&&"string"!=typeof i||(i=e(i||document.location.href)),a.scheme=i.scheme,a.host=i.host,a.port=i.port;var c="";/^[^\/]/.test(a.path)&&(c=i.path,c=/\/[^\/]*\.[^\/]*$/.test(c)?c.replace(/\/[^\/]+$/,"/"):c.replace(/\/?$/,"/")),a.path=c+(a.path||"")}return a.port||(a.port=o[a.scheme]||80),a.port=parseInt(a.port,10),a.path||(a.path="/"),delete a.source,a},t=function(t){var i={http:80,https:443},n="object"==typeof t?t:e(t);return n.scheme+"://"+n.host+(n.port!==i[n.scheme]?":"+n.port:"")+n.path+(n.query?n.query:"")},i=function(t){function i(e){return[e.scheme,e.host,e.port].join("/")}return"string"==typeof t&&(t=e(t)),i(e())===i(t)};return{parseUrl:e,resolveUrl:t,hasSameOrigin:i}}),n("moxie/runtime/RuntimeTarget",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i){function n(){this.uid=e.guid("uid_"),t.call(this),this.destroy=function(){this.disconnectRuntime(),this.unbindAll()}}return n.prototype=i.instance,n}),n("moxie/file/FileReaderSync",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/utils/Encode"],function(e,t,i){return function(){function n(e,t){if(!t.isDetached()){var n=this.connectRuntime(t.ruid).exec.call(this,"FileReaderSync","read",e,t);return this.disconnectRuntime(),n}var r=t.getSource();switch(e){case"readAsBinaryString":return r;case"readAsDataURL":return"data:"+t.type+";base64,"+i.btoa(r);case"readAsText":for(var o="",a=0,s=r.length;s>a;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){R&&(R.destroy(),R=null),s.dispatchEvent("loadend"),s=null}function r(r){R.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),R.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),R.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),R.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(R,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(R,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(R,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),R.bind("Abort",function(e){s.dispatchEvent(e),n()}),R.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(R,"XMLHttpRequest","send",{url:x,method:v,async:T,user:y,password:w,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),R=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(R.connectRuntime(k)):(R.bind("RuntimeInit",function(e,t){r(t)}),R.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),R.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,y,w,E,b,R,_,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(y=u||l.user,w=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(_||(_={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),_[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),_.hasOwnProperty(t))?_[t].header+": "+_[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!R)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);R.getRuntime().exec.call(R,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){R&&("function"===e.typeOf(R.destroy)&&R.destroy(),R=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='<img src="'+d+'" width="'+o.width+'" height="'+o.height+'" />',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){d.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari","Edge"]))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=e.accept.mimes||o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='<input id="'+g.uid+'" type="file" style="font-size:999px;opacity:0;"'+(e.multiple&&g.can("select_multiple")?"multiple":"")+(e.directory&&g.can("select_folder")?"webkitdirectory directory":"")+(d?' accept="'+d.join(",")+'"':"")+" />",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n<e.length;n++)[].push.apply(t,e[n].extensions.split(/\s*,\s*/));return-1===i.inArray("*",t)?t:[]}function u(e){if(!g.length)return!0;var t=o.getFileExtension(e.name);return!t||-1!==i.inArray(t,g)}function c(e,t){var n=[];i.each(e,function(e){var t=e.webkitGetAsEntry();t&&(t.isFile?a(e.getAsFile(),t.fullPath):n.push(t))}),n.length?l(n,t):t()}function l(e,t){var n=[];i.each(e,function(e){n.push(function(t){d(e,t)})}),i.inSeries(n,function(){t()})}function d(e,t){e.isFile?e.file(function(i){a(i,e.fullPath),t()},function(){t()}):e.isDirectory?m(e,t):t()}function m(e,t){function i(e){r.readEntries(function(t){t.length?([].push.apply(n,t),i(e)):e()},e)}var n=[],r=e.createReader();i(function(){l(n,t)})}var h,f,p=[],g=[];i.extend(this,{init:function(t){var n,o=this;h=t,f=o.ruid,g=s(h.accept),n=h.container,r.addEvent(n,"dragover",function(t){e(t)&&(t.preventDefault(),t.dataTransfer.dropEffect="copy")},o.uid),r.addEvent(n,"drop",function(t){e(t)&&(t.preventDefault(),p=[],t.dataTransfer.items&&t.dataTransfer.items[0].webkitGetAsEntry?c(t.dataTransfer.items,function(){o.files=p,o.trigger("drop")}):(i.each(t.dataTransfer.files,function(e){a(e)}),o.files=p,o.trigger("drop")))},o.uid),r.addEvent(n,"dragenter",function(){o.trigger("dragenter")},o.uid),r.addEvent(n,"dragleave",function(){o.trigger("dragleave")},o.uid)},destroy:function(){r.removeAllEvents(h&&n.get(h.container),this.uid),f=p=g=h=null}})}return e.FileDrop=a}),n("moxie/runtime/html5/file/FileReader",["moxie/runtime/html5/Runtime","moxie/core/utils/Encode","moxie/core/utils/Basic"],function(e,t,i){function n(){function e(e){return t.atob(e.substring(e.indexOf("base64,")+7))}var n,r=!1;i.extend(this,{read:function(t,o){var a=this;a.result="",n=new window.FileReader,n.addEventListener("progress",function(e){a.trigger(e)}),n.addEventListener("load",function(t){a.result=r?e(n.result):n.result,a.trigger(t)}),n.addEventListener("error",function(e){a.trigger(e,n.error)}),n.addEventListener("loadend",function(e){n=null,a.trigger(e)}),"function"===i.typeOf(n[t])?(r=!1,n[t](o.getSource())):"readAsBinaryString"===t&&(r=!0,n.readAsDataURL(o.getSource()))},abort:function(){n&&n.abort()},destroy:function(){n=null}})}return e.FileReader=n}),n("moxie/runtime/html5/xhr/XMLHttpRequest",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/core/utils/Url","moxie/file/File","moxie/file/Blob","moxie/xhr/FormData","moxie/core/Exceptions","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(e,t){var i,n,r=this;i=t.getBlob().getSource(),n=new window.FileReader,n.onload=function(){t.append(t.getBlobName(),new o(null,{type:i.type,data:n.result})),f.send.call(r,e,t)},n.readAsBinaryString(i)}function c(){return!window.XMLHttpRequest||"IE"===u.browser&&u.verComp(u.version,8,"<")?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(i){}}():new window.XMLHttpRequest}function l(e){var t=e.responseXML,i=e.responseText;return"IE"===u.browser&&i&&t&&!t.documentElement&&/[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type"))&&(t=new window.ActiveXObject("Microsoft.XMLDOM"),t.async=!1,t.validateOnParse=!1,t.loadXML(i)),t&&("IE"===u.browser&&0!==t.parseError||!t.documentElement||"parsererror"===t.documentElement.tagName)?null:t}function d(e){var t="----moxieboundary"+(new Date).getTime(),i="--",n="\r\n",r="",a=this.getRuntime();if(!a.can("send_binary_string"))throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);return m.setRequestHeader("Content-Type","multipart/form-data; boundary="+t),e.each(function(e,a){r+=e instanceof o?i+t+n+'Content-Disposition: form-data; name="'+a+'"; filename="'+unescape(encodeURIComponent(e.name||"blob"))+'"'+n+"Content-Type: "+(e.type||"application/octet-stream")+n+n+e.getSource()+n:i+t+n+'Content-Disposition: form-data; name="'+a+'"'+n+n+unescape(encodeURIComponent(e))+n}),r+=i+t+i+n}var m,h,f=this;t.extend(this,{send:function(i,r){var s=this,l="Mozilla"===u.browser&&u.verComp(u.version,4,">=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource(); +else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){},0===m.status?s.trigger("error"):s.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t<r.length;t++)e[t]=255&r.charCodeAt(t);m.send(e.buffer)}():m.send(r),s.trigger("loadstart")},getStatus:function(){try{if(m)return m.status}catch(e){}return 0},getResponse:function(e){var t=this.getRuntime();try{switch(e){case"blob":var n=new r(t.uid,m.response),o=m.getResponseHeader("Content-Disposition");if(o){var a=o.match(/filename=([\'\"'])([^\1]+)\1/);a&&(h=a[2])}return n.name=h,n.type||(n.type=i.getFileMime(h)),n;case"json":return u.can("return_response_type","json")?m.response:200===m.status&&window.JSON?JSON.parse(m.responseText):null;case"document":return l(m);default:return""!==m.responseText?m.responseText:null}}catch(s){return null}},getAllResponseHeaders:function(){try{return m.getAllResponseHeaders()}catch(e){}return""},abort:function(){m&&m.abort()},destroy:function(){f=h=null}})}return e.XMLHttpRequest=c}),n("moxie/runtime/html5/utils/BinaryReader",["moxie/core/utils/Basic"],function(e){function t(e){e instanceof ArrayBuffer?i.apply(this,arguments):n.apply(this,arguments)}function i(t){var i=new DataView(t);e.extend(this,{readByteAt:function(e){return i.getUint8(e)},writeByteAt:function(e,t){i.setUint8(e,t)},SEGMENT:function(e,n,r){switch(arguments.length){case 2:return t.slice(e,e+n);case 1:return t.slice(e);case 3:if(null===r&&(r=new ArrayBuffer),r instanceof ArrayBuffer){var o=new Uint8Array(this.length()-n+r.byteLength);e>0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<<Math.abs(n+8*r);return i},write:function(e,t,i){var n,r;if(e>this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},y={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=y[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n<t.ExifVersion.length;n++)r+=String.fromCharCode(t.ExifVersion[n]);t.ExifVersion=r}}return t},GPS:function(){var t=null;if(d.gpsIFD){try{t=a.call(this,d.gpsIFD,c.gps)}catch(i){return null}t.GPSVersionID&&"array"===e.typeOf(t.GPSVersionID)&&(t.GPSVersionID=t.GPSVersionID.join("."))}return t},thumb:function(){if(d.IFD1)try{var e=a.call(this,d.IFD1,c.thumb);if("JPEGInterchangeFormat"in e)return this.SEGMENT(d.tiffHeader+e.JPEGInterchangeFormat,e.JPEGInterchangeFormatLength)}catch(t){}return null},setExif:function(e,t){return"PixelXDimension"!==e&&"PixelYDimension"!==e?!1:s.call(this,"exif",e,t)},clear:function(){u.clear(),o=c=l=h=d=u=null}}),65505!==this.SHORT(0)||"EXIF\0"!==this.STRING(4,5).toUpperCase())throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(this.littleEndian=18761==this.SHORT(m),42!==this.SHORT(m+=2))throw new n.ImageError(n.ImageError.INVALID_META_ERR);d.IFD0=d.tiffHeader+this.LONG(m+=2),h=a.call(this,d.IFD0,c.tiff),"ExifIFDPointer"in h&&(d.exifIFD=d.tiffHeader+h.ExifIFDPointer,delete h.ExifIFDPointer),"GPSInfoIFDPointer"in h&&(d.gpsIFD=d.tiffHeader+h.GPSInfoIFDPointer,delete h.GPSInfoIFDPointer),e.isEmptyObj(h)&&(h=null);var f=this.LONG(d.IFD0+12*this.SHORT(d.IFD0)+2);f&&(d.IFD1=d.tiffHeader+f)}return r.prototype=i.prototype,r}),n("moxie/runtime/html5/image/JPEG",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEGHeaders","moxie/runtime/html5/utils/BinaryReader","moxie/runtime/html5/image/ExifParser"],function(e,t,i,n,r){function o(o){function a(e){var t,i,n=0;for(e||(e=c);n<=e.length();){if(t=e.SHORT(n+=2),t>=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;i<n.length;i++,t+=2)if(n[i]!=s.SHORT(t))throw new e.ImageError(e.ImageError.WRONG_FORMAT)}(),l=r.call(this),t.extend(this,{type:"image/png",size:s.length(),width:l.width,height:l.height,purge:function(){o.call(this)}}),o.call(this)}return n}),n("moxie/runtime/html5/image/ImageInfo",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEG","moxie/runtime/html5/image/PNG"],function(e,t,i,n){return function(r){var o,a=[i,n];o=function(){for(var e=0;e<a.length;e++)try{return new a[e](r)}catch(i){}throw new t.ImageError(t.ImageError.WRONG_FORMAT)}(),e.extend(this,{type:"",size:0,width:0,height:0,setExif:function(){},writeHeaders:function(e){return e},stripHeaders:function(e){return e},purge:function(){r=null}}),e.extend(this,o),this.purge=function(){o.purge(),o=null}}}),n("moxie/runtime/html5/image/ResizerCanvas",[],function(){function e(i,n){var r=i.width,o=Math.floor(r*n),a=!1;(.5>n||n>2)&&(n=.5>n?.5:2,a=!0);var s=t(i,n);return a?e(s,o/s.width):s}function t(e,t){var i=e.width,n=e.height,r=Math.floor(i*t),o=Math.floor(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!v&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return v||g}function c(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(v=document.createElement("canvas"),v.width=t.width,v.height=t.height,v.getContext("2d").drawImage(t,0,0),v)}function l(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function m(e){var t=this;g=new Image,g.onerror=function(){p.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,w.type)}function h(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t(e.getAsDataURL())}function f(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function p(){x&&(x.purge(),x=null),y=g=v=w=null,b=!1}var g,x,v,y,w,E=this,b=!1,R=!0;t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return w=e,e.isDetached()?(y=e.getSource(),m.call(this,y),void 0):(h.call(this,e.getSource(),function(e){r&&(y=l(e)),m.call(t,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,w=new o(null,{name:e.name,size:e.size,type:e.type}),m.call(this,t?y=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!x&&y&&i.can("access_image_binary")&&(x=new a(y)),t={width:e().width||0,height:e().height||0,type:w.type||u.getFileMime(w.name),size:y&&y.length||w.size||0,name:w.name||"",meta:null},R&&(t.meta=x&&x.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),v=s.scale(r,i),R=n.preserveHeaders,!R){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;v=f(v,o)}this.width=v.width,this.height=v.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return v||(v=c()),v.id=this.uid+"_canvas",v},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:w.name||"",type:e,data:E.getAsDataURL(e,t)})):new o(null,{name:w.name||"",type:e,data:E.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(c(),"image/jpeg"!==e)return v.toDataURL("image/png");try{return v.toDataURL("image/jpeg",t/100)}catch(i){return v.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return y||(y=l(E.getAsDataURL(e,t))),y;if("image/jpeg"!==e)y=l(E.getAsDataURL(e,t));else{var i;t||(t=90),c();try{i=v.toDataURL("image/jpeg",t/100)}catch(n){i=v.toDataURL("image/jpeg")}y=l(i),x&&(y=x.stripHeaders(y),R&&(x.meta&&x.meta.exif&&x.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),y=x.writeHeaders(y)),x.purge(),x=null)}return b=!1,y},destroy:function(){E=null,p.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i='<object id="'+this.uid+'" type="application/x-shockwave-flash" data="'+u.swf_url+'" ',"IE"===t.browser&&(i+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '),i+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+u.swf_url+'" />'+'<param name="flashvars" value="uid='+escape(this.uid)+"&target="+t.global_event_dispatcher+'" />'+'<param name="wmode" value="transparent" />'+'<param name="allowscriptaccess" value="always" />'+"</object>","IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){var n={init:function(e){var n=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(n,"FileInput","getFiles");n.files=[],i.each(e,function(e){n.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=n}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof n||(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u<n.length&&r===o);o>=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='<object id="'+this.uid+'" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;">'+'<param name="source" value="'+s.xap_url+'"/>'+'<param name="background" value="Transparent"/>'+'<param name="windowless" value="true"/>'+'<param name="enablehtmlaccess" value="true"/>'+'<param name="initParams" value="uid='+this.uid+",target="+t.global_event_dispatcher+'"/>'+"</object>",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){function n(e){for(var t="",i=0;i<e.length;i++)t+=(""!==t?"|":"")+e[i].title+" | *."+e[i].extensions.replace(/,/g,";*.");return t}var r={init:function(e){var r=this,o=this.getRuntime();this.bind("Change",function(){var e=o.shimExec.call(r,"FileInput","getFiles");r.files=[],i.each(e,function(e){r.files.push(new t(o.uid,e))})},999),o.shimExec.call(this,"FileInput","init",n(e.accept),e.multiple),this.trigger("ready")},setOption:function(e,t){"accept"==e&&(t=n(t)),this.getRuntime().shimExec.call(this,"FileInput","setOption",e,t)}};return e.FileInput=r}),n("moxie/runtime/silverlight/file/FileDrop",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Dom","moxie/core/utils/Events"],function(e,t,i){var n={init:function(){var e,n=this,r=n.getRuntime();return e=r.getShimContainer(),i.addEvent(e,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},n.uid),i.addEvent(e,"dragenter",function(e){e.preventDefault();var i=t.get(r.uid).dragEnter(e);i&&e.stopPropagation()},n.uid),i.addEvent(e,"drop",function(e){e.preventDefault();var i=t.get(r.uid).dragDrop(e);i&&e.stopPropagation()},n.uid),r.shimExec.call(this,"FileDrop","init")}};return e.FileDrop=n}),n("moxie/runtime/silverlight/file/FileReader",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReader"],function(e,t,i){return e.FileReader=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileReaderSync",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReaderSync"],function(e,t,i){return e.FileReaderSync=t.extend({},i) +}),n("moxie/runtime/silverlight/runtime/Transporter",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/runtime/Transporter"],function(e,t,i){return e.Transporter=t.extend({},i)}),n("moxie/runtime/silverlight/xhr/XMLHttpRequest",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/xhr/XMLHttpRequest","moxie/runtime/silverlight/file/FileReaderSync","moxie/runtime/silverlight/runtime/Transporter"],function(e,t,i){return e.XMLHttpRequest=t.extend({},i)}),n("moxie/runtime/silverlight/image/Image",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/runtime/flash/image/Image"],function(e,t,i,n){return e.Image=t.extend({},n,{getInfo:function(){var e=this.getRuntime(),n=["tiff","exif","gps","thumb"],r={meta:{}},o=e.shimExec.call(this,"Image","getInfo");return o.meta&&(t.each(n,function(e){var t,i,n,a,s=o.meta[e];if(s&&s.keys)for(r.meta[e]={},i=0,n=s.keys.length;n>i;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),!r.meta||!r.meta.thumb||r.meta.thumb.data instanceof i||(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&i.extend(d.style,{top:"100%"})),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;if(this.value){if(this.files){if(i=this.files[0],0===i.size)return m.parentNode.removeChild(m),void 0}else i={name:this.value};i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null}},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=t.accept.mimes||o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=y.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='<iframe id="'+f+'_iframe" name="'+f+'_iframe" src="javascript:""" style="display:none"></iframe>',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,y=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),y.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*<pre[^>]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)}); +define("../libs/plupload/js/moxie.min", function(){}); - if (typeof options.alwaysShowCalendars === 'boolean') - this.alwaysShowCalendars = options.alwaysShowCalendars; +/** + * Plupload - multi-runtime File Uploader + * v2.2.1 + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + * + * Date: 2016-11-23 + */ +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart||(n.send_binary_string=!0),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.2.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t<i.length;t+=2)e=e.replace(i[t],i[t+1]);return e=e.replace(/\s+/g,"_"),e=e.replace(/[^a-z0-9_\-\.]+/gi,"")},buildUrl:function(e,t){var i="";return l.each(t,function(e,t){i+=(i?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(e)}),i&&(e+=(e.indexOf("?")>0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t<T.length;t++)e||T[t].status!=l.QUEUED?i++:(e=T[t],this.trigger("BeforeUpload",e)&&(e.status=l.UPLOADING,this.trigger("UploadFile",e)));i==T.length&&(this.state!==l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged")),this.trigger("UploadComplete",T))}}function u(e){e.percent=e.size>0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t;for(w.reset(),e=0;e<T.length;e++)t=T[e],t.size!==i?(w.size+=t.origSize,w.loaded+=t.loaded*t.origSize/t.size):w.size=i,t.status==l.DONE?w.uploaded++:t.status==l.FAILED?w.failed++:w.queued++;w.size===i?w.percent=T.length>0?Math.ceil(100*(w.uploaded/T.length)):0:(w.bytesPerSec=Math.ceil(w.loaded/((+new Date-S||1)/1e3)),w.percent=w.size>0?Math.ceil(100*(w.loaded/w.size)):0)}function c(){var e=A[0]||P[0];return e?e.getRuntime().uid:!1}function f(e,t){if(e.ruid){var i=o.getInfo(e.ruid);if(i)return i.can(t)}return!1}function p(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",y),this.bind("BeforeUpload",m),this.bind("UploadFile",E),this.bind("UploadProgress",v),this.bind("StateChanged",b),this.bind("QueueChanged",d),this.bind("Error",z),this.bind("FileUploaded",R),this.bind("Destroy",O)}function g(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:F,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,A.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){U||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,P.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function h(e,n,r){var s=new t.image.Image;try{s.onload=function(){return n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),r(e)):(s.downsize(n.width,n.height,n.crop,n.preserve_headers),void 0)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(a){r(e)}}function _(e,i,r){function s(e,i,n){var r=I[e];switch(e){case"max_file_size":"max_file_size"===e&&(I.max_file_size=I.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(I[e]=i,I.send_file_name=!0);break;case"multipart":I[e]=i,i||(I.send_file_name=!0);break;case"unique_names":I[e]=i,i&&(I.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(I.filters,i):I.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),I.filters.mime_types=i.mime_types);break;case"resize":I.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":I.prevent_duplicates=I.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":I[e]=i,n||(u=!0);break;default:I[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(I.required_features=n(l.extend({},I)),F=n(l.extend({},I,{required_features:!0}))):u&&(a.trigger("Destroy"),g.call(a,I,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function m(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function E(e,i){function n(){d-->0?r(s,1e3):(i.loaded=p,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}))}function s(){var f,g,h,_={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(_.name=i.target_name||i.name),u&&c.chunks&&a.size>u?(h=Math.min(u,a.size-p),f=a.slice(p,p+h)):(h=a.size,f=a),u&&c.chunks&&(e.settings.send_chunk_number?(_.chunk=Math.ceil(p/u),_.chunks=Math.ceil(a.size/u)):(_.offset=p,_.total=a.size)),D=new t.xhr.XMLHttpRequest,D.upload&&(D.upload.onprogress=function(t){i.loaded=Math.min(i.size,p+t.loaded),e.trigger("UploadProgress",i)}),D.onload=function(){return D.status>=400?(n(),void 0):(d=e.settings.max_retries,h<a.size?(f.destroy(),p+=h,i.loaded=Math.min(p,a.size),e.trigger("ChunkUploaded",i,{offset:i.loaded,total:a.size,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}),"Android Browser"===l.ua.browser&&e.trigger("UploadProgress",i)):i.loaded=i.size,f=g=null,!p||p>=a.size?(i.size!=i.origSize&&(a.destroy(),a=null),e.trigger("UploadProgress",i),i.status=l.DONE,e.trigger("FileUploaded",i,{response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()})):r(s,1),void 0)},D.onerror=function(){n()},D.onloadend=function(){this.destroy(),D=null},e.settings.multipart&&c.multipart?(D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),g=new t.xhr.FormData,l.each(l.extend(_,e.settings.multipart_params),function(e,t){g.append(t,e)}),g.append(e.settings.file_data_name,f),D.send(g,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(o=l.buildUrl(e.settings.url,l.extend(_,e.settings.multipart_params)),D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),D.hasRequestHeader("Content-Type")||D.setRequestHeader("Content-Type","application/octet-stream"),D.send(f,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})))}var a,o=e.settings.url,u=e.settings.chunk_size,d=e.settings.max_retries,c=e.features,p=0;i.loaded&&(p=i.loaded=u?u*Math.floor(i.loaded/u):0),a=i.getSource(),!l.isEmptyObj(e.settings.resize)&&f(a,"send_binary_string")&&-1!==l.inArray(a.type,["image/jpeg","image/png"])?h.call(this,a,e.settings.resize,function(e){a=e,i.size=e.size,s()}):s()}function v(e,t){u(t)}function b(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function y(){D&&D.abort()}function R(e){d(),r(function(){a.call(e)},1)}function z(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function O(e){e.stop(),l.each(T,function(e){e.destroy()}),T=[],A.length&&(l.each(A,function(e){e.destroy()}),A=[]),P.length&&(l.each(P,function(e){e.destroy()}),P=[]),F={},U=!1,S=D=null,w.reset()}var I,S,w,D,x=l.guid(),T=[],F={},A=[],P=[],U=!1;I={runtimes:o.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:!1,send_file_name:!0,send_chunk_number:!0},_.call(this,e,null,!0),w=new l.QueueProgress,l.extend(this,{id:x,uid:x,state:l.STOPPED,features:{},runtime:null,files:T,settings:I,total:w,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),p.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):I.browse_button||I.drop_element?(g.call(i,I,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){_.call(this,e,t,!this.runtime)},getOption:function(e){return e?I[e]:I},refresh:function(){A.length&&l.each(A,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){U=arguments[0]!==i?arguments[0]:!0,A.length&&l.each(A,function(e){e.disable(U)}),this.trigger("DisableBrowse",U)},getFile:function(e){var t;for(t=T.length-1;t>=0;t--)if(T[t].id===e)return T[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(T.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=T.length-1;i>=0;i--)if(T[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=T.splice(e===i?0:e,t===i?T.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n<t.length;n++)if(t[n].fn.apply(t[n].scope,i)===!1)return!1}return!0},bind:function(e,t,i,n){l.Uploader.prototype.bind.call(this,e,t,n,i)},destroy:function(){this.trigger("Destroy"),I=w=null,this.unbindAll()}})},l.Uploader.prototype=t.core.EventTarget.instance,l.File=function(){function e(e){l.extend(this,{id:l.guid(),name:e.name||e.fileName,type:e.type||"",size:e.size||e.fileSize,origSize:e.size||e.fileSize,loaded:0,percent:0,status:l.QUEUED,lastModifiedDate:e.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return-1!==l.inArray(l.typeOf(e),["blob","file"])?e:null},getSource:function(){return t[this.id]?t[this.id]:null},destroy:function(){var e=this.getSource();e&&(e.destroy(),delete t[this.id])}}),t[this.id]=e}var t={};return e}(),l.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=l}(this,e)}); +define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, undefined, Plupload, Template) { + var Upload = { + list: {}, + config: { + container: document.body, + classname: '.plupload:not([initialized])', + previewtpl: '<li class="col-xs-3"><a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"><img src="<%=fullurl%>" class="img-responsive"></a><a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a></li>', + }, + events: { + //初始化完成 + onPostInit: function (up) { - // update day names order to firstDay - if (this.locale.firstDay != 0) { - var iterator = this.locale.firstDay; - while (iterator > 0) { - this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift()); - iterator--; - } - } + }, + //文件添加成功后 + onFileAdded: function (up, files) { + var button = up.settings.button; + $(button).data("bakup-html", $(button).html()); + var maxcount = $(button).data("maxcount"); + var input_id = $(button).data("input-id") ? $(button).data("input-id") : ""; + maxcount = typeof maxcount !== "undefined" ? maxcount : 0; + if (maxcount > 0 && input_id) { + var inputObj = $("#" + input_id); + if (inputObj.size() > 0) { + var value = $.trim(inputObj.val()); + var nums = value === '' ? 0 : value.split(/\,/).length; + var remains = maxcount - nums; + if (files.length > remains) { + for (var i = 0; i < files.length; i++) { + up.removeFile(files[i]); + } + Toastr.error(__('You can upload up to %d file%s', remains)); + return false; + } + } + } + //添加后立即上传 + setTimeout(function () { + up.start(); + }, 1); + }, + //上传进行中的回调 + onUploadProgress: function (up, file) { - var start, end, range; + }, + //上传之前的回调 + onBeforeUpload: function (up, file) { - //if no start/end dates set, check if an input element contains initial values - if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') { - if ($(this.element).is('input[type=text]')) { - var val = $(this.element).val(), - split = val.split(this.locale.separator); + }, + //上传成功的回调 + onUploadSuccess: function (up, ret) { + var button = up.settings.button; + var onUploadSuccess = up.settings.onUploadSuccess; + var data = typeof ret.data !== 'undefined' ? ret.data : null; + //上传成功后回调 + if (button) { + //如果有文本框则填充 + var input_id = $(button).data("input-id") ? $(button).data("input-id") : ""; + if (input_id) { + var urlArr = []; + var inputObj = $("#" + input_id); + if ($(button).data("multiple") && inputObj.val() !== "") { + urlArr.push(inputObj.val()); + } + urlArr.push(data.url); + inputObj.val(urlArr.join(",")).trigger("change"); + } + //如果有回调函数 + var onDomUploadSuccess = $(button).data("upload-success"); + if (onDomUploadSuccess) { + if (typeof onDomUploadSuccess !== 'function' && typeof Upload.api.custom[onDomUploadSuccess] === 'function') { + onDomUploadSuccess = Upload.api.custom[onDomUploadSuccess]; + } + if (typeof onDomUploadSuccess === 'function') { + var result = onDomUploadSuccess.call(button, data, ret); + if (result === false) + return; + } + } + } - start = end = null; + if (typeof onUploadSuccess === 'function') { + var result = onUploadSuccess.call(button, data, ret); + if (result === false) + return; + } + }, + //上传错误的回调 + onUploadError: function (up, ret) { + var button = up.settings.button; + var onUploadError = up.settings.onUploadError; + var data = typeof ret.data !== 'undefined' ? ret.data : null; + if (button) { + var onDomUploadError = $(button).data("upload-error"); + if (onDomUploadError) { + if (typeof onDomUploadError !== 'function' && typeof Upload.api.custom[onDomUploadError] === 'function') { + onDomUploadError = Upload.api.custom[onDomUploadError]; + } + if (typeof onDomUploadError === 'function') { + var result = onDomUploadError.call(button, data, ret); + if (result === false) + return; + } + } + } - if (split.length == 2) { - start = moment(split[0], this.locale.format); - end = moment(split[1], this.locale.format); - } else if (this.singleDatePicker && val !== "") { - start = moment(val, this.locale.format); - end = moment(val, this.locale.format); + if (typeof onUploadError === 'function') { + var result = onUploadError.call(button, data, ret); + if (result === false) { + return; + } } - if (start !== null && end !== null) { - this.setStartDate(start); - this.setEndDate(end); + Toastr.error(ret.msg + "(code:" + ret.code + ")"); + }, + //服务器响应数据后 + onUploadResponse: function (response) { + try { + var ret = typeof response === 'object' ? response : JSON.parse(response); + if (!ret.hasOwnProperty('code')) { + $.extend(ret, {code: -2, msg: response, data: null}); + } + } catch (e) { + var ret = {code: -1, msg: e.message, data: null}; + } + return ret; + }, + //上传全部结束后 + onUploadComplete: function (up, files) { + var button = up.settings.button; + var onUploadComplete = up.settings.onUploadComplete; + if (button) { + var onDomUploadComplete = $(button).data("upload-complete"); + if (onDomUploadComplete) { + if (typeof onDomUploadComplete !== 'function' && typeof Upload.api.custom[onDomUploadComplete] === 'function') { + onDomUploadComplete = Upload.api.custom[onDomUploadComplete]; + } + if (typeof onDomUploadComplete === 'function') { + var result = onDomUploadComplete.call(button, files); + if (result === false) + return; + } + } } - } - } - if (typeof options.ranges === 'object') { - for (range in options.ranges) { + if (typeof onUploadComplete === 'function') { + var result = onUploadComplete.call(button, files); + if (result === false) { + return; + } + } + } + }, + api: { + //Plupload上传 + plupload: function (element, onUploadSuccess, onUploadError, onUploadComplete) { + element = typeof element === 'undefined' ? Upload.config.classname : element; + $(element, Upload.config.container).each(function () { + if ($(this).attr("initialized")) { + return true; + } + $(this).attr("initialized", true); + var that = this; + var id = $(this).prop("id"); + var url = $(this).data("url"); + var maxsize = $(this).data("maxsize"); + var mimetype = $(this).data("mimetype"); + var multipart = $(this).data("multipart"); + var multiple = $(this).data("multiple"); - if (typeof options.ranges[range][0] === 'string') - start = moment(options.ranges[range][0], this.locale.format); - else - start = moment(options.ranges[range][0]); + //填充ID + var input_id = $(that).data("input-id") ? $(that).data("input-id") : ""; + //预览ID + var preview_id = $(that).data("preview-id") ? $(that).data("preview-id") : ""; - if (typeof options.ranges[range][1] === 'string') - end = moment(options.ranges[range][1], this.locale.format); - else - end = moment(options.ranges[range][1]); - - // If the start or end date exceed those allowed by the minDate or dateLimit - // options, shorten the range to the allowable period. - if (this.minDate && start.isBefore(this.minDate)) - start = this.minDate.clone(); - - var maxDate = this.maxDate; - if (this.dateLimit && maxDate && start.clone().add(this.dateLimit).isAfter(maxDate)) - maxDate = start.clone().add(this.dateLimit); - if (maxDate && end.isAfter(maxDate)) - end = maxDate.clone(); - - // If the end of the range is before the minimum or the start of the range is - // after the maximum, don't display this range option at all. - if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day')) - || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day'))) - continue; - - //Support unicode chars in the range names. - var elem = document.createElement('textarea'); - elem.innerHTML = range; - var rangeHtml = elem.value; - - this.ranges[rangeHtml] = [start, end]; - } - - var list = '<ul>'; - for (range in this.ranges) { - list += '<li data-range-key="' + range + '">' + range + '</li>'; - } - if (this.showCustomRangeLabel) { - list += '<li data-range-key="' + this.locale.customRangeLabel + '">' + this.locale.customRangeLabel + '</li>'; - } - list += '</ul>'; - this.container.find('.ranges').prepend(list); - } - - if (typeof cb === 'function') { - this.callback = cb; - } - - if (!this.timePicker) { - this.startDate = this.startDate.startOf('day'); - this.endDate = this.endDate.endOf('day'); - this.container.find('.calendar-time').hide(); - } - - //can't be used together for now - if (this.timePicker && this.autoApply) - this.autoApply = false; - - if (this.autoApply && typeof options.ranges !== 'object') { - this.container.find('.ranges').hide(); - } else if (this.autoApply) { - this.container.find('.applyBtn, .cancelBtn').addClass('hide'); - } - - if (this.singleDatePicker) { - this.container.addClass('single'); - this.container.find('.calendar.left').addClass('single'); - this.container.find('.calendar.left').show(); - this.container.find('.calendar.right').hide(); - this.container.find('.daterangepicker_input input, .daterangepicker_input > i').hide(); - if (this.timePicker) { - this.container.find('.ranges ul').hide(); - } else { - this.container.find('.ranges').hide(); - } - } - - if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) { - this.container.addClass('show-calendar'); - } - - this.container.addClass('opens' + this.opens); - - //swap the position of the predefined ranges if opens right - if (typeof options.ranges !== 'undefined' && this.opens == 'right') { - this.container.find('.ranges').prependTo( this.container.find('.calendar.left').parent() ); - } - - //apply CSS classes and labels to buttons - this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses); - if (this.applyClass.length) - this.container.find('.applyBtn').addClass(this.applyClass); - if (this.cancelClass.length) - this.container.find('.cancelBtn').addClass(this.cancelClass); - this.container.find('.applyBtn').html(this.locale.applyLabel); - this.container.find('.cancelBtn').html(this.locale.cancelLabel); - - // - // event listeners - // - - this.container.find('.calendar') - .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this)) - .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this)) - .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this)) - .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this)) - .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this)) - .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this)) - .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this)) - .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this)) - .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this)) - .on('focus.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsFocused, this)) - .on('blur.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsBlurred, this)) - .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this)) - .on('keydown.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsKeydown, this)); - - this.container.find('.ranges') - .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this)) - .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this)) - .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this)) - .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this)) - .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this)); - - if (this.element.is('input') || this.element.is('button')) { - this.element.on({ - 'click.daterangepicker': $.proxy(this.show, this), - 'focus.daterangepicker': $.proxy(this.show, this), - 'keyup.daterangepicker': $.proxy(this.elementChanged, this), - 'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility - }); - } else { - this.element.on('click.daterangepicker', $.proxy(this.toggle, this)); - this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this)); - } - - // - // if attached to a text input, set the initial value - // + //上传URL + url = url ? url : Config.upload.uploadurl; + url = Fast.api.fixurl(url); + //最大可上传文件大小 + maxsize = typeof maxsize !== "undefined" ? maxsize : Config.upload.maxsize; + //文件类型 + mimetype = typeof mimetype !== "undefined" ? mimetype : Config.upload.mimetype; + //请求的表单参数 + multipart = typeof multipart !== "undefined" ? multipart : Config.upload.multipart; + //是否支持批量上传 + multiple = typeof multiple !== "undefined" ? multiple : Config.upload.multiple; + var mimetypeArr = new Array(); + //支持后缀和Mimetype格式,以,分隔 + if (mimetype && mimetype !== "*" && mimetype.indexOf("/") === -1) + { + var tempArr = mimetype.split(','); + for (var i = 0; i < tempArr.length; i++) + { + mimetypeArr.push({title: __('Files'), extensions: tempArr[i]}); + } + mimetype = mimetypeArr; + } + //生成Plupload实例 + Upload.list[id] = new Plupload.Uploader({ + runtimes: 'html5,flash,silverlight,html4', + multi_selection: multiple, //是否允许多选批量上传 + browse_button: id, // 浏览按钮的ID + container: $(this).parent().get(0), //取按钮的上级元素 + flash_swf_url: '/assets/libs/plupload/js/Moxie.swf', + silverlight_xap_url: '/assets/libs/plupload/js/Moxie.xap', + filters: { + max_file_size: maxsize, + mime_types: mimetype, + }, + url: url, + multipart_params: $.isArray(multipart) ? {} : multipart, + init: { + PostInit: Upload.events.onPostInit, + FilesAdded: Upload.events.onFileAdded, + BeforeUpload: Upload.events.onBeforeUpload, + UploadProgress: function (up, file) { + var button = up.settings.button; + $(button).prop("disabled", true).html("<i class='fa fa-upload'></i> " + __('Upload') + file.percent + "%"); + Upload.events.onUploadProgress(up, file); + }, + FileUploaded: function (up, file, info) { + var button = up.settings.button; + //还原按钮文字及状态 + $(button).prop("disabled", false).html($(button).data("bakup-html")); + var ret = Upload.events.onUploadResponse(info.response, info, up, file); + file.ret = ret; + if (ret.code === 1) { + Upload.events.onUploadSuccess(up, ret, file); + } else { + Upload.events.onUploadError(up, ret, file); + } + }, + UploadComplete: Upload.events.onUploadComplete, + Error: function (up, err) { + var button = up.settings.button; + $(button).prop("disabled", false).html($(button).data("bakup-html")); + var ret = {code: err.code, msg: err.message, data: null}; + Upload.events.onUploadError(up, ret); + } + }, + onUploadSuccess: onUploadSuccess, + onUploadError: onUploadError, + onUploadComplete: onUploadComplete, + button: that + }); - if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { - this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); - this.element.trigger('change'); - } else if (this.element.is('input') && this.autoUpdateInput) { - this.element.val(this.startDate.format(this.locale.format)); - this.element.trigger('change'); + //拖动排序 + if (preview_id && multiple) { + require(['dragsort'], function () { + $("#" + preview_id).dragsort({ + dragSelector: "li", + dragEnd: function () { + $("#" + preview_id).trigger("fa.preview.change"); + }, + placeHolderTemplate: '<li class="col-xs-3"></li>' + }); + }); + } + if (preview_id && input_id) { + $(document.body).on("keyup change", "#" + input_id, function () { + var inputStr = $("#" + input_id).val(); + var inputArr = inputStr.split(/\,/); + $("#" + preview_id).empty(); + var tpl = $("#" + preview_id).data("template") ? $("#" + preview_id).data("template") : ""; + $.each(inputArr, function (i, j) { + if (!j) { + return true; + } + var data = {url: j, fullurl: Fast.api.cdnurl(j), data: $(that).data()}; + var html = tpl ? Template(tpl, data) : Template.render(Upload.config.previewtpl, data); + $("#" + preview_id).append(html); + }); + }); + $("#" + input_id).trigger("change"); + } + if (preview_id) { + // 监听事件 + $(document.body).on("fa.preview.change", "#" + preview_id, function () { + var urlArr = new Array(); + $("#" + preview_id + " [data-url]").each(function (i, j) { + urlArr.push($(this).data("url")); + }); + if (input_id) { + $("#" + input_id).val(urlArr.join(",")); + } + }); + // 移除按钮事件 + $(document.body).on("click", "#" + preview_id + " .btn-trash", function () { + $(this).closest("li").remove(); + $("#" + preview_id).trigger("fa.preview.change"); + }); + } + Upload.list[id].init(); + }); + }, + // AJAX异步上传 + send: function (file, onUploadSuccess, onUploadError, onUploadComplete) { + var index = Layer.msg(__('Uploading'), {offset: 't', time: 0}); + var id = Plupload.guid(); + var _onPostInit = Upload.events.onPostInit; + Upload.events.onPostInit = function () { + // 当加载完成后添加文件并上传 + Upload.list[id].addFile(file); + //Upload.list[id].start(); + }; + $('<button type="button" id="' + id + '" class="btn btn-danger hidden plupload" />').appendTo("body"); + $("#" + id).data("upload-complete", function (files) { + Upload.events.onPostInit = _onPostInit; + Layer.close(index); + }); + Upload.api.plupload("#" + id, onUploadSuccess, onUploadError, onUploadComplete); + }, + custom: { + //自定义上传完成回调 + afteruploadcallback: function (response) { + console.log(this, response); + alert("Custom Callback,Response URL:" + response.url); + }, + }, } - }; - DateRangePicker.prototype = { - - constructor: DateRangePicker, - - setStartDate: function(startDate) { - if (typeof startDate === 'string') - this.startDate = moment(startDate, this.locale.format); - - if (typeof startDate === 'object') - this.startDate = moment(startDate); - - if (!this.timePicker) - this.startDate = this.startDate.startOf('day'); - - if (this.timePicker && this.timePickerIncrement) - this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); - - if (this.minDate && this.startDate.isBefore(this.minDate)) { - this.startDate = this.minDate.clone(); - if (this.timePicker && this.timePickerIncrement) - this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); - } + return Upload; +}); +/*! nice-validator 1.1.3 + * (c) 2012-2017 Jony Zhang <niceue@live.com>, MIT Licensed + * https://github.com/niceue/nice-validator + */ +;(function(factory) { + typeof module === "object" && module.exports ? module.exports = factory( require( "jquery" ) ) : + typeof define === 'function' && define.amd ? define('validator-core',['jquery'], factory) : + factory(jQuery); +}(function($, undefined) { + "use strict"; - if (this.maxDate && this.startDate.isAfter(this.maxDate)) { - this.startDate = this.maxDate.clone(); - if (this.timePicker && this.timePickerIncrement) - this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); - } + var NS = 'validator', + CLS_NS = '.' + NS, + CLS_NS_RULE = '.rule', + CLS_NS_FIELD = '.field', + CLS_NS_FORM = '.form', + CLS_WRAPPER = 'nice-' + NS, + CLS_MSG_BOX = 'msg-box', + ARIA_INVALID = 'aria-invalid', + DATA_RULE = 'data-rule', + DATA_MSG = 'data-msg', + DATA_TIP = 'data-tip', + DATA_OK = 'data-ok', + DATA_TIMELY = 'data-timely', + DATA_TARGET = 'data-target', + DATA_DISPLAY = 'data-display', + DATA_MUST = 'data-must', + NOVALIDATE = 'novalidate', + INPUT_SELECTOR = ':verifiable', - if (!this.isShowing) - this.updateElement(); + rRules = /(&)?(!)?\b(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?\s*(;|\|)?/g, + rRule = /(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?/, + rDisplay = /(?:([^:;\(\[]*):)?(.*)/, + rDoubleBytes = /[^\x00-\xff]/g, + rPos = /top|right|bottom|left/, + rAjaxType = /(?:(cors|jsonp):)?(?:(post|get):)?(.+)/i, + rUnsafe = /[<>'"`\\]|&#x?\d+[A-F]?;?|%3[A-F]/gmi, - this.updateMonthsInView(); + noop = $.noop, + proxy = $.proxy, + trim = $.trim, + isFunction = $.isFunction, + isString = function(s) { + return typeof s === 'string'; }, - - setEndDate: function(endDate) { - if (typeof endDate === 'string') - this.endDate = moment(endDate, this.locale.format); - - if (typeof endDate === 'object') - this.endDate = moment(endDate); - - if (!this.timePicker) - this.endDate = this.endDate.add(1,'d').startOf('day').subtract(1,'second'); - - if (this.timePicker && this.timePickerIncrement) - this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement); - - if (this.endDate.isBefore(this.startDate)) - this.endDate = this.startDate.clone(); - - if (this.maxDate && this.endDate.isAfter(this.maxDate)) - this.endDate = this.maxDate.clone(); - - if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate)) - this.endDate = this.startDate.clone().add(this.dateLimit); - - this.previousRightTime = this.endDate.clone(); - - if (!this.isShowing) - this.updateElement(); - - this.updateMonthsInView(); + isObject = function(o) { + return o && Object.prototype.toString.call(o) === '[object Object]'; }, - - isInvalidDate: function() { - return false; - }, - - isCustomDate: function() { - return false; + isIE = document.documentMode || +(navigator.userAgent.match(/MSIE (\d+)/) && RegExp.$1), + attr = function(el, key, value) { + if (!el || !el.tagName) return null; + if (value !== undefined) { + if (value === null) el.removeAttribute(key); + else el.setAttribute(key, '' + value); + } else { + return el.getAttribute(key); + } }, + novalidateonce, + preinitialized = {}, - updateView: function() { - if (this.timePicker) { - this.renderTimePicker('left'); - this.renderTimePicker('right'); - if (!this.endDate) { - this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled'); - } else { - this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled'); - } - } - if (this.endDate) { - this.container.find('input[name="daterangepicker_end"]').removeClass('active'); - this.container.find('input[name="daterangepicker_start"]').addClass('active'); - } else { - this.container.find('input[name="daterangepicker_end"]').addClass('active'); - this.container.find('input[name="daterangepicker_start"]').removeClass('active'); - } - this.updateMonthsInView(); - this.updateCalendars(); - this.updateFormInputs(); + defaults = { + debug: 0, + theme: 'default', + ignore: '', + focusInvalid: true, + focusCleanup: false, + stopOnError: false, + beforeSubmit: null, + valid: null, + invalid: null, + validation: null, + formClass: 'n-default', + validClass: 'n-valid', + invalidClass: 'n-invalid', + bindClassTo: null }, - - updateMonthsInView: function() { - if (this.endDate) { - - //if both dates are visible already, do nothing - if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month && - (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) - && - (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM')) - ) { - return; - } - - this.leftCalendar.month = this.startDate.clone().date(2); - if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) { - this.rightCalendar.month = this.endDate.clone().date(2); - } else { - this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); - } - - } else { - if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) { - this.leftCalendar.month = this.startDate.clone().date(2); - this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month'); + fieldDefaults = { + timely: 1, + display: null, + target: null, + ignoreBlank: false, + showOk: true, + // Translate ajax response to validation result + dataFilter: function (data) { + if ( isString(data) || ( isObject(data) && ('error' in data || 'ok' in data) ) ) { + return data; } - } - if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) { - this.rightCalendar.month = this.maxDate.clone().date(2); - this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month'); - } - }, - - updateCalendars: function() { - - if (this.timePicker) { - var hour, minute, second; - if (this.endDate) { - hour = parseInt(this.container.find('.left .hourselect').val(), 10); - minute = parseInt(this.container.find('.left .minuteselect').val(), 10); - second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; - if (!this.timePicker24Hour) { - var ampm = this.container.find('.left .ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; - } + }, + msgMaker: function(opt) { + var html; + html = '<span role="alert" class="msg-wrap n-'+ opt.type + '">' + opt.arrow; + if (opt.result) { + $.each(opt.result, function(i, obj){ + html += '<span class="n-'+ obj.type +'">' + opt.icon + '<span class="n-msg">' + obj.msg + '</span></span>'; + }); } else { - hour = parseInt(this.container.find('.right .hourselect').val(), 10); - minute = parseInt(this.container.find('.right .minuteselect').val(), 10); - second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; - if (!this.timePicker24Hour) { - var ampm = this.container.find('.right .ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; - } + html += opt.icon + '<span class="n-msg">' + opt.msg + '</span>'; } - this.leftCalendar.month.hour(hour).minute(minute).second(second); - this.rightCalendar.month.hour(hour).minute(minute).second(second); - } - - this.renderCalendar('left'); - this.renderCalendar('right'); - - //highlight any predefined range matching the current start and end dates - this.container.find('.ranges li').removeClass('active'); - if (this.endDate == null) return; - - this.calculateChosenLabel(); + html += '</span>'; + return html; + }, + msgWrapper: 'span', + msgArrow: '', + msgIcon: '<span class="n-icon"></span>', + msgClass: 'n-right', + msgStyle: '', + msgShow: null, + msgHide: null }, + themes = {}; - renderCalendar: function(side) { - - // - // Build the matrix of dates that will populate the calendar - // - - var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar; - var month = calendar.month.month(); - var year = calendar.month.year(); - var hour = calendar.month.hour(); - var minute = calendar.month.minute(); - var second = calendar.month.second(); - var daysInMonth = moment([year, month]).daysInMonth(); - var firstDay = moment([year, month, 1]); - var lastDay = moment([year, month, daysInMonth]); - var lastMonth = moment(firstDay).subtract(1, 'month').month(); - var lastYear = moment(firstDay).subtract(1, 'month').year(); - var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth(); - var dayOfWeek = firstDay.day(); + /** jQuery Plugin + * @param {Object} options + debug {Boolean} 0 Whether to enable debug mode + timely {Number} 1 Whether to enable timely validation + theme {String} 'default' Theme name + stopOnError {Boolean} false Whether to stop validate when found an error input + focusCleanup {Boolean} false Whether to clean up the field message when focus the field + focusInvalid {Boolean} true Whether to focus the field that is invalid + ignoreBlank {Boolean} false When the field has no value, whether to ignore validation + ignore {jqSelector} '' Ignored fields (Using jQuery selector) - //initialize a 6 rows x 7 columns array for the calendar - var calendar = []; - calendar.firstDay = firstDay; - calendar.lastDay = lastDay; + beforeSubmit {Function} Do something before submit form + dataFilter {Function} Convert ajax results + valid {Function} Triggered when the form is valid + invalid {Function} Triggered when the form is invalid + validClass {String} 'n-valid' Add this class name to a valid field + invalidClass {String} 'n-invalid' Add this class name to a invalid field + bindClassTo {jqSelector} ':verifiable' Which element should the className binding to - for (var i = 0; i < 6; i++) { - calendar[i] = []; - } + display {Function} Callback function to get dynamic display + target {Function} Callback function to get dynamic target + msgShow {Function} Trigger this callback when show message + msgHide {Function} Trigger this callback when hide message + msgWrapper {String} 'span' Message wrapper tag name + msgMaker {Function} Callback function to make message HTML + msgArrow {String} Message arrow template + msgIcon {String} Message icon template + msgStyle {String} Custom message css style + msgClass {String} Additional added to the message class names + formClass {String} Additional added to the form class names - //populate the calendar with date objects - var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1; - if (startDay > daysInLastMonth) - startDay -= 7; + messages {Object} Custom messages for the current instance + rules {Object} Custom rules for the current instance + fields {Object} Field validation configuration + {String} key name|#id + {String|Object} value Rule string or an object which can pass more arguments - if (dayOfWeek == this.locale.firstDay) - startDay = daysInLastMonth - 6; + fields[key][rule] {String} Rule string + fields[key][display] {String|Function} + fields[key][tip] {String} Custom tip message + fields[key][ok] {String} Custom success message + fields[key][msg] {Object} Custom error message + fields[key][msgStyle] {String} Custom message style + fields[key][msgClass] {String} A className which added to message placeholder element + fields[key][msgWrapper] {String} Tag name of the message placeholder element + fields[key][msgMaker] {Function} A function to custom message HTML + fields[key][dataFilter] {Function} A function to convert ajax results + fields[key][valid] {Function} A function triggered when field is valid + fields[key][invalid] {Function} A function triggered when field is invalid + fields[key][must] {Boolean} If set true, we always check the field even has remote checking + fields[key][timely] {Boolean} Whether to enable timely validation + fields[key][target] {jqSelector} Define placement of a message + */ + $.fn.validator = function(options) { + var that = this, + args = arguments; - var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]); + if (that.is(INPUT_SELECTOR)) return that; + if (!that.is('form')) that = this.find('form'); + if (!that.length) that = this; - var col, row; - for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) { - if (i > 0 && col % 7 === 0) { - col = 0; - row++; - } - calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second); - curDate.hour(12); + that.each(function() { + var instance = $(this).data(NS); - if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') { - calendar[row][col] = this.minDate.clone(); + if (instance) { + if ( isString(options) ) { + if ( options.charAt(0) === '_' ) return; + instance[options].apply(instance, [].slice.call(args, 1)); } - - if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') { - calendar[row][col] = this.maxDate.clone(); + else if (options) { + instance._reset(true); + instance._init(this, options); } - - } - - //make the calendar object available to hoverDate/clickDate - if (side == 'left') { - this.leftCalendar.calendar = calendar; } else { - this.rightCalendar.calendar = calendar; + new Validator(this, options); } + }); - // - // Display the calendar - // - - var minDate = side == 'left' ? this.minDate : this.startDate; - var maxDate = this.maxDate; - var selected = side == 'left' ? this.startDate : this.endDate; - var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'}; - - var html = '<table class="table-condensed">'; - html += '<thead>'; - html += '<tr>'; - - // add empty cell for week number - if (this.showWeekNumbers || this.showISOWeekNumbers) - html += '<th></th>'; + return this; + }; - if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) { - html += '<th class="prev available"><i class="fa fa-' + arrow.left + ' glyphicon glyphicon-' + arrow.left + '"></i></th>'; - } else { - html += '<th></th>'; - } - var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(" YYYY"); + // Validate a field, or an area + $.fn.isValid = function(callback, hideMsg) { + var me = _getInstance(this[0]), + hasCallback = isFunction(callback), + ret, opt; - if (this.showDropdowns) { - var currentMonth = calendar[1][1].month(); - var currentYear = calendar[1][1].year(); - var maxYear = (maxDate && maxDate.year()) || (currentYear + 5); - var minYear = (minDate && minDate.year()) || (currentYear - 50); - var inMinYear = currentYear == minYear; - var inMaxYear = currentYear == maxYear; + if (!me) return true; + if (!hasCallback && hideMsg === undefined) hideMsg = callback; + me.checkOnly = !!hideMsg; + opt = me.options; - var monthHtml = '<select class="monthselect">'; - for (var m = 0; m < 12; m++) { - if ((!inMinYear || m >= minDate.month()) && (!inMaxYear || m <= maxDate.month())) { - monthHtml += "<option value='" + m + "'" + - (m === currentMonth ? " selected='selected'" : "") + - ">" + this.locale.monthNames[m] + "</option>"; - } else { - monthHtml += "<option value='" + m + "'" + - (m === currentMonth ? " selected='selected'" : "") + - " disabled='disabled'>" + this.locale.monthNames[m] + "</option>"; - } + ret = me._multiValidate( + this.is(INPUT_SELECTOR) ? this : this.find(INPUT_SELECTOR), + function(isValid){ + if (!isValid && opt.focusInvalid && !me.checkOnly) { + // navigate to the error element + me.$el.find('[' + ARIA_INVALID + ']:first').focus(); } - monthHtml += "</select>"; - - var yearHtml = '<select class="yearselect">'; - for (var y = minYear; y <= maxYear; y++) { - yearHtml += '<option value="' + y + '"' + - (y === currentYear ? ' selected="selected"' : '') + - '>' + y + '</option>'; + if (hasCallback) { + if (callback.length) { + callback(isValid); + } else if (isValid) { + callback(); + } } - yearHtml += '</select>'; - - dateHtml = monthHtml + yearHtml; + me.checkOnly = false; } + ); - html += '<th colspan="5" class="month">' + dateHtml + '</th>'; - if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) { - html += '<th class="next available"><i class="fa fa-' + arrow.right + ' glyphicon glyphicon-' + arrow.right + '"></i></th>'; - } else { - html += '<th></th>'; - } + // If you pass a callback, we maintain the jQuery object chain + return hasCallback ? this : ret; + }; + + $.extend($.expr.pseudos || $.expr[':'], { + // A faster selector than ":input:not(:submit,:button,:reset,:image,:disabled,[contenteditable])" + verifiable: function(elem) { + var name = elem.nodeName.toLowerCase(); - html += '</tr>'; - html += '<tr>'; + return ( name === 'input' && !({submit: 1, button: 1, reset: 1, image: 1})[elem.type] || + name === 'select' || + name === 'textarea' || + elem.contentEditable === 'true' + ) && !elem.disabled; + }, + // any value, but not only whitespace + filled: function(elem) { + return !!trim($(elem).val()); + } + }); - // add week number label - if (this.showWeekNumbers || this.showISOWeekNumbers) - html += '<th class="week">' + this.locale.weekLabel + '</th>'; + /** + * Creates a new Validator + * + * @class + * @param {Element} element - form element + * @param {Object} options - options for validator + */ + function Validator(element, options) { + var me = this; - $.each(this.locale.daysOfWeek, function(index, dayOfWeek) { - html += '<th>' + dayOfWeek + '</th>'; - }); + if ( !(me instanceof Validator) ) { + return new Validator(element, options); + } - html += '</tr>'; - html += '</thead>'; - html += '<tbody>'; + if (Validator.pending) { + $(window).on('validatorready', init); + } else { + init(); + } - //adjust maxDate to reflect the dateLimit setting in order to - //grey out end dates beyond the dateLimit - if (this.endDate == null && this.dateLimit) { - var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day'); - if (!maxDate || maxLimit.isBefore(maxDate)) { - maxDate = maxLimit; - } + function init() { + me.$el = $(element); + if (me.$el.length) { + me._init(me.$el[0], options); } + else if (isString(element)) { + preinitialized[element] = options; + } + } + } - for (var row = 0; row < 6; row++) { - html += '<tr>'; - - // add week number - if (this.showWeekNumbers) - html += '<td class="week">' + calendar[row][0].week() + '</td>'; - else if (this.showISOWeekNumbers) - html += '<td class="week">' + calendar[row][0].isoWeek() + '</td>'; + Validator.prototype = { + _init: function(element, options) { + var me = this, + opt, themeOpt, dataOpt; - for (var col = 0; col < 7; col++) { + // Initialization options + if ( isFunction(options) ) { + options = { + valid: options + }; + } + options = me._opt = options || {}; + dataOpt = attr(element, 'data-'+ NS +'-option'); + dataOpt = me._dataOpt = dataOpt && dataOpt.charAt(0) === '{' ? (new Function("return " + dataOpt))() : {}; + themeOpt = me._themeOpt = themes[ options.theme || dataOpt.theme || defaults.theme ]; + opt = me.options = $.extend({}, defaults, fieldDefaults, themeOpt, me.options, options, dataOpt); - var classes = []; + me.rules = new Rules(opt.rules, true); + me.messages = new Messages(opt.messages, true); + me.Field = _createFieldFactory(me); + me.elements = me.elements || {}; + me.deferred = {}; + me.errors = {}; + me.fields = {}; + // Initialization fields + me._initFields(opt.fields); - //highlight today's date - if (calendar[row][col].isSame(new Date(), "day")) - classes.push('today'); - - //highlight weekends - if (calendar[row][col].isoWeekday() > 5) - classes.push('weekend'); - - //grey out the dates in other months displayed at beginning and end of this calendar - if (calendar[row][col].month() != calendar[1][1].month()) - classes.push('off'); - - //don't allow selection of dates before the minimum date - if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day')) - classes.push('off', 'disabled'); - - //don't allow selection of dates after the maximum date - if (maxDate && calendar[row][col].isAfter(maxDate, 'day')) - classes.push('off', 'disabled'); - - //don't allow selection of date if a custom function decides it's invalid - if (this.isInvalidDate(calendar[row][col])) - classes.push('off', 'disabled'); - - //highlight the currently selected start date - if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD')) - classes.push('active', 'start-date'); - - //highlight the currently selected end date - if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD')) - classes.push('active', 'end-date'); - - //highlight dates in-between the selected dates - if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate) - classes.push('in-range'); - - //apply custom classes for this date - var isCustom = this.isCustomDate(calendar[row][col]); - if (isCustom !== false) { - if (typeof isCustom === 'string') - classes.push(isCustom); - else - Array.prototype.push.apply(classes, isCustom); - } - - var cname = '', disabled = false; - for (var i = 0; i < classes.length; i++) { - cname += classes[i] + ' '; - if (classes[i] == 'disabled') - disabled = true; - } - if (!disabled) - cname += 'available'; - - html += '<td class="' + cname.replace(/^\s+|\s+$/g, '') + '" data-title="' + 'r' + row + 'c' + col + '">' + calendar[row][col].date() + '</td>'; + // Initialization events and make a cache + if ( !me.$el.data(NS) ) { + me.$el.data(NS, me).addClass(CLS_WRAPPER +' '+ opt.formClass) + .on('form-submit-validate', function(e, a, $form, opts, veto) { + me.vetoed = veto.veto = !me.isValid; + me.ajaxFormOptions = opts; + }) + .on('submit'+ CLS_NS +' validate'+ CLS_NS, proxy(me, '_submit')) + .on('reset'+ CLS_NS, proxy(me, '_reset')) + .on('showmsg'+ CLS_NS, proxy(me, '_showmsg')) + .on('hidemsg'+ CLS_NS, proxy(me, '_hidemsg')) + .on('focusin'+ CLS_NS + ' click'+ CLS_NS, INPUT_SELECTOR, proxy(me, '_focusin')) + .on('focusout'+ CLS_NS +' validate'+ CLS_NS, INPUT_SELECTOR, proxy(me, '_focusout')) + .on('keyup'+ CLS_NS +' input'+ CLS_NS + ' compositionstart compositionend', INPUT_SELECTOR, proxy(me, '_focusout')) + .on('click'+ CLS_NS, ':radio,:checkbox', 'click', proxy(me, '_focusout')) + .on('change'+ CLS_NS, 'select,input[type="file"]', 'change', proxy(me, '_focusout')); - } - html += '</tr>'; + // cache the novalidate attribute value + me._NOVALIDATE = attr(element, NOVALIDATE); + // Initialization is complete, stop off default HTML5 form validation + // If use "jQuery.attr('novalidate')" in IE7 will complain: "SCRIPT3: Member not found." + attr(element, NOVALIDATE, NOVALIDATE); } - html += '</tbody>'; - html += '</table>'; - - this.container.find('.calendar.' + side + ' .calendar-table').html(html); - - }, - - renderTimePicker: function(side) { - - // Don't bother updating the time picker if it's currently disabled - // because an end date hasn't been clicked yet - if (side == 'right' && !this.endDate) return; - - var html, selected, minDate, maxDate = this.maxDate; - - if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate))) - maxDate = this.startDate.clone().add(this.dateLimit); - - if (side == 'left') { - selected = this.startDate.clone(); - minDate = this.minDate; - } else if (side == 'right') { - selected = this.endDate.clone(); - minDate = this.startDate; - - //Preserve the time already selected - var timeSelector = this.container.find('.calendar.right .calendar-time div'); - if (timeSelector.html() != '') { - - selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour()); - selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute()); - selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second()); - - if (!this.timePicker24Hour) { - var ampm = timeSelector.find('.ampmselect option:selected').val(); - if (ampm === 'PM' && selected.hour() < 12) - selected.hour(selected.hour() + 12); - if (ampm === 'AM' && selected.hour() === 12) - selected.hour(0); - } - - } - - if (selected.isBefore(this.startDate)) - selected = this.startDate.clone(); - - if (maxDate && selected.isAfter(maxDate)) - selected = maxDate.clone(); - + // Display all messages in target container + if ( isString(opt.target) ) { + me.$el.find(opt.target).addClass('msg-container'); } + }, - // - // hours - // - - html = '<select class="hourselect">'; - - var start = this.timePicker24Hour ? 0 : 1; - var end = this.timePicker24Hour ? 23 : 12; - - for (var i = start; i <= end; i++) { - var i_in_24 = i; - if (!this.timePicker24Hour) - i_in_24 = selected.hour() >= 12 ? (i == 12 ? 12 : i + 12) : (i == 12 ? 0 : i); - - var time = selected.clone().hour(i_in_24); - var disabled = false; - if (minDate && time.minute(59).isBefore(minDate)) - disabled = true; - if (maxDate && time.minute(0).isAfter(maxDate)) - disabled = true; + // Guess whether the form use ajax submit + _guessAjax: function(form) { + var me = this; - if (i_in_24 == selected.hour() && !disabled) { - html += '<option value="' + i + '" selected="selected">' + i + '</option>'; - } else if (disabled) { - html += '<option value="' + i + '" disabled="disabled" class="disabled">' + i + '</option>'; - } else { - html += '<option value="' + i + '">' + i + '</option>'; - } + if ( !(me.isAjaxSubmit = !!me.options.valid) ) { + // if there is a "valid.form" event + var events = ($._data || $.data)(form, "events"); + me.isAjaxSubmit = issetEvent(events, 'valid', 'form') || issetEvent(events, 'submit', 'form-plugin'); } - html += '</select> '; - - // - // minutes - // - - html += ': <select class="minuteselect">'; - - for (var i = 0; i < 60; i += this.timePickerIncrement) { - var padded = i < 10 ? '0' + i : i; - var time = selected.clone().minute(i); - - var disabled = false; - if (minDate && time.second(59).isBefore(minDate)) - disabled = true; - if (maxDate && time.second(0).isAfter(maxDate)) - disabled = true; - - if (selected.minute() == i && !disabled) { - html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; - } else if (disabled) { - html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; - } else { - html += '<option value="' + i + '">' + padded + '</option>'; + function issetEvent(events, name, namespace) { + if ( events && events[name] && + $.map(events[name], function(e){ + return ~e.namespace.indexOf(namespace) ? 1 : null; + }).length + ) { + return true; } + return false; } + }, - html += '</select> '; - - // - // seconds - // - - if (this.timePickerSeconds) { - html += ': <select class="secondselect">'; - - for (var i = 0; i < 60; i++) { - var padded = i < 10 ? '0' + i : i; - var time = selected.clone().second(i); + _initFields: function(fields) { + var me = this, k, arr, i, + clear = fields === null; - var disabled = false; - if (minDate && time.isBefore(minDate)) - disabled = true; - if (maxDate && time.isAfter(maxDate)) - disabled = true; + // Processing field information + if (clear) fields = me.fields; - if (selected.second() == i && !disabled) { - html += '<option value="' + i + '" selected="selected">' + padded + '</option>'; - } else if (disabled) { - html += '<option value="' + i + '" disabled="disabled" class="disabled">' + padded + '</option>'; + if ( isObject(fields) ) { + for (k in fields) { + if (~k.indexOf(',')) { + arr = k.split(','); + i = arr.length; + while (i--) { + initField(trim(arr[i]), fields[k]); + } } else { - html += '<option value="' + i + '">' + padded + '</option>'; + initField(k, fields[k]); } } - - html += '</select> '; } - // - // AM/PM - // - - if (!this.timePicker24Hour) { - html += '<select class="ampmselect">'; - - var am_html = ''; - var pm_html = ''; - - if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate)) - am_html = ' disabled="disabled" class="disabled"'; - - if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate)) - pm_html = ' disabled="disabled" class="disabled"'; + // Parsing DOM rules + me.$el.find(INPUT_SELECTOR).each(function() { + me._parse(this); + }); - if (selected.hour() >= 12) { - html += '<option value="AM"' + am_html + '>AM</option><option value="PM" selected="selected"' + pm_html + '>PM</option>'; + function initField(k, v) { + // delete a field from settings + if ( v === null || clear ) { + var el = me.elements[k]; + if (el) me._resetElement(el, true); + delete me.fields[k]; } else { - html += '<option value="AM" selected="selected"' + am_html + '>AM</option><option value="PM"' + pm_html + '>PM</option>'; + me.fields[k] = new me.Field(k, isString(v) ? {rule: v} : v, me.fields[k]); } - - html += '</select>'; } - - this.container.find('.calendar.' + side + ' .calendar-time div').html(html); - }, - updateFormInputs: function() { - - //ignore mouse movements while an above-calendar text input has focus - if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) - return; + // Parsing a field + _parse: function(el) { + var me = this, + field, + key = el.name, + display, + timely, + dataRule = attr(el, DATA_RULE); - this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format)); - if (this.endDate) - this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format)); + dataRule && attr(el, DATA_RULE, null); - if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) { - this.container.find('button.applyBtn').removeAttr('disabled'); - } else { - this.container.find('button.applyBtn').attr('disabled', 'disabled'); + // If the field has passed the key as id mode, or it doesn't has a name + if ( el.id && ( + ('#' + el.id in me.fields) || + !key || + // If dataRule and element are diffrent from old's, we use ID mode. + (dataRule !== null && (field = me.fields[key]) && dataRule !== field.rule && el.id !== field.key) + ) + ) { + key = '#' + el.id; + } + // Generate id + if (!key) { + key = '#' + (el.id = 'N' + String(Math.random()).slice(-12)); } - }, + field = me.getField(key, true); + // The priority of passing parameter by DOM is higher than by JS. + field.rule = dataRule || field.rule; - move: function() { - var parentOffset = { top: 0, left: 0 }, - containerTop; - var parentRightEdge = $(window).width(); - if (!this.parentEl.is('body')) { - parentOffset = { - top: this.parentEl.offset().top - this.parentEl.scrollTop(), - left: this.parentEl.offset().left - this.parentEl.scrollLeft() - }; - parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left; + if (display = attr(el, DATA_DISPLAY)) { + field.display = display; } - - if (this.drops == 'up') - containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top; - else - containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top; - this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup'); - - if (this.opens == 'left') { - this.container.css({ - top: containerTop, - right: parentRightEdge - this.element.offset().left - this.element.outerWidth(), - left: 'auto' - }); - if (this.container.offset().left < 0) { - this.container.css({ - right: 'auto', - left: 9 - }); + if (field.rule) { + if ( attr(el, DATA_MUST) !== null || /\b(?:match|checked)\b/.test(field.rule) ) { + field.must = true; } - } else if (this.opens == 'center') { - this.container.css({ - top: containerTop, - left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2 - - this.container.outerWidth() / 2, - right: 'auto' - }); - if (this.container.offset().left < 0) { - this.container.css({ - right: 'auto', - left: 9 - }); + if ( /\brequired\b/.test(field.rule) ) { + field.required = true; } - } else { - this.container.css({ - top: containerTop, - left: this.element.offset().left - parentOffset.left, - right: 'auto' - }); - if (this.container.offset().left + this.container.outerWidth() > $(window).width()) { - this.container.css({ - left: 'auto', - right: 0 - }); + if (timely = attr(el, DATA_TIMELY)) { + field.timely = +timely; + } else if (field.timely > 3) { + attr(el, DATA_TIMELY, field.timely); } + me._parseRule(field); + field.old = {}; } - }, - - show: function(e) { - if (this.isShowing) return; - - // Create a click proxy that is private to this instance of datepicker, for unbinding - this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this); - - // Bind global datepicker mousedown for hiding and - $(document) - .on('mousedown.daterangepicker', this._outsideClickProxy) - // also support mobile devices - .on('touchend.daterangepicker', this._outsideClickProxy) - // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them - .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy) - // and also close when focus changes to outside the picker (eg. tabbing between controls) - .on('focusin.daterangepicker', this._outsideClickProxy); - - // Reposition the picker if the window is resized while it's open - $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this)); - - this.oldStartDate = this.startDate.clone(); - this.oldEndDate = this.endDate.clone(); - this.previousRightTime = this.endDate.clone(); - - this.updateView(); - this.container.show(); - this.move(); - this.element.trigger('show.daterangepicker', this); - this.isShowing = true; - }, - - hide: function(e) { - if (!this.isShowing) return; - - //incomplete date selection, revert to last values - if (!this.endDate) { - this.startDate = this.oldStartDate.clone(); - this.endDate = this.oldEndDate.clone(); + if ( isString(field.target) ) { + attr(el, DATA_TARGET, field.target); } - - //if a new date range was selected, invoke the user callback function - if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate)) - this.callback(this.startDate, this.endDate, this.chosenLabel); - - //if picker is attached to a text input, update it - this.updateElement(); - - $(document).off('.daterangepicker'); - $(window).off('.daterangepicker'); - this.container.hide(); - this.element.trigger('hide.daterangepicker', this); - this.isShowing = false; - }, - - toggle: function(e) { - if (this.isShowing) { - this.hide(); - } else { - this.show(); + if ( isString(field.tip) ) { + attr(el, DATA_TIP, field.tip); } - }, - outsideClick: function(e) { - var target = $(e.target); - // if the page is clicked anywhere except within the daterangerpicker/button - // itself then call this.hide() - if ( - // ie modal dialog fix - e.type == "focusin" || - target.closest(this.element).length || - target.closest(this.container).length || - target.closest('.calendar-table').length - ) return; - this.hide(); - this.element.trigger('outsideClick.daterangepicker', this); + return me.fields[key] = field; }, - showCalendars: function() { - this.container.addClass('show-calendar'); - this.move(); - this.element.trigger('showCalendar.daterangepicker', this); - }, + // Parsing field rules + _parseRule: function(field) { + var arr = rDisplay.exec(field.rule); - hideCalendars: function() { - this.container.removeClass('show-calendar'); - this.element.trigger('hideCalendar.daterangepicker', this); + if (!arr) return; + // current rule index + field._i = 0; + if (arr[1]) { + field.display = arr[1]; + } + if (arr[2]) { + field._rules = []; + arr[2].replace(rRules, function(){ + var args = arguments; + args[4] = args[4] || args[5]; + field._rules.push({ + and: args[1] === "&", + not: args[2] === "!", + or: args[6] === "|", + method: args[3], + params: args[4] ? $.map( args[4].split(', '), trim ) : undefined + }); + }); + } }, - hoverRange: function(e) { - - //ignore mouse movements while an above-calendar text input has focus - if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) - return; + // Verify a zone + _multiValidate: function($inputs, doneCallback){ + var me = this, + opt = me.options; - var label = e.target.getAttribute('data-range-key'); + me.hasError = false; - if (label == this.locale.customRangeLabel) { - this.updateView(); - } else { - var dates = this.ranges[label]; - this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format)); - this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format)); + if (opt.ignore) { + $inputs = $inputs.not(opt.ignore); } - }, - - clickRange: function(e) { - var label = e.target.getAttribute('data-range-key'); - this.chosenLabel = label; - if (label == this.locale.customRangeLabel) { - this.showCalendars(); - } else { - var dates = this.ranges[label]; - this.startDate = dates[0]; - this.endDate = dates[1]; - - if (!this.timePicker) { - this.startDate.startOf('day'); - this.endDate.endOf('day'); + $inputs.each(function() { + me._validate(this); + if (me.hasError && opt.stopOnError) { + // stop the validation + return false; } + }); - if (!this.alwaysShowCalendars) - this.hideCalendars(); - this.clickApply(); - } - }, - - clickPrev: function(e) { - var cal = $(e.target).parents('.calendar'); - if (cal.hasClass('left')) { - this.leftCalendar.month.subtract(1, 'month'); - if (this.linkedCalendars) - this.rightCalendar.month.subtract(1, 'month'); - } else { - this.rightCalendar.month.subtract(1, 'month'); + // Need to wait for all fields validation complete, especially asynchronous validation + if (doneCallback) { + me.validating = true; + $.when.apply( + null, + $.map(me.deferred, function(v){return v;}) + ).done(function(){ + doneCallback.call(me, !me.hasError); + me.validating = false; + }); } - this.updateCalendars(); - }, - clickNext: function(e) { - var cal = $(e.target).parents('.calendar'); - if (cal.hasClass('left')) { - this.leftCalendar.month.add(1, 'month'); - } else { - this.rightCalendar.month.add(1, 'month'); - if (this.linkedCalendars) - this.leftCalendar.month.add(1, 'month'); - } - this.updateCalendars(); + // If the form does not contain asynchronous validation, the return value is correct. + // Otherwise, you should detect form validation result through "doneCallback". + return !$.isEmptyObject(me.deferred) ? undefined : !me.hasError; }, - hoverDate: function(e) { - - //ignore mouse movements while an above-calendar text input has focus - //if (this.container.find('input[name=daterangepicker_start]').is(":focus") || this.container.find('input[name=daterangepicker_end]').is(":focus")) - // return; - - //ignore dates that can't be selected - if (!$(e.target).hasClass('available')) return; + // Validate the whole form + _submit: function(e) { + var me = this, + opt = me.options, + form = e.target, + canSubmit = e.type === 'submit' && form.tagName === 'FORM' && !e.isDefaultPrevented(); - //have the text inputs above calendars reflect the date being hovered over - var title = $(e.target).attr('data-title'); - var row = title.substr(1, 1); - var col = title.substr(3, 1); - var cal = $(e.target).parents('.calendar'); - var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; + e.preventDefault(); - if (this.endDate && !this.container.find('input[name=daterangepicker_start]').is(":focus")) { - this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format)); - } else if (!this.endDate && !this.container.find('input[name=daterangepicker_end]').is(":focus")) { - this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format)); + if ( + novalidateonce && ~(novalidateonce = false) || + // Prevent duplicate submission + me.submiting || + // Receive the "validate" event only from the form. + e.type === 'validate' && me.$el[0] !== form || + // trigger the beforeSubmit callback. + isFunction(opt.beforeSubmit) && opt.beforeSubmit.call(me, form) === false + ) { + return; } - //highlight the dates between the start date and the date being hovered as a potential end date - var leftCalendar = this.leftCalendar; - var rightCalendar = this.rightCalendar; - var startDate = this.startDate; - if (!this.endDate) { - this.container.find('.calendar tbody td').each(function(index, el) { - - //skip week numbers, only look at dates - if ($(el).hasClass('week')) return; - - var title = $(el).attr('data-title'); - var row = title.substr(1, 1); - var col = title.substr(3, 1); - var cal = $(el).parents('.calendar'); - var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col]; + if (me.isAjaxSubmit === undefined) { + me._guessAjax(form); + } - if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) { - $(el).addClass('in-range'); - } else { - $(el).removeClass('in-range'); - } + me._debug('log', '\n<<< event: ' + e.type); - }); - } + me._reset(); + me.submiting = true; - }, + me._multiValidate( + me.$el.find(INPUT_SELECTOR), + function(isValid){ + var ret = (isValid || opt.debug === 2) ? 'valid' : 'invalid', + errors; - clickDate: function(e) { - - if (!$(e.target).hasClass('available')) return; - - var title = $(e.target).attr('data-title'); - var row = title.substr(1, 1); - var col = title.substr(3, 1); - var cal = $(e.target).parents('.calendar'); - var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col]; - - // - // this function needs to do a few things: - // * alternate between selecting a start and end date for the range, - // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date - // * if autoapply is enabled, and an end date was chosen, apply the selection - // * if single date picker mode, and time picker isn't enabled, apply the selection immediately - // * if one of the inputs above the calendars was focused, cancel that manual input - // - - if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start - if (this.timePicker) { - var hour = parseInt(this.container.find('.left .hourselect').val(), 10); - if (!this.timePicker24Hour) { - var ampm = this.container.find('.left .ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; - } - var minute = parseInt(this.container.find('.left .minuteselect').val(), 10); - var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0; - date = date.clone().hour(hour).minute(minute).second(second); - } - this.endDate = null; - this.setStartDate(date.clone()); - } else if (!this.endDate && date.isBefore(this.startDate)) { - //special case: clicking the same date for start/end, - //but the time of the end date is before the start date - this.setEndDate(this.startDate.clone()); - } else { // picking end - if (this.timePicker) { - var hour = parseInt(this.container.find('.right .hourselect').val(), 10); - if (!this.timePicker24Hour) { - var ampm = this.container.find('.right .ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; + if (!isValid) { + if (opt.focusInvalid) { + // navigate to the error element + me.$el.find('[' + ARIA_INVALID + ']:first').focus(); + } + errors = $.map(me.errors, function(err){return err;}); } - var minute = parseInt(this.container.find('.right .minuteselect').val(), 10); - var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0; - date = date.clone().hour(hour).minute(minute).second(second); - } - this.setEndDate(date.clone()); - if (this.autoApply) { - this.calculateChosenLabel(); - this.clickApply(); - } - } - - if (this.singleDatePicker) { - this.setEndDate(this.startDate); - if (!this.timePicker) - this.clickApply(); - } - this.updateView(); + // releasing submit + me.submiting = false; + me.isValid = isValid; - //This is to cancel the blur event handler if the mouse was in one of the inputs - e.stopPropagation(); + // trigger callback and event + isFunction(opt[ret]) && opt[ret].call(me, form, errors); + me.$el.trigger(ret + CLS_NS_FORM, [form, errors]); - }, + me._debug('log', '>>> ' + ret); - calculateChosenLabel: function () { - var customRange = true; - var i = 0; - for (var range in this.ranges) { - if (this.timePicker) { - var format = this.timePickerSeconds ? "YYYY-MM-DD hh:mm:ss" : "YYYY-MM-DD hh:mm"; - //ignore times when comparing dates if time picker seconds is not enabled - if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) { - customRange = false; - this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); - break; + if (!isValid) return; + // For jquery.form plugin + if (me.vetoed) { + $(form).ajaxSubmit(me.ajaxFormOptions); } - } else { - //ignore times when comparing dates if time picker is not enabled - if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) { - customRange = false; - this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html(); - break; + else if (canSubmit && !me.isAjaxSubmit) { + document.createElement('form').submit.call(form); } } - i++; - } - if (customRange) { - if (this.showCustomRangeLabel) { - this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html(); - } else { - this.chosenLabel = null; - } - this.showCalendars(); - } + ); }, - clickApply: function(e) { - this.hide(); - this.element.trigger('apply.daterangepicker', this); - }, + _reset: function(e) { + var me = this; - clickCancel: function(e) { - this.startDate = this.oldStartDate; - this.endDate = this.oldEndDate; - this.hide(); - this.element.trigger('cancel.daterangepicker', this); + me.errors = {}; + if (e) { + me.reseting = true; + me.$el.find(INPUT_SELECTOR).each( function(){ + me._resetElement(this); + }); + delete me.reseting; + } }, - monthOrYearChanged: function(e) { - var isLeft = $(e.target).closest('.calendar').hasClass('left'), - leftOrRight = isLeft ? 'left' : 'right', - cal = this.container.find('.calendar.'+leftOrRight); + _resetElement: function(el, all) { + this._setClass(el, null); + this.hideMsg(el); + }, - // Month must be Number for new moment versions - var month = parseInt(cal.find('.monthselect').val(), 10); - var year = cal.find('.yearselect').val(); + // Handle events: "focusin/click" + _focusin: function(e) { + var me = this, + opt = me.options, + el = e.target, + timely, + msg; - if (!isLeft) { - if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) { - month = this.startDate.month(); - year = this.startDate.year(); - } + if ( me.validating || ( e.type==='click' && document.activeElement === el ) ) { + return; } - if (this.minDate) { - if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) { - month = this.minDate.month(); - year = this.minDate.year(); + if (opt.focusCleanup) { + if ( attr(el, ARIA_INVALID) === 'true' ) { + me._setClass(el, null); + me.hideMsg(el); } } - if (this.maxDate) { - if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) { - month = this.maxDate.month(); - year = this.maxDate.year(); - } - } + msg = attr(el, DATA_TIP); - if (isLeft) { - this.leftCalendar.month.month(month).year(year); - if (this.linkedCalendars) - this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month'); + if (msg) { + me.showMsg(el, { + type: 'tip', + msg: msg + }); } else { - this.rightCalendar.month.month(month).year(year); - if (this.linkedCalendars) - this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month'); + if (attr(el, DATA_RULE)) { + me._parse(el); + } + if (timely = attr(el, DATA_TIMELY)) { + if ( timely === 8 || timely === 9 ) { + me._focusout(e); + } + } } - this.updateCalendars(); }, - timeChanged: function(e) { - - var cal = $(e.target).closest('.calendar'), - isLeft = cal.hasClass('left'); - - var hour = parseInt(cal.find('.hourselect').val(), 10); - var minute = parseInt(cal.find('.minuteselect').val(), 10); - var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0; + // Handle events: "focusout/validate/keyup/click/change/input/compositionstart/compositionend" + _focusout: function(e) { + var me = this, + opt = me.options, + el = e.target, + etype = e.type, + etype0, + focusin = etype === 'focusin', + special = etype === 'validate', + elem, + field, + old, + value, + timestamp, + key, specialKey, + timely, + timer = 0; - if (!this.timePicker24Hour) { - var ampm = cal.find('.ampmselect').val(); - if (ampm === 'PM' && hour < 12) - hour += 12; - if (ampm === 'AM' && hour === 12) - hour = 0; + if (etype === 'compositionstart') { + me.pauseValidate = true; } - - if (isLeft) { - var start = this.startDate.clone(); - start.hour(hour); - start.minute(minute); - start.second(second); - this.setStartDate(start); - if (this.singleDatePicker) { - this.endDate = this.startDate.clone(); - } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) { - this.setEndDate(start.clone()); - } - } else if (this.endDate) { - var end = this.endDate.clone(); - end.hour(hour); - end.minute(minute); - end.second(second); - this.setEndDate(end); + if (etype === 'compositionend') { + me.pauseValidate = false; + } + if (me.pauseValidate) { + return; } - //update the calendars so all clickable dates reflect the new time component - this.updateCalendars(); - - //update the form inputs above the calendars with the new time - this.updateFormInputs(); - - //re-render the time pickers because changing one selection can affect what's enabled in another - this.renderTimePicker('left'); - this.renderTimePicker('right'); - - }, - - formInputsChanged: function(e) { - var isRight = $(e.target).closest('.calendar').hasClass('right'); - var start = moment(this.container.find('input[name="daterangepicker_start"]').val(), this.locale.format); - var end = moment(this.container.find('input[name="daterangepicker_end"]').val(), this.locale.format); - - if (start.isValid() && end.isValid()) { + // For checkbox and radio + elem = el.name && _checkable(el) ? me.$el.find('input[name="'+ el.name +'"]').get(0) : el; + // Get field + if (!(field = me.getField(elem)) || !field.rule) { + return; + } + // Cache event type + etype0 = field._e; + field._e = etype; + timely = field.timely; - if (isRight && end.isBefore(start)) - start = end.clone(); + if (!special) { + if (!timely || (_checkable(el) && etype !== 'click')) { + return; + } - this.setStartDate(start); - this.setEndDate(end); + value = field.getValue(); - if (isRight) { - this.container.find('input[name="daterangepicker_start"]').val(this.startDate.format(this.locale.format)); - } else { - this.container.find('input[name="daterangepicker_end"]').val(this.endDate.format(this.locale.format)); + // not validate field unless fill a value + if ( field.ignoreBlank && !value && !focusin ) { + me.hideMsg(el); + return; } - } + if ( etype === 'focusout' ) { + if (etype0 === 'change') { + return; + } + if ( timely === 2 || timely === 8 ) { + old = field.old; + if (value && old) { + if (field.isValid && !old.showOk) { + me.hideMsg(el); + } else { + me._makeMsg(el, field, old); + } + } else { + return; + } + } + } + else { + if ( timely < 2 && !e.data ) { + return; + } - this.updateView(); - }, + // mark timestamp to reduce the frequency of the received event + timestamp = +new Date(); + if ( timestamp - (el._ts || 0) < 100 ) { + return; + } + el._ts = timestamp; - formInputsFocused: function(e) { + // handle keyup + if ( etype === 'keyup' ) { + if (etype0 === 'input') { + return; + } + key = e.keyCode; + specialKey = { + 8: 1, // Backspace + 9: 1, // Tab + 16: 1, // Shift + 32: 1, // Space + 46: 1 // Delete + }; - // Highlight the focused input - this.container.find('input[name="daterangepicker_start"], input[name="daterangepicker_end"]').removeClass('active'); - $(e.target).addClass('active'); + // only gets focus, no validation + if ( key === 9 && !value ) { + return; + } - // Set the state such that if the user goes back to using a mouse, - // the calendars are aware we're selecting the end of the range, not - // the start. This allows someone to edit the end of a date range without - // re-selecting the beginning, by clicking on the end date input then - // using the calendar. - var isRight = $(e.target).closest('.calendar').hasClass('right'); - if (isRight) { - this.endDate = null; - this.setStartDate(this.startDate.clone()); - this.updateView(); + // do not validate, if triggered by these keys + if ( key < 48 && !specialKey[key] ) { + return; + } + } + if ( !focusin ) { + // keyboard events, reducing the frequency of validation + timer = timely <100 ? (etype === 'click' || el.tagName === 'SELECT') ? 0 : 400 : timely; + } + } } - }, - - formInputsBlurred: function(e) { - - // this function has one purpose right now: if you tab from the first - // text input to the second in the UI, the endDate is nulled so that - // you can click another, but if you tab out without clicking anything - // or changing the input value, the old endDate should be retained - - if (!this.endDate) { - var val = this.container.find('input[name="daterangepicker_end"]').val(); - var end = moment(val, this.locale.format); - if (end.isValid()) { - this.setEndDate(end); - this.updateView(); - } + // if the current field is ignored + if ( opt.ignore && $(el).is(opt.ignore) ) { + return; } - }, + clearTimeout(field._t); - formInputsKeydown: function(e) { - // This function ensures that if the 'enter' key was pressed in the input, then the calendars - // are updated with the startDate and endDate. - // This behaviour is automatic in Chrome/Firefox/Edge but not in IE 11 hence why this exists. - // Other browsers and versions of IE are untested and the behaviour is unknown. - if (e.keyCode === 13) { - // Prevent the calendar from being updated twice on Chrome/Firefox/Edge - e.preventDefault(); - this.formInputsChanged(e); + if (timer) { + field._t = setTimeout(function() { + me._validate(el, field); + }, timer); + } else { + if (special) field.old = {}; + me._validate(el, field); } }, - - elementChanged: function() { - if (!this.element.is('input')) return; - if (!this.element.val().length) return; - - var dateString = this.element.val().split(this.locale.separator), - start = null, - end = null; - - if (dateString.length === 2) { - start = moment(dateString[0], this.locale.format); - end = moment(dateString[1], this.locale.format); + _setClass: function(el, isValid) { + var $el = $(el), opt = this.options; + if (opt.bindClassTo) { + $el = $el.closest(opt.bindClassTo); } - - if (this.singleDatePicker || start === null || end === null) { - start = moment(this.element.val(), this.locale.format); - end = start; + $el.removeClass( opt.invalidClass + ' ' + opt.validClass ); + if (isValid !== null) { + $el.addClass( isValid ? opt.validClass : opt.invalidClass ); } - - if (!start.isValid() || !end.isValid()) return; - - this.setStartDate(start); - this.setEndDate(end); - this.updateView(); }, - keydown: function(e) { - //hide on tab or enter - if ((e.keyCode === 9) || (e.keyCode === 13)) { - this.hide(); - } - - //hide on esc and prevent propagation - if (e.keyCode === 27) { - e.preventDefault(); - e.stopPropagation(); + _showmsg: function(e, type, msg) { + var me = this, + el = e.target; - this.hide(); + if ( me.$el.is(el) ) { + if (isObject(type)) { + me.showMsg(type) + } + else if ( type === 'tip' ) { + me.$el.find(INPUT_SELECTOR +"["+ DATA_TIP +"]", el).each(function(){ + me.showMsg(this, {type: type, msg: msg}); + }); + } + } + else { + me.showMsg(el, {type: type, msg: msg}); } }, - updateElement: function() { - if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) { - this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format)); - this.element.trigger('change'); - } else if (this.element.is('input') && this.autoUpdateInput) { - this.element.val(this.startDate.format(this.locale.format)); - this.element.trigger('change'); + _hidemsg: function(e) { + var $el = $(e.target); + + if ( $el.is(INPUT_SELECTOR) ) { + this.hideMsg($el); } }, - remove: function() { - this.container.remove(); - this.element.off('.daterangepicker'); - this.element.removeData(); - } + // Validated a field + _validatedField: function(el, field, ret) { + var me = this, + opt = me.options, + isValid = field.isValid = ret.isValid = !!ret.isValid, + callback = isValid ? 'valid' : 'invalid'; - }; + ret.key = field.key; + ret.ruleName = field._r; + ret.id = el.id; + ret.value = field.value; - $.fn.daterangepicker = function(options, callback) { - var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options); - this.each(function() { - var el = $(this); - if (el.data('daterangepicker')) - el.data('daterangepicker').remove(); - el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback)); - }); - return this; - }; + me.elements[field.key] = ret.element = el; + me.isValid = me.$el[0].isValid = isValid ? me.isFormValid() : isValid; - return DateRangePicker; + if (isValid) { + ret.type = 'ok'; + } else { + if (me.submiting) { + me.errors[field.key] = ret.msg; + } + me.hasError = true; + } -})); + // cache result + field.old = ret; -/** - * @author: pppscn <35696959@qq.com> - * @version: v0.0.1 - * - * @update 2017-05-07 <http://git.oschina.net/pp/fastadmin> - * @update 2017-09-17 <http://git.oschina.net/karson/fastadmin> - */ + // trigger callback + isFunction(field[callback]) && field[callback].call(me, el, ret); + isFunction(opt.validation) && opt.validation.call(me, el, ret); -!function ($) { - 'use strict'; + // trigger event + $(el).attr( ARIA_INVALID, isValid ? null : true ) + .trigger( callback + CLS_NS_FIELD, [ret, me] ); + me.$el.triggerHandler('validation', [ret, me]); - var ColumnsForSearch = []; + if (me.checkOnly) return; + // set className + me._setClass(el, ret.skip || ret.type === 'tip' ? null : isValid); + me._makeMsg.apply(me, arguments); + }, - var sprintf = $.fn.bootstrapTable.utils.sprintf; + _makeMsg: function(el, field, ret) { + // show or hide the message + if (field.msgMaker) { + ret = $.extend({}, ret); + if (field._e === 'focusin') { + ret.type = 'tip'; + } + this[ ret.showOk || ret.msg || ret.type === 'tip' ? 'showMsg' : 'hideMsg' ](el, ret, field); + } + }, - var initCommonSearch = function (pColumns, that) { - var vFormCommon = createFormCommon(pColumns, that); + // Validated a rule + _validatedRule: function(el, field, ret, msgOpt) { + field = field || me.getField(el); + msgOpt = msgOpt || {}; - var vModal = sprintf("<div class=\"commonsearch-table %s\">", that.options.searchFormVisible ? "" : "hidden"); - vModal += vFormCommon.join(''); - vModal += "</div>"; - that.$container.prepend($(vModal)); - that.$commonsearch = $(".commonsearch-table", that.$container); - var form = $("form.form-commonsearch", that.$commonsearch); + var me = this, + msg, + rule, + method = field._r, + timely = field.timely, + special = timely === 9 || timely === 8, + transfer, + temp, + isValid = false; - //绑定日期时间元素事件 - if ($(".datetimepicker", form).size() > 0) { - - require(['bootstrap-datetimepicker'], function () { - $('.datetimepicker', form).parent().css('position', 'relative'); - $('.datetimepicker', form).datetimepicker({ - //format: 'YYYY-MM-DD', - icons: { - time: 'fa fa-clock-o', - date: 'fa fa-calendar', - up: 'fa fa-chevron-up', - down: 'fa fa-chevron-down', - previous: 'fa fa-chevron-left', - next: 'fa fa-chevron-right', - today: 'fa fa-history', - clear: 'fa fa-trash', - close: 'fa fa-remove' - }, - showTodayButton: true, - showClose: true - }); - }); - } - if ($(".datetimerange", form).size() > 0) { - var ranges = {}; - ranges[__('Today')] = [Moment().startOf('day'), Moment().endOf('day')]; - ranges[__('Yesterday')] = [Moment().subtract(1, 'days').startOf('day'), Moment().subtract(1, 'days').endOf('day')]; - ranges[__('Last 7 Days')] = [Moment().subtract(6, 'days').startOf('day'), Moment().endOf('day')]; - ranges[__('Last 30 Days')] = [Moment().subtract(29, 'days').startOf('day'), Moment().endOf('day')]; - ranges[__('This Month')] = [Moment().startOf('month'), Moment().endOf('month')]; - ranges[__('Last Month')] = [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')]; - var options = { - timePicker: false, - autoUpdateInput: false, - timePickerSeconds: true, - timePicker24Hour: true, - autoApply: true, - locale: { - format: 'YYYY-MM-DD HH:mm:ss', - customRangeLabel: __("Custom Range"), - applyLabel: __("Apply"), - cancelLabel: __("Clear"), - }, - ranges: ranges, - }; - var callback = function (start, end) { - $(this.element).val(start.format(options.locale.format) + " - " + end.format(options.locale.format)); - }; - var column, index; - require(['bootstrap-daterangepicker'], function () { - $(".datetimerange", form).each(function () { - $(this).on('apply.daterangepicker', function (ev, picker) { - callback.call(picker, picker.startDate, picker.endDate); - }); - $(this).on('cancel.daterangepicker', function (ev, picker) { - $(this).val(''); - }); - index = $(this).data("index"); - column = pColumns[index]; - $(this).daterangepicker($.extend({}, options, column.options || {}), callback); - }); - }); - } + // use null to break validation from a field + if (ret === null) { + me._validatedField(el, field, {isValid: true, skip: true}); + field._i = 0; + return; + } + else if (ret === undefined) { + transfer = true; + } + else if (ret === true || ret === '') { + isValid = true; + } + else if (isString(ret)) { + msg = ret; + } + else if (isObject(ret)) { + if (ret.error) { + msg = ret.error; + } else { + msg = ret.ok; + isValid = true; + } + } + else { + isValid = !!ret + } - // 表单提交 - form.on("submit", function (event) { - event.preventDefault(); - that.onCommonSearch(); - return false; - }); + rule = field._rules[field._i]; + if (rule.not) { + msg = undefined; + isValid = method === "required" || !isValid; + } + if (rule.or) { + if (isValid) { + while ( field._i < field._rules.length && field._rules[field._i].or ) { + field._i++; + } + } else { + transfer = true; + } + } + else if (rule.and) { + if (!field.isValid) transfer = true; + } - // 重置搜索 - form.on("click", "button[type=reset]", function (event) { - form[0].reset(); - that.onCommonSearch(); - }); + if (transfer) { + isValid = true; + } + // message analysis, and throw rule level event + else { + if (isValid) { + if (field.showOk !== false) { + temp = attr(el, DATA_OK); + msg = temp === null ? isString(field.ok) ? field.ok : msg : temp; + if (!isString(msg) && isString(field.showOk)) { + msg = field.showOk; + } + if (isString(msg)) { + msgOpt.showOk = isValid; + } + } + } + if (!isValid || special) { + /* rule message priority: + 1. custom DOM message + 2. custom field message; + 3. global defined message; + 4. rule returned message; + 5. default message; + */ + msg = (_getDataMsg(el, field, msg || rule.msg || me.messages[method]) || me.messages.fallback).replace(/\{0\|?([^\}]*)\}/, function(m, defaultDisplay){ + return me._getDisplay(el, field.display) || defaultDisplay || me.messages[0]; + }); + } + if (!isValid) field.isValid = isValid; + msgOpt.msg = msg; + $(el).trigger( (isValid ? 'valid' : 'invalid') + CLS_NS_RULE, [method, msg]); + } - }; + if (special && (!transfer || rule.and)) { + if (!isValid && !field._m) field._m = msg; + field._v = field._v || []; + field._v.push({ + type: isValid ? !transfer ? 'ok' : 'tip' : 'error', + msg: msg || rule.msg + }); + } - var createFormCommon = function (pColumns, that) { - var htmlForm = []; - var opList = ['=', '>', '>=', '<', '<=', '!=', 'FIND_IN_SET', 'LIKE', 'LIKE %...%', 'NOT LIKE', 'IN', 'NOT IN', 'IN(...)', 'NOT IN(...)', 'BETWEEN', 'NOT BETWEEN', 'RANGE', 'NOT RANGE', 'IS NULL', 'IS NOT NULL']; - htmlForm.push(sprintf('<form class="form-horizontal form-commonsearch" action="%s" >', that.options.actionForm)); - htmlForm.push('<fieldset>'); - if (that.options.titleForm.length > 0) - htmlForm.push(sprintf("<legend>%s</legend>", that.options.titleForm)); - htmlForm.push('<div class="row">'); - for (var i in pColumns) { - var vObjCol = pColumns[i]; - if (!vObjCol.checkbox && vObjCol.field !== 'operate' && vObjCol.searchable && vObjCol.operate !== false) { - var query = Backend.api.query(vObjCol.field); - query = query ? query : ''; - vObjCol.defaultValue = that.options.renderDefault && query != '' ? query : (typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue); - ColumnsForSearch.push(vObjCol); + me._debug('log', ' ' + field._i + ': ' + method + ' => ' + (isValid || msg)); - htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">'); - htmlForm.push(sprintf('<label for="%s" class="control-label col-xs-4">%s</label>', vObjCol.field, vObjCol.title)); - htmlForm.push('<div class="col-xs-8">'); + // the current rule has passed, continue to validate + if ( (isValid || special) && field._i < field._rules.length - 1) { + field._i++; + me._checkRule(el, field); + } + // field was invalid, or all fields was valid + else { + field._i = 0; - vObjCol.operate = (typeof vObjCol.operate === 'undefined' || $.inArray(vObjCol.operate.toUpperCase(), opList) === -1) ? '=' : vObjCol.operate.toUpperCase(); - htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="field-%s" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate)); + if (special) { + msgOpt.isValid = field.isValid; + msgOpt.result = field._v; + msgOpt.msg = field._m || ''; + if (!field.value && (field._e === 'focusin')) { + msgOpt.type = 'tip'; + } + } else { + msgOpt.isValid = isValid; + } - var style = typeof vObjCol.style === 'undefined' ? '' : sprintf('style="%s"', vObjCol.style); - if (vObjCol.searchList) { - if (typeof vObjCol.searchList === 'object' && typeof vObjCol.searchList.then === 'function') { - htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, sprintf('<option value="">%s</option>', that.options.formatCommonChoose()))); - (function (vObjCol, that) { - $.when(vObjCol.searchList).done(function (ret) { + me._validatedField(el, field, msgOpt); + delete field._m; + delete field._v; + } + }, - var isArray = false; - if (ret.data && ret.data.searchlist && $.isArray(ret.data.searchlist)) { - var resultlist = {}; - $.each(ret.data.searchlist, function (key, value) { - resultlist[value.id] = value.name; - }); - } else if (ret.constructor === Array || ret.constructor === Object) { - var resultlist = ret; - isArray = ret.constructor === Array ? true : isArray; - } - var optionList = []; - $.each(resultlist, function (key, value) { - var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : ''; - optionList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect)); - }); - $("form.form-commonsearch select[name='" + vObjCol.field + "']", that.$container).append(optionList.join('')); - }); - })(vObjCol, that); - } else if (typeof vObjCol.searchList == 'function') { - htmlForm.push(vObjCol.searchList.call(this, vObjCol)); - } else { - var isArray = vObjCol.searchList.constructor === Array; - var searchList = []; - searchList.push(sprintf('<option value="">%s</option>', that.options.formatCommonChoose())); - $.each(vObjCol.searchList, function (key, value) { - var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : ''; - searchList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect)); - }); - htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, searchList.join(''))); - } - } else { - var placeholder = typeof vObjCol.placeholder === 'undefined' ? vObjCol.title : vObjCol.placeholder; - var type = typeof vObjCol.type === 'undefined' ? 'text' : vObjCol.type; - var addclass = typeof vObjCol.addclass === 'undefined' ? 'form-control' : 'form-control ' + vObjCol.addclass; - var data = typeof vObjCol.data === 'undefined' ? '' : vObjCol.data; - var defaultValue = typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue; - if (/BETWEEN$/.test(vObjCol.operate)) { - var defaultValueArr = defaultValue.toString().match(/\|/) ? defaultValue.split('|') : ['', '']; - var placeholderArr = placeholder.toString().match(/\|/) ? placeholder.split('|') : [placeholder, placeholder]; - htmlForm.push('<div class="row row-between">'); - htmlForm.push(sprintf('<div class="col-xs-6 11"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, data)); - htmlForm.push(sprintf('<div class="col-xs-6 22"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, data)); - htmlForm.push('</div>'); - } else { - htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addclass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, data)); - } - } + // Verify a rule form a field + _checkRule: function(el, field) { + var me = this, + ret, + fn, + old, + key = field.key, + rule = field._rules[field._i], + method = rule.method, + params = rule.params; - htmlForm.push('</div>'); - htmlForm.push('</div>'); + // request has been sent, wait it + if (me.submiting && me.deferred[key]) { + return; } - } - htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">'); - htmlForm.push(createFormBtn(that).join('')); - htmlForm.push('</div>'); - htmlForm.push('</div>'); - htmlForm.push('</fieldset>'); - htmlForm.push('</form>'); + old = field.old; + field._r = method; - return htmlForm; - }; + if (old && !field.must && !rule.must && rule.result !== undefined && + old.ruleName === method && old.id === el.id && + field.value && old.value === field.value ) + { + // get result from cache + ret = rule.result; + } + else { + // get result from current rule + fn = _getDataRule(el, method) || me.rules[method] || noop; + ret = fn.call(field, el, params, field); + if (fn.msg) rule.msg = fn.msg; + } - var createFormBtn = function (that) { - var htmlBtn = []; - var searchSubmit = that.options.formatCommonSubmitButton(); - var searchReset = that.options.formatCommonResetButton(); - htmlBtn.push('<div class="col-sm-8 col-xs-offset-4">'); - htmlBtn.push(sprintf('<button type="submit" class="btn btn-success" >%s</button> ', searchSubmit)); - htmlBtn.push(sprintf('<button type="reset" class="btn btn-default" >%s</button> ', searchReset)); - htmlBtn.push('</div>'); - return htmlBtn; - }; + // asynchronous validation + if (isObject(ret) && isFunction(ret.then)) { + me.deferred[key] = ret; - var isSearchAvailble = function (that) { + // whether the field valid is unknown + field.isValid = undefined; - //只支持服务端搜索 - if (!that.options.commonSearch || that.options.sidePagination != 'server' || !that.options.url) { - return false; - } + // show loading message + !me.checkOnly && me.showMsg(el, { + type: 'loading', + msg: me.messages.loading + }, field); - return true; - }; + // waiting to parse the response data + ret.then( + function(d, textStatus, jqXHR) { + var data = trim(jqXHR.responseText), + result, + dataFilter = field.dataFilter; - var getSearchQuery = function (that, removeempty) { - var op = {}; - var filter = {}; - var value = ''; - $("form.form-commonsearch input.operate", that.$commonsearch).each(function (i) { - var name = $(this).data("name"); - var sym = $(this).val().toUpperCase(); - var obj = $("[name='" + name + "']", that.$commonsearch); - if (obj.size() == 0) - return true; - var vObjCol = ColumnsForSearch[i]; - if (obj.size() > 1) { - if (/BETWEEN$/.test(sym)) { - var value_begin = $.trim($("[name='" + name + "']:first", that.$commonsearch).val()), value_end = $.trim($("[name='" + name + "']:last", that.$commonsearch).val()); - if (value_begin.length || value_end.length) { - if (typeof vObjCol.process === 'function') { - value_begin = vObjCol.process(value_begin, 'begin'); - value_end = vObjCol.process(value_end, 'end'); + // detect if data is json or jsonp format + if (/jsonp?/.test(this.dataType)) { + data = d; + } else if (data.charAt(0) === '{') { + data = $.parseJSON(data); } - value = value_begin + ',' + value_end; - } else { - value = ''; - } - //如果是时间筛选,将operate置为RANGE - if ($("[name='" + name + "']:first", that.$commonsearch).hasClass("datetimepicker")) { - sym = 'RANGE'; + + // filter data + result = dataFilter.call(this, data, field); + if (result === undefined) result = dataFilter.call(this, data.data, field); + + rule.data = this.data; + rule.result = field.old ? result : undefined; + me._validatedRule(el, field, result); + }, + function(jqXHR, textStatus){ + me._validatedRule(el, field, me.messages[textStatus] || textStatus); } - } else { - value = $("[name='" + name + "']:checked", that.$commonsearch).val(); - } - } else { - value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : (sym == 'LIKE %...%' ? obj.val().replace(/\*/g, '%') : obj.val()); + ).always(function(){ + delete me.deferred[key]; + }); } - if (removeempty && value == '' && sym.indexOf("NULL") == -1) { - return true; + // other result + else { + me._validatedRule(el, field, ret); } + }, - op[name] = sym; - filter[name] = value; - }); - return {op: op, filter: filter}; - }; - - var getQueryParams = function (params, searchQuery, removeempty) { - params.filter = typeof params.filter === 'Object' ? params.filter : (params.filter ? JSON.parse(params.filter) : {}); - params.op = typeof params.op === 'Object' ? params.op : (params.op ? JSON.parse(params.op) : {}); + // Processing the validation + _validate: function(el, field) { + var me = this; - params.filter = $.extend({}, params.filter, searchQuery.filter); - params.op = $.extend({}, params.op, searchQuery.op); - //移除empty的值 - if (removeempty) { - $.each(params.filter, function (i, j) { - if (j === '') { - delete params.filter[i]; - delete params.op[i]; - } - }); - } - params.filter = JSON.stringify(params.filter); - params.op = JSON.stringify(params.op); - return params; - }; + // doesn't validate the element that has "disabled" or "novalidate" attribute + if ( el.disabled || attr(el, NOVALIDATE) !== null ) { + return; + } - $.extend($.fn.bootstrapTable.defaults, { - commonSearch: false, - titleForm: "Common search", - actionForm: "", - searchFormVisible: true, - searchClass: 'searchit', - renderDefault: true, - onCommonSearch: function (field, text) { - return false; - }, - onPostCommonSearch: function (table) { - return false; - } - }); + field = field || me.getField(el); + if (!field) return; + if (!field._rules) me._parse(el); + if (!field._rules) return; - $.extend($.fn.bootstrapTable.defaults.icons, { - commonSearchIcon: 'glyphicon-search' - }); + me._debug('info', field.key); - $.extend($.fn.bootstrapTable.Constructor.EVENTS, { - 'common-search.bs.table': 'onCommonSearch', - 'post-common-search.bs.table': 'onPostCommonSearch' - }); - $.extend($.fn.bootstrapTable.locales[$.fn.bootstrapTable.defaults.locale], { - formatCommonSearch: function () { - return "Common search"; - }, - formatCommonSubmitButton: function () { - return "Submit"; - }, - formatCommonResetButton: function () { - return "Reset"; - }, - formatCommonCloseButton: function () { - return "Close"; - }, - formatCommonChoose: function () { - return "Choose"; - } - }); + field.isValid = true; + field.element = el; + // Cache the value + field.value = field.getValue(); - $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales); + // if the field is not required, and that has a blank value + if (!field.required && !field.must && !field.value) { + if (!_checkable(el)) { + me._validatedField(el, field, {isValid: true}); + return true; + } + } - var BootstrapTable = $.fn.bootstrapTable.Constructor, - _initHeader = BootstrapTable.prototype.initHeader, - _initToolbar = BootstrapTable.prototype.initToolbar, - _load = BootstrapTable.prototype.load, - _initSearch = BootstrapTable.prototype.initSearch; + me._checkRule(el, field); + return field.isValid; + }, - BootstrapTable.prototype.initHeader = function () { - _initHeader.apply(this, Array.prototype.slice.apply(arguments)); - this.$header.find('th[data-field]').each(function (i) { - var column = $(this).data(); - if (typeof column['width'] !== 'undefined') { - $(this).css("min-width", column['width']); + _debug: function(type, messages) { + if (window.console && this.options.debug) { + console[type](messages); } - }); - }; - BootstrapTable.prototype.initToolbar = function () { - _initToolbar.apply(this, Array.prototype.slice.apply(arguments)); - - if (!isSearchAvailble(this)) { - return; - } - - var that = this, - html = []; - html.push(sprintf('<div class="columns-%s pull-%s" style="margin-top:10px;margin-bottom:10px;">', this.options.buttonsAlign, this.options.buttonsAlign)); - html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="commonSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatCommonSearch())); - html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.commonSearchIcon)) - html.push('</button></div>'); - - if (that.$toolbar.find(".pull-right").size() > 0) { - $(html.join('')).insertBefore(that.$toolbar.find(".pull-right:first")); - } else { - that.$toolbar.append(html.join('')); - } - - initCommonSearch(that.columns, that); + }, - that.$toolbar.find('button[name="commonSearch"]') - .off('click').on('click', function () { - that.$commonsearch.toggleClass("hidden"); - return; - }); + /** + * Detecting whether the value of an element that matches a rule + * + * @method test + * @param {Element} el - input element + * @param {String} rule - rule name + */ + test: function(el, rule) { + var me = this, + ret, + parts = rRule.exec(rule), + field, + method, + params; - that.$container.on("click", "." + that.options.searchClass, function () { - var obj = $("form [name='" + $(this).data("field") + "']", that.$commonsearch); - if (obj.size() > 0) { - obj.val($(this).data("value")); - $("form", that.$commonsearch).trigger("submit"); + if (parts) { + method = parts[1]; + if (method in me.rules) { + params = parts[2] || parts[3]; + params = params ? params.split(', ') : undefined; + field = me.getField(el, true); + field._r = method; + field.value = field.getValue(); + ret = me.rules[method].call(field, el, params); + } } - }); - var queryParams = that.options.queryParams; - //匹配默认搜索值 - this.options.queryParams = function (params) { - return queryParams(getQueryParams(params, getSearchQuery(this, true))); - }; - this.trigger('post-common-search', that); - - }; - BootstrapTable.prototype.onCommonSearch = function () { - var searchQuery = getSearchQuery(this); - this.trigger('common-search', this, searchQuery); - this.options.pageNumber = 1; - this.refresh({}); - }; + return ret === true || ret === undefined || ret === null; + }, - BootstrapTable.prototype.load = function (data) { - _load.apply(this, Array.prototype.slice.apply(arguments)); + _getDisplay: function(el, str) { + return !isString(str) ? isFunction(str) ? str.call(this, el) : '' : str; + }, - if (!isSearchAvailble(this)) { - return; - } - }; + _getMsgOpt: function(obj, field) { + var opt = field ? field : this.options; + return $.extend({ + type: 'error', + pos: _getPos(opt.msgClass), + target: opt.target, + wrapper: opt.msgWrapper, + style: opt.msgStyle, + cls: opt.msgClass, + arrow: opt.msgArrow, + icon: opt.msgIcon + }, isString(obj) ? {msg: obj} : obj); + }, - BootstrapTable.prototype.initSearch = function () { - _initSearch.apply(this, Array.prototype.slice.apply(arguments)); + _getMsgDOM: function(el, msgOpt) { + var $el = $(el), $msgbox, datafor, tgt, container; - if (!isSearchAvailble(this)) { - return; - } + if ( $el.is(INPUT_SELECTOR) ) { + tgt = msgOpt.target || attr(el, DATA_TARGET); + if (tgt) { + tgt = !isFunction(tgt) ? tgt.charAt(0) === '#' ? $(tgt) : this.$el.find(tgt) : tgt.call(this, el); + if (tgt.length) { + if ( tgt.is(INPUT_SELECTOR) ) { + $el = tgt + el = tgt.get(0); + } else if ( tgt.hasClass(CLS_MSG_BOX) ) { + $msgbox = tgt; + } else { + container = tgt; + } + } + } + if (!$msgbox) { + datafor = (!_checkable(el) || !el.name) && el.id ? el.id : el.name; + $msgbox = (container || this.$el).find(msgOpt.wrapper + '.' + CLS_MSG_BOX + '[for="' + datafor + '"]'); + } + } else { + $msgbox = $el; + } - var that = this; - var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial; - this.data = fp ? $.grep(this.data, function (item, i) { - for (var key in fp) { - var fval = fp[key].toLowerCase(); - var value = item[key]; - value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header, - that.header.formatters[$.inArray(key, that.header.fields)], - [value, item, i], value); + // Create new message box + if (!msgOpt.hide && !$msgbox.length) { + $msgbox = $('<'+ msgOpt.wrapper + '>').attr({ + 'class': CLS_MSG_BOX + (msgOpt.cls ? ' ' + msgOpt.cls : ''), + 'style': msgOpt.style || undefined, + 'for': datafor + }); - if (!($.inArray(key, that.header.fields) !== -1 && - (typeof value === 'string' || typeof value === 'number') && - (value + '').toLowerCase().indexOf(fval) !== -1)) { - return false; + if (container) { + $msgbox.appendTo(container); + } else { + if ( _checkable(el) ) { + var $parent = $el.parent(); + $msgbox.appendTo( $parent.is('label') ? $parent.parent() : $parent ); + } else { + $msgbox[!msgOpt.pos || msgOpt.pos === 'right' ? 'insertAfter' : 'insertBefore']($el); + } } } - return true; - }) : this.data; - }; -}(jQuery); -define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) { - return function () { - var ret, fn; - return ret || global.$.fn.bootstrapTable.defaults; - }; -}(this))); + return $msgbox; + }, -/*!art-template - Template Engine | http://aui.github.com/artTemplate/*/ -!function(){function a(a){return a.replace(t,"").replace(u,",").replace(v,"").replace(w,"").replace(x,"").split(y)}function b(a){return"'"+a.replace(/('|\\)/g,"\\$1").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+"'"}function c(c,d){function e(a){return m+=a.split(/\n/).length-1,k&&(a=a.replace(/\s+/g," ").replace(/<!--[\w\W]*?-->/g,"")),a&&(a=s[1]+b(a)+s[2]+"\n"),a}function f(b){var c=m;if(j?b=j(b,d):g&&(b=b.replace(/\n/g,function(){return m++,"$line="+m+";"})),0===b.indexOf("=")){var e=l&&!/^=[=#]/.test(b);if(b=b.replace(/^=[=#]?|[\s;]*$/g,""),e){var f=b.replace(/\s*\([^\)]+\)/,"");n[f]||/^(include|print)$/.test(f)||(b="$escape("+b+")")}else b="$string("+b+")";b=s[1]+b+s[2]}return g&&(b="$line="+c+";"+b),r(a(b),function(a){if(a&&!p[a]){var b;b="print"===a?u:"include"===a?v:n[a]?"$utils."+a:o[a]?"$helpers."+a:"$data."+a,w+=a+"="+b+",",p[a]=!0}}),b+"\n"}var g=d.debug,h=d.openTag,i=d.closeTag,j=d.parser,k=d.compress,l=d.escape,m=1,p={$data:1,$filename:1,$utils:1,$helpers:1,$out:1,$line:1},q="".trim,s=q?["$out='';","$out+=",";","$out"]:["$out=[];","$out.push(",");","$out.join('')"],t=q?"$out+=text;return $out;":"$out.push(text);",u="function(){var text=''.concat.apply('',arguments);"+t+"}",v="function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);"+t+"}",w="'use strict';var $utils=this,$helpers=$utils.$helpers,"+(g?"$line=0,":""),x=s[0],y="return new String("+s[3]+");";r(c.split(h),function(a){a=a.split(i);var b=a[0],c=a[1];1===a.length?x+=e(b):(x+=f(b),c&&(x+=e(c)))});var z=w+x+y;g&&(z="try{"+z+"}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:"+b(c)+".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");try{var A=new Function("$data","$filename",z);return A.prototype=n,A}catch(a){throw a.temp="function anonymous($data,$filename) {"+z+"}",a}}var d=function(a,b){return"string"==typeof b?q(b,{filename:a}):g(a,b)};d.version="3.0.0",d.config=function(a,b){e[a]=b};var e=d.defaults={openTag:"<%",closeTag:"%>",escape:!0,cache:!0,compress:!1,parser:null},f=d.cache={};d.render=function(a,b){return q(a)(b)};var g=d.renderFile=function(a,b){var c=d.get(a)||p({filename:a,name:"Render Error",message:"Template not found"});return b?c(b):c};d.get=function(a){var b;if(f[a])b=f[a];else if("object"==typeof document){var c=document.getElementById(a);if(c){var d=(c.value||c.innerHTML).replace(/^\s*|\s*$/g,"");b=q(d,{filename:a})}}return b};var h=function(a,b){return"string"!=typeof a&&(b=typeof a,"number"===b?a+="":a="function"===b?h(a.call(a)):""),a},i={"<":"<",">":">",'"':""","'":"'","&":"&"},j=function(a){return i[a]},k=function(a){return h(a).replace(/&(?![\w#]+;)|[<>"']/g,j)},l=Array.isArray||function(a){return"[object Array]"==={}.toString.call(a)},m=function(a,b){var c,d;if(l(a))for(c=0,d=a.length;c<d;c++)b.call(a,a[c],c,a);else for(c in a)b.call(a,a[c],c)},n=d.utils={$helpers:{},$include:g,$string:h,$escape:k,$each:m};d.helper=function(a,b){o[a]=b};var o=d.helpers=n.$helpers;d.onerror=function(a){var b="Template Error\n\n";for(var c in a)b+="<"+c+">\n"+a[c]+"\n\n";"object"==typeof console&&console.error(b)};var p=function(a){return d.onerror(a),function(){return"{Template Error}"}},q=d.compile=function(a,b){function d(c){try{return new i(c,h)+""}catch(d){return b.debug?p(d)():(b.debug=!0,q(a,b)(c))}}b=b||{};for(var g in e)void 0===b[g]&&(b[g]=e[g]);var h=b.filename;try{var i=c(a,b)}catch(a){return a.filename=h||"anonymous",a.name="Syntax Error",p(a)}return d.prototype=i.prototype,d.toString=function(){return i.toString()},h&&b.cache&&(f[h]=d),d},r=n.$each,s="break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined",t=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g,u=/[^\w$]+/g,v=new RegExp(["\\b"+s.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),w=/^\d[^,]*|,\d[^,]*/g,x=/^,+|,+$/g,y=/^$|,+/;"object"==typeof exports&&"undefined"!=typeof module?module.exports=d:"function"==typeof define?define('template',[],function(){return d}):this.template=d}(); -/** - * 将BootstrapTable的行使用自定义的模板来渲染 - * - * @author: karson - * @version: v0.0.1 - * - * @update 2017-06-24 <http://github.com/karsonzhang/fastadmin> - */ + /** + * Show validation message + * + * @method showMsg + * @param {Element} el - input element + * @param {Object} msgOpt + */ + showMsg: function(el, msgOpt, /*INTERNAL*/ field) { + if (!el) return; + var me = this, + opt = me.options, + msgShow, + msgMaker, + temp, + $msgbox; -!function ($) { - 'use strict'; + if (isObject(el) && !el.jquery && !msgOpt) { + $.each(el, function(key, msg) { + var el = me.elements[key] || me.$el.find(_key2selector(key))[0]; + me.showMsg(el, msg); + }); + return; + } - $.extend($.fn.bootstrapTable.defaults, { - //是否启用模板渲染 - templateView: false, - //数据格式化的模板ID或格式函数 - templateFormatter: "itemtpl", - //添加的父类的class - templateParentClass: "row row-flex", - //向table添加的class - templateTableClass: "table-template", + if ($(el).is(INPUT_SELECTOR)) { + field = field || me.getField(el); + } - }); + if (!(msgMaker = (field || opt).msgMaker)) { + return; + } - var BootstrapTable = $.fn.bootstrapTable.Constructor, - _initContainer = BootstrapTable.prototype.initContainer, - _initBody = BootstrapTable.prototype.initBody, - _initRow = BootstrapTable.prototype.initRow; + msgOpt = me._getMsgOpt(msgOpt, field); + el = (el.name && _checkable(el) ? me.$el.find('input[name="'+ el.name +'"]') : $(el)).get(0); - BootstrapTable.prototype.initContainer = function () { - _initContainer.apply(this, Array.prototype.slice.apply(arguments)); - var that = this; - if (!that.options.templateView) { - return; - } - that.options.cardView = true; + // ok or tip + if (!msgOpt.msg && msgOpt.type !== 'error') { + temp = attr(el, 'data-' + msgOpt.type); + if (temp !== null) msgOpt.msg = temp; + } - }; + if ( !isString(msgOpt.msg) ) { + return; + } - BootstrapTable.prototype.initBody = function () { - var that = this; - $.extend(that.options, { - showHeader: !that.options.templateView ? $.fn.bootstrapTable.defaults.showHeader : false, - showFooter: !that.options.templateView ? $.fn.bootstrapTable.defaults.showFooter : false, - }); - $(that.$el).toggleClass(that.options.templateTableClass, that.options.templateView); + $msgbox = me._getMsgDOM(el, msgOpt); - _initBody.apply(this, Array.prototype.slice.apply(arguments)); + !rPos.test($msgbox[0].className) && $msgbox.addClass(msgOpt.cls); + if ( isIE === 6 && msgOpt.pos === 'bottom' ) { + $msgbox[0].style.marginTop = $(el).outerHeight() + 'px'; + } + $msgbox.html( msgMaker.call(me, msgOpt) )[0].style.display = ''; - if (!that.options.templateView) { - return; - } else { - //由于Bootstrap是基于Table的,添加一个父类容器 - $("> *:not(.no-records-found)", that.$body).wrapAll($("<div />").addClass(that.options.templateParentClass)); - } - }; + if (isFunction(msgShow = field && field.msgShow || opt.msgShow)) { + msgShow.call(me, $msgbox, msgOpt.type); + } + }, - BootstrapTable.prototype.initRow = function (item, i, data, parentDom) { - var that = this; - //如果未启用则使用原生的initRow方法 - if (!that.options.templateView) { - return _initRow.apply(that, Array.prototype.slice.apply(arguments)); - } - var $content = ''; - if (typeof that.options.templateFormatter === 'function') { - $content = that.options.templateFormatter.call(that, item, i, data); - } else { - var Template = require('template'); - $content = Template(that.options.templateFormatter, {item: item, i: i, data: data}); - } - return $content; - }; + /** + * Hide validation message + * + * @method hideMsg + * @param {Element} el - input element + * @param {Object} msgOpt optional + */ + hideMsg: function(el, msgOpt, /*INTERNAL*/ field) { + var me = this, + opt = me.options, + msgHide, + $msgbox; -}(jQuery); + el = $(el).get(0); + if ($(el).is(INPUT_SELECTOR)) { + field = field || me.getField(el); + if (field) { + if (field.isValid || me.reseting) attr(el, ARIA_INVALID, null); + } + } -define("bootstrap-table-template", ["bootstrap-table","template"], (function (global) { - return function () { - var ret, fn; - return ret || global.$.fn.bootstrapTable.defaults; - }; -}(this))); + msgOpt = me._getMsgOpt(msgOpt, field); + msgOpt.hide = true; -define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table', 'bootstrap-table-lang', 'bootstrap-table-export', 'bootstrap-table-commonsearch', 'bootstrap-table-template'], function ($, undefined, Moment) { - var Table = { - list: {}, - // Bootstrap-table 基础配置 - defaults: { - url: '', - sidePagination: 'server', - method: 'get', //请求方法 - toolbar: ".toolbar", //工具栏 - search: true, //是否启用快速搜索 - cache: false, - commonSearch: true, //是否启用通用搜索 - searchFormVisible: false, //是否始终显示搜索表单 - titleForm: '', //为空则不显示标题,不定义默认显示:普通搜索 - idTable: 'commonTable', - showExport: true, - exportDataType: "all", - exportTypes: ['json', 'xml', 'csv', 'txt', 'doc', 'excel'], - pageSize: 10, - pageList: [10, 25, 50, 'All'], - pagination: true, - clickToSelect: true, //是否启用点击选中 - singleSelect: false, //是否启用单选 - showRefresh: false, - locale: 'zh-CN', - showToggle: true, - showColumns: true, - pk: 'id', - sortName: 'id', - sortOrder: 'desc', - paginationFirstText: __("First"), - paginationPreText: __("Previous"), - paginationNextText: __("Next"), - paginationLastText: __("Last"), - cardView: false, //卡片视图 - checkOnInit: true, //是否在初始化时判断 - escape: true, //是否对内容进行转义 - extend: { - index_url: '', - add_url: '', - edit_url: '', - del_url: '', - import_url: '', - multi_url: '', - dragsort_url: 'ajax/weigh', + $msgbox = me._getMsgDOM(el, msgOpt); + if (!$msgbox.length) return; + + if ( isFunction(msgHide = field && field.msgHide || opt.msgHide) ) { + msgHide.call(me, $msgbox, msgOpt.type); + } else { + $msgbox[0].style.display = 'none'; + $msgbox[0].innerHTML = ''; } }, - // Bootstrap-table 列配置 - columnDefaults: { - align: 'center', - valign: 'middle', - }, - config: { - firsttd: 'tbody tr td:first-child:not(:has(div.card-views))', - toolbar: '.toolbar', - refreshbtn: '.btn-refresh', - addbtn: '.btn-add', - editbtn: '.btn-edit', - delbtn: '.btn-del', - importbtn: '.btn-import', - multibtn: '.btn-multi', - disabledbtn: '.btn-disabled', - editonebtn: '.btn-editone', - dragsortfield: 'weigh', - }, - api: { - init: function (defaults, columnDefaults, locales) { - defaults = defaults ? defaults : {}; - columnDefaults = columnDefaults ? columnDefaults : {}; - locales = locales ? locales : {}; - // 如果是iOS设备则启用卡片视图 - if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) { - Table.defaults.cardView = true; + + /** + * Get field information + * + * @method getField + * @param {Element} - input element + * @return {Object} field + */ + getField: function(el, must) { + var me = this, + key, + field; + + if (isString(el)) { + key = el; + el = undefined; + } else { + if (attr(el, DATA_RULE)) { + return me._parse(el); } - // 写入bootstrap-table默认配置 - $.extend(true, $.fn.bootstrapTable.defaults, Table.defaults, defaults); - // 写入bootstrap-table column配置 - $.extend($.fn.bootstrapTable.columnDefaults, Table.columnDefaults, columnDefaults); - // 写入bootstrap-table locale配置 - $.extend($.fn.bootstrapTable.locales[Table.defaults.locale], { - formatCommonSearch: function () { - return __('Common search'); - }, - formatCommonSubmitButton: function () { - return __('Submit'); - }, - formatCommonResetButton: function () { - return __('Reset'); - }, - formatCommonCloseButton: function () { - return __('Close'); - }, - formatCommonChoose: function () { - return __('Choose'); - } - }, locales); - }, - // 绑定事件 - bindevent: function (table) { - //Bootstrap-table的父元素,包含table,toolbar,pagnation - var parenttable = table.closest('.bootstrap-table'); - //Bootstrap-table配置 - var options = table.bootstrapTable('getOptions'); - //Bootstrap操作区 - var toolbar = $(options.toolbar, parenttable); - //当刷新表格时 - table.on('load-error.bs.table', function (status, res, e) { - if (e.status === 0) { - return; - } - Toastr.error(__('Unknown data format')); - }); - //当刷新表格时 - table.on('refresh.bs.table', function (e, settings, data) { - $(Table.config.refreshbtn, toolbar).find(".fa").addClass("fa-spin"); - }); - //当双击单元格时 - table.on('dbl-click-row.bs.table', function (e, row, element, field) { - $(Table.config.editonebtn, element).trigger("click"); - }); - //当内容渲染完成后 - table.on('post-body.bs.table', function (e, settings, json, xhr) { - $(Table.config.refreshbtn, toolbar).find(".fa").removeClass("fa-spin"); - $(Table.config.disabledbtn, toolbar).toggleClass('disabled', true); - if ($(Table.config.firsttd, table).find("input[type='checkbox'][data-index]").size() > 0) { - // 挺拽选择,需要重新绑定事件 - require(['drag', 'drop'], function () { - $(Table.config.firsttd, table).drag("start", function (ev, dd) { - return $('<div class="selection" />').css('opacity', .65).appendTo(document.body); - }).drag(function (ev, dd) { - $(dd.proxy).css({ - top: Math.min(ev.pageY, dd.startY), - left: Math.min(ev.pageX, dd.startX), - height: Math.abs(ev.pageY - dd.startY), - width: Math.abs(ev.pageX - dd.startX) - }); - }).drag("end", function (ev, dd) { - $(dd.proxy).remove(); - }); - $(Table.config.firsttd, table).drop("start", function () { - Table.api.toggleattr(this); - }).drop(function () { - Table.api.toggleattr(this); - }).drop("end", function () { - Table.api.toggleattr(this); - }); - $.drop({ - multi: true - }); - }); - } - }); - // 处理选中筛选框后按钮的状态统一变更 - table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () { - var ids = Table.api.selectedids(table); - $(Table.config.disabledbtn, toolbar).toggleClass('disabled', !ids.length); - }); - // 刷新按钮事件 - $(toolbar).on('click', Table.config.refreshbtn, function () { - table.bootstrapTable('refresh'); - }); - // 添加按钮事件 - $(toolbar).on('click', Table.config.addbtn, function () { - var ids = Table.api.selectedids(table); - var url = options.extend.add_url; - if (url.indexOf("{ids}") !== -1) { - url = Table.api.replaceurl(url, {ids: ids.length > 0 ? ids.join(",") : 0}, table); - } - Fast.api.open(url, __('Add'), $(this).data() || {}); - }); - // 导入按钮事件 - if ($(Table.config.importbtn, toolbar).size() > 0) { - require(['upload'], function (Upload) { - Upload.api.plupload($(Table.config.importbtn, toolbar), function (data, ret) { - Fast.api.ajax({ - url: options.extend.import_url, - data: {file: data.url}, - }, function (data, ret) { - table.bootstrapTable('refresh'); - }); - }); - }); + if (el.id && '#' + el.id in me.fields || !el.name) { + key = '#' + el.id; + } else { + key = el.name; } - // 批量编辑按钮事件 - $(toolbar).on('click', Table.config.editbtn, function () { - var that = this; - //循环弹出多个编辑框 - $.each(table.bootstrapTable('getSelections'), function (index, row) { - var url = options.extend.edit_url; - row = $.extend({}, row ? row : {}, {ids: row[options.pk]}); - var url = Table.api.replaceurl(url, row, table); - Fast.api.open(url, __('Edit'), $(that).data() || {}); - }); - }); - // 批量操作按钮事件 - $(toolbar).on('click', Table.config.multibtn, function () { - var ids = Table.api.selectedids(table); - Table.api.multi($(this).data("action"), ids, table, this); - }); - // 批量删除按钮事件 - $(toolbar).on('click', Table.config.delbtn, function () { - var that = this; - var ids = Table.api.selectedids(table); - Layer.confirm( - __('Are you sure you want to delete the %s selected item?', ids.length), - {icon: 3, title: __('Warning'), offset: 0, shadeClose: true}, - function (index) { - Table.api.multi("del", ids, table, that); - Layer.close(index); - } - ); - }); - // 拖拽排序 - require(['dragsort'], function () { - //绑定拖动排序 - $("tbody", table).dragsort({ - itemSelector: 'tr:visible', - dragSelector: "a.btn-dragsort", - dragEnd: function (a, b) { - var element = $("a.btn-dragsort", this); - var data = table.bootstrapTable('getData'); - var current = data[parseInt($(this).data("index"))]; - var options = table.bootstrapTable('getOptions'); - //改变的值和改变的ID集合 - var ids = $.map($("tbody tr:visible", table), function (tr) { - return data[parseInt($(tr).data("index"))][options.pk]; - }); - var changeid = current[options.pk]; - var pid = typeof current.pid != 'undefined' ? current.pid : ''; - var params = { - url: table.bootstrapTable('getOptions').extend.dragsort_url, - data: { - ids: ids.join(','), - changeid: changeid, - pid: pid, - field: Table.config.dragsortfield, - orderway: options.sortOrder, - table: options.extend.table - } - }; - Fast.api.ajax(params, function (data, ret) { - var success = $(element).data("success") || $.noop; - if (typeof success === 'function') { - if (false === success.call(element, data, ret)) { - return false; - } - } - table.bootstrapTable('refresh'); - }, function () { - var error = $(element).data("error") || $.noop; - if (typeof error === 'function') { - if (false === error.call(element, data, ret)) { - return false; - } - } - table.bootstrapTable('refresh'); - }); - }, - placeHolderTemplate: "" - }); - }); - $(table).on("click", "input[data-id][name='checkbox']", function (e) { - var ids = $(this).data("id"); - var row = Table.api.getrowbyid(ids); - table.trigger('check.bs.table', [row, this]); - }); - $(table).on("click", "[data-id].btn-change", function (e) { - e.preventDefault(); - Table.api.multi($(this).data("action") ? $(this).data("action") : '', [$(this).data("id")], table, this); - }); - $(table).on("click", "[data-id].btn-edit", function (e) { - e.preventDefault(); - var ids = $(this).data("id"); - var row = Table.api.getrowbyid(ids); - row.ids = ids; - var url = Table.api.replaceurl(options.extend.edit_url, row, table); - Fast.api.open(url, __('Edit'), $(this).data() || {}); - }); - $(table).on("click", "[data-id].btn-del", function (e) { - e.preventDefault(); - var id = $(this).data("id"); - var that = this; - Layer.confirm( - __('Are you sure you want to delete this item?'), - {icon: 3, title: __('Warning'), shadeClose: true}, - function (index) { - Table.api.multi("del", id, table, that); - Layer.close(index); - } - ); - }); - var id = table.attr("id"); - Table.list[id] = table; - return table; - }, - // 批量操作请求 - multi: function (action, ids, table, element) { - var options = table.bootstrapTable('getOptions'); - var data = element ? $(element).data() : {}; - var ids = ($.isArray(ids) ? ids.join(",") : ids); - var url = typeof data.url !== "undefined" ? data.url : (action == "del" ? options.extend.del_url : options.extend.multi_url); - url = this.replaceurl(url, {ids: ids}, table); - var params = typeof data.params !== "undefined" ? (typeof data.params == 'object' ? $.param(data.params) : data.params) : ''; - var options = {url: url, data: {action: action, ids: ids, params: params}}; - Fast.api.ajax(options, function (data, ret) { - var success = $(element).data("success") || $.noop; - if (typeof success === 'function') { - if (false === success.call(element, data, ret)) { - return false; - } - } - table.bootstrapTable('refresh'); - }, function (data, ret) { - var error = $(element).data("error") || $.noop; - if (typeof error === 'function') { - if (false === error.call(element, data, ret)) { - return false; - } - } - }); - }, - // 单元格元素事件 - events: { - operate: { - 'click .btn-editone': function (e, value, row, index) { - e.stopPropagation(); - e.preventDefault(); - var table = $(this).closest('table'); - var options = table.bootstrapTable('getOptions'); - var ids = row[options.pk]; - row = $.extend({}, row ? row : {}, {ids: ids}); - var url = options.extend.edit_url; - Fast.api.open(Table.api.replaceurl(url, row, table), __('Edit'), $(this).data() || {}); - }, - 'click .btn-delone': function (e, value, row, index) { - e.stopPropagation(); - e.preventDefault(); - var that = this; - var top = $(that).offset().top - $(window).scrollTop(); - var left = $(that).offset().left - $(window).scrollLeft() - 260; - if (top + 154 > $(window).height()) { - top = top - 154; - } - if ($(window).width() < 480) { - top = left = undefined; - } - Layer.confirm( - __('Are you sure you want to delete this item?'), - {icon: 3, title: __('Warning'), offset: [top, left], shadeClose: true}, - function (index) { - var table = $(that).closest('table'); - var options = table.bootstrapTable('getOptions'); - Table.api.multi("del", row[options.pk], table, that); - Layer.close(index); - } - ); - } - } - }, - // 单元格数据格式化 - formatter: { - icon: function (value, row, index) { - if (!value) - return ''; - value = value.indexOf(" ") > -1 ? value : "fa fa-" + value; - //渲染fontawesome图标 - return '<i class="' + value + '"></i> ' + value; - }, - image: function (value, row, index) { - value = value ? value : '/assets/img/blank.gif'; - var classname = typeof this.classname !== 'undefined' ? this.classname : 'img-sm img-center'; - return '<img class="' + classname + '" src="' + Fast.api.cdnurl(value) + '" />'; - }, - images: function (value, row, index) { - value = value === null ? '' : value.toString(); - var classname = typeof this.classname !== 'undefined' ? this.classname : 'img-sm img-center'; - var arr = value.split(','); - var html = []; - $.each(arr, function (i, value) { - value = value ? value : '/assets/img/blank.gif'; - html.push('<img class="' + classname + '" src="' + Fast.api.cdnurl(value) + '" />'); - }); - return html.join(' '); - }, - status: function (value, row, index) { - //颜色状态数组,可使用red/yellow/aqua/blue/navy/teal/olive/lime/fuchsia/purple/maroon - var colorArr = {normal: 'success', hidden: 'grey', deleted: 'danger', locked: 'info'}; - //如果字段列有定义custom - if (typeof this.custom !== 'undefined') { - colorArr = $.extend(colorArr, this.custom); - } - value = value === null ? '' : value.toString(); - var color = value && typeof colorArr[value] !== 'undefined' ? colorArr[value] : 'primary'; - value = value.charAt(0).toUpperCase() + value.slice(1); - //渲染状态 - var html = '<span class="text-' + color + '"><i class="fa fa-circle"></i> ' + __(value) + '</span>'; - return html; - }, - url: function (value, row, index) { - return '<div class="input-group input-group-sm" style="width:250px;"><input type="text" class="form-control input-sm" value="' + value + '"><span class="input-group-btn input-group-sm"><a href="' + value + '" target="_blank" class="btn btn-default btn-sm"><i class="fa fa-link"></i></a></span></div>'; - }, - search: function (value, row, index) { - return '<a href="javascript:;" class="searchit" data-field="' + this.field + '" data-value="' + value + '">' + value + '</a>'; - }, - addtabs: function (value, row, index) { - var url = Table.api.replaceurl(this.url, row, this.table); - var title = this.atitle ? this.atitle : __("Search %s", value); - return '<a href="' + Fast.api.fixurl(url) + '" class="addtabsit" data-value="' + value + '" title="' + title + '">' + value + '</a>'; - }, - dialog: function (value, row, index) { - var url = Table.api.replaceurl(this.url, row, this.table); - var title = this.atitle ? this.atitle : __("View %s", value); - return '<a href="' + Fast.api.fixurl(url) + '" class="dialogit" data-value="' + value + '" title="' + title + '">' + value + '</a>'; - }, - flag: function (value, row, index) { - value = value === null ? '' : value.toString(); - var colorArr = {index: 'success', hot: 'warning', recommend: 'danger', 'new': 'info'}; - //如果字段列有定义custom - if (typeof this.custom !== 'undefined') { - colorArr = $.extend(colorArr, this.custom); - } - if (typeof this.customField !== 'undefined' && typeof row[this.customField] !== 'undefined') { - value = row[this.customField]; - } - //渲染Flag - var html = []; - var arr = value.split(','); - $.each(arr, function (i, value) { - value = value === null ? '' : value.toString(); - if (value == '') - return true; - var color = value && typeof colorArr[value] !== 'undefined' ? colorArr[value] : 'primary'; - value = value.charAt(0).toUpperCase() + value.slice(1); - html.push('<span class="label label-' + color + '">' + __(value) + '</span>'); - }); - return html.join(' '); - }, - label: function (value, row, index) { - return Table.api.formatter.flag.call(this, value, row, index); - }, - datetime: function (value, row, index) { - return value ? Moment(parseInt(value) * 1000).format("YYYY-MM-DD HH:mm:ss") : __('None'); - }, - operate: function (value, row, index) { - var table = this.table; - // 操作配置 - var options = table ? table.bootstrapTable('getOptions') : {}; - // 默认按钮组 - var buttons = $.extend([], this.buttons || []); - - if (options.extend.dragsort_url !== '') { - buttons.push({ - name: 'dragsort', - icon: 'fa fa-arrows', - title: __('Drag to sort'), - classname: 'btn btn-xs btn-primary btn-dragsort' - }); - } - if (options.extend.edit_url !== '') { - buttons.push({ - name: 'edit', - icon: 'fa fa-pencil', - title: __('Edit'), - classname: 'btn btn-xs btn-success btn-editone', - url: options.extend.edit_url - }); - } - if (options.extend.del_url !== '') { - buttons.push({ - name: 'del', - icon: 'fa fa-trash', - title: __('Del'), - classname: 'btn btn-xs btn-danger btn-delone' - }); - } - return Table.api.buttonlink(this, buttons, value, row, index, 'operate'); - }, - buttons: function (value, row, index) { - // 默认按钮组 - var buttons = $.extend([], this.buttons || []); - return Table.api.buttonlink(this, buttons, value, row, index, 'buttons'); - } - }, - buttonlink: function (column, buttons, value, row, index, type) { - var table = column.table; - type = typeof type === 'undefined' ? 'buttons' : type; - var options = table ? table.bootstrapTable('getOptions') : {}; - var html = []; - var hidden, url, classname, icon, text, title, refresh, confirm, extend; - var fieldIndex = column.fieldIndex; - - $.each(buttons, function (i, j) { - if (type === 'operate') { - if (j.name === 'dragsort' && typeof row[Table.config.dragsortfield] === 'undefined') { - return true; - } - if (['add', 'edit', 'del', 'multi', 'dragsort'].indexOf(j.name) > -1 && !options.extend[j.name + "_url"]) { - return true; - } - } - var attr = table.data(type + "-" + j.name); - if (typeof attr === 'undefined' || attr) { - hidden = typeof j.hidden === 'function' ? j.hidden.call(table, row, j) : (j.hidden ? j.hidden : false); - if (hidden) { - return true; - } - url = j.url ? j.url : ''; - url = typeof url === 'function' ? url.call(table, row, j) : (url ? Fast.api.fixurl(Table.api.replaceurl(url, row, table)) : 'javascript:;'); - classname = j.classname ? j.classname : 'btn-primary btn-' + name + 'one'; - icon = j.icon ? j.icon : ''; - text = j.text ? j.text : ''; - title = j.title ? j.title : text; - refresh = j.refresh ? 'data-refresh="' + j.refresh + '"' : ''; - confirm = j.confirm ? 'data-confirm="' + j.confirm + '"' : ''; - extend = j.extend ? j.extend : ''; - html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>'); - } - }); - return html.join(' '); - }, - //替换URL中的数据 - replaceurl: function (url, row, table) { - var options = table ? table.bootstrapTable('getOptions') : null; - var ids = options ? row[options.pk] : 0; - row.ids = ids ? ids : (typeof row.ids !== 'undefined' ? row.ids : 0); - //自动添加ids参数 - url = !url.match(/\{ids\}/i) ? url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + '{ids}' : url; - url = url.replace(/\{(.*?)\}/gi, function (matched) { - matched = matched.substring(1, matched.length - 1); - if (matched.indexOf(".") !== -1) { - var temp = row; - var arr = matched.split(/\./); - for (var i = 0; i < arr.length; i++) { - if (typeof temp[arr[i]] !== 'undefined') { - temp = temp[arr[i]]; - } - } - return typeof temp === 'object' ? '' : temp; - } - return row[matched]; - }); - return url; - }, - // 获取选中的条目ID集合 - selectedids: function (table) { - var options = table.bootstrapTable('getOptions'); - if (options.templateView) { - return $.map($("input[data-id][name='checkbox']:checked"), function (dom) { - return $(dom).data("id"); - }); - } else { - return $.map(table.bootstrapTable('getSelections'), function (row) { - return row[options.pk]; - }); - } - }, - // 切换复选框状态 - toggleattr: function (table) { - $("input[type='checkbox']", table).trigger('click'); - }, - // 根据行索引获取行数据 - getrowdata: function (table, index) { - index = parseInt(index); - var data = table.bootstrapTable('getData'); - return typeof data[index] !== 'undefined' ? data[index] : null; - }, - // 根据行索引获取行数据 - getrowbyindex: function (table, index) { - return Table.api.getrowdata(table, index); - }, - // 根据主键ID获取行数据 - getrowbyid: function (table, id) { - var row = {}; - var options = table.bootstrapTable("getOptions"); - $.each(table.bootstrapTable('getData'), function (i, j) { - if (j[options.pk] == id) { - row = j; - return false; - } - }); - return row; - } - }, - }; - return Table; -}); - -/** - * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill - * v1.5.2 - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - * - * Date: 2016-11-23 - */ -!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r<e.length;++r){if(i=s[e[r]]||o(e[r]),!i)throw"module definition dependecy not found: "+e[r];n.push(i)}t.apply(null,n)}function n(e,n,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(n===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";i(n,function(){s[e]=r.apply(null,arguments)})}function r(e){return!!s[e]}function o(t){for(var i=e,n=t.split(/[.\/]/),r=0;r<n.length;++r){if(!i[n[r]])return;i=i[n[r]]}return i}function a(i){for(var n=0;n<i.length;n++){for(var r=e,o=i[n],a=o.split(/[.\/]/),u=0;u<a.length-1;++u)r[a[u]]===t&&(r[a[u]]={}),r=r[a[u]];r[a[a.length-1]]=s[o]}}var s={};n("moxie/core/utils/Basic",[],function(){function e(e){var t;return e===t?"undefined":null===e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()}function t(){return a(!1,!1,arguments)}function i(){return a(!0,!1,arguments)}function n(){return a(!1,!0,arguments)}function r(){return a(!0,!0,arguments)}function o(i){switch(e(i)){case"array":return Array.prototype.slice.call(i);case"object":return t({},i)}return i}function a(t,i,n){var r,s=n[0];return u(n,function(n,c){c>0&&u(n,function(n,u){var c=-1!==m(e(n),["array","object"]);return n===r||t&&s[u]===r?!0:(c&&i&&(n=o(n)),e(s[u])===e(n)&&c?a(t,i,[s[u],n]):s[u]=n,void 0)})}),s}function s(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.__parent__=t.prototype,e}function u(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function c(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function l(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++r<o&&!e?n(r):i(e)})}var r=0,o=t.length;"function"!==e(i)&&(i=function(){}),t&&t.length||i(),n(r)}function d(e,t){var i=0,n=e.length,r=new Array(n);u(e,function(e,o){e(function(e){if(e)return t(e);var a=[].slice.call(arguments);a.shift(),r[o]=a,i++,i===n&&(r.unshift(null),t.apply(this,r))})})}function m(e,t){if(t){if(Array.prototype.indexOf)return Array.prototype.indexOf.call(t,e);for(var i=0,n=t.length;n>i;i++)if(t[i]===e)return i}return-1}function h(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===m(t[r],i)&&n.push(t[r]);return n.length?n:!1}function f(e,t){var i=[];return u(e,function(e){-1!==m(e,t)&&i.push(e)}),i.length?i:null}function p(e){var t,i=[];for(t=0;t<e.length;t++)i[t]=e[t];return i}function g(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e}function x(e){if("string"!=typeof e)return e;var t,i={t:1099511627776,g:1073741824,m:1048576,k:1024};return e=/^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g,"")),t=e[2],e=+e[1],i.hasOwnProperty(t)&&(e*=i[t]),Math.floor(e)}function v(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e(t)?t:""})}function y(e,t){var i=this;setTimeout(function(){e.call(i)},t||1)}var w=function(){var e=0;return function(t){var i,n=(new Date).getTime().toString(32);for(i=0;5>i;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:w,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,inherit:s,each:u,isEmptyObj:c,inSeries:l,inParallel:d,inArray:m,arrayDiff:h,arrayIntersect:f,toArray:p,trim:g,sprintf:v,parseSizeStr:x,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m<e.length);return f=p.join(""),i?t(f):f},n=function(t,i){if(i&&(t=e(t)),"function"==typeof window.btoa)return window.btoa(t);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!t)return t;do n=t.charCodeAt(m++),r=t.charCodeAt(m++),o=t.charCodeAt(m++),l=n<<16|r<<8|o,a=63&l>>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(m<t.length);f=p.join("");var g=t.length%3;return(g?f.slice(0,g-3):f)+"===".slice(g||3)};return{utf8_encode:e,utf8_decode:t,atob:i,btoa:n}}),n("moxie/core/utils/Env",["moxie/core/utils/Basic"],function(e){function t(e,t,i){var n=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),n=0;r>n;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]<t[n]){o=-1;break}if(e[n]>t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var i=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d<m.length;d+=2){var h=m[d],f=m[d+1];if(typeof t===r){t={};for(s in f)u=f[s],typeof u===o?t[u[0]]=e:t[u]=e}for(i=a=0;i<h.length;i++)if(c=h[i].exec(this.getUA())){for(s=0;s<f.length;s++)l=c[++a],u=f[s],typeof u===o&&u.length>0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a<n[r].length;a++)if(u.has(n[r][a],t))return r===i?e:r}else if(u.has(n[r],t))return r===i?e:r;return t}},l={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",RT:"ARM"}}}},d={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],[a,s],[/\s(opr)\/([\w\.]+)/i],[[a,"Opera"],s],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i],[a,s],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[[a,"IE"],s],[/(edge)\/((\d+)?[\w\.]+)/i],[a,s],[/(yabrowser)\/([\w\.]+)/i],[[a,"Yandex"],s],[/(comodo_dragon)\/([\w\.]+)/i],[[a,/_/g," "],s],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i,/(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i],[a,s],[/(dolfin)\/([\w\.]+)/i],[[a,"Dolphin"],s],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[[a,"Chrome"],s],[/XiaoMi\/MiuiBrowser\/([\w\.]+)/i],[s,[a,"MIUI Browser"]],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i],[s,[a,"Android Browser"]],[/FBAV\/([\w\.]+);/i],[s,[a,"Facebook"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],[s,[a,"Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],[s,a],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[a,[s,c.str,l.browser.oldsafari.version]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],[a,s],[/(navigator|netscape)\/([\w\.-]+)/i],[[a,"Netscape"],s],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]+)*/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[a,s]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[s,[a,"EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[a,s],[/rv\:([\w\.]+).*(gecko)/i],[s,a]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[a,s],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[a,[s,c.str,l.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[a,"Windows"],[s,c.str,l.os.windows.version]],[/\((bb)(10);/i],[[a,"BlackBerry"],s],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],[a,s],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[a,"Symbian"],s],[/\((series40);/i],[a],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[a,"Firefox OS"],s],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[a,s],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[a,"Chromium OS"],s],[/(sunos)\s?([\w\.]+\d)*/i],[[a,"Solaris"],s],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[a,s],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[a,"iOS"],[s,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,/(macintosh|mac(?=_powerpc)\s)/i],[[a,"Mac OS"],[s,/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i,/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]+)*/i],[a,s]]},m=function(e){var i=e||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:t);this.getBrowser=function(){return c.rgx.apply(this,d.browser)},this.getEngine=function(){return c.rgx.apply(this,d.engine)},this.getOS=function(){return c.rgx.apply(this,d.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS()}},this.getUA=function(){return i},this.setUA=function(e){return i=e,this},this.setUA(i)};return m}(),n=function(){var t={define_property:function(){return!1}(),create_canvas:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))}(),return_response_type:function(t){try{if(-1!==e.inArray(t,["","text","document"]))return!0;if(window.XMLHttpRequest){var i=new XMLHttpRequest;if(i.open("get","/"),"responseType"in i)return i.responseType=t,i.responseType!==t?!1:!0}}catch(n){}return!1},use_data_uri:function(){var e=new Image;return e.onload=function(){t.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return t.use_data_uri&&("IE"!==o.browser||o.version>=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(i){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(t[i])?t[i].apply(this,n):!!t[i]}}(),r=(new i).getResult(),o={can:n,uaParser:i,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;t<r.length;t+=2){for(n=r[t+1].split(/ /),i=0;i<n.length;i++)this.mimes[n[i]]=r[t];this.extensions[r[t]]=n}},extList2mimes:function(t,i){var n,r,o,a,s=this,u=[];for(r=0;r<t.length;r++)for(n=t[r].extensions.split(/\s*,\s*/),o=0;o<n.length;o++){if("*"===n[o])return[];if(a=s.mimes[n[o]],a&&-1===e.inArray(a,u)&&u.push(a),i&&/^\w+$/.test(n[o]))u.push("."+n[o]);else if(!a)return[]}return u},mimes2exts:function(t){var i=this,n=[];return e.each(t,function(t){if("*"===t)return n=[],!1;var r=t.match(/^(\w+)\/(\*|\w+)$/);r&&("*"===r[2]?e.each(i.extensions,function(e,t){new RegExp("^"+r[1]+"/").test(t)&&[].push.apply(n,i.extensions[t])}):i.extensions[t]&&[].push.apply(n,i.extensions[t]))}),n},mimes2extList:function(i){var n=[],r=[];return"string"===e.typeOf(i)&&(i=e.trim(i).split(/\s*,\s*/)),r=this.mimes2exts(i),n.push({title:t.translate("Files"),extensions:r.length?r.join(","):"*"}),n.mimes=i,n},getFileExtension:function(e){var t=e&&e.match(/\.([^.]+)$/);return t?t[1].toLowerCase():""},getFileMime:function(e){return this.mimes[this.getFileExtension(e)]||""}};return n.addMimeType(i),n}),n("moxie/file/FileInput",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/I18n","moxie/runtime/Runtime","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o,a,s,u){function c(t){var o,c,d;if(-1!==e.inArray(e.typeOf(t),["string","node"])&&(t={browse_button:t}),c=n.get(t.browse_button),!c)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);d={accept:[{title:a.translate("All Files"),extensions:"*"}],multiple:!1,required_caps:!1,container:c.parentNode||document.body},t=e.extend({},d,t),"string"==typeof t.required_caps&&(t.required_caps=s.parseCaps(t.required_caps)),"string"==typeof t.accept&&(t.accept=i.mimes2extList(t.accept)),o=n.get(t.container),o||(o=document.body),"static"===n.getStyle(o,"position")&&(o.style.position="relative"),o=c=null,u.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){var i=this;i.bind("RuntimeInit",function(r,o){i.ruid=o.uid,i.shimid=o.shimid,i.bind("Ready",function(){i.trigger("Refresh")},999),i.bind("Refresh",function(){var i,r,a,s,u;a=n.get(t.browse_button),s=n.get(o.shimid),a&&(i=n.getPos(a,n.get(t.container)),r=n.getSize(a),u=parseInt(n.getStyle(a,"z-index"),10)||0,s&&e.extend(s.style,{top:i.y+"px",left:i.x+"px",width:r.w+"px",height:r.h+"px",zIndex:u+1})),s=a=null}),o.exec.call(i,"FileInput","init",t)}),i.connectRuntime(e.extend({},t,{required_caps:{select_file:!0}}))},getOption:function(e){return t[e]},setOption:function(e,n){if(t.hasOwnProperty(e)){var o=t[e];switch(e){case"accept":"string"==typeof n&&(n=i.mimes2extList(n));break;case"container":case"required_caps":throw new r.FileException(r.FileException.NO_MODIFICATION_ALLOWED_ERR)}t[e]=n,this.exec("FileInput","setOption",e,n),this.trigger("OptionChanged",e,n,o)}},disable:function(t){var i=this.getRuntime();i&&this.exec("FileInput","disable","undefined"===e.typeOf(t)?!0:t)},refresh:function(){this.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=o.instance,c}),n("moxie/file/File",["moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/file/Blob"],function(e,t,i){function n(n,r){r||(r={}),i.apply(this,arguments),this.type||(this.type=t.getFileMime(r.name));var o;if(r.name)o=r.name.replace(/\\/g,"/"),o=o.substr(o.lastIndexOf("/")+1);else if(this.type){var a=this.type.split("/")[0];o=e.guid((""!==a?a:"file")+"_"),t.extensions[this.type]&&(o+="."+t.extensions[this.type][0])}e.extend(this,{name:o||e.guid("file_"),relativePath:"",lastModifiedDate:r.lastModifiedDate||(new Date).toLocaleString()})}return n.prototype=i.prototype,n}),n("moxie/file/FileDrop",["moxie/core/I18n","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/core/utils/Env","moxie/file/File","moxie/runtime/RuntimeClient","moxie/core/EventTarget","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u){function c(i){var r,o=this;"string"==typeof i&&(i={drop_zone:i}),r={accept:[{title:e.translate("All Files"),extensions:"*"}],required_caps:{drag_and_drop:!0}},i="object"==typeof i?n.extend({},r,i):r,i.container=t.get(i.drop_zone)||document.body,"static"===t.getStyle(i.container,"position")&&(i.container.style.position="relative"),"string"==typeof i.accept&&(i.accept=u.mimes2extList(i.accept)),a.call(o),n.extend(o,{uid:n.guid("uid_"),ruid:null,files:null,init:function(){o.bind("RuntimeInit",function(e,t){o.ruid=t.uid,t.exec.call(o,"FileDrop","init",i),o.dispatchEvent("ready")}),o.connectRuntime(i)},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileDrop","destroy"),this.disconnectRuntime()),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","dragenter","dragleave","drop","error"];return c.prototype=s.instance,c}),n("moxie/file/FileReader",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/Exceptions","moxie/core/EventTarget","moxie/file/Blob","moxie/runtime/RuntimeClient"],function(e,t,i,n,r,o){function a(){function n(e,n){if(this.trigger("loadstart"),this.readyState===a.LOADING)return this.trigger("error",new i.DOMException(i.DOMException.INVALID_STATE_ERR)),this.trigger("loadend"),void 0; -if(!(n instanceof r))return this.trigger("error",new i.DOMException(i.DOMException.NOT_FOUND_ERR)),this.trigger("loadend"),void 0;if(this.result=null,this.readyState=a.LOADING,n.isDetached()){var o=n.getSource();switch(e){case"readAsText":case"readAsBinaryString":this.result=o;break;case"readAsDataURL":this.result="data:"+n.type+";base64,"+t.btoa(o)}this.readyState=a.DONE,this.trigger("load"),this.trigger("loadend")}else this.connectRuntime(n.ruid),this.exec("FileReader","read",e,n)}o.call(this),e.extend(this,{uid:e.guid("uid_"),readyState:a.EMPTY,result:null,error:null,readAsBinaryString:function(e){n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){n.call(this,"readAsDataURL",e)},readAsText:function(e){n.call(this,"readAsText",e)},abort:function(){this.result=null,-1===e.inArray(this.readyState,[a.EMPTY,a.DONE])&&(this.readyState===a.LOADING&&(this.readyState=a.DONE),this.exec("FileReader","abort"),this.trigger("abort"),this.trigger("loadend"))},destroy:function(){this.abort(),this.exec("FileReader","destroy"),this.disconnectRuntime(),this.unbindAll()}}),this.handleEventProps(s),this.bind("Error",function(e,t){this.readyState=a.DONE,this.error=t},999),this.bind("Load",function(){this.readyState=a.DONE},999)}var s=["loadstart","progress","load","abort","error","loadend"];return a.EMPTY=0,a.LOADING=1,a.DONE=2,a.prototype=n.instance,a}),n("moxie/core/utils/Url",[],function(){var e=function(t,i){for(var n=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],r=n.length,o={http:80,https:443},a={},s=/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,u=s.exec(t||"");r--;)u[r]&&(a[n[r]]=u[r]);if(!a.scheme){i&&"string"!=typeof i||(i=e(i||document.location.href)),a.scheme=i.scheme,a.host=i.host,a.port=i.port;var c="";/^[^\/]/.test(a.path)&&(c=i.path,c=/\/[^\/]*\.[^\/]*$/.test(c)?c.replace(/\/[^\/]+$/,"/"):c.replace(/\/?$/,"/")),a.path=c+(a.path||"")}return a.port||(a.port=o[a.scheme]||80),a.port=parseInt(a.port,10),a.path||(a.path="/"),delete a.source,a},t=function(t){var i={http:80,https:443},n="object"==typeof t?t:e(t);return n.scheme+"://"+n.host+(n.port!==i[n.scheme]?":"+n.port:"")+n.path+(n.query?n.query:"")},i=function(t){function i(e){return[e.scheme,e.host,e.port].join("/")}return"string"==typeof t&&(t=e(t)),i(e())===i(t)};return{parseUrl:e,resolveUrl:t,hasSameOrigin:i}}),n("moxie/runtime/RuntimeTarget",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i){function n(){this.uid=e.guid("uid_"),t.call(this),this.destroy=function(){this.disconnectRuntime(),this.unbindAll()}}return n.prototype=i.instance,n}),n("moxie/file/FileReaderSync",["moxie/core/utils/Basic","moxie/runtime/RuntimeClient","moxie/core/utils/Encode"],function(e,t,i){return function(){function n(e,t){if(!t.isDetached()){var n=this.connectRuntime(t.ruid).exec.call(this,"FileReaderSync","read",e,t);return this.disconnectRuntime(),n}var r=t.getSource();switch(e){case"readAsBinaryString":return r;case"readAsDataURL":return"data:"+t.type+";base64,"+i.btoa(r);case"readAsText":for(var o="",a=0,s=r.length;s>a;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){R&&(R.destroy(),R=null),s.dispatchEvent("loadend"),s=null}function r(r){R.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),R.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),R.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),R.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(R,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(R,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(R,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),R.bind("Abort",function(e){s.dispatchEvent(e),n()}),R.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(R,"XMLHttpRequest","send",{url:x,method:v,async:T,user:y,password:w,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),R=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(R.connectRuntime(k)):(R.bind("RuntimeInit",function(e,t){r(t)}),R.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),R.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,y,w,E,b,R,_,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(y=u||l.user,w=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(_||(_={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),_[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),_.hasOwnProperty(t))?_[t].header+": "+_[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!R)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);R.getRuntime().exec.call(R,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){R&&("function"===e.typeOf(R.destroy)&&R.destroy(),R=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='<img src="'+d+'" width="'+o.width+'" height="'+o.height+'" />',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){d.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari","Edge"]))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=e.accept.mimes||o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='<input id="'+g.uid+'" type="file" style="font-size:999px;opacity:0;"'+(e.multiple&&g.can("select_multiple")?"multiple":"")+(e.directory&&g.can("select_folder")?"webkitdirectory directory":"")+(d?' accept="'+d.join(",")+'"':"")+" />",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n<e.length;n++)[].push.apply(t,e[n].extensions.split(/\s*,\s*/));return-1===i.inArray("*",t)?t:[]}function u(e){if(!g.length)return!0;var t=o.getFileExtension(e.name);return!t||-1!==i.inArray(t,g)}function c(e,t){var n=[];i.each(e,function(e){var t=e.webkitGetAsEntry();t&&(t.isFile?a(e.getAsFile(),t.fullPath):n.push(t))}),n.length?l(n,t):t()}function l(e,t){var n=[];i.each(e,function(e){n.push(function(t){d(e,t)})}),i.inSeries(n,function(){t()})}function d(e,t){e.isFile?e.file(function(i){a(i,e.fullPath),t()},function(){t()}):e.isDirectory?m(e,t):t()}function m(e,t){function i(e){r.readEntries(function(t){t.length?([].push.apply(n,t),i(e)):e()},e)}var n=[],r=e.createReader();i(function(){l(n,t)})}var h,f,p=[],g=[];i.extend(this,{init:function(t){var n,o=this;h=t,f=o.ruid,g=s(h.accept),n=h.container,r.addEvent(n,"dragover",function(t){e(t)&&(t.preventDefault(),t.dataTransfer.dropEffect="copy")},o.uid),r.addEvent(n,"drop",function(t){e(t)&&(t.preventDefault(),p=[],t.dataTransfer.items&&t.dataTransfer.items[0].webkitGetAsEntry?c(t.dataTransfer.items,function(){o.files=p,o.trigger("drop")}):(i.each(t.dataTransfer.files,function(e){a(e)}),o.files=p,o.trigger("drop")))},o.uid),r.addEvent(n,"dragenter",function(){o.trigger("dragenter")},o.uid),r.addEvent(n,"dragleave",function(){o.trigger("dragleave")},o.uid)},destroy:function(){r.removeAllEvents(h&&n.get(h.container),this.uid),f=p=g=h=null}})}return e.FileDrop=a}),n("moxie/runtime/html5/file/FileReader",["moxie/runtime/html5/Runtime","moxie/core/utils/Encode","moxie/core/utils/Basic"],function(e,t,i){function n(){function e(e){return t.atob(e.substring(e.indexOf("base64,")+7))}var n,r=!1;i.extend(this,{read:function(t,o){var a=this;a.result="",n=new window.FileReader,n.addEventListener("progress",function(e){a.trigger(e)}),n.addEventListener("load",function(t){a.result=r?e(n.result):n.result,a.trigger(t)}),n.addEventListener("error",function(e){a.trigger(e,n.error)}),n.addEventListener("loadend",function(e){n=null,a.trigger(e)}),"function"===i.typeOf(n[t])?(r=!1,n[t](o.getSource())):"readAsBinaryString"===t&&(r=!0,n.readAsDataURL(o.getSource()))},abort:function(){n&&n.abort()},destroy:function(){n=null}})}return e.FileReader=n}),n("moxie/runtime/html5/xhr/XMLHttpRequest",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/utils/Mime","moxie/core/utils/Url","moxie/file/File","moxie/file/Blob","moxie/xhr/FormData","moxie/core/Exceptions","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(e,t){var i,n,r=this;i=t.getBlob().getSource(),n=new window.FileReader,n.onload=function(){t.append(t.getBlobName(),new o(null,{type:i.type,data:n.result})),f.send.call(r,e,t)},n.readAsBinaryString(i)}function c(){return!window.XMLHttpRequest||"IE"===u.browser&&u.verComp(u.version,8,"<")?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(i){}}():new window.XMLHttpRequest}function l(e){var t=e.responseXML,i=e.responseText;return"IE"===u.browser&&i&&t&&!t.documentElement&&/[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type"))&&(t=new window.ActiveXObject("Microsoft.XMLDOM"),t.async=!1,t.validateOnParse=!1,t.loadXML(i)),t&&("IE"===u.browser&&0!==t.parseError||!t.documentElement||"parsererror"===t.documentElement.tagName)?null:t}function d(e){var t="----moxieboundary"+(new Date).getTime(),i="--",n="\r\n",r="",a=this.getRuntime();if(!a.can("send_binary_string"))throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);return m.setRequestHeader("Content-Type","multipart/form-data; boundary="+t),e.each(function(e,a){r+=e instanceof o?i+t+n+'Content-Disposition: form-data; name="'+a+'"; filename="'+unescape(encodeURIComponent(e.name||"blob"))+'"'+n+"Content-Type: "+(e.type||"application/octet-stream")+n+n+e.getSource()+n:i+t+n+'Content-Disposition: form-data; name="'+a+'"'+n+n+unescape(encodeURIComponent(e))+n}),r+=i+t+i+n}var m,h,f=this;t.extend(this,{send:function(i,r){var s=this,l="Mozilla"===u.browser&&u.verComp(u.version,4,">=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource(); -else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){},0===m.status?s.trigger("error"):s.trigger("load")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t<r.length;t++)e[t]=255&r.charCodeAt(t);m.send(e.buffer)}():m.send(r),s.trigger("loadstart")},getStatus:function(){try{if(m)return m.status}catch(e){}return 0},getResponse:function(e){var t=this.getRuntime();try{switch(e){case"blob":var n=new r(t.uid,m.response),o=m.getResponseHeader("Content-Disposition");if(o){var a=o.match(/filename=([\'\"'])([^\1]+)\1/);a&&(h=a[2])}return n.name=h,n.type||(n.type=i.getFileMime(h)),n;case"json":return u.can("return_response_type","json")?m.response:200===m.status&&window.JSON?JSON.parse(m.responseText):null;case"document":return l(m);default:return""!==m.responseText?m.responseText:null}}catch(s){return null}},getAllResponseHeaders:function(){try{return m.getAllResponseHeaders()}catch(e){}return""},abort:function(){m&&m.abort()},destroy:function(){f=h=null}})}return e.XMLHttpRequest=c}),n("moxie/runtime/html5/utils/BinaryReader",["moxie/core/utils/Basic"],function(e){function t(e){e instanceof ArrayBuffer?i.apply(this,arguments):n.apply(this,arguments)}function i(t){var i=new DataView(t);e.extend(this,{readByteAt:function(e){return i.getUint8(e)},writeByteAt:function(e,t){i.setUint8(e,t)},SEGMENT:function(e,n,r){switch(arguments.length){case 2:return t.slice(e,e+n);case 1:return t.slice(e);case 3:if(null===r&&(r=new ArrayBuffer),r instanceof ArrayBuffer){var o=new Uint8Array(this.length()-n+r.byteLength);e>0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<<Math.abs(n+8*r);return i},write:function(e,t,i){var n,r;if(e>this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},y={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=y[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n<t.ExifVersion.length;n++)r+=String.fromCharCode(t.ExifVersion[n]);t.ExifVersion=r}}return t},GPS:function(){var t=null;if(d.gpsIFD){try{t=a.call(this,d.gpsIFD,c.gps)}catch(i){return null}t.GPSVersionID&&"array"===e.typeOf(t.GPSVersionID)&&(t.GPSVersionID=t.GPSVersionID.join("."))}return t},thumb:function(){if(d.IFD1)try{var e=a.call(this,d.IFD1,c.thumb);if("JPEGInterchangeFormat"in e)return this.SEGMENT(d.tiffHeader+e.JPEGInterchangeFormat,e.JPEGInterchangeFormatLength)}catch(t){}return null},setExif:function(e,t){return"PixelXDimension"!==e&&"PixelYDimension"!==e?!1:s.call(this,"exif",e,t)},clear:function(){u.clear(),o=c=l=h=d=u=null}}),65505!==this.SHORT(0)||"EXIF\0"!==this.STRING(4,5).toUpperCase())throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(this.littleEndian=18761==this.SHORT(m),42!==this.SHORT(m+=2))throw new n.ImageError(n.ImageError.INVALID_META_ERR);d.IFD0=d.tiffHeader+this.LONG(m+=2),h=a.call(this,d.IFD0,c.tiff),"ExifIFDPointer"in h&&(d.exifIFD=d.tiffHeader+h.ExifIFDPointer,delete h.ExifIFDPointer),"GPSInfoIFDPointer"in h&&(d.gpsIFD=d.tiffHeader+h.GPSInfoIFDPointer,delete h.GPSInfoIFDPointer),e.isEmptyObj(h)&&(h=null);var f=this.LONG(d.IFD0+12*this.SHORT(d.IFD0)+2);f&&(d.IFD1=d.tiffHeader+f)}return r.prototype=i.prototype,r}),n("moxie/runtime/html5/image/JPEG",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEGHeaders","moxie/runtime/html5/utils/BinaryReader","moxie/runtime/html5/image/ExifParser"],function(e,t,i,n,r){function o(o){function a(e){var t,i,n=0;for(e||(e=c);n<=e.length();){if(t=e.SHORT(n+=2),t>=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;i<n.length;i++,t+=2)if(n[i]!=s.SHORT(t))throw new e.ImageError(e.ImageError.WRONG_FORMAT)}(),l=r.call(this),t.extend(this,{type:"image/png",size:s.length(),width:l.width,height:l.height,purge:function(){o.call(this)}}),o.call(this)}return n}),n("moxie/runtime/html5/image/ImageInfo",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/html5/image/JPEG","moxie/runtime/html5/image/PNG"],function(e,t,i,n){return function(r){var o,a=[i,n];o=function(){for(var e=0;e<a.length;e++)try{return new a[e](r)}catch(i){}throw new t.ImageError(t.ImageError.WRONG_FORMAT)}(),e.extend(this,{type:"",size:0,width:0,height:0,setExif:function(){},writeHeaders:function(e){return e},stripHeaders:function(e){return e},purge:function(){r=null}}),e.extend(this,o),this.purge=function(){o.purge(),o=null}}}),n("moxie/runtime/html5/image/ResizerCanvas",[],function(){function e(i,n){var r=i.width,o=Math.floor(r*n),a=!1;(.5>n||n>2)&&(n=.5>n?.5:2,a=!0);var s=t(i,n);return a?e(s,o/s.width):s}function t(e,t){var i=e.width,n=e.height,r=Math.floor(i*t),o=Math.floor(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!v&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return v||g}function c(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(v=document.createElement("canvas"),v.width=t.width,v.height=t.height,v.getContext("2d").drawImage(t,0,0),v)}function l(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function m(e){var t=this;g=new Image,g.onerror=function(){p.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,w.type)}function h(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t(this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t(e.getAsDataURL())}function f(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function p(){x&&(x.purge(),x=null),y=g=v=w=null,b=!1}var g,x,v,y,w,E=this,b=!1,R=!0;t.extend(this,{loadFromBlob:function(e){var t=this,n=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!n.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return w=e,e.isDetached()?(y=e.getSource(),m.call(this,y),void 0):(h.call(this,e.getSource(),function(e){r&&(y=l(e)),m.call(t,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,w=new o(null,{name:e.name,size:e.size,type:e.type}),m.call(this,t?y=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!x&&y&&i.can("access_image_binary")&&(x=new a(y)),t={width:e().width||0,height:e().height||0,type:w.type||u.getFileMime(w.name),size:y&&y.length||w.size||0,name:w.name||"",meta:null},R&&(t.meta=x&&x.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),v=s.scale(r,i),R=n.preserveHeaders,!R){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;v=f(v,o)}this.width=v.width,this.height=v.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return v||(v=c()),v.id=this.uid+"_canvas",v},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:w.name||"",type:e,data:E.getAsDataURL(e,t)})):new o(null,{name:w.name||"",type:e,data:E.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(c(),"image/jpeg"!==e)return v.toDataURL("image/png");try{return v.toDataURL("image/jpeg",t/100)}catch(i){return v.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return y||(y=l(E.getAsDataURL(e,t))),y;if("image/jpeg"!==e)y=l(E.getAsDataURL(e,t));else{var i;t||(t=90),c();try{i=v.toDataURL("image/jpeg",t/100)}catch(n){i=v.toDataURL("image/jpeg")}y=l(i),x&&(y=x.stripHeaders(y),R&&(x.meta&&x.meta.exif&&x.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),y=x.writeHeaders(y)),x.purge(),x=null)}return b=!1,y},destroy:function(){E=null,p.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i='<object id="'+this.uid+'" type="application/x-shockwave-flash" data="'+u.swf_url+'" ',"IE"===t.browser&&(i+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '),i+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+u.swf_url+'" />'+'<param name="flashvars" value="uid='+escape(this.uid)+"&target="+t.global_event_dispatcher+'" />'+'<param name="wmode" value="transparent" />'+'<param name="allowscriptaccess" value="always" />'+"</object>","IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=i,r=o=null):o.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){var n={init:function(e){var n=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(n,"FileInput","getFiles");n.files=[],i.each(e,function(e){n.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=n}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof n||(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u<n.length&&r===o);o>=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='<object id="'+this.uid+'" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;">'+'<param name="source" value="'+s.xap_url+'"/>'+'<param name="background" value="Transparent"/>'+'<param name="windowless" value="true"/>'+'<param name="enablehtmlaccess" value="true"/>'+'<param name="initParams" value="uid='+this.uid+",target="+t.global_event_dispatcher+'"/>'+"</object>",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Basic"],function(e,t,i){function n(e){for(var t="",i=0;i<e.length;i++)t+=(""!==t?"|":"")+e[i].title+" | *."+e[i].extensions.replace(/,/g,";*.");return t}var r={init:function(e){var r=this,o=this.getRuntime();this.bind("Change",function(){var e=o.shimExec.call(r,"FileInput","getFiles");r.files=[],i.each(e,function(e){r.files.push(new t(o.uid,e))})},999),o.shimExec.call(this,"FileInput","init",n(e.accept),e.multiple),this.trigger("ready")},setOption:function(e,t){"accept"==e&&(t=n(t)),this.getRuntime().shimExec.call(this,"FileInput","setOption",e,t)}};return e.FileInput=r}),n("moxie/runtime/silverlight/file/FileDrop",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Dom","moxie/core/utils/Events"],function(e,t,i){var n={init:function(){var e,n=this,r=n.getRuntime();return e=r.getShimContainer(),i.addEvent(e,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},n.uid),i.addEvent(e,"dragenter",function(e){e.preventDefault();var i=t.get(r.uid).dragEnter(e);i&&e.stopPropagation()},n.uid),i.addEvent(e,"drop",function(e){e.preventDefault();var i=t.get(r.uid).dragDrop(e);i&&e.stopPropagation()},n.uid),r.shimExec.call(this,"FileDrop","init")}};return e.FileDrop=n}),n("moxie/runtime/silverlight/file/FileReader",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReader"],function(e,t,i){return e.FileReader=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileReaderSync",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/FileReaderSync"],function(e,t,i){return e.FileReaderSync=t.extend({},i) -}),n("moxie/runtime/silverlight/runtime/Transporter",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/runtime/Transporter"],function(e,t,i){return e.Transporter=t.extend({},i)}),n("moxie/runtime/silverlight/xhr/XMLHttpRequest",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/xhr/XMLHttpRequest","moxie/runtime/silverlight/file/FileReaderSync","moxie/runtime/silverlight/runtime/Transporter"],function(e,t,i){return e.XMLHttpRequest=t.extend({},i)}),n("moxie/runtime/silverlight/image/Image",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/runtime/flash/image/Image"],function(e,t,i,n){return e.Image=t.extend({},n,{getInfo:function(){var e=this.getRuntime(),n=["tiff","exif","gps","thumb"],r={meta:{}},o=e.shimExec.call(this,"Image","getInfo");return o.meta&&(t.each(n,function(e){var t,i,n,a,s=o.meta[e];if(s&&s.keys)for(r.meta[e]={},i=0,n=s.keys.length;n>i;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),!r.meta||!r.meta.thumb||r.meta.thumb.data instanceof i||(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&("Firefox"===n.browser&&n.verComp(n.version,4,">=")||"Opera"===n.browser&&n.verComp(n.version,12,">=")||"IE"===n.browser&&n.verComp(n.version,10,">=")||!!~e.inArray(n.browser,["Chrome","Safari"]))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&i.extend(d.style,{top:"100%"})),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;if(this.value){if(this.files){if(i=this.files[0],0===i.size)return m.parentNode.removeChild(m),void 0}else i={name:this.value};i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null}},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=t.accept.mimes||o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=y.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='<iframe id="'+f+'_iframe" name="'+f+'_iframe" src="javascript:""" style="display:none"></iframe>',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,y=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),y.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*<pre[^>]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)}); -define("../libs/plupload/js/moxie.min", function(){}); - -/** - * Plupload - multi-runtime File Uploader - * v2.2.1 - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - * - * Date: 2016-11-23 - */ -!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart||(n.send_binary_string=!0),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.2.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t<i.length;t+=2)e=e.replace(i[t],i[t+1]);return e=e.replace(/\s+/g,"_"),e=e.replace(/[^a-z0-9_\-\.]+/gi,"")},buildUrl:function(e,t){var i="";return l.each(t,function(e,t){i+=(i?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(e)}),i&&(e+=(e.indexOf("?")>0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t<T.length;t++)e||T[t].status!=l.QUEUED?i++:(e=T[t],this.trigger("BeforeUpload",e)&&(e.status=l.UPLOADING,this.trigger("UploadFile",e)));i==T.length&&(this.state!==l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged")),this.trigger("UploadComplete",T))}}function u(e){e.percent=e.size>0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t;for(w.reset(),e=0;e<T.length;e++)t=T[e],t.size!==i?(w.size+=t.origSize,w.loaded+=t.loaded*t.origSize/t.size):w.size=i,t.status==l.DONE?w.uploaded++:t.status==l.FAILED?w.failed++:w.queued++;w.size===i?w.percent=T.length>0?Math.ceil(100*(w.uploaded/T.length)):0:(w.bytesPerSec=Math.ceil(w.loaded/((+new Date-S||1)/1e3)),w.percent=w.size>0?Math.ceil(100*(w.loaded/w.size)):0)}function c(){var e=A[0]||P[0];return e?e.getRuntime().uid:!1}function f(e,t){if(e.ruid){var i=o.getInfo(e.ruid);if(i)return i.can(t)}return!1}function p(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",y),this.bind("BeforeUpload",m),this.bind("UploadFile",E),this.bind("UploadProgress",v),this.bind("StateChanged",b),this.bind("QueueChanged",d),this.bind("Error",z),this.bind("FileUploaded",R),this.bind("Destroy",O)}function g(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:F,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,A.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){U||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,P.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function h(e,n,r){var s=new t.image.Image;try{s.onload=function(){return n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),r(e)):(s.downsize(n.width,n.height,n.crop,n.preserve_headers),void 0)},s.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},s.onerror=function(){r(e)},s.load(e)}catch(a){r(e)}}function _(e,i,r){function s(e,i,n){var r=I[e];switch(e){case"max_file_size":"max_file_size"===e&&(I.max_file_size=I.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(I[e]=i,I.send_file_name=!0);break;case"multipart":I[e]=i,i||(I.send_file_name=!0);break;case"unique_names":I[e]=i,i&&(I.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(I.filters,i):I.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),I.filters.mime_types=i.mime_types);break;case"resize":I.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":I.prevent_duplicates=I.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":I[e]=i,n||(u=!0);break;default:I[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(I.required_features=n(l.extend({},I)),F=n(l.extend({},I,{required_features:!0}))):u&&(a.trigger("Destroy"),g.call(a,I,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function m(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function E(e,i){function n(){d-->0?r(s,1e3):(i.loaded=p,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}))}function s(){var f,g,h,_={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(_.name=i.target_name||i.name),u&&c.chunks&&a.size>u?(h=Math.min(u,a.size-p),f=a.slice(p,p+h)):(h=a.size,f=a),u&&c.chunks&&(e.settings.send_chunk_number?(_.chunk=Math.ceil(p/u),_.chunks=Math.ceil(a.size/u)):(_.offset=p,_.total=a.size)),D=new t.xhr.XMLHttpRequest,D.upload&&(D.upload.onprogress=function(t){i.loaded=Math.min(i.size,p+t.loaded),e.trigger("UploadProgress",i)}),D.onload=function(){return D.status>=400?(n(),void 0):(d=e.settings.max_retries,h<a.size?(f.destroy(),p+=h,i.loaded=Math.min(p,a.size),e.trigger("ChunkUploaded",i,{offset:i.loaded,total:a.size,response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()}),"Android Browser"===l.ua.browser&&e.trigger("UploadProgress",i)):i.loaded=i.size,f=g=null,!p||p>=a.size?(i.size!=i.origSize&&(a.destroy(),a=null),e.trigger("UploadProgress",i),i.status=l.DONE,e.trigger("FileUploaded",i,{response:D.responseText,status:D.status,responseHeaders:D.getAllResponseHeaders()})):r(s,1),void 0)},D.onerror=function(){n()},D.onloadend=function(){this.destroy(),D=null},e.settings.multipart&&c.multipart?(D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),g=new t.xhr.FormData,l.each(l.extend(_,e.settings.multipart_params),function(e,t){g.append(t,e)}),g.append(e.settings.file_data_name,f),D.send(g,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(o=l.buildUrl(e.settings.url,l.extend(_,e.settings.multipart_params)),D.open("post",o,!0),l.each(e.settings.headers,function(e,t){D.setRequestHeader(t,e)}),D.hasRequestHeader("Content-Type")||D.setRequestHeader("Content-Type","application/octet-stream"),D.send(f,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:F,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})))}var a,o=e.settings.url,u=e.settings.chunk_size,d=e.settings.max_retries,c=e.features,p=0;i.loaded&&(p=i.loaded=u?u*Math.floor(i.loaded/u):0),a=i.getSource(),!l.isEmptyObj(e.settings.resize)&&f(a,"send_binary_string")&&-1!==l.inArray(a.type,["image/jpeg","image/png"])?h.call(this,a,e.settings.resize,function(e){a=e,i.size=e.size,s()}):s()}function v(e,t){u(t)}function b(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function y(){D&&D.abort()}function R(e){d(),r(function(){a.call(e)},1)}function z(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function O(e){e.stop(),l.each(T,function(e){e.destroy()}),T=[],A.length&&(l.each(A,function(e){e.destroy()}),A=[]),P.length&&(l.each(P,function(e){e.destroy()}),P=[]),F={},U=!1,S=D=null,w.reset()}var I,S,w,D,x=l.guid(),T=[],F={},A=[],P=[],U=!1;I={runtimes:o.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:!1,send_file_name:!0,send_chunk_number:!0},_.call(this,e,null,!0),w=new l.QueueProgress,l.extend(this,{id:x,uid:x,state:l.STOPPED,features:{},runtime:null,files:T,settings:I,total:w,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),p.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):I.browse_button||I.drop_element?(g.call(i,I,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){_.call(this,e,t,!this.runtime)},getOption:function(e){return e?I[e]:I},refresh:function(){A.length&&l.each(A,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){U=arguments[0]!==i?arguments[0]:!0,A.length&&l.each(A,function(e){e.disable(U)}),this.trigger("DisableBrowse",U)},getFile:function(e){var t;for(t=T.length-1;t>=0;t--)if(T[t].id===e)return T[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(T.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=T.length-1;i>=0;i--)if(T[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=T.splice(e===i?0:e,t===i?T.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n<t.length;n++)if(t[n].fn.apply(t[n].scope,i)===!1)return!1}return!0},bind:function(e,t,i,n){l.Uploader.prototype.bind.call(this,e,t,n,i)},destroy:function(){this.trigger("Destroy"),I=w=null,this.unbindAll()}})},l.Uploader.prototype=t.core.EventTarget.instance,l.File=function(){function e(e){l.extend(this,{id:l.guid(),name:e.name||e.fileName,type:e.type||"",size:e.size||e.fileSize,origSize:e.size||e.fileSize,loaded:0,percent:0,status:l.QUEUED,lastModifiedDate:e.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return-1!==l.inArray(l.typeOf(e),["blob","file"])?e:null},getSource:function(){return t[this.id]?t[this.id]:null},destroy:function(){var e=this.getSource();e&&(e.destroy(),delete t[this.id])}}),t[this.id]=e}var t={};return e}(),l.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=l}(this,e)}); -define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, undefined, Plupload, Template) { - var Upload = { - list: {}, - config: { - container: document.body, - classname: '.plupload:not([initialized])', - previewtpl: '<li class="col-xs-3"><a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail"><img src="<%=fullurl%>" class="img-responsive"></a><a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a></li>', - }, - events: { - //初始化完成 - onPostInit: function (up) { - - }, - //文件添加成功后 - onFileAdded: function (up, files) { - var button = up.settings.button; - $(button).data("bakup-html", $(button).html()); - var maxcount = $(button).data("maxcount"); - var input_id = $(button).data("input-id") ? $(button).data("input-id") : ""; - maxcount = typeof maxcount !== "undefined" ? maxcount : 0; - if (maxcount > 0 && input_id) { - var inputObj = $("#" + input_id); - if (inputObj.size() > 0) { - var value = $.trim(inputObj.val()); - var nums = value === '' ? 0 : value.split(/\,/).length; - var remains = maxcount - nums; - if (files.length > remains) { - for (var i = 0; i < files.length; i++) { - up.removeFile(files[i]); - } - Toastr.error(__('You can upload up to %d file%s', remains)); - return false; - } - } - } - //添加后立即上传 - setTimeout(function () { - up.start(); - }, 1); - }, - //上传进行中的回调 - onUploadProgress: function (up, file) { - - }, - //上传之前的回调 - onBeforeUpload: function (up, file) { - - }, - //上传成功的回调 - onUploadSuccess: function (up, ret) { - var button = up.settings.button; - var onUploadSuccess = up.settings.onUploadSuccess; - var data = typeof ret.data !== 'undefined' ? ret.data : null; - //上传成功后回调 - if (button) { - //如果有文本框则填充 - var input_id = $(button).data("input-id") ? $(button).data("input-id") : ""; - if (input_id) { - var urlArr = []; - var inputObj = $("#" + input_id); - if ($(button).data("multiple") && inputObj.val() !== "") { - urlArr.push(inputObj.val()); - } - urlArr.push(data.url); - inputObj.val(urlArr.join(",")).trigger("change"); - } - //如果有回调函数 - var onDomUploadSuccess = $(button).data("upload-success"); - if (onDomUploadSuccess) { - if (typeof onDomUploadSuccess !== 'function' && typeof Upload.api.custom[onDomUploadSuccess] === 'function') { - onDomUploadSuccess = Upload.api.custom[onDomUploadSuccess]; - } - if (typeof onDomUploadSuccess === 'function') { - var result = onDomUploadSuccess.call(button, data, ret); - if (result === false) - return; - } - } - } - - if (typeof onUploadSuccess === 'function') { - var result = onUploadSuccess.call(button, data, ret); - if (result === false) - return; - } - }, - //上传错误的回调 - onUploadError: function (up, ret) { - var button = up.settings.button; - var onUploadError = up.settings.onUploadError; - var data = typeof ret.data !== 'undefined' ? ret.data : null; - if (button) { - var onDomUploadError = $(button).data("upload-error"); - if (onDomUploadError) { - if (typeof onDomUploadError !== 'function' && typeof Upload.api.custom[onDomUploadError] === 'function') { - onDomUploadError = Upload.api.custom[onDomUploadError]; - } - if (typeof onDomUploadError === 'function') { - var result = onDomUploadError.call(button, data, ret); - if (result === false) - return; - } - } - } - - if (typeof onUploadError === 'function') { - var result = onUploadError.call(button, data, ret); - if (result === false) { - return; - } - } - Toastr.error(ret.msg + "(code:" + ret.code + ")"); - }, - //服务器响应数据后 - onUploadResponse: function (response) { - try { - var ret = typeof response === 'object' ? response : JSON.parse(response); - if (!ret.hasOwnProperty('code')) { - $.extend(ret, {code: -2, msg: response, data: null}); - } - } catch (e) { - var ret = {code: -1, msg: e.message, data: null}; - } - return ret; - }, - //上传全部结束后 - onUploadComplete: function (up, files) { - var button = up.settings.button; - var onUploadComplete = up.settings.onUploadComplete; - if (button) { - var onDomUploadComplete = $(button).data("upload-complete"); - if (onDomUploadComplete) { - if (typeof onDomUploadComplete !== 'function' && typeof Upload.api.custom[onDomUploadComplete] === 'function') { - onDomUploadComplete = Upload.api.custom[onDomUploadComplete]; - } - if (typeof onDomUploadComplete === 'function') { - var result = onDomUploadComplete.call(button, files); - if (result === false) - return; - } - } - } - - if (typeof onUploadComplete === 'function') { - var result = onUploadComplete.call(button, files); - if (result === false) { - return; - } - } - } - }, - api: { - //Plupload上传 - plupload: function (element, onUploadSuccess, onUploadError, onUploadComplete) { - element = typeof element === 'undefined' ? Upload.config.classname : element; - $(element, Upload.config.container).each(function () { - if ($(this).attr("initialized")) { - return true; - } - $(this).attr("initialized", true); - var that = this; - var id = $(this).prop("id"); - var url = $(this).data("url"); - var maxsize = $(this).data("maxsize"); - var mimetype = $(this).data("mimetype"); - var multipart = $(this).data("multipart"); - var multiple = $(this).data("multiple"); - - //填充ID - var input_id = $(that).data("input-id") ? $(that).data("input-id") : ""; - //预览ID - var preview_id = $(that).data("preview-id") ? $(that).data("preview-id") : ""; - - //上传URL - url = url ? url : Config.upload.uploadurl; - url = Fast.api.fixurl(url); - //最大可上传文件大小 - maxsize = typeof maxsize !== "undefined" ? maxsize : Config.upload.maxsize; - //文件类型 - mimetype = typeof mimetype !== "undefined" ? mimetype : Config.upload.mimetype; - //请求的表单参数 - multipart = typeof multipart !== "undefined" ? multipart : Config.upload.multipart; - //是否支持批量上传 - multiple = typeof multiple !== "undefined" ? multiple : Config.upload.multiple; - var mimetypeArr = new Array(); - //支持后缀和Mimetype格式,以,分隔 - if (mimetype && mimetype !== "*" && mimetype.indexOf("/") === -1) - { - var tempArr = mimetype.split(','); - for (var i = 0; i < tempArr.length; i++) - { - mimetypeArr.push({title: __('Files'), extensions: tempArr[i]}); - } - mimetype = mimetypeArr; - } - //生成Plupload实例 - Upload.list[id] = new Plupload.Uploader({ - runtimes: 'html5,flash,silverlight,html4', - multi_selection: multiple, //是否允许多选批量上传 - browse_button: id, // 浏览按钮的ID - container: $(this).parent().get(0), //取按钮的上级元素 - flash_swf_url: '/assets/libs/plupload/js/Moxie.swf', - silverlight_xap_url: '/assets/libs/plupload/js/Moxie.xap', - filters: { - max_file_size: maxsize, - mime_types: mimetype, - }, - url: url, - multipart_params: $.isArray(multipart) ? {} : multipart, - init: { - PostInit: Upload.events.onPostInit, - FilesAdded: Upload.events.onFileAdded, - BeforeUpload: Upload.events.onBeforeUpload, - UploadProgress: function (up, file) { - var button = up.settings.button; - $(button).prop("disabled", true).html("<i class='fa fa-upload'></i> " + __('Upload') + file.percent + "%"); - Upload.events.onUploadProgress(up, file); - }, - FileUploaded: function (up, file, info) { - var button = up.settings.button; - //还原按钮文字及状态 - $(button).prop("disabled", false).html($(button).data("bakup-html")); - var ret = Upload.events.onUploadResponse(info.response, info, up, file); - file.ret = ret; - if (ret.code === 1) { - Upload.events.onUploadSuccess(up, ret, file); - } else { - Upload.events.onUploadError(up, ret, file); - } - }, - UploadComplete: Upload.events.onUploadComplete, - Error: function (up, err) { - var button = up.settings.button; - $(button).prop("disabled", false).html($(button).data("bakup-html")); - var ret = {code: err.code, msg: err.message, data: null}; - Upload.events.onUploadError(up, ret); - } - }, - onUploadSuccess: onUploadSuccess, - onUploadError: onUploadError, - onUploadComplete: onUploadComplete, - button: that - }); - - //拖动排序 - if (preview_id && multiple) { - require(['dragsort'], function () { - $("#" + preview_id).dragsort({ - dragSelector: "li", - dragEnd: function () { - $("#" + preview_id).trigger("fa.preview.change"); - }, - placeHolderTemplate: '<li class="col-xs-3"></li>' - }); - }); - } - if (preview_id && input_id) { - $(document.body).on("keyup change", "#" + input_id, function () { - var inputStr = $("#" + input_id).val(); - var inputArr = inputStr.split(/\,/); - $("#" + preview_id).empty(); - var tpl = $("#" + preview_id).data("template") ? $("#" + preview_id).data("template") : ""; - $.each(inputArr, function (i, j) { - if (!j) { - return true; - } - var data = {url: j, fullurl: Fast.api.cdnurl(j), data: $(that).data()}; - var html = tpl ? Template(tpl, data) : Template.render(Upload.config.previewtpl, data); - $("#" + preview_id).append(html); - }); - }); - $("#" + input_id).trigger("change"); - } - if (preview_id) { - // 监听事件 - $(document.body).on("fa.preview.change", "#" + preview_id, function () { - var urlArr = new Array(); - $("#" + preview_id + " [data-url]").each(function (i, j) { - urlArr.push($(this).data("url")); - }); - if (input_id) { - $("#" + input_id).val(urlArr.join(",")); - } - }); - // 移除按钮事件 - $(document.body).on("click", "#" + preview_id + " .btn-trash", function () { - $(this).closest("li").remove(); - $("#" + preview_id).trigger("fa.preview.change"); - }); - } - Upload.list[id].init(); - }); - }, - // AJAX异步上传 - send: function (file, onUploadSuccess, onUploadError, onUploadComplete) { - var index = Layer.msg(__('Uploading'), {offset: 't', time: 0}); - var id = Plupload.guid(); - var _onPostInit = Upload.events.onPostInit; - Upload.events.onPostInit = function () { - // 当加载完成后添加文件并上传 - Upload.list[id].addFile(file); - //Upload.list[id].start(); - }; - $('<button type="button" id="' + id + '" class="btn btn-danger hidden plupload" />').appendTo("body"); - $("#" + id).data("upload-complete", function (files) { - Upload.events.onPostInit = _onPostInit; - Layer.close(index); - }); - Upload.api.plupload("#" + id, onUploadSuccess, onUploadError, onUploadComplete); - }, - custom: { - //自定义上传完成回调 - afteruploadcallback: function (response) { - console.log(this, response); - alert("Custom Callback,Response URL:" + response.url); - }, - }, - } - }; - - return Upload; -}); -/*! nice-validator 1.1.3 - * (c) 2012-2017 Jony Zhang <niceue@live.com>, MIT Licensed - * https://github.com/niceue/nice-validator - */ -;(function(factory) { - typeof module === "object" && module.exports ? module.exports = factory( require( "jquery" ) ) : - typeof define === 'function' && define.amd ? define('validator-core',['jquery'], factory) : - factory(jQuery); -}(function($, undefined) { - "use strict"; - - var NS = 'validator', - CLS_NS = '.' + NS, - CLS_NS_RULE = '.rule', - CLS_NS_FIELD = '.field', - CLS_NS_FORM = '.form', - CLS_WRAPPER = 'nice-' + NS, - CLS_MSG_BOX = 'msg-box', - ARIA_INVALID = 'aria-invalid', - DATA_RULE = 'data-rule', - DATA_MSG = 'data-msg', - DATA_TIP = 'data-tip', - DATA_OK = 'data-ok', - DATA_TIMELY = 'data-timely', - DATA_TARGET = 'data-target', - DATA_DISPLAY = 'data-display', - DATA_MUST = 'data-must', - NOVALIDATE = 'novalidate', - INPUT_SELECTOR = ':verifiable', - - rRules = /(&)?(!)?\b(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?\s*(;|\|)?/g, - rRule = /(\w+)(?:\[\s*(.*?\]?)\s*\]|\(\s*(.*?\)?)\s*\))?/, - rDisplay = /(?:([^:;\(\[]*):)?(.*)/, - rDoubleBytes = /[^\x00-\xff]/g, - rPos = /top|right|bottom|left/, - rAjaxType = /(?:(cors|jsonp):)?(?:(post|get):)?(.+)/i, - rUnsafe = /[<>'"`\\]|&#x?\d+[A-F]?;?|%3[A-F]/gmi, - - noop = $.noop, - proxy = $.proxy, - trim = $.trim, - isFunction = $.isFunction, - isString = function(s) { - return typeof s === 'string'; - }, - isObject = function(o) { - return o && Object.prototype.toString.call(o) === '[object Object]'; - }, - isIE = document.documentMode || +(navigator.userAgent.match(/MSIE (\d+)/) && RegExp.$1), - attr = function(el, key, value) { - if (!el || !el.tagName) return null; - if (value !== undefined) { - if (value === null) el.removeAttribute(key); - else el.setAttribute(key, '' + value); - } else { - return el.getAttribute(key); - } - }, - novalidateonce, - preinitialized = {}, - - defaults = { - debug: 0, - theme: 'default', - ignore: '', - focusInvalid: true, - focusCleanup: false, - stopOnError: false, - beforeSubmit: null, - valid: null, - invalid: null, - validation: null, - formClass: 'n-default', - validClass: 'n-valid', - invalidClass: 'n-invalid', - bindClassTo: null - }, - fieldDefaults = { - timely: 1, - display: null, - target: null, - ignoreBlank: false, - showOk: true, - // Translate ajax response to validation result - dataFilter: function (data) { - if ( isString(data) || ( isObject(data) && ('error' in data || 'ok' in data) ) ) { - return data; - } - }, - msgMaker: function(opt) { - var html; - html = '<span role="alert" class="msg-wrap n-'+ opt.type + '">' + opt.arrow; - if (opt.result) { - $.each(opt.result, function(i, obj){ - html += '<span class="n-'+ obj.type +'">' + opt.icon + '<span class="n-msg">' + obj.msg + '</span></span>'; - }); - } else { - html += opt.icon + '<span class="n-msg">' + opt.msg + '</span>'; - } - html += '</span>'; - return html; - }, - msgWrapper: 'span', - msgArrow: '', - msgIcon: '<span class="n-icon"></span>', - msgClass: 'n-right', - msgStyle: '', - msgShow: null, - msgHide: null - }, - themes = {}; - - /** jQuery Plugin - * @param {Object} options - debug {Boolean} 0 Whether to enable debug mode - timely {Number} 1 Whether to enable timely validation - theme {String} 'default' Theme name - stopOnError {Boolean} false Whether to stop validate when found an error input - focusCleanup {Boolean} false Whether to clean up the field message when focus the field - focusInvalid {Boolean} true Whether to focus the field that is invalid - ignoreBlank {Boolean} false When the field has no value, whether to ignore validation - ignore {jqSelector} '' Ignored fields (Using jQuery selector) - - beforeSubmit {Function} Do something before submit form - dataFilter {Function} Convert ajax results - valid {Function} Triggered when the form is valid - invalid {Function} Triggered when the form is invalid - validClass {String} 'n-valid' Add this class name to a valid field - invalidClass {String} 'n-invalid' Add this class name to a invalid field - bindClassTo {jqSelector} ':verifiable' Which element should the className binding to - - display {Function} Callback function to get dynamic display - target {Function} Callback function to get dynamic target - msgShow {Function} Trigger this callback when show message - msgHide {Function} Trigger this callback when hide message - msgWrapper {String} 'span' Message wrapper tag name - msgMaker {Function} Callback function to make message HTML - msgArrow {String} Message arrow template - msgIcon {String} Message icon template - msgStyle {String} Custom message css style - msgClass {String} Additional added to the message class names - formClass {String} Additional added to the form class names - - messages {Object} Custom messages for the current instance - rules {Object} Custom rules for the current instance - fields {Object} Field validation configuration - {String} key name|#id - {String|Object} value Rule string or an object which can pass more arguments - - fields[key][rule] {String} Rule string - fields[key][display] {String|Function} - fields[key][tip] {String} Custom tip message - fields[key][ok] {String} Custom success message - fields[key][msg] {Object} Custom error message - fields[key][msgStyle] {String} Custom message style - fields[key][msgClass] {String} A className which added to message placeholder element - fields[key][msgWrapper] {String} Tag name of the message placeholder element - fields[key][msgMaker] {Function} A function to custom message HTML - fields[key][dataFilter] {Function} A function to convert ajax results - fields[key][valid] {Function} A function triggered when field is valid - fields[key][invalid] {Function} A function triggered when field is invalid - fields[key][must] {Boolean} If set true, we always check the field even has remote checking - fields[key][timely] {Boolean} Whether to enable timely validation - fields[key][target] {jqSelector} Define placement of a message - */ - $.fn.validator = function(options) { - var that = this, - args = arguments; - - if (that.is(INPUT_SELECTOR)) return that; - if (!that.is('form')) that = this.find('form'); - if (!that.length) that = this; - - that.each(function() { - var instance = $(this).data(NS); - - if (instance) { - if ( isString(options) ) { - if ( options.charAt(0) === '_' ) return; - instance[options].apply(instance, [].slice.call(args, 1)); - } - else if (options) { - instance._reset(true); - instance._init(this, options); - } - } else { - new Validator(this, options); - } - }); - - return this; - }; - - - // Validate a field, or an area - $.fn.isValid = function(callback, hideMsg) { - var me = _getInstance(this[0]), - hasCallback = isFunction(callback), - ret, opt; - - if (!me) return true; - if (!hasCallback && hideMsg === undefined) hideMsg = callback; - me.checkOnly = !!hideMsg; - opt = me.options; - - ret = me._multiValidate( - this.is(INPUT_SELECTOR) ? this : this.find(INPUT_SELECTOR), - function(isValid){ - if (!isValid && opt.focusInvalid && !me.checkOnly) { - // navigate to the error element - me.$el.find('[' + ARIA_INVALID + ']:first').focus(); - } - if (hasCallback) { - if (callback.length) { - callback(isValid); - } else if (isValid) { - callback(); - } - } - me.checkOnly = false; - } - ); - - // If you pass a callback, we maintain the jQuery object chain - return hasCallback ? this : ret; - }; - - $.extend($.expr.pseudos || $.expr[':'], { - // A faster selector than ":input:not(:submit,:button,:reset,:image,:disabled,[contenteditable])" - verifiable: function(elem) { - var name = elem.nodeName.toLowerCase(); - - return ( name === 'input' && !({submit: 1, button: 1, reset: 1, image: 1})[elem.type] || - name === 'select' || - name === 'textarea' || - elem.contentEditable === 'true' - ) && !elem.disabled; - }, - // any value, but not only whitespace - filled: function(elem) { - return !!trim($(elem).val()); - } - }); - - /** - * Creates a new Validator - * - * @class - * @param {Element} element - form element - * @param {Object} options - options for validator - */ - function Validator(element, options) { - var me = this; - - if ( !(me instanceof Validator) ) { - return new Validator(element, options); - } - - if (Validator.pending) { - $(window).on('validatorready', init); - } else { - init(); - } - - function init() { - me.$el = $(element); - if (me.$el.length) { - me._init(me.$el[0], options); - } - else if (isString(element)) { - preinitialized[element] = options; - } - } - } - - Validator.prototype = { - _init: function(element, options) { - var me = this, - opt, themeOpt, dataOpt; - - // Initialization options - if ( isFunction(options) ) { - options = { - valid: options - }; - } - options = me._opt = options || {}; - dataOpt = attr(element, 'data-'+ NS +'-option'); - dataOpt = me._dataOpt = dataOpt && dataOpt.charAt(0) === '{' ? (new Function("return " + dataOpt))() : {}; - themeOpt = me._themeOpt = themes[ options.theme || dataOpt.theme || defaults.theme ]; - opt = me.options = $.extend({}, defaults, fieldDefaults, themeOpt, me.options, options, dataOpt); - - me.rules = new Rules(opt.rules, true); - me.messages = new Messages(opt.messages, true); - me.Field = _createFieldFactory(me); - me.elements = me.elements || {}; - me.deferred = {}; - me.errors = {}; - me.fields = {}; - // Initialization fields - me._initFields(opt.fields); - - // Initialization events and make a cache - if ( !me.$el.data(NS) ) { - me.$el.data(NS, me).addClass(CLS_WRAPPER +' '+ opt.formClass) - .on('form-submit-validate', function(e, a, $form, opts, veto) { - me.vetoed = veto.veto = !me.isValid; - me.ajaxFormOptions = opts; - }) - .on('submit'+ CLS_NS +' validate'+ CLS_NS, proxy(me, '_submit')) - .on('reset'+ CLS_NS, proxy(me, '_reset')) - .on('showmsg'+ CLS_NS, proxy(me, '_showmsg')) - .on('hidemsg'+ CLS_NS, proxy(me, '_hidemsg')) - .on('focusin'+ CLS_NS + ' click'+ CLS_NS, INPUT_SELECTOR, proxy(me, '_focusin')) - .on('focusout'+ CLS_NS +' validate'+ CLS_NS, INPUT_SELECTOR, proxy(me, '_focusout')) - .on('keyup'+ CLS_NS +' input'+ CLS_NS + ' compositionstart compositionend', INPUT_SELECTOR, proxy(me, '_focusout')) - .on('click'+ CLS_NS, ':radio,:checkbox', 'click', proxy(me, '_focusout')) - .on('change'+ CLS_NS, 'select,input[type="file"]', 'change', proxy(me, '_focusout')); - - // cache the novalidate attribute value - me._NOVALIDATE = attr(element, NOVALIDATE); - // Initialization is complete, stop off default HTML5 form validation - // If use "jQuery.attr('novalidate')" in IE7 will complain: "SCRIPT3: Member not found." - attr(element, NOVALIDATE, NOVALIDATE); - } - - // Display all messages in target container - if ( isString(opt.target) ) { - me.$el.find(opt.target).addClass('msg-container'); - } - }, - - // Guess whether the form use ajax submit - _guessAjax: function(form) { - var me = this; - - if ( !(me.isAjaxSubmit = !!me.options.valid) ) { - // if there is a "valid.form" event - var events = ($._data || $.data)(form, "events"); - me.isAjaxSubmit = issetEvent(events, 'valid', 'form') || issetEvent(events, 'submit', 'form-plugin'); - } - - function issetEvent(events, name, namespace) { - if ( events && events[name] && - $.map(events[name], function(e){ - return ~e.namespace.indexOf(namespace) ? 1 : null; - }).length - ) { - return true; - } - return false; - } - }, - - _initFields: function(fields) { - var me = this, k, arr, i, - clear = fields === null; - - // Processing field information - if (clear) fields = me.fields; - - if ( isObject(fields) ) { - for (k in fields) { - if (~k.indexOf(',')) { - arr = k.split(','); - i = arr.length; - while (i--) { - initField(trim(arr[i]), fields[k]); - } - } else { - initField(k, fields[k]); - } - } - } - - // Parsing DOM rules - me.$el.find(INPUT_SELECTOR).each(function() { - me._parse(this); - }); - - function initField(k, v) { - // delete a field from settings - if ( v === null || clear ) { - var el = me.elements[k]; - if (el) me._resetElement(el, true); - delete me.fields[k]; - } else { - me.fields[k] = new me.Field(k, isString(v) ? {rule: v} : v, me.fields[k]); - } - } - }, - - // Parsing a field - _parse: function(el) { - var me = this, - field, - key = el.name, - display, - timely, - dataRule = attr(el, DATA_RULE); - - dataRule && attr(el, DATA_RULE, null); - - // If the field has passed the key as id mode, or it doesn't has a name - if ( el.id && ( - ('#' + el.id in me.fields) || - !key || - // If dataRule and element are diffrent from old's, we use ID mode. - (dataRule !== null && (field = me.fields[key]) && dataRule !== field.rule && el.id !== field.key) - ) - ) { - key = '#' + el.id; - } - // Generate id - if (!key) { - key = '#' + (el.id = 'N' + String(Math.random()).slice(-12)); - } - - field = me.getField(key, true); - // The priority of passing parameter by DOM is higher than by JS. - field.rule = dataRule || field.rule; - - if (display = attr(el, DATA_DISPLAY)) { - field.display = display; - } - if (field.rule) { - if ( attr(el, DATA_MUST) !== null || /\b(?:match|checked)\b/.test(field.rule) ) { - field.must = true; - } - if ( /\brequired\b/.test(field.rule) ) { - field.required = true; - } - if (timely = attr(el, DATA_TIMELY)) { - field.timely = +timely; - } else if (field.timely > 3) { - attr(el, DATA_TIMELY, field.timely); - } - me._parseRule(field); - field.old = {}; - } - if ( isString(field.target) ) { - attr(el, DATA_TARGET, field.target); - } - if ( isString(field.tip) ) { - attr(el, DATA_TIP, field.tip); - } - - return me.fields[key] = field; - }, - - // Parsing field rules - _parseRule: function(field) { - var arr = rDisplay.exec(field.rule); - - if (!arr) return; - // current rule index - field._i = 0; - if (arr[1]) { - field.display = arr[1]; - } - if (arr[2]) { - field._rules = []; - arr[2].replace(rRules, function(){ - var args = arguments; - args[4] = args[4] || args[5]; - field._rules.push({ - and: args[1] === "&", - not: args[2] === "!", - or: args[6] === "|", - method: args[3], - params: args[4] ? $.map( args[4].split(', '), trim ) : undefined - }); - }); - } - }, - - // Verify a zone - _multiValidate: function($inputs, doneCallback){ - var me = this, - opt = me.options; - - me.hasError = false; - - if (opt.ignore) { - $inputs = $inputs.not(opt.ignore); - } - - $inputs.each(function() { - me._validate(this); - if (me.hasError && opt.stopOnError) { - // stop the validation - return false; - } - }); - - // Need to wait for all fields validation complete, especially asynchronous validation - if (doneCallback) { - me.validating = true; - $.when.apply( - null, - $.map(me.deferred, function(v){return v;}) - ).done(function(){ - doneCallback.call(me, !me.hasError); - me.validating = false; - }); - } - - // If the form does not contain asynchronous validation, the return value is correct. - // Otherwise, you should detect form validation result through "doneCallback". - return !$.isEmptyObject(me.deferred) ? undefined : !me.hasError; - }, - - // Validate the whole form - _submit: function(e) { - var me = this, - opt = me.options, - form = e.target, - canSubmit = e.type === 'submit' && form.tagName === 'FORM' && !e.isDefaultPrevented(); - - e.preventDefault(); - - if ( - novalidateonce && ~(novalidateonce = false) || - // Prevent duplicate submission - me.submiting || - // Receive the "validate" event only from the form. - e.type === 'validate' && me.$el[0] !== form || - // trigger the beforeSubmit callback. - isFunction(opt.beforeSubmit) && opt.beforeSubmit.call(me, form) === false - ) { - return; } - if (me.isAjaxSubmit === undefined) { - me._guessAjax(form); + if ( (field = me.fields[key]) || must && (field = new me.Field(key)) ) { + field.element = el; } - me._debug('log', '\n<<< event: ' + e.type); - - me._reset(); - me.submiting = true; - - me._multiValidate( - me.$el.find(INPUT_SELECTOR), - function(isValid){ - var ret = (isValid || opt.debug === 2) ? 'valid' : 'invalid', - errors; - - if (!isValid) { - if (opt.focusInvalid) { - // navigate to the error element - me.$el.find('[' + ARIA_INVALID + ']:first').focus(); - } - errors = $.map(me.errors, function(err){return err;}); - } + return field; + }, - // releasing submit - me.submiting = false; - me.isValid = isValid; + /** + * Config a field + * + * @method: setField + * @param {String} key + * @param {Object} obj + */ + setField: function(key, obj) { + var fields = {}; - // trigger callback and event - isFunction(opt[ret]) && opt[ret].call(me, form, errors); - me.$el.trigger(ret + CLS_NS_FORM, [form, errors]); + if (!key) return; - me._debug('log', '>>> ' + ret); + // update this field + if (isString(key)) { + fields[key] = obj; + } + // update fields + else { + fields = key; + } - if (!isValid) return; - // For jquery.form plugin - if (me.vetoed) { - $(form).ajaxSubmit(me.ajaxFormOptions); - } - else if (canSubmit && !me.isAjaxSubmit) { - document.createElement('form').submit.call(form); - } - } - ); + this._initFields(fields); }, - _reset: function(e) { - var me = this; - - me.errors = {}; - if (e) { - me.reseting = true; - me.$el.find(INPUT_SELECTOR).each( function(){ - me._resetElement(this); - }); - delete me.reseting; + /** + * Detecting whether the form is valid + * + * @method isFormValid + * @return {Boolean} + */ + isFormValid: function() { + var fields = this.fields, k, field; + for (k in fields) { + field = fields[k]; + if (!field._rules || !field.required && !field.must && !field.value) continue; + if (!field.isValid) return false; } + return true; }, - _resetElement: function(el, all) { - this._setClass(el, null); - this.hideMsg(el); + /** + * Prevent submission form + * + * @method holdSubmit + * @param {Boolean} hold - If set to false, will release the hold + */ + holdSubmit: function(hold) { + this.submiting = hold === undefined || hold; }, - // Handle events: "focusin/click" - _focusin: function(e) { - var me = this, - opt = me.options, - el = e.target, - timely, - msg; - - if ( me.validating || ( e.type==='click' && document.activeElement === el ) ) { - return; - } - - if (opt.focusCleanup) { - if ( attr(el, ARIA_INVALID) === 'true' ) { - me._setClass(el, null); - me.hideMsg(el); - } - } - - msg = attr(el, DATA_TIP); - - if (msg) { - me.showMsg(el, { - type: 'tip', - msg: msg - }); - } else { - if (attr(el, DATA_RULE)) { - me._parse(el); - } - if (timely = attr(el, DATA_TIMELY)) { - if ( timely === 8 || timely === 9 ) { - me._focusout(e); - } - } - } + /** + * Clean validation messages + * + * @method cleanUp + */ + cleanUp: function() { + this._reset(1); }, - // Handle events: "focusout/validate/keyup/click/change/input/compositionstart/compositionend" - _focusout: function(e) { - var me = this, - opt = me.options, - el = e.target, - etype = e.type, - etype0, - focusin = etype === 'focusin', - special = etype === 'validate', - elem, - field, - old, - value, - timestamp, - key, specialKey, - timely, - timer = 0; - - if (etype === 'compositionstart') { - me.pauseValidate = true; - } - if (etype === 'compositionend') { - me.pauseValidate = false; - } - if (me.pauseValidate) { - return; - } + /** + * Destroy the validation + * + * @method destroy + */ + destroy: function() { + this._reset(1); + this.$el.off(CLS_NS).removeData(NS); + attr(this.$el[0], NOVALIDATE, this._NOVALIDATE); + } + }; - // For checkbox and radio - elem = el.name && _checkable(el) ? me.$el.find('input[name="'+ el.name +'"]').get(0) : el; - // Get field - if (!(field = me.getField(elem)) || !field.rule) { - return; + /** + * Create Field Factory + * + * @class + * @param {Object} context + * @return {Function} Factory + */ + function _createFieldFactory(context) { + function FieldFactory() { + var options = this.options; + for (var i in options) { + if (i in fieldDefaults) this[i] = options[i]; } - // Cache event type - etype0 = field._e; - field._e = etype; - timely = field.timely; - - if (!special) { - if (!timely || (_checkable(el) && etype !== 'click')) { - return; - } - - value = field.getValue(); - - // not validate field unless fill a value - if ( field.ignoreBlank && !value && !focusin ) { - me.hideMsg(el); - return; - } - - if ( etype === 'focusout' ) { - if (etype0 === 'change') { - return; - } - if ( timely === 2 || timely === 8 ) { - old = field.old; - if (value && old) { - if (field.isValid && !old.showOk) { - me.hideMsg(el); - } else { - me._makeMsg(el, field, old); - } - } else { - return; - } - } - } - else { - if ( timely < 2 && !e.data ) { - return; + $.extend(this, { + _valHook: function() { + return this.element.contentEditable === 'true' ? 'text' : 'val'; + }, + getValue: function() { + var elem = this.element; + if (elem.type === "number" && elem.validity && elem.validity.badInput) { + return 'NaN'; } + return $(elem)[this._valHook()](); + }, + setValue: function(value) { + $(this.element)[this._valHook()](this.value = value); + }, + // Get a range of validation messages + getRangeMsg: function(value, params, suffix) { + if (!params) return; - // mark timestamp to reduce the frequency of the received event - timestamp = +new Date(); - if ( timestamp - (el._ts || 0) < 100 ) { - return; + var me = this, + msg = me.messages[me._r] || '', + result, + p = params[0].split('~'), + e = params[1] === 'false', + a = p[0], + b = p[1], + c = 'rg', + args = [''], + isNumber = trim(value) && +value === +value; + + function compare(large, small) { + return !e ? large >= small : large > small; } - el._ts = timestamp; - // handle keyup - if ( etype === 'keyup' ) { - if (etype0 === 'input') { - return; + if (p.length === 2) { + if (a && b) { + if (isNumber && compare(value, +a) && compare(+b, value)) { + result = true; + } + args = args.concat(p); + c = e ? 'gtlt' : 'rg'; } - key = e.keyCode; - specialKey = { - 8: 1, // Backspace - 9: 1, // Tab - 16: 1, // Shift - 32: 1, // Space - 46: 1 // Delete - }; - - // only gets focus, no validation - if ( key === 9 && !value ) { - return; + else if (a && !b) { + if (isNumber && compare(value, +a)) { + result = true; + } + args.push(a); + c = e ? 'gt' : 'gte'; } - - // do not validate, if triggered by these keys - if ( key < 48 && !specialKey[key] ) { - return; + else if (!a && b) { + if (isNumber && compare(+b, value)) { + result = true; + } + args.push(b); + c = e ? 'lt' : 'lte'; } } - if ( !focusin ) { - // keyboard events, reducing the frequency of validation - timer = timely <100 ? (etype === 'click' || el.tagName === 'SELECT') ? 0 : 400 : timely; + else { + if (value === +a) { + result = true; + } + args.push(a); + c = 'eq'; } - } - } - - // if the current field is ignored - if ( opt.ignore && $(el).is(opt.ignore) ) { - return; - } - clearTimeout(field._t); + if (msg) { + if (suffix && msg[c + suffix]) { + c += suffix; + } + args[0] = msg[c]; + } - if (timer) { - field._t = setTimeout(function() { - me._validate(el, field); - }, timer); - } else { - if (special) field.old = {}; - me._validate(el, field); - } - }, + return result || me._rules && ( me._rules[me._i].msg = me.renderMsg.apply(null, args) ); + }, + // Render message template + renderMsg: function() { + var args = arguments, + tpl = args[0], + i = args.length; - _setClass: function(el, isValid) { - var $el = $(el), opt = this.options; - if (opt.bindClassTo) { - $el = $el.closest(opt.bindClassTo); - } - $el.removeClass( opt.invalidClass + ' ' + opt.validClass ); - if (isValid !== null) { - $el.addClass( isValid ? opt.validClass : opt.invalidClass ); - } - }, + if (!tpl) return; - _showmsg: function(e, type, msg) { - var me = this, - el = e.target; + while (--i) { + tpl = tpl.replace('{' + i + '}', args[i]); + } - if ( me.$el.is(el) ) { - if (isObject(type)) { - me.showMsg(type) - } - else if ( type === 'tip' ) { - me.$el.find(INPUT_SELECTOR +"["+ DATA_TIP +"]", el).each(function(){ - me.showMsg(this, {type: type, msg: msg}); - }); + return tpl; } - } - else { - me.showMsg(el, {type: type, msg: msg}); - } - }, + }); + } + function Field(key, obj, oldField) { + this.key = key; + this.validator = context; + $.extend(this, oldField, obj); + } - _hidemsg: function(e) { - var $el = $(e.target); + FieldFactory.prototype = context; + Field.prototype = new FieldFactory(); - if ( $el.is(INPUT_SELECTOR) ) { - this.hideMsg($el); - } - }, + return Field; + } - // Validated a field - _validatedField: function(el, field, ret) { - var me = this, - opt = me.options, - isValid = field.isValid = ret.isValid = !!ret.isValid, - callback = isValid ? 'valid' : 'invalid'; + /** + * Create Rules + * + * @class + * @param {Object} obj rules + * @param {Object} context context + */ + function Rules(obj, context) { + if (!isObject(obj)) return; - ret.key = field.key; - ret.ruleName = field._r; - ret.id = el.id; - ret.value = field.value; + var k, that = context ? context === true ? this : context : Rules.prototype; - me.elements[field.key] = ret.element = el; - me.isValid = me.$el[0].isValid = isValid ? me.isFormValid() : isValid; + for (k in obj) { + if (_checkRuleName(k)) + that[k] = _getRule(obj[k]); + } + } - if (isValid) { - ret.type = 'ok'; - } else { - if (me.submiting) { - me.errors[field.key] = ret.msg; - } - me.hasError = true; - } + /** + * Create Messages + * + * @class + * @param {Object} obj rules + * @param {Object} context context + */ + function Messages(obj, context) { + if (!isObject(obj)) return; - // cache result - field.old = ret; + var k, that = context ? context === true ? this : context : Messages.prototype; - // trigger callback - isFunction(field[callback]) && field[callback].call(me, el, ret); - isFunction(opt.validation) && opt.validation.call(me, el, ret); + for (k in obj) { + that[k] = obj[k]; + } + } - // trigger event - $(el).attr( ARIA_INVALID, isValid ? null : true ) - .trigger( callback + CLS_NS_FIELD, [ret, me] ); - me.$el.triggerHandler('validation', [ret, me]); + // Rule converted factory + function _getRule(fn) { + switch ($.type(fn)) { + case 'function': + return fn; + case 'array': + var f = function() { + return fn[0].test(this.value) || fn[1] || false; + }; + f.msg = fn[1]; + return f; + case 'regexp': + return function() { + return fn.test(this.value); + }; + } + } - if (me.checkOnly) return; - // set className - me._setClass(el, ret.skip || ret.type === 'tip' ? null : isValid); - me._makeMsg.apply(me, arguments); - }, + // Get instance by an element + function _getInstance(el) { + var wrap, k, options; - _makeMsg: function(el, field, ret) { - // show or hide the message - if (field.msgMaker) { - ret = $.extend({}, ret); - if (field._e === 'focusin') { - ret.type = 'tip'; - } - this[ ret.showOk || ret.msg || ret.type === 'tip' ? 'showMsg' : 'hideMsg' ](el, ret, field); + if (!el || !el.tagName) return; + + switch (el.tagName) { + case 'INPUT': + case 'SELECT': + case 'TEXTAREA': + case 'BUTTON': + case 'FIELDSET': + wrap = el.form || $(el).closest('.' + CLS_WRAPPER); + break; + case 'FORM': + wrap = el; + break; + default: + wrap = $(el).closest('.' + CLS_WRAPPER); + } + + for (k in preinitialized) { + if ($(wrap).is(k)) { + options = preinitialized[k]; + break; } - }, - - // Validated a rule - _validatedRule: function(el, field, ret, msgOpt) { - field = field || me.getField(el); - msgOpt = msgOpt || {}; + } - var me = this, - msg, - rule, - method = field._r, - timely = field.timely, - special = timely === 9 || timely === 8, - transfer, - temp, - isValid = false; + return $(wrap).data(NS) || $(wrap)[NS](options).data(NS); + } - // use null to break validation from a field - if (ret === null) { - me._validatedField(el, field, {isValid: true, skip: true}); - field._i = 0; - return; - } - else if (ret === undefined) { - transfer = true; - } - else if (ret === true || ret === '') { - isValid = true; - } - else if (isString(ret)) { - msg = ret; - } - else if (isObject(ret)) { - if (ret.error) { - msg = ret.error; - } else { - msg = ret.ok; - isValid = true; - } - } - else { - isValid = !!ret - } + // Get custom rules on the node + function _getDataRule(el, method) { + var fn = trim(attr(el, DATA_RULE + '-' + method)); - rule = field._rules[field._i]; - if (rule.not) { - msg = undefined; - isValid = method === "required" || !isValid; - } - if (rule.or) { - if (isValid) { - while ( field._i < field._rules.length && field._rules[field._i].or ) { - field._i++; - } - } else { - transfer = true; - } - } - else if (rule.and) { - if (!field.isValid) transfer = true; - } + if ( fn && (fn = new Function("return " + fn)()) ) { + return _getRule(fn); + } + } - if (transfer) { - isValid = true; - } - // message analysis, and throw rule level event - else { - if (isValid) { - if (field.showOk !== false) { - temp = attr(el, DATA_OK); - msg = temp === null ? isString(field.ok) ? field.ok : msg : temp; - if (!isString(msg) && isString(field.showOk)) { - msg = field.showOk; - } - if (isString(msg)) { - msgOpt.showOk = isValid; - } - } - } - if (!isValid || special) { - /* rule message priority: - 1. custom DOM message - 2. custom field message; - 3. global defined message; - 4. rule returned message; - 5. default message; - */ - msg = (_getDataMsg(el, field, msg || rule.msg || me.messages[method]) || me.messages.fallback).replace(/\{0\|?([^\}]*)\}/, function(m, defaultDisplay){ - return me._getDisplay(el, field.display) || defaultDisplay || me.messages[0]; - }); - } - if (!isValid) field.isValid = isValid; - msgOpt.msg = msg; - $(el).trigger( (isValid ? 'valid' : 'invalid') + CLS_NS_RULE, [method, msg]); - } + // Get custom messages on the node + function _getDataMsg(el, field, m) { + var msg = field.msg, + item = field._r; - if (special && (!transfer || rule.and)) { - if (!isValid && !field._m) field._m = msg; - field._v = field._v || []; - field._v.push({ - type: isValid ? !transfer ? 'ok' : 'tip' : 'error', - msg: msg || rule.msg - }); - } + if ( isObject(msg) ) msg = msg[item]; + if ( !isString(msg) ) { + msg = attr(el, DATA_MSG + '-' + item) || attr(el, DATA_MSG) || ( m ? isString(m) ? m : m[item] : ''); + } - me._debug('log', ' ' + field._i + ': ' + method + ' => ' + (isValid || msg)); + return msg; + } - // the current rule has passed, continue to validate - if ( (isValid || special) && field._i < field._rules.length - 1) { - field._i++; - me._checkRule(el, field); - } - // field was invalid, or all fields was valid - else { - field._i = 0; + // Get message position + function _getPos(str) { + var pos; - if (special) { - msgOpt.isValid = field.isValid; - msgOpt.result = field._v; - msgOpt.msg = field._m || ''; - if (!field.value && (field._e === 'focusin')) { - msgOpt.type = 'tip'; - } - } else { - msgOpt.isValid = isValid; - } + if (str) pos = rPos.exec(str); + return pos && pos[0]; + } - me._validatedField(el, field, msgOpt); - delete field._m; - delete field._v; - } - }, + // Check whether the element is checkbox or radio + function _checkable(el) { + return el.tagName === 'INPUT' && el.type === 'checkbox' || el.type === 'radio'; + } - // Verify a rule form a field - _checkRule: function(el, field) { - var me = this, - ret, - fn, - old, - key = field.key, - rule = field._rules[field._i], - method = rule.method, - params = rule.params; + // Parse date string to timestamp + function _parseDate(str) { + return Date.parse(str.replace(/\.|\-/g, '/')); + } - // request has been sent, wait it - if (me.submiting && me.deferred[key]) { - return; - } - old = field.old; - field._r = method; + // Rule name only allows alphanumeric characters and underscores + function _checkRuleName(name) { + return /^\w+$/.test(name); + } - if (old && !field.must && !rule.must && rule.result !== undefined && - old.ruleName === method && old.id === el.id && - field.value && old.value === field.value ) - { - // get result from cache - ret = rule.result; - } - else { - // get result from current rule - fn = _getDataRule(el, method) || me.rules[method] || noop; - ret = fn.call(field, el, params, field); - if (fn.msg) rule.msg = fn.msg; - } + // Translate field key to jQuery selector. + function _key2selector(key) { + var isID = key.charAt(0) === "#"; + key = key.replace(/([:.{(|)}/\[\]])/g, "\\$1"); + return isID ? key : '[name="'+ key +'"]:first'; + } - // asynchronous validation - if (isObject(ret) && isFunction(ret.then)) { - me.deferred[key] = ret; - // whether the field valid is unknown - field.isValid = undefined; + // Fixed a issue cause by refresh page in IE. + $(window).on('beforeunload', function(){ + this.focus(); + }); - // show loading message - !me.checkOnly && me.showMsg(el, { - type: 'loading', - msg: me.messages.loading - }, field); + $(document) + .on('click', ':submit', function(){ + var input = this, attrNode; + if (!input.form) return; + // Shim for "formnovalidate" + attrNode = input.getAttributeNode('formnovalidate'); + if (attrNode && attrNode.nodeValue !== null || attr(input, NOVALIDATE)!== null) { + novalidateonce = true; + } + }) + // Automatic initializing form validation + .on('focusin submit validate', 'form,.'+CLS_WRAPPER, function(e) { + if ( attr(this, NOVALIDATE) !== null ) return; + var $form = $(this), me; - // waiting to parse the response data - ret.then( - function(d, textStatus, jqXHR) { - var data = trim(jqXHR.responseText), - result, - dataFilter = field.dataFilter; + if ( !$form.data(NS) && (me = _getInstance(this)) ) { + if ( !$.isEmptyObject(me.fields) ) { + // Execute event handler + if (e.type === 'focusin') { + me._focusin(e); + } else { + me._submit(e); + } + } else { + attr(this, NOVALIDATE, NOVALIDATE); + $form.off(CLS_NS).removeData(NS); + } + } + }); - // detect if data is json or jsonp format - if (/jsonp?/.test(this.dataType)) { - data = d; - } else if (data.charAt(0) === '{') { - data = $.parseJSON(data); - } + new Messages({ + fallback: "This field is not valid.", + loading: 'Validating...' + }); - // filter data - result = dataFilter.call(this, data, field); - if (result === undefined) result = dataFilter.call(this, data.data, field); - rule.data = this.data; - rule.result = field.old ? result : undefined; - me._validatedRule(el, field, result); - }, - function(jqXHR, textStatus){ - me._validatedRule(el, field, me.messages[textStatus] || textStatus); - } - ).always(function(){ - delete me.deferred[key]; - }); - } - // other result - else { - me._validatedRule(el, field, ret); - } - }, + // Built-in rules (global) + new Rules({ - // Processing the validation - _validate: function(el, field) { - var me = this; + /** + * required + * + * @example: + required + required(anotherRule) + required(not, -1) + required(from, .contact) + */ + required: function(element, params) { + var me = this, + val = trim(me.value), + isValid = true; - // doesn't validate the element that has "disabled" or "novalidate" attribute - if ( el.disabled || attr(el, NOVALIDATE) !== null ) { - return; - } + if (params) { + if ( params.length === 1 ) { + if ( !_checkRuleName(params[0]) ) { + if (!val && !$(params[0], me.$el).length ) { + return null; + } + } + else if ( me.rules[params[0]] ) { + if ( !val && !me.test(element, params[0]) ) { + return null; + } + } + } + else if ( params[0] === 'not' ) { + $.each(params.slice(1), function() { + return (isValid = val !== trim(this)); + }); + } + else if ( params[0] === 'from' ) { + var $elements = me.$el.find(params[1]), + VALIDATED = '_validated_', + ret; - field = field || me.getField(el); - if (!field) return; - if (!field._rules) me._parse(el); - if (!field._rules) return; + isValid = $elements.filter(function(){ + var field = me.getField(this); + return field && !!trim(field.getValue()); + }).length >= (params[2] || 1); - me._debug('info', field.key); + if (isValid) { + if (!val) ret = null; + } else { + ret = _getDataMsg($elements[0], me) || false; + } - field.isValid = true; - field.element = el; - // Cache the value - field.value = field.getValue(); + if ( !$(element).data(VALIDATED) ) { + $elements.data(VALIDATED, 1).each(function(){ + if (element !== this) { + me._validate(this); + } + }).removeData(VALIDATED); + } - // if the field is not required, and that has a blank value - if (!field.required && !field.must && !field.value) { - if (!_checkable(el)) { - me._validatedField(el, field, {isValid: true}); - return true; + return ret; } } - me._checkRule(el, field); - return field.isValid; + return isValid && !!val; }, - _debug: function(type, messages) { - if (window.console && this.options.debug) { - console[type](messages); + /** + * integer + * + * @example: + integer + integer[+] + integer[+0] + integer[-] + integer[-0] + */ + integer: function(element, params) { + var re, z = '0|', + p = '[1-9]\\d*', + key = params ? params[0] : '*'; + + switch (key) { + case '+': + re = p; + break; + case '-': + re = '-' + p; + break; + case '+0': + re = z + p; + break; + case '-0': + re = z + '-' + p; + break; + default: + re = z + '-?' + p; } + re = '^(?:' + re + ')$'; + + return new RegExp(re).test(this.value) || (this.messages.integer && this.messages.integer[key]); }, /** - * Detecting whether the value of an element that matches a rule + * match another field * - * @method test - * @param {Element} el - input element - * @param {String} rule - rule name - */ - test: function(el, rule) { + * @example: + match[password] Match the password field (two values must be the same) + match[eq, password] Ditto + match[neq, count] The value must be not equal to the value of the count field + match[lt, count] The value must be less than the value of the count field + match[lte, count] The value must be less than or equal to the value of the count field + match[gt, count] The value must be greater than the value of the count field + match[gte, count] The value must be greater than or equal to the value of the count field + match[gte, startDate, date] + match[gte, startTime, time] + **/ + match: function(element, params) { + if (!params) return; + var me = this, - ret, - parts = rRule.exec(rule), - field, - method, - params; + isValid = true, + a, b, + key, msg, type = 'eq', parser, + selector2, elem2, field2; - if (parts) { - method = parts[1]; - if (method in me.rules) { - params = parts[2] || parts[3]; - params = params ? params.split(', ') : undefined; - field = me.getField(el, true); - field._r = method; - field.value = field.getValue(); - ret = me.rules[method].call(field, el, params); + if (params.length === 1) { + key = params[0]; + } else { + type = params[0]; + key = params[1]; + } + + selector2 = _key2selector(key); + elem2 = me.$el.find(selector2)[0]; + // If the compared field is not exist + if (!elem2) return; + field2 = me.getField(elem2); + a = me.value; + b = field2.getValue(); + + if (!me._match) { + me.$el.on('valid'+CLS_NS_FIELD+CLS_NS, selector2, function(){ + $(element).trigger('validate'); + }); + me._match = field2._match = 1; + } + + // If both fields are blank + if (!me.required && a === "" && b === "") { + return null; + } + + parser = params[2]; + if (parser) { + if (/^date(time)?$/i.test(parser)) { + a = _parseDate(a); + b = _parseDate(b); + } else if (parser === 'time') { + a = +a.replace(/:/g, ''); + b = +b.replace(/:/g, ''); } } - return ret === true || ret === undefined || ret === null; - }, + // If the compared field is incorrect, we only ensure that this field is correct. + if (type !== "eq" && !isNaN(+a) && isNaN(+b)) { + return true; + } - _getDisplay: function(el, str) { - return !isString(str) ? isFunction(str) ? str.call(this, el) : '' : str; + switch (type) { + case 'lt': + isValid = +a < +b; break; + case 'lte': + isValid = +a <= +b; break; + case 'gte': + isValid = +a >= +b; break; + case 'gt': + isValid = +a > +b; break; + case 'neq': + isValid = a !== b; break; + default: + isValid = a === b; + } + + return isValid || ( + isObject(me.messages.match) + && me.messages.match[type].replace( '{1}', me._getDisplay( element, field2.display || key ) ) + ); }, - _getMsgOpt: function(obj, field) { - var opt = field ? field : this.options; - return $.extend({ - type: 'error', - pos: _getPos(opt.msgClass), - target: opt.target, - wrapper: opt.msgWrapper, - style: opt.msgStyle, - cls: opt.msgClass, - arrow: opt.msgArrow, - icon: opt.msgIcon - }, isString(obj) ? {msg: obj} : obj); + /** + * range numbers + * + * @example: + range[0~99] Number 0-99 + range[0~] Number greater than or equal to 0 + range[~100] Number less than or equal to 100 + **/ + range: function(element, params) { + return this.getRangeMsg(this.value, params); }, - _getMsgDOM: function(el, msgOpt) { - var $el = $(el), $msgbox, datafor, tgt, container; + /** + * how many checkbox or radio inputs that checked + * + * @example: + checked; no empty, same to required + checked[1~3] 1-3 items + checked[1~] greater than 1 item + checked[~3] less than 3 items + checked[3] 3 items + **/ + checked: function(element, params) { + if ( !_checkable(element) ) return; - if ( $el.is(INPUT_SELECTOR) ) { - tgt = msgOpt.target || attr(el, DATA_TARGET); - if (tgt) { - tgt = !isFunction(tgt) ? tgt.charAt(0) === '#' ? $(tgt) : this.$el.find(tgt) : tgt.call(this, el); - if (tgt.length) { - if ( tgt.is(INPUT_SELECTOR) ) { - $el = tgt - el = tgt.get(0); - } else if ( tgt.hasClass(CLS_MSG_BOX) ) { - $msgbox = tgt; - } else { - container = tgt; - } - } - } - if (!$msgbox) { - datafor = (!_checkable(el) || !el.name) && el.id ? el.id : el.name; - $msgbox = (container || this.$el).find(msgOpt.wrapper + '.' + CLS_MSG_BOX + '[for="' + datafor + '"]'); - } + var me = this, + elem, count; + + if (element.name) { + count = me.$el.find('input[name="' + element.name + '"]').filter(function() { + var el = this; + if (!elem && _checkable(el)) elem = el; + return !el.disabled && el.checked; + }).length; } else { - $msgbox = $el; + elem = element; + count = elem.checked; } - // Create new message box - if (!msgOpt.hide && !$msgbox.length) { - $msgbox = $('<'+ msgOpt.wrapper + '>').attr({ - 'class': CLS_MSG_BOX + (msgOpt.cls ? ' ' + msgOpt.cls : ''), - 'style': msgOpt.style || undefined, - 'for': datafor - }); - - if (container) { - $msgbox.appendTo(container); - } else { - if ( _checkable(el) ) { - var $parent = $el.parent(); - $msgbox.appendTo( $parent.is('label') ? $parent.parent() : $parent ); - } else { - $msgbox[!msgOpt.pos || msgOpt.pos === 'right' ? 'insertAfter' : 'insertBefore']($el); - } - } + if (params) { + return me.getRangeMsg(count, params); + } else { + return !!count || _getDataMsg(elem, me, '') || me.messages.required || false; } - - return $msgbox; }, /** - * Show validation message + * length of a characters (You can pass the second parameter "true", will calculate the length in bytes) * - * @method showMsg - * @param {Element} el - input element - * @param {Object} msgOpt - */ - showMsg: function(el, msgOpt, /*INTERNAL*/ field) { - if (!el) return; - var me = this, - opt = me.options, - msgShow, - msgMaker, - temp, - $msgbox; + * @example: + length[6~16] 6-16 characters + length[6~] Greater than 6 characters + length[~16] Less than 16 characters + length[~16, true] Less than 16 characters, non-ASCII characters calculating two-character + **/ + length: function(element, params) { + var value = this.value, + len = (params[1] === 'true' ? value.replace(rDoubleBytes, 'xx') : value).length; - if (isObject(el) && !el.jquery && !msgOpt) { - $.each(el, function(key, msg) { - var el = me.elements[key] || me.$el.find(_key2selector(key))[0]; - me.showMsg(el, msg); - }); - return; - } + return this.getRangeMsg(len, params, (params[1] ? '_2' : '')); + }, - if ($(el).is(INPUT_SELECTOR)) { - field = field || me.getField(el); - } + /** + * remote validation + * + * @description + * remote([get:]url [, name1, [name2 ...]]); + * Adaptation three kinds of results (Front for the successful, followed by a failure): + 1. text: + '' 'Error Message' + 2. json: + {"ok": ""} {"error": "Error Message"} + 3. json wrapper: + {"status": 1, "data": {"ok": ""}} {"status": 1, "data": {"error": "Error Message"}} + * @example + The simplest: remote(path/to/server); + With parameters: remote(path/to/server, name1, name2, ...); + By GET: remote(get:path/to/server, name1, name2, ...); + Name proxy: remote(path/to/server, name1, proxyname2:name2, proxyname3:#id3, ...) + Query String remote(path/to/server, foo=1&bar=2, name1, name2, ...) + */ + remote: function(element, params) { + if (!params) return; - if (!(msgMaker = (field || opt).msgMaker)) { - return; - } + var me = this, + arr = rAjaxType.exec(params[0]), + rule = me._rules[me._i], + data = {}, + queryString = '', + url = arr[3], + type = arr[2] || 'POST', // GET / POST + rType = (arr[1]||'').toLowerCase(), // CORS / JSONP + dataType; - msgOpt = me._getMsgOpt(msgOpt, field); - el = (el.name && _checkable(el) ? me.$el.find('input[name="'+ el.name +'"]') : $(el)).get(0); + rule.must = true; + data[element.name] = me.value; - // ok or tip - if (!msgOpt.msg && msgOpt.type !== 'error') { - temp = attr(el, 'data-' + msgOpt.type); - if (temp !== null) msgOpt.msg = temp; + // There are extra fields + if (params[1]) { + $.map(params.slice(1), function(name) { + var arr, key; + if (~name.indexOf('=')) { + queryString += '&' + name; + } else { + arr = name.split(':'); + name = trim(arr[0]); + key = trim(arr[1]) || name; + data[ name ] = me.$el.find( _key2selector(key) ).val(); + } + }); } - if ( !isString(msgOpt.msg) ) { - return; + data = $.param(data) + queryString; + if (!me.must && rule.data && rule.data === data) { + return rule.result; } - $msgbox = me._getMsgDOM(el, msgOpt); - - !rPos.test($msgbox[0].className) && $msgbox.addClass(msgOpt.cls); - if ( isIE === 6 && msgOpt.pos === 'bottom' ) { - $msgbox[0].style.marginTop = $(el).outerHeight() + 'px'; + // Cross-domain request, force jsonp dataType + if (rType !== 'cors' && /^https?:/.test(url) && !~url.indexOf(location.host)) { + dataType = 'jsonp'; } - $msgbox.html( msgMaker.call(me, msgOpt) )[0].style.display = ''; - if (isFunction(msgShow = field && field.msgShow || opt.msgShow)) { - msgShow.call(me, $msgbox, msgOpt.type); - } + // Asynchronous validation need return jqXHR objects + return $.ajax({ + url: url, + type: type, + data: data, + dataType: dataType + }); }, /** - * Hide validation message + * filter characters, direct filtration without prompting error (support custom regular expressions) * - * @method hideMsg - * @param {Element} el - input element - * @param {Object} msgOpt optional + * @example + * filter filtering unsafe characters + * filter(regexp) filtering the "regexp" matched characters */ - hideMsg: function(el, msgOpt, /*INTERNAL*/ field) { - var me = this, - opt = me.options, - msgHide, - $msgbox; + filter: function(element, params) { + var value = this.value, + temp = value.replace( params ? (new RegExp("[" + params[0] + "]", "gm")) : rUnsafe, '' ); + if (temp !== value) this.setValue(temp); + } + }); - el = $(el).get(0); - if ($(el).is(INPUT_SELECTOR)) { - field = field || me.getField(el); - if (field) { - if (field.isValid || me.reseting) attr(el, ARIA_INVALID, null); - } + + /** + * Config global options + * + * @static config + * @param {Object} options + */ + Validator.config = function(key, value) { + if (isObject(key)) { + $.each(key, _config); + } + else if (isString(key)) { + _config(key, value); + } + + function _config(k, o) { + if (k === 'rules') { + new Rules(o); + } + else if (k === 'messages') { + new Messages(o); + } + else if (k in fieldDefaults) { + fieldDefaults[k] = o; + } + else { + defaults[k] = o; } + } + }; - msgOpt = me._getMsgOpt(msgOpt, field); - msgOpt.hide = true; + /** + * Config themes + * + * @static setTheme + * @param {String|Object} name + * @param {Object} obj + * @example + .setTheme( themeName, themeOptions ) + .setTheme( multiThemes ) + */ + Validator.setTheme = function(name, obj) { + if ( isObject(name) ) { + $.extend(true, themes, name); + } + else if ( isString(name) && isObject(obj) ) { + themes[name] = $.extend(themes[name], obj); + } + }; - $msgbox = me._getMsgDOM(el, msgOpt); - if (!$msgbox.length) return; + /** + * Resource loader + * + * @static load + * @param {String} str + * @example + .load('local=zh-CN') // load: local/zh-CN.js and jquery.validator.css + .load('local=zh-CN&css=') // load: local/zh-CN.js + .load('local&css') // load: local/en.js (set <html lang="en">) and jquery.validator.css + .load('local') // dito + */ + Validator.load = function(str) { + if (!str) return; + var doc = document, + params = {}, + node = doc.scripts[0], + dir, el, ONLOAD; - if ( isFunction(msgHide = field && field.msgHide || opt.msgHide) ) { - msgHide.call(me, $msgbox, msgOpt.type); - } else { - $msgbox[0].style.display = 'none'; - $msgbox[0].innerHTML = ''; - } - }, + str.replace(/([^?=&]+)=([^&#]*)/g, function(m, key, value){ + params[key] = value; + }); - /** - * Get field information - * - * @method getField - * @param {Element} - input element - * @return {Object} field - */ - getField: function(el, must) { - var me = this, - key, - field; + dir = params.dir || Validator.dir; - if (isString(el)) { - key = el; - el = undefined; - } else { - if (attr(el, DATA_RULE)) { - return me._parse(el); - } - if (el.id && '#' + el.id in me.fields || !el.name) { - key = '#' + el.id; - } else { - key = el.name; + if (!Validator.css && params.css !== '') { + el = doc.createElement('link'); + el.rel = 'stylesheet'; + el.href = Validator.css = dir + 'jquery.validator.css'; + node.parentNode.insertBefore(el, node); + } + if (!Validator.local && ~str.indexOf('local') && params.local !== '') { + Validator.local = (params.local || doc.documentElement.lang || 'en').replace('_','-'); + Validator.pending = 1; + el = doc.createElement('script'); + el.src = dir + 'local/' + Validator.local + '.js'; + ONLOAD = 'onload' in el ? 'onload' : 'onreadystatechange'; + el[ONLOAD] = function() { + if (!el.readyState || /loaded|complete/.test(el.readyState)) { + el = el[ONLOAD] = null; + delete Validator.pending; + $(window).triggerHandler('validatorready'); } - } + }; + node.parentNode.insertBefore(el, node); + } + }; - if ( (field = me.fields[key]) || must && (field = new me.Field(key)) ) { - field.element = el; - } + // Auto loading resources + (function(){ + var scripts = document.scripts, + i = scripts.length, node, arr, + re = /(.*validator(?:\.min)?.js)(\?.*(?:local|css|dir)(?:=[\w\-]*)?)?/; - return field; - }, + while (i-- && !arr) { + node = scripts[i]; + arr = (node.hasAttribute ? node.src : node.getAttribute('src',4)||'').match(re); + } - /** - * Config a field - * - * @method: setField - * @param {String} key - * @param {Object} obj - */ - setField: function(key, obj) { - var fields = {}; + if (!arr) return; + Validator.dir = arr[1].split('/').slice(0, -1).join('/')+'/'; + Validator.load(arr[2]); + })(); - if (!key) return; + return $[NS] = Validator; +})); - // update this field - if (isString(key)) { - fields[key] = obj; - } - // update fields - else { - fields = key; - } +/********************************* + * Themes, rules, and i18n support + * Locale: Chinese; 中文 + *********************************/ +(function(factory) { + typeof module === "object" && module.exports ? module.exports = factory( require( "jquery" ) ) : + typeof define === 'function' && define.amd ? define('validator-lang',['jquery'], factory) : + factory(jQuery); +}(function($) { - this._initFields(fields); - }, + /* Global configuration + */ + $.validator.config({ + //stopOnError: true, + //focusCleanup: true, + //theme: 'yellow_right', + //timely: 2, - /** - * Detecting whether the form is valid - * - * @method isFormValid - * @return {Boolean} - */ - isFormValid: function() { - var fields = this.fields, k, field; - for (k in fields) { - field = fields[k]; - if (!field._rules || !field.required && !field.must && !field.value) continue; - if (!field.isValid) return false; + // Custom rules + rules: { + digits: [/^\d+$/, "请填写数字"] + ,letters: [/^[a-z]+$/i, "请填写字母"] + ,date: [/^\d{4}-\d{2}-\d{2}$/, "请填写有效的日期,格式:yyyy-mm-dd"] + ,time: [/^([01]\d|2[0-3])(:[0-5]\d){1,2}$/, "请填写有效的时间,00:00到23:59之间"] + ,email: [/^[\w\+\-]+(\.[\w\+\-]+)*@[a-z\d\-]+(\.[a-z\d\-]+)*\.([a-z]{2,4})$/i, "请填写有效的邮箱"] + ,url: [/^(https?|s?ftp):\/\/\S+$/i, "请填写有效的网址"] + ,qq: [/^[1-9]\d{4,}$/, "请填写有效的QQ号"] + ,IDcard: [/^\d{6}(19|2\d)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)?$/, "请填写正确的身份证号码"] + ,tel: [/^(?:(?:0\d{2,3}[\- ]?[1-9]\d{6,7})|(?:[48]00[\- ]?[1-9]\d{6}))$/, "请填写有效的电话号码"] + ,mobile: [/^1[3-9]\d{9}$/, "请填写有效的手机号"] + ,zipcode: [/^\d{6}$/, "请检查邮政编码格式"] + ,chinese: [/^[\u0391-\uFFE5]+$/, "请填写中文字符"] + ,username: [/^\w{3,12}$/, "请填写3-12位数字、字母、下划线"] + ,password: [/^[\S]{6,16}$/, "请填写6-16位字符,不能包含空格"] + ,accept: function (element, params){ + if (!params) return true; + var ext = params[0], + value = $(element).val(); + return (ext === '*') || + (new RegExp(".(?:" + ext + ")$", "i")).test(value) || + this.renderMsg("只接受{1}后缀的文件", ext.replace(/\|/g, ',')); } - return true; - }, - - /** - * Prevent submission form - * - * @method holdSubmit - * @param {Boolean} hold - If set to false, will release the hold - */ - holdSubmit: function(hold) { - this.submiting = hold === undefined || hold; - }, - - /** - * Clean validation messages - * - * @method cleanUp - */ - cleanUp: function() { - this._reset(1); + }, - /** - * Destroy the validation - * - * @method destroy - */ - destroy: function() { - this._reset(1); - this.$el.off(CLS_NS).removeData(NS); - attr(this.$el[0], NOVALIDATE, this._NOVALIDATE); - } - }; - - /** - * Create Field Factory - * - * @class - * @param {Object} context - * @return {Function} Factory - */ - function _createFieldFactory(context) { - function FieldFactory() { - var options = this.options; - for (var i in options) { - if (i in fieldDefaults) this[i] = options[i]; + // Default error messages + messages: { + 0: "此处", + fallback: "{0}格式不正确", + loading: "正在验证...", + error: "网络异常", + timeout: "请求超时", + required: "{0}不能为空", + remote: "{0}已被使用", + integer: { + '*': "请填写整数", + '+': "请填写正整数", + '+0': "请填写正整数或0", + '-': "请填写负整数", + '-0': "请填写负整数或0" + }, + match: { + eq: "{0}与{1}不一致", + neq: "{0}与{1}不能相同", + lt: "{0}必须小于{1}", + gt: "{0}必须大于{1}", + lte: "{0}不能大于{1}", + gte: "{0}不能小于{1}" + }, + range: { + rg: "请填写{1}到{2}的数", + gte: "请填写不小于{1}的数", + lte: "请填写最大{1}的数", + gtlt: "请填写{1}到{2}之间的数", + gt: "请填写大于{1}的数", + lt: "请填写小于{1}的数" + }, + checked: { + eq: "请选择{1}项", + rg: "请选择{1}到{2}项", + gte: "请至少选择{1}项", + lte: "请最多选择{1}项" + }, + length: { + eq: "请填写{1}个字符", + rg: "请填写{1}到{2}个字符", + gte: "请至少填写{1}个字符", + lte: "请最多填写{1}个字符", + eq_2: "", + rg_2: "", + gte_2: "", + lte_2: "" } - $.extend(this, { - _valHook: function() { - return this.element.contentEditable === 'true' ? 'text' : 'val'; - }, - getValue: function() { - var elem = this.element; - if (elem.type === "number" && elem.validity && elem.validity.badInput) { - return 'NaN'; - } - return $(elem)[this._valHook()](); - }, - setValue: function(value) { - $(this.element)[this._valHook()](this.value = value); - }, - // Get a range of validation messages - getRangeMsg: function(value, params, suffix) { - if (!params) return; + } + }); - var me = this, - msg = me.messages[me._r] || '', - result, - p = params[0].split('~'), - e = params[1] === 'false', - a = p[0], - b = p[1], - c = 'rg', - args = [''], - isNumber = trim(value) && +value === +value; + /* Themes + */ + var TPL_ARROW = '<span class="n-arrow"><b>◆</b><i>◆</i></span>'; + $.validator.setTheme({ + 'simple_right': { + formClass: 'n-simple', + msgClass: 'n-right' + }, + 'simple_bottom': { + formClass: 'n-simple', + msgClass: 'n-bottom' + }, + 'yellow_top': { + formClass: 'n-yellow', + msgClass: 'n-top', + msgArrow: TPL_ARROW + }, + 'yellow_right': { + formClass: 'n-yellow', + msgClass: 'n-right', + msgArrow: TPL_ARROW + }, + 'yellow_right_effect': { + formClass: 'n-yellow', + msgClass: 'n-right', + msgArrow: TPL_ARROW, + msgShow: function($msgbox, type){ + var $el = $msgbox.children(); + if ($el.is(':animated')) return; + if (type === 'error') { + $el.css({left: '20px', opacity: 0}) + .delay(100).show().stop() + .animate({left: '-4px', opacity: 1}, 150) + .animate({left: '3px'}, 80) + .animate({left: 0}, 80); + } else { + $el.css({left: 0, opacity: 1}).fadeIn(200); + } + }, + msgHide: function($msgbox, type){ + var $el = $msgbox.children(); + $el.stop().delay(100).show() + .animate({left: '20px', opacity: 0}, 300, function(){ + $msgbox.hide(); + }); + } + } + }); +})); - function compare(large, small) { - return !e ? large >= small : large > small; +define('validator',['validator-core', 'validator-lang'], function (Validator, undefined) { + return Validator; +}); +define('form',['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, Upload, Validator) { + var Form = { + config: { + fieldlisttpl: '<dd class="form-inline"><input type="text" name="<%=name%>[<%=index%>][key]" class="form-control" value="<%=row.key%>" size="10" /> <input type="text" name="<%=name%>[<%=index%>][value]" class="form-control" value="<%=row.value%>" size="30" /> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span></dd>' + }, + events: { + validator: function (form, success, error, submit) { + if (!form.is("form")) + return; + //绑定表单事件 + form.validator($.extend({ + validClass: 'has-success', + invalidClass: 'has-error', + bindClassTo: '.form-group', + formClass: 'n-default n-bootstrap', + msgClass: 'n-right', + stopOnError: true, + display: function (elem) { + return $(elem).closest('.form-group').find(".control-label").text().replace(/\:/, ''); + }, + dataFilter: function (data) { + if (data.code === 1) { + return ""; + } else { + return data.msg; + } + }, + target: function (input) { + var target = $(input).data("target"); + if (target && $(target).size() > 0) { + return $(target); + } + var $formitem = $(input).closest('.form-group'), + $msgbox = $formitem.find('span.msg-box'); + if (!$msgbox.length) { + return []; + } + return $msgbox; + }, + valid: function (ret) { + var that = this, submitBtn = $(".layer-footer [type=submit]", form); + that.holdSubmit(); + $(".layer-footer [type=submit]", form).addClass("disabled"); + //验证通过提交表单 + Form.api.submit($(ret), function (data, ret) { + that.holdSubmit(false); + submitBtn.removeClass("disabled"); + if (false === $(this).triggerHandler("success.form", [data, ret])) { + return false; + } + if (typeof success === 'function') { + if (false === success.call($(this), data, ret)) { + return false; + } + } + //提示及关闭当前窗口 + var msg = ret.hasOwnProperty("msg") && ret.msg !== "" ? ret.msg : __('Operation completed'); + parent.Toastr.success(msg); + parent.$(".btn-refresh").trigger("click"); + var index = parent.Layer.getFrameIndex(window.name); + parent.Layer.close(index); + return false; + }, function (data, ret) { + that.holdSubmit(false); + if (false === $(this).triggerHandler("error.form", [data, ret])) { + return false; + } + submitBtn.removeClass("disabled"); + if (typeof error === 'function') { + if (false === error.call($(this), data, ret)) { + return false; + } + } + }, submit); + return false; } + }, form.data("validator-options") || {})); - if (p.length === 2) { - if (a && b) { - if (isNumber && compare(value, +a) && compare(+b, value)) { - result = true; - } - args = args.concat(p); - c = e ? 'gtlt' : 'rg'; - } - else if (a && !b) { - if (isNumber && compare(value, +a)) { - result = true; + //移除提交按钮的disabled类 + $(".layer-footer [type=submit],.fixed-footer [type=submit],.normal-footer [type=submit]", form).removeClass("disabled"); + }, + selectpicker: function (form) { + //绑定select元素事件 + if ($(".selectpicker", form).size() > 0) { + require(['bootstrap-select', 'bootstrap-select-lang'], function () { + $('.selectpicker', form).selectpicker(); + }); + } + }, + selectpage: function (form) { + //绑定selectpage元素事件 + if ($(".selectpage", form).size() > 0) { + require(['selectpage'], function () { + $('.selectpage', form).selectPage({ + eAjaxSuccess: function (data) { + data.list = typeof data.rows !== 'undefined' ? data.rows : (typeof data.list !== 'undefined' ? data.list : []); + data.totalRow = typeof data.total !== 'undefined' ? data.total : (typeof data.totalRow !== 'undefined' ? data.totalRow : data.list.length); + return data; } - args.push(a); - c = e ? 'gt' : 'gte'; - } - else if (!a && b) { - if (isNumber && compare(+b, value)) { - result = true; + }); + }); + //给隐藏的元素添加上validate验证触发事件 + $(document).on("change", ".sp_hidden", function () { + $(this).trigger("validate"); + }); + $(document).on("change", ".sp_input", function () { + $(this).closest(".sp_container").find(".sp_hidden").trigger("change"); + }); + $(form).on("reset", function () { + setTimeout(function () { + $('.selectpage', form).selectPageClear(); + }, 1); + }); + } + }, + cxselect: function (form) { + //绑定cxselect元素事件 + if ($("[data-toggle='cxselect']", form).size() > 0) { + require(['cxselect'], function () { + $.cxSelect.defaults.jsonName = 'name'; + $.cxSelect.defaults.jsonValue = 'value'; + $.cxSelect.defaults.jsonSpace = 'data'; + $("[data-toggle='cxselect']", form).cxSelect(); + }); + } + }, + citypicker: function (form) { + //绑定城市远程插件 + if ($("[data-toggle='city-picker']", form).size() > 0) { + require(['citypicker'], function () { + }); + } + }, + datetimepicker: function (form) { + //绑定日期时间元素事件 + if ($(".datetimepicker", form).size() > 0) { + require(['bootstrap-datetimepicker'], function () { + var options = { + format: 'YYYY-MM-DD HH:mm:ss', + icons: { + time: 'fa fa-clock-o', + date: 'fa fa-calendar', + up: 'fa fa-chevron-up', + down: 'fa fa-chevron-down', + previous: 'fa fa-chevron-left', + next: 'fa fa-chevron-right', + today: 'fa fa-history', + clear: 'fa fa-trash', + close: 'fa fa-remove' + }, + showTodayButton: true, + showClose: true + }; + $('.datetimepicker', form).parent().css('position', 'relative'); + $('.datetimepicker', form).datetimepicker(options); + }); + } + }, + daterangepicker: function (form) { + //绑定日期时间元素事件 + if ($(".datetimerange", form).size() > 0) { + require(['bootstrap-daterangepicker'], function () { + var ranges = {}; + ranges[__('Today')] = [Moment().startOf('day'), Moment().endOf('day')]; + ranges[__('Yesterday')] = [Moment().subtract(1, 'days').startOf('day'), Moment().subtract(1, 'days').endOf('day')]; + ranges[__('Last 7 Days')] = [Moment().subtract(6, 'days').startOf('day'), Moment().endOf('day')]; + ranges[__('Last 30 Days')] = [Moment().subtract(29, 'days').startOf('day'), Moment().endOf('day')]; + ranges[__('This Month')] = [Moment().startOf('month'), Moment().endOf('month')]; + ranges[__('Last Month')] = [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')]; + var options = { + timePicker: false, + autoUpdateInput: false, + timePickerSeconds: true, + timePicker24Hour: true, + autoApply: true, + locale: { + format: 'YYYY-MM-DD HH:mm:ss', + customRangeLabel: __("Custom Range"), + applyLabel: __("Apply"), + cancelLabel: __("Clear"), + }, + ranges: ranges, + }; + var origincallback = function (start, end) { + $(this.element).val(start.format(options.locale.format) + " - " + end.format(options.locale.format)); + $(this.element).trigger('blur'); + }; + $(".datetimerange", form).each(function () { + var callback = typeof $(this).data('callback') == 'function' ? $(this).data('callback') : origincallback; + $(this).on('apply.daterangepicker', function (ev, picker) { + callback.call(picker, picker.startDate, picker.endDate); + }); + $(this).on('cancel.daterangepicker', function (ev, picker) { + $(this).val('').trigger('blur'); + }); + $(this).daterangepicker($.extend({}, options, $(this).data()), callback); + }); + }); + } + }, + plupload: function (form) { + //绑定plupload上传元素事件 + if ($(".plupload", form).size() > 0) { + Upload.api.plupload($(".plupload", form)); + } + }, + faselect: function (form) { + //绑定fachoose选择附件事件 + if ($(".fachoose", form).size() > 0) { + $(".fachoose", form).on('click', function () { + var that = this; + var multiple = $(this).data("multiple") ? $(this).data("multiple") : false; + var mimetype = $(this).data("mimetype") ? $(this).data("mimetype") : ''; + parent.Fast.api.open("general/attachment/select?element_id=" + $(this).attr("id") + "&multiple=" + multiple + "&mimetype=" + mimetype, __('Choose'), { + callback: function (data) { + var button = $("#" + $(that).attr("id")); + var maxcount = $(button).data("maxcount"); + var input_id = $(button).data("input-id") ? $(button).data("input-id") : ""; + maxcount = typeof maxcount !== "undefined" ? maxcount : 0; + if (input_id && data.multiple) { + var urlArr = []; + var inputObj = $("#" + input_id); + var value = $.trim(inputObj.val()); + if (value !== "") { + urlArr.push(inputObj.val()); + } + urlArr.push(data.url) + var result = urlArr.join(","); + if (maxcount > 0) { + var nums = value === '' ? 0 : value.split(/\,/).length; + var files = data.url !== "" ? data.url.split(/\,/) : []; + var remains = maxcount - nums; + if (files.length > remains) { + Toastr.error(__('You can choose up to %d file%s', remains)); + return false; + } + } + inputObj.val(result).trigger("change"); + } else { + $("#" + input_id).val(data.url).trigger("change"); + } } - args.push(b); - c = e ? 'lt' : 'lte'; - } - } - else { - if (value === +a) { - result = true; - } - args.push(a); - c = 'eq'; - } - - if (msg) { - if (suffix && msg[c + suffix]) { - c += suffix; - } - args[0] = msg[c]; - } - - return result || me._rules && ( me._rules[me._i].msg = me.renderMsg.apply(null, args) ); - }, - // Render message template - renderMsg: function() { - var args = arguments, - tpl = args[0], - i = args.length; - - if (!tpl) return; - - while (--i) { - tpl = tpl.replace('{' + i + '}', args[i]); - } - - return tpl; + }); + return false; + }); } - }); - } - function Field(key, obj, oldField) { - this.key = key; - this.validator = context; - $.extend(this, oldField, obj); - } - - FieldFactory.prototype = context; - Field.prototype = new FieldFactory(); - - return Field; - } - - /** - * Create Rules - * - * @class - * @param {Object} obj rules - * @param {Object} context context - */ - function Rules(obj, context) { - if (!isObject(obj)) return; - - var k, that = context ? context === true ? this : context : Rules.prototype; - - for (k in obj) { - if (_checkRuleName(k)) - that[k] = _getRule(obj[k]); - } - } - - /** - * Create Messages - * - * @class - * @param {Object} obj rules - * @param {Object} context context - */ - function Messages(obj, context) { - if (!isObject(obj)) return; - - var k, that = context ? context === true ? this : context : Messages.prototype; - - for (k in obj) { - that[k] = obj[k]; - } - } - - // Rule converted factory - function _getRule(fn) { - switch ($.type(fn)) { - case 'function': - return fn; - case 'array': - var f = function() { - return fn[0].test(this.value) || fn[1] || false; - }; - f.msg = fn[1]; - return f; - case 'regexp': - return function() { - return fn.test(this.value); - }; - } - } - - // Get instance by an element - function _getInstance(el) { - var wrap, k, options; - - if (!el || !el.tagName) return; - - switch (el.tagName) { - case 'INPUT': - case 'SELECT': - case 'TEXTAREA': - case 'BUTTON': - case 'FIELDSET': - wrap = el.form || $(el).closest('.' + CLS_WRAPPER); - break; - case 'FORM': - wrap = el; - break; - default: - wrap = $(el).closest('.' + CLS_WRAPPER); - } + }, + fieldlist: function (form) { + //绑定fieldlist + if ($(".fieldlist", form).size() > 0) { + require(['dragsort', 'template'], function (undefined, Template) { + //刷新隐藏textarea的值 + var refresh = function (name) { + var data = {}; + var textarea = $("textarea[name='" + name + "']", form); + var container = textarea.closest("dl"); + var template = container.data("template"); + console.log(name, container); + $.each($("input,select", container).serializeArray(), function (i, j) { + var reg = /\[(\w+)\]\[(\w+)\]$/g; + var match = reg.exec(j.name); + if (!match) + return true; + match[1] = "x" + parseInt(match[1]); + if (typeof data[match[1]] == 'undefined') { + data[match[1]] = {}; + } + data[match[1]][match[2]] = j.value; + }); + var result = template ? [] : {}; + $.each(data, function (i, j) { + if (j) { + if (!template) { + if (j.key != '') { + result[j.key] = j.value; + } + } else { + result.push(j); + } + } + }); + textarea.val(JSON.stringify(result)); + }; + //监听文本框改变事件 + $(document).on('change keyup', ".fieldlist input,.fieldlist textarea,.fieldlist select", function () { + refresh($(this).closest("dl").data("name")); + }); + //追加控制 + $(".fieldlist", form).on("click", ".btn-append,.append", function (e, row) { + var container = $(this).closest("dl"); + var index = container.data("index"); + var name = container.data("name"); + var template = container.data("template"); + var data = container.data(); + index = index ? parseInt(index) : 0; + container.data("index", index + 1); + var row = row ? row : {}; + var vars = {index: index, name: name, data: data, row: row}; + var html = template ? Template(template, vars) : Template.render(Form.config.fieldlisttpl, vars); + $(html).insertBefore($(this).closest("dd")); + $(this).trigger("fa.event.appendfieldlist", $(this).closest("dd").prev()); + }); + //移除控制 + $(".fieldlist", form).on("click", "dd .btn-remove", function () { + var container = $(this).closest("dl"); + $(this).closest("dd").remove(); + refresh(container.data("name")); + }); + //拖拽排序 + $("dl.fieldlist", form).dragsort({ + itemSelector: 'dd', + dragSelector: ".btn-dragsort", + dragEnd: function () { + refresh($(this).closest("dl").data("name")); + }, + placeHolderTemplate: "<dd></dd>" + }); + //渲染数据 + $(".fieldlist", form).each(function () { + var container = this; + var textarea = $("textarea[name='" + $(this).data("name") + "']", form); + if (textarea.val() == '') { + return true; + } + var template = $(this).data("template"); + var json = {}; + try { + json = JSON.parse(textarea.val()); + } catch (e) { + } + $.each(json, function (i, j) { + $(".btn-append,.append", container).trigger('click', template ? j : { + key: i, + value: j + }); + }); + }); + }); + } + }, + bindevent: function (form) { - for (k in preinitialized) { - if ($(wrap).is(k)) { - options = preinitialized[k]; - break; } - } - - return $(wrap).data(NS) || $(wrap)[NS](options).data(NS); - } - - // Get custom rules on the node - function _getDataRule(el, method) { - var fn = trim(attr(el, DATA_RULE + '-' + method)); - - if ( fn && (fn = new Function("return " + fn)()) ) { - return _getRule(fn); - } - } - - // Get custom messages on the node - function _getDataMsg(el, field, m) { - var msg = field.msg, - item = field._r; + }, + api: { + submit: function (form, success, error, submit) { + if (form.size() === 0) + return Toastr.error("表单未初始化完成,无法提交"); + if (typeof submit === 'function') { + if (false === submit.call(form)) { + return false; + } + } + var type = form.attr("method").toUpperCase(); + type = type && (type === 'GET' || type === 'POST') ? type : 'GET'; + url = form.attr("action"); + url = url ? url : location.href; + //修复当存在多选项元素时提交的BUG + var params = {}; + var multipleList = $("[name$='[]']", form); + if (multipleList.size() > 0) { + var postFields = form.serializeArray().map(function (obj) { + return $(obj).prop("name"); + }); + $.each(multipleList, function (i, j) { + if (postFields.indexOf($(this).prop("name")) < 0) { + params[$(this).prop("name")] = ''; + } + }); + } + //调用Ajax请求方法 + Fast.api.ajax({ + type: type, + url: url, + data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : ''), + dataType: 'json', + complete: function (xhr) { + var token = xhr.getResponseHeader('__token__'); + if (token) { + $("input[name='__token__']", form).val(token); + } + } + }, function (data, ret) { + $('.form-group', form).removeClass('has-feedback has-success has-error'); + if (data && typeof data === 'object') { + //刷新客户端token + if (typeof data.token !== 'undefined') { + $("input[name='__token__']", form).val(data.token); + } + //调用客户端事件 + if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') { + data.callback.call(form, data); + } + } + if (typeof success === 'function') { + if (false === success.call(form, data, ret)) { + return false; + } + } + }, function (data, ret) { + if (data && typeof data === 'object' && typeof data.token !== 'undefined') { + $("input[name='__token__']", form).val(data.token); + } + if (typeof error === 'function') { + if (false === error.call(form, data, ret)) { + return false; + } + } + }); + return false; + }, + bindevent: function (form, success, error, submit) { - if ( isObject(msg) ) msg = msg[item]; - if ( !isString(msg) ) { - msg = attr(el, DATA_MSG + '-' + item) || attr(el, DATA_MSG) || ( m ? isString(m) ? m : m[item] : ''); - } + form = typeof form === 'object' ? form : $(form); - return msg; - } + var events = Form.events; - // Get message position - function _getPos(str) { - var pos; + events.bindevent(form); - if (str) pos = rPos.exec(str); - return pos && pos[0]; - } + events.validator(form, success, error, submit); - // Check whether the element is checkbox or radio - function _checkable(el) { - return el.tagName === 'INPUT' && el.type === 'checkbox' || el.type === 'radio'; - } + events.selectpicker(form); - // Parse date string to timestamp - function _parseDate(str) { - return Date.parse(str.replace(/\.|\-/g, '/')); - } + events.daterangepicker(form); - // Rule name only allows alphanumeric characters and underscores - function _checkRuleName(name) { - return /^\w+$/.test(name); - } + events.selectpage(form); - // Translate field key to jQuery selector. - function _key2selector(key) { - var isID = key.charAt(0) === "#"; - key = key.replace(/([:.{(|)}/\[\]])/g, "\\$1"); - return isID ? key : '[name="'+ key +'"]:first'; - } + events.cxselect(form); + events.citypicker(form); - // Fixed a issue cause by refresh page in IE. - $(window).on('beforeunload', function(){ - this.focus(); - }); + events.datetimepicker(form); - $(document) - .on('click', ':submit', function(){ - var input = this, attrNode; - if (!input.form) return; - // Shim for "formnovalidate" - attrNode = input.getAttributeNode('formnovalidate'); - if (attrNode && attrNode.nodeValue !== null || attr(input, NOVALIDATE)!== null) { - novalidateonce = true; - } - }) - // Automatic initializing form validation - .on('focusin submit validate', 'form,.'+CLS_WRAPPER, function(e) { - if ( attr(this, NOVALIDATE) !== null ) return; - var $form = $(this), me; + events.plupload(form); - if ( !$form.data(NS) && (me = _getInstance(this)) ) { - if ( !$.isEmptyObject(me.fields) ) { - // Execute event handler - if (e.type === 'focusin') { - me._focusin(e); - } else { - me._submit(e); - } - } else { - attr(this, NOVALIDATE, NOVALIDATE); - $form.off(CLS_NS).removeData(NS); - } - } - }); + events.faselect(form); - new Messages({ - fallback: "This field is not valid.", - loading: 'Validating...' - }); + events.fieldlist(form); + }, + custom: {} + }, + }; + return Form; +}); +/** + * FastAdmin通用搜索 + * + * @author: pppscn <35696959@qq.com> + * @update 2017-05-07 <https://gitee.com/pp/fastadmin> + * + * @author: Karson <karsonzhang@163.com> + * @update 2018-04-05 <https://gitee.com/karson/fastadmin> + */ +!function ($) { + 'use strict'; - // Built-in rules (global) - new Rules({ + var ColumnsForSearch = []; - /** - * required - * - * @example: - required - required(anotherRule) - required(not, -1) - required(from, .contact) - */ - required: function(element, params) { - var me = this, - val = trim(me.value), - isValid = true; + var sprintf = $.fn.bootstrapTable.utils.sprintf; - if (params) { - if ( params.length === 1 ) { - if ( !_checkRuleName(params[0]) ) { - if (!val && !$(params[0], me.$el).length ) { - return null; - } - } - else if ( me.rules[params[0]] ) { - if ( !val && !me.test(element, params[0]) ) { - return null; - } - } - } - else if ( params[0] === 'not' ) { - $.each(params.slice(1), function() { - return (isValid = val !== trim(this)); - }); - } - else if ( params[0] === 'from' ) { - var $elements = me.$el.find(params[1]), - VALIDATED = '_validated_', - ret; + var initCommonSearch = function (pColumns, that) { + var vFormCommon = createFormCommon(pColumns, that); - isValid = $elements.filter(function(){ - var field = me.getField(this); - return field && !!trim(field.getValue()); - }).length >= (params[2] || 1); + var vModal = sprintf("<div class=\"commonsearch-table %s\">", that.options.searchFormVisible ? "" : "hidden"); + vModal += vFormCommon; + vModal += "</div>"; + that.$container.prepend($(vModal)); + that.$commonsearch = $(".commonsearch-table", that.$container); + var form = $("form.form-commonsearch", that.$commonsearch); - if (isValid) { - if (!val) ret = null; - } else { - ret = _getDataMsg($elements[0], me) || false; - } + require(['form'], function (Form) { + Form.api.bindevent(form); + form.validator("destroy"); + }); - if ( !$(element).data(VALIDATED) ) { - $elements.data(VALIDATED, 1).each(function(){ - if (element !== this) { - me._validate(this); - } - }).removeData(VALIDATED); - } + // 表单提交 + form.on("submit", function (event) { + event.preventDefault(); + that.onCommonSearch(); + return false; + }); - return ret; - } - } + // 重置搜索 + form.on("click", "button[type=reset]", function (event) { + form[0].reset(); + that.onCommonSearch(); + }); - return isValid && !!val; - }, + }; - /** - * integer - * - * @example: - integer - integer[+] - integer[+0] - integer[-] - integer[-0] - */ - integer: function(element, params) { - var re, z = '0|', - p = '[1-9]\\d*', - key = params ? params[0] : '*'; + var createFormCommon = function (pColumns, that) { + // 如果有使用模板则直接返回模板的内容 + if (that.options.searchFormTemplate) { + return Template(that.options.searchFormTemplate, {columns: pColumns, table: that}); + } + var htmlForm = []; + htmlForm.push(sprintf('<form class="form-horizontal form-commonsearch" novalidate method="post" action="%s" >', that.options.actionForm)); + htmlForm.push('<fieldset>'); + if (that.options.titleForm.length > 0) + htmlForm.push(sprintf("<legend>%s</legend>", that.options.titleForm)); + htmlForm.push('<div class="row">'); + for (var i in pColumns) { + var vObjCol = pColumns[i]; + if (!vObjCol.checkbox && vObjCol.field !== 'operate' && vObjCol.searchable && vObjCol.operate !== false) { + var query = Backend.api.query(vObjCol.field); + var operate = Backend.api.query(vObjCol.field + "-operate"); - switch (key) { - case '+': - re = p; - break; - case '-': - re = '-' + p; - break; - case '+0': - re = z + p; - break; - case '-0': - re = z + '-' + p; - break; - default: - re = z + '-?' + p; - } - re = '^(?:' + re + ')$'; + vObjCol.defaultValue = that.options.renderDefault && query ? query : (typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue); + vObjCol.operate = that.options.renderDefault && operate ? operate : (typeof vObjCol.operate === 'undefined' ? '=' : vObjCol.operate); + ColumnsForSearch.push(vObjCol); - return new RegExp(re).test(this.value) || (this.messages.integer && this.messages.integer[key]); - }, + htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">'); + htmlForm.push(sprintf('<label for="%s" class="control-label col-xs-4">%s</label>', vObjCol.field, vObjCol.title)); + htmlForm.push('<div class="col-xs-8">'); - /** - * match another field - * - * @example: - match[password] Match the password field (two values must be the same) - match[eq, password] Ditto - match[neq, count] The value must be not equal to the value of the count field - match[lt, count] The value must be less than the value of the count field - match[lte, count] The value must be less than or equal to the value of the count field - match[gt, count] The value must be greater than the value of the count field - match[gte, count] The value must be greater than or equal to the value of the count field - match[gte, startDate, date] - match[gte, startTime, time] - **/ - match: function(element, params) { - if (!params) return; + vObjCol.operate = vObjCol.operate ? vObjCol.operate.toUpperCase() : '='; + htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="%s-operate" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate)); - var me = this, - isValid = true, - a, b, - key, msg, type = 'eq', parser, - selector2, elem2, field2; + var addClass = typeof vObjCol.addClass === 'undefined' ? (typeof vObjCol.addclass === 'undefined' ? 'form-control' : 'form-control ' + vObjCol.addclass) : 'form-control ' + vObjCol.addClass; + var extend = typeof vObjCol.extend === 'undefined' ? '' : vObjCol.extend; + var style = typeof vObjCol.style === 'undefined' ? '' : sprintf('style="%s"', vObjCol.style); + extend = typeof vObjCol.data !== 'undefined' && extend == '' ? vObjCol.data : extend; + if (vObjCol.searchList) { + if (typeof vObjCol.searchList === 'object' && typeof vObjCol.searchList.then === 'function') { + htmlForm.push(sprintf('<select class="%s" name="%s" %s %s>%s</select>', addClass, vObjCol.field, style, extend, sprintf('<option value="">%s</option>', that.options.formatCommonChoose()))); + (function (vObjCol, that) { + $.when(vObjCol.searchList).done(function (ret) { + var isArray = false; + if (ret.data && ret.data.searchlist && $.isArray(ret.data.searchlist)) { + var resultlist = {}; + $.each(ret.data.searchlist, function (key, value) { + resultlist[value.id] = value.name; + }); + } else if (ret.constructor === Array || ret.constructor === Object) { + var resultlist = ret; + isArray = ret.constructor === Array ? true : isArray; + } + var optionList = []; + $.each(resultlist, function (key, value) { + var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : ''; + optionList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect)); + }); + $("form.form-commonsearch select[name='" + vObjCol.field + "']", that.$container).append(optionList.join('')); + }); + })(vObjCol, that); + } else if (typeof vObjCol.searchList == 'function') { + htmlForm.push(vObjCol.searchList.call(this, vObjCol)); + } else { + var isArray = vObjCol.searchList.constructor === Array; + var searchList = []; + searchList.push(sprintf('<option value="">%s</option>', that.options.formatCommonChoose())); + $.each(vObjCol.searchList, function (key, value) { + var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : ''; + searchList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect)); + }); + htmlForm.push(sprintf('<select class="%s" name="%s" %s %s>%s</select>', addClass, vObjCol.field, style, extend, searchList.join(''))); + } + } else { + var placeholder = typeof vObjCol.placeholder === 'undefined' ? vObjCol.title : vObjCol.placeholder; + var type = typeof vObjCol.type === 'undefined' ? 'text' : vObjCol.type; + var defaultValue = typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue; + if (/BETWEEN$/.test(vObjCol.operate)) { + var defaultValueArr = defaultValue.toString().match(/\|/) ? defaultValue.split('|') : ['', '']; + var placeholderArr = placeholder.toString().match(/\|/) ? placeholder.split('|') : [placeholder, placeholder]; + htmlForm.push('<div class="row row-between">'); + htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addClass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, extend)); + htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addClass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, extend)); + htmlForm.push('</div>'); + } else { + htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addClass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, extend)); + } + } - if (params.length === 1) { - key = params[0]; - } else { - type = params[0]; - key = params[1]; + htmlForm.push('</div>'); + htmlForm.push('</div>'); } + } + htmlForm.push('<div class="form-group col-xs-12 col-sm-6 col-md-4 col-lg-3">'); + htmlForm.push(createFormBtn(that).join('')); + htmlForm.push('</div>'); + htmlForm.push('</div>'); + htmlForm.push('</fieldset>'); + htmlForm.push('</form>'); - selector2 = _key2selector(key); - elem2 = me.$el.find(selector2)[0]; - // If the compared field is not exist - if (!elem2) return; - field2 = me.getField(elem2); - a = me.value; - b = field2.getValue(); + return htmlForm.join(''); + }; - if (!me._match) { - me.$el.on('valid'+CLS_NS_FIELD+CLS_NS, selector2, function(){ - $(element).trigger('validate'); - }); - me._match = field2._match = 1; - } + var createFormBtn = function (that) { + var htmlBtn = []; + var searchSubmit = that.options.formatCommonSubmitButton(); + var searchReset = that.options.formatCommonResetButton(); + htmlBtn.push('<div class="col-sm-8 col-xs-offset-4">'); + htmlBtn.push(sprintf('<button type="submit" class="btn btn-success" formnovalidate>%s</button> ', searchSubmit)); + htmlBtn.push(sprintf('<button type="reset" class="btn btn-default" >%s</button> ', searchReset)); + htmlBtn.push('</div>'); + return htmlBtn; + }; - // If both fields are blank - if (!me.required && a === "" && b === "") { - return null; - } + var isSearchAvailble = function (that) { - parser = params[2]; - if (parser) { - if (/^date(time)?$/i.test(parser)) { - a = _parseDate(a); - b = _parseDate(b); - } else if (parser === 'time') { - a = +a.replace(/:/g, ''); - b = +b.replace(/:/g, ''); - } - } + //只支持服务端搜索 + if (!that.options.commonSearch || that.options.sidePagination != 'server' || !that.options.url) { + return false; + } - // If the compared field is incorrect, we only ensure that this field is correct. - if (type !== "eq" && !isNaN(+a) && isNaN(+b)) { - return true; - } + return true; + }; - switch (type) { - case 'lt': - isValid = +a < +b; break; - case 'lte': - isValid = +a <= +b; break; - case 'gte': - isValid = +a >= +b; break; - case 'gt': - isValid = +a > +b; break; - case 'neq': - isValid = a !== b; break; - default: - isValid = a === b; + var getSearchQuery = function (that, removeempty) { + var op = {}; + var filter = {}; + var value = ''; + $("form.form-commonsearch .operate", that.$commonsearch).each(function (i) { + var name = $(this).data("name"); + var sym = $(this).is("select") ? $("option:selected", this).val() : $(this).val().toUpperCase(); + var obj = $("[name='" + name + "']", that.$commonsearch); + if (obj.size() == 0) + return true; + var vObjCol = ColumnsForSearch[i]; + if (obj.size() > 1) { + if (/BETWEEN$/.test(sym)) { + var value_begin = $.trim($("[name='" + name + "']:first", that.$commonsearch).val()), + value_end = $.trim($("[name='" + name + "']:last", that.$commonsearch).val()); + if (value_begin.length || value_end.length) { + if (typeof vObjCol.process === 'function') { + value_begin = vObjCol.process(value_begin, 'begin'); + value_end = vObjCol.process(value_end, 'end'); + } + value = value_begin + ',' + value_end; + } else { + value = ''; + } + //如果是时间筛选,将operate置为RANGE + if ($("[name='" + name + "']:first", that.$commonsearch).hasClass("datetimepicker")) { + sym = 'RANGE'; + } + } else { + value = $("[name='" + name + "']:checked", that.$commonsearch).val(); + value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : obj.val(); + } + } else { + value = (vObjCol && typeof vObjCol.process === 'function') ? vObjCol.process(obj.val()) : obj.val(); + } + if (removeempty && (value == '' || value == null || ($.isArray(value) && value.length == 0)) && !sym.match(/null/i)) { + return true; } - return isValid || ( - isObject(me.messages.match) - && me.messages.match[type].replace( '{1}', me._getDisplay( element, field2.display || key ) ) - ); - }, + op[name] = sym; + filter[name] = value; + }); + return {op: op, filter: filter}; + }; - /** - * range numbers - * - * @example: - range[0~99] Number 0-99 - range[0~] Number greater than or equal to 0 - range[~100] Number less than or equal to 100 - **/ - range: function(element, params) { - return this.getRangeMsg(this.value, params); - }, + var getQueryParams = function (params, searchQuery, removeempty) { + params.filter = typeof params.filter === 'Object' ? params.filter : (params.filter ? JSON.parse(params.filter) : {}); + params.op = typeof params.op === 'Object' ? params.op : (params.op ? JSON.parse(params.op) : {}); - /** - * how many checkbox or radio inputs that checked - * - * @example: - checked; no empty, same to required - checked[1~3] 1-3 items - checked[1~] greater than 1 item - checked[~3] less than 3 items - checked[3] 3 items - **/ - checked: function(element, params) { - if ( !_checkable(element) ) return; + params.filter = $.extend({}, params.filter, searchQuery.filter); + params.op = $.extend({}, params.op, searchQuery.op); + //移除empty的值 + if (removeempty) { + $.each(params.filter, function (i, j) { + if ((j == '' || j == null || ($.isArray(j) && j.length == 0)) && !params.op[i].match(/null/i)) { + delete params.filter[i]; + delete params.op[i]; + } + }); + } + params.filter = JSON.stringify(params.filter); + params.op = JSON.stringify(params.op); + return params; + }; - var me = this, - elem, count; + $.extend($.fn.bootstrapTable.defaults, { + commonSearch: false, + titleForm: "Common search", + actionForm: "", + searchFormTemplate: "", + searchFormVisible: true, + searchClass: 'searchit', + showSearch: true, + renderDefault: true, + onCommonSearch: function (field, text) { + return false; + }, + onPostCommonSearch: function (table) { + return false; + } + }); - if (element.name) { - count = me.$el.find('input[name="' + element.name + '"]').filter(function() { - var el = this; - if (!elem && _checkable(el)) elem = el; - return !el.disabled && el.checked; - }).length; - } else { - elem = element; - count = elem.checked; - } + $.extend($.fn.bootstrapTable.defaults.icons, { + commonSearchIcon: 'glyphicon-search' + }); - if (params) { - return me.getRangeMsg(count, params); - } else { - return !!count || _getDataMsg(elem, me, '') || me.messages.required || false; - } + $.extend($.fn.bootstrapTable.Constructor.EVENTS, { + 'common-search.bs.table': 'onCommonSearch', + 'post-common-search.bs.table': 'onPostCommonSearch' + }); + $.extend($.fn.bootstrapTable.locales[$.fn.bootstrapTable.defaults.locale], { + formatCommonSearch: function () { + return "Common search"; }, + formatCommonSubmitButton: function () { + return "Submit"; + }, + formatCommonResetButton: function () { + return "Reset"; + }, + formatCommonCloseButton: function () { + return "Close"; + }, + formatCommonChoose: function () { + return "Choose"; + } + }); - /** - * length of a characters (You can pass the second parameter "true", will calculate the length in bytes) - * - * @example: - length[6~16] 6-16 characters - length[6~] Greater than 6 characters - length[~16] Less than 16 characters - length[~16, true] Less than 16 characters, non-ASCII characters calculating two-character - **/ - length: function(element, params) { - var value = this.value, - len = (params[1] === 'true' ? value.replace(rDoubleBytes, 'xx') : value).length; + $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales); - return this.getRangeMsg(len, params, (params[1] ? '_2' : '')); - }, + var BootstrapTable = $.fn.bootstrapTable.Constructor, + _initHeader = BootstrapTable.prototype.initHeader, + _initToolbar = BootstrapTable.prototype.initToolbar, + _load = BootstrapTable.prototype.load, + _initSearch = BootstrapTable.prototype.initSearch; - /** - * remote validation - * - * @description - * remote([get:]url [, name1, [name2 ...]]); - * Adaptation three kinds of results (Front for the successful, followed by a failure): - 1. text: - '' 'Error Message' - 2. json: - {"ok": ""} {"error": "Error Message"} - 3. json wrapper: - {"status": 1, "data": {"ok": ""}} {"status": 1, "data": {"error": "Error Message"}} - * @example - The simplest: remote(path/to/server); - With parameters: remote(path/to/server, name1, name2, ...); - By GET: remote(get:path/to/server, name1, name2, ...); - Name proxy: remote(path/to/server, name1, proxyname2:name2, proxyname3:#id3, ...) - Query String remote(path/to/server, foo=1&bar=2, name1, name2, ...) - */ - remote: function(element, params) { - if (!params) return; + BootstrapTable.prototype.initHeader = function () { + _initHeader.apply(this, Array.prototype.slice.apply(arguments)); + this.$header.find('th[data-field]').each(function (i) { + var column = $(this).data(); + if (typeof column['width'] !== 'undefined') { + $(this).css("min-width", column['width']); + } + }); + }; + BootstrapTable.prototype.initToolbar = function () { + _initToolbar.apply(this, Array.prototype.slice.apply(arguments)); - var me = this, - arr = rAjaxType.exec(params[0]), - rule = me._rules[me._i], - data = {}, - queryString = '', - url = arr[3], - type = arr[2] || 'POST', // GET / POST - rType = (arr[1]||'').toLowerCase(), // CORS / JSONP - dataType; + if (!isSearchAvailble(this)) { + return; + } - rule.must = true; - data[element.name] = me.value; + var that = this, + html = []; + if(that.options.showSearch){ + html.push(sprintf('<div class="columns-%s pull-%s" style="margin-top:10px;margin-bottom:10px;">', this.options.buttonsAlign, this.options.buttonsAlign)); + html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="commonSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatCommonSearch())); + html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.commonSearchIcon)) + html.push('</button></div>'); + } + if (that.$toolbar.find(".pull-right").size() > 0) { + $(html.join('')).insertBefore(that.$toolbar.find(".pull-right:first")); + } else { + that.$toolbar.append(html.join('')); + } - // There are extra fields - if (params[1]) { - $.map(params.slice(1), function(name) { - var arr, key; - if (~name.indexOf('=')) { - queryString += '&' + name; - } else { - arr = name.split(':'); - name = trim(arr[0]); - key = trim(arr[1]) || name; - data[ name ] = me.$el.find( _key2selector(key) ).val(); - } - }); - } + initCommonSearch(that.columns, that); - data = $.param(data) + queryString; - if (!me.must && rule.data && rule.data === data) { - return rule.result; - } + that.$toolbar.find('button[name="commonSearch"]') + .off('click').on('click', function () { + that.$commonsearch.toggleClass("hidden"); + return; + }); - // Cross-domain request, force jsonp dataType - if (rType !== 'cors' && /^https?:/.test(url) && !~url.indexOf(location.host)) { - dataType = 'jsonp'; + that.$container.on("click", "." + that.options.searchClass, function () { + var obj = $("form [name='" + $(this).data("field") + "']", that.$commonsearch); + if (obj.size() > 0) { + obj.val($(this).data("value")); + $("form", that.$commonsearch).trigger("submit"); } + }); + var queryParams = that.options.queryParams; + //匹配默认搜索值 + this.options.queryParams = function (params) { + return queryParams(getQueryParams(params, getSearchQuery(that, true))); + }; + this.trigger('post-common-search', that); - // Asynchronous validation need return jqXHR objects - return $.ajax({ - url: url, - type: type, - data: data, - dataType: dataType - }); - }, + }; - /** - * filter characters, direct filtration without prompting error (support custom regular expressions) - * - * @example - * filter filtering unsafe characters - * filter(regexp) filtering the "regexp" matched characters - */ - filter: function(element, params) { - var value = this.value, - temp = value.replace( params ? (new RegExp("[" + params[0] + "]", "gm")) : rUnsafe, '' ); - if (temp !== value) this.setValue(temp); - } - }); + BootstrapTable.prototype.onCommonSearch = function () { + var searchQuery = getSearchQuery(this); + this.trigger('common-search', this, searchQuery); + this.options.pageNumber = 1; + this.refresh({}); + }; + BootstrapTable.prototype.load = function (data) { + _load.apply(this, Array.prototype.slice.apply(arguments)); - /** - * Config global options - * - * @static config - * @param {Object} options - */ - Validator.config = function(key, value) { - if (isObject(key)) { - $.each(key, _config); + if (!isSearchAvailble(this)) { + return; } - else if (isString(key)) { - _config(key, value); + }; + + BootstrapTable.prototype.initSearch = function () { + _initSearch.apply(this, Array.prototype.slice.apply(arguments)); + + if (!isSearchAvailble(this)) { + return; } - function _config(k, o) { - if (k === 'rules') { - new Rules(o); - } - else if (k === 'messages') { - new Messages(o); - } - else if (k in fieldDefaults) { - fieldDefaults[k] = o; - } - else { - defaults[k] = o; + var that = this; + var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial; + this.data = fp ? $.grep(this.data, function (item, i) { + for (var key in fp) { + var fval = fp[key].toLowerCase(); + var value = item[key]; + value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header, + that.header.formatters[$.inArray(key, that.header.fields)], + [value, item, i], value); + + if (!($.inArray(key, that.header.fields) !== -1 && + (typeof value === 'string' || typeof value === 'number') && + (value + '').toLowerCase().indexOf(fval) !== -1)) { + return false; + } } - } + return true; + }) : this.data; }; +}(jQuery); - /** - * Config themes - * - * @static setTheme - * @param {String|Object} name - * @param {Object} obj - * @example - .setTheme( themeName, themeOptions ) - .setTheme( multiThemes ) - */ - Validator.setTheme = function(name, obj) { - if ( isObject(name) ) { - $.extend(true, themes, name); - } - else if ( isString(name) && isObject(obj) ) { - themes[name] = $.extend(themes[name], obj); - } +define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) { + return function () { + var ret, fn; + return ret || global.$.fn.bootstrapTable.defaults; }; +}(this))); - /** - * Resource loader - * - * @static load - * @param {String} str - * @example - .load('local=zh-CN') // load: local/zh-CN.js and jquery.validator.css - .load('local=zh-CN&css=') // load: local/zh-CN.js - .load('local&css') // load: local/en.js (set <html lang="en">) and jquery.validator.css - .load('local') // dito - */ - Validator.load = function(str) { - if (!str) return; - var doc = document, - params = {}, - node = doc.scripts[0], - dir, el, ONLOAD; +/** + * 将BootstrapTable的行使用自定义的模板来渲染 + * + * @author: karson + * @version: v0.0.1 + * + * @update 2017-06-24 <http://github.com/karsonzhang/fastadmin> + */ - str.replace(/([^?=&]+)=([^&#]*)/g, function(m, key, value){ - params[key] = value; - }); +!function ($) { + 'use strict'; - dir = params.dir || Validator.dir; + $.extend($.fn.bootstrapTable.defaults, { + //是否启用模板渲染 + templateView: false, + //数据格式化的模板ID或格式函数 + templateFormatter: "itemtpl", + //添加的父类的class + templateParentClass: "row row-flex", + //向table添加的class + templateTableClass: "table-template", - if (!Validator.css && params.css !== '') { - el = doc.createElement('link'); - el.rel = 'stylesheet'; - el.href = Validator.css = dir + 'jquery.validator.css'; - node.parentNode.insertBefore(el, node); - } - if (!Validator.local && ~str.indexOf('local') && params.local !== '') { - Validator.local = (params.local || doc.documentElement.lang || 'en').replace('_','-'); - Validator.pending = 1; - el = doc.createElement('script'); - el.src = dir + 'local/' + Validator.local + '.js'; - ONLOAD = 'onload' in el ? 'onload' : 'onreadystatechange'; - el[ONLOAD] = function() { - if (!el.readyState || /loaded|complete/.test(el.readyState)) { - el = el[ONLOAD] = null; - delete Validator.pending; - $(window).triggerHandler('validatorready'); - } - }; - node.parentNode.insertBefore(el, node); - } - }; + }); - // Auto loading resources - (function(){ - var scripts = document.scripts, - i = scripts.length, node, arr, - re = /(.*validator(?:\.min)?.js)(\?.*(?:local|css|dir)(?:=[\w\-]*)?)?/; + var BootstrapTable = $.fn.bootstrapTable.Constructor, + _initContainer = BootstrapTable.prototype.initContainer, + _initBody = BootstrapTable.prototype.initBody, + _initRow = BootstrapTable.prototype.initRow; - while (i-- && !arr) { - node = scripts[i]; - arr = (node.hasAttribute ? node.src : node.getAttribute('src',4)||'').match(re); + BootstrapTable.prototype.initContainer = function () { + _initContainer.apply(this, Array.prototype.slice.apply(arguments)); + var that = this; + if (!that.options.templateView) { + return; } + that.options.cardView = true; - if (!arr) return; - Validator.dir = arr[1].split('/').slice(0, -1).join('/')+'/'; - Validator.load(arr[2]); - })(); - - return $[NS] = Validator; -})); + }; -/********************************* - * Themes, rules, and i18n support - * Locale: Chinese; 中文 - *********************************/ -(function(factory) { - typeof module === "object" && module.exports ? module.exports = factory( require( "jquery" ) ) : - typeof define === 'function' && define.amd ? define('validator-lang',['jquery'], factory) : - factory(jQuery); -}(function($) { + BootstrapTable.prototype.initBody = function () { + var that = this; + $.extend(that.options, { + showHeader: !that.options.templateView ? $.fn.bootstrapTable.defaults.showHeader : false, + showFooter: !that.options.templateView ? $.fn.bootstrapTable.defaults.showFooter : false, + }); + $(that.$el).toggleClass(that.options.templateTableClass, that.options.templateView); - /* Global configuration - */ - $.validator.config({ - //stopOnError: true, - //focusCleanup: true, - //theme: 'yellow_right', - //timely: 2, + _initBody.apply(this, Array.prototype.slice.apply(arguments)); - // Custom rules - rules: { - digits: [/^\d+$/, "请填写数字"] - ,letters: [/^[a-z]+$/i, "请填写字母"] - ,date: [/^\d{4}-\d{2}-\d{2}$/, "请填写有效的日期,格式:yyyy-mm-dd"] - ,time: [/^([01]\d|2[0-3])(:[0-5]\d){1,2}$/, "请填写有效的时间,00:00到23:59之间"] - ,email: [/^[\w\+\-]+(\.[\w\+\-]+)*@[a-z\d\-]+(\.[a-z\d\-]+)*\.([a-z]{2,4})$/i, "请填写有效的邮箱"] - ,url: [/^(https?|s?ftp):\/\/\S+$/i, "请填写有效的网址"] - ,qq: [/^[1-9]\d{4,}$/, "请填写有效的QQ号"] - ,IDcard: [/^\d{6}(19|2\d)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)?$/, "请填写正确的身份证号码"] - ,tel: [/^(?:(?:0\d{2,3}[\- ]?[1-9]\d{6,7})|(?:[48]00[\- ]?[1-9]\d{6}))$/, "请填写有效的电话号码"] - ,mobile: [/^1[3-9]\d{9}$/, "请填写有效的手机号"] - ,zipcode: [/^\d{6}$/, "请检查邮政编码格式"] - ,chinese: [/^[\u0391-\uFFE5]+$/, "请填写中文字符"] - ,username: [/^\w{3,12}$/, "请填写3-12位数字、字母、下划线"] - ,password: [/^[\S]{6,16}$/, "请填写6-16位字符,不能包含空格"] - ,accept: function (element, params){ - if (!params) return true; - var ext = params[0], - value = $(element).val(); - return (ext === '*') || - (new RegExp(".(?:" + ext + ")$", "i")).test(value) || - this.renderMsg("只接受{1}后缀的文件", ext.replace(/\|/g, ',')); - } - - }, + if (!that.options.templateView) { + return; + } else { + //由于Bootstrap是基于Table的,添加一个父类容器 + $("> *:not(.no-records-found)", that.$body).wrapAll($("<div />").addClass(that.options.templateParentClass)); + } + }; - // Default error messages - messages: { - 0: "此处", - fallback: "{0}格式不正确", - loading: "正在验证...", - error: "网络异常", - timeout: "请求超时", - required: "{0}不能为空", - remote: "{0}已被使用", - integer: { - '*': "请填写整数", - '+': "请填写正整数", - '+0': "请填写正整数或0", - '-': "请填写负整数", - '-0': "请填写负整数或0" - }, - match: { - eq: "{0}与{1}不一致", - neq: "{0}与{1}不能相同", - lt: "{0}必须小于{1}", - gt: "{0}必须大于{1}", - lte: "{0}不能大于{1}", - gte: "{0}不能小于{1}" - }, - range: { - rg: "请填写{1}到{2}的数", - gte: "请填写不小于{1}的数", - lte: "请填写最大{1}的数", - gtlt: "请填写{1}到{2}之间的数", - gt: "请填写大于{1}的数", - lt: "请填写小于{1}的数" - }, - checked: { - eq: "请选择{1}项", - rg: "请选择{1}到{2}项", - gte: "请至少选择{1}项", - lte: "请最多选择{1}项" - }, - length: { - eq: "请填写{1}个字符", - rg: "请填写{1}到{2}个字符", - gte: "请至少填写{1}个字符", - lte: "请最多填写{1}个字符", - eq_2: "", - rg_2: "", - gte_2: "", - lte_2: "" - } + BootstrapTable.prototype.initRow = function (item, i, data, parentDom) { + var that = this; + //如果未启用则使用原生的initRow方法 + if (!that.options.templateView) { + return _initRow.apply(that, Array.prototype.slice.apply(arguments)); } - }); - - /* Themes - */ - var TPL_ARROW = '<span class="n-arrow"><b>◆</b><i>◆</i></span>'; - $.validator.setTheme({ - 'simple_right': { - formClass: 'n-simple', - msgClass: 'n-right' - }, - 'simple_bottom': { - formClass: 'n-simple', - msgClass: 'n-bottom' - }, - 'yellow_top': { - formClass: 'n-yellow', - msgClass: 'n-top', - msgArrow: TPL_ARROW - }, - 'yellow_right': { - formClass: 'n-yellow', - msgClass: 'n-right', - msgArrow: TPL_ARROW - }, - 'yellow_right_effect': { - formClass: 'n-yellow', - msgClass: 'n-right', - msgArrow: TPL_ARROW, - msgShow: function($msgbox, type){ - var $el = $msgbox.children(); - if ($el.is(':animated')) return; - if (type === 'error') { - $el.css({left: '20px', opacity: 0}) - .delay(100).show().stop() - .animate({left: '-4px', opacity: 1}, 150) - .animate({left: '3px'}, 80) - .animate({left: 0}, 80); - } else { - $el.css({left: 0, opacity: 1}).fadeIn(200); - } - }, - msgHide: function($msgbox, type){ - var $el = $msgbox.children(); - $el.stop().delay(100).show() - .animate({left: '20px', opacity: 0}, 300, function(){ - $msgbox.hide(); - }); - } + var $content = ''; + if (typeof that.options.templateFormatter === 'function') { + $content = that.options.templateFormatter.call(that, item, i, data); + } else { + var Template = require('template'); + $content = Template(that.options.templateFormatter, {item: item, i: i, data: data}); } - }); -})); + return $content; + }; -define('validator',['validator-core', 'validator-lang'], function (Validator, undefined) { - return Validator; -}); -define('form',['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, Upload, Validator) { - var Form = { - config: { - fieldlisttpl: '<dd class="form-inline"><input type="text" name="<%=name%>[<%=index%>][key]" class="form-control" value="<%=row.key%>" size="10" /> <input type="text" name="<%=name%>[<%=index%>][value]" class="form-control" value="<%=row.value%>" size="40" /> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span></dd>' - }, - events: { - validator: function (form, success, error, submit) { - if (!form.is("form")) - return; - //绑定表单事件 - form.validator($.extend({ - validClass: 'has-success', - invalidClass: 'has-error', - bindClassTo: '.form-group', - formClass: 'n-default n-bootstrap', - msgClass: 'n-right', - stopOnError: true, - display: function (elem) { - return $(elem).closest('.form-group').find(".control-label").text().replace(/\:/, ''); - }, - dataFilter: function (data) { - if (data.code === 1) { - return ""; - } else { - return data.msg; - } - }, - target: function (input) { - var $formitem = $(input).closest('.form-group'), - $msgbox = $formitem.find('span.msg-box'); - if (!$msgbox.length) { - return []; - } - return $msgbox; - }, - valid: function (ret) { - var that = this, submitBtn = $(".layer-footer [type=submit]", form); - that.holdSubmit(); - $(".layer-footer [type=submit]", form).addClass("disabled"); - //验证通过提交表单 - Form.api.submit($(ret), function (data, ret) { - that.holdSubmit(false); - submitBtn.removeClass("disabled"); - if (false === $(this).triggerHandler("success.form", [data, ret])) { - return false; - } - if (typeof success === 'function') { - if (false === success.call($(this), data, ret)) { - return false; - } - } - //提示及关闭当前窗口 - var msg = ret.hasOwnProperty("msg") && ret.msg !== "" ? ret.msg : __('Operation completed'); - parent.Toastr.success(msg); - parent.$(".btn-refresh").trigger("click"); - var index = parent.Layer.getFrameIndex(window.name); - parent.Layer.close(index); - return false; - }, function (data, ret) { - that.holdSubmit(false); - if (false === $(this).triggerHandler("error.form", [data, ret])) { - return false; - } - submitBtn.removeClass("disabled"); - if (typeof error === 'function') { - if (false === error.call($(this), data, ret)) { - return false; - } - } - }, submit); - return false; - } - }, form.data("validator-options") || {})); +}(jQuery); - //移除提交按钮的disabled类 - $(".layer-footer [type=submit],.fixed-footer [type=submit],.normal-footer [type=submit]", form).removeClass("disabled"); - }, - selectpicker: function (form) { - //绑定select元素事件 - if ($(".selectpicker", form).size() > 0) { - require(['bootstrap-select', 'bootstrap-select-lang'], function () { - $('.selectpicker', form).selectpicker(); - }); - } - }, - selectpage: function (form) { - //绑定selectpage元素事件 - if ($(".selectpage", form).size() > 0) { - require(['selectpage'], function () { - $('.selectpage', form).selectPage({ - eAjaxSuccess: function (data) { - data.list = typeof data.rows !== 'undefined' ? data.rows : (typeof data.list !== 'undefined' ? data.list : []); - data.totalRow = typeof data.total !== 'undefined' ? data.total : (typeof data.totalRow !== 'undefined' ? data.totalRow : data.list.length); - return data; - } - }); - }); - //给隐藏的元素添加上validate验证触发事件 - $(document).on("change", ".sp_hidden", function () { - $(this).trigger("validate"); - }); - $(document).on("change", ".sp_input", function () { - $(this).closest(".sp_container").find(".sp_hidden").trigger("change"); - }); - $(form).on("reset", function () { - setTimeout(function () { - $('.selectpage', form).selectPageClear(); - }, 1); - }); - } - }, - cxselect: function (form) { - //绑定cxselect元素事件 - if ($("[data-toggle='cxselect']", form).size() > 0) { - require(['cxselect'], function () { - $.cxSelect.defaults.jsonName = 'name'; - $.cxSelect.defaults.jsonValue = 'value'; - $.cxSelect.defaults.jsonSpace = 'data'; - $("[data-toggle='cxselect']", form).cxSelect(); - }); - } - }, - citypicker: function (form) { - //绑定城市远程插件 - if ($("[data-toggle='city-picker']", form).size() > 0) { - require(['citypicker'], function () { - }); - } - }, - datetimepicker: function (form) { - //绑定日期时间元素事件 - if ($(".datetimepicker", form).size() > 0) { - require(['bootstrap-datetimepicker'], function () { - var options = { - format: 'YYYY-MM-DD HH:mm:ss', - icons: { - time: 'fa fa-clock-o', - date: 'fa fa-calendar', - up: 'fa fa-chevron-up', - down: 'fa fa-chevron-down', - previous: 'fa fa-chevron-left', - next: 'fa fa-chevron-right', - today: 'fa fa-history', - clear: 'fa fa-trash', - close: 'fa fa-remove' - }, - showTodayButton: true, - showClose: true - }; - $('.datetimepicker', form).parent().css('position', 'relative'); - $('.datetimepicker', form).datetimepicker(options); - }); +define("bootstrap-table-template", ["bootstrap-table","template"], (function (global) { + return function () { + var ret, fn; + return ret || global.$.fn.bootstrapTable.defaults; + }; +}(this))); + +define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table', 'bootstrap-table-lang', 'bootstrap-table-export', 'bootstrap-table-commonsearch', 'bootstrap-table-template'], function ($, undefined, Moment) { + var Table = { + list: {}, + // Bootstrap-table 基础配置 + defaults: { + url: '', + sidePagination: 'server', + method: 'get', //请求方法 + toolbar: ".toolbar", //工具栏 + search: true, //是否启用快速搜索 + cache: false, + commonSearch: true, //是否启用通用搜索 + searchFormVisible: false, //是否始终显示搜索表单 + titleForm: '', //为空则不显示标题,不定义默认显示:普通搜索 + idTable: 'commonTable', + showExport: true, + exportDataType: "all", + exportTypes: ['json', 'xml', 'csv', 'txt', 'doc', 'excel'], + pageSize: 10, + pageList: [10, 25, 50, 'All'], + pagination: true, + clickToSelect: true, //是否启用点击选中 + singleSelect: false, //是否启用单选 + showRefresh: false, + locale: 'zh-CN', + showToggle: true, + showColumns: true, + pk: 'id', + sortName: 'id', + sortOrder: 'desc', + paginationFirstText: __("First"), + paginationPreText: __("Previous"), + paginationNextText: __("Next"), + paginationLastText: __("Last"), + cardView: false, //卡片视图 + checkOnInit: true, //是否在初始化时判断 + escape: true, //是否对内容进行转义 + extend: { + index_url: '', + add_url: '', + edit_url: '', + del_url: '', + import_url: '', + multi_url: '', + dragsort_url: 'ajax/weigh', + } + }, + // Bootstrap-table 列配置 + columnDefaults: { + align: 'center', + valign: 'middle', + }, + config: { + firsttd: 'tbody tr td:first-child:not(:has(div.card-views))', + toolbar: '.toolbar', + refreshbtn: '.btn-refresh', + addbtn: '.btn-add', + editbtn: '.btn-edit', + delbtn: '.btn-del', + importbtn: '.btn-import', + multibtn: '.btn-multi', + disabledbtn: '.btn-disabled', + editonebtn: '.btn-editone', + dragsortfield: 'weigh', + }, + api: { + init: function (defaults, columnDefaults, locales) { + defaults = defaults ? defaults : {}; + columnDefaults = columnDefaults ? columnDefaults : {}; + locales = locales ? locales : {}; + // 如果是iOS设备则启用卡片视图 + if (navigator.userAgent.match(/(iPod|iPhone|iPad)/)) { + Table.defaults.cardView = true; } + // 写入bootstrap-table默认配置 + $.extend(true, $.fn.bootstrapTable.defaults, Table.defaults, defaults); + // 写入bootstrap-table column配置 + $.extend($.fn.bootstrapTable.columnDefaults, Table.columnDefaults, columnDefaults); + // 写入bootstrap-table locale配置 + $.extend($.fn.bootstrapTable.locales[Table.defaults.locale], { + formatCommonSearch: function () { + return __('Common search'); + }, + formatCommonSubmitButton: function () { + return __('Submit'); + }, + formatCommonResetButton: function () { + return __('Reset'); + }, + formatCommonCloseButton: function () { + return __('Close'); + }, + formatCommonChoose: function () { + return __('Choose'); + } + }, locales); }, - daterangepicker: function (form) { - //绑定日期时间元素事件 - if ($(".datetimerange", form).size() > 0) { - require(['bootstrap-daterangepicker'], function () { - var ranges = {}; - ranges[__('Today')] = [Moment().startOf('day'), Moment().endOf('day')]; - ranges[__('Yesterday')] = [Moment().subtract(1, 'days').startOf('day'), Moment().subtract(1, 'days').endOf('day')]; - ranges[__('Last 7 Days')] = [Moment().subtract(6, 'days').startOf('day'), Moment().endOf('day')]; - ranges[__('Last 30 Days')] = [Moment().subtract(29, 'days').startOf('day'), Moment().endOf('day')]; - ranges[__('This Month')] = [Moment().startOf('month'), Moment().endOf('month')]; - ranges[__('Last Month')] = [Moment().subtract(1, 'month').startOf('month'), Moment().subtract(1, 'month').endOf('month')]; - var options = { - timePicker: false, - autoUpdateInput: false, - timePickerSeconds: true, - timePicker24Hour: true, - autoApply: true, - locale: { - format: 'YYYY-MM-DD HH:mm:ss', - customRangeLabel: __("Custom Range"), - applyLabel: __("Apply"), - cancelLabel: __("Clear"), - }, - ranges: ranges, - }; - var origincallback = function (start, end) { - $(this.element).val(start.format(options.locale.format) + " - " + end.format(options.locale.format)); - $(this.element).trigger('blur'); - }; - $(".datetimerange", form).each(function () { - var callback = typeof $(this).data('callback') == 'function' ? $(this).data('callback') : origincallback; - $(this).on('apply.daterangepicker', function (ev, picker) { - callback.call(picker, picker.startDate, picker.endDate); + // 绑定事件 + bindevent: function (table) { + //Bootstrap-table的父元素,包含table,toolbar,pagnation + var parenttable = table.closest('.bootstrap-table'); + //Bootstrap-table配置 + var options = table.bootstrapTable('getOptions'); + //Bootstrap操作区 + var toolbar = $(options.toolbar, parenttable); + //当刷新表格时 + table.on('load-error.bs.table', function (status, res, e) { + if (e.status === 0) { + return; + } + Toastr.error(__('Unknown data format')); + }); + //当刷新表格时 + table.on('refresh.bs.table', function (e, settings, data) { + $(Table.config.refreshbtn, toolbar).find(".fa").addClass("fa-spin"); + }); + //当双击单元格时 + table.on('dbl-click-row.bs.table', function (e, row, element, field) { + $(Table.config.editonebtn, element).trigger("click"); + }); + //当内容渲染完成后 + table.on('post-body.bs.table', function (e, settings, json, xhr) { + $(Table.config.refreshbtn, toolbar).find(".fa").removeClass("fa-spin"); + $(Table.config.disabledbtn, toolbar).toggleClass('disabled', true); + if ($(Table.config.firsttd, table).find("input[type='checkbox'][data-index]").size() > 0) { + // 挺拽选择,需要重新绑定事件 + require(['drag', 'drop'], function () { + $(Table.config.firsttd, table).drag("start", function (ev, dd) { + return $('<div class="selection" />').css('opacity', .65).appendTo(document.body); + }).drag(function (ev, dd) { + $(dd.proxy).css({ + top: Math.min(ev.pageY, dd.startY), + left: Math.min(ev.pageX, dd.startX), + height: Math.abs(ev.pageY - dd.startY), + width: Math.abs(ev.pageX - dd.startX) + }); + }).drag("end", function (ev, dd) { + $(dd.proxy).remove(); }); - $(this).on('cancel.daterangepicker', function (ev, picker) { - $(this).val('').trigger('blur'); + $(Table.config.firsttd, table).drop("start", function () { + Table.api.toggleattr(this); + }).drop(function () { + Table.api.toggleattr(this); + }).drop("end", function () { + Table.api.toggleattr(this); + }); + $.drop({ + multi: true + }); + }); + } + }); + // 处理选中筛选框后按钮的状态统一变更 + table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () { + var ids = Table.api.selectedids(table); + $(Table.config.disabledbtn, toolbar).toggleClass('disabled', !ids.length); + }); + // 刷新按钮事件 + $(toolbar).on('click', Table.config.refreshbtn, function () { + table.bootstrapTable('refresh'); + }); + // 添加按钮事件 + $(toolbar).on('click', Table.config.addbtn, function () { + var ids = Table.api.selectedids(table); + var url = options.extend.add_url; + if (url.indexOf("{ids}") !== -1) { + url = Table.api.replaceurl(url, {ids: ids.length > 0 ? ids.join(",") : 0}, table); + } + Fast.api.open(url, __('Add'), $(this).data() || {}); + }); + // 导入按钮事件 + if ($(Table.config.importbtn, toolbar).size() > 0) { + require(['upload'], function (Upload) { + Upload.api.plupload($(Table.config.importbtn, toolbar), function (data, ret) { + Fast.api.ajax({ + url: options.extend.import_url, + data: {file: data.url}, + }, function (data, ret) { + table.bootstrapTable('refresh'); }); - $(this).daterangepicker($.extend({}, options, $(this).data()), callback); }); }); } - }, - plupload: function (form) { - //绑定plupload上传元素事件 - if ($(".plupload", form).size() > 0) { - Upload.api.plupload($(".plupload", form)); - } - }, - faselect: function (form) { - //绑定fachoose选择附件事件 - if ($(".fachoose", form).size() > 0) { - $(".fachoose", form).on('click', function () { - var that = this; - var multiple = $(this).data("multiple") ? $(this).data("multiple") : false; - var mimetype = $(this).data("mimetype") ? $(this).data("mimetype") : ''; - parent.Fast.api.open("general/attachment/select?element_id=" + $(this).attr("id") + "&multiple=" + multiple + "&mimetype=" + mimetype, __('Choose'), { - callback: function (data) { - var button = $("#" + $(that).attr("id")); - var maxcount = $(button).data("maxcount"); - var input_id = $(button).data("input-id") ? $(button).data("input-id") : ""; - maxcount = typeof maxcount !== "undefined" ? maxcount : 0; - if (input_id && data.multiple) { - var urlArr = []; - var inputObj = $("#" + input_id); - var value = $.trim(inputObj.val()); - if (value !== "") { - urlArr.push(inputObj.val()); + // 批量编辑按钮事件 + $(toolbar).on('click', Table.config.editbtn, function () { + var that = this; + //循环弹出多个编辑框 + $.each(table.bootstrapTable('getSelections'), function (index, row) { + var url = options.extend.edit_url; + row = $.extend({}, row ? row : {}, {ids: row[options.pk]}); + var url = Table.api.replaceurl(url, row, table); + Fast.api.open(url, __('Edit'), $(that).data() || {}); + }); + }); + // 批量操作按钮事件 + $(toolbar).on('click', Table.config.multibtn, function () { + var ids = Table.api.selectedids(table); + Table.api.multi($(this).data("action"), ids, table, this); + }); + // 批量删除按钮事件 + $(toolbar).on('click', Table.config.delbtn, function () { + var that = this; + var ids = Table.api.selectedids(table); + Layer.confirm( + __('Are you sure you want to delete the %s selected item?', ids.length), + {icon: 3, title: __('Warning'), offset: 0, shadeClose: true}, + function (index) { + Table.api.multi("del", ids, table, that); + Layer.close(index); + } + ); + }); + // 拖拽排序 + require(['dragsort'], function () { + //绑定拖动排序 + $("tbody", table).dragsort({ + itemSelector: 'tr:visible', + dragSelector: "a.btn-dragsort", + dragEnd: function (a, b) { + var element = $("a.btn-dragsort", this); + var data = table.bootstrapTable('getData'); + var current = data[parseInt($(this).data("index"))]; + var options = table.bootstrapTable('getOptions'); + //改变的值和改变的ID集合 + var ids = $.map($("tbody tr:visible", table), function (tr) { + return data[parseInt($(tr).data("index"))][options.pk]; + }); + var changeid = current[options.pk]; + var pid = typeof current.pid != 'undefined' ? current.pid : ''; + var params = { + url: table.bootstrapTable('getOptions').extend.dragsort_url, + data: { + ids: ids.join(','), + changeid: changeid, + pid: pid, + field: Table.config.dragsortfield, + orderway: options.sortOrder, + table: options.extend.table + } + }; + Fast.api.ajax(params, function (data, ret) { + var success = $(element).data("success") || $.noop; + if (typeof success === 'function') { + if (false === success.call(element, data, ret)) { + return false; } - urlArr.push(data.url) - var result = urlArr.join(","); - if (maxcount > 0) { - var nums = value === '' ? 0 : value.split(/\,/).length; - var files = data.url !== "" ? data.url.split(/\,/) : []; - var remains = maxcount - nums; - if (files.length > remains) { - Toastr.error(__('You can choose up to %d file%s', remains)); - return false; - } + } + table.bootstrapTable('refresh'); + }, function () { + var error = $(element).data("error") || $.noop; + if (typeof error === 'function') { + if (false === error.call(element, data, ret)) { + return false; } - inputObj.val(result).trigger("change"); - } else { - $("#" + input_id).val(data.url).trigger("change"); } - } - }); - return false; + table.bootstrapTable('refresh'); + }); + }, + placeHolderTemplate: "" }); + }); + $(table).on("click", "input[data-id][name='checkbox']", function (e) { + var ids = $(this).data("id"); + var row = Table.api.getrowbyid(ids); + table.trigger('check.bs.table', [row, this]); + }); + $(table).on("click", "[data-id].btn-change", function (e) { + e.preventDefault(); + Table.api.multi($(this).data("action") ? $(this).data("action") : '', [$(this).data("id")], table, this); + }); + $(table).on("click", "[data-id].btn-edit", function (e) { + e.preventDefault(); + var ids = $(this).data("id"); + var row = Table.api.getrowbyid(ids); + row.ids = ids; + var url = Table.api.replaceurl(options.extend.edit_url, row, table); + Fast.api.open(url, __('Edit'), $(this).data() || {}); + }); + $(table).on("click", "[data-id].btn-del", function (e) { + e.preventDefault(); + var id = $(this).data("id"); + var that = this; + Layer.confirm( + __('Are you sure you want to delete this item?'), + {icon: 3, title: __('Warning'), shadeClose: true}, + function (index) { + Table.api.multi("del", id, table, that); + Layer.close(index); + } + ); + }); + var id = table.attr("id"); + Table.list[id] = table; + return table; + }, + // 批量操作请求 + multi: function (action, ids, table, element) { + var options = table.bootstrapTable('getOptions'); + var data = element ? $(element).data() : {}; + var ids = ($.isArray(ids) ? ids.join(",") : ids); + var url = typeof data.url !== "undefined" ? data.url : (action == "del" ? options.extend.del_url : options.extend.multi_url); + url = this.replaceurl(url, {ids: ids}, table); + var params = typeof data.params !== "undefined" ? (typeof data.params == 'object' ? $.param(data.params) : data.params) : ''; + var options = {url: url, data: {action: action, ids: ids, params: params}}; + Fast.api.ajax(options, function (data, ret) { + var success = $(element).data("success") || $.noop; + if (typeof success === 'function') { + if (false === success.call(element, data, ret)) { + return false; + } + } + table.bootstrapTable('refresh'); + }, function (data, ret) { + var error = $(element).data("error") || $.noop; + if (typeof error === 'function') { + if (false === error.call(element, data, ret)) { + return false; + } + } + }); + }, + // 单元格元素事件 + events: { + operate: { + 'click .btn-editone': function (e, value, row, index) { + e.stopPropagation(); + e.preventDefault(); + var table = $(this).closest('table'); + var options = table.bootstrapTable('getOptions'); + var ids = row[options.pk]; + row = $.extend({}, row ? row : {}, {ids: ids}); + var url = options.extend.edit_url; + Fast.api.open(Table.api.replaceurl(url, row, table), __('Edit'), $(this).data() || {}); + }, + 'click .btn-delone': function (e, value, row, index) { + e.stopPropagation(); + e.preventDefault(); + var that = this; + var top = $(that).offset().top - $(window).scrollTop(); + var left = $(that).offset().left - $(window).scrollLeft() - 260; + if (top + 154 > $(window).height()) { + top = top - 154; + } + if ($(window).width() < 480) { + top = left = undefined; + } + Layer.confirm( + __('Are you sure you want to delete this item?'), + {icon: 3, title: __('Warning'), offset: [top, left], shadeClose: true}, + function (index) { + var table = $(that).closest('table'); + var options = table.bootstrapTable('getOptions'); + Table.api.multi("del", row[options.pk], table, that); + Layer.close(index); + } + ); + } } }, - fieldlist: function (form) { - //绑定fieldlist - if ($(".fieldlist", form).size() > 0) { - require(['dragsort', 'template'], function (undefined, Template) { - //刷新隐藏textarea的值 - var refresh = function (name) { - var data = {}; - var textarea = $("textarea[name='" + name + "']", form); - var container = textarea.closest("dl"); - var template = container.data("template"); - console.log(name, container); - $.each($("input,select", container).serializeArray(), function (i, j) { - var reg = /\[(\w+)\]\[(\w+)\]$/g; - var match = reg.exec(j.name); - if (!match) - return true; - match[1] = "x" + parseInt(match[1]); - if (typeof data[match[1]] == 'undefined') { - data[match[1]] = {}; - } - data[match[1]][match[2]] = j.value; - }); - var result = template ? [] : {}; - $.each(data, function (i, j) { - if (j) { - if (!template) { - if (j.key != '') { - result[j.key] = j.value; - } - } else { - result.push(j); - } - } - }); - textarea.val(JSON.stringify(result)); - }; - //监听文本框改变事件 - $(document).on('change keyup', ".fieldlist input,.fieldlist textarea,.fieldlist select", function () { - refresh($(this).closest("dl").data("name")); - }); - //追加控制 - $(".fieldlist", form).on("click", ".btn-append", function (e, row) { - var container = $(this).closest("dl"); - var index = container.data("index"); - var name = container.data("name"); - var template = container.data("template"); - var data = container.data(); - index = index ? parseInt(index) : 0; - container.data("index", index + 1); - var row = row ? row : {}; - var vars = {index: index, name: name, data: data, row: row}; - var html = template ? Template(template, vars) : Template.render(Form.config.fieldlisttpl, vars); - $(html).insertBefore($(this).closest("dd")); - $(this).trigger("fa.event.appendfieldlist", $(this).closest("dd").prev()); - }); - //移除控制 - $(".fieldlist", form).on("click", "dd .btn-remove", function () { - var container = $(this).closest("dl"); - $(this).closest("dd").remove(); - refresh(container.data("name")); + // 单元格数据格式化 + formatter: { + icon: function (value, row, index) { + if (!value) + return ''; + value = value.indexOf(" ") > -1 ? value : "fa fa-" + value; + //渲染fontawesome图标 + return '<i class="' + value + '"></i> ' + value; + }, + image: function (value, row, index) { + value = value ? value : '/assets/img/blank.gif'; + var classname = typeof this.classname !== 'undefined' ? this.classname : 'img-sm img-center'; + return '<img class="' + classname + '" src="' + Fast.api.cdnurl(value) + '" />'; + }, + images: function (value, row, index) { + value = value === null ? '' : value.toString(); + var classname = typeof this.classname !== 'undefined' ? this.classname : 'img-sm img-center'; + var arr = value.split(','); + var html = []; + $.each(arr, function (i, value) { + value = value ? value : '/assets/img/blank.gif'; + html.push('<img class="' + classname + '" src="' + Fast.api.cdnurl(value) + '" />'); + }); + return html.join(' '); + }, + status: function (value, row, index) { + //颜色状态数组,可使用red/yellow/aqua/blue/navy/teal/olive/lime/fuchsia/purple/maroon + var colorArr = {normal: 'success', hidden: 'grey', deleted: 'danger', locked: 'info'}; + //如果字段列有定义custom + if (typeof this.custom !== 'undefined') { + colorArr = $.extend(colorArr, this.custom); + } + value = value === null ? '' : value.toString(); + var color = value && typeof colorArr[value] !== 'undefined' ? colorArr[value] : 'primary'; + value = value.charAt(0).toUpperCase() + value.slice(1); + //渲染状态 + var html = '<span class="text-' + color + '"><i class="fa fa-circle"></i> ' + __(value) + '</span>'; + return html; + }, + url: function (value, row, index) { + return '<div class="input-group input-group-sm" style="width:250px;"><input type="text" class="form-control input-sm" value="' + value + '"><span class="input-group-btn input-group-sm"><a href="' + value + '" target="_blank" class="btn btn-default btn-sm"><i class="fa fa-link"></i></a></span></div>'; + }, + search: function (value, row, index) { + return '<a href="javascript:;" class="searchit" data-field="' + this.field + '" data-value="' + value + '">' + value + '</a>'; + }, + addtabs: function (value, row, index) { + var url = Table.api.replaceurl(this.url, row, this.table); + var title = this.atitle ? this.atitle : __("Search %s", value); + return '<a href="' + Fast.api.fixurl(url) + '" class="addtabsit" data-value="' + value + '" title="' + title + '">' + value + '</a>'; + }, + dialog: function (value, row, index) { + var url = Table.api.replaceurl(this.url, row, this.table); + var title = this.atitle ? this.atitle : __("View %s", value); + return '<a href="' + Fast.api.fixurl(url) + '" class="dialogit" data-value="' + value + '" title="' + title + '">' + value + '</a>'; + }, + flag: function (value, row, index) { + value = value === null ? '' : value.toString(); + var colorArr = {index: 'success', hot: 'warning', recommend: 'danger', 'new': 'info'}; + //如果字段列有定义custom + if (typeof this.custom !== 'undefined') { + colorArr = $.extend(colorArr, this.custom); + } + if (typeof this.customField !== 'undefined' && typeof row[this.customField] !== 'undefined') { + value = row[this.customField]; + } + //渲染Flag + var html = []; + var arr = value.split(','); + $.each(arr, function (i, value) { + value = value === null ? '' : value.toString(); + if (value == '') + return true; + var color = value && typeof colorArr[value] !== 'undefined' ? colorArr[value] : 'primary'; + value = value.charAt(0).toUpperCase() + value.slice(1); + html.push('<span class="label label-' + color + '">' + __(value) + '</span>'); + }); + return html.join(' '); + }, + label: function (value, row, index) { + return Table.api.formatter.flag.call(this, value, row, index); + }, + datetime: function (value, row, index) { + return value ? Moment(parseInt(value) * 1000).format("YYYY-MM-DD HH:mm:ss") : __('None'); + }, + operate: function (value, row, index) { + var table = this.table; + // 操作配置 + var options = table ? table.bootstrapTable('getOptions') : {}; + // 默认按钮组 + var buttons = $.extend([], this.buttons || []); + + if (options.extend.dragsort_url !== '') { + buttons.push({ + name: 'dragsort', + icon: 'fa fa-arrows', + title: __('Drag to sort'), + classname: 'btn btn-xs btn-primary btn-dragsort' }); - //拖拽排序 - $("dl.fieldlist", form).dragsort({ - itemSelector: 'dd', - dragSelector: ".btn-fdragsort", - dragEnd: function () { - refresh($(this).closest("dl").data("name")); - }, - placeHolderTemplate: "<dd></dd>" + } + if (options.extend.edit_url !== '') { + buttons.push({ + name: 'edit', + icon: 'fa fa-pencil', + title: __('Edit'), + classname: 'btn btn-xs btn-success btn-editone', + url: options.extend.edit_url }); - //渲染数据 - $(".fieldlist", form).each(function () { - var container = this; - var textarea = $("textarea[name='" + $(this).data("name") + "']", form); - if (textarea.val() == '') { - return true; - } - var template = $(this).data("template"); - $.each(JSON.parse(textarea.val()), function (i, j) { - $(".btn-append", container).trigger('click', template ? j : { - key: i, - value: j - }); - }); + } + if (options.extend.del_url !== '') { + buttons.push({ + name: 'del', + icon: 'fa fa-trash', + title: __('Del'), + classname: 'btn btn-xs btn-danger btn-delone' }); - }); + } + return Table.api.buttonlink(this, buttons, value, row, index, 'operate'); + }, + buttons: function (value, row, index) { + // 默认按钮组 + var buttons = $.extend([], this.buttons || []); + return Table.api.buttonlink(this, buttons, value, row, index, 'buttons'); } }, - bindevent: function (form) { + buttonlink: function (column, buttons, value, row, index, type) { + var table = column.table; + type = typeof type === 'undefined' ? 'buttons' : type; + var options = table ? table.bootstrapTable('getOptions') : {}; + var html = []; + var hidden, url, classname, icon, text, title, refresh, confirm, extend; + var fieldIndex = column.fieldIndex; - } - }, - api: { - submit: function (form, success, error, submit) { - if (form.size() === 0) - return Toastr.error("表单未初始化完成,无法提交"); - if (typeof submit === 'function') { - if (false === submit.call(form)) { - return false; - } - } - var type = form.attr("method").toUpperCase(); - type = type && (type === 'GET' || type === 'POST') ? type : 'GET'; - url = form.attr("action"); - url = url ? url : location.href; - //修复当存在多选项元素时提交的BUG - var params = {}; - var multipleList = $("[name$='[]']", form); - if (multipleList.size() > 0) { - var postFields = form.serializeArray().map(function (obj) { - return $(obj).prop("name"); - }); - $.each(multipleList, function (i, j) { - if (postFields.indexOf($(this).prop("name")) < 0) { - params[$(this).prop("name")] = ''; - } - }); - } - //调用Ajax请求方法 - Fast.api.ajax({ - type: type, - url: url, - data: form.serialize() + (Object.keys(params).length > 0 ? '&' + $.param(params) : ''), - dataType: 'json', - complete: function (xhr) { - var token = xhr.getResponseHeader('__token__'); - if (token) { - $("input[name='__token__']", form).val(token); - } - } - }, function (data, ret) { - $('.form-group', form).removeClass('has-feedback has-success has-error'); - if (data && typeof data === 'object') { - //刷新客户端token - if (typeof data.token !== 'undefined') { - $("input[name='__token__']", form).val(data.token); + $.each(buttons, function (i, j) { + if (type === 'operate') { + if (j.name === 'dragsort' && typeof row[Table.config.dragsortfield] === 'undefined') { + return true; } - //调用客户端事件 - if (typeof data.callback !== 'undefined' && typeof data.callback === 'function') { - data.callback.call(form, data); + if (['add', 'edit', 'del', 'multi', 'dragsort'].indexOf(j.name) > -1 && !options.extend[j.name + "_url"]) { + return true; } } - if (typeof success === 'function') { - if (false === success.call(form, data, ret)) { - return false; + var attr = table.data(type + "-" + j.name); + if (typeof attr === 'undefined' || attr) { + hidden = typeof j.hidden === 'function' ? j.hidden.call(table, row, j) : (j.hidden ? j.hidden : false); + if (hidden) { + return true; } + url = j.url ? j.url : ''; + url = typeof url === 'function' ? url.call(table, row, j) : (url ? Fast.api.fixurl(Table.api.replaceurl(url, row, table)) : 'javascript:;'); + classname = j.classname ? j.classname : 'btn-primary btn-' + name + 'one'; + icon = j.icon ? j.icon : ''; + text = j.text ? j.text : ''; + title = j.title ? j.title : text; + refresh = j.refresh ? 'data-refresh="' + j.refresh + '"' : ''; + confirm = j.confirm ? 'data-confirm="' + j.confirm + '"' : ''; + extend = j.extend ? j.extend : ''; + html.push('<a href="' + url + '" class="' + classname + '" ' + (confirm ? confirm + ' ' : '') + (refresh ? refresh + ' ' : '') + extend + ' title="' + title + '" data-table-id="' + (table ? table.attr("id") : '') + '" data-field-index="' + fieldIndex + '" data-row-index="' + index + '" data-button-index="' + i + '"><i class="' + icon + '"></i>' + (text ? ' ' + text : '') + '</a>'); } - }, function (data, ret) { - if (data && typeof data === 'object' && typeof data.token !== 'undefined') { - $("input[name='__token__']", form).val(data.token); - } - if (typeof error === 'function') { - if (false === error.call(form, data, ret)) { - return false; + }); + return html.join(' '); + }, + //替换URL中的数据 + replaceurl: function (url, row, table) { + var options = table ? table.bootstrapTable('getOptions') : null; + var ids = options ? row[options.pk] : 0; + row.ids = ids ? ids : (typeof row.ids !== 'undefined' ? row.ids : 0); + //自动添加ids参数 + url = !url.match(/\{ids\}/i) ? url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + '{ids}' : url; + url = url.replace(/\{(.*?)\}/gi, function (matched) { + matched = matched.substring(1, matched.length - 1); + if (matched.indexOf(".") !== -1) { + var temp = row; + var arr = matched.split(/\./); + for (var i = 0; i < arr.length; i++) { + if (typeof temp[arr[i]] !== 'undefined') { + temp = temp[arr[i]]; + } } + return typeof temp === 'object' ? '' : temp; } + return row[matched]; }); - return false; + return url; }, - bindevent: function (form, success, error, submit) { - - form = typeof form === 'object' ? form : $(form); - - var events = Form.events; - - events.bindevent(form); - - events.validator(form, success, error, submit); - - events.selectpicker(form); - - events.daterangepicker(form); - - events.selectpage(form); - - events.cxselect(form); - - events.citypicker(form); - - events.datetimepicker(form); - - events.plupload(form); - - events.faselect(form); - - events.fieldlist(form); + // 获取选中的条目ID集合 + selectedids: function (table) { + var options = table.bootstrapTable('getOptions'); + if (options.templateView) { + return $.map($("input[data-id][name='checkbox']:checked"), function (dom) { + return $(dom).data("id"); + }); + } else { + return $.map(table.bootstrapTable('getSelections'), function (row) { + return row[options.pk]; + }); + } }, - custom: {} + // 切换复选框状态 + toggleattr: function (table) { + $("input[type='checkbox']", table).trigger('click'); + }, + // 根据行索引获取行数据 + getrowdata: function (table, index) { + index = parseInt(index); + var data = table.bootstrapTable('getData'); + return typeof data[index] !== 'undefined' ? data[index] : null; + }, + // 根据行索引获取行数据 + getrowbyindex: function (table, index) { + return Table.api.getrowdata(table, index); + }, + // 根据主键ID获取行数据 + getrowbyid: function (table, id) { + var row = {}; + var options = table.bootstrapTable("getOptions"); + $.each(table.bootstrapTable('getData'), function (i, j) { + if (j[options.pk] == id) { + row = j; + return false; + } + }); + return row; + } }, }; - return Form; + return Table; }); + // jQuery List DragSort v0.5.2 // Website: http://dragsort.codeplex.com/ // License: http://dragsort.codeplex.com/license diff --git a/public/assets/js/require-form.js b/public/assets/js/require-form.js index c1714de..0ad33b9 100755 --- a/public/assets/js/require-form.js +++ b/public/assets/js/require-form.js @@ -1,7 +1,7 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, Upload, Validator) { var Form = { config: { - fieldlisttpl: '<dd class="form-inline"><input type="text" name="<%=name%>[<%=index%>][key]" class="form-control" value="<%=row.key%>" size="10" /> <input type="text" name="<%=name%>[<%=index%>][value]" class="form-control" value="<%=row.value%>" size="40" /> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span></dd>' + fieldlisttpl: '<dd class="form-inline"><input type="text" name="<%=name%>[<%=index%>][key]" class="form-control" value="<%=row.key%>" size="10" /> <input type="text" name="<%=name%>[<%=index%>][value]" class="form-control" value="<%=row.value%>" size="30" /> <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span></dd>' }, events: { validator: function (form, success, error, submit) { @@ -26,6 +26,10 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U } }, target: function (input) { + var target = $(input).data("target"); + if (target && $(target).size() > 0) { + return $(target); + } var $formitem = $(input).closest('.form-group'), $msgbox = $formitem.find('span.msg-box'); if (!$msgbox.length) { @@ -282,7 +286,7 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U refresh($(this).closest("dl").data("name")); }); //追加控制 - $(".fieldlist", form).on("click", ".btn-append", function (e, row) { + $(".fieldlist", form).on("click", ".btn-append,.append", function (e, row) { var container = $(this).closest("dl"); var index = container.data("index"); var name = container.data("name"); @@ -305,7 +309,7 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U //拖拽排序 $("dl.fieldlist", form).dragsort({ itemSelector: 'dd', - dragSelector: ".btn-fdragsort", + dragSelector: ".btn-dragsort", dragEnd: function () { refresh($(this).closest("dl").data("name")); }, @@ -319,8 +323,13 @@ define(['jquery', 'bootstrap', 'upload', 'validator'], function ($, undefined, U return true; } var template = $(this).data("template"); - $.each(JSON.parse(textarea.val()), function (i, j) { - $(".btn-append", container).trigger('click', template ? j : { + var json = {}; + try { + json = JSON.parse(textarea.val()); + } catch (e) { + } + $.each(json, function (i, j) { + $(".btn-append,.append", container).trigger('click', template ? j : { key: i, value: j }); diff --git a/public/assets/js/require-frontend.min.js b/public/assets/js/require-frontend.min.js index 7b9bc17..09a3e1f 100644 --- a/public/assets/js/require-frontend.min.js +++ b/public/assets/js/require-frontend.min.js @@ -973,7 +973,9 @@ define('fast',['jquery', 'bootstrap', 'toastr', 'layer', 'lang'], function ($, u return Fast; }); -define('frontend',['fast'], function (Fast) { +/*!art-template - Template Engine | http://aui.github.com/artTemplate/*/ +!function(){function a(a){return a.replace(t,"").replace(u,",").replace(v,"").replace(w,"").replace(x,"").split(y)}function b(a){return"'"+a.replace(/('|\\)/g,"\\$1").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+"'"}function c(c,d){function e(a){return m+=a.split(/\n/).length-1,k&&(a=a.replace(/\s+/g," ").replace(/<!--[\w\W]*?-->/g,"")),a&&(a=s[1]+b(a)+s[2]+"\n"),a}function f(b){var c=m;if(j?b=j(b,d):g&&(b=b.replace(/\n/g,function(){return m++,"$line="+m+";"})),0===b.indexOf("=")){var e=l&&!/^=[=#]/.test(b);if(b=b.replace(/^=[=#]?|[\s;]*$/g,""),e){var f=b.replace(/\s*\([^\)]+\)/,"");n[f]||/^(include|print)$/.test(f)||(b="$escape("+b+")")}else b="$string("+b+")";b=s[1]+b+s[2]}return g&&(b="$line="+c+";"+b),r(a(b),function(a){if(a&&!p[a]){var b;b="print"===a?u:"include"===a?v:n[a]?"$utils."+a:o[a]?"$helpers."+a:"$data."+a,w+=a+"="+b+",",p[a]=!0}}),b+"\n"}var g=d.debug,h=d.openTag,i=d.closeTag,j=d.parser,k=d.compress,l=d.escape,m=1,p={$data:1,$filename:1,$utils:1,$helpers:1,$out:1,$line:1},q="".trim,s=q?["$out='';","$out+=",";","$out"]:["$out=[];","$out.push(",");","$out.join('')"],t=q?"$out+=text;return $out;":"$out.push(text);",u="function(){var text=''.concat.apply('',arguments);"+t+"}",v="function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);"+t+"}",w="'use strict';var $utils=this,$helpers=$utils.$helpers,"+(g?"$line=0,":""),x=s[0],y="return new String("+s[3]+");";r(c.split(h),function(a){a=a.split(i);var b=a[0],c=a[1];1===a.length?x+=e(b):(x+=f(b),c&&(x+=e(c)))});var z=w+x+y;g&&(z="try{"+z+"}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:"+b(c)+".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");try{var A=new Function("$data","$filename",z);return A.prototype=n,A}catch(a){throw a.temp="function anonymous($data,$filename) {"+z+"}",a}}var d=function(a,b){return"string"==typeof b?q(b,{filename:a}):g(a,b)};d.version="3.0.0",d.config=function(a,b){e[a]=b};var e=d.defaults={openTag:"<%",closeTag:"%>",escape:!0,cache:!0,compress:!1,parser:null},f=d.cache={};d.render=function(a,b){return q(a)(b)};var g=d.renderFile=function(a,b){var c=d.get(a)||p({filename:a,name:"Render Error",message:"Template not found"});return b?c(b):c};d.get=function(a){var b;if(f[a])b=f[a];else if("object"==typeof document){var c=document.getElementById(a);if(c){var d=(c.value||c.innerHTML).replace(/^\s*|\s*$/g,"");b=q(d,{filename:a})}}return b};var h=function(a,b){return"string"!=typeof a&&(b=typeof a,"number"===b?a+="":a="function"===b?h(a.call(a)):""),a},i={"<":"<",">":">",'"':""","'":"'","&":"&"},j=function(a){return i[a]},k=function(a){return h(a).replace(/&(?![\w#]+;)|[<>"']/g,j)},l=Array.isArray||function(a){return"[object Array]"==={}.toString.call(a)},m=function(a,b){var c,d;if(l(a))for(c=0,d=a.length;c<d;c++)b.call(a,a[c],c,a);else for(c in a)b.call(a,a[c],c)},n=d.utils={$helpers:{},$include:g,$string:h,$escape:k,$each:m};d.helper=function(a,b){o[a]=b};var o=d.helpers=n.$helpers;d.onerror=function(a){var b="Template Error\n\n";for(var c in a)b+="<"+c+">\n"+a[c]+"\n\n";"object"==typeof console&&console.error(b)};var p=function(a){return d.onerror(a),function(){return"{Template Error}"}},q=d.compile=function(a,b){function d(c){try{return new i(c,h)+""}catch(d){return b.debug?p(d)():(b.debug=!0,q(a,b)(c))}}b=b||{};for(var g in e)void 0===b[g]&&(b[g]=e[g]);var h=b.filename;try{var i=c(a,b)}catch(a){return a.filename=h||"anonymous",a.name="Syntax Error",p(a)}return d.prototype=i.prototype,d.toString=function(){return i.toString()},h&&b.cache&&(f[h]=d),d},r=n.$each,s="break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined",t=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g,u=/[^\w$]+/g,v=new RegExp(["\\b"+s.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),w=/^\d[^,]*|,\d[^,]*/g,x=/^,+|,+$/g,y=/^$|,+/;"object"==typeof exports&&"undefined"!=typeof module?module.exports=d:"function"==typeof define?define('template',[],function(){return d}):this.template=d}(); +define('frontend',['fast', 'template'], function (Fast, Template) { var Frontend = { api: Fast.api, init: function () { @@ -1028,6 +1030,8 @@ define('frontend',['fast'], function (Fast) { } }; Frontend.api = $.extend(Fast.api, Frontend.api); + //将Template渲染至全局,以便于在子框架中调用 + window.Template = Template; //将Frontend渲染至全局,以便于在子框架中调用 window.Frontend = Frontend; diff --git a/public/assets/less/backend.less b/public/assets/less/backend.less index 65be1f6..7df760b 100644 --- a/public/assets/less/backend.less +++ b/public/assets/less/backend.less @@ -847,4 +847,8 @@ form.form-horizontal .control-label { margin: 2px 0 0; } } +} + +.wipecache li a { + color:#444444!important; } \ No newline at end of file -- libgit2 0.24.0